core.services.yml 77.5 KB
Newer Older
1
parameters:
2
3
4
5
6
  # The app.root and site.path parameters are dynamically set by
  # \Drupal\Core\DrupalKernel::initializeContainer(). They are listed here to
  # allow IDEs to autocomplete them when writing new service YAML files.
  app.root: ''
  site.path: ''
7
8
9
10
11
  session.storage.options:
    gc_probability: 1
    gc_divisor: 100
    gc_maxlifetime: 200000
    cookie_lifetime: 2000000
12
13
    sid_length: 48
    sid_bits_per_character: 6
14
15
16
17
  twig.config:
    debug: false
    auto_reload: null
    cache: true
18
  renderer.config:
19
    required_cache_contexts: ['languages:language_interface', 'theme', 'user.permissions']
20
21
22
23
    auto_placeholder_conditions:
      max-age: 0
      contexts: ['session', 'user']
      tags: []
24
25
  factory.keyvalue:
    default: keyvalue.database
26
  http.response.debug_cacheability_headers: false
27
28
  factory.keyvalue.expirable:
    default: keyvalue.expirable.database
29
30
31
32
33
34
35
36
37
38
39
40
41
42
  filter_protocols:
    - http
    - https
    - ftp
    - news
    - nntp
    - tel
    - telnet
    - mailto
    - irc
    - ssh
    - sftp
    - webcal
    - rtsp
43
44
45
46
47
48
49
50
  cors.config:
    enabled: false
    allowedHeaders: []
    allowedMethods: []
    allowedOrigins: ['*']
    exposedHeaders: false
    maxAge: false
    supportsCredentials: false
51
  tempstore.expire: 604800
52
services:
53
54
  # Simple cache contexts, directly derived from the request context.
  cache_context.ip:
55
    class: Drupal\Core\Cache\Context\IpCacheContext
56
57
58
    arguments: ['@request_stack']
    tags:
      - { name: cache.context }
59
60
61
62
63
  cache_context.protocol_version:
    class: Drupal\Core\Cache\Context\ProtocolVersionCacheContext
    arguments: ['@request_stack']
    tags:
      - { name: cache.context }
64
  cache_context.headers:
65
    class: Drupal\Core\Cache\Context\HeadersCacheContext
66
67
68
69
    arguments: ['@request_stack']
    tags:
      - { name: cache.context }
  cache_context.cookies:
70
    class: Drupal\Core\Cache\Context\CookiesCacheContext
71
72
73
    arguments: ['@request_stack']
    tags:
      - { name: cache.context }
74
75
76
77
78
  cache_context.session:
    class: Drupal\Core\Cache\Context\SessionCacheContext
    arguments: ['@request_stack']
    tags:
      - { name: cache.context}
79
80
81
82
83
  cache_context.session.exists:
    class: Drupal\Core\Cache\Context\SessionExistsCacheContext
    arguments: ['@session_configuration', '@request_stack']
    tags:
      - { name: cache.context}
84
  cache_context.request_format:
85
    class: Drupal\Core\Cache\Context\RequestFormatCacheContext
86
87
88
    arguments: ['@request_stack']
    tags:
      - { name: cache.context }
89
  cache_context.url:
90
    class: Drupal\Core\Cache\Context\UrlCacheContext
91
    arguments: ['@request_stack']
92
    tags:
93
      - { name: cache.context }
94
  cache_context.url.site:
95
    class: Drupal\Core\Cache\Context\SiteCacheContext
96
    arguments: ['@request_stack']
97
98
    tags:
      - { name: cache.context }
99
100
101
102
103
  cache_context.url.path:
    class: Drupal\Core\Cache\Context\PathCacheContext
    arguments: ['@request_stack']
    tags:
      - { name: cache.context }
104
105
106
107
108
  cache_context.url.path.parent:
    class: Drupal\Core\Cache\Context\PathParentCacheContext
    arguments: ['@request_stack']
    tags:
      - { name: cache.context }
109
110
111
112
113
  cache_context.url.path.is_front:
    class: Drupal\Core\Cache\Context\IsFrontPathCacheContext
    arguments: ['@path.matcher']
    tags:
      - { name: cache.context }
114
  cache_context.url.query_args:
115
    class: Drupal\Core\Cache\Context\QueryArgsCacheContext
116
117
118
119
    arguments: ['@request_stack']
    tags:
      - { name: cache.context }
  cache_context.url.query_args.pagers:
120
    class: Drupal\Core\Cache\Context\PagersCacheContext
121
    arguments: ['@pager.parameters']
122
123
124
125
126
    tags:
      - { name: cache.context }

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

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

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

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