core.services.yml 42 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', '@current_user', '@session_manager', '@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
    tags:
      - { name: needs_destruction }
202
203
204
205
206
  logger.factory:
    class: Drupal\Core\Logger\LoggerChannelFactory
    parent: container.trait
    tags:
      - { name: service_collector, tag: logger, call: addLogger }
207
208
  logger.channel_base:
    abstract: true
209
210
211
    class: Drupal\Core\Logger\LoggerChannel
    factory_method: get
    factory_service: logger.factory
212
213
  logger.channel.default:
    parent: logger.channel_base
214
    arguments: ['system']
215
  logger.channel.php:
216
    parent: logger.channel_base
217
    arguments: ['php']
218
  logger.channel.image:
219
    parent: logger.channel_base
220
    arguments: ['image']
221
  logger.channel.cron:
222
    parent: logger.channel_base
223
224
    arguments: ['cron']
  logger.channel.form:
225
    parent: logger.channel_base
226
    arguments: ['form']
227
228
  logger.log_message_parser:
    class: Drupal\Core\Logger\LogMessageParser
229
230
231
232
233
234
235
236

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

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

571
572
573
574
575
576
577
578
579
# 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]
580
581
582
583
584
585
586
  accept_header_matcher:
    class: Drupal\Core\Routing\AcceptHeaderMatcher
    arguments: ['@content_negotiation']
    tags:
      - { name: route_filter }
  content_type_header_matcher:
    class: Drupal\Core\Routing\ContentTypeHeaderMatcher
587
588
589
590
    tags:
      - { name: route_filter }
  paramconverter_manager:
    class: Drupal\Core\ParamConverter\ParamConverterManager
591
592
    tags:
      - { name: service_collector, tag: paramconverter, call: addConverter }
593
594
595
596
597
  paramconverter_subscriber:
    class: Drupal\Core\EventSubscriber\ParamConverterSubscriber
    tags:
      - { name: event_subscriber }
    arguments: ['@paramconverter_manager']
598
599
600
601
  paramconverter.entity:
    class: Drupal\Core\ParamConverter\EntityConverter
    tags:
      - { name: paramconverter }
602
    arguments: ['@entity.manager']
603
604
605
606
607
608
  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']
609
610
611
612
613
  route_subscriber.module:
    class: Drupal\Core\EventSubscriber\ModuleRouteSubscriber
    tags:
      - { name: event_subscriber }
    arguments: ['@module_handler']
614
615
  resolver_manager.entity:
    class: Drupal\Core\Entity\EntityResolverManager
616
    arguments: ['@entity.manager', '@class_resolver']
617
618
619
620
  route_subscriber.entity:
    class: Drupal\Core\EventSubscriber\EntityRouteAlterSubscriber
    tags:
      - { name: event_subscriber }
621
    arguments: ['@resolver_manager.entity']
622
623
  ajax_subscriber:
    class: Drupal\Core\EventSubscriber\AjaxSubscriber
624
625
    tags:
      - { name: event_subscriber }
626
627
628
629
630
631
  route_enhancer.param_conversion:
    class: Drupal\Core\Routing\Enhancer\ParamConversionEnhancer
    arguments: ['@paramconverter_manager']
    tags:
      - { name: route_enhancer }
      - { name: event_subscriber }
632
633
634
635
  route_enhancer.authentication:
    class: Drupal\Core\Routing\Enhancer\AuthenticationEnhancer
    tags:
      - { name: route_enhancer, priority: 1000 }
636
    arguments: ['@authentication', '@current_user']
637
638
  route_enhancer.entity:
    class: Drupal\Core\Entity\Enhancer\EntityRouteEnhancer
639
    arguments: ['@controller_resolver', '@entity.manager', '@form_builder']
640
    tags:
641
      - { name: route_enhancer, priority: 20 }
642
643
644
645
646
647
648
  route_content_controller_subscriber:
    class: Drupal\Core\EventSubscriber\ContentControllerSubscriber
    arguments: ['@content_negotiation']
    tags:
      - { name: event_subscriber }
  route_content_form_controller_subscriber:
    class: Drupal\Core\EventSubscriber\ContentFormControllerSubscriber
649
    arguments: ['@class_resolver', '@controller_resolver', '@form_builder']
650
    parent: container.trait
651
    tags:
652
      - { name: event_subscriber }
653
654
655
656
  route_special_attributes_subscriber:
    class: Drupal\Core\EventSubscriber\SpecialAttributesRouteSubscriber
    tags:
      - { name: event_subscriber }
657
658
659
660
  route_http_method_subscriber:
    class: Drupal\Core\EventSubscriber\RouteMethodSubscriber
    tags:
      - { name: event_subscriber }
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688

  # 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
    arguments: ['@title_resolver', '@plugin.manager.display_variant', '@event_dispatcher', '@module_handler']
    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 }

689
690
691
692
  router_listener:
    class: Symfony\Component\HttpKernel\EventListener\RouterListener
    tags:
      - { name: event_subscriber }
693
    arguments: ['@router', '@router.request_context', NULL, '@request_stack']
694
695
696
697
698
699
  content_negotiation:
    class: Drupal\Core\ContentNegotiation
  view_subscriber:
    class: Drupal\Core\EventSubscriber\ViewSubscriber
    tags:
      - { name: event_subscriber }
700
    arguments: ['@content_negotiation', '@title_resolver']
701
702
  bare_html_page_renderer:
    class: Drupal\Core\Render\BareHtmlPageRenderer
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: ['@theme.registry', '@theme.negotiator', '@theme.initialization', '@request_stack']
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
  current_user:
1016
    class: Drupal\Core\Session\AccountProxy
1017
    arguments: ['@authentication', '@request_stack']
1018
1019
  session_manager:
    class: Drupal\Core\Session\SessionManager
1020
    arguments: ['@request_stack', '@database', '@session_manager.metadata_bag', '@settings']
1021
1022
    tags:
      - { name: backend_overridable }
1023
1024
1025
  session_manager.metadata_bag:
    class: Drupal\Core\Session\MetadataBag
    arguments: ['@settings']
1026
1027
  asset.css.collection_renderer:
    class: Drupal\Core\Asset\CssCollectionRenderer
1028
    arguments: [ '@state' ]
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
  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
1040
    arguments: [ '@state' ]
1041
1042
1043
1044
1045
1046
1047
1048
1049
  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
1050
1051
  library.discovery:
    class: Drupal\Core\Asset\LibraryDiscovery
1052
1053
1054
1055
1056
1057
1058
1059
    arguments: ['@library.discovery.collector']
  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
1060
    arguments: ['@app.root', '@module_handler']
1061
1062
  info_parser:
    class: Drupal\Core\Extension\InfoParser
1063
1064
  twig:
    class: Drupal\Core\Template\TwigEnvironment
1065
    arguments: ['@app.root', '@twig.loader', '@module_handler', '@theme_handler', '%twig.config%']
1066
1067
1068
1069
1070
1071
1072
1073
    tags:
      - { name: service_collector, tag: 'twig.extension', call: addExtension }
  twig.extension:
    class: Drupal\Core\Template\TwigExtension
    tags:
      - { name: twig.extension, priority: