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

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

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

665 666 667 668 669 670 671 672 673
# 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]
674 675 676 677 678 679 680
  accept_header_matcher:
    class: Drupal\Core\Routing\AcceptHeaderMatcher
    arguments: ['@content_negotiation']
    tags:
      - { name: route_filter }
  content_type_header_matcher:
    class: Drupal\Core\Routing\ContentTypeHeaderMatcher
681 682 683 684
    tags:
      - { name: route_filter }
  paramconverter_manager:
    class: Drupal\Core\ParamConverter\ParamConverterManager
685 686
    tags:
      - { name: service_collector, tag: paramconverter, call: addConverter }
687 688 689 690 691
  paramconverter_subscriber:
    class: Drupal\Core\EventSubscriber\ParamConverterSubscriber
    tags:
      - { name: event_subscriber }
    arguments: ['@paramconverter_manager']
692 693 694 695
  paramconverter.entity:
    class: Drupal\Core\ParamConverter\EntityConverter
    tags:
      - { name: paramconverter }
696
    arguments: ['@entity.manager']
697 698 699 700 701 702
  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']
703 704 705 706 707
  route_subscriber.module:
    class: Drupal\Core\EventSubscriber\ModuleRouteSubscriber
    tags:
      - { name: event_subscriber }
    arguments: ['@module_handler']
708 709
  resolver_manager.entity:
    class: Drupal\Core\Entity\EntityResolverManager
710
    arguments: ['@entity.manager', '@class_resolver']
711 712 713 714
  route_subscriber.entity:
    class: Drupal\Core\EventSubscriber\EntityRouteAlterSubscriber
    tags:
      - { name: event_subscriber }
715
    arguments: ['@resolver_manager.entity']
716 717
  ajax_subscriber:
    class: Drupal\Core\EventSubscriber\AjaxSubscriber
718 719
    tags:
      - { name: event_subscriber }
720 721 722 723 724 725 726 727 728 729
  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 }
730 731 732 733 734 735
  route_enhancer.param_conversion:
    class: Drupal\Core\Routing\Enhancer\ParamConversionEnhancer
    arguments: ['@paramconverter_manager']
    tags:
      - { name: route_enhancer }
      - { name: event_subscriber }
736 737 738 739
  route_enhancer.authentication:
    class: Drupal\Core\Routing\Enhancer\AuthenticationEnhancer
    tags:
      - { name: route_enhancer, priority: 1000 }
740
    arguments: ['@authentication', '@current_user']
741 742
  route_enhancer.entity:
    class: Drupal\Core\Entity\Enhancer\EntityRouteEnhancer
743
    tags:
744
      - { name: route_enhancer, priority: 20 }
745 746 747 748 749
  route_content_controller_subscriber:
    class: Drupal\Core\EventSubscriber\ContentControllerSubscriber
    arguments: ['@content_negotiation']
    tags:
      - { name: event_subscriber }
750 751 752 753
  route_special_attributes_subscriber:
    class: Drupal\Core\EventSubscriber\SpecialAttributesRouteSubscriber
    tags:
      - { name: event_subscriber }
754 755 756 757
  route_http_method_subscriber:
    class: Drupal\Core\EventSubscriber\RouteMethodSubscriber
    tags:
      - { name: event_subscriber }
758 759 760 761 762 763 764 765 766

  # 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
767
    arguments: ['@title_resolver', '@plugin.manager.display_variant', '@event_dispatcher', '@module_handler', '@renderer']
768 769 770 771 772 773 774
    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 }
775
      - { name: render.main_content_renderer, format: iframeupload }
776 777 778 779 780 781 782 783 784 785
  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 }
786 787 788 789 790 791
  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']
792 793 794 795
  router_listener:
    class: Symfony\Component\HttpKernel\EventListener\RouterListener
    tags:
      - { name: event_subscriber }
796
    arguments: ['@router', '@router.request_context', NULL, '@request_stack']
797 798 799 800 801 802
  content_negotiation:
    class: Drupal\Core\ContentNegotiation
  view_subscriber:
    class: Drupal\Core\EventSubscriber\ViewSubscriber
    tags:
      - { name: event_subscriber }
803
    arguments: ['@content_negotiation', '@title_resolver']
804 805
  bare_html_page_renderer:
    class: Drupal\Core\Render\BareHtmlPageRenderer
806
    arguments: ['@renderer']
807 808 809 810 811
  private_key:
    class: Drupal\Core\PrivateKey
    arguments: ['@state']
  csrf_token:
    class: Drupal\Core\Access\CsrfTokenGenerator
812
    arguments: ['@private_key', '@session_manager.metadata_bag']
813 814
  access_arguments_resolver_factory:
    class: Drupal\Core\Access\AccessArgumentsResolverFactory
815 816
  access_manager:
    class: Drupal\Core\Access\AccessManager
817 818 819
    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
820 821
    calls:
      - [setContainer, ['@service_container']]
822
    public: false
823 824 825
  access_check.default:
    class: Drupal\Core\Access\DefaultAccessCheck
    tags:
826
      - { name: access_check, applies_to: _access }
827 828 829
  access_check.entity:
    class: Drupal\Core\Entity\EntityAccessCheck
    tags:
830
      - { name: access_check, applies_to: _entity_access }
831 832
  access_check.entity_create:
    class: Drupal\Core\Entity\EntityCreateAccessCheck
833
    arguments: ['@entity.manager']
834
    tags:
835
      - { name: access_check, applies_to: _entity_create_access }
836 837
  access_check.theme:
    class: Drupal\Core\Theme\ThemeAccessCheck
838
    arguments: ['@theme_handler']
839
    tags:
840
      - { name: access_check, applies_to: _access_theme }
841 842
  access_check.custom:
    class: Drupal\Core\Access\CustomAccessCheck
843
    arguments: ['@controller_resolver', '@access_arguments_resolver_factory']
844
    tags:
845
      - { name: access_check, applies_to: _custom_access }
846 847 848
  access_check.csrf:
    class: Drupal\Core\Access\CsrfAccessCheck
    tags:
849
      - { name: access_check, applies_to: _csrf_token, needs_incoming_request: TRUE }
850
    arguments: ['@csrf_token']
851 852 853
  maintenance_mode:
    class: Drupal\Core\Site\MaintenanceMode
    arguments: ['@state', '@current_user']
854 855
  maintenance_mode_subscriber:
    class: Drupal\Core\EventSubscriber\MaintenanceModeSubscriber
856
    arguments: ['@maintenance_mode', '@config.factory', '@string_translation', '@url_generator', '@current_user', '@bare_html_page_renderer']
857 858 859 860 861 862
    tags:
      - { name: event_subscriber }
  path_subscriber:
    class: Drupal\Core\EventSubscriber\PathSubscriber
    tags:
      - { name: event_subscriber }
863
    arguments: ['@path.alias_manager', '@path_processor_manager', '@path.current']
864 865 866 867
  finish_response_subscriber:
    class: Drupal\Core\EventSubscriber\FinishResponseSubscriber
    tags:
      - { name: event_subscriber }
868
    arguments: ['@language_manager', '@config.factory', '@page_cache_request_policy', '@page_cache_response_policy']
869 870
  redirect_response_subscriber:
    class: Drupal\Core\EventSubscriber\RedirectResponseSubscriber
871
    arguments: ['@url_generator', '@router.request_context']