core.services.yml 35.1 KB
Newer Older
1 2 3 4 5 6
services:
  cache_factory:
    class: Drupal\Core\Cache\CacheFactory
    arguments: ['@settings']
    calls:
      - [setContainer, ['@service_container']]
7 8 9 10 11
  cache_contexts:
    class: Drupal\Core\Cache\CacheContexts
    arguments: ['@service_container', '%cache_contexts%' ]
  cache_context.url:
    class: Drupal\Core\Cache\UrlCacheContext
12
    arguments: ['@request_stack']
13 14 15 16 17 18 19 20 21
    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
22
    arguments: ['@current_route_match', '@theme.negotiator']
23 24
    tags:
      - { name: cache.context}
25 26 27 28
  cache_context.timezone:
    class: Drupal\Core\Cache\TimeZoneCacheContext
    tags:
      - { name: cache.context}
29 30 31 32 33
  cache.backend.chainedfast:
    class: Drupal\Core\Cache\ChainedFastBackendFactory
    arguments: ['@settings']
    calls:
      - [setContainer, ['@service_container']]
34 35 36
  cache.backend.database:
    class: Drupal\Core\Cache\DatabaseBackendFactory
    arguments: ['@database']
37 38
  cache.backend.apcu:
    class: Drupal\Core\Cache\ApcuBackendFactory
39 40
  cache.backend.php:
    class: Drupal\Core\Cache\PhpBackendFactory
41 42 43 44 45 46 47
  cache.bootstrap:
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
      - { name: cache.bin }
    factory_method: get
    factory_service: cache_factory
    arguments: [bootstrap]
48
  cache.default:
49 50 51 52 53
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
      - { name: cache.bin }
    factory_method: get
    factory_service: cache_factory
54
    arguments: [default]
55 56 57 58 59 60 61
  cache.entity:
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
      - { name: cache.bin }
    factory_method: get
    factory_service: cache_factory
    arguments: [entity]
62 63 64 65 66 67 68
  cache.menu:
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
      - { name: cache.bin }
    factory_method: get
    factory_service: cache_factory
    arguments: [menu]
69
  cache.render:
70 71 72 73 74
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
      - { name: cache.bin }
    factory_method: get
    factory_service: cache_factory
75 76
    arguments: [render]
  cache.data:
77 78 79 80 81
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
      - { name: cache.bin }
    factory_method: get
    factory_service: cache_factory
82
    arguments: [data]
83 84 85 86 87 88 89
  cache.discovery:
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
      - { name: cache.bin }
    factory_method: get
    factory_service: cache_factory
    arguments: [discovery]
90 91
  config.manager:
    class: Drupal\Core\Config\ConfigManager
92
    arguments: ['@entity.manager', '@config.factory', '@config.typed', '@string_translation', '@config.storage', '@event_dispatcher']
93 94 95
  config.factory:
    class: Drupal\Core\Config\ConfigFactory
    tags:
96
      - { name: event_subscriber }
97
      - { name: service_collector, tag: 'config.factory.override', call: addOverride }
98
    arguments: ['@config.storage', '@event_dispatcher', '@config.typed']
99 100
  config.installer:
    class: Drupal\Core\Config\ConfigInstaller
101
    arguments: ['@config.factory', '@config.storage', '@config.typed', '@config.manager', '@event_dispatcher']
102 103 104 105 106
  config.storage:
    alias: config.storage.active
  config.storage.active:
    class: Drupal\Core\Config\DatabaseStorage
    arguments: ['@database', 'config']
107
    public: false
108 109
    tags:
      - { name: backend_overridable }
110 111 112 113
  config.storage.file:
    class: Drupal\Core\Config\FileStorage
    factory_class: Drupal\Core\Config\FileStorageFactory
    factory_method: getActive
114
    public: false
115 116 117 118 119 120 121
  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]
122 123
    tags:
      - { name: backend_overridable }
124
  config.storage.schema:
125 126
    class: Drupal\Core\Config\ExtensionInstallStorage
    arguments: ['@config.storage', 'config/schema']
127 128
  config.storage.installer:
    class: Drupal\Core\Config\InstallStorage
129 130
  config.typed:
    class: Drupal\Core\Config\TypedConfigManager
131 132 133
    arguments: ['@config.storage', '@config.storage.schema', '@cache.discovery', '@module_handler']
    tags:
      - { name: plugin_manager_cache_clear }
134 135 136
  context.handler:
    class: Drupal\Core\Plugin\Context\ContextHandler
    arguments: ['@typed_data_manager']
137 138
  cron:
    class: Drupal\Core\Cron
139
    arguments: ['@module_handler', '@lock', '@queue', '@state', '@current_user', '@session_manager']
140 141 142
  diff.formatter:
    class: Drupal\Core\Diff\DiffFormatter
    arguments: ['@config.factory']
143 144 145 146 147
  database:
    class: Drupal\Core\Database\Connection
    factory_class: Drupal\Core\Database\Database
    factory_method: getConnection
    arguments: [default]
148 149
  form_builder:
    class: Drupal\Core\Form\FormBuilder
150
    arguments: ['@form_validator', '@form_submitter', '@module_handler', '@keyvalue.expirable', '@event_dispatcher', '@request_stack', '@class_resolver', '@?csrf_token', '@?http_kernel']
151 152 153
  form_validator:
    class: Drupal\Core\Form\FormValidator
    arguments: ['@request_stack', '@string_translation', '@csrf_token']
154 155 156
  form_submitter:
    class: Drupal\Core\Form\FormSubmitter
    arguments: ['@request_stack', '@url_generator']
157 158
  keyvalue:
    class: Drupal\Core\KeyValueStore\KeyValueFactory
159
    arguments: ['@service_container', '@settings']
160 161
  keyvalue.database:
    class: Drupal\Core\KeyValueStore\KeyValueDatabaseFactory
162
    arguments: ['@serialization.phpserialize', '@database']
163 164
  keyvalue.expirable:
    class: Drupal\Core\KeyValueStore\KeyValueExpirableFactory
165
    arguments: ['@service_container', '@settings']
166 167
  keyvalue.expirable.database:
    class: Drupal\Core\KeyValueStore\KeyValueDatabaseExpirableFactory
168
    arguments: ['@serialization.phpserialize', '@database']
169 170
    tags:
      - { name: needs_destruction }
171 172 173 174 175 176 177 178 179 180
  logger.factory:
    class: Drupal\Core\Logger\LoggerChannelFactory
    parent: container.trait
    tags:
      - { name: service_collector, tag: logger, call: addLogger }
  logger.channel.default:
    class: Drupal\Core\Logger\LoggerChannel
    factory_method: get
    factory_service: logger.factory
    arguments: ['system']
181 182 183 184 185
  logger.channel.image:
    class: Drupal\Core\Logger\LoggerChannel
    factory_method: get
    factory_service: logger.factory
    arguments: ['image']
186 187
  logger.log_message_parser:
    class: Drupal\Core\Logger\LogMessageParser
188 189 190 191 192 193 194 195

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

196
  settings:
197 198
    class: Drupal\Core\Site\Settings
    factory_class: Drupal\Core\Site\Settings
199
    factory_method: getInstance
200
  state:
201
    class: Drupal\Core\State\State
202
    arguments: ['@keyvalue']
203 204 205 206 207 208 209 210 211 212 213 214
  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 }
215
    arguments: [path_alias_whitelist, '@cache.default', '@lock', '@state', '@path.alias_storage']
216 217
  path.alias_manager:
    class: Drupal\Core\Path\AliasManager
218
    arguments: ['@path.alias_storage', '@path.alias_whitelist', '@language_manager', '@cache.data']
219
  http_client:
220
    class: Drupal\Core\Http\Client
221 222
    tags:
      - { name: service_collector, tag: http_client_subscriber, call: attach }
223 224
  theme.negotiator:
    class: Drupal\Core\Theme\ThemeNegotiator
225
    arguments: ['@access_check.theme']
226 227
    tags:
      - { name: service_collector, tag: theme_negotiator, call: addNegotiator }
228 229 230 231
  theme.negotiator.request_subscriber:
    class: Drupal\Core\EventSubscriber\ThemeNegotiatorRequestSubscriber
    tags:
      - { name: event_subscriber }
232 233 234 235 236 237 238
  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
239
    arguments: ['@csrf_token', '@config.factory', '@request_stack']
240 241
    tags:
      - { name: theme_negotiator, priority: 1000 }
242 243 244
  container.namespaces:
    class: ArrayObject
    arguments: [ '%container.namespaces%' ]
245 246 247 248
  container.trait:
    abstract: true
    calls:
      - [setContainer, ['@service_container']]
249 250
  default_plugin_manager:
    abstract: true
251
    arguments: ['@container.namespaces', '@cache.discovery', '@module_handler']
252
  module_handler:
253 254
    class: Drupal\Core\Extension\ModuleHandler
    arguments: ['%container.modules%', '@cache.bootstrap']
255 256
  theme_handler:
    class: Drupal\Core\Extension\ThemeHandler
257
    arguments: ['@config.factory', '@module_handler', '@state', '@info_parser', '@config.installer', '@router.builder']
258
  entity.manager:
259
    class: Drupal\Core\Entity\EntityManager
260
    arguments: ['@container.namespaces', '@module_handler', '@cache.discovery', '@language_manager', '@string_translation', '@class_resolver', '@typed_data_manager']
261
    parent: container.trait
262 263
    tags:
      - { name: plugin_manager_cache_clear }
264 265 266
  entity.form_builder:
    class: Drupal\Core\Entity\EntityFormBuilder
    arguments: ['@entity.manager', '@form_builder']
267 268
  plugin.manager.field.field_type:
    class: Drupal\Core\Field\FieldTypePluginManager
269
    arguments: ['@container.namespaces', '@cache.discovery', '@module_handler']
270 271
  plugin.manager.field.widget:
    class: Drupal\Core\Field\WidgetPluginManager
272
    arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@plugin.manager.field.field_type']
273 274
  plugin.manager.field.formatter:
    class: Drupal\Core\Field\FormatterPluginManager
275
    arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@plugin.manager.field.field_type']
276 277
  plugin.manager.archiver:
    class: Drupal\Core\Archiver\ArchiverManager
278
    parent: default_plugin_manager
279 280
  plugin.manager.action:
    class: Drupal\Core\Action\ActionManager
281
    arguments: ['@container.namespaces', '@cache.discovery', '@module_handler']
282 283 284
  plugin.manager.menu.link:
    class: Drupal\Core\Menu\MenuLinkManager
    arguments: ['@menu.tree_storage', '@menu_link.static.overrides', '@module_handler']
285 286
  menu.link_tree:
    class: Drupal\Core\Menu\MenuLinkTree
287
    arguments: ['@menu.tree_storage', '@plugin.manager.menu.link', '@router.route_provider', '@menu.active_trail', '@controller_resolver', '@cache.menu', '@current_route_match']
288 289 290 291 292 293 294 295 296
  menu.default_tree_manipulators:
    class: Drupal\Core\Menu\DefaultMenuLinkTreeManipulators
    arguments: ['@access_manager', '@current_user']
  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']
297 298
  plugin.manager.menu.local_action:
    class: Drupal\Core\Menu\LocalActionManager
299
    arguments: ['@controller_resolver', '@request_stack', '@router.route_provider', '@module_handler', '@cache.discovery', '@language_manager', '@access_manager', '@current_user']
300 301
  plugin.manager.menu.local_task:
    class: Drupal\Core\Menu\LocalTaskManager
302
    arguments: ['@controller_resolver', '@request_stack', '@router.route_provider', '@router.builder', '@module_handler', '@cache.discovery', '@language_manager', '@access_manager', '@current_user']
303 304
  plugin.manager.menu.contextual_link:
    class: Drupal\Core\Menu\ContextualLinkManager
305
    arguments: ['@controller_resolver', '@module_handler', '@cache.discovery', '@language_manager', '@access_manager', '@current_user', '@request_stack']
306 307 308
  plugin.manager.display_variant:
    class: Drupal\Core\Display\VariantManager
    parent: default_plugin_manager
309 310
  plugin.cache_clearer:
    class: Drupal\Core\Plugin\CachedDiscoveryClearer
311 312 313 314 315
  paramconverter.menu_link:
    class: Drupal\Core\ParamConverter\MenuLinkPluginConverter
    tags:
      - { name: paramconverter }
    arguments: ['@plugin.manager.menu.link']
316 317 318 319
  menu.tree_storage:
    class: Drupal\Core\Menu\MenuTreeStorage
    arguments: ['@database', '@cache.menu', 'menu_tree']
    public: false  # Private to plugin.manager.menu.link and menu.link_tree
320 321
    tags:
      - { name: backend_overridable }
322 323 324
  menu_link.static.overrides:
    class: Drupal\Core\Menu\StaticMenuLinkOverrides
    arguments: ['@config.factory']
325 326
  request_stack:
    class: Symfony\Component\HttpFoundation\RequestStack
327 328
    tags:
      - { name: persist }
329 330 331
  current_route_match:
     class: Drupal\Core\Routing\CurrentRouteMatch
     arguments: ['@request_stack']
332 333 334 335
  event_dispatcher:
    class: Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher
    arguments: ['@service_container']
  controller_resolver:
336
    class: Drupal\Core\Controller\ControllerResolver
337 338 339 340 341
    arguments: ['@class_resolver', '@logger.channel.default']
  class_resolver:
    class: Drupal\Core\DependencyInjection\ClassResolver
    calls:
      - [setContainer, ['@service_container']]
342 343 344
  title_resolver:
    class: Drupal\Core\Controller\TitleResolver
    arguments: ['@controller_resolver', '@string_translation']
345
  http_kernel:
346
    class: Symfony\Component\HttpKernel\HttpKernel
347
    arguments: ['@event_dispatcher', '@controller_resolver', '@request_stack']
348 349
  language_manager:
    class: Drupal\Core\Language\LanguageManager
350 351 352 353
    arguments: ['@language.default']
  language.default:
    class: Drupal\Core\Language\LanguageDefault
    arguments: ['%language.default_values%']
354 355
  string_translator.custom_strings:
    class: Drupal\Core\StringTranslation\Translator\CustomStrings
356
    arguments: ['@settings']
357 358 359 360
    tags:
      - { name: string_translator, priority: 30 }
  string_translation:
    class: Drupal\Core\StringTranslation\TranslationManager
361 362 363
    arguments: ['@language_manager']
    calls:
      - [initLanguageManager]
364 365
    tags:
      - { name: service_collector, tag: string_translator, call: addTranslator }
366
  database.replica:
367 368 369
    class: Drupal\Core\Database\Connection
    factory_class: Drupal\Core\Database\Database
    factory_method: getConnection
370
    arguments: [replica]
371
  typed_data_manager:
372
    class: Drupal\Core\TypedData\TypedDataManager
373
    parent: default_plugin_manager
374 375
    calls:
      - [setValidationConstraintManager, ['@validation.constraint']]
376 377
    tags:
      - { name: plugin_manager_cache_clear }
378 379
  validation.constraint:
    class: Drupal\Core\Validation\ConstraintManager
380
    parent: default_plugin_manager
381 382
  lock:
    class: Drupal\Core\Lock\DatabaseLockBackend
383
    arguments: ['@database']
384 385
    tags:
      - { name: backend_overridable }
386 387
  router.request_context:
    class: Symfony\Component\Routing\RequestContext
388 389
    tags:
      - { name: persist }
390 391
  router.admin_context:
    class: Drupal\Core\Routing\AdminContext
392
    arguments: ['@request_stack']
393 394
  router.route_provider:
    class: Drupal\Core\Routing\RouteProvider
395
    arguments: ['@database', '@router.builder', '@state']
396 397
    tags:
      - { name: event_subscriber }
398
      - { name: backend_overridable }
399 400 401 402 403
  router.route_preloader:
    class: Drupal\Core\Routing\RoutePreloader
    arguments: ['@router.route_provider', '@state', '@content_negotiation']
    tags:
      - { name: 'event_subscriber' }
404 405 406 407 408 409 410
  router.matcher.final_matcher:
    class: Drupal\Core\Routing\UrlMatcher
  router.matcher:
    class: Symfony\Cmf\Component\Routing\NestedMatcher\NestedMatcher
    arguments: ['@router.route_provider']
    calls:
      - [setFinalMatcher, ['@router.matcher.final_matcher']]
411 412
    tags:
      - { name: service_collector, tag: route_filter, call: addRouteFilter }
413
  url_generator:
414
    class: Drupal\Core\Routing\UrlGenerator
415
    arguments: ['@router.route_provider', '@path_processor_manager', '@route_processor_manager', '@config.factory', '@settings', '@logger.channel.default', '@request_stack']
416
    calls:
417
      - [setContext, ['@?router.request_context']]
418 419
  link_generator:
    class: Drupal\Core\Utility\LinkGenerator
420
    arguments: ['@url_generator', '@module_handler']
421 422
  router.dynamic:
    class: Symfony\Cmf\Component\Routing\DynamicRouter
423
    arguments: ['@router.request_context', '@router.matcher', '@url_generator']
424 425
    tags:
      - { name: service_collector, tag: route_enhancer, call: addRouteEnhancer }
426 427 428 429 430
  router:
    class: Symfony\Cmf\Component\Routing\ChainRouter
    calls:
      - [setContext, ['@router.request_context']]
      - [add, ['@router.dynamic']]
431 432 433 434 435
  router.path_roots_subscriber:
    class: Drupal\Core\EventSubscriber\PathRootsSubscriber
    arguments: ['@state']
    tags:
      - { name: event_subscriber }
436 437
  entity.query:
    class: Drupal\Core\Entity\Query\QueryFactory
438
    arguments: ['@entity.manager']
439 440 441 442
    calls:
      - [setContainer, ['@service_container']]
  entity.query.config:
    class: Drupal\Core\Config\Entity\Query\QueryFactory
443
    arguments: ['@config.storage', '@config.factory']
444 445 446
  entity.query.sql:
    class: Drupal\Core\Entity\Query\Sql\QueryFactory
    arguments: ['@database']
447 448
    tags:
      - { name: backend_overridable }
449 450 451
  entity.query.keyvalue:
    class: Drupal\Core\Entity\KeyValueStore\Query\QueryFactory
    arguments: ['@keyvalue']
452 453
  router.dumper:
    class: Drupal\Core\Routing\MatcherDumper
454
    arguments: ['@database', '@state']
455 456
    tags:
      - { name: backend_overridable }
457 458
  router.builder:
    class: Drupal\Core\Routing\RouteBuilder
459 460 461
    arguments: ['@router.dumper', '@lock', '@event_dispatcher', '@module_handler', '@controller_resolver', '@state']
  router.rebuild_subscriber:
    class: Drupal\Core\EventSubscriber\RouterRebuildSubscriber
462 463 464 465 466 467
    arguments: ['@router.builder']
    tags:
      - { name: event_subscriber }
  menu.rebuild_subscriber:
    class: Drupal\Core\EventSubscriber\MenuRouterRebuildSubscriber
    arguments: ['@lock', '@plugin.manager.menu.link']
468 469
    tags:
      - { name: event_subscriber }
470 471
  path.alias_storage:
    class: Drupal\Core\Path\AliasStorage
472
    arguments: ['@database', '@module_handler']
473 474
    tags:
      - { name: backend_overridable }
475 476 477
  path.matcher:
    class: Drupal\Core\Path\PathMatcher
    arguments: ['@config.factory']
478 479 480
  path.validator:
    class: Drupal\Core\Path\PathValidator
    arguments: ['@router', '@router.route_provider', '@request_stack', '@access_manager', '@current_user']
481

482 483 484 485 486 487 488 489 490
# 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]
491 492 493 494 495 496 497
  accept_header_matcher:
    class: Drupal\Core\Routing\AcceptHeaderMatcher
    arguments: ['@content_negotiation']
    tags:
      - { name: route_filter }
  content_type_header_matcher:
    class: Drupal\Core\Routing\ContentTypeHeaderMatcher
498 499 500 501
    tags:
      - { name: route_filter }
  paramconverter_manager:
    class: Drupal\Core\ParamConverter\ParamConverterManager
502 503
    tags:
      - { name: service_collector, tag: paramconverter, call: addConverter }
504 505 506 507 508
  paramconverter_subscriber:
    class: Drupal\Core\EventSubscriber\ParamConverterSubscriber
    tags:
      - { name: event_subscriber }
    arguments: ['@paramconverter_manager']
509 510 511 512
  paramconverter.entity:
    class: Drupal\Core\ParamConverter\EntityConverter
    tags:
      - { name: paramconverter }
513
    arguments: ['@entity.manager']
514 515 516 517 518 519
  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']
520 521 522 523 524
  route_subscriber.module:
    class: Drupal\Core\EventSubscriber\ModuleRouteSubscriber
    tags:
      - { name: event_subscriber }
    arguments: ['@module_handler']
525 526 527
  resolver_manager.entity:
    class: Drupal\Core\Entity\EntityResolverManager
    arguments: ['@entity.manager', '@controller_resolver', '@class_resolver']
528 529 530 531
  route_subscriber.entity:
    class: Drupal\Core\EventSubscriber\EntityRouteAlterSubscriber
    tags:
      - { name: event_subscriber }
532
    arguments: ['@resolver_manager.entity']
533 534 535 536 537
  reverse_proxy_subscriber:
    class: Drupal\Core\EventSubscriber\ReverseProxySubscriber
    tags:
      - { name: event_subscriber }
    arguments: ['@settings']
538 539 540 541
  ajax_response_subscriber:
    class: Drupal\Core\EventSubscriber\AjaxResponseSubscriber
    tags:
      - { name: event_subscriber }
542 543 544 545 546 547
  route_enhancer.param_conversion:
    class: Drupal\Core\Routing\Enhancer\ParamConversionEnhancer
    arguments: ['@paramconverter_manager']
    tags:
      - { name: route_enhancer }
      - { name: event_subscriber }
548 549 550 551
  route_enhancer.authentication:
    class: Drupal\Core\Routing\Enhancer\AuthenticationEnhancer
    tags:
      - { name: route_enhancer, priority: 1000 }
552
    arguments: ['@authentication', '@current_user']
553 554
  route_enhancer.entity:
    class: Drupal\Core\Entity\Enhancer\EntityRouteEnhancer
555
    arguments: ['@controller_resolver', '@entity.manager', '@form_builder']
556
    tags:
557
      - { name: route_enhancer, priority: 20 }
558 559 560 561 562 563 564
  route_content_controller_subscriber:
    class: Drupal\Core\EventSubscriber\ContentControllerSubscriber
    arguments: ['@content_negotiation']
    tags:
      - { name: event_subscriber }
  route_content_form_controller_subscriber:
    class: Drupal\Core\EventSubscriber\ContentFormControllerSubscriber
565
    arguments: ['@class_resolver', '@controller_resolver', '@form_builder']
566
    parent: container.trait
567
    tags:
568
      - { name: event_subscriber }
569 570 571 572
  route_special_attributes_subscriber:
    class: Drupal\Core\EventSubscriber\SpecialAttributesRouteSubscriber
    tags:
      - { name: event_subscriber }
573 574 575 576
  route_http_method_subscriber:
    class: Drupal\Core\EventSubscriber\RouteMethodSubscriber
    tags:
      - { name: event_subscriber }
577 578
  controller.page:
    class: Drupal\Core\Controller\HtmlPageController
579
    arguments: ['@controller_resolver', '@title_resolver', '@url_generator']
580 581
  controller.ajax:
    class: Drupal\Core\Controller\AjaxController
582
    arguments: ['@controller_resolver', '@ajax_response_renderer']
583 584
  controller.dialog:
    class: Drupal\Core\Controller\DialogController
585
    arguments: ['@controller_resolver', '@title_resolver']
586 587
  ajax_response_renderer:
    class: Drupal\Core\Ajax\AjaxResponseRenderer
588 589 590 591
  router_listener:
    class: Symfony\Component\HttpKernel\EventListener\RouterListener
    tags:
      - { name: event_subscriber }
592
    arguments: ['@router', '@router.request_context', NULL, '@request_stack']
593 594 595 596 597 598
  content_negotiation:
    class: Drupal\Core\ContentNegotiation
  view_subscriber:
    class: Drupal\Core\EventSubscriber\ViewSubscriber
    tags:
      - { name: event_subscriber }
599
    arguments: ['@content_negotiation', '@title_resolver', '@ajax_response_renderer']
600 601 602 603
  html_view_subscriber:
    class: Drupal\Core\EventSubscriber\HtmlViewSubscriber
    tags:
      - { name: event_subscriber }
604 605 606 607
    arguments: ['@html_fragment_renderer', '@html_page_renderer']
  html_fragment_renderer:
    class: Drupal\Core\Page\DefaultHtmlFragmentRenderer
    arguments: ['@language_manager']
608 609
  html_page_renderer:
    class: Drupal\Core\Page\DefaultHtmlPageRenderer
610 611 612 613 614
  private_key:
    class: Drupal\Core\PrivateKey
    arguments: ['@state']
  csrf_token:
    class: Drupal\Core\Access\CsrfTokenGenerator
615
    arguments: ['@private_key']
616 617
  access_arguments_resolver:
    class: Drupal\Core\Access\AccessArgumentsResolver
618 619
  access_manager:
    class: Drupal\Core\Access\AccessManager
620
    arguments: ['@router.route_provider', '@url_generator', '@paramconverter_manager', '@access_arguments_resolver', '@request_stack']
621 622 623 624
    calls:
      - [setContainer, ['@service_container']]
  access_subscriber:
    class: Drupal\Core\EventSubscriber\AccessSubscriber
625 626 627 628 629 630 631
    arguments: ['@access_manager', '@current_user']
    calls:
      - [setCurrentUser, ['@?current_user']]
    tags:
      - { name: event_subscriber }
  access_route_subscriber:
    class: Drupal\Core\EventSubscriber\AccessRouteSubscriber
632 633 634 635 636 637
    tags:
      - { name: event_subscriber }
    arguments: ['@access_manager']
  access_check.default:
    class: Drupal\Core\Access\DefaultAccessCheck
    tags:
638
      - { name: access_check, applies_to: _access }
639 640 641
  access_check.entity:
    class: Drupal\Core\Entity\EntityAccessCheck
    tags:
642
      - { name: access_check, applies_to: _entity_access }
643 644
  access_check.entity_create:
    class: Drupal\Core\Entity\EntityCreateAccessCheck
645
    arguments: ['@entity.manager']
646
    tags:
647
      - { name: access_check, applies_to: _entity_create_access }
648 649 650
  access_check.theme:
    class: Drupal\Core\Theme\ThemeAccessCheck
    tags:
651
      - { name: access_check, applies_to: _access_theme }
652 653
  access_check.custom:
    class: Drupal\Core\Access\CustomAccessCheck
654
    arguments: ['@controller_resolver', '@access_arguments_resolver']
655
    tags:
656
      - { name: access_check, applies_to: _custom_access }
657 658 659
  access_check.csrf:
    class: Drupal\Core\Access\CsrfAccessCheck
    tags:
660
      - { name: access_check, applies_to: _csrf_token }
661
    arguments: ['@csrf_token']
662 663 664
  maintenance_mode:
    class: Drupal\Core\Site\MaintenanceMode
    arguments: ['@state', '@current_user']
665 666
  maintenance_mode_subscriber:
    class: Drupal\Core\EventSubscriber\MaintenanceModeSubscriber
667
    arguments: ['@maintenance_mode', '@config.factory', '@string_translation', '@url_generator', '@current_user']
668 669 670 671 672 673
    tags:
      - { name: event_subscriber }
  path_subscriber:
    class: Drupal\Core\EventSubscriber\PathSubscriber
    tags:
      - { name: event_subscriber }
674
    arguments: ['@path.alias_manager', '@path_processor_manager']
675 676 677 678
  finish_response_subscriber:
    class: Drupal\Core\EventSubscriber\FinishResponseSubscriber
    tags:
      - { name: event_subscriber }
679
    arguments: ['@language_manager', '@config.factory']
680 681 682 683 684
  redirect_response_subscriber:
    class: Drupal\Core\EventSubscriber\RedirectResponseSubscriber
    arguments: ['@url_generator']
    tags:
      - { name: event_subscriber }
685 686 687 688 689
  request_close_subscriber:
    class: Drupal\Core\EventSubscriber\RequestCloseSubscriber
    tags:
      - { name: event_subscriber }
    arguments: ['@module_handler']
690 691 692 693 694 695 696 697
  config_import_subscriber:
    class: Drupal\Core\EventSubscriber\ConfigImportSubscriber
    tags:
      - { name: event_subscriber }
  config_snapshot_subscriber:
    class: Drupal\Core\EventSubscriber\ConfigSnapshotSubscriber
    tags:
      - { name: event_subscriber }
698
    arguments: ['@config.manager', '@config.storage', '@config.storage.snapshot']
699
  exception_controller:
700
    class: Drupal\Core\Controller\ExceptionController
701
    arguments: ['@content_negotiation', '@title_resolver', '@html_page_renderer', '@html_fragment_renderer', '@string_translation', '@url_generator']
702 703 704
    calls:
      - [setContainer, ['@service_container']]
  exception_listener:
705
    class: Drupal\Core\EventSubscriber\ExceptionListener
706 707 708
    tags:
      - { name: event_subscriber }
    arguments: [['@exception_controller', execute]]
709 710
  route_processor_manager:
    class: Drupal\Core\RouteProcessor\RouteProcessorManager
711 712
    tags:
      - { name: service_collector, tag: route_processor_outbound, call: addOutbound }
713 714
  path_processor_manager:
    class: Drupal\Core\PathProcessor\PathProcessorManager
715 716 717
    tags:
      - { name: service_collector, tag: path_processor_inbound, call: addInbound }
      - { name: service_collector, tag: path_processor_outbound, call: addOutbound }
718 719 720 721 722 723 724 725
  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 }
726
      - { name: path_processor_outbound, priority: 200 }
727 728 729 730 731
    arguments: ['@config.factory']
  path_processor_alias:
    class: Drupal\Core\PathProcessor\PathProcessorAlias
    tags:
      - { name: path_processor_inbound, priority: 100 }
732
      - { name: path_processor_outbound, priority: 300 }
733
    arguments: ['@path.alias_manager']
734
  route_processor_csrf:
735 736 737 738
    class: Drupal\Core\Access\RouteProcessorCsrf
    tags:
      - { name: route_processor_outbound }
    arguments: ['@csrf_token']
739 740 741 742
  transliteration:
    class: Drupal\Core\Transliteration\PHPTransliteration
  flood:
    class: Drupal\Core\Flood\DatabaseBackend
743
    arguments: ['@database', '@request_stack']
744 745
    tags:
      - { name: backend_overridable }
746 747
  plugin.manager.mail:
    class: Drupal\Core\Mail\MailManager
748
    arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@config.factory']
749 750
  plugin.manager.condition:
    class: Drupal\Core\Condition\ConditionManager
751
    parent: default_plugin_manager
752 753 754 755 756 757 758 759 760 761 762
  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:
763
    class: Drupal\Core\ImageToolkit\ImageToolkitManager
764
    arguments: ['@container.namespaces', '@cache.discovery', '@config.factory', '@module_handler', '@image.toolkit.operation.manager', '@logger.channel.image']
765 766
  image.toolkit.operation.manager:
    class: Drupal\Core\ImageToolkit\ImageToolkitOperationManager
767
    arguments: ['@logger.channel.image']
768
    parent: default_plugin_manager
769 770
  image.factory:
    class: Drupal\Core\Image\ImageFactory
771
    arguments: ['@image.toolkit.manager']
772 773
  breadcrumb:
    class: Drupal\Core\Breadcrumb\BreadcrumbManager
774
    arguments: ['@module_handler']
775 776
    tags:
      - { name: service_collector, tag: breadcrumb_builder, call: addBuilder }
777 778
  token:
    class: Drupal\Core\Utility\Token
779
    arguments: ['@module_handler', '@cache.discovery', '@language_manager']
780
  batch.storage:
781
    class: Drupal\Core\Batch\BatchStorage
782
    arguments: ['@database']
783 784
    tags:
      - { name: backend_overridable }
785 786
  replica_database_ignore__subscriber:
    class: Drupal\Core\EventSubscriber\ReplicaDatabaseIgnoreSubscriber
787 788
    tags:
      - {name: event_subscriber}
789 790 791
  country_manager:
    class: Drupal\Core\Locale\CountryManager
    arguments: ['@module_handler']
792 793
  date.formatter:
    class: Drupal\Core\Datetime\DateFormatter
794
    arguments: ['@entity.manager', '@language_manager', '@string_translation', '@config.factory']
795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848
  feed.bridge.reader:
    class: Drupal\Component\Bridge\ZfExtensionManagerSfContainer
    calls:
      - [setContainer, ['@service_container']]
    arguments: ['feed.reader.']
  feed.bridge.writer:
    class: Drupal\Component\Bridge\ZfExtensionManagerSfContainer
    calls:
      - [setContainer, ['@service_container']]
    arguments: ['feed.writer.']
# Zend Feed reader plugins
  feed.reader.dublincoreentry:
    class: Zend\Feed\Reader\Extension\DublinCore\Entry
  feed.reader.dublincorefeed:
    class: Zend\Feed\Reader\Extension\DublinCore\Feed
  feed.reader.contententry:
    class: Zend\Feed\Reader\Extension\Content\Entry
  feed.reader.atomentry:
    class: Zend\Feed\Reader\Extension\Atom\Entry
  feed.reader.atomfeed:
    class: Zend\Feed\Reader\Extension\Atom\Feed
  feed.reader.slashentry:
    class: Zend\Feed\Reader\Extension\Slash\Entry
  feed.reader.wellformedwebentry:
    class: Zend\Feed\Reader\Extension\WellFormedWeb\Entry
  feed.reader.threadentry:
    class: Zend\Feed\Reader\Extension\Thread\Entry
  feed.reader.podcastentry:
    class: Zend\Feed\Reader\Extension\Podcast\Entry
  feed.reader.podcastfeed:
    class: Zend\Feed\Reader\Extension\Podcast\Feed
# Zend Feed writer plugins
  feed.writer.atomrendererfeed:
    class: Zend\Feed\Writer\Extension\Atom\Renderer\Feed
  feed.writer.contentrendererentry:
    class: Zend\Feed\Writer\Extension\Content\Renderer\Entry
  feed.writer.dublincorerendererentry:
    class: Zend\Feed\Writer\Extension\DublinCore\Renderer\Entry
  feed.writer.dublincorerendererfeed:
    class: Zend\Feed\Writer\Extension\DublinCore\Renderer\Feed
  feed.writer.itunesentry:
    class: Zend\Feed\Writer\Extension\ITunes\Entry
  feed.writer.itunesfeed:
    class: Zend\Feed\Writer\Extension\ITunes\Feed
  feed.writer.itunesrendererentry:
    class: Zend\Feed\Writer\Extension\ITunes\Renderer\Entry
  feed.writer.itunesrendererfeed:
    class: Zend\Feed\Writer\Extension\ITunes\Renderer\Feed
  feed.writer.slashrendererentry:
    class: Zend\Feed\Writer\Extension\Slash\Renderer\Entry
  feed.writer.threadingrendererentry:
    class: Zend\Feed\Writer\Extension\Threading\Renderer\Entry
  feed.writer.wellformedwebrendererentry:
    class: Zend\Feed\Writer\Extension\WellFormedWeb\Renderer\Entry
849 850
  theme.registry:
    class: Drupal\Core\Theme\Registry
851
    arguments: ['@cache.default', '@lock', '@module_handler']
852 853
    tags:
      - { name: needs_destruction }
854 855 856 857 858 859 860
  authentication:
    class: Drupal\Core\Authentication\AuthenticationManager
  authentication_subscriber:
    class: Drupal\Core\EventSubscriber\AuthenticationSubscriber
    tags:
      - { name: event_subscriber }
    arguments: ['@authentication']
861
  current_user:
862
    class: Drupal\Core\Session\AccountProxy
863
    arguments: ['@authentication', '@request_stack']
864 865
  session_manager:
    class: Drupal\Core\Session\SessionManager
866
    arguments: ['@request_stack', '@database', '@session_manager.metadata_bag', '@settings']
867 868
    tags:
      - { name: backend_overridable }
869 870 871
  session_manager.metadata_bag:
    class: Drupal\Core\Session\MetadataBag
    arguments: ['@settings']
872 873
  asset.css.collection_renderer:
    class: Drupal\Core\Asset\CssCollectionRenderer
874
    arguments: [ '@state' ]
875 876 877 878 879 880 881 882 883 884 885
  asset.css.collection_optimizer:
    class: Drupal\Core\Asset\CssCollectionOptimizer
    arguments: [ '@asset.css.collection_grouper', '@asset.css.optimizer', '@asset.css.dumper', '@state' ]
  asset.css.optimizer:
    class: Drupal\Core\Asset\CssOptimizer
  asset.css.collection_grouper:
    class: Drupal\Core\Asset\CssCollectionGrouper
  asset.css.dumper:
    class: Drupal\Core\Asset\AssetDumper
  asset.js.collection_renderer:
    class: Drupal\Core\Asset\JsCollectionRenderer
886
    arguments: [ '@state' ]
887 888 889 890 891 892 893 894 895
  asset.js.collection_optimizer:
    class: Drupal\Core\Asset\JsCollectionOptimizer
    arguments: [ '@asset.js.collection_grouper', '@asset.js.optimizer', '@asset.js.dumper', '@state' ]
  asset.js.optimizer:
    class: Drupal\Core\Asset\JsOptimizer
  asset.js.collection_grouper:
    class: Drupal\Core\Asset\JsCollectionGrouper
  asset.js.dumper:
    class: Drupal\Core\Asset\AssetDumper
896 897
  library.discovery:
    class: Drupal\Core\Asset\LibraryDiscovery
898 899 900 901 902 903 904 905 906
    arguments: ['@library.discovery.collector']
  library.discovery.collector:
    class: Drupal\Core\Asset\LibraryDiscoveryCollector
    arguments: ['@cache.discovery', '@lock', '@library.discovery.parser']
    tags:
      - { name: needs_destruction }
  library.discovery.parser:
    class: Drupal\Core\Asset\LibraryDiscoveryParser
    arguments: ['@module_handler']
907 908
  info_parser:
    class: Drupal\Core\Extension\InfoParser
909 910 911
  element_info:
    class: Drupal\Core\Render\ElementInfo
    arguments: ['@module_handler']
912 913 914 915 916 917 918 919 920
  file.mime_type.guesser:
    class: Drupal\Core\File\MimeType\MimeTypeGuesser
    tags:
      - { name: service_collector, tag: mime_type_guesser, call: addGuesser }
  file.mime_type.guesser.extension:
    class: Drupal\Core\File\MimeType\ExtensionMimeTypeGuesser
    arguments: ['@module_handler']
    tags:
      - { name: mime_type_guesser }