core.services.yml 63.4 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 37 38 39 40 41 42 43
  cors.config:
    enabled: false
    allowedHeaders: []
    allowedMethods: []
    allowedOrigins: ['*']
    exposedHeaders: false
    maxAge: false
    supportsCredentials: false
44
services:
45 46
  # Simple cache contexts, directly derived from the request context.
  cache_context.ip:
47
    class: Drupal\Core\Cache\Context\IpCacheContext
48 49 50 51
    arguments: ['@request_stack']
    tags:
      - { name: cache.context }
  cache_context.headers:
52
    class: Drupal\Core\Cache\Context\HeadersCacheContext
53 54 55 56
    arguments: ['@request_stack']
    tags:
      - { name: cache.context }
  cache_context.cookies:
57
    class: Drupal\Core\Cache\Context\CookiesCacheContext
58 59 60
    arguments: ['@request_stack']
    tags:
      - { name: cache.context }
61 62 63 64 65
  cache_context.session:
    class: Drupal\Core\Cache\Context\SessionCacheContext
    arguments: ['@request_stack']
    tags:
      - { name: cache.context}
66 67 68 69 70
  cache_context.session.exists:
    class: Drupal\Core\Cache\Context\SessionExistsCacheContext
    arguments: ['@session_configuration', '@request_stack']
    tags:
      - { name: cache.context}
71
  cache_context.request_format:
72
    class: Drupal\Core\Cache\Context\RequestFormatCacheContext
73 74 75
    arguments: ['@request_stack']
    tags:
      - { name: cache.context }
76
  cache_context.url:
77
    class: Drupal\Core\Cache\Context\UrlCacheContext
78
    arguments: ['@request_stack']
79
    tags:
80
      - { name: cache.context }
81
  cache_context.url.site:
82
    class: Drupal\Core\Cache\Context\SiteCacheContext
83
    arguments: ['@request_stack']
84 85
    tags:
      - { name: cache.context }
86 87 88 89 90
  cache_context.url.path:
    class: Drupal\Core\Cache\Context\PathCacheContext
    arguments: ['@request_stack']
    tags:
      - { name: cache.context }
91 92 93 94 95
  cache_context.url.path.parent:
    class: Drupal\Core\Cache\Context\PathParentCacheContext
    arguments: ['@request_stack']
    tags:
      - { name: cache.context }
96
  cache_context.url.query_args:
97
    class: Drupal\Core\Cache\Context\QueryArgsCacheContext
98 99 100 101
    arguments: ['@request_stack']
    tags:
      - { name: cache.context }
  cache_context.url.query_args.pagers:
102
    class: Drupal\Core\Cache\Context\PagersCacheContext
103 104 105 106 107 108
    arguments: ['@request_stack']
    tags:
      - { name: cache.context }

  # Complex cache contexts, that depend on the routing system.
  cache_context.route:
109
    class: Drupal\Core\Cache\Context\RouteCacheContext
110 111 112 113
    arguments: ['@current_route_match']
    tags:
      - { name: cache.context }
  cache_context.route.name:
114
    class: Drupal\Core\Cache\Context\RouteNameCacheContext
115 116 117 118
    arguments: ['@current_route_match']
    tags:
      - { name: cache.context }
  cache_context.route.menu_active_trails:
119
    class: Drupal\Core\Cache\Context\MenuActiveTrailsCacheContext
120 121 122 123 124 125 126 127 128
    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:
129
    class: Drupal\Core\Cache\Context\UserCacheContext
130 131 132
    arguments: ['@current_user']
    tags:
      - { name: cache.context}
133
  cache_context.user.permissions:
134
    class: Drupal\Core\Cache\Context\AccountPermissionsCacheContext
135 136 137
    arguments: ['@current_user', '@user_permissions_hash_generator']
    tags:
      - { name: cache.context}
138
  cache_context.user.roles:
139
    class: Drupal\Core\Cache\Context\UserRolesCacheContext
140
    arguments: ['@current_user']
141 142
    tags:
      - { name: cache.context}
143
  cache_context.user.is_super_user:
144
    class: Drupal\Core\Cache\Context\IsSuperUserCacheContext
145 146 147 148
    arguments: ['@current_user']
    tags:
      - { name: cache.context}
  cache_context.languages:
149
    class: Drupal\Core\Cache\Context\LanguagesCacheContext
150 151 152 153
    arguments: ['@language_manager']
    tags:
      - { name: cache.context}
  cache_context.theme:
154
    class: Drupal\Core\Cache\Context\ThemeCacheContext
155
    arguments: ['@theme.manager']
156 157
    tags:
      - { name: cache.context}
158
  cache_context.timezone:
159
    class: Drupal\Core\Cache\Context\TimeZoneCacheContext
160 161
    tags:
      - { name: cache.context}
162 163 164 165

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

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

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