core.services.yml 62.1 KB
Newer Older
1
parameters:
2 3 4 5 6 7 8 9 10
  session.storage.options:
    gc_probability: 1
    gc_divisor: 100
    gc_maxlifetime: 200000
    cookie_lifetime: 2000000
  twig.config:
    debug: false
    auto_reload: null
    cache: true
11
  renderer.config:
12
    required_cache_contexts: ['languages:language_interface', 'theme', 'user.permissions']
13 14 15 16
    auto_placeholder_conditions:
      max-age: 0
      contexts: ['session', 'user']
      tags: []
17 18
  factory.keyvalue:
    default: keyvalue.database
19
  http.response.debug_cacheability_headers: false
20 21
  factory.keyvalue.expirable:
    default: keyvalue.expirable.database
22 23 24 25 26 27 28 29 30 31 32 33 34 35
  filter_protocols:
    - http
    - https
    - ftp
    - news
    - nntp
    - tel
    - telnet
    - mailto
    - irc
    - ssh
    - sftp
    - webcal
    - rtsp
36
services:
37 38
  # Simple cache contexts, directly derived from the request context.
  cache_context.ip:
39
    class: Drupal\Core\Cache\Context\IpCacheContext
40 41 42 43
    arguments: ['@request_stack']
    tags:
      - { name: cache.context }
  cache_context.headers:
44
    class: Drupal\Core\Cache\Context\HeadersCacheContext
45 46 47 48
    arguments: ['@request_stack']
    tags:
      - { name: cache.context }
  cache_context.cookies:
49
    class: Drupal\Core\Cache\Context\CookiesCacheContext
50 51 52
    arguments: ['@request_stack']
    tags:
      - { name: cache.context }
53 54 55 56 57
  cache_context.session:
    class: Drupal\Core\Cache\Context\SessionCacheContext
    arguments: ['@request_stack']
    tags:
      - { name: cache.context}
58 59 60 61 62
  cache_context.session.exists:
    class: Drupal\Core\Cache\Context\SessionExistsCacheContext
    arguments: ['@session_configuration', '@request_stack']
    tags:
      - { name: cache.context}
63
  cache_context.request_format:
64
    class: Drupal\Core\Cache\Context\RequestFormatCacheContext
65 66 67
    arguments: ['@request_stack']
    tags:
      - { name: cache.context }
68
  cache_context.url:
69
    class: Drupal\Core\Cache\Context\UrlCacheContext
70
    arguments: ['@request_stack']
71
    tags:
72
      - { name: cache.context }
73
  cache_context.url.site:
74
    class: Drupal\Core\Cache\Context\SiteCacheContext
75
    arguments: ['@request_stack']
76 77
    tags:
      - { name: cache.context }
78 79 80 81 82
  cache_context.url.path:
    class: Drupal\Core\Cache\Context\PathCacheContext
    arguments: ['@request_stack']
    tags:
      - { name: cache.context }
83 84 85 86 87
  cache_context.url.path.parent:
    class: Drupal\Core\Cache\Context\PathParentCacheContext
    arguments: ['@request_stack']
    tags:
      - { name: cache.context }
88
  cache_context.url.query_args:
89
    class: Drupal\Core\Cache\Context\QueryArgsCacheContext
90 91 92 93
    arguments: ['@request_stack']
    tags:
      - { name: cache.context }
  cache_context.url.query_args.pagers:
94
    class: Drupal\Core\Cache\Context\PagersCacheContext
95 96 97 98 99 100
    arguments: ['@request_stack']
    tags:
      - { name: cache.context }

  # Complex cache contexts, that depend on the routing system.
  cache_context.route:
101
    class: Drupal\Core\Cache\Context\RouteCacheContext
102 103 104 105
    arguments: ['@current_route_match']
    tags:
      - { name: cache.context }
  cache_context.route.name:
106
    class: Drupal\Core\Cache\Context\RouteNameCacheContext
107 108 109 110
    arguments: ['@current_route_match']
    tags:
      - { name: cache.context }
  cache_context.route.menu_active_trails:
111
    class: Drupal\Core\Cache\Context\MenuActiveTrailsCacheContext
112 113 114 115 116 117 118 119 120
    calls:
      - [setContainer, ['@service_container']]
    tags:
      - { name: cache.context }

  # Complex cache contexts, that may be calculated from a combination of
  # multiple aspects of the request context plus additional logic. Hence they
  # are their own roots.
  cache_context.user:
121
    class: Drupal\Core\Cache\Context\UserCacheContext
122 123 124
    arguments: ['@current_user']
    tags:
      - { name: cache.context}
125
  cache_context.user.permissions:
126
    class: Drupal\Core\Cache\Context\AccountPermissionsCacheContext
127 128 129
    arguments: ['@current_user', '@user_permissions_hash_generator']
    tags:
      - { name: cache.context}
130
  cache_context.user.roles:
131
    class: Drupal\Core\Cache\Context\UserRolesCacheContext
132
    arguments: ['@current_user']
133 134
    tags:
      - { name: cache.context}
135
  cache_context.user.is_super_user:
136
    class: Drupal\Core\Cache\Context\IsSuperUserCacheContext
137 138 139 140
    arguments: ['@current_user']
    tags:
      - { name: cache.context}
  cache_context.languages:
141
    class: Drupal\Core\Cache\Context\LanguagesCacheContext
142 143 144 145
    arguments: ['@language_manager']
    tags:
      - { name: cache.context}
  cache_context.theme:
146
    class: Drupal\Core\Cache\Context\ThemeCacheContext
147
    arguments: ['@theme.manager']
148 149
    tags:
      - { name: cache.context}
150
  cache_context.timezone:
151
    class: Drupal\Core\Cache\Context\TimeZoneCacheContext
152 153
    tags:
      - { name: cache.context}
154 155 156 157

  cache_factory:
    class: Drupal\Core\Cache\CacheFactory
    arguments: ['@settings', '%cache_default_bin_backends%']
158 159
    calls:
      - [setContainer, ['@service_container']]
160
  cache_contexts_manager:
161
    class: Drupal\Core\Cache\Context\CacheContextsManager
162
    arguments: ['@service_container', '%cache_contexts%' ]
163 164 165 166 167 168 169 170 171 172 173 174
  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}
175 176 177 178 179
  cache.backend.chainedfast:
    class: Drupal\Core\Cache\ChainedFastBackendFactory
    arguments: ['@settings']
    calls:
      - [setContainer, ['@service_container']]
180 181
  cache.backend.database:
    class: Drupal\Core\Cache\DatabaseBackendFactory
182
    arguments: ['@database', '@cache_tags.invalidator.checksum']
183 184
  cache.backend.apcu:
    class: Drupal\Core\Cache\ApcuBackendFactory
185
    arguments: ['@app.root', '@site.path', '@cache_tags.invalidator.checksum']
186 187
  cache.backend.php:
    class: Drupal\Core\Cache\PhpBackendFactory
188
    arguments: ['@cache_tags.invalidator.checksum']
189 190 191 192 193 194 195 196 197
  cache.backend.memory:
    class: Drupal\Core\Cache\MemoryBackendFactory
  # A special cache bin that does not persist beyond the length of the request.
  cache.static:
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
      - { name: cache.bin, default_backend: cache.backend.memory }
    factory: cache_factory:get
    arguments: [static]
198 199 200
  cache.bootstrap:
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
201
      - { name: cache.bin, default_backend: cache.backend.chainedfast }
202
    factory: cache_factory:get
203
    arguments: [bootstrap]
204 205 206
  cache.config:
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
207
      - { name: cache.bin, default_backend: cache.backend.chainedfast }
208
    factory: cache_factory:get
209
    arguments: [config]
210
  cache.default:
211 212 213
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
      - { name: cache.bin }
214
    factory: cache_factory:get
215
    arguments: [default]
216 217 218 219
  cache.entity:
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
      - { name: cache.bin }
220
    factory: cache_factory:get
221
    arguments: [entity]
222 223 224 225
  cache.menu:
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
      - { name: cache.bin }
226
    factory: cache_factory:get
227
    arguments: [menu]
228
  cache.render:
229 230 231
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
      - { name: cache.bin }
232
    factory: cache_factory:get
233 234
    arguments: [render]
  cache.data:
235 236 237
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
      - { name: cache.bin }
238
    factory: cache_factory:get
239
    arguments: [data]
240 241 242
  cache.discovery:
    class: Drupal\Core\Cache\CacheBackendInterface
    tags:
243
      - { name: cache.bin, default_backend: cache.backend.chainedfast }
244
    factory: cache_factory:get
245
    arguments: [discovery]
246 247 248 249
  cache_router_rebuild_subscriber:
    class: Drupal\Core\EventSubscriber\CacheRouterRebuildSubscriber
    tags:
      - { name: event_subscriber }
250 251
  page_cache_request_policy:
    class: Drupal\Core\PageCache\DefaultRequestPolicy
252
    arguments: ['@session_configuration']
253 254 255 256 257 258
    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}
259
    lazy: true
260 261 262 263
  page_cache_kill_switch:
    class: Drupal\Core\PageCache\ResponsePolicy\KillSwitch
    tags:
      - { name: page_cache_response_policy }
264
      - { name: dynamic_page_cache_response_policy }
265 266 267 268 269 270
  page_cache_no_cache_routes:
    class: Drupal\Core\PageCache\ResponsePolicy\DenyNoCacheRoutes
    arguments: ['@current_route_match']
    public: false
    tags:
      - { name: page_cache_response_policy }
271
      - { name: dynamic_page_cache_response_policy }
272 273 274 275 276
  page_cache_no_server_error:
    class: Drupal\Core\PageCache\ResponsePolicy\NoServerError
    public: false
    tags:
      - { name: page_cache_response_policy }
277
      - { name: dynamic_page_cache_response_policy }
278 279
  config.manager:
    class: Drupal\Core\Config\ConfigManager
280
    arguments: ['@entity.manager', '@config.factory', '@config.typed', '@string_translation', '@config.storage', '@event_dispatcher']
281 282 283
  config.factory:
    class: Drupal\Core\Config\ConfigFactory
    tags:
284
      - { name: event_subscriber }
285
      - { name: service_collector, tag: 'config.factory.override', call: addOverride }
286
    arguments: ['@config.storage', '@event_dispatcher', '@config.typed']
287 288 289 290
  config.importer_subscriber:
    class: Drupal\Core\Config\Importer\FinalMissingContentSubscriber
    tags:
      - { name: event_subscriber }
291 292
  config.installer:
    class: Drupal\Core\Config\ConfigInstaller
293
    arguments: ['@config.factory', '@config.storage', '@config.typed', '@config.manager', '@event_dispatcher']
294
    lazy: true
295
  config.storage:
296 297
    class: Drupal\Core\Config\CachedStorage
    arguments: ['@config.storage.active', '@cache.config']
298 299 300
  config.storage.active:
    class: Drupal\Core\Config\DatabaseStorage
    arguments: ['@database', 'config']
301
    public: false
302 303
    tags:
      - { name: backend_overridable }
304 305
  # @deprecated in Drupal 8.0.x and will be removed before 9.0.0. Use
  #   config.storage.sync instead.
306 307
  config.storage.staging:
    class: Drupal\Core\Config\FileStorage
308 309 310
    factory: Drupal\Core\Config\FileStorageFactory::getSync
  config.storage.sync:
    alias: config.storage.staging
311 312 313
  config.storage.snapshot:
    class: Drupal\Core\Config\DatabaseStorage
    arguments: ['@database', config_snapshot]
314 315
    tags:
      - { name: backend_overridable }
316
  config.storage.schema:
317 318
    class: Drupal\Core\Config\ExtensionInstallStorage
    arguments: ['@config.storage', 'config/schema']
319 320
  config.typed:
    class: Drupal\Core\Config\TypedConfigManager
321 322 323
    arguments: ['@config.storage', '@config.storage.schema', '@cache.discovery', '@module_handler']
    tags:
      - { name: plugin_manager_cache_clear }
324 325 326
  context.handler:
    class: Drupal\Core\Plugin\Context\ContextHandler
    arguments: ['@typed_data_manager']
327 328 329
  context.repository:
    class: Drupal\Core\Plugin\Context\LazyContextRepository
    arguments: ['@service_container']
330 331
  cron:
    class: Drupal\Core\Cron
332
    arguments: ['@module_handler', '@lock', '@queue', '@state', '@account_switcher', '@logger.channel.cron', '@plugin.manager.queue_worker']
333
    lazy: true
334 335 336
  diff.formatter:
    class: Drupal\Core\Diff\DiffFormatter
    arguments: ['@config.factory']
337 338
  database:
    class: Drupal\Core\Database\Connection
339
    factory: Drupal\Core\Database\Database::getConnection
340
    arguments: [default]
341 342 343
  file_system:
    class: Drupal\Core\File\FileSystem
    arguments: ['@stream_wrapper_manager', '@settings', '@logger.channel.file']
344 345
  form_builder:
    class: Drupal\Core\Form\FormBuilder
346
    arguments: ['@form_validator', '@form_submitter', '@form_cache', '@module_handler', '@event_dispatcher', '@request_stack', '@class_resolver', '@element_info', '@theme.manager', '@?csrf_token']
347 348
  form_validator:
    class: Drupal\Core\Form\FormValidator
349
    arguments: ['@request_stack', '@string_translation', '@csrf_token', '@logger.channel.form', '@form_error_handler']
350 351 352
  form_submitter:
    class: Drupal\Core\Form\FormSubmitter
    arguments: ['@request_stack', '@url_generator']
353 354
  form_error_handler:
    class: Drupal\Core\Form\FormErrorHandler
355 356
  form_cache:
    class: Drupal\Core\Form\FormCache
357
    arguments: ['@app.root', '@keyvalue.expirable', '@module_handler', '@current_user', '@csrf_token', '@logger.channel.form', '@request_stack', '@page_cache_request_policy']
358
    public: false  # Private to form_builder
359 360
  keyvalue:
    class: Drupal\Core\KeyValueStore\KeyValueFactory
361
    arguments: ['@service_container', '%factory.keyvalue%']
362 363
  keyvalue.database:
    class: Drupal\Core\KeyValueStore\KeyValueDatabaseFactory
364
    arguments: ['@serialization.phpserialize', '@database']
365 366
  keyvalue.expirable:
    class: Drupal\Core\KeyValueStore\KeyValueExpirableFactory
367
    arguments: ['@service_container', '%factory.keyvalue.expirable%']
368 369
  keyvalue.expirable.database:
    class: Drupal\Core\KeyValueStore\KeyValueDatabaseExpirableFactory
370
    arguments: ['@serialization.phpserialize', '@database']
371 372 373 374 375
  logger.factory:
    class: Drupal\Core\Logger\LoggerChannelFactory
    parent: container.trait
    tags:
      - { name: service_collector, tag: logger, call: addLogger }
376 377
  logger.channel_base:
    abstract: true
378
    class: Drupal\Core\Logger\LoggerChannel
379
    factory: logger.factory:get
380 381
  logger.channel.default:
    parent: logger.channel_base
382
    arguments: ['system']
383
  logger.channel.php:
384
    parent: logger.channel_base
385
    arguments: ['php']
386
  logger.channel.image:
387
    parent: logger.channel_base
388
    arguments: ['image']
389
  logger.channel.cron:
390
    parent: logger.channel_base
391
    arguments: ['cron']
392 393
  logger.channel.file:
    class: Drupal\Core\Logger\LoggerChannel
394
    factory: logger.factory:get
395
    arguments: ['file']
396
  logger.channel.form:
397
    parent: logger.channel_base
398
    arguments: ['form']
399 400
  logger.log_message_parser:
    class: Drupal\Core\Logger\LogMessageParser
401 402 403 404 405 406 407 408

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

409
  settings:
410
    class: Drupal\Core\Site\Settings
411
    factory: Drupal\Core\Site\Settings::getInstance
412
  state:
413
    class: Drupal\Core\State\State
414
    arguments: ['@keyvalue']
415 416 417 418 419 420 421 422 423 424 425 426
  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 }
427
    arguments: [path_alias_whitelist, '@cache.bootstrap', '@lock', '@state', '@path.alias_storage']
428 429
  path.alias_manager:
    class: Drupal\Core\Path\AliasManager
430
    arguments: ['@path.alias_storage', '@path.alias_whitelist', '@language_manager', '@cache.data']
431 432 433
  path.current:
    class: Drupal\Core\Path\CurrentPathStack
    arguments: ['@request_stack']
434 435 436 437 438 439 440 441 442
  http_handler_stack:
    class: GuzzleHttp\HandlerStack
    public: false
    factory: GuzzleHttp\HandlerStack::create
    configurator: ['@http_handler_stack_configurator', configure]
  http_handler_stack_configurator:
    class: Drupal\Core\Http\HandlerStackConfigurator
    public: false
    arguments: ['@service_container']
443
  http_client:
444 445 446 447 448
    class: GuzzleHttp\Client
    factory: http_client_factory:fromOptions
  http_client_factory:
    class: Drupal\Core\Http\ClientFactory
    arguments: ['@http_handler_stack']
449 450
  theme.negotiator:
    class: Drupal\Core\Theme\ThemeNegotiator
451
    arguments: ['@access_check.theme']
452 453
    tags:
      - { name: service_collector, tag: theme_negotiator, call: addNegotiator }
454 455 456 457 458 459 460
  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
461
    arguments: ['@csrf_token', '@config.factory', '@request_stack']
462 463
    tags:
      - { name: theme_negotiator, priority: 1000 }
464 465 466
  container.namespaces:
    class: ArrayObject
    arguments: [ '%container.namespaces%' ]
467 468 469 470
  container.trait:
    abstract: true
    calls:
      - [setContainer, ['@service_container']]
471 472
  default_plugin_manager:
    abstract: true
473
    arguments: ['@container.namespaces', '@cache.discovery', '@module_handler']
474
  module_handler:
475
    class: Drupal\Core\Extension\ModuleHandler
476 477 478
    arguments: ['@app.root', '%container.modules%', '@cache.bootstrap']
  module_installer:
    class: Drupal\Core\Extension\ModuleInstaller
479 480
    tags:
      - { name: service_collector, tag: 'module_install.uninstall_validator', call: addUninstallValidator }
481
    arguments: ['@app.root', '@module_handler', '@kernel', '@router.builder']
482
    lazy: true
483 484 485 486
  content_uninstall_validator:
    class: Drupal\Core\Entity\ContentUninstallValidator
    tags:
      - { name: module_install.uninstall_validator }
487
    arguments: ['@entity.manager', '@string_translation']
488
    lazy: true
489 490 491 492
  field_uninstall_validator:
    class: Drupal\Core\Field\FieldModuleUninstallValidator
    tags:
      - { name: module_install.uninstall_validator }
493
    arguments: ['@entity.manager', '@string_translation']
494
    lazy: true
495 496 497 498 499 500
  required_module_uninstall_validator:
    class: Drupal\Core\Extension\RequiredModuleUninstallValidator
    tags:
      - { name: module_install.uninstall_validator }
    arguments: ['@string_translation']
    lazy: true
501 502
  theme_handler:
    class: Drupal\Core\Extension\ThemeHandler
503 504 505 506
    arguments: ['@app.root', '@config.factory', '@module_handler', '@state', '@info_parser']
  theme_installer:
    class: Drupal\Core\Extension\ThemeInstaller
    arguments: ['@theme_handler', '@config.factory', '@config.installer', '@module_handler', '@config.manager', '@asset.css.collection_optimizer', '@router.builder', '@logger.channel.default', '@state']
507 508
  # @deprecated in Drupal 8.0.x and will be removed before 9.0.0. Use the other
  #   entity* services instead.
509
  entity.manager:
510 511
    # We cannot set the deprecated property here because many test cases still
    # rely on this service and they would fail with deprecation warnings.
512
    class: Drupal\Core\Entity\EntityManager
513
    parent: container.trait
514
    # @todo Remove this tag in https://www.drupal.org/node/2549143.
515 516
    tags:
      - { name: plugin_manager_cache_clear }
517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543
  entity_type.manager:
    class: Drupal\Core\Entity\EntityTypeManager
    arguments: ['@container.namespaces', '@module_handler', '@cache.discovery', '@string_translation', '@class_resolver']
    parent: container.trait
    tags:
      - { name: plugin_manager_cache_clear }
  entity_type.repository:
    class: Drupal\Core\Entity\EntityTypeRepository
    arguments: ['@entity_type.manager']
  entity_type.bundle.info:
    class: Drupal\Core\Entity\EntityTypeBundleInfo
    arguments: ['@entity_type.manager', '@language_manager', '@module_handler', '@typed_data_manager', '@cache.discovery']
  entity.repository:
    class: Drupal\Core\Entity\EntityRepository
    arguments: ['@entity_type.manager', '@language_manager']
  entity_display.repository:
    class: Drupal\Core\Entity\EntityDisplayRepository
    arguments: ['@entity_type.manager', '@module_handler', '@cache.discovery', '@language_manager']
  entity_field.manager:
    class: Drupal\Core\Entity\EntityFieldManager
    arguments: ['@entity_type.manager', '@entity_type.bundle.info', '@entity_display.repository', '@typed_data_manager', '@language_manager', '@keyvalue', '@module_handler', '@cache.discovery']
  entity_type.listener:
    class: Drupal\Core\Entity\EntityTypeListener
    arguments: ['@entity_type.manager', '@entity_field.manager', '@event_dispatcher', '@entity.last_installed_schema.repository']
  entity_bundle.listener:
    class: Drupal\Core\Entity\EntityBundleListener
    arguments: ['@entity_type.manager', '@entity_type.bundle.info', '@entity_field.manager', '@module_handler']
544 545 546 547 548
  entity_route_subscriber:
    class: Drupal\Core\EventSubscriber\EntityRouteProviderSubscriber
    arguments: ['@entity.manager']
    tags:
      - { name: event_subscriber }
549 550 551
  entity.definition_update_manager:
    class: Drupal\Core\Entity\EntityDefinitionUpdateManager
    arguments: ['@entity.manager']
552 553 554 555 556 557 558 559 560
  entity.last_installed_schema.repository:
    class: Drupal\Core\Entity\EntityLastInstalledSchemaRepository
    arguments: ['@keyvalue']
  field_storage_definition.listener:
    class: Drupal\Core\Field\FieldStorageDefinitionListener
    arguments: ['@entity_type.manager', '@event_dispatcher', '@entity.last_installed_schema.repository', '@entity_field.manager']
  field_definition.listener:
    class: Drupal\Core\Field\FieldDefinitionListener
    arguments: ['@entity_type.manager', '@entity_field.manager', '@keyvalue', '@cache.discovery']
561 562 563
  entity.form_builder:
    class: Drupal\Core\Entity\EntityFormBuilder
    arguments: ['@entity.manager', '@form_builder']
564 565 566 567 568
  entity.bundle_config_import_validator:
    class: Drupal\Core\Entity\Event\BundleConfigImportValidate
    arguments: ['@config.manager', '@entity.manager']
    tags:
      - { name: event_subscriber }
569 570 571
  entity.autocomplete_matcher:
    class: Drupal\Core\Entity\EntityAutocompleteMatcher
    arguments: ['@plugin.manager.entity_reference_selection']
572 573 574
  plugin.manager.entity_reference_selection:
    class: Drupal\Core\Entity\EntityReferenceSelection\SelectionPluginManager
    parent: default_plugin_manager
575 576 577
  plugin.manager.block:
    class: Drupal\Core\Block\BlockManager
    parent: default_plugin_manager
578 579
  plugin.manager.field.field_type:
    class: Drupal\Core\Field\FieldTypePluginManager
580
    arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@typed_data_manager']
581 582
  plugin.manager.field.widget:
    class: Drupal\Core\Field\WidgetPluginManager
583
    arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@plugin.manager.field.field_type']
584 585
  plugin.manager.field.formatter:
    class: Drupal\Core\Field\FormatterPluginManager
586
    arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@plugin.manager.field.field_type']
587 588
  plugin.manager.archiver:
    class: Drupal\Core\Archiver\ArchiverManager
589
    parent: default_plugin_manager
590 591
  plugin.manager.action:
    class: Drupal\Core\Action\ActionManager
592
    arguments: ['@container.namespaces', '@cache.discovery', '@module_handler']
593 594 595
  plugin.manager.menu.link:
    class: Drupal\Core\Menu\MenuLinkManager
    arguments: ['@menu.tree_storage', '@menu_link.static.overrides', '@module_handler']
596 597
  menu.link_tree:
    class: Drupal\Core\Menu\MenuLinkTree
598
    arguments: ['@menu.tree_storage', '@plugin.manager.menu.link', '@router.route_provider', '@menu.active_trail', '@controller_resolver']
599 600
  menu.default_tree_manipulators:
    class: Drupal\Core\Menu\DefaultMenuLinkTreeManipulators
601
    arguments: ['@access_manager', '@current_user', '@entity.query']
602 603
  menu.active_trail:
    class: Drupal\Core\Menu\MenuActiveTrail
604 605 606
    arguments: ['@plugin.manager.menu.link', '@current_route_match', '@cache.menu', '@lock']
    tags:
      - { name: needs_destruction }
607 608 609
  menu.parent_form_selector:
    class: Drupal\Core\Menu\MenuParentFormSelector
    arguments: ['@menu.link_tree', '@entity.manager', '@string_translation']
610 611
  plugin.manager.menu.local_action:
    class: Drupal\Core\Menu\LocalActionManager
612
    arguments: ['@controller_resolver', '@request_stack', '@current_route_match', '@router.route_provider', '@module_handler', '@cache.discovery', '@language_manager', '@access_manager', '@current_user']
613 614
  plugin.manager.menu.local_task:
    class: Drupal\Core\Menu\LocalTaskManager
615
    arguments: ['@controller_resolver', '@request_stack', '@current_route_match', '@router.route_provider', '@module_handler', '@cache.discovery', '@language_manager', '@access_manager', '@current_user']
616 617
  plugin.manager.menu.contextual_link:
    class: Drupal\Core\Menu\ContextualLinkManager
618
    arguments: ['@controller_resolver', '@module_handler', '@cache.discovery', '@language_manager', '@access_manager', '@current_user', '@request_stack']
619 620 621
  plugin.manager.display_variant:
    class: Drupal\Core\Display\VariantManager
    parent: default_plugin_manager
622 623 624
  plugin.manager.queue_worker:
    class: Drupal\Core\Queue\QueueWorkerManager
    parent: default_plugin_manager
625 626
  plugin.cache_clearer:
    class: Drupal\Core\Plugin\CachedDiscoveryClearer
627
    lazy: true
628 629 630 631 632
  paramconverter.menu_link:
    class: Drupal\Core\ParamConverter\MenuLinkPluginConverter
    tags:
      - { name: paramconverter }
    arguments: ['@plugin.manager.menu.link']
633
    lazy: true
634 635
  menu.tree_storage:
    class: Drupal\Core\Menu\MenuTreeStorage
636
    arguments: ['@database', '@cache.menu', '@cache_tags.invalidator', 'menu_tree']
637
    public: false  # Private to plugin.manager.menu.link and menu.link_tree
638 639
    tags:
      - { name: backend_overridable }
640 641 642
  menu_link.static.overrides:
    class: Drupal\Core\Menu\StaticMenuLinkOverrides
    arguments: ['@config.factory']
643 644
  request_stack:
    class: Symfony\Component\HttpFoundation\RequestStack
645 646
    tags:
      - { name: persist }
647 648 649
  current_route_match:
     class: Drupal\Core\Routing\CurrentRouteMatch
     arguments: ['@request_stack']
650
  event_dispatcher:
651
    class: Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher
652
    arguments: ['@service_container']
653 654
  app.root:
    class: SplString
655
    factory: app.root.factory:get
656 657
    tags:
      - { name: parameter_service }
658 659 660
  app.root.factory:
    class: Drupal\Core\AppRootFactory
    arguments: ['@kernel']
661
    public: false
662 663 664 665 666 667 668 669 670
  site.path:
    class: SplString
    factory: site.path.factory:get
    tags:
      - { name: parameter_service }
  site.path.factory:
    class: Drupal\Core\SitePathFactory
    arguments: ['@kernel']
    public: false
671
  controller_resolver:
672
    class: Drupal\Core\Controller\ControllerResolver
673
    arguments: ['@psr7.http_message_factory', '@class_resolver']
674 675 676 677
  class_resolver:
    class: Drupal\Core\DependencyInjection\ClassResolver
    calls:
      - [setContainer, ['@service_container']]
678 679 680
  title_resolver:
    class: Drupal\Core\Controller\TitleResolver
    arguments: ['@controller_resolver', '@string_translation']
681
  http_kernel:
682
    class: Stack\StackedHttpKernel
683
  http_kernel.basic:
684
    class: Symfony\Component\HttpKernel\HttpKernel
685
    arguments: ['@event_dispatcher', '@controller_resolver', '@request_stack']
686 687 688 689
  http_middleware.negotiation:
    class: Drupal\Core\StackMiddleware\NegotiationMiddleware
    tags:
      - { name: http_middleware, priority: 400 }
690 691 692 693 694 695 696 697 698 699
  http_middleware.reverse_proxy:
    class: Drupal\Core\StackMiddleware\ReverseProxyMiddleware
    arguments: ['@settings']
    tags:
      - { name: http_middleware, priority: 300 }
  http_middleware.kernel_pre_handle:
    class: Drupal\Core\StackMiddleware\KernelPreHandle
    arguments: ['@kernel']
    tags:
      - { name: http_middleware, priority: 100 }
700 701 702 703 704 705
  http_middleware.session:
    class: Drupal\Core\StackMiddleware\Session
    tags:
      - { name: http_middleware, priority: 50 }
    calls:
      - [setContainer, ['@service_container']]
706 707 708 709
  psr7.http_foundation_factory:
    class: Symfony\Bridge\PsrHttpMessage\Factory\HttpFoundationFactory
  psr7.http_message_factory:
    class: Symfony\Bridge\PsrHttpMessage\Factory\DiactorosFactory
710 711
  language_manager:
    class: Drupal\Core\Language\LanguageManager
712
    arguments: ['@language.default']
713 714 715 716 717
  language.current_language_context:
    class: Drupal\Core\Language\ContextProvider\CurrentLanguageContext
    arguments: ['@language_manager']
    tags:
      - { name: 'context_provider' }
718 719 720
  language.default:
    class: Drupal\Core\Language\LanguageDefault
    arguments: ['%language.default_values%']
721 722
  string_translator.custom_strings:
    class: Drupal\Core\StringTranslation\Translator\CustomStrings
723
    arguments: ['@settings']
724 725 726 727
    tags:
      - { name: string_translator, priority: 30 }
  string_translation:
    class: Drupal\Core\StringTranslation\TranslationManager
728
    arguments: ['@language.default']
729 730
    tags:
      - { name: service_collector, tag: string_translator, call: addTranslator }
731
  database.replica:
732
    class: Drupal\Core\Database\Connection
733
    factory: Drupal\Core\Database\Database::getConnection
734
    arguments: [replica]
735
  typed_data_manager:
736
    class: Drupal\Core\TypedData\TypedDataManager
737
    arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@class_resolver']
738 739
    calls:
      - [setValidationConstraintManager, ['@validation.constraint']]
740 741
    tags:
      - { name: plugin_manager_cache_clear }
742 743
  validation.constraint:
    class: Drupal\Core\Validation\ConstraintManager
744
    parent: default_plugin_manager
745 746
    tags:
      - { name: plugin_manager_cache_clear }
747 748
  lock:
    class: Drupal\Core\Lock\DatabaseLockBackend
749
    arguments: ['@database']
750 751
    tags:
      - { name: backend_overridable }
752
    lazy: true
753 754 755
  lock.persistent:
    class: Drupal\Core\Lock\PersistentDatabaseLockBackend
    arguments: ['@database']
756 757
    tags:
      - { name: backend_overridable }
758
    lazy: true
759
  router.request_context:
760
    class: Drupal\Core\Routing\RequestContext
761 762
    tags:
      - { name: persist }
763 764
    calls:
      - [fromRequestStack, ['@request_stack']]
765 766
  router.admin_context:
    class: Drupal\Core\Routing\AdminContext
767
    arguments: ['@current_route_match']
768 769
  router.route_provider:
    class: Drupal\Core\Routing\RouteProvider
770
    arguments: ['@database', '@state', '@path.current', '@cache.data', '@path_processor_manager', '@cache_tags.invalidator']
771 772
    tags:
      - { name: event_subscriber }
773
      - { name: backend_overridable }
774 775 776
  router.route_provider.lazy_builder:
    class: Drupal\Core\Routing\RouteProviderLazyBuilder
    arguments: ['@router.route_provider', '@router.builder']
777 778
  router.route_preloader:
    class: Drupal\Core\Routing\RoutePreloader
779
    arguments: ['@router.route_provider', '@state', '@cache.bootstrap']
780 781
    tags:
      - { name: 'event_subscriber' }
782 783
  router.matcher.final_matcher:
    class: Drupal\Core\Routing\UrlMatcher
784
    arguments: ['@path.current']
785 786 787 788 789
  router.matcher:
    class: Symfony\Cmf\Component\Routing\NestedMatcher\NestedMatcher
    arguments: ['@router.route_provider']
    calls:
      - [setFinalMatcher, ['@router.matcher.final_matcher']]
790
    tags:
791 792 793 794 795 796 797 798 799 800 801
      - { 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 }
802
  url_generator.non_bubbling:
803
    class: Drupal\Core\Routing\UrlGenerator
804
    arguments: ['@router.route_provider', '@path_processor_manager', '@route_processor_manager', '@request_stack', '%filter_protocols%']
805 806 807 808 809 810
    public: false
    calls:
      - [setContext, ['@?router.request_context']]
  url_generator:
    class: Drupal\Core\Render\MetadataBubblingUrlGenerator
    arguments: ['@url_generator.non_bubbling', '@renderer']
811
    calls:
812
      - [setContext, ['@?router.request_context']]
813 814 815
  redirect.destination:
    class: Drupal\Core\Routing\RedirectDestination
    arguments: ['@request_stack', '@url_generator']
816 817
  unrouted_url_assembler:
    class: Drupal\Core\Utility\UnroutedUrlAssembler
818
    arguments: ['@request_stack', '@path_processor_manager', '%filter_protocols%']
819 820
  link_generator:
    class: Drupal\Core\Utility\LinkGenerator
821
    arguments: ['@url_generator', '@module_handler', '@renderer']
822 823 824
  router:
    class: Drupal\Core\Routing\AccessAwareRouter
    arguments: ['@router.no_access_checks', '@access_manager', '@current_user']
825 826
  router.dynamic:
    class: Symfony\Cmf\Component\Routing\DynamicRouter
827
    arguments: ['@router.request_context', '@router.matcher', '@url_generator']
828
    tags:
829
      - { name: service_collector, tag: non_lazy_route_enhancer, call: addRouteEnhancer }
830
  router.no_access_checks:
831 832 833 834
    class: Symfony\Cmf\Component\Routing\ChainRouter
    calls:
      - [setContext, ['@router.request_context']]
      - [add, ['@router.dynamic']]
835 836 837 838 839
  router.path_roots_subscriber:
    class: Drupal\Core\EventSubscriber\PathRootsSubscriber
    arguments: ['@state']
    tags:
      - { name: event_subscriber }
840 841
  entity.query:
    class: Drupal\Core\Entity\Query\QueryFactory
842
    arguments: ['@entity.manager']
843 844 845 846
    calls:
      - [setContainer, ['@service_container']]
  entity.query.config:
    class: Drupal\Core\Config\Entity\Query\QueryFactory
847 848 849
    arguments: ['@config.factory', '@keyvalue', '@config.manager']
    tags:
      - { name: event_subscriber }
850 851 852
  entity.query.sql:
    class: Drupal\Core\Entity\Query\Sql\QueryFactory
    arguments: ['@database']
853 854
    tags:
      - { name: backend_overridable }
855 856 857
  pgsql.entity.query.sql:
    class: Drupal\Core\Entity\Query\Sql\pgsql\QueryFactory
    arguments: ['@database']
858 859
  entity.query.null:
    class: Drupal\Core\Entity\Query\Null\QueryFactory
860 861 862
  entity.query.keyvalue:
    class: Drupal\Core\Entity\KeyValueStore\Query\QueryFactory
    arguments: ['@keyvalue']
863 864
  router.dumper:
    class: Drupal\Core\Routing\MatcherDumper
865
    arguments: ['@database', '@state']
866 867
    tags:
      - { name: backend_overridable }
868
    lazy: true
869 870
  router.builder:
    class: Drupal\Core\Routing\RouteBuilder
871
    arguments: ['@router.dumper', '@lock', '@event_dispatcher', '@module_handler', '@controller_resolver', '@access_manager.check_provider']
872
    lazy: true
873
    tags:
874
      - { name: needs_destruction }
875 876 877
  menu.rebuild_subscriber:
    class: Drupal\Core\EventSubscriber\MenuRouterRebuildSubscriber
    arguments: ['@lock', '@plugin.manager.menu.link']
878 879
    tags:
      - { name: event_subscriber }
880 881
  path.alias_storage:
    class: Drupal\Core\Path\AliasStorage
882
    arguments: ['@database', '@module_handler']
883 884
    tags:
      - { name: backend_overridable }
885 886
  path.matcher:
    class: Drupal\Core\Path\PathMatcher
887
    arguments: ['@config.factory', '@current_route_match']
888 889
  path.validator:
    class: Drupal\Core\Path\PathValidator
890
    arguments: ['@router', '@router.no_access_checks', '@current_user', '@path_processor_manager']
891

892 893 894 895 896 897 898 899 900
# 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]
901 902
  request_format_route_filter:
    class: Drupal\Core\Routing\RequestFormatRouteFilter
903 904 905 906
    tags:
      - { name: route_filter }
  content_type_header_matcher:
    class: Drupal\Core\Routing\ContentTypeHeaderMatcher
907 908 909 910
    tags:
      - { name: route_filter }
  paramconverter_manager:
    class: Drupal\Core\ParamConverter\ParamConverterManager
911 912
    tags:
      - { name: service_collector, tag: paramconverter, call: addConverter }
913 914 915 916 917
  paramconverter_subscriber:
    class: Drupal\Core\EventSubscriber\ParamConverterSubscriber
    tags:
      - { name: event_subscriber }
    arguments: ['@paramconverter_manager']
918 919 920 921
  paramconverter.entity:
    class: Drupal\Core\ParamConverter\EntityConverter
    tags:
      - { name: paramconverter }
922
    arguments: ['@entity.manager']
923 924 925 926 927
  paramconverter.entity_revision:
    class: Drupal\Core\ParamConverter\EntityRevisionParamConverter
    tags:
      - { name: paramconverter }
    arguments: ['@entity_type.manager']
928 929 930 931 932 933
  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']
934
    lazy: true
935 936 937 938 939
  route_subscriber.module:
    class: Drupal\Core\EventSubscriber\ModuleRouteSubscriber
    tags:
      - { name: event_subscriber }
    arguments: ['@module_handler']
940 941
  resolver_manager.entity:
    class: Drupal\Core\Entity\EntityResolverManager
942
    arguments: ['@entity.manager', '@class_resolver']
943 944 945 946
  route_subscriber.entity:
    class: Drupal\Core\EventSubscriber\EntityRouteAlterSubscriber
    tags:
      - { name: event_subscriber }
947
    arguments: ['@resolver_manager.entity']
948 949 950
  ajax_response.subscriber:
    class: Drupal\Core\EventSubscriber\AjaxResponseSubscriber
    arguments: ['@ajax_response.attachments_processor']
951 952
    tags:
      - { name: event_subscriber }
953 954
  form_ajax_subscriber:
    class: Drupal\Core\Form\EventSubscriber\FormAjaxSubscriber
955
    arguments: ['@form_ajax_response_builder', '@string_translation']
956 957
    tags:
      - { name: event_subscriber }
958 959 960 961 962 963 964 965 966 967
  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 }
968 969 970 971 972