parameters: # The app.root and site.path parameters are dynamically set by # \Drupal\Core\DrupalKernel::initializeContainer(). They are listed here to # allow IDEs to autocomplete them when writing new service YAML files. app.root: '' site.path: '' # \Drupal\Core\Cache\ListCacheBinsPass::process() will override this but defining this allows the cache system to # function properly before that runs. cache_default_bin_backends: [] memory_cache_default_bin_backends: [] security.enable_super_user: true session.storage.options: gc_probability: 1 gc_divisor: 100 gc_maxlifetime: 200000 cookie_lifetime: 2000000 cookie_samesite: Lax sid_length: 48 sid_bits_per_character: 6 twig.config: debug: false auto_reload: null cache: true allowed_file_extensions: - css - html - js - svg - twig renderer.config: required_cache_contexts: ['languages:language_interface', 'theme', 'user.permissions'] auto_placeholder_conditions: max-age: 0 contexts: ['session', 'user'] tags: [] debug: false factory.keyvalue: default: keyvalue.database http.response.debug_cacheability_headers: false factory.keyvalue.expirable: default: keyvalue.expirable.database filter_protocols: - http - https - ftp - news - nntp - tel - telnet - mailto - irc - ssh - sftp - webcal - rtsp cors.config: enabled: false allowedHeaders: [] allowedMethods: [] allowedOrigins: ['*'] exposedHeaders: false maxAge: false supportsCredentials: false tempstore.expire: 604800 queue.config: suspendMaximumWait: 30.0 services: _defaults: autoconfigure: true # Simple cache contexts, directly derived from the request context. cache_context.ip: class: Drupal\Core\Cache\Context\IpCacheContext arguments: ['@request_stack'] tags: - { name: cache.context } cache_context.protocol_version: class: Drupal\Core\Cache\Context\ProtocolVersionCacheContext arguments: ['@request_stack'] tags: - { name: cache.context } cache_context.headers: class: Drupal\Core\Cache\Context\HeadersCacheContext arguments: ['@request_stack'] tags: - { name: cache.context } cache_context.cookies: class: Drupal\Core\Cache\Context\CookiesCacheContext arguments: ['@request_stack'] tags: - { name: cache.context } cache_context.session: class: Drupal\Core\Cache\Context\SessionCacheContext arguments: ['@request_stack'] tags: - { name: cache.context} cache_context.session.exists: class: Drupal\Core\Cache\Context\SessionExistsCacheContext arguments: ['@session_configuration', '@request_stack'] tags: - { name: cache.context} cache_context.request_format: class: Drupal\Core\Cache\Context\RequestFormatCacheContext arguments: ['@request_stack'] tags: - { name: cache.context } cache_context.url: class: Drupal\Core\Cache\Context\UrlCacheContext arguments: ['@request_stack'] tags: - { name: cache.context } cache_context.url.site: class: Drupal\Core\Cache\Context\SiteCacheContext arguments: ['@request_stack'] tags: - { name: cache.context } cache_context.url.path: class: Drupal\Core\Cache\Context\PathCacheContext arguments: ['@request_stack'] tags: - { name: cache.context } cache_context.url.path.parent: class: Drupal\Core\Cache\Context\PathParentCacheContext arguments: ['@request_stack'] tags: - { name: cache.context } cache_context.url.path.is_front: class: Drupal\Core\Cache\Context\IsFrontPathCacheContext arguments: ['@path.matcher'] tags: - { name: cache.context } cache_context.url.query_args: class: Drupal\Core\Cache\Context\QueryArgsCacheContext arguments: ['@request_stack'] tags: - { name: cache.context } cache_context.url.query_args.pagers: class: Drupal\Core\Cache\Context\PagersCacheContext arguments: ['@pager.parameters'] tags: - { name: cache.context } # Complex cache contexts, that depend on the routing system. cache_context.route: class: Drupal\Core\Cache\Context\RouteCacheContext arguments: ['@current_route_match'] tags: - { name: cache.context } cache_context.route.name: class: Drupal\Core\Cache\Context\RouteNameCacheContext arguments: ['@current_route_match'] tags: - { name: cache.context } cache_context.route.menu_active_trails: class: Drupal\Core\Cache\Context\MenuActiveTrailsCacheContext arguments: ['@menu.active_trail'] tags: - { name: cache.context } # Complex cache contexts, that may be calculated from a combination of # multiple aspects of the request context plus additional logic. Hence they # are their own roots. cache_context.user: class: Drupal\Core\Cache\Context\UserCacheContext arguments: ['@current_user'] tags: - { name: cache.context} cache_context.user.permissions: class: Drupal\Core\Cache\Context\AccountPermissionsCacheContext arguments: ['@current_user', '@user_permissions_hash_generator'] tags: - { name: cache.context} cache_context.user.roles: class: Drupal\Core\Cache\Context\UserRolesCacheContext arguments: ['@current_user'] tags: - { name: cache.context} cache_context.user.is_super_user: class: Drupal\Core\Cache\Context\IsSuperUserCacheContext arguments: ['@current_user'] tags: - { name: cache.context} cache_context.languages: class: Drupal\Core\Cache\Context\LanguagesCacheContext arguments: ['@language_manager'] tags: - { name: cache.context} cache_context.theme: class: Drupal\Core\Cache\Context\ThemeCacheContext arguments: ['@theme.manager'] tags: - { name: cache.context} cache_context.timezone: class: Drupal\Core\Cache\Context\TimeZoneCacheContext tags: - { name: cache.context} cache_factory: class: Drupal\Core\Cache\CacheFactory arguments: ['@settings', '%cache_default_bin_backends%', '%memory_cache_default_bin_backends%'] calls: - [setContainer, ['@service_container']] Drupal\Core\Cache\CacheFactoryInterface: '@cache_factory' variation_cache_factory: class: Drupal\Core\Cache\VariationCacheFactory arguments: ['@request_stack', '@cache_factory', '@cache_contexts_manager'] Drupal\Core\Cache\VariationCacheFactory: '@variation_cache_factory' cache_contexts_manager: class: Drupal\Core\Cache\Context\CacheContextsManager arguments: ['@service_container', '%cache_contexts%' ] Drupal\Core\Cache\Context\CacheContextsManager: '@cache_contexts_manager' cache_tags.invalidator: class: Drupal\Core\Cache\CacheTagsInvalidator tags: - { name: service_collector, call: addInvalidator, tag: cache_tags_invalidator } - { name: service_collector, call: addBin, tag: cache.bin } - { name: service_collector, call: addBin, tag: cache.bin.memory } Drupal\Core\Cache\CacheTagsInvalidatorInterface: '@cache_tags.invalidator' cache_tags.invalidator.checksum: class: Drupal\Core\Cache\DatabaseCacheTagsChecksum arguments: ['@database'] tags: - { name: cache_tags_invalidator} - { name: backend_overridable } Drupal\Core\Cache\CacheTagsChecksumInterface: '@cache_tags.invalidator.checksum' cache.backend.chainedfast: class: Drupal\Core\Cache\ChainedFastBackendFactory arguments: ['@settings'] calls: - [setContainer, ['@service_container']] cache.backend.database: class: Drupal\Core\Cache\DatabaseBackendFactory arguments: ['@database', '@cache_tags.invalidator.checksum', '@settings', '@serialization.phpserialize', '@datetime.time'] tags: - { name: backend_overridable } cache.backend.apcu: class: Drupal\Core\Cache\ApcuBackendFactory arguments: ['%app.root%', '%site.path%', '@cache_tags.invalidator.checksum', '@datetime.time'] cache.backend.php: class: Drupal\Core\Cache\PhpBackendFactory arguments: ['@cache_tags.invalidator.checksum', '@datetime.time'] cache.backend.memory: class: Drupal\Core\Cache\MemoryBackendFactory arguments: ['@datetime.time'] cache.backend.memory.memory: class: Drupal\Core\Cache\MemoryCache\MemoryCacheFactory arguments: ['@datetime.time'] # A special cache bin that does not persist beyond the length of the request. cache.static: class: Drupal\Core\Cache\CacheBackendInterface tags: - { name: cache.bin, default_backend: cache.backend.memory } factory: ['@cache_factory', 'get'] arguments: [static] cache.bootstrap: class: Drupal\Core\Cache\CacheBackendInterface tags: - { name: cache.bin, default_backend: cache.backend.chainedfast } factory: ['@cache_factory', 'get'] arguments: [bootstrap] cache.config: class: Drupal\Core\Cache\CacheBackendInterface tags: - { name: cache.bin, default_backend: cache.backend.chainedfast } factory: ['@cache_factory', 'get'] arguments: [config] cache.default: class: Drupal\Core\Cache\CacheBackendInterface tags: - { name: cache.bin } factory: ['@cache_factory', 'get'] arguments: [default] cache.entity: class: Drupal\Core\Cache\CacheBackendInterface tags: - { name: cache.bin } factory: ['@cache_factory', 'get'] arguments: [entity] cache.menu: class: Drupal\Core\Cache\CacheBackendInterface tags: - { name: cache.bin } factory: ['@cache_factory', 'get'] arguments: [menu] cache.render: class: Drupal\Core\Cache\CacheBackendInterface tags: - { name: cache.bin } factory: ['@cache_factory', 'get'] arguments: [render] cache.access_policy: class: Drupal\Core\Cache\CacheBackendInterface tags: - { name: cache.bin } factory: ['@cache_factory', 'get'] arguments: [access_policy] cache.access_policy_memory: class: Drupal\Core\Cache\CacheBackendInterface tags: - { name: cache.bin.memory, default_backend: cache.backend.memory.memory } factory: ['@cache_factory', 'get'] arguments: [access_policy_memory] cache.data: class: Drupal\Core\Cache\CacheBackendInterface tags: - { name: cache.bin } factory: ['@cache_factory', 'get'] arguments: [data] cache.discovery: class: Drupal\Core\Cache\CacheBackendInterface tags: - { name: cache.bin, default_backend: cache.backend.chainedfast } factory: ['@cache_factory', 'get'] arguments: [discovery] variation_cache.access_policy: class: Drupal\Core\Cache\VariationCacheInterface factory: ['@variation_cache_factory', 'get'] arguments: [access_policy] variation_cache.access_policy_memory: class: Drupal\Core\Cache\VariationCacheInterface factory: ['@variation_cache_factory', 'get'] arguments: [access_policy_memory] Drupal\Core\Asset\AssetQueryStringInterface: '@asset.query_string' asset.query_string: class: Drupal\Core\Asset\AssetQueryString arguments: - '@state' - '@datetime.time' cache_router_rebuild_subscriber: class: Drupal\Core\EventSubscriber\CacheRouterRebuildSubscriber page_cache_request_policy: class: Drupal\Core\PageCache\DefaultRequestPolicy arguments: ['@session_configuration'] tags: - { name: service_collector, tag: page_cache_request_policy, call: addPolicy} Drupal\Core\PageCache\RequestPolicyInterface: '@page_cache_request_policy' page_cache_response_policy: class: Drupal\Core\PageCache\ChainResponsePolicy tags: - { name: service_collector, tag: page_cache_response_policy, call: addPolicy} lazy: true Drupal\Core\PageCache\ResponsePolicyInterface: '@page_cache_response_policy' page_cache_kill_switch: class: Drupal\Core\PageCache\ResponsePolicy\KillSwitch tags: - { name: page_cache_response_policy } - { name: dynamic_page_cache_response_policy } Drupal\Core\PageCache\ResponsePolicy\KillSwitch: '@page_cache_kill_switch' page_cache_no_cache_routes: class: Drupal\Core\PageCache\ResponsePolicy\DenyNoCacheRoutes arguments: ['@current_route_match'] public: false tags: - { name: page_cache_response_policy } - { name: dynamic_page_cache_response_policy } page_cache_no_server_error: class: Drupal\Core\PageCache\ResponsePolicy\NoServerError public: false tags: - { name: page_cache_response_policy } - { name: dynamic_page_cache_response_policy } config.manager: class: Drupal\Core\Config\ConfigManager arguments: ['@entity_type.manager', '@config.factory', '@config.typed', '@string_translation', '@config.storage', '@event_dispatcher', '@entity.repository', '@extension.path.resolver'] Drupal\Core\Config\ConfigManagerInterface: '@config.manager' config.factory: class: Drupal\Core\Config\ConfigFactory tags: - { name: service_collector, tag: 'config.factory.override', call: addOverride } arguments: ['@config.storage', '@event_dispatcher', '@config.typed'] Drupal\Core\Config\ConfigFactoryInterface: '@config.factory' config.importer_subscriber: class: Drupal\Core\Config\Importer\FinalMissingContentSubscriber config.installer: class: Drupal\Core\Config\ConfigInstaller arguments: ['@config.factory', '@config.storage', '@config.typed', '@config.manager', '@event_dispatcher', '%install_profile%', '@extension.path.resolver'] lazy: true Drupal\Core\Config\ConfigInstallerInterface: '@config.installer' config.storage: class: Drupal\Core\Config\CachedStorage arguments: ['@config.storage.active', '@cache.config'] Drupal\Core\Config\StorageCacheInterface: '@config.storage' config.storage.active: class: Drupal\Core\Config\DatabaseStorage arguments: ['@database', 'config'] public: false tags: - { name: backend_overridable } config.import_transformer: class: Drupal\Core\Config\ImportStorageTransformer arguments: ['@event_dispatcher', '@database', '@lock', '@lock.persistent'] Drupal\Core\Config\ImportStorageTransformer: '@config.import_transformer' config.storage.export: class: Drupal\Core\Config\ManagedStorage arguments: ['@config.storage.export.manager'] config.storage.export.manager: class: Drupal\Core\Config\ExportStorageManager arguments: ['@config.storage', '@database', '@event_dispatcher', '@lock'] public: false Drupal\Core\Config\StorageManagerInterface: '@config.storage.export.manager' config.storage.sync: class: Drupal\Core\Config\FileStorage factory: Drupal\Core\Config\FileStorageFactory::getSync config.storage.snapshot: class: Drupal\Core\Config\DatabaseStorage arguments: ['@database', config_snapshot] tags: - { name: backend_overridable } config.storage.schema: class: Drupal\Core\Config\ExtensionInstallStorage arguments: ['@config.storage', 'config/schema', '', true, '%install_profile%'] config.typed: class: Drupal\Core\Config\TypedConfigManager arguments: ['@config.storage', '@config.storage.schema', '@cache.discovery', '@module_handler', '@class_resolver'] tags: - { name: plugin_manager_cache_clear } calls: - [setValidationConstraintManager, ['@validation.constraint']] Drupal\Core\Config\TypedConfigManagerInterface: '@config.typed' context.handler: class: Drupal\Core\Plugin\Context\ContextHandler Drupal\Core\Plugin\Context\ContextHandlerInterface: '@context.handler' context.repository: class: Drupal\Core\Plugin\Context\LazyContextRepository arguments: ['@service_container'] tags: - { name: service_id_collector, tag: context_provider } Drupal\Core\Plugin\Context\ContextRepositoryInterface: '@context.repository' Drupal\Component\DependencyInjection\ReverseContainer: arguments: [ '@service_container' ] cron: class: Drupal\Core\Cron arguments: ['@module_handler', '@lock', '@queue', '@state', '@account_switcher', '@logger.channel.cron', '@plugin.manager.queue_worker', '@datetime.time', '%queue.config%'] lazy: true Drupal\Core\CronInterface: '@cron' diff.formatter: class: Drupal\Core\Diff\DiffFormatter arguments: ['@config.factory'] Drupal\Core\Diff\DiffFormatter: '@diff.formatter' database: class: Drupal\Core\Database\Connection factory: Drupal\Core\Database\Database::getConnection arguments: [default] Drupal\Core\Database\Connection: '@database' database.replica: class: Drupal\Core\Database\Connection factory: Drupal\Core\Database\Database::getConnection arguments: [replica] database.replica_kill_switch: class: Drupal\Core\Database\ReplicaKillSwitch arguments: ['@settings', '@datetime.time', '@session'] Drupal\Core\Database\ReplicaKillSwitch: '@database.replica_kill_switch' Drupal\Core\Database\EventSubscriber\StatementExecutionSubscriber: ~ datetime.time: class: Drupal\Component\Datetime\Time arguments: ['@request_stack'] Drupal\Component\Datetime\TimeInterface: '@datetime.time' file_system: class: Drupal\Core\File\FileSystem arguments: ['@stream_wrapper_manager', '@settings'] Drupal\Core\File\FileSystemInterface: '@file_system' file_url_generator: class: Drupal\Core\File\FileUrlGenerator arguments: ['@stream_wrapper_manager', '@request_stack', '@module_handler'] Drupal\Core\File\FileUrlGeneratorInterface: '@file_url_generator' form_builder: class: Drupal\Core\Form\FormBuilder arguments: ['@form_validator', '@form_submitter', '@form_cache', '@module_handler', '@event_dispatcher', '@request_stack', '@class_resolver', '@element_info', '@theme.manager', '@?csrf_token'] Drupal\Core\Form\FormBuilderInterface: '@form_builder' form_validator: class: Drupal\Core\Form\FormValidator arguments: ['@request_stack', '@string_translation', '@csrf_token', '@logger.channel.form', '@form_error_handler'] Drupal\Core\Form\FormValidatorInterface: '@form_validator' form_submitter: class: Drupal\Core\Form\FormSubmitter arguments: ['@request_stack', '@url_generator', '@redirect_response_subscriber'] Drupal\Core\Form\FormSubmitterInterface: '@form_submitter' form_error_handler: class: Drupal\Core\Form\FormErrorHandler Drupal\Core\Form\FormErrorHandlerInterface: '@form_error_handler' form_cache: class: Drupal\Core\Form\FormCache arguments: ['%app.root%', '@keyvalue.expirable', '@module_handler', '@current_user', '@csrf_token', '@logger.channel.form', '@request_stack', '@page_cache_request_policy'] public: false # Private to form_builder Drupal\Core\Form\FormCacheInterface: '@form_cache' keyvalue: class: Drupal\Core\KeyValueStore\KeyValueFactory arguments: ['@service_container', '%factory.keyvalue%'] keyvalue.database: class: Drupal\Core\KeyValueStore\KeyValueDatabaseFactory arguments: ['@serialization.phpserialize', '@database'] keyvalue.expirable: class: Drupal\Core\KeyValueStore\KeyValueExpirableFactory arguments: ['@service_container', '%factory.keyvalue.expirable%'] keyvalue.expirable.database: class: Drupal\Core\KeyValueStore\KeyValueDatabaseExpirableFactory arguments: ['@serialization.phpserialize', '@database', '@datetime.time'] logger.factory: class: Drupal\Core\Logger\LoggerChannelFactory arguments: ['@request_stack', '@current_user'] tags: - { name: service_collector, tag: logger, call: addLogger } Drupal\Core\Logger\LoggerChannelFactoryInterface: '@logger.factory' logger.channel_base: abstract: true class: Drupal\Core\Logger\LoggerChannel factory: ['@logger.factory', 'get'] logger.channel.default: parent: logger.channel_base arguments: ['system'] logger.channel.php: parent: logger.channel_base arguments: ['php'] logger.channel.image: parent: logger.channel_base arguments: ['image'] logger.channel.cron: parent: logger.channel_base arguments: ['cron'] logger.channel.file: class: Drupal\Core\Logger\LoggerChannel factory: ['@logger.factory', 'get'] arguments: ['file'] logger.channel.form: parent: logger.channel_base arguments: ['form'] logger.channel.security: parent: logger.channel_base arguments: ['security'] logger.channel.mail: parent: logger.channel_base arguments: ['mail'] logger.channel.menu: parent: logger.channel_base arguments: ['menu'] logger.channel.router: parent: logger.channel_base arguments: ['router'] logger.log_message_parser: class: Drupal\Core\Logger\LogMessageParser Drupal\Core\Logger\LogMessageParserInterface: '@logger.log_message_parser' serialization.json: class: Drupal\Component\Serialization\Json serialization.phpserialize: class: Drupal\Component\Serialization\PhpSerialize Drupal\Component\Serialization\ObjectAwareSerializationInterface: '@serialization.phpserialize' serialization.yaml: class: Drupal\Component\Serialization\Yaml settings: class: Drupal\Core\Site\Settings factory: Drupal\Core\Site\Settings::getInstance Drupal\Core\Site\Settings: '@settings' state: class: Drupal\Core\State\State arguments: ['@keyvalue', '@cache.bootstrap', '@lock'] tags: - { name: needs_destruction } Drupal\Core\State\StateInterface: '@state' queue: class: Drupal\Core\Queue\QueueFactory autowire: true Drupal\Core\Queue\QueueFactory: '@queue' queue.database: class: Drupal\Core\Queue\QueueDatabaseFactory arguments: ['@database'] Drupal\Core\Queue\QueueDatabaseFactory: '@queue.database' path.current: class: Drupal\Core\Path\CurrentPathStack arguments: ['@request_stack'] Drupal\Core\Path\CurrentPathStack: '@path.current' http_handler_stack: class: GuzzleHttp\HandlerStack public: false factory: GuzzleHttp\HandlerStack::create configurator: ['@http_handler_stack_configurator', configure] GuzzleHttp\HandlerStack: '@http_handler_stack' http_handler_stack_configurator: class: Drupal\Core\Http\HandlerStackConfigurator public: false arguments: ['@service_container'] tags: - { name: service_id_collector, tag: http_client_middleware } Drupal\Core\Http\HandlerStackConfigurator: '@http_handler_stack_configurator' http_client: class: GuzzleHttp\Client factory: ['@http_client_factory', 'fromOptions'] GuzzleHttp\ClientInterface: '@http_client' Psr\Http\Client\ClientInterface: '@http_client' http_client_factory: class: Drupal\Core\Http\ClientFactory arguments: ['@http_handler_stack'] Drupal\Core\Http\ClientFactory: '@http_client_factory' plugin.manager.link_relation_type: class: \Drupal\Core\Http\LinkRelationTypeManager arguments: ['%app.root%', '@module_handler', '@cache.discovery'] theme.negotiator: class: Drupal\Core\Theme\ThemeNegotiator arguments: ['@access_check.theme', '@class_resolver'] tags: - { name: service_id_collector, tag: theme_negotiator } Drupal\Core\Theme\ThemeNegotiatorInterface: '@theme.negotiator' theme.negotiator.default: class: Drupal\Core\Theme\DefaultNegotiator arguments: ['@config.factory'] tags: - { name: theme_negotiator, priority: -100 } theme.negotiator.ajax_base_page: class: Drupal\Core\Theme\AjaxBasePageNegotiator arguments: ['@csrf_token', '@config.factory', '@request_stack'] tags: - { name: theme_negotiator, priority: 1000 } container.namespaces: class: ArrayObject arguments: [ '%container.namespaces%' ] container.trait: abstract: true calls: - [setContainer, ['@service_container']] default_plugin_manager: abstract: true arguments: ['@container.namespaces', '@cache.discovery', '@module_handler'] module_handler: class: Drupal\Core\Extension\ModuleHandler arguments: ['%app.root%', '%container.modules%', '@cache.bootstrap'] tags: - { name: needs_destruction } Drupal\Core\Extension\ModuleHandlerInterface: '@module_handler' module_installer: class: Drupal\Core\Extension\ModuleInstaller tags: - { name: service_collector, tag: 'module_install.uninstall_validator', call: addUninstallValidator } arguments: ['%app.root%', '@module_handler', '@kernel', '@database', '@update.update_hook_registry', '@logger.channel.default'] lazy: true Drupal\Core\Extension\ModuleInstallerInterface: '@module_installer' extension.list.module: class: Drupal\Core\Extension\ModuleExtensionList arguments: ['%app.root%', 'module', '@cache.default', '@info_parser', '@module_handler', '@state', '@config.factory', '@extension.list.profile', '%install_profile%', '%container.modules%'] Drupal\Core\Extension\ModuleExtensionList: '@extension.list.module' extension.list.profile: class: Drupal\Core\Extension\ProfileExtensionList arguments: ['%app.root%', 'profile', '@cache.default', '@info_parser', '@module_handler', '@state', '%install_profile%'] Drupal\Core\Extension\ProfileExtensionList: '@extension.list.profile' extension.list.theme: class: Drupal\Core\Extension\ThemeExtensionList arguments: ['%app.root%', 'theme', '@cache.default', '@info_parser', '@module_handler', '@state', '@config.factory', '@extension.list.theme_engine', '%install_profile%'] Drupal\Core\Extension\ThemeExtensionList: '@extension.list.theme' extension.list.theme_engine: class: Drupal\Core\Extension\ThemeEngineExtensionList arguments: ['%app.root%', 'theme_engine', '@cache.default', '@info_parser', '@module_handler', '@state', '%install_profile%'] Drupal\Core\Extension\ThemeEngineExtensionList: '@extension.list.theme_engine' extension.list.database_driver: class: Drupal\Core\Extension\DatabaseDriverList arguments: ['%app.root%', 'database_driver', '@cache.default'] Drupal\Core\Extension\DatabaseDriverList: '@extension.list.database_driver' extension.path.resolver: class: Drupal\Core\Extension\ExtensionPathResolver arguments: ['@extension.list.module', '@extension.list.profile', '@extension.list.theme', '@extension.list.theme_engine'] Drupal\Core\Extension\ExtensionPathResolver: '@extension.path.resolver' content_uninstall_validator: class: Drupal\Core\Entity\ContentUninstallValidator tags: - { name: module_install.uninstall_validator } arguments: ['@entity_type.manager', '@string_translation'] lazy: true required_module_uninstall_validator: class: Drupal\Core\Extension\RequiredModuleUninstallValidator tags: - { name: module_install.uninstall_validator } arguments: ['@string_translation', '@extension.list.module'] lazy: true module_required_by_themes_uninstall_validator: class: Drupal\Core\Extension\ModuleRequiredByThemesUninstallValidator tags: - { name: module_install.uninstall_validator } arguments: ['@string_translation', '@extension.list.module', '@extension.list.theme'] lazy: true database_driver_uninstall_validator: class: Drupal\Core\Extension\DatabaseDriverUninstallValidator tags: - { name: module_install.uninstall_validator } arguments: ['@string_translation', '@extension.list.module', '@database'] lazy: true install_profile_uninstall_validator: class: Drupal\Core\Extension\InstallProfileUninstallValidator tags: - { name: module_install.uninstall_validator } arguments: ['@string_translation', '@extension.list.module', '@extension.list.theme', '%install_profile%', '%app.root%', '%site.path%'] lazy: true theme_handler: class: Drupal\Core\Extension\ThemeHandler arguments: ['%app.root%', '@config.factory', '@extension.list.theme'] Drupal\Core\Extension\ThemeHandlerInterface: '@theme_handler' theme_installer: class: Drupal\Core\Extension\ThemeInstaller arguments: ['@theme_handler', '@config.factory', '@config.installer', '@module_handler', '@config.manager', '@asset.css.collection_optimizer', '@router.builder', '@logger.channel.default', '@state', '@extension.list.module', '@theme.registry', '@extension.list.theme'] Drupal\Core\Extension\ThemeInstallerInterface: '@theme_installer' entity.memory_cache: class: Drupal\Core\Cache\MemoryCache\MemoryCache arguments: ['@datetime.time'] Drupal\Core\Cache\MemoryCache\MemoryCacheInterface: '@entity.memory_cache' entity_type.manager: class: Drupal\Core\Entity\EntityTypeManager arguments: ['@container.namespaces', '@module_handler', '@cache.discovery', '@string_translation', '@class_resolver', '@entity.last_installed_schema.repository', '@service_container'] tags: - { name: plugin_manager_cache_clear } Drupal\Core\Entity\EntityTypeManagerInterface: '@entity_type.manager' entity_type.repository: class: Drupal\Core\Entity\EntityTypeRepository arguments: ['@entity_type.manager', '@entity_type.bundle.info'] Drupal\Core\Entity\EntityTypeRepositoryInterface: '@entity_type.repository' entity_type.bundle.info: class: Drupal\Core\Entity\EntityTypeBundleInfo arguments: ['@entity_type.manager', '@language_manager', '@module_handler', '@typed_data_manager', '@cache.discovery'] Drupal\Core\Entity\EntityTypeBundleInfoInterface: '@entity_type.bundle.info' entity.repository: class: Drupal\Core\Entity\EntityRepository arguments: ['@entity_type.manager', '@language_manager', '@context.repository'] Drupal\Core\Entity\EntityRepositoryInterface: '@entity.repository' entity_display.repository: class: Drupal\Core\Entity\EntityDisplayRepository arguments: ['@entity_type.manager', '@module_handler', '@cache.discovery', '@language_manager'] Drupal\Core\Entity\EntityDisplayRepositoryInterface: '@entity_display.repository' entity_field.manager: class: Drupal\Core\Entity\EntityFieldManager arguments: ['@entity_type.manager', '@entity_type.bundle.info', '@entity_display.repository', '@typed_data_manager', '@language_manager', '@keyvalue', '@module_handler', '@cache.discovery', '@entity.last_installed_schema.repository'] Drupal\Core\Entity\EntityFieldManagerInterface: '@entity_field.manager' entity_type.listener: class: Drupal\Core\Entity\EntityTypeListener arguments: ['@entity_type.manager', '@entity_field.manager', '@event_dispatcher', '@entity.last_installed_schema.repository'] Drupal\Core\Entity\EntityTypeListenerInterface: '@entity_type.listener' entity_bundle.listener: class: Drupal\Core\Entity\EntityBundleListener arguments: ['@entity_type.manager', '@entity_type.bundle.info', '@entity_field.manager', '@module_handler'] Drupal\Core\Entity\EntityBundleListenerInterface: '@entity_bundle.listener' entity_route_subscriber: class: Drupal\Core\EventSubscriber\EntityRouteProviderSubscriber arguments: ['@entity_type.manager'] entity.definition_update_manager: class: Drupal\Core\Entity\EntityDefinitionUpdateManager arguments: ['@entity_type.manager', '@entity.last_installed_schema.repository', '@entity_field.manager', '@entity_type.listener', '@field_storage_definition.listener'] Drupal\Core\Entity\EntityDefinitionUpdateManagerInterface: '@entity.definition_update_manager' entity.last_installed_schema.repository: class: Drupal\Core\Entity\EntityLastInstalledSchemaRepository arguments: ['@keyvalue', '@cache.discovery'] Drupal\Core\Entity\EntityLastInstalledSchemaRepositoryInterface: '@entity.last_installed_schema.repository' entity_field.deleted_fields_repository: class: Drupal\Core\Field\DeletedFieldsRepository arguments: ['@state'] Drupal\Core\Field\DeletedFieldsRepositoryInterface: '@entity_field.deleted_fields_repository' field_storage_definition.listener: class: Drupal\Core\Field\FieldStorageDefinitionListener arguments: ['@entity_type.manager', '@event_dispatcher', '@entity.last_installed_schema.repository', '@entity_field.manager', '@entity_field.deleted_fields_repository'] Drupal\Core\Field\FieldStorageDefinitionListenerInterface: '@field_storage_definition.listener' field_definition.listener: class: Drupal\Core\Field\FieldDefinitionListener arguments: ['@entity_type.manager', '@entity_field.manager', '@keyvalue', '@cache.discovery'] Drupal\Core\Field\FieldDefinitionListenerInterface: '@field_definition.listener' entity.form_builder: class: Drupal\Core\Entity\EntityFormBuilder arguments: ['@entity_type.manager', '@form_builder'] Drupal\Core\Entity\EntityFormBuilderInterface: '@entity.form_builder' entity.bundle_config_import_validator: class: Drupal\Core\Entity\Event\BundleConfigImportValidate arguments: ['@config.manager', '@entity_type.manager'] entity.autocomplete_matcher: class: Drupal\Core\Entity\EntityAutocompleteMatcher arguments: ['@plugin.manager.entity_reference_selection'] Drupal\Core\Entity\EntityAutocompleteMatcherInterface: '@entity.autocomplete_matcher' plugin_form.factory: class: Drupal\Core\Plugin\PluginFormFactory arguments: ['@class_resolver'] Drupal\Core\Plugin\PluginFormFactoryInterface: '@plugin_form.factory' plugin.manager.entity_reference_selection: class: Drupal\Core\Entity\EntityReferenceSelection\SelectionPluginManager parent: default_plugin_manager Drupal\Core\Entity\EntityReferenceSelection\SelectionPluginManagerInterface: '@plugin.manager.entity_reference_selection' plugin.manager.block: class: Drupal\Core\Block\BlockManager parent: default_plugin_manager arguments: ['@logger.channel.default'] Drupal\Core\Block\BlockManagerInterface: '@plugin.manager.block' plugin.manager.field.field_type: class: Drupal\Core\Field\FieldTypePluginManager arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@typed_data_manager', '@plugin.manager.field.field_type_category'] Drupal\Core\Field\FieldTypePluginManagerInterface: '@plugin.manager.field.field_type' plugin.manager.field.field_type_category: class: \Drupal\Core\Field\FieldTypeCategoryManager arguments: [ '%app.root%', '@module_handler', '@cache.discovery' ] Drupal\Core\Field\FieldTypeCategoryManagerInterface: '@plugin.manager.field.field_type_category' plugin.manager.field.widget: class: Drupal\Core\Field\WidgetPluginManager arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@plugin.manager.field.field_type'] plugin.manager.field.formatter: class: Drupal\Core\Field\FormatterPluginManager arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@plugin.manager.field.field_type'] plugin.manager.archiver: class: Drupal\Core\Archiver\ArchiverManager parent: default_plugin_manager arguments: ['@file_system'] plugin.manager.action: class: Drupal\Core\Action\ActionManager arguments: ['@container.namespaces', '@cache.discovery', '@module_handler'] plugin.manager.menu.link: class: Drupal\Core\Menu\MenuLinkManager arguments: ['@menu.tree_storage', '@menu_link.static.overrides', '@module_handler'] Drupal\Core\Menu\MenuLinkManagerInterface: '@plugin.manager.menu.link' menu.link_tree: class: Drupal\Core\Menu\MenuLinkTree arguments: ['@menu.tree_storage', '@plugin.manager.menu.link', '@router.route_provider', '@menu.active_trail', '@callable_resolver'] Drupal\Core\Menu\MenuLinkTreeInterface: '@menu.link_tree' menu.default_tree_manipulators: class: Drupal\Core\Menu\DefaultMenuLinkTreeManipulators arguments: ['@access_manager', '@current_user', '@entity_type.manager', '@module_handler'] Drupal\Core\Menu\DefaultMenuLinkTreeManipulators: '@menu.default_tree_manipulators' menu.active_trail: class: Drupal\Core\Menu\MenuActiveTrail arguments: ['@plugin.manager.menu.link', '@current_route_match', '@cache.menu', '@lock'] tags: - { name: needs_destruction } lazy: true Drupal\Core\Menu\MenuActiveTrailInterface: '@menu.active_trail' menu.parent_form_selector: class: Drupal\Core\Menu\MenuParentFormSelector arguments: ['@menu.link_tree', '@entity_type.manager', '@string_translation'] Drupal\Core\Menu\MenuParentFormSelectorInterface: '@menu.parent_form_selector' plugin.manager.menu.local_action: class: Drupal\Core\Menu\LocalActionManager arguments: ['@http_kernel.controller.argument_resolver', '@request_stack', '@current_route_match', '@router.route_provider', '@module_handler', '@cache.discovery', '@language_manager', '@access_manager', '@current_user'] Drupal\Core\Menu\LocalActionManagerInterface: '@plugin.manager.menu.local_action' plugin.manager.menu.local_task: class: Drupal\Core\Menu\LocalTaskManager arguments: ['@http_kernel.controller.argument_resolver', '@request_stack', '@current_route_match', '@router.route_provider', '@module_handler', '@cache.discovery', '@language_manager', '@access_manager', '@current_user'] Drupal\Core\Menu\LocalTaskManagerInterface: '@plugin.manager.menu.local_task' plugin.manager.menu.contextual_link: class: Drupal\Core\Menu\ContextualLinkManager arguments: ['@controller_resolver', '@module_handler', '@cache.discovery', '@language_manager', '@access_manager', '@current_user', '@request_stack'] Drupal\Core\Menu\ContextualLinkManagerInterface: '@plugin.manager.menu.contextual_link' plugin.manager.display_variant: class: Drupal\Core\Display\VariantManager parent: default_plugin_manager plugin.manager.queue_worker: class: Drupal\Core\Queue\QueueWorkerManager parent: default_plugin_manager Drupal\Core\Queue\QueueWorkerManagerInterface: '@plugin.manager.queue_worker' plugin.cache_clearer: class: Drupal\Core\Plugin\CachedDiscoveryClearer lazy: true Drupal\Core\Plugin\CachedDiscoveryClearerInterface: '@plugin.cache_clearer' paramconverter.menu_link: class: Drupal\Core\ParamConverter\MenuLinkPluginConverter tags: - { name: paramconverter } arguments: ['@plugin.manager.menu.link'] lazy: true menu.tree_storage: class: Drupal\Core\Menu\MenuTreeStorage arguments: ['@database', '@cache.menu', '@cache_tags.invalidator', 'menu_tree'] public: false # Private to plugin.manager.menu.link and menu.link_tree tags: - { name: backend_overridable } Drupal\Core\Menu\MenuTreeStorageInterface: '@menu.tree_storage' menu_link.static.overrides: class: Drupal\Core\Menu\StaticMenuLinkOverrides arguments: ['@config.factory'] Drupal\Core\Menu\StaticMenuLinkOverridesInterface: '@menu_link.static.overrides' request_stack: class: Symfony\Component\HttpFoundation\RequestStack tags: - { name: persist } Symfony\Component\HttpFoundation\RequestStack: '@request_stack' current_route_match: class: Drupal\Core\Routing\CurrentRouteMatch arguments: ['@request_stack'] Drupal\Core\Routing\RouteMatchInterface: '@current_route_match' event_dispatcher: class: Symfony\Component\EventDispatcher\EventDispatcher Psr\EventDispatcher\EventDispatcherInterface: '@event_dispatcher' Symfony\Contracts\EventDispatcher\EventDispatcherInterface: '@event_dispatcher' controller_resolver: class: Drupal\Core\Controller\ControllerResolver arguments: ['@callable_resolver'] Drupal\Core\Controller\ControllerResolverInterface: '@controller_resolver' Symfony\Component\HttpKernel\Controller\ControllerResolverInterface: '@controller_resolver' class_resolver: class: Drupal\Core\DependencyInjection\ClassResolver arguments: ['@service_container'] Drupal\Core\DependencyInjection\ClassResolverInterface: '@class_resolver' callable_resolver: class: Drupal\Core\Utility\CallableResolver arguments: ['@class_resolver'] Drupal\Core\Utility\CallableResolver: '@callable_resolver' title_resolver: class: Drupal\Core\Controller\TitleResolver arguments: ['@controller_resolver', '@string_translation', '@http_kernel.controller.argument_resolver'] Drupal\Core\Controller\TitleResolverInterface: '@title_resolver' http_kernel: class: Drupal\Core\StackMiddleware\StackedHttpKernel Symfony\Component\HttpKernel\HttpKernelInterface: '@http_kernel' http_kernel.basic: class: Symfony\Component\HttpKernel\HttpKernel arguments: ['@event_dispatcher', '@controller_resolver', '@request_stack', '@http_kernel.controller.argument_resolver', true] http_kernel.controller.argument_resolver: class: Symfony\Component\HttpKernel\Controller\ArgumentResolver arguments: ['@http_kernel.controller.argument_metadata_factory', ['@argument_resolver.request_attribute', '@argument_resolver.request', '@argument_resolver.psr7_request', '@argument_resolver.route_match', '@argument_resolver.default']] Symfony\Component\HttpKernel\Controller\ArgumentResolverInterface: '@http_kernel.controller.argument_resolver' http_kernel.controller.argument_metadata_factory: class: Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadataFactory public: false Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadataFactoryInterface: '@http_kernel.controller.argument_metadata_factory' argument_resolver.request_attribute: class: Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestAttributeValueResolver public: false argument_resolver.request: class: Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestValueResolver public: false argument_resolver.psr7_request: class: Drupal\Core\Controller\ArgumentResolver\Psr7RequestValueResolver arguments: ['@psr7.http_message_factory'] public: false argument_resolver.route_match: class: Drupal\Core\Controller\ArgumentResolver\RouteMatchValueResolver public: false argument_resolver.default: class: Symfony\Component\HttpKernel\Controller\ArgumentResolver\DefaultValueResolver public: false http_middleware.content_length: class: Drupal\Core\StackMiddleware\ContentLength tags: # Must run before the page_cache and big_pipe middleware. - { name: http_middleware, priority: 140 } http_middleware.ajax_page_state: class: Drupal\Core\StackMiddleware\AjaxPageState tags: - { name: http_middleware, priority: 500 } http_middleware.negotiation: class: Drupal\Core\StackMiddleware\NegotiationMiddleware tags: - { name: http_middleware, priority: 400 } http_middleware.reverse_proxy: class: Drupal\Core\StackMiddleware\ReverseProxyMiddleware arguments: ['@settings'] tags: - { name: http_middleware, priority: 300 } http_middleware.kernel_pre_handle: class: Drupal\Core\StackMiddleware\KernelPreHandle arguments: ['@kernel'] tags: - { name: http_middleware, priority: 100 } http_middleware.session: class: Drupal\Core\StackMiddleware\Session autowire: true tags: - { name: http_middleware, priority: 50 } http_middleware.cors: class: Asm89\Stack\Cors arguments: ['%cors.config%'] tags: - { name: http_middleware, priority: 250 } psr7.http_foundation_factory: class: Symfony\Bridge\PsrHttpMessage\Factory\HttpFoundationFactory Symfony\Bridge\PsrHttpMessage\HttpFoundationFactoryInterface: '@psr7.http_foundation_factory' psr17.server_request_factory: class: GuzzleHttp\Psr7\HttpFactory public: false Psr\Http\Message\ServerRequestFactoryInterface: '@psr17.server_request_factory' psr17.stream_factory: class: GuzzleHttp\Psr7\HttpFactory public: false Psr\Http\Message\StreamFactoryInterface: '@psr17.stream_factory' psr17.uploaded_file_factory: class: GuzzleHttp\Psr7\HttpFactory public: false Psr\Http\Message\UploadedFileFactoryInterface: '@psr17.uploaded_file_factory' psr17.response_factory: class: GuzzleHttp\Psr7\HttpFactory public: false Psr\Http\Message\ResponseFactoryInterface: '@psr17.response_factory' psr7.http_message_factory: class: Symfony\Bridge\PsrHttpMessage\Factory\PsrHttpFactory arguments: ['@psr17.server_request_factory', '@psr17.stream_factory', '@psr17.uploaded_file_factory', '@psr17.response_factory'] Symfony\Bridge\PsrHttpMessage\HttpMessageFactoryInterface: '@psr7.http_message_factory' language_manager: class: Drupal\Core\Language\LanguageManager arguments: ['@language.default'] Drupal\Core\Language\LanguageManagerInterface: '@language_manager' language.current_language_context: class: Drupal\Core\Language\ContextProvider\CurrentLanguageContext arguments: ['@language_manager'] tags: - { name: 'context_provider' } language.default: class: Drupal\Core\Language\LanguageDefault arguments: ['%language.default_values%'] Drupal\Core\Language\LanguageDefault: '@language.default' string_translator.custom_strings: class: Drupal\Core\StringTranslation\Translator\CustomStrings arguments: ['@settings'] tags: - { name: string_translator, priority: 30 } string_translation: class: Drupal\Core\StringTranslation\TranslationManager arguments: ['@language.default'] tags: - { name: service_collector, tag: string_translator, call: addTranslator } Drupal\Core\StringTranslation\TranslationInterface: '@string_translation' typed_data_manager: class: Drupal\Core\TypedData\TypedDataManager arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@class_resolver'] calls: - [setValidationConstraintManager, ['@validation.constraint']] tags: - { name: plugin_manager_cache_clear } Drupal\Core\TypedData\TypedDataManagerInterface: '@typed_data_manager' validation.constraint: class: Drupal\Core\Validation\ConstraintManager parent: default_plugin_manager tags: - { name: plugin_manager_cache_clear } validation.basic_recursive_validator_factory: class: Drupal\Core\Validation\BasicRecursiveValidatorFactory arguments: ['@class_resolver'] Drupal\Core\Validation\BasicRecursiveValidatorFactory: '@validation.basic_recursive_validator_factory' lock: class: Drupal\Core\Lock\DatabaseLockBackend arguments: ['@database'] tags: - { name: backend_overridable } lazy: true lock.persistent: class: Drupal\Core\Lock\PersistentDatabaseLockBackend arguments: ['@database'] tags: - { name: backend_overridable } lazy: true router.request_context: class: Drupal\Core\Routing\RequestContext tags: - { name: persist } calls: - [fromRequestStack, ['@request_stack']] Drupal\Core\Routing\RequestContext: '@router.request_context' router.admin_context: class: Drupal\Core\Routing\AdminContext arguments: ['@current_route_match'] Drupal\Core\Routing\AdminContext: '@router.admin_context' router.route_provider: class: Drupal\Core\Routing\RouteProvider arguments: ['@database', '@state', '@path.current', '@cache.data', '@path_processor_manager', '@cache_tags.invalidator', 'router', '@language_manager'] tags: - { name: backend_overridable } Drupal\Core\Routing\RouteProviderInterface: '@router.route_provider' router.route_provider.lazy_builder: class: Drupal\Core\Routing\RouteProviderLazyBuilder arguments: ['@router.route_provider', '@router.builder'] router.route_preloader: class: Drupal\Core\Routing\RoutePreloader arguments: ['@router.route_provider', '@state'] url_generator.non_bubbling: class: Drupal\Core\Routing\UrlGenerator arguments: ['@router.route_provider', '@path_processor_manager', '@route_processor_manager', '@request_stack', '%filter_protocols%'] public: false calls: - [setContext, ['@?router.request_context']] url_generator: class: Drupal\Core\Render\MetadataBubblingUrlGenerator arguments: ['@url_generator.non_bubbling', '@renderer'] calls: - [setContext, ['@?router.request_context']] Drupal\Core\Routing\UrlGeneratorInterface: '@url_generator' Symfony\Component\Routing\Generator\UrlGeneratorInterface: '@url_generator' redirect.destination: class: Drupal\Core\Routing\RedirectDestination arguments: ['@request_stack', '@url_generator'] Drupal\Core\Routing\RedirectDestinationInterface: '@redirect.destination' unrouted_url_assembler: class: Drupal\Core\Utility\UnroutedUrlAssembler arguments: ['@request_stack', '@path_processor_manager', '%filter_protocols%'] Drupal\Core\Utility\UnroutedUrlAssemblerInterface: '@unrouted_url_assembler' link_generator: class: Drupal\Core\Utility\LinkGenerator arguments: ['@url_generator', '@module_handler', '@renderer'] Drupal\Core\Utility\LinkGeneratorInterface: '@link_generator' router: class: Drupal\Core\Routing\AccessAwareRouter arguments: ['@router.no_access_checks', '@access_manager', '@current_user'] Drupal\Core\Routing\AccessAwareRouterInterface: '@router' router.no_access_checks: class: \Drupal\Core\Routing\Router arguments: ['@router.route_provider', '@path.current', '@url_generator'] tags: - { name: service_collector, tag: route_enhancer, call: addRouteEnhancer } - { name: service_collector, tag: route_filter, call: addRouteFilter } calls: - [setContext, ['@router.request_context']] router.path_roots_subscriber: class: Drupal\Core\EventSubscriber\PathRootsSubscriber arguments: ['@state'] entity.query.config: class: Drupal\Core\Config\Entity\Query\QueryFactory arguments: ['@config.factory', '@keyvalue', '@config.manager'] entity.query.sql: class: Drupal\Core\Entity\Query\Sql\QueryFactory arguments: ['@database'] tags: - { name: backend_overridable } pgsql.entity.query.sql: class: Drupal\Core\Entity\Query\Sql\pgsql\QueryFactory arguments: ['@database'] entity.query.null: class: Drupal\Core\Entity\Query\Null\QueryFactory entity.query.keyvalue: class: Drupal\Core\Entity\KeyValueStore\Query\QueryFactory arguments: ['@keyvalue'] router.dumper: class: Drupal\Core\Routing\MatcherDumper arguments: ['@database', '@state', '@logger.channel.router'] tags: - { name: backend_overridable } lazy: true Drupal\Core\Routing\MatcherDumperInterface: '@router.dumper' router.builder: class: Drupal\Core\Routing\RouteBuilder arguments: ['@router.dumper', '@lock', '@event_dispatcher', '@module_handler', '@controller_resolver', '@access_manager.check_provider'] lazy: true tags: - { name: needs_destruction } Drupal\Core\Routing\RouteBuilderInterface: '@router.builder' menu.rebuild_subscriber: class: Drupal\Core\EventSubscriber\MenuRouterRebuildSubscriber arguments: ['@lock', '@plugin.manager.menu.link', '@database', '@database.replica_kill_switch', '@logger.channel.menu'] path.matcher: class: Drupal\Core\Path\PathMatcher arguments: ['@config.factory', '@current_route_match'] Drupal\Core\Path\PathMatcherInterface: '@path.matcher' path.validator: class: Drupal\Core\Path\PathValidator arguments: ['@router', '@router.no_access_checks', '@current_user', '@path_processor_manager'] Drupal\Core\Path\PathValidatorInterface: '@path.validator' password: class: Drupal\Core\Password\PhpPassword Drupal\Core\Password\PasswordInterface: '@password' password_generator: class: Drupal\Core\Password\DefaultPasswordGenerator Drupal\Core\Password\PasswordGeneratorInterface: '@password_generator' request_format_route_filter: class: Drupal\Core\Routing\RequestFormatRouteFilter tags: - { name: route_filter } method_filter: class: Drupal\Core\Routing\MethodFilter tags: # The HTTP method route filter must run very early: it removes any routes # whose requirements do not allow the HTTP method of the current request. # Throws a 405 if no routes match the current request's HTTP method. # (If it runs before content_type_header_matcher, it can ensure that only # receives routes which can have a Content-Type request header.) - { name: route_filter, priority: 10 } content_type_header_matcher: class: Drupal\Core\Routing\ContentTypeHeaderMatcher tags: # The Content-Type request header route filter must run early: it removes # any routes whose requirements do not allow the Content-Type request # header of the current request. # Throws a 415 if no routes match the Content-Type request header of the # current request, or if it has no Content-Type request header. # Note it does nothing for GET requests. - { name: route_filter, priority: 5 } paramconverter_manager: class: Drupal\Core\ParamConverter\ParamConverterManager tags: - { name: service_collector, tag: paramconverter, call: addConverter } Drupal\Core\ParamConverter\ParamConverterManagerInterface: '@paramconverter_manager' paramconverter_subscriber: class: Drupal\Core\EventSubscriber\ParamConverterSubscriber arguments: ['@paramconverter_manager'] paramconverter.entity: class: Drupal\Core\ParamConverter\EntityConverter tags: - { name: paramconverter } arguments: ['@entity_type.manager', '@entity.repository'] paramconverter.entity_revision: class: Drupal\Core\ParamConverter\EntityRevisionParamConverter tags: - { name: paramconverter } arguments: ['@entity_type.manager', '@entity.repository'] paramconverter.configentity_admin: class: Drupal\Core\ParamConverter\AdminPathConfigEntityConverter tags: # Use a higher priority than EntityConverter, see the class for details. - { name: paramconverter, priority: 5 } arguments: ['@entity_type.manager', '@config.factory', '@router.admin_context', '@entity.repository'] lazy: true route_subscriber.module: class: Drupal\Core\EventSubscriber\ModuleRouteSubscriber arguments: ['@module_handler'] resolver_manager.entity: class: Drupal\Core\Entity\EntityResolverManager arguments: ['@entity_type.manager', '@class_resolver'] Drupal\Core\Entity\EntityResolverManager: '@resolver_manager.entity' route_subscriber.entity: class: Drupal\Core\EventSubscriber\EntityRouteAlterSubscriber arguments: ['@resolver_manager.entity'] ajax_response.subscriber: class: Drupal\Core\EventSubscriber\AjaxResponseSubscriber autowire: true form_ajax_subscriber: class: Drupal\Core\Form\EventSubscriber\FormAjaxSubscriber arguments: ['@form_ajax_response_builder', '@string_translation', '@messenger'] route_enhancer.param_conversion: class: Drupal\Core\Routing\Enhancer\ParamConversionEnhancer arguments: ['@paramconverter_manager'] tags: - { name: route_enhancer, priority: 5000 } route_enhancer.form: class: Drupal\Core\Routing\Enhancer\FormRouteEnhancer tags: - { name: route_enhancer } route_enhancer.entity: class: Drupal\Core\Entity\Enhancer\EntityRouteEnhancer tags: - { name: route_enhancer, priority: 20 } route_enhancer.entity_bundle: class: Drupal\Core\Entity\Enhancer\EntityBundleRouteEnhancer arguments: ['@entity_type.manager'] tags: - { name: route_enhancer } route_enhancer.entity_revision: class: Drupal\Core\Routing\Enhancer\EntityRevisionRouteEnhancer tags: - { name: route_enhancer } route_special_attributes_subscriber: class: Drupal\Core\EventSubscriber\SpecialAttributesRouteSubscriber route_http_method_subscriber: class: Drupal\Core\EventSubscriber\RouteMethodSubscriber psr_response_view_subscriber: class: Drupal\Core\EventSubscriber\PsrResponseSubscriber arguments: ['@psr7.http_foundation_factory'] # Main content view subscriber plus the renderers it uses. main_content_view_subscriber: class: Drupal\Core\EventSubscriber\MainContentViewSubscriber arguments: ['@class_resolver', '@current_route_match', '%main_content_renderers%'] renderer_non_html: class: Drupal\Core\EventSubscriber\RenderArrayNonHtmlSubscriber main_content_renderer.html: class: Drupal\Core\Render\MainContent\HtmlRenderer arguments: ['@title_resolver', '@plugin.manager.display_variant', '@event_dispatcher', '@module_handler', '@renderer', '@render_cache', '%renderer.config%', '@theme.manager'] tags: - { name: render.main_content_renderer, format: html } main_content_renderer.ajax: class: Drupal\Core\Render\MainContent\AjaxRenderer arguments: ['@element_info', '@renderer'] tags: - { name: render.main_content_renderer, format: drupal_ajax } - { name: render.main_content_renderer, format: iframeupload } main_content_renderer.dialog: class: Drupal\Core\Render\MainContent\DialogRenderer arguments: ['@title_resolver', '@renderer'] tags: - { name: render.main_content_renderer, format: drupal_dialog } main_content_renderer.off_canvas: class: Drupal\Core\Render\MainContent\OffCanvasRenderer arguments: ['@title_resolver', '@renderer'] tags: - { name: render.main_content_renderer, format: drupal_dialog.off_canvas } main_content_renderer.off_canvas_top: class: Drupal\Core\Render\MainContent\OffCanvasRenderer arguments: ['@title_resolver', '@renderer', 'top'] tags: - { name: render.main_content_renderer, format: drupal_dialog.off_canvas_top } main_content_renderer.modal: class: Drupal\Core\Render\MainContent\ModalRenderer arguments: ['@title_resolver', '@renderer'] tags: - { name: render.main_content_renderer, format: drupal_modal } controller.form: class: Drupal\Core\Controller\HtmlFormController arguments: ['@http_kernel.controller.argument_resolver', '@form_builder', '@class_resolver'] Drupal\Core\Controller\HtmlFormController: '@controller.form' controller.entity_form: class: Drupal\Core\Entity\HtmlEntityFormController arguments: ['@http_kernel.controller.argument_resolver', '@form_builder', '@entity_type.manager'] Drupal\Core\Entity\HtmlEntityFormController: '@controller.entity_form' form_ajax_response_builder: class: Drupal\Core\Form\FormAjaxResponseBuilder arguments: ['@main_content_renderer.ajax', '@current_route_match'] Drupal\Core\Form\FormAjaxResponseBuilderInterface: '@form_ajax_response_builder' router_listener: class: Symfony\Component\HttpKernel\EventListener\RouterListener arguments: ['@router', '@request_stack', '@router.request_context', NULL] options_request_listener: class: Drupal\Core\EventSubscriber\OptionsRequestSubscriber arguments: ['@router.route_provider'] bare_html_page_renderer: class: Drupal\Core\Render\BareHtmlPageRenderer arguments: ['@renderer', '@html_response.attachments_processor'] lazy: true Drupal\Core\Render\BareHtmlPageRendererInterface: '@bare_html_page_renderer' private_key: class: Drupal\Core\PrivateKey arguments: ['@state'] Drupal\Core\PrivateKey: '@private_key' csrf_token: class: Drupal\Core\Access\CsrfTokenGenerator arguments: ['@private_key', '@session_manager.metadata_bag'] Drupal\Core\Access\CsrfTokenGenerator: '@csrf_token' access_arguments_resolver_factory: class: Drupal\Core\Access\AccessArgumentsResolverFactory Drupal\Core\Access\AccessArgumentsResolverFactoryInterface: '@access_arguments_resolver_factory' access_manager: class: Drupal\Core\Access\AccessManager arguments: ['@router.route_provider', '@paramconverter_manager', '@access_arguments_resolver_factory', '@current_user', '@access_manager.check_provider'] Drupal\Core\Access\AccessManagerInterface: '@access_manager' access_manager.check_provider: class: Drupal\Core\Access\CheckProvider arguments: ['%dynamic_access_check_services%'] public: false Drupal\Core\Access\CheckProviderInterface: '@access_manager.check_provider' access_check.default: class: Drupal\Core\Access\DefaultAccessCheck tags: - { name: access_check, applies_to: _access } access_check.entity: class: Drupal\Core\Entity\EntityAccessCheck tags: - { name: access_check, applies_to: _entity_access } access_check.entity_create: class: Drupal\Core\Entity\EntityCreateAccessCheck arguments: ['@entity_type.manager'] tags: - { name: access_check, applies_to: _entity_create_access } access_check.entity_create_any: class: Drupal\Core\Entity\EntityCreateAnyAccessCheck arguments: ['@entity_type.manager', '@entity_type.bundle.info'] tags: - { name: access_check, applies_to: _entity_create_any_access } access_check.entity_delete_multiple: class: Drupal\Core\Entity\EntityDeleteMultipleAccessCheck arguments: ['@entity_type.manager', '@tempstore.private', '@request_stack'] tags: - { name: access_check, applies_to: _entity_delete_multiple_access } access_check.theme: class: Drupal\Core\Theme\ThemeAccessCheck arguments: ['@theme_handler'] tags: - { name: access_check, applies_to: _access_theme } access_check.custom: class: Drupal\Core\Access\CustomAccessCheck arguments: ['@callable_resolver', '@access_arguments_resolver_factory'] tags: - { name: access_check, applies_to: _custom_access } access_check.csrf: class: Drupal\Core\Access\CsrfAccessCheck tags: - { name: access_check, applies_to: _csrf_token, needs_incoming_request: TRUE } arguments: ['@csrf_token'] access_check.header.csrf: class: Drupal\Core\Access\CsrfRequestHeaderAccessCheck arguments: ['@session_configuration', '@csrf_token'] tags: - { name: access_check, needs_incoming_request: TRUE } maintenance_mode: class: Drupal\Core\Site\MaintenanceMode arguments: ['@state', '@config.factory'] Drupal\Core\Site\MaintenanceModeInterface: '@maintenance_mode' maintenance_mode_subscriber: class: Drupal\Core\EventSubscriber\MaintenanceModeSubscriber arguments: ['@maintenance_mode', '@config.factory', '@string_translation', '@url_generator', '@current_user', '@bare_html_page_renderer', '@messenger', '@event_dispatcher'] route_access_response_subscriber: class: Drupal\Core\EventSubscriber\RouteAccessResponseSubscriber client_error_response_subscriber: class: Drupal\Core\EventSubscriber\ClientErrorResponseSubscriber anonymous_user_response_subscriber: class: Drupal\Core\EventSubscriber\AnonymousUserResponseSubscriber arguments: ['@current_user'] ajax_response.attachments_processor: class: Drupal\Core\Ajax\AjaxResponseAttachmentsProcessor arguments: ['@asset.resolver', '@config.factory', '@asset.css.collection_renderer', '@asset.js.collection_renderer', '@request_stack', '@renderer', '@module_handler', '@language_manager'] html_response.attachments_processor: class: Drupal\Core\Render\HtmlResponseAttachmentsProcessor arguments: ['@asset.resolver', '@config.factory', '@asset.css.collection_renderer', '@asset.js.collection_renderer', '@request_stack', '@renderer', '@module_handler', '@language_manager'] html_response.subscriber: class: Drupal\Core\EventSubscriber\HtmlResponseSubscriber arguments: ['@html_response.attachments_processor'] finish_response_subscriber: class: Drupal\Core\EventSubscriber\FinishResponseSubscriber arguments: ['@language_manager', '@config.factory', '@page_cache_request_policy', '@page_cache_response_policy', '@cache_contexts_manager', '@datetime.time', '%http.response.debug_cacheability_headers%'] response_generator_subscriber: class: Drupal\Core\EventSubscriber\ResponseGeneratorSubscriber redirect_response_subscriber: class: Drupal\Core\EventSubscriber\RedirectResponseSubscriber autowire: true redirect_leading_slashes_subscriber: class: Drupal\Core\EventSubscriber\RedirectLeadingSlashesSubscriber config_import_subscriber: class: Drupal\Core\EventSubscriber\ConfigImportSubscriber tags: - { name: service_collector, tag: 'module_install.uninstall_validator', call: addUninstallValidator } arguments: ['@extension.list.theme', '@extension.list.module'] config_snapshot_subscriber: class: Drupal\Core\EventSubscriber\ConfigSnapshotSubscriber arguments: ['@config.manager', '@config.storage', '@config.storage.snapshot'] config_exclude_modules_subscriber: class: Drupal\Core\EventSubscriber\ExcludedModulesEventSubscriber arguments: ['@config.storage', '@settings', '@config.manager'] exception.needs_installer: class: Drupal\Core\EventSubscriber\ExceptionDetectNeedsInstallSubscriber arguments: ['@database'] exception.default_json: class: Drupal\Core\EventSubscriber\ExceptionJsonSubscriber exception.default_html: class: Drupal\Core\EventSubscriber\DefaultExceptionHtmlSubscriber arguments: ['@http_kernel', '@logger.channel.php', '@redirect.destination', '@router.no_access_checks'] exception.final: class: Drupal\Core\EventSubscriber\FinalExceptionSubscriber arguments: ['@config.factory'] exception.logger: class: Drupal\Core\EventSubscriber\ExceptionLoggingSubscriber arguments: ['@logger.factory'] exception.custom_page_html: class: Drupal\Core\EventSubscriber\CustomPageExceptionHtmlSubscriber arguments: ['@config.factory', '@http_kernel', '@logger.channel.php', '@redirect.destination', '@router.no_access_checks', '@access_manager'] exception.fast_404_html: class: Drupal\Core\EventSubscriber\Fast404ExceptionHtmlSubscriber arguments: ['@config.factory', '@cache_tags.invalidator'] exception.enforced_form_response: class: Drupal\Core\EventSubscriber\EnforcedFormResponseSubscriber route_processor_manager: class: Drupal\Core\RouteProcessor\RouteProcessorManager tags: - { name: service_collector, tag: route_processor_outbound, call: addOutbound } Drupal\Core\RouteProcessor\OutboundRouteProcessorInterface: '@route_processor_manager' path_processor_manager: class: Drupal\Core\PathProcessor\PathProcessorManager tags: - { name: service_collector, tag: path_processor_inbound, call: addInbound } - { name: service_collector, tag: path_processor_outbound, call: addOutbound } Drupal\Core\PathProcessor\InboundPathProcessorInterface: '@path_processor_manager' Drupal\Core\PathProcessor\OutboundPathProcessorInterface: '@path_processor_manager' path_processor_decode: class: Drupal\Core\PathProcessor\PathProcessorDecode tags: - { name: path_processor_inbound, priority: 1000 } path_processor_front: class: Drupal\Core\PathProcessor\PathProcessorFront tags: - { name: path_processor_inbound, priority: 200 } arguments: ['@config.factory'] route_processor_current: class: Drupal\Core\RouteProcessor\RouteProcessorCurrent arguments: ['@current_route_match'] tags: - { name: route_processor_outbound, priority: 200 } route_processor_csrf: class: Drupal\Core\Access\RouteProcessorCsrf tags: - { name: route_processor_outbound } arguments: ['@csrf_token'] transliteration: class: Drupal\Core\Transliteration\PhpTransliteration arguments: [null, '@module_handler'] flood: class: Drupal\Core\Flood\DatabaseBackend arguments: ['@database', '@request_stack', '@datetime.time'] tags: - { name: backend_overridable } Drupal\Core\Flood\FloodInterface: '@flood' plugin.manager.mail: class: Drupal\Core\Mail\MailManager arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@config.factory', '@logger.factory', '@string_translation', '@renderer'] Drupal\Core\Mail\MailManagerInterface: '@plugin.manager.mail' plugin.manager.condition: class: Drupal\Core\Condition\ConditionManager parent: default_plugin_manager Drupal\Core\Executable\ExecutableManagerInterface: '@plugin.manager.condition' plugin.manager.element_info: class: Drupal\Core\Render\ElementInfoManager arguments: ['@container.namespaces', '@cache.discovery', '@theme_handler', '@module_handler', '@theme.manager'] Drupal\Core\Render\ElementInfoManagerInterface: '@plugin.manager.element_info' stream_wrapper_manager: class: Drupal\Core\StreamWrapper\StreamWrapperManager Drupal\Core\StreamWrapper\StreamWrapperManagerInterface: '@stream_wrapper_manager' stream_wrapper.assets: class: Drupal\Core\StreamWrapper\AssetsStream tags: - { name: stream_wrapper, scheme: assets } Drupal\Core\StreamWrapper\AssetsStream: '@stream_wrapper.assets' stream_wrapper.public: class: Drupal\Core\StreamWrapper\PublicStream tags: - { name: stream_wrapper, scheme: public } stream_wrapper.temporary: class: Drupal\Core\StreamWrapper\TemporaryStream tags: - { name: stream_wrapper, scheme: temporary } image.toolkit.manager: class: Drupal\Core\ImageToolkit\ImageToolkitManager arguments: ['@config.factory'] parent: default_plugin_manager tags: - { name: plugin_manager_cache_clear } Drupal\Core\ImageToolkit\ImageToolkitManager: '@image.toolkit.manager' image.toolkit.operation.manager: class: Drupal\Core\ImageToolkit\ImageToolkitOperationManager arguments: ['@logger.channel.image', '@image.toolkit.manager'] parent: default_plugin_manager tags: - { name: plugin_manager_cache_clear } Drupal\Core\ImageToolkit\ImageToolkitOperationManagerInterface: '@image.toolkit.operation.manager' image.factory: class: Drupal\Core\Image\ImageFactory arguments: ['@image.toolkit.manager'] Drupal\Core\Image\ImageFactory: '@image.factory' breadcrumb: class: Drupal\Core\Breadcrumb\BreadcrumbManager arguments: ['@module_handler'] tags: - { name: service_collector, tag: breadcrumb_builder, call: addBuilder } Drupal\Core\Breadcrumb\ChainBreadcrumbBuilderInterface: '@breadcrumb' token: class: Drupal\Core\Utility\Token arguments: ['@module_handler', '@cache.default', '@language_manager', '@cache_tags.invalidator', '@renderer'] Drupal\Core\Utility\Token: '@token' batch.storage: class: Drupal\Core\Batch\BatchStorage arguments: ['@database', '@session', '@csrf_token', '@datetime.time'] tags: - { name: backend_overridable } lazy: true Drupal\Core\Batch\BatchStorageInterface: '@batch.storage' country_manager: class: Drupal\Core\Locale\CountryManager arguments: ['@module_handler'] Drupal\Core\Locale\CountryManagerInterface: '@country_manager' date.formatter: class: Drupal\Core\Datetime\DateFormatter arguments: ['@entity_type.manager', '@language_manager', '@string_translation', '@config.factory', '@request_stack'] Drupal\Core\Datetime\DateFormatterInterface: '@date.formatter' theme.manager: class: Drupal\Core\Theme\ThemeManager arguments: ['%app.root%', '@theme.negotiator', '@theme.initialization', '@module_handler'] calls: - [setThemeRegistry, ['@theme.registry']] Drupal\Core\Theme\ThemeManagerInterface: '@theme.manager' theme.initialization: class: Drupal\Core\Theme\ThemeInitialization arguments: ['%app.root%', '@theme_handler', '@cache.bootstrap', '@module_handler'] Drupal\Core\Theme\ThemeInitializationInterface: '@theme.initialization' theme.registry: class: Drupal\Core\Theme\Registry arguments: ['%app.root%', '@cache.default', '@lock', '@module_handler', '@theme_handler', '@theme.initialization', '@cache.bootstrap', '@extension.list.module'] tags: - { name: needs_destruction } calls: - [setThemeManager, ['@theme.manager']] Drupal\Core\Theme\Registry: '@theme.registry' authentication: class: Drupal\Core\Authentication\AuthenticationManager arguments: ['@authentication_collector'] Drupal\Core\Authentication\AuthenticationProviderInterface: '@authentication' authentication_collector: class: Drupal\Core\Authentication\AuthenticationCollector tags: - { name: service_collector, tag: authentication_provider, call: addProvider } Drupal\Core\Authentication\AuthenticationCollectorInterface: '@authentication_collector' authentication_subscriber: class: Drupal\Core\EventSubscriber\AuthenticationSubscriber arguments: ['@authentication', '@current_user'] account_switcher: class: Drupal\Core\Session\AccountSwitcher arguments: ['@current_user', '@session_handler.write_safe'] Drupal\Core\Session\AccountSwitcherInterface: '@account_switcher' access_policy_processor: class: Drupal\Core\Session\AccessPolicyProcessor arguments: ['@variation_cache.access_policy', '@variation_cache.access_policy_memory', '@cache.access_policy_memory', '@current_user', '@account_switcher'] tags: - { name: service_collector, call: addAccessPolicy, tag: access_policy } Drupal\Core\Session\AccessPolicyChainInterface: '@access_policy_processor' access_policy.super_user: class: Drupal\Core\Session\SuperUserAccessPolicy tags: - { name: access_policy } Drupal\Core\Session\SuperUserAccessPolicy: '@access_policy.super_user' access_policy.user_roles: class: Drupal\Core\Session\UserRolesAccessPolicy arguments: ['@entity_type.manager'] tags: - { name: access_policy } Drupal\Core\Session\UserRolesAccessPolicy: '@access_policy.user_roles' permission_checker: class: Drupal\Core\Session\PermissionChecker arguments: ['@access_policy_processor'] Drupal\Core\Session\PermissionCheckerInterface: '@permission_checker' user_permissions_hash_generator: class: Drupal\Core\Session\PermissionsHashGenerator arguments: ['@private_key', '@cache.static', '@access_policy_processor'] Drupal\Core\Session\PermissionsHashGeneratorInterface: '@user_permissions_hash_generator' current_user: class: Drupal\Core\Session\AccountProxy arguments: ['@event_dispatcher'] Drupal\Core\Session\AccountInterface: '@current_user' Drupal\Core\Session\AccountProxyInterface: '@current_user' session_configuration: class: Drupal\Core\Session\SessionConfiguration arguments: ['%session.storage.options%'] Drupal\Core\Session\SessionConfigurationInterface: '@session_configuration' session: class: Symfony\Component\HttpFoundation\Session\Session arguments: ['@session_manager', '@session.attribute_bag', '@session.flash_bag'] tags: - { name: service_collector, tag: session_bag, call: registerBag } Symfony\Component\HttpFoundation\Session\SessionInterface: '@session' # session.flash_bag has special treatment: it is passed to the session # service as an argument. Other services using FlashBag should be tagged # with the session_bag tag, so that they will persist across page loads. session.flash_bag: class: Symfony\Component\HttpFoundation\Session\Flash\FlashBag public: false Symfony\Component\HttpFoundation\Session\Flash\FlashBagInterface: '@session.flash_bag' session.attribute_bag: class: Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag public: false Symfony\Component\HttpFoundation\Session\Attribute\AttributeBagInterface: '@session.attribute_bag' session_handler: alias: session_handler.storage session_handler.storage: class: Drupal\Core\Session\SessionHandler arguments: ['@request_stack', '@database', '@datetime.time'] tags: - { name: backend_overridable } session_handler.write_safe: class: Drupal\Core\Session\WriteSafeSessionHandler tags: - { name: session_handler_proxy, priority: 150 } Drupal\Core\Session\WriteSafeSessionHandlerInterface: '@session_handler.write_safe' session_manager: class: Drupal\Core\Session\SessionManager arguments: ['@request_stack', '@database', '@session_manager.metadata_bag', '@session_configuration', '@datetime.time', '@session_handler'] tags: - { name: backend_overridable } calls: - [setWriteSafeHandler, ['@session_handler.write_safe']] Drupal\Core\Session\SessionManagerInterface: '@session_manager' session_manager.metadata_bag: class: Drupal\Core\Session\MetadataBag arguments: ['@settings'] Drupal\Core\Session\MetadataBag: '@session_manager.metadata_bag' asset.css.collection_renderer: class: Drupal\Core\Asset\CssCollectionRenderer arguments: [ '@asset.query_string', '@file_url_generator' ] asset.css.collection_optimizer: class: Drupal\Core\Asset\CssCollectionOptimizerLazy arguments: [ '@asset.css.collection_grouper', '@asset.css.optimizer', '@theme.manager', '@library.dependency_resolver', '@request_stack', '@file_system', '@config.factory', '@file_url_generator', '@datetime.time', '@language_manager'] asset.css.optimizer: class: Drupal\Core\Asset\CssOptimizer arguments: ['@file_url_generator'] asset.css.collection_grouper: class: Drupal\Core\Asset\CssCollectionGrouper asset.css.dumper: class: Drupal\Core\Asset\AssetDumper arguments: ['@file_system'] asset.js.collection_renderer: class: Drupal\Core\Asset\JsCollectionRenderer arguments: [ '@asset.query_string','@file_url_generator', '@datetime.time' ] asset.js.collection_optimizer: class: Drupal\Core\Asset\JsCollectionOptimizerLazy arguments: [ '@asset.js.collection_grouper', '@asset.js.optimizer', '@theme.manager', '@library.dependency_resolver', '@request_stack', '@file_system', '@config.factory', '@file_url_generator', '@datetime.time', '@language_manager'] asset.js.optimizer: class: Drupal\Core\Asset\JsOptimizer arguments: ['@logger.channel.default'] asset.js.collection_grouper: class: Drupal\Core\Asset\JsCollectionGrouper asset.js.dumper: class: Drupal\Core\Asset\AssetDumper arguments: ['@file_system'] library.discovery: class: Drupal\Core\Asset\LibraryDiscovery arguments: ['@library.discovery.collector'] Drupal\Core\Asset\LibraryDiscoveryInterface: '@library.discovery' library.discovery.collector: class: Drupal\Core\Asset\LibraryDiscoveryCollector arguments: ['@cache.discovery', '@lock', '@library.discovery.parser', '@theme.manager'] tags: - { name: needs_destruction } library.discovery.parser: class: Drupal\Core\Asset\LibraryDiscoveryParser arguments: ['%app.root%', '@module_handler', '@theme.manager', '@stream_wrapper_manager', '@library.libraries_directory_file_finder', '@extension.path.resolver', '@plugin.manager.sdc'] Drupal\Core\Asset\LibraryDiscoveryParser: '@library.discovery.parser' library.libraries_directory_file_finder: class: Drupal\Core\Asset\LibrariesDirectoryFileFinder arguments: ['%app.root%', '%site.path%', '@extension.list.profile', '%install_profile%'] Drupal\Core\Asset\LibrariesDirectoryFileFinder: '@library.libraries_directory_file_finder' library.dependency_resolver: class: Drupal\Core\Asset\LibraryDependencyResolver arguments: ['@library.discovery'] Drupal\Core\Asset\LibraryDependencyResolverInterface: '@library.dependency_resolver' asset.resolver: class: Drupal\Core\Asset\AssetResolver arguments: ['@library.discovery', '@library.dependency_resolver', '@module_handler', '@theme.manager', '@language_manager', '@cache.data'] Drupal\Core\Asset\AssetResolverInterface: '@asset.resolver' info_parser: class: Drupal\Core\Extension\InfoParser arguments: ['%app.root%'] Drupal\Core\Extension\InfoParserInterface: '@info_parser' twig: class: Drupal\Core\Template\TwigEnvironment arguments: ['%app.root%', '@cache.default', '%twig_extension_hash%', '@state', '@twig.loader', '%twig.config%'] tags: - { name: service_collector, tag: 'twig.extension', call: addExtension } Drupal\Core\Template\TwigEnvironment: '@twig' twig.extension: class: Drupal\Core\Template\TwigExtension arguments: ['@renderer', '@url_generator', '@theme.manager', '@date.formatter', '@file_url_generator'] tags: - { name: twig.extension, priority: 100 } Drupal\Core\Template\ComponentsTwigExtension: arguments: ['@plugin.manager.sdc', '@Drupal\Core\Theme\Component\ComponentValidator'] tags: - { name: twig.extension, priority: 101 } twig.extension.debug: class: Twig\Extension\DebugExtension tags: - { name: twig.extension, priority: 50 } twig.extension.varDumper: class: Drupal\Core\Template\DebugExtension tags: # This extension is loaded after the Twig Debug Extension because for Twig # Extensions, last extension loaded takes precedent. This allows this # extension to override the default Twig Debug Extension conditionally # when Symfony VarDumper is available. - { name: twig.extension, priority: 25 } twig.loader: class: Twig\Loader\ChainLoader public: false tags: - { name: service_collector, tag: twig.loader, call: addLoader, required: TRUE } Twig\Loader\LoaderInterface: '@twig.loader' twig.loader.filesystem: class: Drupal\Core\Template\Loader\FilesystemLoader # We use '.' instead of '%app.root%' as the path for non-namespaced template # files so that they match the relative paths of templates loaded via the # theme registry or via Twig namespaces. arguments: ['.', '@module_handler', '@theme_handler', '%twig.config%'] tags: - { name: twig.loader, priority: 100 } twig.loader.theme_registry: class: Drupal\Core\Template\Loader\ThemeRegistryLoader arguments: ['@theme.registry'] tags: - { name: twig.loader, priority: 0 } twig.loader.string: class: Drupal\Core\Template\Loader\StringLoader tags: - { name: twig.loader, priority: -100 } element_info: alias: plugin.manager.element_info file.htaccess_writer: class: Drupal\Core\File\HtaccessWriter arguments: ['@logger.channel.security', '@stream_wrapper_manager'] Drupal\Core\File\HtaccessWriterInterface: '@file.htaccess_writer' file.mime_type.guesser: class: Drupal\Core\File\MimeType\MimeTypeGuesser arguments: ['@stream_wrapper_manager'] tags: - { name: service_collector, tag: mime_type_guesser, call: addMimeTypeGuesser } lazy: true file.mime_type.guesser.extension: class: Drupal\Core\File\MimeType\ExtensionMimeTypeGuesser arguments: ['@module_handler'] tags: - { name: mime_type_guesser } lazy: true # Currently needs to be public as it is called by # \Drupal\Core\Render\Element\StatusMessages. # @todo Consider making this service private again after # https://www.drupal.org/node/2367555 lands. render_placeholder_generator: class: Drupal\Core\Render\PlaceholderGenerator arguments: ['@cache_contexts_manager', '%renderer.config%'] Drupal\Core\Render\PlaceholderGeneratorInterface: '@render_placeholder_generator' render_cache: class: Drupal\Core\Render\PlaceholderingRenderCache arguments: ['@request_stack', '@variation_cache_factory', '@cache_contexts_manager', '@render_placeholder_generator'] Drupal\Core\Render\RenderCacheInterface: '@render_cache' renderer: class: Drupal\Core\Render\Renderer arguments: ['@callable_resolver', '@theme.manager', '@plugin.manager.element_info', '@render_placeholder_generator', '@render_cache', '@request_stack', '%renderer.config%'] Drupal\Core\Render\RendererInterface: '@renderer' early_rendering_controller_wrapper_subscriber: class: Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber arguments: ['@http_kernel.controller.argument_resolver', '@renderer'] # Placeholder strategies for rendering placeholders. html_response.placeholder_strategy_subscriber: class: Drupal\Core\EventSubscriber\HtmlResponsePlaceholderStrategySubscriber arguments: ['@placeholder_strategy'] placeholder_strategy: class: Drupal\Core\Render\Placeholder\ChainedPlaceholderStrategy tags: - { name: service_collector, tag: placeholder_strategy, call: addPlaceholderStrategy } Drupal\Core\Render\Placeholder\PlaceholderStrategyInterface: '@placeholder_strategy' placeholder_strategy.single_flush: class: Drupal\Core\Render\Placeholder\SingleFlushStrategy tags: - { name: placeholder_strategy, priority: -1000 } email.validator: class: Drupal\Component\Utility\EmailValidator Drupal\Component\Utility\EmailValidatorInterface: '@email.validator' update.update_hook_registry: class: Drupal\Core\Update\UpdateHookRegistry arguments: ['%container.modules%', '@keyvalue'] Drupal\Core\Update\UpdateHookRegistry: '@update.update_hook_registry' update.post_update_registry: class: Drupal\Core\Update\UpdateRegistry arguments: ['%app.root%', '%site.path%', '%container.modules%', '@update.key_value.post_update', '@theme_handler', 'post_update'] update.key_value.post_update: class: Drupal\Core\KeyValueStore\KeyValueStoreInterface factory: ['@keyvalue', 'get'] arguments: ['post_update'] public: false uuid: class: Drupal\Component\Uuid\Php Drupal\Component\Uuid\UuidInterface: '@uuid' response_filter.active_link: class: Drupal\Core\EventSubscriber\ActiveLinkResponseFilter arguments: ['@current_user', '@path.current', '@path.matcher', '@language_manager'] response_filter.rss.relative_url: class: Drupal\Core\EventSubscriber\RssResponseRelativeUrlFilter messenger: class: Drupal\Core\Messenger\Messenger arguments: ['@session.flash_bag', '@page_cache_kill_switch'] Drupal\Core\Messenger\MessengerInterface: '@messenger' tempstore.private: class: Drupal\Core\TempStore\PrivateTempStoreFactory arguments: ['@keyvalue.expirable', '@lock', '@current_user', '@request_stack', '%tempstore.expire%'] tags: - { name: backend_overridable } Drupal\Core\TempStore\PrivateTempStoreFactory: '@tempstore.private' tempstore.shared: class: Drupal\Core\TempStore\SharedTempStoreFactory arguments: ['@keyvalue.expirable', '@lock', '@request_stack', '@current_user', '%tempstore.expire%'] tags: - { name: backend_overridable } Drupal\Core\TempStore\SharedTempStoreFactory: '@tempstore.shared' pager.manager: class: Drupal\Core\Pager\PagerManager arguments: ['@pager.parameters'] Drupal\Core\Pager\PagerManagerInterface: '@pager.manager' pager.parameters: class: Drupal\Core\Pager\PagerParameters arguments: ['@request_stack'] Drupal\Core\Pager\PagerParametersInterface: '@pager.parameters' Drupal\Core\Theme\Component\SchemaCompatibilityChecker: {} Drupal\Core\Theme\Component\ComponentValidator: calls: - [setValidator, []] Drupal\Core\Theme\ComponentNegotiator: arguments: - '@theme.manager' - '@extension.list.module' plugin.manager.sdc: public: true class: Drupal\Core\Theme\ComponentPluginManager arguments: - '@module_handler' - '@theme_handler' - '@cache.discovery' - '@config.factory' - '@theme.manager' - '@Drupal\Core\Theme\ComponentNegotiator' - '@file_system' - '@Drupal\Core\Theme\Component\SchemaCompatibilityChecker' - '@Drupal\Core\Theme\Component\ComponentValidator' - '%app.root%' Drupal\Core\Theme\ComponentPluginManager: '@plugin.manager.sdc' Drupal\Core\Template\Loader\ComponentLoader: arguments: - '@plugin.manager.sdc' - '@logger.channel.default' tags: - { name: twig.loader, priority: 5 }