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

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

235
  settings:
236
237
    class: Drupal\Core\Site\Settings
    factory_class: Drupal\Core\Site\Settings
238
    factory_method: getInstance
239
  state:
240
    class: Drupal\Core\State\State
241
    arguments: ['@keyvalue']
242
243
244
245
246
247
248
249
250
251
252
253
  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 }
254
    arguments: [path_alias_whitelist, '@cache.default', '@lock', '@state', '@path.alias_storage']
255
256
  path.alias_manager:
    class: Drupal\Core\Path\AliasManager
257
    arguments: ['@path.alias_storage', '@path.alias_whitelist', '@language_manager', '@cache.data']
258
  http_client:
259
    class: Drupal\Core\Http\Client
260
261
    tags:
      - { name: service_collector, tag: http_client_subscriber, call: attach }
262
263
  theme.negotiator:
    class: Drupal\Core\Theme\ThemeNegotiator
264
    arguments: ['@access_check.theme']
265
266
    tags:
      - { name: service_collector, tag: theme_negotiator, call: addNegotiator }
267
268
269
270
271
272
273
  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
274
    arguments: ['@csrf_token', '@config.factory', '@request_stack']
275
276
    tags:
      - { name: theme_negotiator, priority: 1000 }
277
278
279
  container.namespaces:
    class: ArrayObject
    arguments: [ '%container.namespaces%' ]
280
281
282
283
  container.trait:
    abstract: true
    calls:
      - [setContainer, ['@service_container']]
284
285
  default_plugin_manager:
    abstract: true
286
    arguments: ['@container.namespaces', '@cache.discovery', '@module_handler']
287
  module_handler:
288
    class: Drupal\Core\Extension\ModuleHandler
289
290
291
292
    arguments: ['@app.root', '%container.modules%', '@cache.bootstrap']
  module_installer:
    class: Drupal\Core\Extension\ModuleInstaller
    arguments: ['@app.root', '@module_handler', '@kernel']
293
294
  theme_handler:
    class: Drupal\Core\Extension\ThemeHandler
295
    arguments: ['@app.root', '@config.factory', '@module_handler', '@state', '@info_parser', '@logger.channel.default', '@asset.css.collection_optimizer', '@config.installer', '@config.manager', '@router.builder_indicator']
296
  entity.manager:
297
    class: Drupal\Core\Entity\EntityManager
298
    arguments: ['@container.namespaces', '@module_handler', '@cache.discovery', '@language_manager', '@string_translation', '@class_resolver', '@typed_data_manager', '@entity.definitions.installed', '@event_dispatcher']
299
    parent: container.trait
300
301
    tags:
      - { name: plugin_manager_cache_clear }
302
303
304
305
306
307
308
309
  entity.definitions.installed:
    class: Drupal\Core\KeyValueStore\KeyValueStoreInterface
    factory_method: get
    factory_service: keyvalue
    arguments: ['entity.definitions.installed']
  entity.definition_update_manager:
    class: Drupal\Core\Entity\EntityDefinitionUpdateManager
    arguments: ['@entity.manager']
310
311
312
  entity.form_builder:
    class: Drupal\Core\Entity\EntityFormBuilder
    arguments: ['@entity.manager', '@form_builder']
313
314
315
  plugin.manager.block:
    class: Drupal\Core\Block\BlockManager
    parent: default_plugin_manager
316
317
  plugin.manager.field.field_type:
    class: Drupal\Core\Field\FieldTypePluginManager
318
    arguments: ['@container.namespaces', '@cache.discovery', '@module_handler']
319
320
  plugin.manager.field.widget:
    class: Drupal\Core\Field\WidgetPluginManager
321
    arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@plugin.manager.field.field_type']
322
323
  plugin.manager.field.formatter:
    class: Drupal\Core\Field\FormatterPluginManager
324
    arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@plugin.manager.field.field_type']
325
326
  plugin.manager.archiver:
    class: Drupal\Core\Archiver\ArchiverManager
327
    parent: default_plugin_manager
328
329
  plugin.manager.action:
    class: Drupal\Core\Action\ActionManager
330
    arguments: ['@container.namespaces', '@cache.discovery', '@module_handler']
331
332
333
  plugin.manager.menu.link:
    class: Drupal\Core\Menu\MenuLinkManager
    arguments: ['@menu.tree_storage', '@menu_link.static.overrides', '@module_handler']
334
335
  menu.link_tree:
    class: Drupal\Core\Menu\MenuLinkTree
336
    arguments: ['@menu.tree_storage', '@plugin.manager.menu.link', '@router.route_provider', '@menu.active_trail', '@controller_resolver', '@cache.menu', '@current_route_match']
337
338
  menu.default_tree_manipulators:
    class: Drupal\Core\Menu\DefaultMenuLinkTreeManipulators
339
    arguments: ['@access_manager', '@current_user', '@entity.query']
340
341
342
343
344
345
  menu.active_trail:
    class: Drupal\Core\Menu\MenuActiveTrail
    arguments: ['@plugin.manager.menu.link', '@current_route_match']
  menu.parent_form_selector:
    class: Drupal\Core\Menu\MenuParentFormSelector
    arguments: ['@menu.link_tree', '@entity.manager', '@string_translation']
346
347
  plugin.manager.menu.local_action:
    class: Drupal\Core\Menu\LocalActionManager
348
    arguments: ['@controller_resolver', '@request_stack', '@router.route_provider', '@module_handler', '@cache.discovery', '@language_manager', '@access_manager', '@current_user']
349
350
  plugin.manager.menu.local_task:
    class: Drupal\Core\Menu\LocalTaskManager
351
    arguments: ['@controller_resolver', '@request_stack', '@router.route_provider', '@router.builder', '@module_handler', '@cache.discovery', '@language_manager', '@access_manager', '@current_user']
352
353
  plugin.manager.menu.contextual_link:
    class: Drupal\Core\Menu\ContextualLinkManager
354
    arguments: ['@controller_resolver', '@module_handler', '@cache.discovery', '@language_manager', '@access_manager', '@current_user', '@request_stack']
355
356
357
  plugin.manager.display_variant:
    class: Drupal\Core\Display\VariantManager
    parent: default_plugin_manager
358
359
360
  plugin.manager.queue_worker:
    class: Drupal\Core\Queue\QueueWorkerManager
    parent: default_plugin_manager
361
362
  plugin.cache_clearer:
    class: Drupal\Core\Plugin\CachedDiscoveryClearer
363
364
365
366
367
  paramconverter.menu_link:
    class: Drupal\Core\ParamConverter\MenuLinkPluginConverter
    tags:
      - { name: paramconverter }
    arguments: ['@plugin.manager.menu.link']
368
369
370
371
  menu.tree_storage:
    class: Drupal\Core\Menu\MenuTreeStorage
    arguments: ['@database', '@cache.menu', 'menu_tree']
    public: false  # Private to plugin.manager.menu.link and menu.link_tree
372
373
    tags:
      - { name: backend_overridable }
374
375
376
  menu_link.static.overrides:
    class: Drupal\Core\Menu\StaticMenuLinkOverrides
    arguments: ['@config.factory']
377
378
  request_stack:
    class: Symfony\Component\HttpFoundation\RequestStack
379
380
    tags:
      - { name: persist }
381
382
383
  current_route_match:
     class: Drupal\Core\Routing\CurrentRouteMatch
     arguments: ['@request_stack']
384
  event_dispatcher:
385
    class: Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher
386
    arguments: ['@service_container']
387
388
389
390
391
392
393
  app.root:
    class: SplString
    factory_service: 'app.root.factory'
    factory_method: 'get'
  app.root.factory:
    class: Drupal\Core\AppRootFactory
    arguments: ['@kernel']
394
  controller_resolver:
395
    class: Drupal\Core\Controller\ControllerResolver
396
397
398
399
400
    arguments: ['@class_resolver', '@logger.channel.default']
  class_resolver:
    class: Drupal\Core\DependencyInjection\ClassResolver
    calls:
      - [setContainer, ['@service_container']]
401
402
403
  title_resolver:
    class: Drupal\Core\Controller\TitleResolver
    arguments: ['@controller_resolver', '@string_translation']
404
  http_kernel:
405
    class: Stack\StackedHttpKernel
406
  http_kernel.basic:
407
    class: Symfony\Component\HttpKernel\HttpKernel
408
    arguments: ['@event_dispatcher', '@controller_resolver', '@request_stack']
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
  http_middleware.reverse_proxy:
    class: Drupal\Core\StackMiddleware\ReverseProxyMiddleware
    arguments: ['@settings']
    tags:
      - { name: http_middleware, priority: 300 }
  http_middleware.page_cache:
    class: Drupal\Core\StackMiddleware\PageCache
    arguments: ['@kernel']
    tags:
      - { name: http_middleware, priority: 200 }
  http_middleware.kernel_pre_handle:
    class: Drupal\Core\StackMiddleware\KernelPreHandle
    arguments: ['@kernel']
    tags:
      - { name: http_middleware, priority: 100 }
424
425
  language_manager:
    class: Drupal\Core\Language\LanguageManager
426
427
428
429
    arguments: ['@language.default']
  language.default:
    class: Drupal\Core\Language\LanguageDefault
    arguments: ['%language.default_values%']
430
431
  string_translator.custom_strings:
    class: Drupal\Core\StringTranslation\Translator\CustomStrings
432
    arguments: ['@settings']
433
434
435
436
    tags:
      - { name: string_translator, priority: 30 }
  string_translation:
    class: Drupal\Core\StringTranslation\TranslationManager
437
438
439
    arguments: ['@language_manager']
    calls:
      - [initLanguageManager]
440
441
    tags:
      - { name: service_collector, tag: string_translator, call: addTranslator }
442
  database.replica:
443
444
445
    class: Drupal\Core\Database\Connection
    factory_class: Drupal\Core\Database\Database
    factory_method: getConnection
446
    arguments: [replica]
447
  typed_data_manager:
448
    class: Drupal\Core\TypedData\TypedDataManager
449
    parent: default_plugin_manager
450
451
    calls:
      - [setValidationConstraintManager, ['@validation.constraint']]
452
453
    tags:
      - { name: plugin_manager_cache_clear }
454
455
  validation.constraint:
    class: Drupal\Core\Validation\ConstraintManager
456
    parent: default_plugin_manager
457
458
  lock:
    class: Drupal\Core\Lock\DatabaseLockBackend
459
    arguments: ['@database']
460
461
    tags:
      - { name: backend_overridable }
462
463
464
  lock.persistent:
    class: Drupal\Core\Lock\PersistentDatabaseLockBackend
    arguments: ['@database']
465
  router.request_context:
466
    class: Drupal\Core\Routing\RequestContext
467
468
    tags:
      - { name: persist }
469
470
    calls:
      - [fromRequestStack, ['@request_stack']]
471
472
  router.admin_context:
    class: Drupal\Core\Routing\AdminContext
473
    arguments: ['@request_stack']
474
475
  router.route_provider:
    class: Drupal\Core\Routing\RouteProvider
476
    arguments: ['@database', '@router.builder', '@state']
477
478
    tags:
      - { name: event_subscriber }
479
      - { name: backend_overridable }
480
481
482
483
484
  router.route_preloader:
    class: Drupal\Core\Routing\RoutePreloader
    arguments: ['@router.route_provider', '@state', '@content_negotiation']
    tags:
      - { name: 'event_subscriber' }
485
486
487
488
489
490
491
  router.matcher.final_matcher:
    class: Drupal\Core\Routing\UrlMatcher
  router.matcher:
    class: Symfony\Cmf\Component\Routing\NestedMatcher\NestedMatcher
    arguments: ['@router.route_provider']
    calls:
      - [setFinalMatcher, ['@router.matcher.final_matcher']]
492
493
    tags:
      - { name: service_collector, tag: route_filter, call: addRouteFilter }
494
  url_generator:
495
    class: Drupal\Core\Routing\UrlGenerator
496
    arguments: ['@router.route_provider', '@path_processor_manager', '@route_processor_manager', '@config.factory', '@logger.channel.default', '@request_stack']
497
    calls:
498
      - [setContext, ['@?router.request_context']]
499
500
501
  unrouted_url_assembler:
    class: Drupal\Core\Utility\UnroutedUrlAssembler
    arguments: ['@request_stack', '@config.factory' ]
502
503
  link_generator:
    class: Drupal\Core\Utility\LinkGenerator
504
    arguments: ['@url_generator', '@module_handler']
505
506
507
  router:
    class: Drupal\Core\Routing\AccessAwareRouter
    arguments: ['@router.no_access_checks', '@access_manager', '@current_user']
508
509
  router.dynamic:
    class: Symfony\Cmf\Component\Routing\DynamicRouter
510
    arguments: ['@router.request_context', '@router.matcher', '@url_generator']
511
512
    tags:
      - { name: service_collector, tag: route_enhancer, call: addRouteEnhancer }
513
  router.no_access_checks:
514
515
516
517
    class: Symfony\Cmf\Component\Routing\ChainRouter
    calls:
      - [setContext, ['@router.request_context']]
      - [add, ['@router.dynamic']]
518
519
520
521
522
  router.path_roots_subscriber:
    class: Drupal\Core\EventSubscriber\PathRootsSubscriber
    arguments: ['@state']
    tags:
      - { name: event_subscriber }
523
524
  entity.query:
    class: Drupal\Core\Entity\Query\QueryFactory
525
    arguments: ['@entity.manager']
526
527
528
529
    calls:
      - [setContainer, ['@service_container']]
  entity.query.config:
    class: Drupal\Core\Config\Entity\Query\QueryFactory
530
    arguments: ['@config.storage', '@config.factory']
531
532
533
  entity.query.sql:
    class: Drupal\Core\Entity\Query\Sql\QueryFactory
    arguments: ['@database']
534
535
    tags:
      - { name: backend_overridable }
536
537
538
  entity.query.keyvalue:
    class: Drupal\Core\Entity\KeyValueStore\Query\QueryFactory
    arguments: ['@keyvalue']
539
540
  router.dumper:
    class: Drupal\Core\Routing\MatcherDumper
541
    arguments: ['@database', '@state']
542
543
    tags:
      - { name: backend_overridable }
544
545
546
  router.builder_indicator:
    class: Drupal\Core\Routing\RouteBuilderIndicator
    arguments: ['@state']
547
548
  router.builder:
    class: Drupal\Core\Routing\RouteBuilder
549
    arguments: ['@router.dumper', '@lock', '@event_dispatcher', '@module_handler', '@controller_resolver', '@access_manager.check_provider', '@router.builder_indicator']
550
551
  router.rebuild_subscriber:
    class: Drupal\Core\EventSubscriber\RouterRebuildSubscriber
552
553
554
555
556
557
    arguments: ['@router.builder']
    tags:
      - { name: event_subscriber }
  menu.rebuild_subscriber:
    class: Drupal\Core\EventSubscriber\MenuRouterRebuildSubscriber
    arguments: ['@lock', '@plugin.manager.menu.link']
558
559
    tags:
      - { name: event_subscriber }
560
561
  path.alias_storage:
    class: Drupal\Core\Path\AliasStorage
562
    arguments: ['@database', '@module_handler']
563
564
    tags:
      - { name: backend_overridable }
565
566
  path.matcher:
    class: Drupal\Core\Path\PathMatcher
567
    arguments: ['@config.factory', '@current_route_match']
568
569
  path.validator:
    class: Drupal\Core\Path\PathValidator
570
    arguments: ['@router', '@router.no_access_checks', '@current_user', '@path_processor_manager']
571

572
573
574
575
576
577
578
579
580
# The argument to the hashing service defined in services.yml, to the
# constructor of PhpassHashedPassword is the log2 number of iterations for
# password stretching.
# @todo increase by 1 every Drupal version in order to counteract increases in
# the speed and power of computers available to crack the hashes. The current
# password hashing method was introduced in Drupal 7 with a log2 count of 15.
  password:
    class: Drupal\Core\Password\PhpassHashedPassword
    arguments: [16]
581
582
583
584
585
586
587
  accept_header_matcher:
    class: Drupal\Core\Routing\AcceptHeaderMatcher
    arguments: ['@content_negotiation']
    tags:
      - { name: route_filter }
  content_type_header_matcher:
    class: Drupal\Core\Routing\ContentTypeHeaderMatcher
588
589
590
591
    tags:
      - { name: route_filter }
  paramconverter_manager:
    class: Drupal\Core\ParamConverter\ParamConverterManager
592
593
    tags:
      - { name: service_collector, tag: paramconverter, call: addConverter }
594
595
596
597
598
  paramconverter_subscriber:
    class: Drupal\Core\EventSubscriber\ParamConverterSubscriber
    tags:
      - { name: event_subscriber }
    arguments: ['@paramconverter_manager']
599
600
601
602
  paramconverter.entity:
    class: Drupal\Core\ParamConverter\EntityConverter
    tags:
      - { name: paramconverter }
603
    arguments: ['@entity.manager']
604
605
606
607
608
609
  paramconverter.configentity_admin:
    class: Drupal\Core\ParamConverter\AdminPathConfigEntityConverter
    tags:
      # Use a higher priority than EntityConverter, see the class for details.
      - { name: paramconverter, priority: 5 }
    arguments: ['@entity.manager', '@config.factory', '@router.admin_context']
610
611
612
613
614
  route_subscriber.module:
    class: Drupal\Core\EventSubscriber\ModuleRouteSubscriber
    tags:
      - { name: event_subscriber }
    arguments: ['@module_handler']
615
616
  resolver_manager.entity:
    class: Drupal\Core\Entity\EntityResolverManager
617
    arguments: ['@entity.manager', '@class_resolver']
618
619
620
621
  route_subscriber.entity:
    class: Drupal\Core\EventSubscriber\EntityRouteAlterSubscriber
    tags:
      - { name: event_subscriber }
622
    arguments: ['@resolver_manager.entity']
623
624
  ajax_subscriber:
    class: Drupal\Core\EventSubscriber\AjaxSubscriber
625
626
    tags:
      - { name: event_subscriber }
627
628
629
630
631
632
  route_enhancer.param_conversion:
    class: Drupal\Core\Routing\Enhancer\ParamConversionEnhancer
    arguments: ['@paramconverter_manager']
    tags:
      - { name: route_enhancer }
      - { name: event_subscriber }
633
634
635
636
  route_enhancer.authentication:
    class: Drupal\Core\Routing\Enhancer\AuthenticationEnhancer
    tags:
      - { name: route_enhancer, priority: 1000 }
637
    arguments: ['@authentication', '@current_user']
638
639
  route_enhancer.entity:
    class: Drupal\Core\Entity\Enhancer\EntityRouteEnhancer
640
    tags:
641
      - { name: route_enhancer, priority: 20 }
642
643
644
645
646
  route_content_controller_subscriber:
    class: Drupal\Core\EventSubscriber\ContentControllerSubscriber
    arguments: ['@content_negotiation']
    tags:
      - { name: event_subscriber }
647
648
649
650
  route_special_attributes_subscriber:
    class: Drupal\Core\EventSubscriber\SpecialAttributesRouteSubscriber
    tags:
      - { name: event_subscriber }
651
652
653
654
  route_http_method_subscriber:
    class: Drupal\Core\EventSubscriber\RouteMethodSubscriber
    tags:
      - { name: event_subscriber }
655
656
657
658
659
660
661
662
663

  # Main content view subscriber plus the renderers it uses.
  main_content_view_subscriber:
    class: Drupal\Core\EventSubscriber\MainContentViewSubscriber
    arguments: ['@class_resolver', '@current_route_match', '%main_content_renderers%']
    tags:
      - { name: event_subscriber }
  main_content_renderer.html:
    class: Drupal\Core\Render\MainContent\HtmlRenderer
664
    arguments: ['@title_resolver', '@plugin.manager.display_variant', '@event_dispatcher', '@module_handler', '@renderer']
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
    tags:
      - { name: render.main_content_renderer, format: html }
  main_content_renderer.ajax:
    class: Drupal\Core\Render\MainContent\AjaxRenderer
    arguments: ['@element_info']
    tags:
      - { name: render.main_content_renderer, format: drupal_ajax }
  main_content_renderer.dialog:
    class: Drupal\Core\Render\MainContent\DialogRenderer
    arguments: ['@title_resolver']
    tags:
      - { name: render.main_content_renderer, format: drupal_dialog }
  main_content_renderer.modal:
    class: Drupal\Core\Render\MainContent\ModalRenderer
    arguments: ['@title_resolver']
    tags:
      - { name: render.main_content_renderer, format: drupal_modal }
682
683
684
685
686
687
  controller.form:
    class: Drupal\Core\Controller\HtmlFormController
    arguments: ['@controller_resolver', '@form_builder', '@class_resolver']
  controller.entity_form:
    class: Drupal\Core\Entity\HtmlEntityFormController
    arguments: ['@controller_resolver', '@form_builder', '@entity.manager']
688
689
690
691
  router_listener:
    class: Symfony\Component\HttpKernel\EventListener\RouterListener
    tags:
      - { name: event_subscriber }
692
    arguments: ['@router', '@router.request_context', NULL, '@request_stack']
693
694
695
696
697
698
  content_negotiation:
    class: Drupal\Core\ContentNegotiation
  view_subscriber:
    class: Drupal\Core\EventSubscriber\ViewSubscriber
    tags:
      - { name: event_subscriber }
699
    arguments: ['@content_negotiation', '@title_resolver']
700
701
  bare_html_page_renderer:
    class: Drupal\Core\Render\BareHtmlPageRenderer
702
    arguments: ['@renderer']
703
704
705
706
707
  private_key:
    class: Drupal\Core\PrivateKey
    arguments: ['@state']
  csrf_token:
    class: Drupal\Core\Access\CsrfTokenGenerator
708
    arguments: ['@private_key', '@session_manager.metadata_bag']
709
710
  access_arguments_resolver_factory:
    class: Drupal\Core\Access\AccessArgumentsResolverFactory
711
712
  access_manager:
    class: Drupal\Core\Access\AccessManager
713
714
715
    arguments: ['@router.route_provider', '@paramconverter_manager', '@access_arguments_resolver_factory', '@current_user', '@access_manager.check_provider']
  access_manager.check_provider:
    class: Drupal\Core\Access\CheckProvider
716
717
    calls:
      - [setContainer, ['@service_container']]
718
    public: false
719
720
721
  access_check.default:
    class: Drupal\Core\Access\DefaultAccessCheck
    tags:
722
      - { name: access_check, applies_to: _access }
723
724
725
  access_check.entity:
    class: Drupal\Core\Entity\EntityAccessCheck
    tags:
726
      - { name: access_check, applies_to: _entity_access }
727
728
  access_check.entity_create:
    class: Drupal\Core\Entity\EntityCreateAccessCheck
729
    arguments: ['@entity.manager']
730
    tags:
731
      - { name: access_check, applies_to: _entity_create_access }
732
733
734
  access_check.theme:
    class: Drupal\Core\Theme\ThemeAccessCheck
    tags:
735
      - { name: access_check, applies_to: _access_theme }
736
737
  access_check.custom:
    class: Drupal\Core\Access\CustomAccessCheck
738
    arguments: ['@controller_resolver', '@access_arguments_resolver_factory']
739
    tags:
740
      - { name: access_check, applies_to: _custom_access }
741
742
743
  access_check.csrf:
    class: Drupal\Core\Access\CsrfAccessCheck
    tags:
744
      - { name: access_check, applies_to: _csrf_token, needs_incoming_request: TRUE }
745
    arguments: ['@csrf_token']
746
747
748
  maintenance_mode:
    class: Drupal\Core\Site\MaintenanceMode
    arguments: ['@state', '@current_user']
749
750
  maintenance_mode_subscriber:
    class: Drupal\Core\EventSubscriber\MaintenanceModeSubscriber
751
    arguments: ['@maintenance_mode', '@config.factory', '@string_translation', '@url_generator', '@current_user', '@bare_html_page_renderer']
752
753
754
755
756
757
    tags:
      - { name: event_subscriber }
  path_subscriber:
    class: Drupal\Core\EventSubscriber\PathSubscriber
    tags:
      - { name: event_subscriber }
758
    arguments: ['@path.alias_manager', '@path_processor_manager']
759
760
761
762
  finish_response_subscriber:
    class: Drupal\Core\EventSubscriber\FinishResponseSubscriber
    tags:
      - { name: event_subscriber }
763
    arguments: ['@language_manager', '@config.factory', '@page_cache_request_policy', '@page_cache_response_policy']
764
765
766
767
768
  redirect_response_subscriber:
    class: Drupal\Core\EventSubscriber\RedirectResponseSubscriber
    arguments: ['@url_generator']
    tags:
      - { name: event_subscriber }
769
770
771
772
773
  request_close_subscriber:
    class: Drupal\Core\EventSubscriber\RequestCloseSubscriber
    tags:
      - { name: event_subscriber }
    arguments: ['@module_handler']
774
775
776
777
778
779
780
781
  config_import_subscriber:
    class: Drupal\Core\EventSubscriber\ConfigImportSubscriber
    tags:
      - { name: event_subscriber }
  config_snapshot_subscriber:
    class: Drupal\Core\EventSubscriber\ConfigSnapshotSubscriber
    tags:
      - { name: event_subscriber }
782
    arguments: ['@config.manager', '@config.storage', '@config.storage.snapshot']
783
784
785
786
787
788
789
790
  exception.default_json:
    class: Drupal\Core\EventSubscriber\ExceptionJsonSubscriber
    tags:
      - { name: event_subscriber }
  exception.default_html:
    class: Drupal\Core\EventSubscriber\DefaultExceptionHtmlSubscriber
    tags:
      - { name: event_subscriber }
791
    arguments: ['@http_kernel', '@logger.channel.php']
792
793
794
795
  exception.default:
    class: Drupal\Core\EventSubscriber\DefaultExceptionSubscriber
    tags:
      - { name: event_subscriber }
796
    arguments: ['@config.factory', '@bare_html_page_renderer']
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
  exception.logger:
    class: Drupal\Core\EventSubscriber\ExceptionLoggingSubscriber
    tags:
      - { name: event_subscriber }
    arguments: ['@logger.factory']
  exception.custom_page_json:
    class: Drupal\Core\EventSubscriber\ExceptionJsonSubscriber
    tags:
      - { name: event_subscriber }
    arguments: ['@config.factory', '@path.alias_manager', '@http_kernel']
  exception.custom_page_html:
    class: Drupal\Core\EventSubscriber\CustomPageExceptionHtmlSubscriber
    tags:
      - { name: event_subscriber }
    arguments: ['@config.factory', '@path.alias_manager', '@http_kernel', '@logger.channel.php']
  exception.fast_404_html:
    class: Drupal\Core\EventSubscriber\Fast404ExceptionHtmlSubscriber
    tags:
      - { name: event_subscriber }
    arguments: ['@config.factory', '@http_kernel']
  exception.test_site:
    class: Drupal\Core\EventSubscriber\ExceptionTestSiteSubscriber
819
820
    tags:
      - { name: event_subscriber }
821
822
823
824
  exception.enforced_form_response:
    class: Drupal\Core\EventSubscriber\EnforcedFormResponseSubscriber
    tags:
      - { name: event_subscriber }
825
826
  route_processor_manager:
    class: Drupal\Core\RouteProcessor\RouteProcessorManager
827
828
    tags:
      - { name: service_collector, tag: route_processor_outbound, call: addOutbound }
829
830
  path_processor_manager:
    class: Drupal\Core\PathProcessor\PathProcessorManager
831
832
833
    tags:
      - { name: service_collector, tag: path_processor_inbound, call: addInbound }
      - { name: service_collector, tag: path_processor_outbound, call: addOutbound }
834
835
836
837
838
839
840
841
  path_processor_decode:
    class: Drupal\Core\PathProcessor\PathProcessorDecode
    tags:
      - { name: path_processor_inbound, priority: 1000 }
  path_processor_front:
    class: Drupal\Core\PathProcessor\PathProcessorFront
    tags:
      - { name: path_processor_inbound, priority: 200 }
842
      - { name: path_processor_outbound, priority: 200 }
843
    arguments: ['@config.factory']
844
845
  route_processor_none:
    class: Drupal\Core\RouteProcessor\RouteProcessorNone
846
    tags:
847
848
849
850
      - { name: route_processor_outbound, priority: 200 }
  route_processor_current:
    class: Drupal\Core\RouteProcessor\RouteProcessorCurrent
    arguments: ['@current_route_match']
851
    tags:
852
      - { name: route_processor_outbound, priority: 200 }
853
854
855
856
  path_processor_alias:
    class: Drupal\Core\PathProcessor\PathProcessorAlias
    tags:
      - { name: path_processor_inbound, priority: 100 }
857
      - { name: path_processor_outbound, priority: 300 }
858
    arguments: ['@path.alias_manager']
859
  route_processor_csrf:
860
861
862
863
    class: Drupal\Core\Access\RouteProcessorCsrf
    tags:
      - { name: route_processor_outbound }
    arguments: ['@csrf_token']
864
865
866
867
  transliteration:
    class: Drupal\Core\Transliteration\PHPTransliteration
  flood:
    class: Drupal\Core\Flood\DatabaseBackend
868
    arguments: ['@database', '@request_stack']
869
870
    tags:
      - { name: backend_overridable }
871
872
  plugin.manager.mail:
    class: Drupal\Core\Mail\MailManager
873
    arguments: ['@container.namespaces', '@cache.discovery', '@module_handler', '@config.factory', '@logger.factory', '@string_translation']
874
875
  plugin.manager.condition:
    class: Drupal\Core\Condition\ConditionManager
876
    parent: default_plugin_manager
877
878
879
  plugin.manager.element_info:
    class: Drupal\Core\Render\ElementInfoManager
    parent: default_plugin_manager
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
  stream_wrapper_manager:
    class: Drupal\Core\StreamWrapper\StreamWrapperManager
    arguments: ['@module_handler']
    calls:
      - [setContainer, ['@service_container']]
  stream_wrapper.public:
    class: Drupal\Core\StreamWrapper\PublicStream
    tags:
      - { name: stream_wrapper, scheme: public }
  stream_wrapper.private:
    class: Drupal\Core\StreamWrapper\PrivateStream
    tags:
      - { name: stream_wrapper, scheme: private }
  stream_wrapper.temporary:
    class: Drupal\Core\StreamWrapper\TemporaryStream
    tags:
      - { name: stream_wrapper, scheme: temporary }
897
898
899
900
901
902
903
904
905
906
907
  kernel_destruct_subscriber:
    class: Drupal\Core\EventSubscriber\KernelDestructionSubscriber
    tags:
      - { name: event_subscriber }
    calls:
      - [setContainer, ['@service_container']]
  ajax.subscriber:
    class: Drupal\Core\Ajax\AjaxSubscriber
    tags:
      - { name: event_subscriber }
  image.toolkit.manager:
908
    class: Drupal\Core\ImageToolkit\ImageToolkitManager
909
910
    arguments: ['@config.factory']
    parent: default_plugin_manager
911
912
  image.toolkit.operation.manager:
    class: Drupal\Core\ImageToolkit\ImageToolkitOperationManager
913
    arguments: ['@logger.channel.image']
914
    parent: default_plugin_manager
915
916
  image.factory:
    class: Drupal\Core\Image\ImageFactory
917
    arguments: ['@image.toolkit.manager']
918
919
  breadcrumb:
    class: Drupal\Core\Breadcrumb\BreadcrumbManager
920
    arguments: ['@module_handler']
921
922
    tags:
      - { name: service_collector, tag: breadcrumb_builder, call: addBuilder }
923
924
  token:
    class: Drupal\Core\Utility\Token
925
    arguments: ['@module_handler', '@cache.discovery', '@language_manager']
926
  batch.storage:
927
    class: Drupal\Core\Batch\BatchStorage
928
    arguments: ['@database', '@session_manager', '@csrf_token']
929
930
    tags:
      - { name: backend_overridable }
931
932
  replica_database_ignore__subscriber:
    class: Drupal\Core\EventSubscriber\ReplicaDatabaseIgnoreSubscriber
933
934
    tags:
      - {name: event_subscriber}
935
936
937
  country_manager:
    class: Drupal\Core\Locale\CountryManager
    arguments: ['@module_handler']
938
939
  date.formatter:
    class: Drupal\Core\Datetime\DateFormatter
940
    arguments: ['@entity.manager', '@language_manager', '@string_translation', '@config.factory']
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
  feed.bridge.reader:
    class: Drupal\Component\Bridge\ZfExtensionManagerSfContainer
    calls:
      - [setContainer, ['@service_container']]
    arguments: ['feed.reader.']
  feed.bridge.writer:
    class: Drupal\Component\Bridge\ZfExtensionManagerSfContainer
    calls:
      - [setContainer, ['@service_container']]
    arguments: ['feed.writer.']
# Zend Feed reader plugins
  feed.reader.dublincoreentry:
    class: Zend\Feed\Reader\Extension\DublinCore\Entry
  feed.reader.dublincorefeed:
    class: Zend\Feed\Reader\Extension\DublinCore\Feed
  feed.reader.contententry:
    class: Zend\Feed\Reader\Extension\Content\Entry
  feed.reader.atomentry:
    class: Zend\Feed\Reader\Extension\Atom\Entry
  feed.reader.atomfeed:
    class: Zend\Feed\Reader\Extension\Atom\Feed
  feed.reader.slashentry:
    class: Zend\Feed\Reader\Extension\Slash\Entry
  feed.reader.wellformedwebentry:
    class: Zend\Feed\Reader\Extension\WellFormedWeb\Entry
  feed.reader.threadentry:
    class: Zend\Feed\Reader\Extension\Thread\Entry
  feed.reader.podcastentry:
    class: Zend\Feed\Reader\Extension\Podcast\Entry
  feed.reader.podcastfeed:
    class: Zend\Feed\Reader\Extension\Podcast\Feed
# Zend Feed writer plugins
  feed.writer.atomrendererfeed:
    class: Zend\Feed\Writer\Extension\Atom\Renderer\Feed
  feed.writer.contentrendererentry:
    class: Zend\Feed\Writer\Extension\Content\Renderer\Entry
  feed.writer.dublincorerendererentry:
    class: Zend\Feed\Writer\Extension\DublinCore\Renderer\Entry
  feed.writer.dublincorerendererfeed:
    class: Zend\Feed\Writer\Extension\DublinCore\Renderer\Feed
  feed.writer.itunesentry:
    class: Zend\Feed\Writer\Extension\ITunes\Entry
  feed.writer.itunesfeed:
    class: Zend\Feed\Writer\Extension\ITunes\Feed
  feed.writer.itunesrendererentry:
    class: Zend\Feed\Writer\Extension\ITunes\Renderer\Entry
  feed.writer.itunesrendererfeed:
    class: Zend\Feed\Writer\Extension\ITunes\Renderer\Feed
  feed.writer.slashrendererentry:
    class: Zend\Feed\Writer\Extension\Slash\Renderer\Entry
  feed.writer.threadingrendererentry:
    class: Zend\Feed\Writer\Extension\Threading\Renderer\Entry
  feed.writer.wellformedwebrendererentry:
    class: Zend\Feed\Writer\Extension\WellFormedWeb\Renderer\Entry
995
996
  theme.manager:
    class: Drupal\Core\Theme\ThemeManager
997
    arguments: ['@app.root', '@theme.registry', '@theme.negotiator', '@theme.initialization', '@request_stack', '@module_handler']
998
999
  theme.initialization:
    class: Drupal\Core\Theme\ThemeInitialization
1000
    arguments: ['@app.root', '@theme_handler', '@state']
1001
1002
  theme.registry:
    class: Drupal\Core\Theme\Registry
1003
    arguments: ['@app.root', '@cache.default', '@lock', '@module_handler']
1004
1005
    tags:
      - { name: needs_destruction }
1006
1007
  authentication:
    class: Drupal\Core\Authentication\AuthenticationManager
1008
1009
    tags:
      - { name: service_collector, tag: authentication_provider, call: addProvider }
1010
1011
1012
1013
1014
  authentication_subscriber:
    class: Drupal\Core\EventSubscriber\AuthenticationSubscriber
    tags:
      - { name: event_subscriber }
    arguments: ['@authentication']
1015
1016
1017
  account_switcher:
    class: Drupal\Core\Session\AccountSwitcher
    arguments: ['@current_user', '@session_manager']
1018
  current_user:
1019
    class: Drupal\Core\Session\AccountProxy
1020
    arguments: ['@authentication', '@request_stack']
1021
1022
  session_manager:
    class: Drupal\Core\Session\SessionManager
1023
    arguments: ['@request_stack', '@database', '@session_manager.metadata_bag', '@settings']
1024
1025
    tags:
      - { name: backend_overridable }
1026
1027
1028
  session_manager.metadata_bag:
    class: Drupal\Core\Session\MetadataBag
    arguments: ['@settings']
1029
1030
  asset.css.collection_renderer:
    class: Drupal\Core\Asset\CssCollectionRenderer
1031
    arguments: [ '@state' ]
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
  asset.css.collection_optimizer:
    class: Drupal\Core\Asset\CssCollectionOptimizer
    arguments: [ '@asset.css.collection_grouper', '@asset.css.optimizer', '@asset.css.dumper', '@state' ]
  asset.css.optimizer:
    class: Drupal\Core\Asset\CssOptimizer
  asset.css.collection_grouper:
    class: Drupal\Core\Asset\CssCollectionGrouper
  asset.css.dumper:
    class: Drupal\Core\Asset\AssetDumper
  asset.js.collection_renderer:
    class: Drupal\Core\Asset\JsCollectionRenderer
1043
    arguments: [ '@state' ]
1044
1045
1046
1047
1048
1049
1050
1051
1052
  asset.js.collection_optimizer:
    class: Drupal\Core\Asset\JsCollectionOptimizer
    arguments: [ '@asset.js.collection_grouper', '@asset.js.optimizer', '@asset.js.dumper', '@state' ]
  asset.js.optimizer:
    class: Drupal\Core\Asset\JsOptimizer
  asset.js.collection_grouper:
    class: Drupal\Core\Asset\JsCollectionGrouper
  asset.js.dumper:
    class: Drupal\Core\Asset\AssetDumper
1053
1054
  library.discovery:
    class: Drupal\Core\Asset\LibraryDiscovery
1055
    arguments: ['@library.discovery.collector', '@module_handler']
1056
1057
1058
1059
1060
1061
1062
  library.discovery.collector:
    class: Drupal\Core\Asset\LibraryDiscoveryCollector
    arguments: ['@cache.discovery', '@lock', '@library.discovery.parser']
    tags:
      - { name: needs_destruction }
  library.discovery.parser:
    class: Drupal\Core\Asset\LibraryDiscoveryParser
1063
    arguments: ['@app.root', '@module_handler']
1064
1065
  info_parser:
    class: Drupal\Core\Extension\InfoParser
1066
1067
  twig:
    class: Drupal\Core\Template\TwigEnvironment
1068
    arguments: ['@app.root', '@twig.loader', '@module_handler', '@theme_handler', '%twig.config%']