core.services.yml 69.6 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
  tempstore.expire: 604800
45
services:
46 47
  # Simple cache contexts, directly derived from the request context.
  cache_context.ip:
48
    class: Drupal\Core\Cache\Context\IpCacheContext
49 50 51 52
    arguments: ['@request_stack']
    tags:
      - { name: cache.context }
  cache_context.headers:
53
    class: Drupal\Core\Cache\Context\HeadersCacheContext
54 55 56 57
    arguments: ['@request_stack']
    tags:
      - { name: cache.context }
  cache_context.cookies:
58
    class: Drupal\Core\Cache\Context\CookiesCacheContext
59 60 61
    arguments: ['@request_stack']
    tags:
      - { name: cache.context }
62 63 64 65 66
  cache_context.session:
    class: Drupal\Core\Cache\Context\SessionCacheContext
    arguments: ['@request_stack']
    tags:
      - { name: cache.context}
67 68 69 70 71
  cache_context.session.exists:
    class: Drupal\Core\Cache\Context\SessionExistsCacheContext
    arguments: ['@session_configuration', '@request_stack']
    tags:
      - { name: cache.context}
72
  cache_context.request_format:
73
    class: Drupal\Core\Cache\Context\RequestFormatCacheContext
74 75 76
    arguments: ['@request_stack']
    tags:
      - { name: cache.context }
77
  cache_context.url:
78
    class: Drupal\Core\Cache\Context\UrlCacheContext
79
    arguments: ['@request_stack']
80
    tags:
81
      - { name: cache.context }
82
  cache_context.url.site:
83
    class: Drupal\Core\Cache\Context\SiteCacheContext
84
    arguments: ['@request_stack']
85 86
    tags:
      - { name: cache.context }
87 88 89 90 91
  cache_context.url.path:
    class: Drupal\Core\Cache\Context\PathCacheContext
    arguments: ['@request_stack']
    tags:
      - { name: cache.context }
92 93 94 95 96
  cache_context.url.path.parent:
    class: Drupal\Core\Cache\Context\PathParentCacheContext
    arguments: ['@request_stack']
    tags:
      - { name: cache.context }
97 98 99 100 101
  cache_context.url.path.is_front:
    class: Drupal\Core\Cache\Context\IsFrontPathCacheContext
    arguments: ['@path.matcher']
    tags:
      - { name: cache.context }
102
  cache_context.url.query_args:
103
    class: Drupal\Core\Cache\Context\QueryArgsCacheContext
104 105 106 107
    arguments: ['@request_stack']
    tags:
      - { name: cache.context }
  cache_context.url.query_args.pagers:
108
    class: Drupal\Core\Cache\Context\PagersCacheContext
109 110 111 112 113 114
    arguments: ['@request_stack']
    tags:
      - { name: cache.context }

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

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

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

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