core.services.yml 47.7 KB
Newer Older
1
parameters:
2
  session.storage.options: {}
3 4 5 6 7
  twig.config: {}
  factory.keyvalue:
    default: keyvalue.database
  factory.keyvalue.expirable:
    default: keyvalue.expirable.database
8 9 10
services:
  cache_factory:
    class: Drupal\Core\Cache\CacheFactory
11
    arguments: ['@settings', '%cache_default_bin_backends%']
12 13
    calls:
      - [setContainer, ['@service_container']]
14 15 16 17 18
  cache_contexts:
    class: Drupal\Core\Cache\CacheContexts
    arguments: ['@service_container', '%cache_contexts%' ]
  cache_context.url:
    class: Drupal\Core\Cache\UrlCacheContext
19
    arguments: ['@request_stack']
20 21 22 23 24 25 26 27 28
    tags:
      - { name: cache.context}
  cache_context.language:
    class: Drupal\Core\Cache\LanguageCacheContext
    arguments: ['@language_manager']
    tags:
      - { name: cache.context}
  cache_context.theme:
    class: Drupal\Core\Cache\ThemeCacheContext
29
    arguments: ['@theme.manager']
30 31
    tags:
      - { name: cache.context}
32 33 34 35
  cache_context.timezone:
    class: Drupal\Core\Cache\TimeZoneCacheContext
    tags:
      - { name: cache.context}
36 37 38 39 40 41 42 43 44 45 46 47
  cache_tags.invalidator:
    parent: container.trait
    class: Drupal\Core\Cache\CacheTagsInvalidator
    calls:
      - [setContainer, ['@service_container']]
    tags:
      - { name: service_collector, call: addInvalidator, tag: cache_tags_invalidator }
  cache_tags.invalidator.checksum:
    class: Drupal\Core\Cache\DatabaseCacheTagsChecksum
    arguments: ['@database']
    tags:
      - { name: cache_tags_invalidator}
48 49 50 51 52
  cache.backend.chainedfast:
    class: Drupal\Core\Cache\ChainedFastBackendFactory
    arguments: ['@settings']
    calls:
      - [setContainer, ['@service_container']]
53 54
  cache.backend.database:
    class: Drupal\Core\Cache\DatabaseBackendFactory
55
    arguments: ['@database', '@cache_tags.invalidator.checksum']
56 57
  cache.backend.apcu:
    class: Drupal\Core\Cache\ApcuBackendFactory
58
    arguments: ['@app.root', '@cache_tags.invalidator.checksum']
59 60
  cache.backend.php:
    class: Drupal\Core\Cache\PhpBackendFactory
61
    arguments: ['@cache_tags.invalidator.checksum']
62 63 64
  cache.bootstrap:
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
65
      - { name: cache.bin, default_backend: cache.backend.chainedfast }
66 67 68
    factory_method: get
    factory_service: cache_factory
    arguments: [bootstrap]
69 70 71
  cache.config:
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
72
      - { name: cache.bin, default_backend: cache.backend.chainedfast }
73 74 75
    factory_method: get
    factory_service: cache_factory
    arguments: [config]
76
  cache.default:
77 78 79 80 81
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
      - { name: cache.bin }
    factory_method: get
    factory_service: cache_factory
82
    arguments: [default]
83 84 85 86 87 88 89
  cache.entity:
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
      - { name: cache.bin }
    factory_method: get
    factory_service: cache_factory
    arguments: [entity]
90 91 92 93 94 95 96
  cache.menu:
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
      - { name: cache.bin }
    factory_method: get
    factory_service: cache_factory
    arguments: [menu]
97
  cache.render:
98 99 100 101 102
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
      - { name: cache.bin }
    factory_method: get
    factory_service: cache_factory
103 104
    arguments: [render]
  cache.data:
105 106 107 108 109
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
      - { name: cache.bin }
    factory_method: get
    factory_service: cache_factory
110
    arguments: [data]
111 112 113
  cache.discovery:
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
114
      - { name: cache.bin, default_backend: cache.backend.chainedfast }
115 116 117
    factory_method: get
    factory_service: cache_factory
    arguments: [discovery]
118 119
  page_cache_request_policy:
    class: Drupal\Core\PageCache\DefaultRequestPolicy
120
    arguments: ['@session_configuration']
121 122 123 124 125 126
    tags:
      - { name: service_collector, tag: page_cache_request_policy, call: addPolicy}
  page_cache_response_policy:
    class: Drupal\Core\PageCache\ChainResponsePolicy
    tags:
      - { name: service_collector, tag: page_cache_response_policy, call: addPolicy}
127
    lazy: true
128 129 130 131
  page_cache_kill_switch:
    class: Drupal\Core\PageCache\ResponsePolicy\KillSwitch
    tags:
      - { name: page_cache_response_policy }
132 133
  config.manager:
    class: Drupal\Core\Config\ConfigManager
134
    arguments: ['@entity.manager', '@config.factory', '@config.typed', '@string_translation', '@config.storage', '@event_dispatcher']
135 136 137
  config.factory:
    class: Drupal\Core\Config\ConfigFactory
    tags:
138
      - { name: event_subscriber }
139
      - { name: service_collector, tag: 'config.factory.override', call: addOverride }
140
    arguments: ['@config.storage', '@event_dispatcher', '@config.typed']
141 142
  config.installer:
    class: Drupal\Core\Config\ConfigInstaller
143
    arguments: ['@config.factory', '@config.storage', '@config.typed', '@config.manager', '@event_dispatcher']
144
  config.storage:
145 146
    class: Drupal\Core\Config\CachedStorage
    arguments: ['@config.storage.active', '@cache.config']
147 148 149
  config.storage.active:
    class: Drupal\Core\Config\DatabaseStorage
    arguments: ['@database', 'config']
150
    public: false
151 152
    tags:
      - { name: backend_overridable }
153 154 155 156
  config.storage.file:
    class: Drupal\Core\Config\FileStorage
    factory_class: Drupal\Core\Config\FileStorageFactory
    factory_method: getActive
157
    public: false
158 159 160 161 162 163 164
  config.storage.staging:
    class: Drupal\Core\Config\FileStorage
    factory_class: Drupal\Core\Config\FileStorageFactory
    factory_method: getStaging
  config.storage.snapshot:
    class: Drupal\Core\Config\DatabaseStorage
    arguments: ['@database', config_snapshot]
165 166
    tags:
      - { name: backend_overridable }
167
  config.storage.schema:
168 169
    class: Drupal\Core\Config\ExtensionInstallStorage
    arguments: ['@config.storage', 'config/schema']
170 171
  config.storage.installer:
    class: Drupal\Core\Config\InstallStorage
172 173
  config.typed:
    class: Drupal\Core\Config\TypedConfigManager
174 175 176
    arguments: ['@config.storage', '@config.storage.schema', '@cache.discovery', '@module_handler']
    tags:
      - { name: plugin_manager_cache_clear }
177 178 179
  context.handler:
    class: Drupal\Core\Plugin\Context\ContextHandler
    arguments: ['@typed_data_manager']
180 181
  cron:
    class: Drupal\Core\Cron
182
    arguments: ['@module_handler', '@lock', '@queue', '@state', '@account_switcher', '@logger.channel.cron', '@plugin.manager.queue_worker']
183
    lazy: true
184 185 186
  diff.formatter:
    class: Drupal\Core\Diff\DiffFormatter
    arguments: ['@config.factory']
187 188 189 190 191
  database:
    class: Drupal\Core\Database\Connection
    factory_class: Drupal\Core\Database\Database
    factory_method: getConnection
    arguments: [default]
192 193 194
  file_system:
    class: Drupal\Core\File\FileSystem
    arguments: ['@stream_wrapper_manager', '@settings', '@logger.channel.file']
195 196
  form_builder:
    class: Drupal\Core\Form\FormBuilder
197
    arguments: ['@form_validator', '@form_submitter', '@form_cache', '@module_handler', '@event_dispatcher', '@request_stack', '@class_resolver', '@theme.manager', '@?csrf_token']
198 199
  form_validator:
    class: Drupal\Core\Form\FormValidator
200
    arguments: ['@request_stack', '@string_translation', '@csrf_token', '@logger.channel.form']
201 202 203
  form_submitter:
    class: Drupal\Core\Form\FormSubmitter
    arguments: ['@request_stack', '@url_generator']
204 205
  form_cache:
    class: Drupal\Core\Form\FormCache
206
    arguments: ['@app.root', '@keyvalue.expirable', '@module_handler', '@current_user', '@csrf_token', '@logger.channel.form', '@config.factory', '@request_stack', '@page_cache_request_policy']
207
    public: false  # Private to form_builder
208 209
  keyvalue:
    class: Drupal\Core\KeyValueStore\KeyValueFactory
210
    arguments: ['@service_container', '%factory.keyvalue%']
211 212
  keyvalue.database:
    class: Drupal\Core\KeyValueStore\KeyValueDatabaseFactory
213
    arguments: ['@serialization.phpserialize', '@database']
214 215
  keyvalue.expirable:
    class: Drupal\Core\KeyValueStore\KeyValueExpirableFactory
216
    arguments: ['@service_container', '%factory.keyvalue.expirable%']
217 218
  keyvalue.expirable.database:
    class: Drupal\Core\KeyValueStore\KeyValueDatabaseExpirableFactory
219
    arguments: ['@serialization.phpserialize', '@database']
220 221 222 223 224
  logger.factory:
    class: Drupal\Core\Logger\LoggerChannelFactory
    parent: container.trait
    tags:
      - { name: service_collector, tag: logger, call: addLogger }
225 226
  logger.channel_base:
    abstract: true
227 228 229
    class: Drupal\Core\Logger\LoggerChannel
    factory_method: get
    factory_service: logger.factory
230 231
  logger.channel.default:
    parent: logger.channel_base
232
    arguments: ['system']
233
  logger.channel.php:
234
    parent: logger.channel_base
235
    arguments: ['php']
236
  logger.channel.image:
237
    parent: logger.channel_base
238
    arguments: ['image']
239
  logger.channel.cron:
240
    parent: logger.channel_base
241
    arguments: ['cron']
242 243 244 245 246
  logger.channel.file:
    class: Drupal\Core\Logger\LoggerChannel
    factory_method: get
    factory_service: logger.factory
    arguments: ['file']
247
  logger.channel.form:
248
    parent: logger.channel_base
249
    arguments: ['form']
250 251
  logger.log_message_parser:
    class: Drupal\Core\Logger\LogMessageParser
252 253 254 255 256 257 258 259

  serialization.json:
    class: Drupal\Component\Serialization\Json
  serialization.phpserialize:
    class: Drupal\Component\Serialization\PhpSerialize
  serialization.yaml:
    class: Drupal\Component\Serialization\Yaml

260
  settings:
261 262
    class: Drupal\Core\Site\Settings
    factory_class: Drupal\Core\Site\Settings
263
    factory_method: getInstance
264
  state:
265
    class: Drupal\Core\State\State
266
    arguments: ['@keyvalue']
267 268 269 270 271 272 273 274 275 276 277 278
  queue:
    class: Drupal\Core\Queue\QueueFactory
    arguments: ['@settings']
    calls:
      - [setContainer, ['@service_container']]
  queue.database:
    class: Drupal\Core\Queue\QueueDatabaseFactory
    arguments: ['@database']
  path.alias_whitelist:
    class: Drupal\Core\Path\AliasWhitelist
    tags:
      - { name: needs_destruction }
279
    arguments: [path_alias_whitelist, '@cache.default', '@lock', '@state', '@path.alias_storage']
280 281
  path.alias_manager:
    class: Drupal\Core\Path\AliasManager
282
    arguments: ['@path.alias_storage', '@path.alias_whitelist', '@language_manager', '@cache.data']
283 284 285
  path.current:
    class: Drupal\Core\Path\CurrentPathStack
    arguments: ['@request_stack']
286
  http_client:
287
    class: Drupal\Core\Http\Client
288 289
    tags:
      - { name: service_collector, tag: http_client_subscriber, call: attach }
290 291
  theme.negotiator:
    class: Drupal\Core\Theme\ThemeNegotiator
292
    arguments: ['@access_check.theme']
293 294
    tags:
      - { name: service_collector, tag: theme_negotiator, call: addNegotiator }
295 296 297 298 299 300 301
  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
302
    arguments: ['@csrf_token', '@config.factory', '@request_stack']
303 304
    tags:
      - { name: theme_negotiator, priority: 1000 }
305 306 307
  container.namespaces:
    class: ArrayObject
    arguments: [ '%container.namespaces%' ]
308 309 310 311
  container.trait:
    abstract: true
    calls:
      - [setContainer, ['@service_container']]
312 313
  default_plugin_manager:
    abstract: true
314
    arguments: ['@container.namespaces', '@cache.discovery', '@module_handler']
315
  module_handler:
316
    class: Drupal\Core\Extension\ModuleHandler
317 318 319
    arguments: ['@app.root', '%container.modules%', '@cache.bootstrap']
  module_installer:
    class: Drupal\Core\Extension\ModuleInstaller
320 321
    tags:
      - { name: service_collector, tag: 'module_install.uninstall_validator', call: addUninstallValidator }
322
    arguments: ['@app.root', '@module_handler', '@kernel']
323 324 325 326
  content_uninstall_validator:
    class: Drupal\Core\Entity\ContentUninstallValidator
    tags:
      - { name: module_install.uninstall_validator }
327 328 329 330 331
    arguments: ['@entity.manager', '@string_translation']
  field_uninstall_validator:
    class: Drupal\Core\Field\FieldModuleUninstallValidator
    tags:
      - { name: module_install.uninstall_validator }
332
    arguments: ['@entity.manager', '@string_translation']
333 334
  theme_handler:
    class: Drupal\Core\Extension\ThemeHandler
335
    arguments: ['@app.root', '@config.factory', '@module_handler', '@state', '@info_parser', '@logger.channel.default', '@asset.css.collection_optimizer', '@config.installer', '@config.manager', '@router.builder_indicator']
336
  entity.manager:
337
    class: Drupal\Core\Entity\EntityManager
338
    arguments: ['@container.namespaces', '@module_handler', '@cache.discovery', '@language_manager', '@string_translation', '@class_resolver', '@typed_data_manager', '@entity.definitions.installed', '@event_dispatcher']
339
    parent: container.trait
340 341
    tags:
      - { name: plugin_manager_cache_clear }
342 343 344 345 346
  entity_route_subscriber:
    class: Drupal\Core\EventSubscriber\EntityRouteProviderSubscriber
    arguments: ['@entity.manager']
    tags:
      - { name: event_subscriber }
347 348 349 350 351 352 353 354
  entity.definitions.installed:
    class: Drupal\Core\KeyValueStore\KeyValueStoreInterface
    factory_method: get
    factory_service: keyvalue
    arguments: ['entity.definitions.installed']
  entity.definition_update_manager:
    class: Drupal\Core\Entity\EntityDefinitionUpdateManager
    arguments: ['@entity.manager']
355 356 357
  entity.form_builder:
    class: Drupal\Core\Entity\EntityFormBuilder
    arguments: ['@entity.manager', '@form_builder']
358 359 360 361 362
  entity.bundle_config_import_validator:
    class: Drupal\Core\Entity\Event\BundleConfigImportValidate
    arguments: ['@config.manager', '@entity.manager']
    tags:
      - { name: event_subscriber }
363 364 365
  entity.autocomplete_matcher:
    class: Drupal\Core\Entity\EntityAutocompleteMatcher
    arguments: ['@plugin.manager.entity_reference_selection']
366 367 368
  plugin.manager.entity_reference_selection:
    class: Drupal\Core\Entity\EntityReferenceSelection\SelectionPluginManager
    parent: default_plugin_manager
369 370 371
  plugin.manager.block:
    class: Drupal\Core\Block\BlockManager
    parent: default_plugin_manager
372 373
  plugin.manager.field.field_type:
    class: Drupal\Core\Field\FieldTypePluginManager
374
    arguments: ['@container.namespaces', '@cache.discovery', '@module_handler']
375 376
  plugin.manager.field.widget:
    class: Drupal\Core\Field\WidgetPluginManager
377
    arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@plugin.manager.field.field_type']
378 379
  plugin.manager.field.formatter:
    class: Drupal\Core\Field\FormatterPluginManager
380
    arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@plugin.manager.field.field_type']
381 382
  plugin.manager.archiver:
    class: Drupal\Core\Archiver\ArchiverManager
383
    parent: default_plugin_manager
384 385
  plugin.manager.action:
    class: Drupal\Core\Action\ActionManager
386
    arguments: ['@container.namespaces', '@cache.discovery', '@module_handler']
387 388 389
  plugin.manager.menu.link:
    class: Drupal\Core\Menu\MenuLinkManager
    arguments: ['@menu.tree_storage', '@menu_link.static.overrides', '@module_handler']
390 391
  menu.link_tree:
    class: Drupal\Core\Menu\MenuLinkTree
392
    arguments: ['@menu.tree_storage', '@plugin.manager.menu.link', '@router.route_provider', '@menu.active_trail', '@controller_resolver', '@cache.menu', '@current_route_match']
393 394
  menu.default_tree_manipulators:
    class: Drupal\Core\Menu\DefaultMenuLinkTreeManipulators
395
    arguments: ['@access_manager', '@current_user', '@entity.query']
396 397 398 399 400 401
  menu.active_trail:
    class: Drupal\Core\Menu\MenuActiveTrail
    arguments: ['@plugin.manager.menu.link', '@current_route_match']
  menu.parent_form_selector:
    class: Drupal\Core\Menu\MenuParentFormSelector
    arguments: ['@menu.link_tree', '@entity.manager', '@string_translation']
402 403
  plugin.manager.menu.local_action:
    class: Drupal\Core\Menu\LocalActionManager
404
    arguments: ['@controller_resolver', '@request_stack', '@current_route_match', '@router.route_provider', '@module_handler', '@cache.discovery', '@language_manager', '@access_manager', '@current_user']
405 406
  plugin.manager.menu.local_task:
    class: Drupal\Core\Menu\LocalTaskManager
407
    arguments: ['@controller_resolver', '@request_stack', '@current_route_match', '@router.route_provider', '@router.builder', '@module_handler', '@cache.discovery', '@language_manager', '@access_manager', '@current_user']
408 409
  plugin.manager.menu.contextual_link:
    class: Drupal\Core\Menu\ContextualLinkManager
410
    arguments: ['@controller_resolver', '@module_handler', '@cache.discovery', '@language_manager', '@access_manager', '@current_user', '@request_stack']
411 412 413
  plugin.manager.display_variant:
    class: Drupal\Core\Display\VariantManager
    parent: default_plugin_manager
414 415 416
  plugin.manager.queue_worker:
    class: Drupal\Core\Queue\QueueWorkerManager
    parent: default_plugin_manager
417 418
  plugin.cache_clearer:
    class: Drupal\Core\Plugin\CachedDiscoveryClearer
419
    lazy: true
420 421 422 423 424
  paramconverter.menu_link:
    class: Drupal\Core\ParamConverter\MenuLinkPluginConverter
    tags:
      - { name: paramconverter }
    arguments: ['@plugin.manager.menu.link']
425 426
  menu.tree_storage:
    class: Drupal\Core\Menu\MenuTreeStorage
427
    arguments: ['@database', '@cache.menu', '@cache_tags.invalidator', 'menu_tree']
428
    public: false  # Private to plugin.manager.menu.link and menu.link_tree
429 430
    tags:
      - { name: backend_overridable }
431 432 433
  menu_link.static.overrides:
    class: Drupal\Core\Menu\StaticMenuLinkOverrides
    arguments: ['@config.factory']
434 435
  request_stack:
    class: Symfony\Component\HttpFoundation\RequestStack
436 437
    tags:
      - { name: persist }
438 439 440
  current_route_match:
     class: Drupal\Core\Routing\CurrentRouteMatch
     arguments: ['@request_stack']
441
  event_dispatcher:
442
    class: Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher
443
    arguments: ['@service_container']
444 445 446 447
  app.root:
    class: SplString
    factory_service: 'app.root.factory'
    factory_method: 'get'
448 449
    tags:
      - { name: parameter_service }
450 451 452
  app.root.factory:
    class: Drupal\Core\AppRootFactory
    arguments: ['@kernel']
453
  controller_resolver:
454
    class: Drupal\Core\Controller\ControllerResolver
455
    arguments: ['@class_resolver']
456 457 458 459
  class_resolver:
    class: Drupal\Core\DependencyInjection\ClassResolver
    calls:
      - [setContainer, ['@service_container']]
460 461 462
  title_resolver:
    class: Drupal\Core\Controller\TitleResolver
    arguments: ['@controller_resolver', '@string_translation']
463
  http_kernel:
464
    class: Stack\StackedHttpKernel
465
  http_kernel.basic:
466
    class: Symfony\Component\HttpKernel\HttpKernel
467
    arguments: ['@event_dispatcher', '@controller_resolver', '@request_stack']
468 469 470 471 472 473 474
  http_middleware.reverse_proxy:
    class: Drupal\Core\StackMiddleware\ReverseProxyMiddleware
    arguments: ['@settings']
    tags:
      - { name: http_middleware, priority: 300 }
  http_middleware.page_cache:
    class: Drupal\Core\StackMiddleware\PageCache
475
    arguments: ['@cache.render', '@page_cache_request_policy', '@page_cache_response_policy', '@content_negotiation']
476 477 478 479 480 481 482
    tags:
      - { name: http_middleware, priority: 200 }
  http_middleware.kernel_pre_handle:
    class: Drupal\Core\StackMiddleware\KernelPreHandle
    arguments: ['@kernel']
    tags:
      - { name: http_middleware, priority: 100 }
483 484 485 486 487 488
  http_middleware.session:
    class: Drupal\Core\StackMiddleware\Session
    tags:
      - { name: http_middleware, priority: 50 }
    calls:
      - [setContainer, ['@service_container']]
489 490
  language_manager:
    class: Drupal\Core\Language\LanguageManager
491 492 493 494
    arguments: ['@language.default']
  language.default:
    class: Drupal\Core\Language\LanguageDefault
    arguments: ['%language.default_values%']
495 496
  string_translator.custom_strings:
    class: Drupal\Core\StringTranslation\Translator\CustomStrings
497
    arguments: ['@settings']
498 499 500 501
    tags:
      - { name: string_translator, priority: 30 }
  string_translation:
    class: Drupal\Core\StringTranslation\TranslationManager
502 503 504
    arguments: ['@language_manager']
    calls:
      - [initLanguageManager]
505 506
    tags:
      - { name: service_collector, tag: string_translator, call: addTranslator }
507
  database.replica:
508 509 510
    class: Drupal\Core\Database\Connection
    factory_class: Drupal\Core\Database\Database
    factory_method: getConnection
511
    arguments: [replica]
512
  typed_data_manager:
513
    class: Drupal\Core\TypedData\TypedDataManager
514
    arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@class_resolver']
515 516
    calls:
      - [setValidationConstraintManager, ['@validation.constraint']]
517 518
    tags:
      - { name: plugin_manager_cache_clear }
519 520
  validation.constraint:
    class: Drupal\Core\Validation\ConstraintManager
521
    parent: default_plugin_manager
522 523
    tags:
      - { name: plugin_manager_cache_clear }
524 525
  lock:
    class: Drupal\Core\Lock\DatabaseLockBackend
526
    arguments: ['@database']
527 528
    tags:
      - { name: backend_overridable }
529 530 531
  lock.persistent:
    class: Drupal\Core\Lock\PersistentDatabaseLockBackend
    arguments: ['@database']
532 533
    tags:
      - { name: backend_overridable }
534
  router.request_context:
535
    class: Drupal\Core\Routing\RequestContext
536 537
    tags:
      - { name: persist }
538 539
    calls:
      - [fromRequestStack, ['@request_stack']]
540 541
  router.admin_context:
    class: Drupal\Core\Routing\AdminContext
542
    arguments: ['@current_route_match']
543 544
  router.route_provider:
    class: Drupal\Core\Routing\RouteProvider
545
    arguments: ['@database', '@router.builder', '@state', '@path.current']
546 547
    tags:
      - { name: event_subscriber }
548
      - { name: backend_overridable }
549 550 551 552 553
  router.route_preloader:
    class: Drupal\Core\Routing\RoutePreloader
    arguments: ['@router.route_provider', '@state', '@content_negotiation']
    tags:
      - { name: 'event_subscriber' }
554 555
  router.matcher.final_matcher:
    class: Drupal\Core\Routing\UrlMatcher
556
    arguments: ['@path.current']
557 558 559 560 561
  router.matcher:
    class: Symfony\Cmf\Component\Routing\NestedMatcher\NestedMatcher
    arguments: ['@router.route_provider']
    calls:
      - [setFinalMatcher, ['@router.matcher.final_matcher']]
562
    tags:
563 564 565 566 567 568 569 570 571 572 573
      - { name: service_collector, tag: non_lazy_route_filter, call: addRouteFilter }
  route_filter.lazy_collector:
    class: Drupal\Core\Routing\LazyRouteFilter
    tags:
      - { name: non_lazy_route_filter }
    parent: container.trait
  route_filter_subscriber:
    class: Drupal\Core\EventSubscriber\RouteFilterSubscriber
    arguments: ['@route_filter.lazy_collector']
    tags:
      - { name: event_subscriber }
574
  url_generator:
575
    class: Drupal\Core\Routing\UrlGenerator
576
    arguments: ['@router.route_provider', '@path_processor_manager', '@route_processor_manager', '@config.factory', '@logger.channel.default', '@request_stack']
577
    calls:
578
      - [setContext, ['@?router.request_context']]
579 580
  unrouted_url_assembler:
    class: Drupal\Core\Utility\UnroutedUrlAssembler
581
    arguments: ['@request_stack', '@config.factory', '@path_processor_manager']
582 583
  link_generator:
    class: Drupal\Core\Utility\LinkGenerator
584
    arguments: ['@url_generator', '@module_handler']
585 586 587
  router:
    class: Drupal\Core\Routing\AccessAwareRouter
    arguments: ['@router.no_access_checks', '@access_manager', '@current_user']
588 589
  router.dynamic:
    class: Symfony\Cmf\Component\Routing\DynamicRouter
590
    arguments: ['@router.request_context', '@router.matcher', '@url_generator']
591
    tags:
592
      - { name: service_collector, tag: non_lazy_route_enhancer, call: addRouteEnhancer }
593
  router.no_access_checks:
594 595 596 597
    class: Symfony\Cmf\Component\Routing\ChainRouter
    calls:
      - [setContext, ['@router.request_context']]
      - [add, ['@router.dynamic']]
598 599 600 601 602
  router.path_roots_subscriber:
    class: Drupal\Core\EventSubscriber\PathRootsSubscriber
    arguments: ['@state']
    tags:
      - { name: event_subscriber }
603 604
  entity.query:
    class: Drupal\Core\Entity\Query\QueryFactory
605
    arguments: ['@entity.manager']
606 607 608 609
    calls:
      - [setContainer, ['@service_container']]
  entity.query.config:
    class: Drupal\Core\Config\Entity\Query\QueryFactory
610
    arguments: ['@config.factory']
611 612 613
  entity.query.sql:
    class: Drupal\Core\Entity\Query\Sql\QueryFactory
    arguments: ['@database']
614 615
    tags:
      - { name: backend_overridable }
616 617 618
  entity.query.keyvalue:
    class: Drupal\Core\Entity\KeyValueStore\Query\QueryFactory
    arguments: ['@keyvalue']
619 620
  router.dumper:
    class: Drupal\Core\Routing\MatcherDumper
621
    arguments: ['@database', '@state']
622 623
    tags:
      - { name: backend_overridable }
624 625 626
  router.builder_indicator:
    class: Drupal\Core\Routing\RouteBuilderIndicator
    arguments: ['@state']
627 628
  router.builder:
    class: Drupal\Core\Routing\RouteBuilder
629
    arguments: ['@router.dumper', '@lock', '@event_dispatcher', '@module_handler', '@controller_resolver', '@access_manager.check_provider', '@router.builder_indicator']
630 631
  router.rebuild_subscriber:
    class: Drupal\Core\EventSubscriber\RouterRebuildSubscriber
632 633 634 635 636 637
    arguments: ['@router.builder']
    tags:
      - { name: event_subscriber }
  menu.rebuild_subscriber:
    class: Drupal\Core\EventSubscriber\MenuRouterRebuildSubscriber
    arguments: ['@lock', '@plugin.manager.menu.link']
638 639
    tags:
      - { name: event_subscriber }
640 641
  path.alias_storage:
    class: Drupal\Core\Path\AliasStorage
642
    arguments: ['@database', '@module_handler']
643 644
    tags:
      - { name: backend_overridable }
645 646
  path.matcher:
    class: Drupal\Core\Path\PathMatcher
647
    arguments: ['@config.factory', '@current_route_match']
648 649
  path.validator:
    class: Drupal\Core\Path\PathValidator
650
    arguments: ['@router', '@router.no_access_checks', '@current_user', '@path_processor_manager']
651

652 653 654 655 656 657 658 659 660
# The argument to the hashing service defined in services.yml, to the
# constructor of PhpassHashedPassword is the log2 number of iterations for
# password stretching.
# @todo increase by 1 every Drupal version in order to counteract increases in
# the speed and power of computers available to crack the hashes. The current
# password hashing method was introduced in Drupal 7 with a log2 count of 15.
  password:
    class: Drupal\Core\Password\PhpassHashedPassword
    arguments: [16]
661 662 663 664 665 666 667
  accept_header_matcher:
    class: Drupal\Core\Routing\AcceptHeaderMatcher
    arguments: ['@content_negotiation']
    tags:
      - { name: route_filter }
  content_type_header_matcher:
    class: Drupal\Core\Routing\ContentTypeHeaderMatcher
668 669 670 671
    tags:
      - { name: route_filter }
  paramconverter_manager:
    class: Drupal\Core\ParamConverter\ParamConverterManager
672 673
    tags:
      - { name: service_collector, tag: paramconverter, call: addConverter }
674 675 676 677 678
  paramconverter_subscriber:
    class: Drupal\Core\EventSubscriber\ParamConverterSubscriber
    tags:
      - { name: event_subscriber }
    arguments: ['@paramconverter_manager']
679 680 681 682
  paramconverter.entity:
    class: Drupal\Core\ParamConverter\EntityConverter
    tags:
      - { name: paramconverter }
683
    arguments: ['@entity.manager']
684 685 686 687 688 689
  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.manager', '@config.factory', '@router.admin_context']
690 691 692 693 694
  route_subscriber.module:
    class: Drupal\Core\EventSubscriber\ModuleRouteSubscriber
    tags:
      - { name: event_subscriber }
    arguments: ['@module_handler']
695 696
  resolver_manager.entity:
    class: Drupal\Core\Entity\EntityResolverManager
697
    arguments: ['@entity.manager', '@class_resolver']
698 699 700 701
  route_subscriber.entity:
    class: Drupal\Core\EventSubscriber\EntityRouteAlterSubscriber
    tags:
      - { name: event_subscriber }
702
    arguments: ['@resolver_manager.entity']
703 704
  ajax_subscriber:
    class: Drupal\Core\EventSubscriber\AjaxSubscriber
705 706
    tags:
      - { name: event_subscriber }
707 708 709 710 711 712 713 714 715 716
  route_enhancer.lazy_collector:
    class: Drupal\Core\Routing\LazyRouteEnhancer
    tags:
      - { name: non_lazy_route_enhancer, priority: 5000 }
    parent: container.trait
  route_enhancer_subscriber:
    class: Drupal\Core\EventSubscriber\RouteEnhancerSubscriber
    arguments: ['@route_enhancer.lazy_collector']
    tags:
      - { name: event_subscriber }
717 718 719 720 721 722
  route_enhancer.param_conversion:
    class: Drupal\Core\Routing\Enhancer\ParamConversionEnhancer
    arguments: ['@paramconverter_manager']
    tags:
      - { name: route_enhancer }
      - { name: event_subscriber }
723 724 725 726
  route_enhancer.authentication:
    class: Drupal\Core\Routing\Enhancer\AuthenticationEnhancer
    tags:
      - { name: route_enhancer, priority: 1000 }
727
    arguments: ['@authentication', '@current_user']
728 729
  route_enhancer.entity:
    class: Drupal\Core\Entity\Enhancer\EntityRouteEnhancer
730
    tags:
731
      - { name: route_enhancer, priority: 20 }
732 733 734 735 736
  route_content_controller_subscriber:
    class: Drupal\Core\EventSubscriber\ContentControllerSubscriber
    arguments: ['@content_negotiation']
    tags:
      - { name: event_subscriber }
737 738 739 740
  route_special_attributes_subscriber:
    class: Drupal\Core\EventSubscriber\SpecialAttributesRouteSubscriber
    tags:
      - { name: event_subscriber }
741 742 743 744
  route_http_method_subscriber:
    class: Drupal\Core\EventSubscriber\RouteMethodSubscriber
    tags:
      - { name: event_subscriber }
745 746 747 748 749 750 751 752 753

  # 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%']
    tags:
      - { name: event_subscriber }
  main_content_renderer.html:
    class: Drupal\Core\Render\MainContent\HtmlRenderer
754
    arguments: ['@title_resolver', '@plugin.manager.display_variant', '@event_dispatcher', '@module_handler', '@renderer']
755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771
    tags:
      - { name: render.main_content_renderer, format: html }
  main_content_renderer.ajax:
    class: Drupal\Core\Render\MainContent\AjaxRenderer
    arguments: ['@element_info']
    tags:
      - { name: render.main_content_renderer, format: drupal_ajax }
  main_content_renderer.dialog:
    class: Drupal\Core\Render\MainContent\DialogRenderer
    arguments: ['@title_resolver']
    tags:
      - { name: render.main_content_renderer, format: drupal_dialog }
  main_content_renderer.modal:
    class: Drupal\Core\Render\MainContent\ModalRenderer
    arguments: ['@title_resolver']
    tags:
      - { name: render.main_content_renderer, format: drupal_modal }
772 773 774 775 776 777
  controller.form:
    class: Drupal\Core\Controller\HtmlFormController
    arguments: ['@controller_resolver', '@form_builder', '@class_resolver']
  controller.entity_form:
    class: Drupal\Core\Entity\HtmlEntityFormController
    arguments: ['@controller_resolver', '@form_builder', '@entity.manager']
778 779 780 781
  router_listener:
    class: Symfony\Component\HttpKernel\EventListener\RouterListener
    tags:
      - { name: event_subscriber }
782
    arguments: ['@router', '@router.request_context', NULL, '@request_stack']
783 784 785 786 787 788
  content_negotiation:
    class: Drupal\Core\ContentNegotiation
  view_subscriber:
    class: Drupal\Core\EventSubscriber\ViewSubscriber
    tags:
      - { name: event_subscriber }
789
    arguments: ['@content_negotiation', '@title_resolver']
790 791
  bare_html_page_renderer:
    class: Drupal\Core\Render\BareHtmlPageRenderer
792
    arguments: ['@renderer']
793 794 795 796 797
  private_key:
    class: Drupal\Core\PrivateKey
    arguments: ['@state']
  csrf_token:
    class: Drupal\Core\Access\CsrfTokenGenerator
798
    arguments: ['@private_key', '@session_manager.metadata_bag']
799 800
  access_arguments_resolver_factory:
    class: Drupal\Core\Access\AccessArgumentsResolverFactory
801 802
  access_manager:
    class: Drupal\Core\Access\AccessManager
803 804 805
    arguments: ['@router.route_provider', '@paramconverter_manager', '@access_arguments_resolver_factory', '@current_user', '@access_manager.check_provider']
  access_manager.check_provider:
    class: Drupal\Core\Access\CheckProvider
806 807
    calls:
      - [setContainer, ['@service_container']]
808
    public: false
809 810 811
  access_check.default:
    class: Drupal\Core\Access\DefaultAccessCheck
    tags:
812
      - { name: access_check, applies_to: _access }
813 814 815
  access_check.entity:
    class: Drupal\Core\Entity\EntityAccessCheck
    tags:
816
      - { name: access_check, applies_to: _entity_access }
817 818
  access_check.entity_create:
    class: Drupal\Core\Entity\EntityCreateAccessCheck
819
    arguments: ['@entity.manager']
820
    tags:
821
      - { name: access_check, applies_to: _entity_create_access }
822 823
  access_check.theme:
    class: Drupal\Core\Theme\ThemeAccessCheck
824
    arguments: ['@theme_handler']
825
    tags:
826
      - { name: access_check, applies_to: _access_theme }
827 828
  access_check.custom:
    class: Drupal\Core\Access\CustomAccessCheck
829
    arguments: ['@controller_resolver', '@access_arguments_resolver_factory']
830
    tags:
831
      - { name: access_check, applies_to: _custom_access }
832 833 834
  access_check.csrf:
    class: Drupal\Core\Access\CsrfAccessCheck
    tags:
835
      - { name: access_check, applies_to: _csrf_token, needs_incoming_request: TRUE }
836
    arguments: ['@csrf_token']
837 838 839
  maintenance_mode:
    class: Drupal\Core\Site\MaintenanceMode
    arguments: ['@state', '@current_user']
840 841
  maintenance_mode_subscriber:
    class: Drupal\Core\EventSubscriber\MaintenanceModeSubscriber
842
    arguments: ['@maintenance_mode', '@config.factory', '@string_translation', '@url_generator', '@current_user', '@bare_html_page_renderer']
843 844 845 846 847 848
    tags:
      - { name: event_subscriber }
  path_subscriber:
    class: Drupal\Core\EventSubscriber\PathSubscriber
    tags:
      - { name: event_subscriber }
849
    arguments: ['@path.alias_manager', '@path_processor_manager', '@path.current']
850 851 852 853
  finish_response_subscriber:
    class: Drupal\Core\EventSubscriber\FinishResponseSubscriber
    tags:
      - { name: event_subscriber }
854
    arguments: ['@language_manager', '@config.factory', '@page_cache_request_policy', '@page_cache_response_policy']
855 856
  redirect_response_subscriber:
    class: Drupal\Core\EventSubscriber\RedirectResponseSubscriber
857
    arguments: ['@url_generator', '@router.request_context']
858 859
    tags:
      - { name: event_subscriber }
860 861 862 863 864
  request_close_subscriber:
    class: Drupal\Core\EventSubscriber\RequestCloseSubscriber
    tags:
      - { name: event_subscriber }
    arguments: ['@module_handler']
865 866 867 868 869 870 871 872
  config_import_subscriber:
    class: Drupal\Core\EventSubscriber\ConfigImportSubscriber
    tags:
      - { name: event_subscriber }
  config_snapshot_subscriber:
    class: Drupal\Core\EventSubscriber\ConfigSnapshotSubscriber
    tags:
      - { name: event_subscriber }
873
    arguments: ['@config.manager', '@config.storage', '@config.storage.snapshot']
874 875 876 877 878 879 880 881
  exception.default_json:
    class: Drupal\Core\EventSubscriber\ExceptionJsonSubscriber
    tags:
      - { name: event_subscriber }
  exception.default_html:
    class: Drupal\Core\EventSubscriber\DefaultExceptionHtmlSubscriber
    tags:
      - { name: event_subscriber }
882
    arguments: ['@http_kernel', '@logger.channel.php']
883 884 885 886
  exception.default:
    class: Drupal\Core\EventSubscriber\DefaultExceptionSubscriber
    tags:
      - { name: event_subscriber }
887
    arguments: ['@config.factory', '@bare_html_page_renderer']
888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909
  exception.logger:
    class: Drupal\Core\EventSubscriber\ExceptionLoggingSubscriber
    tags:
      - { name: event_subscriber }
    arguments: ['@logger.factory']
  exception.custom_page_json:
    class: Drupal\Core\EventSubscriber\ExceptionJsonSubscriber
    tags:
      - { name: event_subscriber }
    arguments: ['@config.factory', '@path.alias_manager', '@http_kernel']
  exception.custom_page_html:
    class: Drupal\Core\EventSubscriber\CustomPageExceptionHtmlSubscriber
    tags:
      - { name: event_subscriber }
    arguments: ['@config.factory', '@path.alias_manager', '@http_kernel', '@logger.channel.php']
  exception.fast_404_html:
    class: Drupal\Core\EventSubscriber\Fast404ExceptionHtmlSubscriber
    tags:
      - { name: event_subscriber }
    arguments: ['@config.factory', '@http_kernel']
  exception.test_site:
    class: Drupal\Core\EventSubscriber\ExceptionTestSiteSubscriber
910 911
    tags:
      - { name: event_subscriber }
912 913 914 915
  exception.enforced_form_response:
    class: Drupal\Core\EventSubscriber\EnforcedFormResponseSubscriber
    tags:
      - { name: event_subscriber }
916 917
  route_processor_manager:
    class: Drupal\Core\RouteProcessor\RouteProcessorManager
918 919
    tags:
      - { name: service_collector, tag: route_processor_outbound, call: addOutbound }
920 921
  path_processor_manager:
    class: Drupal\Core\PathProcessor\PathProcessorManager
922 923 924
    tags:
      - { name: service_collector, tag: path_processor_inbound, call: addInbound }
      - { name: service_collector, tag: path_processor_outbound, call: addOutbound }
925 926 927 928 929 930 931 932
  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 }
933
      - { name: path_processor_outbound, priority: 200 }
934
    arguments: ['@config.factory']
935 936 937
  route_processor_current:
    class: Drupal\Core\RouteProcessor\RouteProcessorCurrent
    arguments: ['@current_route_match']
938
    tags:
939
      - { name: route_processor_outbound, priority: 200 }
940 941 942 943
  path_processor_alias:
    class: Drupal\Core\PathProcessor\PathProcessorAlias
    tags:
      - { name: path_processor_inbound, priority: 100 }
944
      - { name: path_processor_outbound, priority: 300 }
945
    arguments: ['@path.alias_manager']
946
  route_processor_csrf:
947 948 949 950
    class: Drupal\Core\Access\RouteProcessorCsrf
    tags:
      - { name: route_processor_outbound }
    arguments: ['@csrf_token']
951
  transliteration:
952
    class: Drupal\Core\Transliteration\PhpTransliteration
953
    arguments: [null, '@module_handler']
954 955
  flood:
    class: Drupal\Core\Flood\DatabaseBackend
956
    arguments: ['@database', '@request_stack']
957 958
    tags:
      - { name: backend_overridable }
959 960
  plugin.manager.mail:
    class: Drupal\Core\Mail\MailManager
961
    arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@config.factory', '@logger.factory', '@string_translation']
962 963
  plugin.manager.condition:
    class: Drupal\Core\Condition\ConditionManager
964
    parent: default_plugin_manager
965 966 967
  plugin.manager.element_info:
    class: Drupal\Core\Render\ElementInfoManager
    parent: default_plugin_manager
968 969 970 971 972 973 974 975 976 977 978 979
  stream_wrapper_manager:
    class: Drupal\Core\StreamWrapper\StreamWrapperManager
    calls:
      - [setContainer, ['@service_container']]
  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 }
980 981 982 983 984 985 986 987 988 989 990
  kernel_destruct_subscriber:
    class: Drupal\Core\EventSubscriber\KernelDestructionSubscriber
    tags:
      - { name: event_subscriber }
    calls:
      - [setContainer, ['@service_container']]
  ajax.subscriber:
    class: Drupal\Core\Ajax\AjaxSubscriber
    tags:
      - { name: event_subscriber }
  image.toolkit.manager:
991
    class: Drupal\Core\ImageToolkit\ImageToolkitManager
992 993
    arguments: ['@config.factory']
    parent: default_plugin_manager
994 995
  image.toolkit.operation.manager:
    class: Drupal\Core\ImageToolkit\ImageToolkitOperationManager
996
    arguments: ['@logger.channel.image']
997
    parent: default_plugin_manager
998 999
  image.factory:
    class: Drupal\Core\Image\ImageFactory
1000
    arguments: ['@image.toolkit.manager']
1001 1002
  breadcrumb:
    class: Drupal\Core\Breadcrumb\BreadcrumbManager
1003
    arguments: ['@module_handler']
1004 1005
    tags:
      - { name: service_collector, tag: breadcrumb_builder, call: addBuilder }
1006 1007
  token:
    class: Drupal\Core\Utility\Token
1008
    arguments: ['@module_handler', '@cache.discovery', '@language_manager', '@cache_tags.invalidator']
1009
  batch.storage: