Passed
Pull Request — main (#557)
by Johan
10:16 queued 05:20
created

App   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 10
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 2
dl 0
loc 10
rs 10
c 1
b 0
f 0
wmc 1

1 Method

Rating   Name   Duplication   Size   Complexity  
A config() 0 3 1
1
<?php
2
3
// This file is auto-generated and is for apps only. Bundles SHOULD NOT rely on its content.
4
5
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
6
7
/**
8
 * This class provides array-shapes for configuring the services and bundles of an application.
9
 *
10
 * Services declared with the config() method below are autowired and autoconfigured by default.
11
 *
12
 * This is for apps only. Bundles SHOULD NOT use it.
13
 *
14
 * Example:
15
 *
16
 *     ```php
17
 *     // config/services.php
18
 *     namespace Symfony\Component\DependencyInjection\Loader\Configurator;
19
 *
20
 *     return App::config([
21
 *         'services' => [
22
 *             'App\\' => [
23
 *                 'resource' => '../src/',
24
 *             ],
25
 *         ],
26
 *     ]);
27
 *     ```
28
 *
29
 * @psalm-type ImportsConfig = list<string|array{
30
 *     resource: string,
31
 *     type?: string|null,
32
 *     ignore_errors?: bool,
33
 * }>
34
 * @psalm-type ParametersConfig = array<string, scalar|\UnitEnum|array<scalar|\UnitEnum|array<mixed>|null>|null>
35
 * @psalm-type ArgumentsType = list<mixed>|array<string, mixed>
36
 * @psalm-type CallType = array<string, ArgumentsType>|array{0:string, 1?:ArgumentsType, 2?:bool}|array{method:string, arguments?:ArgumentsType, returns_clone?:bool}
37
 * @psalm-type TagsType = list<string|array<string, array<string, mixed>>> // arrays inside the list must have only one element, with the tag name as the key
38
 * @psalm-type CallbackType = string|array{0:string|ReferenceConfigurator,1:string}|\Closure|ReferenceConfigurator|ExpressionConfigurator
39
 * @psalm-type DeprecationType = array{package: string, version: string, message?: string}
40
 * @psalm-type DefaultsType = array{
41
 *     public?: bool,
42
 *     tags?: TagsType,
43
 *     resource_tags?: TagsType,
44
 *     autowire?: bool,
45
 *     autoconfigure?: bool,
46
 *     bind?: array<string, mixed>,
47
 * }
48
 * @psalm-type InstanceofType = array{
49
 *     shared?: bool,
50
 *     lazy?: bool|string,
51
 *     public?: bool,
52
 *     properties?: array<string, mixed>,
53
 *     configurator?: CallbackType,
54
 *     calls?: list<CallType>,
55
 *     tags?: TagsType,
56
 *     resource_tags?: TagsType,
57
 *     autowire?: bool,
58
 *     bind?: array<string, mixed>,
59
 *     constructor?: string,
60
 * }
61
 * @psalm-type DefinitionType = array{
62
 *     class?: string,
63
 *     file?: string,
64
 *     parent?: string,
65
 *     shared?: bool,
66
 *     synthetic?: bool,
67
 *     lazy?: bool|string,
68
 *     public?: bool,
69
 *     abstract?: bool,
70
 *     deprecated?: DeprecationType,
71
 *     factory?: CallbackType,
72
 *     configurator?: CallbackType,
73
 *     arguments?: ArgumentsType,
74
 *     properties?: array<string, mixed>,
75
 *     calls?: list<CallType>,
76
 *     tags?: TagsType,
77
 *     resource_tags?: TagsType,
78
 *     decorates?: string,
79
 *     decoration_inner_name?: string,
80
 *     decoration_priority?: int,
81
 *     decoration_on_invalid?: 'exception'|'ignore'|null,
82
 *     autowire?: bool,
83
 *     autoconfigure?: bool,
84
 *     bind?: array<string, mixed>,
85
 *     constructor?: string,
86
 *     from_callable?: CallbackType,
87
 * }
88
 * @psalm-type AliasType = string|array{
89
 *     alias: string,
90
 *     public?: bool,
91
 *     deprecated?: DeprecationType,
92
 * }
93
 * @psalm-type PrototypeType = array{
94
 *     resource: string,
95
 *     namespace?: string,
96
 *     exclude?: string|list<string>,
97
 *     parent?: string,
98
 *     shared?: bool,
99
 *     lazy?: bool|string,
100
 *     public?: bool,
101
 *     abstract?: bool,
102
 *     deprecated?: DeprecationType,
103
 *     factory?: CallbackType,
104
 *     arguments?: ArgumentsType,
105
 *     properties?: array<string, mixed>,
106
 *     configurator?: CallbackType,
107
 *     calls?: list<CallType>,
108
 *     tags?: TagsType,
109
 *     resource_tags?: TagsType,
110
 *     autowire?: bool,
111
 *     autoconfigure?: bool,
112
 *     bind?: array<string, mixed>,
113
 *     constructor?: string,
114
 * }
115
 * @psalm-type StackType = array{
116
 *     stack: list<DefinitionType|AliasType|PrototypeType|array<class-string, ArgumentsType|null>>,
117
 *     public?: bool,
118
 *     deprecated?: DeprecationType,
119
 * }
120
 * @psalm-type ServicesConfig = array{
121
 *     _defaults?: DefaultsType,
122
 *     _instanceof?: InstanceofType,
123
 *     ...<string, DefinitionType|AliasType|PrototypeType|StackType|ArgumentsType|null>
124
 * }
125
 * @psalm-type ExtensionType = array<string, mixed>
126
 * @psalm-type FrameworkConfig = array{
127
 *     secret?: scalar|null,
128
 *     http_method_override?: bool, // Set true to enable support for the '_method' request parameter to determine the intended HTTP method on POST requests. // Default: false
129
 *     allowed_http_method_override?: list<string>|null,
130
 *     trust_x_sendfile_type_header?: scalar|null, // Set true to enable support for xsendfile in binary file responses. // Default: "%env(bool:default::SYMFONY_TRUST_X_SENDFILE_TYPE_HEADER)%"
131
 *     ide?: scalar|null, // Default: null
132
 *     test?: bool,
133
 *     default_locale?: scalar|null, // Default: "en"
134
 *     set_locale_from_accept_language?: bool, // Whether to use the Accept-Language HTTP header to set the Request locale (only when the "_locale" request attribute is not passed). // Default: false
135
 *     set_content_language_from_locale?: bool, // Whether to set the Content-Language HTTP header on the Response using the Request locale. // Default: false
136
 *     enabled_locales?: list<scalar|null>,
137
 *     trusted_hosts?: list<scalar|null>,
138
 *     trusted_proxies?: mixed, // Default: ["%env(default::SYMFONY_TRUSTED_PROXIES)%"]
139
 *     trusted_headers?: list<scalar|null>,
140
 *     error_controller?: scalar|null, // Default: "error_controller"
141
 *     handle_all_throwables?: bool, // HttpKernel will handle all kinds of \Throwable. // Default: true
142
 *     csrf_protection?: bool|array{
143
 *         enabled?: scalar|null, // Default: null
144
 *         stateless_token_ids?: list<scalar|null>,
145
 *         check_header?: scalar|null, // Whether to check the CSRF token in a header in addition to a cookie when using stateless protection. // Default: false
146
 *         cookie_name?: scalar|null, // The name of the cookie to use when using stateless protection. // Default: "csrf-token"
147
 *     },
148
 *     form?: bool|array{ // Form configuration
149
 *         enabled?: bool, // Default: true
150
 *         csrf_protection?: array{
151
 *             enabled?: scalar|null, // Default: null
152
 *             token_id?: scalar|null, // Default: null
153
 *             field_name?: scalar|null, // Default: "_token"
154
 *             field_attr?: array<string, scalar|null>,
155
 *         },
156
 *     },
157
 *     http_cache?: bool|array{ // HTTP cache configuration
158
 *         enabled?: bool, // Default: false
159
 *         debug?: bool, // Default: "%kernel.debug%"
160
 *         trace_level?: "none"|"short"|"full",
161
 *         trace_header?: scalar|null,
162
 *         default_ttl?: int,
163
 *         private_headers?: list<scalar|null>,
164
 *         skip_response_headers?: list<scalar|null>,
165
 *         allow_reload?: bool,
166
 *         allow_revalidate?: bool,
167
 *         stale_while_revalidate?: int,
168
 *         stale_if_error?: int,
169
 *         terminate_on_cache_hit?: bool,
170
 *     },
171
 *     esi?: bool|array{ // ESI configuration
172
 *         enabled?: bool, // Default: false
173
 *     },
174
 *     ssi?: bool|array{ // SSI configuration
175
 *         enabled?: bool, // Default: false
176
 *     },
177
 *     fragments?: bool|array{ // Fragments configuration
178
 *         enabled?: bool, // Default: false
179
 *         hinclude_default_template?: scalar|null, // Default: null
180
 *         path?: scalar|null, // Default: "/_fragment"
181
 *     },
182
 *     profiler?: bool|array{ // Profiler configuration
183
 *         enabled?: bool, // Default: false
184
 *         collect?: bool, // Default: true
185
 *         collect_parameter?: scalar|null, // The name of the parameter to use to enable or disable collection on a per request basis. // Default: null
186
 *         only_exceptions?: bool, // Default: false
187
 *         only_main_requests?: bool, // Default: false
188
 *         dsn?: scalar|null, // Default: "file:%kernel.cache_dir%/profiler"
189
 *         collect_serializer_data?: bool, // Enables the serializer data collector and profiler panel. // Default: false
190
 *     },
191
 *     workflows?: bool|array{
192
 *         enabled?: bool, // Default: false
193
 *         workflows?: array<string, array{ // Default: []
194
 *             audit_trail?: bool|array{
195
 *                 enabled?: bool, // Default: false
196
 *             },
197
 *             type?: "workflow"|"state_machine", // Default: "state_machine"
198
 *             marking_store?: array{
199
 *                 type?: "method",
200
 *                 property?: scalar|null,
201
 *                 service?: scalar|null,
202
 *             },
203
 *             supports?: list<scalar|null>,
204
 *             definition_validators?: list<scalar|null>,
205
 *             support_strategy?: scalar|null,
206
 *             initial_marking?: list<scalar|null>,
207
 *             events_to_dispatch?: list<string>|null,
208
 *             places?: list<array{ // Default: []
209
 *                 name: scalar|null,
210
 *                 metadata?: list<mixed>,
211
 *             }>,
212
 *             transitions: list<array{ // Default: []
213
 *                 name: string,
214
 *                 guard?: string, // An expression to block the transition.
215
 *                 from?: list<array{ // Default: []
216
 *                     place: string,
217
 *                     weight?: int, // Default: 1
218
 *                 }>,
219
 *                 to?: list<array{ // Default: []
220
 *                     place: string,
221
 *                     weight?: int, // Default: 1
222
 *                 }>,
223
 *                 weight?: int, // Default: 1
224
 *                 metadata?: list<mixed>,
225
 *             }>,
226
 *             metadata?: list<mixed>,
227
 *         }>,
228
 *     },
229
 *     router?: bool|array{ // Router configuration
230
 *         enabled?: bool, // Default: false
231
 *         resource: scalar|null,
232
 *         type?: scalar|null,
233
 *         cache_dir?: scalar|null, // Deprecated: Setting the "framework.router.cache_dir.cache_dir" configuration option is deprecated. It will be removed in version 8.0. // Default: "%kernel.build_dir%"
234
 *         default_uri?: scalar|null, // The default URI used to generate URLs in a non-HTTP context. // Default: null
235
 *         http_port?: scalar|null, // Default: 80
236
 *         https_port?: scalar|null, // Default: 443
237
 *         strict_requirements?: scalar|null, // set to true to throw an exception when a parameter does not match the requirements set to false to disable exceptions when a parameter does not match the requirements (and return null instead) set to null to disable parameter checks against requirements 'true' is the preferred configuration in development mode, while 'false' or 'null' might be preferred in production // Default: true
238
 *         utf8?: bool, // Default: true
239
 *     },
240
 *     session?: bool|array{ // Session configuration
241
 *         enabled?: bool, // Default: false
242
 *         storage_factory_id?: scalar|null, // Default: "session.storage.factory.native"
243
 *         handler_id?: scalar|null, // Defaults to using the native session handler, or to the native *file* session handler if "save_path" is not null.
244
 *         name?: scalar|null,
245
 *         cookie_lifetime?: scalar|null,
246
 *         cookie_path?: scalar|null,
247
 *         cookie_domain?: scalar|null,
248
 *         cookie_secure?: true|false|"auto", // Default: "auto"
249
 *         cookie_httponly?: bool, // Default: true
250
 *         cookie_samesite?: null|"lax"|"strict"|"none", // Default: "lax"
251
 *         use_cookies?: bool,
252
 *         gc_divisor?: scalar|null,
253
 *         gc_probability?: scalar|null,
254
 *         gc_maxlifetime?: scalar|null,
255
 *         save_path?: scalar|null, // Defaults to "%kernel.cache_dir%/sessions" if the "handler_id" option is not null.
256
 *         metadata_update_threshold?: int, // Seconds to wait between 2 session metadata updates. // Default: 0
257
 *         sid_length?: int, // Deprecated: Setting the "framework.session.sid_length.sid_length" configuration option is deprecated. It will be removed in version 8.0. No alternative is provided as PHP 8.4 has deprecated the related option.
258
 *         sid_bits_per_character?: int, // Deprecated: Setting the "framework.session.sid_bits_per_character.sid_bits_per_character" configuration option is deprecated. It will be removed in version 8.0. No alternative is provided as PHP 8.4 has deprecated the related option.
259
 *     },
260
 *     request?: bool|array{ // Request configuration
261
 *         enabled?: bool, // Default: false
262
 *         formats?: array<string, string|list<scalar|null>>,
263
 *     },
264
 *     assets?: bool|array{ // Assets configuration
265
 *         enabled?: bool, // Default: true
266
 *         strict_mode?: bool, // Throw an exception if an entry is missing from the manifest.json. // Default: false
267
 *         version_strategy?: scalar|null, // Default: null
268
 *         version?: scalar|null, // Default: null
269
 *         version_format?: scalar|null, // Default: "%%s?%%s"
270
 *         json_manifest_path?: scalar|null, // Default: null
271
 *         base_path?: scalar|null, // Default: ""
272
 *         base_urls?: list<scalar|null>,
273
 *         packages?: array<string, array{ // Default: []
274
 *             strict_mode?: bool, // Throw an exception if an entry is missing from the manifest.json. // Default: false
275
 *             version_strategy?: scalar|null, // Default: null
276
 *             version?: scalar|null,
277
 *             version_format?: scalar|null, // Default: null
278
 *             json_manifest_path?: scalar|null, // Default: null
279
 *             base_path?: scalar|null, // Default: ""
280
 *             base_urls?: list<scalar|null>,
281
 *         }>,
282
 *     },
283
 *     asset_mapper?: bool|array{ // Asset Mapper configuration
284
 *         enabled?: bool, // Default: false
285
 *         paths?: array<string, scalar|null>,
286
 *         excluded_patterns?: list<scalar|null>,
287
 *         exclude_dotfiles?: bool, // If true, any files starting with "." will be excluded from the asset mapper. // Default: true
288
 *         server?: bool, // If true, a "dev server" will return the assets from the public directory (true in "debug" mode only by default). // Default: false
289
 *         public_prefix?: scalar|null, // The public path where the assets will be written to (and served from when "server" is true). // Default: "/assets/"
290
 *         missing_import_mode?: "strict"|"warn"|"ignore", // Behavior if an asset cannot be found when imported from JavaScript or CSS files - e.g. "import './non-existent.js'". "strict" means an exception is thrown, "warn" means a warning is logged, "ignore" means the import is left as-is. // Default: "warn"
291
 *         extensions?: array<string, scalar|null>,
292
 *         importmap_path?: scalar|null, // The path of the importmap.php file. // Default: "%kernel.project_dir%/importmap.php"
293
 *         importmap_polyfill?: scalar|null, // The importmap name that will be used to load the polyfill. Set to false to disable. // Default: "es-module-shims"
294
 *         importmap_script_attributes?: array<string, scalar|null>,
295
 *         vendor_dir?: scalar|null, // The directory to store JavaScript vendors. // Default: "%kernel.project_dir%/assets/vendor"
296
 *         precompress?: bool|array{ // Precompress assets with Brotli, Zstandard and gzip.
297
 *             enabled?: bool, // Default: false
298
 *             formats?: list<scalar|null>,
299
 *             extensions?: list<scalar|null>,
300
 *         },
301
 *     },
302
 *     translator?: bool|array{ // Translator configuration
303
 *         enabled?: bool, // Default: true
304
 *         fallbacks?: list<scalar|null>,
305
 *         logging?: bool, // Default: false
306
 *         formatter?: scalar|null, // Default: "translator.formatter.default"
307
 *         cache_dir?: scalar|null, // Default: "%kernel.cache_dir%/translations"
308
 *         default_path?: scalar|null, // The default path used to load translations. // Default: "%kernel.project_dir%/translations"
309
 *         paths?: list<scalar|null>,
310
 *         pseudo_localization?: bool|array{
311
 *             enabled?: bool, // Default: false
312
 *             accents?: bool, // Default: true
313
 *             expansion_factor?: float, // Default: 1.0
314
 *             brackets?: bool, // Default: true
315
 *             parse_html?: bool, // Default: false
316
 *             localizable_html_attributes?: list<scalar|null>,
317
 *         },
318
 *         providers?: array<string, array{ // Default: []
319
 *             dsn?: scalar|null,
320
 *             domains?: list<scalar|null>,
321
 *             locales?: list<scalar|null>,
322
 *         }>,
323
 *         globals?: array<string, string|array{ // Default: []
324
 *             value?: mixed,
325
 *             message?: string,
326
 *             parameters?: array<string, scalar|null>,
327
 *             domain?: string,
328
 *         }>,
329
 *     },
330
 *     validation?: bool|array{ // Validation configuration
331
 *         enabled?: bool, // Default: true
332
 *         cache?: scalar|null, // Deprecated: Setting the "framework.validation.cache.cache" configuration option is deprecated. It will be removed in version 8.0.
333
 *         enable_attributes?: bool, // Default: true
334
 *         static_method?: list<scalar|null>,
335
 *         translation_domain?: scalar|null, // Default: "validators"
336
 *         email_validation_mode?: "html5"|"html5-allow-no-tld"|"strict"|"loose", // Default: "html5"
337
 *         mapping?: array{
338
 *             paths?: list<scalar|null>,
339
 *         },
340
 *         not_compromised_password?: bool|array{
341
 *             enabled?: bool, // When disabled, compromised passwords will be accepted as valid. // Default: true
342
 *             endpoint?: scalar|null, // API endpoint for the NotCompromisedPassword Validator. // Default: null
343
 *         },
344
 *         disable_translation?: bool, // Default: false
345
 *         auto_mapping?: array<string, array{ // Default: []
346
 *             services?: list<scalar|null>,
347
 *         }>,
348
 *     },
349
 *     annotations?: bool|array{
350
 *         enabled?: bool, // Default: false
351
 *     },
352
 *     serializer?: bool|array{ // Serializer configuration
353
 *         enabled?: bool, // Default: false
354
 *         enable_attributes?: bool, // Default: true
355
 *         name_converter?: scalar|null,
356
 *         circular_reference_handler?: scalar|null,
357
 *         max_depth_handler?: scalar|null,
358
 *         mapping?: array{
359
 *             paths?: list<scalar|null>,
360
 *         },
361
 *         default_context?: list<mixed>,
362
 *         named_serializers?: array<string, array{ // Default: []
363
 *             name_converter?: scalar|null,
364
 *             default_context?: list<mixed>,
365
 *             include_built_in_normalizers?: bool, // Whether to include the built-in normalizers // Default: true
366
 *             include_built_in_encoders?: bool, // Whether to include the built-in encoders // Default: true
367
 *         }>,
368
 *     },
369
 *     property_access?: bool|array{ // Property access configuration
370
 *         enabled?: bool, // Default: true
371
 *         magic_call?: bool, // Default: false
372
 *         magic_get?: bool, // Default: true
373
 *         magic_set?: bool, // Default: true
374
 *         throw_exception_on_invalid_index?: bool, // Default: false
375
 *         throw_exception_on_invalid_property_path?: bool, // Default: true
376
 *     },
377
 *     type_info?: bool|array{ // Type info configuration
378
 *         enabled?: bool, // Default: true
379
 *         aliases?: array<string, scalar|null>,
380
 *     },
381
 *     property_info?: bool|array{ // Property info configuration
382
 *         enabled?: bool, // Default: true
383
 *         with_constructor_extractor?: bool, // Registers the constructor extractor.
384
 *     },
385
 *     cache?: array{ // Cache configuration
386
 *         prefix_seed?: scalar|null, // Used to namespace cache keys when using several apps with the same shared backend. // Default: "_%kernel.project_dir%.%kernel.container_class%"
387
 *         app?: scalar|null, // App related cache pools configuration. // Default: "cache.adapter.filesystem"
388
 *         system?: scalar|null, // System related cache pools configuration. // Default: "cache.adapter.system"
389
 *         directory?: scalar|null, // Default: "%kernel.share_dir%/pools/app"
390
 *         default_psr6_provider?: scalar|null,
391
 *         default_redis_provider?: scalar|null, // Default: "redis://localhost"
392
 *         default_valkey_provider?: scalar|null, // Default: "valkey://localhost"
393
 *         default_memcached_provider?: scalar|null, // Default: "memcached://localhost"
394
 *         default_doctrine_dbal_provider?: scalar|null, // Default: "database_connection"
395
 *         default_pdo_provider?: scalar|null, // Default: null
396
 *         pools?: array<string, array{ // Default: []
397
 *             adapters?: list<scalar|null>,
398
 *             tags?: scalar|null, // Default: null
399
 *             public?: bool, // Default: false
400
 *             default_lifetime?: scalar|null, // Default lifetime of the pool.
401
 *             provider?: scalar|null, // Overwrite the setting from the default provider for this adapter.
402
 *             early_expiration_message_bus?: scalar|null,
403
 *             clearer?: scalar|null,
404
 *         }>,
405
 *     },
406
 *     php_errors?: array{ // PHP errors handling configuration
407
 *         log?: mixed, // Use the application logger instead of the PHP logger for logging PHP errors. // Default: true
408
 *         throw?: bool, // Throw PHP errors as \ErrorException instances. // Default: false
409
 *     },
410
 *     exceptions?: array<string, array{ // Default: []
411
 *         log_level?: scalar|null, // The level of log message. Null to let Symfony decide. // Default: null
412
 *         status_code?: scalar|null, // The status code of the response. Null or 0 to let Symfony decide. // Default: null
413
 *         log_channel?: scalar|null, // The channel of log message. Null to let Symfony decide. // Default: null
414
 *     }>,
415
 *     web_link?: bool|array{ // Web links configuration
416
 *         enabled?: bool, // Default: false
417
 *     },
418
 *     lock?: bool|string|array{ // Lock configuration
419
 *         enabled?: bool, // Default: false
420
 *         resources?: array<string, string|list<scalar|null>>,
421
 *     },
422
 *     semaphore?: bool|string|array{ // Semaphore configuration
423
 *         enabled?: bool, // Default: false
424
 *         resources?: array<string, scalar|null>,
425
 *     },
426
 *     messenger?: bool|array{ // Messenger configuration
427
 *         enabled?: bool, // Default: false
428
 *         routing?: array<string, array{ // Default: []
429
 *             senders?: list<scalar|null>,
430
 *         }>,
431
 *         serializer?: array{
432
 *             default_serializer?: scalar|null, // Service id to use as the default serializer for the transports. // Default: "messenger.transport.native_php_serializer"
433
 *             symfony_serializer?: array{
434
 *                 format?: scalar|null, // Serialization format for the messenger.transport.symfony_serializer service (which is not the serializer used by default). // Default: "json"
435
 *                 context?: array<string, mixed>,
436
 *             },
437
 *         },
438
 *         transports?: array<string, string|array{ // Default: []
439
 *             dsn?: scalar|null,
440
 *             serializer?: scalar|null, // Service id of a custom serializer to use. // Default: null
441
 *             options?: list<mixed>,
442
 *             failure_transport?: scalar|null, // Transport name to send failed messages to (after all retries have failed). // Default: null
443
 *             retry_strategy?: string|array{
444
 *                 service?: scalar|null, // Service id to override the retry strategy entirely. // Default: null
445
 *                 max_retries?: int, // Default: 3
446
 *                 delay?: int, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000
447
 *                 multiplier?: float, // If greater than 1, delay will grow exponentially for each retry: this delay = (delay * (multiple ^ retries)). // Default: 2
448
 *                 max_delay?: int, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0
449
 *                 jitter?: float, // Randomness to apply to the delay (between 0 and 1). // Default: 0.1
450
 *             },
451
 *             rate_limiter?: scalar|null, // Rate limiter name to use when processing messages. // Default: null
452
 *         }>,
453
 *         failure_transport?: scalar|null, // Transport name to send failed messages to (after all retries have failed). // Default: null
454
 *         stop_worker_on_signals?: list<scalar|null>,
455
 *         default_bus?: scalar|null, // Default: null
456
 *         buses?: array<string, array{ // Default: {"messenger.bus.default":{"default_middleware":{"enabled":true,"allow_no_handlers":false,"allow_no_senders":true},"middleware":[]}}
457
 *             default_middleware?: bool|string|array{
458
 *                 enabled?: bool, // Default: true
459
 *                 allow_no_handlers?: bool, // Default: false
460
 *                 allow_no_senders?: bool, // Default: true
461
 *             },
462
 *             middleware?: list<string|array{ // Default: []
463
 *                 id: scalar|null,
464
 *                 arguments?: list<mixed>,
465
 *             }>,
466
 *         }>,
467
 *     },
468
 *     scheduler?: bool|array{ // Scheduler configuration
469
 *         enabled?: bool, // Default: false
470
 *     },
471
 *     disallow_search_engine_index?: bool, // Enabled by default when debug is enabled. // Default: false
472
 *     http_client?: bool|array{ // HTTP Client configuration
473
 *         enabled?: bool, // Default: false
474
 *         max_host_connections?: int, // The maximum number of connections to a single host.
475
 *         default_options?: array{
476
 *             headers?: array<string, mixed>,
477
 *             vars?: list<mixed>,
478
 *             max_redirects?: int, // The maximum number of redirects to follow.
479
 *             http_version?: scalar|null, // The default HTTP version, typically 1.1 or 2.0, leave to null for the best version.
480
 *             resolve?: array<string, scalar|null>,
481
 *             proxy?: scalar|null, // The URL of the proxy to pass requests through or null for automatic detection.
482
 *             no_proxy?: scalar|null, // A comma separated list of hosts that do not require a proxy to be reached.
483
 *             timeout?: float, // The idle timeout, defaults to the "default_socket_timeout" ini parameter.
484
 *             max_duration?: float, // The maximum execution time for the request+response as a whole.
485
 *             bindto?: scalar|null, // A network interface name, IP address, a host name or a UNIX socket to bind to.
486
 *             verify_peer?: bool, // Indicates if the peer should be verified in a TLS context.
487
 *             verify_host?: bool, // Indicates if the host should exist as a certificate common name.
488
 *             cafile?: scalar|null, // A certificate authority file.
489
 *             capath?: scalar|null, // A directory that contains multiple certificate authority files.
490
 *             local_cert?: scalar|null, // A PEM formatted certificate file.
491
 *             local_pk?: scalar|null, // A private key file.
492
 *             passphrase?: scalar|null, // The passphrase used to encrypt the "local_pk" file.
493
 *             ciphers?: scalar|null, // A list of TLS ciphers separated by colons, commas or spaces (e.g. "RC3-SHA:TLS13-AES-128-GCM-SHA256"...)
494
 *             peer_fingerprint?: array{ // Associative array: hashing algorithm => hash(es).
495
 *                 sha1?: mixed,
496
 *                 pin-sha256?: mixed,
497
 *                 md5?: mixed,
498
 *             },
499
 *             crypto_method?: scalar|null, // The minimum version of TLS to accept; must be one of STREAM_CRYPTO_METHOD_TLSv*_CLIENT constants.
500
 *             extra?: list<mixed>,
501
 *             rate_limiter?: scalar|null, // Rate limiter name to use for throttling requests. // Default: null
502
 *             caching?: bool|array{ // Caching configuration.
503
 *                 enabled?: bool, // Default: false
504
 *                 cache_pool?: string, // The taggable cache pool to use for storing the responses. // Default: "cache.http_client"
505
 *                 shared?: bool, // Indicates whether the cache is shared (public) or private. // Default: true
506
 *                 max_ttl?: int, // The maximum TTL (in seconds) allowed for cached responses. Null means no cap. // Default: null
507
 *             },
508
 *             retry_failed?: bool|array{
509
 *                 enabled?: bool, // Default: false
510
 *                 retry_strategy?: scalar|null, // service id to override the retry strategy. // Default: null
511
 *                 http_codes?: array<string, array{ // Default: []
512
 *                     code?: int,
513
 *                     methods?: list<string>,
514
 *                 }>,
515
 *                 max_retries?: int, // Default: 3
516
 *                 delay?: int, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000
517
 *                 multiplier?: float, // If greater than 1, delay will grow exponentially for each retry: delay * (multiple ^ retries). // Default: 2
518
 *                 max_delay?: int, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0
519
 *                 jitter?: float, // Randomness in percent (between 0 and 1) to apply to the delay. // Default: 0.1
520
 *             },
521
 *         },
522
 *         mock_response_factory?: scalar|null, // The id of the service that should generate mock responses. It should be either an invokable or an iterable.
523
 *         scoped_clients?: array<string, string|array{ // Default: []
524
 *             scope?: scalar|null, // The regular expression that the request URL must match before adding the other options. When none is provided, the base URI is used instead.
525
 *             base_uri?: scalar|null, // The URI to resolve relative URLs, following rules in RFC 3985, section 2.
526
 *             auth_basic?: scalar|null, // An HTTP Basic authentication "username:password".
527
 *             auth_bearer?: scalar|null, // A token enabling HTTP Bearer authorization.
528
 *             auth_ntlm?: scalar|null, // A "username:password" pair to use Microsoft NTLM authentication (requires the cURL extension).
529
 *             query?: array<string, scalar|null>,
530
 *             headers?: array<string, mixed>,
531
 *             max_redirects?: int, // The maximum number of redirects to follow.
532
 *             http_version?: scalar|null, // The default HTTP version, typically 1.1 or 2.0, leave to null for the best version.
533
 *             resolve?: array<string, scalar|null>,
534
 *             proxy?: scalar|null, // The URL of the proxy to pass requests through or null for automatic detection.
535
 *             no_proxy?: scalar|null, // A comma separated list of hosts that do not require a proxy to be reached.
536
 *             timeout?: float, // The idle timeout, defaults to the "default_socket_timeout" ini parameter.
537
 *             max_duration?: float, // The maximum execution time for the request+response as a whole.
538
 *             bindto?: scalar|null, // A network interface name, IP address, a host name or a UNIX socket to bind to.
539
 *             verify_peer?: bool, // Indicates if the peer should be verified in a TLS context.
540
 *             verify_host?: bool, // Indicates if the host should exist as a certificate common name.
541
 *             cafile?: scalar|null, // A certificate authority file.
542
 *             capath?: scalar|null, // A directory that contains multiple certificate authority files.
543
 *             local_cert?: scalar|null, // A PEM formatted certificate file.
544
 *             local_pk?: scalar|null, // A private key file.
545
 *             passphrase?: scalar|null, // The passphrase used to encrypt the "local_pk" file.
546
 *             ciphers?: scalar|null, // A list of TLS ciphers separated by colons, commas or spaces (e.g. "RC3-SHA:TLS13-AES-128-GCM-SHA256"...).
547
 *             peer_fingerprint?: array{ // Associative array: hashing algorithm => hash(es).
548
 *                 sha1?: mixed,
549
 *                 pin-sha256?: mixed,
550
 *                 md5?: mixed,
551
 *             },
552
 *             crypto_method?: scalar|null, // The minimum version of TLS to accept; must be one of STREAM_CRYPTO_METHOD_TLSv*_CLIENT constants.
553
 *             extra?: list<mixed>,
554
 *             rate_limiter?: scalar|null, // Rate limiter name to use for throttling requests. // Default: null
555
 *             caching?: bool|array{ // Caching configuration.
556
 *                 enabled?: bool, // Default: false
557
 *                 cache_pool?: string, // The taggable cache pool to use for storing the responses. // Default: "cache.http_client"
558
 *                 shared?: bool, // Indicates whether the cache is shared (public) or private. // Default: true
559
 *                 max_ttl?: int, // The maximum TTL (in seconds) allowed for cached responses. Null means no cap. // Default: null
560
 *             },
561
 *             retry_failed?: bool|array{
562
 *                 enabled?: bool, // Default: false
563
 *                 retry_strategy?: scalar|null, // service id to override the retry strategy. // Default: null
564
 *                 http_codes?: array<string, array{ // Default: []
565
 *                     code?: int,
566
 *                     methods?: list<string>,
567
 *                 }>,
568
 *                 max_retries?: int, // Default: 3
569
 *                 delay?: int, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000
570
 *                 multiplier?: float, // If greater than 1, delay will grow exponentially for each retry: delay * (multiple ^ retries). // Default: 2
571
 *                 max_delay?: int, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0
572
 *                 jitter?: float, // Randomness in percent (between 0 and 1) to apply to the delay. // Default: 0.1
573
 *             },
574
 *         }>,
575
 *     },
576
 *     mailer?: bool|array{ // Mailer configuration
577
 *         enabled?: bool, // Default: true
578
 *         message_bus?: scalar|null, // The message bus to use. Defaults to the default bus if the Messenger component is installed. // Default: null
579
 *         dsn?: scalar|null, // Default: null
580
 *         transports?: array<string, scalar|null>,
581
 *         envelope?: array{ // Mailer Envelope configuration
582
 *             sender?: scalar|null,
583
 *             recipients?: list<scalar|null>,
584
 *             allowed_recipients?: list<scalar|null>,
585
 *         },
586
 *         headers?: array<string, string|array{ // Default: []
587
 *             value?: mixed,
588
 *         }>,
589
 *         dkim_signer?: bool|array{ // DKIM signer configuration
590
 *             enabled?: bool, // Default: false
591
 *             key?: scalar|null, // Key content, or path to key (in PEM format with the `file://` prefix) // Default: ""
592
 *             domain?: scalar|null, // Default: ""
593
 *             select?: scalar|null, // Default: ""
594
 *             passphrase?: scalar|null, // The private key passphrase // Default: ""
595
 *             options?: array<string, mixed>,
596
 *         },
597
 *         smime_signer?: bool|array{ // S/MIME signer configuration
598
 *             enabled?: bool, // Default: false
599
 *             key?: scalar|null, // Path to key (in PEM format) // Default: ""
600
 *             certificate?: scalar|null, // Path to certificate (in PEM format without the `file://` prefix) // Default: ""
601
 *             passphrase?: scalar|null, // The private key passphrase // Default: null
602
 *             extra_certificates?: scalar|null, // Default: null
603
 *             sign_options?: int, // Default: null
604
 *         },
605
 *         smime_encrypter?: bool|array{ // S/MIME encrypter configuration
606
 *             enabled?: bool, // Default: false
607
 *             repository?: scalar|null, // S/MIME certificate repository service. This service shall implement the `Symfony\Component\Mailer\EventListener\SmimeCertificateRepositoryInterface`. // Default: ""
608
 *             cipher?: int, // A set of algorithms used to encrypt the message // Default: null
609
 *         },
610
 *     },
611
 *     secrets?: bool|array{
612
 *         enabled?: bool, // Default: true
613
 *         vault_directory?: scalar|null, // Default: "%kernel.project_dir%/config/secrets/%kernel.runtime_environment%"
614
 *         local_dotenv_file?: scalar|null, // Default: "%kernel.project_dir%/.env.%kernel.runtime_environment%.local"
615
 *         decryption_env_var?: scalar|null, // Default: "base64:default::SYMFONY_DECRYPTION_SECRET"
616
 *     },
617
 *     notifier?: bool|array{ // Notifier configuration
618
 *         enabled?: bool, // Default: false
619
 *         message_bus?: scalar|null, // The message bus to use. Defaults to the default bus if the Messenger component is installed. // Default: null
620
 *         chatter_transports?: array<string, scalar|null>,
621
 *         texter_transports?: array<string, scalar|null>,
622
 *         notification_on_failed_messages?: bool, // Default: false
623
 *         channel_policy?: array<string, string|list<scalar|null>>,
624
 *         admin_recipients?: list<array{ // Default: []
625
 *             email?: scalar|null,
626
 *             phone?: scalar|null, // Default: ""
627
 *         }>,
628
 *     },
629
 *     rate_limiter?: bool|array{ // Rate limiter configuration
630
 *         enabled?: bool, // Default: false
631
 *         limiters?: array<string, array{ // Default: []
632
 *             lock_factory?: scalar|null, // The service ID of the lock factory used by this limiter (or null to disable locking). // Default: "auto"
633
 *             cache_pool?: scalar|null, // The cache pool to use for storing the current limiter state. // Default: "cache.rate_limiter"
634
 *             storage_service?: scalar|null, // The service ID of a custom storage implementation, this precedes any configured "cache_pool". // Default: null
635
 *             policy: "fixed_window"|"token_bucket"|"sliding_window"|"compound"|"no_limit", // The algorithm to be used by this limiter.
636
 *             limiters?: list<scalar|null>,
637
 *             limit?: int, // The maximum allowed hits in a fixed interval or burst.
638
 *             interval?: scalar|null, // Configures the fixed interval if "policy" is set to "fixed_window" or "sliding_window". The value must be a number followed by "second", "minute", "hour", "day", "week" or "month" (or their plural equivalent).
639
 *             rate?: array{ // Configures the fill rate if "policy" is set to "token_bucket".
640
 *                 interval?: scalar|null, // Configures the rate interval. The value must be a number followed by "second", "minute", "hour", "day", "week" or "month" (or their plural equivalent).
641
 *                 amount?: int, // Amount of tokens to add each interval. // Default: 1
642
 *             },
643
 *         }>,
644
 *     },
645
 *     uid?: bool|array{ // Uid configuration
646
 *         enabled?: bool, // Default: false
647
 *         default_uuid_version?: 7|6|4|1, // Default: 7
648
 *         name_based_uuid_version?: 5|3, // Default: 5
649
 *         name_based_uuid_namespace?: scalar|null,
650
 *         time_based_uuid_version?: 7|6|1, // Default: 7
651
 *         time_based_uuid_node?: scalar|null,
652
 *     },
653
 *     html_sanitizer?: bool|array{ // HtmlSanitizer configuration
654
 *         enabled?: bool, // Default: false
655
 *         sanitizers?: array<string, array{ // Default: []
656
 *             allow_safe_elements?: bool, // Allows "safe" elements and attributes. // Default: false
657
 *             allow_static_elements?: bool, // Allows all static elements and attributes from the W3C Sanitizer API standard. // Default: false
658
 *             allow_elements?: array<string, mixed>,
659
 *             block_elements?: list<string>,
660
 *             drop_elements?: list<string>,
661
 *             allow_attributes?: array<string, mixed>,
662
 *             drop_attributes?: array<string, mixed>,
663
 *             force_attributes?: array<string, array<string, string>>,
664
 *             force_https_urls?: bool, // Transforms URLs using the HTTP scheme to use the HTTPS scheme instead. // Default: false
665
 *             allowed_link_schemes?: list<string>,
666
 *             allowed_link_hosts?: list<string>|null,
667
 *             allow_relative_links?: bool, // Allows relative URLs to be used in links href attributes. // Default: false
668
 *             allowed_media_schemes?: list<string>,
669
 *             allowed_media_hosts?: list<string>|null,
670
 *             allow_relative_medias?: bool, // Allows relative URLs to be used in media source attributes (img, audio, video, ...). // Default: false
671
 *             with_attribute_sanitizers?: list<string>,
672
 *             without_attribute_sanitizers?: list<string>,
673
 *             max_input_length?: int, // The maximum length allowed for the sanitized input. // Default: 0
674
 *         }>,
675
 *     },
676
 *     webhook?: bool|array{ // Webhook configuration
677
 *         enabled?: bool, // Default: false
678
 *         message_bus?: scalar|null, // The message bus to use. // Default: "messenger.default_bus"
679
 *         routing?: array<string, array{ // Default: []
680
 *             service: scalar|null,
681
 *             secret?: scalar|null, // Default: ""
682
 *         }>,
683
 *     },
684
 *     remote-event?: bool|array{ // RemoteEvent configuration
685
 *         enabled?: bool, // Default: false
686
 *     },
687
 *     json_streamer?: bool|array{ // JSON streamer configuration
688
 *         enabled?: bool, // Default: false
689
 *     },
690
 * }
691
 * @psalm-type NelmioSecurityConfig = array{
692
 *     signed_cookie?: array{
693
 *         names?: list<scalar|null>,
694
 *         secret?: scalar|null, // Default: "%kernel.secret%"
695
 *         hash_algo?: scalar|null,
696
 *         legacy_hash_algo?: scalar|null, // Fallback algorithm to allow for frictionless hash algorithm upgrades. Use with caution and as a temporary measure as it allows for downgrade attacks. // Default: null
697
 *         separator?: scalar|null, // Default: "."
698
 *     },
699
 *     clickjacking?: array{
700
 *         hosts?: list<scalar|null>,
701
 *         paths?: array<string, array{ // Default: {"^/.*":{"header":"DENY"}}
702
 *             header?: scalar|null, // Default: "DENY"
703
 *         }>,
704
 *         content_types?: list<scalar|null>,
705
 *     },
706
 *     external_redirects?: array{
707
 *         abort?: bool, // Default: false
708
 *         override?: scalar|null, // Default: null
709
 *         forward_as?: scalar|null, // Default: null
710
 *         log?: bool, // Default: false
711
 *         allow_list?: list<scalar|null>,
712
 *     },
713
 *     flexible_ssl?: bool|array{
714
 *         enabled?: bool, // Default: false
715
 *         cookie_name?: scalar|null, // Default: "auth"
716
 *         unsecured_logout?: bool, // Default: false
717
 *     },
718
 *     forced_ssl?: bool|array{
719
 *         enabled?: bool, // Default: false
720
 *         hsts_max_age?: scalar|null, // Default: null
721
 *         hsts_subdomains?: bool, // Default: false
722
 *         hsts_preload?: bool, // Default: false
723
 *         allow_list?: list<scalar|null>,
724
 *         hosts?: list<scalar|null>,
725
 *         redirect_status_code?: scalar|null, // Default: 302
726
 *     },
727
 *     content_type?: array{
728
 *         nosniff?: bool, // Default: false
729
 *     },
730
 *     xss_protection?: array{ // Deprecated: The "xss_protection" option is deprecated, use Content Security Policy without allowing "unsafe-inline" scripts instead.
731
 *         enabled?: bool, // Default: false
732
 *         mode_block?: bool, // Default: false
733
 *         report_uri?: scalar|null, // Default: null
734
 *     },
735
 *     csp?: bool|array{
736
 *         enabled?: bool, // Default: true
737
 *         request_matcher?: scalar|null, // Default: null
738
 *         hosts?: list<scalar|null>,
739
 *         content_types?: list<scalar|null>,
740
 *         report_endpoint?: array{
741
 *             log_channel?: scalar|null, // Default: null
742
 *             log_formatter?: scalar|null, // Default: "nelmio_security.csp_report.log_formatter"
743
 *             log_level?: "alert"|"critical"|"debug"|"emergency"|"error"|"info"|"notice"|"warning", // Default: "notice"
744
 *             filters?: array{
745
 *                 domains?: bool, // Default: true
746
 *                 schemes?: bool, // Default: true
747
 *                 browser_bugs?: bool, // Default: true
748
 *                 injected_scripts?: bool, // Default: true
749
 *             },
750
 *             dismiss?: list<list<"default-src"|"base-uri"|"block-all-mixed-content"|"child-src"|"connect-src"|"font-src"|"form-action"|"frame-ancestors"|"frame-src"|"img-src"|"manifest-src"|"media-src"|"object-src"|"plugin-types"|"script-src"|"style-src"|"upgrade-insecure-requests"|"report-uri"|"worker-src"|"prefetch-src"|"report-to"|"*">>,
751
 *         },
752
 *         compat_headers?: bool, // Default: true
753
 *         report_logger_service?: scalar|null, // Default: "logger"
754
 *         hash?: array{
755
 *             algorithm?: "sha256"|"sha384"|"sha512", // The algorithm to use for hashes // Default: "sha256"
756
 *         },
757
 *         report?: array{
758
 *             level1_fallback?: bool, // Provides CSP Level 1 fallback when using hash or nonce (CSP level 2) by adding 'unsafe-inline' source. See https://www.w3.org/TR/CSP2/#directive-script-src and https://www.w3.org/TR/CSP2/#directive-style-src // Default: true
759
 *             browser_adaptive?: bool|array{ // Do not send directives that browser do not support
760
 *                 enabled?: bool, // Default: false
761
 *                 parser?: scalar|null, // Default: "nelmio_security.ua_parser.ua_php"
762
 *             },
763
 *             default-src?: list<scalar|null>,
764
 *             base-uri?: list<scalar|null>,
765
 *             block-all-mixed-content?: bool, // Default: false
766
 *             child-src?: list<scalar|null>,
767
 *             connect-src?: list<scalar|null>,
768
 *             font-src?: list<scalar|null>,
769
 *             form-action?: list<scalar|null>,
770
 *             frame-ancestors?: list<scalar|null>,
771
 *             frame-src?: list<scalar|null>,
772
 *             img-src?: list<scalar|null>,
773
 *             manifest-src?: list<scalar|null>,
774
 *             media-src?: list<scalar|null>,
775
 *             object-src?: list<scalar|null>,
776
 *             plugin-types?: list<scalar|null>,
777
 *             script-src?: list<scalar|null>,
778
 *             style-src?: list<scalar|null>,
779
 *             upgrade-insecure-requests?: bool, // Default: false
780
 *             report-uri?: list<scalar|null>,
781
 *             worker-src?: list<scalar|null>,
782
 *             prefetch-src?: list<scalar|null>,
783
 *             report-to?: scalar|null,
784
 *         },
785
 *         enforce?: array{
786
 *             level1_fallback?: bool, // Provides CSP Level 1 fallback when using hash or nonce (CSP level 2) by adding 'unsafe-inline' source. See https://www.w3.org/TR/CSP2/#directive-script-src and https://www.w3.org/TR/CSP2/#directive-style-src // Default: true
787
 *             browser_adaptive?: bool|array{ // Do not send directives that browser do not support
788
 *                 enabled?: bool, // Default: false
789
 *                 parser?: scalar|null, // Default: "nelmio_security.ua_parser.ua_php"
790
 *             },
791
 *             default-src?: list<scalar|null>,
792
 *             base-uri?: list<scalar|null>,
793
 *             block-all-mixed-content?: bool, // Default: false
794
 *             child-src?: list<scalar|null>,
795
 *             connect-src?: list<scalar|null>,
796
 *             font-src?: list<scalar|null>,
797
 *             form-action?: list<scalar|null>,
798
 *             frame-ancestors?: list<scalar|null>,
799
 *             frame-src?: list<scalar|null>,
800
 *             img-src?: list<scalar|null>,
801
 *             manifest-src?: list<scalar|null>,
802
 *             media-src?: list<scalar|null>,
803
 *             object-src?: list<scalar|null>,
804
 *             plugin-types?: list<scalar|null>,
805
 *             script-src?: list<scalar|null>,
806
 *             style-src?: list<scalar|null>,
807
 *             upgrade-insecure-requests?: bool, // Default: false
808
 *             report-uri?: list<scalar|null>,
809
 *             worker-src?: list<scalar|null>,
810
 *             prefetch-src?: list<scalar|null>,
811
 *             report-to?: scalar|null,
812
 *         },
813
 *     },
814
 *     referrer_policy?: bool|array{
815
 *         enabled?: bool, // Default: false
816
 *         policies?: list<scalar|null>,
817
 *     },
818
 *     permissions_policy?: bool|array{
819
 *         enabled?: bool, // Default: false
820
 *         policies?: array{
821
 *             accelerometer?: mixed, // Default: null
822
 *             ambient_light_sensor?: mixed, // Default: null
823
 *             attribution_reporting?: mixed, // Default: null
824
 *             autoplay?: mixed, // Default: null
825
 *             bluetooth?: mixed, // Default: null
826
 *             browsing_topics?: mixed, // Default: null
827
 *             camera?: mixed, // Default: null
828
 *             captured_surface_control?: mixed, // Default: null
829
 *             compute_pressure?: mixed, // Default: null
830
 *             cross_origin_isolated?: mixed, // Default: null
831
 *             deferred_fetch?: mixed, // Default: null
832
 *             deferred_fetch_minimal?: mixed, // Default: null
833
 *             display_capture?: mixed, // Default: null
834
 *             encrypted_media?: mixed, // Default: null
835
 *             fullscreen?: mixed, // Default: null
836
 *             gamepad?: mixed, // Default: null
837
 *             geolocation?: mixed, // Default: null
838
 *             gyroscope?: mixed, // Default: null
839
 *             hid?: mixed, // Default: null
840
 *             identity_credentials_get?: mixed, // Default: null
841
 *             idle_detection?: mixed, // Default: null
842
 *             interest_cohort?: mixed, // Default: null
843
 *             language_detector?: mixed, // Default: null
844
 *             local_fonts?: mixed, // Default: null
845
 *             magnetometer?: mixed, // Default: null
846
 *             microphone?: mixed, // Default: null
847
 *             midi?: mixed, // Default: null
848
 *             otp_credentials?: mixed, // Default: null
849
 *             payment?: mixed, // Default: null
850
 *             picture_in_picture?: mixed, // Default: null
851
 *             publickey_credentials_create?: mixed, // Default: null
852
 *             publickey_credentials_get?: mixed, // Default: null
853
 *             screen_wake_lock?: mixed, // Default: null
854
 *             serial?: mixed, // Default: null
855
 *             speaker_selection?: mixed, // Default: null
856
 *             storage_access?: mixed, // Default: null
857
 *             summarizer?: mixed, // Default: null
858
 *             translator?: mixed, // Default: null
859
 *             usb?: mixed, // Default: null
860
 *             web_share?: mixed, // Default: null
861
 *             window_management?: mixed, // Default: null
862
 *             xr_spatial_tracking?: mixed, // Default: null
863
 *         },
864
 *     },
865
 * }
866
 * @psalm-type OpenConextMonitorConfig = array<mixed>
867
 * @psalm-type SurfnetStepupConfig = array{
868
 *     logging: array{
869
 *         application_name: scalar|null, // This is the application name that is included with each log message
870
 *     },
871
 *     loa_definition?: bool|array{
872
 *         enabled?: bool, // Default: true
873
 *         loa1?: scalar|null,
874
 *         loa2?: scalar|null,
875
 *         loa3?: scalar|null,
876
 *         loa_self_asserted?: scalar|null,
877
 *     },
878
 *     attach_request_id_injector_to?: list<scalar|null>,
879
 *     gateway_api?: bool|array{ // Gateway API configuration
880
 *         enabled?: bool, // Default: false
881
 *         credentials?: array{ // Basic authentication credentials
882
 *             username: scalar|null, // Username for the Gateway API
883
 *             password: scalar|null, // Password for the Gateway API
884
 *         },
885
 *         url: scalar|null, // The URL to the Gateway application (e.g. https://gateway.tld)
886
 *     },
887
 *     sms: bool|array{ // SMS configuration
888
 *         enabled?: bool, // Default: true
889
 *         service?: scalar|null, // The ID of the SMS service used for sending SMS messages. Must implement "Surfnet\StepupBundle\Service\SmsService". // Default: "surfnet_stepup.service.gateway_api_sms"
890
 *         originator?: scalar|null, // Originator (sender) for SMS messages
891
 *         otp_expiry_interval?: int, // After how many seconds an SMS challenge OTP expires
892
 *         maximum_otp_requests?: int, // How many challenges a user may request during a session
893
 *     },
894
 *     locale_cookie?: bool|array{ // Cookie settings for locale cookie
895
 *         enabled?: bool, // Default: true
896
 *         name?: scalar|null, // Name for the cookie // Default: "stepup_locale"
897
 *         domain?: scalar|null, // Domain the cookie is scoped to // Default: "example.org"
898
 *         expire?: int, // Defines a specific number of seconds for when the browser should delete the cookie. // Default: 0
899
 *         path?: scalar|null, // Path the cookie is scoped to // Default: "/"
900
 *         secure?: bool, // Only transmit cookie over secure connections? // Default: true
901
 *         http_only?: bool, // Directs browsers not to expose cookies through channels other than HTTP (and HTTPS) requests // Default: true
902
 *     },
903
 * }
904
 * @psalm-type MonologConfig = array{
905
 *     use_microseconds?: scalar|null, // Default: true
906
 *     channels?: list<scalar|null>,
907
 *     handlers?: array<string, array{ // Default: []
908
 *         type: scalar|null,
909
 *         id?: scalar|null,
910
 *         enabled?: bool, // Default: true
911
 *         priority?: scalar|null, // Default: 0
912
 *         level?: scalar|null, // Default: "DEBUG"
913
 *         bubble?: bool, // Default: true
914
 *         interactive_only?: bool, // Default: false
915
 *         app_name?: scalar|null, // Default: null
916
 *         fill_extra_context?: bool, // Default: false
917
 *         include_stacktraces?: bool, // Default: false
918
 *         process_psr_3_messages?: array{
919
 *             enabled?: bool|null, // Default: null
920
 *             date_format?: scalar|null,
921
 *             remove_used_context_fields?: bool,
922
 *         },
923
 *         path?: scalar|null, // Default: "%kernel.logs_dir%/%kernel.environment%.log"
924
 *         file_permission?: scalar|null, // Default: null
925
 *         use_locking?: bool, // Default: false
926
 *         filename_format?: scalar|null, // Default: "{filename}-{date}"
927
 *         date_format?: scalar|null, // Default: "Y-m-d"
928
 *         ident?: scalar|null, // Default: false
929
 *         logopts?: scalar|null, // Default: 1
930
 *         facility?: scalar|null, // Default: "user"
931
 *         max_files?: scalar|null, // Default: 0
932
 *         action_level?: scalar|null, // Default: "WARNING"
933
 *         activation_strategy?: scalar|null, // Default: null
934
 *         stop_buffering?: bool, // Default: true
935
 *         passthru_level?: scalar|null, // Default: null
936
 *         excluded_404s?: list<scalar|null>,
937
 *         excluded_http_codes?: list<array{ // Default: []
938
 *             code?: scalar|null,
939
 *             urls?: list<scalar|null>,
940
 *         }>,
941
 *         accepted_levels?: list<scalar|null>,
942
 *         min_level?: scalar|null, // Default: "DEBUG"
943
 *         max_level?: scalar|null, // Default: "EMERGENCY"
944
 *         buffer_size?: scalar|null, // Default: 0
945
 *         flush_on_overflow?: bool, // Default: false
946
 *         handler?: scalar|null,
947
 *         url?: scalar|null,
948
 *         exchange?: scalar|null,
949
 *         exchange_name?: scalar|null, // Default: "log"
950
 *         room?: scalar|null,
951
 *         message_format?: scalar|null, // Default: "text"
952
 *         api_version?: scalar|null, // Default: null
953
 *         channel?: scalar|null, // Default: null
954
 *         bot_name?: scalar|null, // Default: "Monolog"
955
 *         use_attachment?: scalar|null, // Default: true
956
 *         use_short_attachment?: scalar|null, // Default: false
957
 *         include_extra?: scalar|null, // Default: false
958
 *         icon_emoji?: scalar|null, // Default: null
959
 *         webhook_url?: scalar|null,
960
 *         exclude_fields?: list<scalar|null>,
961
 *         team?: scalar|null,
962
 *         notify?: scalar|null, // Default: false
963
 *         nickname?: scalar|null, // Default: "Monolog"
964
 *         token?: scalar|null,
965
 *         region?: scalar|null,
966
 *         source?: scalar|null,
967
 *         use_ssl?: bool, // Default: true
968
 *         user?: mixed,
969
 *         title?: scalar|null, // Default: null
970
 *         host?: scalar|null, // Default: null
971
 *         port?: scalar|null, // Default: 514
972
 *         config?: list<scalar|null>,
973
 *         members?: list<scalar|null>,
974
 *         connection_string?: scalar|null,
975
 *         timeout?: scalar|null,
976
 *         time?: scalar|null, // Default: 60
977
 *         deduplication_level?: scalar|null, // Default: 400
978
 *         store?: scalar|null, // Default: null
979
 *         connection_timeout?: scalar|null,
980
 *         persistent?: bool,
981
 *         dsn?: scalar|null,
982
 *         hub_id?: scalar|null, // Default: null
983
 *         client_id?: scalar|null, // Default: null
984
 *         auto_log_stacks?: scalar|null, // Default: false
985
 *         release?: scalar|null, // Default: null
986
 *         environment?: scalar|null, // Default: null
987
 *         message_type?: scalar|null, // Default: 0
988
 *         parse_mode?: scalar|null, // Default: null
989
 *         disable_webpage_preview?: bool|null, // Default: null
990
 *         disable_notification?: bool|null, // Default: null
991
 *         split_long_messages?: bool, // Default: false
992
 *         delay_between_messages?: bool, // Default: false
993
 *         topic?: int, // Default: null
994
 *         factor?: int, // Default: 1
995
 *         tags?: list<scalar|null>,
996
 *         console_formater_options?: mixed, // Deprecated: "monolog.handlers..console_formater_options.console_formater_options" is deprecated, use "monolog.handlers..console_formater_options.console_formatter_options" instead.
997
 *         console_formatter_options?: mixed, // Default: []
998
 *         formatter?: scalar|null,
999
 *         nested?: bool, // Default: false
1000
 *         publisher?: string|array{
1001
 *             id?: scalar|null,
1002
 *             hostname?: scalar|null,
1003
 *             port?: scalar|null, // Default: 12201
1004
 *             chunk_size?: scalar|null, // Default: 1420
1005
 *             encoder?: "json"|"compressed_json",
1006
 *         },
1007
 *         mongo?: string|array{
1008
 *             id?: scalar|null,
1009
 *             host?: scalar|null,
1010
 *             port?: scalar|null, // Default: 27017
1011
 *             user?: scalar|null,
1012
 *             pass?: scalar|null,
1013
 *             database?: scalar|null, // Default: "monolog"
1014
 *             collection?: scalar|null, // Default: "logs"
1015
 *         },
1016
 *         mongodb?: string|array{
1017
 *             id?: scalar|null, // ID of a MongoDB\Client service
1018
 *             uri?: scalar|null,
1019
 *             username?: scalar|null,
1020
 *             password?: scalar|null,
1021
 *             database?: scalar|null, // Default: "monolog"
1022
 *             collection?: scalar|null, // Default: "logs"
1023
 *         },
1024
 *         elasticsearch?: string|array{
1025
 *             id?: scalar|null,
1026
 *             hosts?: list<scalar|null>,
1027
 *             host?: scalar|null,
1028
 *             port?: scalar|null, // Default: 9200
1029
 *             transport?: scalar|null, // Default: "Http"
1030
 *             user?: scalar|null, // Default: null
1031
 *             password?: scalar|null, // Default: null
1032
 *         },
1033
 *         index?: scalar|null, // Default: "monolog"
1034
 *         document_type?: scalar|null, // Default: "logs"
1035
 *         ignore_error?: scalar|null, // Default: false
1036
 *         redis?: string|array{
1037
 *             id?: scalar|null,
1038
 *             host?: scalar|null,
1039
 *             password?: scalar|null, // Default: null
1040
 *             port?: scalar|null, // Default: 6379
1041
 *             database?: scalar|null, // Default: 0
1042
 *             key_name?: scalar|null, // Default: "monolog_redis"
1043
 *         },
1044
 *         predis?: string|array{
1045
 *             id?: scalar|null,
1046
 *             host?: scalar|null,
1047
 *         },
1048
 *         from_email?: scalar|null,
1049
 *         to_email?: list<scalar|null>,
1050
 *         subject?: scalar|null,
1051
 *         content_type?: scalar|null, // Default: null
1052
 *         headers?: list<scalar|null>,
1053
 *         mailer?: scalar|null, // Default: null
1054
 *         email_prototype?: string|array{
1055
 *             id: scalar|null,
1056
 *             method?: scalar|null, // Default: null
1057
 *         },
1058
 *         lazy?: bool, // Default: true
1059
 *         verbosity_levels?: array{
1060
 *             VERBOSITY_QUIET?: scalar|null, // Default: "ERROR"
1061
 *             VERBOSITY_NORMAL?: scalar|null, // Default: "WARNING"
1062
 *             VERBOSITY_VERBOSE?: scalar|null, // Default: "NOTICE"
1063
 *             VERBOSITY_VERY_VERBOSE?: scalar|null, // Default: "INFO"
1064
 *             VERBOSITY_DEBUG?: scalar|null, // Default: "DEBUG"
1065
 *         },
1066
 *         channels?: string|array{
1067
 *             type?: scalar|null,
1068
 *             elements?: list<scalar|null>,
1069
 *         },
1070
 *     }>,
1071
 * }
1072
 * @psalm-type DoctrineConfig = array{
1073
 *     dbal?: array{
1074
 *         default_connection?: scalar|null,
1075
 *         types?: array<string, string|array{ // Default: []
1076
 *             class: scalar|null,
1077
 *             commented?: bool, // Deprecated: The doctrine-bundle type commenting features were removed; the corresponding config parameter was deprecated in 2.0 and will be dropped in 3.0.
1078
 *         }>,
1079
 *         driver_schemes?: array<string, scalar|null>,
1080
 *         connections?: array<string, array{ // Default: []
1081
 *             url?: scalar|null, // A URL with connection information; any parameter value parsed from this string will override explicitly set parameters
1082
 *             dbname?: scalar|null,
1083
 *             host?: scalar|null, // Defaults to "localhost" at runtime.
1084
 *             port?: scalar|null, // Defaults to null at runtime.
1085
 *             user?: scalar|null, // Defaults to "root" at runtime.
1086
 *             password?: scalar|null, // Defaults to null at runtime.
1087
 *             override_url?: bool, // Deprecated: The "doctrine.dbal.override_url" configuration key is deprecated.
1088
 *             dbname_suffix?: scalar|null, // Adds the given suffix to the configured database name, this option has no effects for the SQLite platform
1089
 *             application_name?: scalar|null,
1090
 *             charset?: scalar|null,
1091
 *             path?: scalar|null,
1092
 *             memory?: bool,
1093
 *             unix_socket?: scalar|null, // The unix socket to use for MySQL
1094
 *             persistent?: bool, // True to use as persistent connection for the ibm_db2 driver
1095
 *             protocol?: scalar|null, // The protocol to use for the ibm_db2 driver (default to TCPIP if omitted)
1096
 *             service?: bool, // True to use SERVICE_NAME as connection parameter instead of SID for Oracle
1097
 *             servicename?: scalar|null, // Overrules dbname parameter if given and used as SERVICE_NAME or SID connection parameter for Oracle depending on the service parameter.
1098
 *             sessionMode?: scalar|null, // The session mode to use for the oci8 driver
1099
 *             server?: scalar|null, // The name of a running database server to connect to for SQL Anywhere.
1100
 *             default_dbname?: scalar|null, // Override the default database (postgres) to connect to for PostgreSQL connexion.
1101
 *             sslmode?: scalar|null, // Determines whether or with what priority a SSL TCP/IP connection will be negotiated with the server for PostgreSQL.
1102
 *             sslrootcert?: scalar|null, // The name of a file containing SSL certificate authority (CA) certificate(s). If the file exists, the server's certificate will be verified to be signed by one of these authorities.
1103
 *             sslcert?: scalar|null, // The path to the SSL client certificate file for PostgreSQL.
1104
 *             sslkey?: scalar|null, // The path to the SSL client key file for PostgreSQL.
1105
 *             sslcrl?: scalar|null, // The file name of the SSL certificate revocation list for PostgreSQL.
1106
 *             pooled?: bool, // True to use a pooled server with the oci8/pdo_oracle driver
1107
 *             MultipleActiveResultSets?: bool, // Configuring MultipleActiveResultSets for the pdo_sqlsrv driver
1108
 *             use_savepoints?: bool, // Use savepoints for nested transactions
1109
 *             instancename?: scalar|null, // Optional parameter, complete whether to add the INSTANCE_NAME parameter in the connection. It is generally used to connect to an Oracle RAC server to select the name of a particular instance.
1110
 *             connectstring?: scalar|null, // Complete Easy Connect connection descriptor, see https://docs.oracle.com/database/121/NETAG/naming.htm.When using this option, you will still need to provide the user and password parameters, but the other parameters will no longer be used. Note that when using this parameter, the getHost and getPort methods from Doctrine\DBAL\Connection will no longer function as expected.
1111
 *             driver?: scalar|null, // Default: "pdo_mysql"
1112
 *             platform_service?: scalar|null, // Deprecated: The "platform_service" configuration key is deprecated since doctrine-bundle 2.9. DBAL 4 will not support setting a custom platform via connection params anymore.
1113
 *             auto_commit?: bool,
1114
 *             schema_filter?: scalar|null,
1115
 *             logging?: bool, // Default: false
1116
 *             profiling?: bool, // Default: false
1117
 *             profiling_collect_backtrace?: bool, // Enables collecting backtraces when profiling is enabled // Default: false
1118
 *             profiling_collect_schema_errors?: bool, // Enables collecting schema errors when profiling is enabled // Default: true
1119
 *             disable_type_comments?: bool,
1120
 *             server_version?: scalar|null,
1121
 *             idle_connection_ttl?: int, // Default: 600
1122
 *             driver_class?: scalar|null,
1123
 *             wrapper_class?: scalar|null,
1124
 *             keep_slave?: bool, // Deprecated: The "keep_slave" configuration key is deprecated since doctrine-bundle 2.2. Use the "keep_replica" configuration key instead.
1125
 *             keep_replica?: bool,
1126
 *             options?: array<string, mixed>,
1127
 *             mapping_types?: array<string, scalar|null>,
1128
 *             default_table_options?: array<string, scalar|null>,
1129
 *             schema_manager_factory?: scalar|null, // Default: "doctrine.dbal.legacy_schema_manager_factory"
1130
 *             result_cache?: scalar|null,
1131
 *             slaves?: array<string, array{ // Default: []
1132
 *                 url?: scalar|null, // A URL with connection information; any parameter value parsed from this string will override explicitly set parameters
1133
 *                 dbname?: scalar|null,
1134
 *                 host?: scalar|null, // Defaults to "localhost" at runtime.
1135
 *                 port?: scalar|null, // Defaults to null at runtime.
1136
 *                 user?: scalar|null, // Defaults to "root" at runtime.
1137
 *                 password?: scalar|null, // Defaults to null at runtime.
1138
 *                 override_url?: bool, // Deprecated: The "doctrine.dbal.override_url" configuration key is deprecated.
1139
 *                 dbname_suffix?: scalar|null, // Adds the given suffix to the configured database name, this option has no effects for the SQLite platform
1140
 *                 application_name?: scalar|null,
1141
 *                 charset?: scalar|null,
1142
 *                 path?: scalar|null,
1143
 *                 memory?: bool,
1144
 *                 unix_socket?: scalar|null, // The unix socket to use for MySQL
1145
 *                 persistent?: bool, // True to use as persistent connection for the ibm_db2 driver
1146
 *                 protocol?: scalar|null, // The protocol to use for the ibm_db2 driver (default to TCPIP if omitted)
1147
 *                 service?: bool, // True to use SERVICE_NAME as connection parameter instead of SID for Oracle
1148
 *                 servicename?: scalar|null, // Overrules dbname parameter if given and used as SERVICE_NAME or SID connection parameter for Oracle depending on the service parameter.
1149
 *                 sessionMode?: scalar|null, // The session mode to use for the oci8 driver
1150
 *                 server?: scalar|null, // The name of a running database server to connect to for SQL Anywhere.
1151
 *                 default_dbname?: scalar|null, // Override the default database (postgres) to connect to for PostgreSQL connexion.
1152
 *                 sslmode?: scalar|null, // Determines whether or with what priority a SSL TCP/IP connection will be negotiated with the server for PostgreSQL.
1153
 *                 sslrootcert?: scalar|null, // The name of a file containing SSL certificate authority (CA) certificate(s). If the file exists, the server's certificate will be verified to be signed by one of these authorities.
1154
 *                 sslcert?: scalar|null, // The path to the SSL client certificate file for PostgreSQL.
1155
 *                 sslkey?: scalar|null, // The path to the SSL client key file for PostgreSQL.
1156
 *                 sslcrl?: scalar|null, // The file name of the SSL certificate revocation list for PostgreSQL.
1157
 *                 pooled?: bool, // True to use a pooled server with the oci8/pdo_oracle driver
1158
 *                 MultipleActiveResultSets?: bool, // Configuring MultipleActiveResultSets for the pdo_sqlsrv driver
1159
 *                 use_savepoints?: bool, // Use savepoints for nested transactions
1160
 *                 instancename?: scalar|null, // Optional parameter, complete whether to add the INSTANCE_NAME parameter in the connection. It is generally used to connect to an Oracle RAC server to select the name of a particular instance.
1161
 *                 connectstring?: scalar|null, // Complete Easy Connect connection descriptor, see https://docs.oracle.com/database/121/NETAG/naming.htm.When using this option, you will still need to provide the user and password parameters, but the other parameters will no longer be used. Note that when using this parameter, the getHost and getPort methods from Doctrine\DBAL\Connection will no longer function as expected.
1162
 *             }>,
1163
 *             replicas?: array<string, array{ // Default: []
1164
 *                 url?: scalar|null, // A URL with connection information; any parameter value parsed from this string will override explicitly set parameters
1165
 *                 dbname?: scalar|null,
1166
 *                 host?: scalar|null, // Defaults to "localhost" at runtime.
1167
 *                 port?: scalar|null, // Defaults to null at runtime.
1168
 *                 user?: scalar|null, // Defaults to "root" at runtime.
1169
 *                 password?: scalar|null, // Defaults to null at runtime.
1170
 *                 override_url?: bool, // Deprecated: The "doctrine.dbal.override_url" configuration key is deprecated.
1171
 *                 dbname_suffix?: scalar|null, // Adds the given suffix to the configured database name, this option has no effects for the SQLite platform
1172
 *                 application_name?: scalar|null,
1173
 *                 charset?: scalar|null,
1174
 *                 path?: scalar|null,
1175
 *                 memory?: bool,
1176
 *                 unix_socket?: scalar|null, // The unix socket to use for MySQL
1177
 *                 persistent?: bool, // True to use as persistent connection for the ibm_db2 driver
1178
 *                 protocol?: scalar|null, // The protocol to use for the ibm_db2 driver (default to TCPIP if omitted)
1179
 *                 service?: bool, // True to use SERVICE_NAME as connection parameter instead of SID for Oracle
1180
 *                 servicename?: scalar|null, // Overrules dbname parameter if given and used as SERVICE_NAME or SID connection parameter for Oracle depending on the service parameter.
1181
 *                 sessionMode?: scalar|null, // The session mode to use for the oci8 driver
1182
 *                 server?: scalar|null, // The name of a running database server to connect to for SQL Anywhere.
1183
 *                 default_dbname?: scalar|null, // Override the default database (postgres) to connect to for PostgreSQL connexion.
1184
 *                 sslmode?: scalar|null, // Determines whether or with what priority a SSL TCP/IP connection will be negotiated with the server for PostgreSQL.
1185
 *                 sslrootcert?: scalar|null, // The name of a file containing SSL certificate authority (CA) certificate(s). If the file exists, the server's certificate will be verified to be signed by one of these authorities.
1186
 *                 sslcert?: scalar|null, // The path to the SSL client certificate file for PostgreSQL.
1187
 *                 sslkey?: scalar|null, // The path to the SSL client key file for PostgreSQL.
1188
 *                 sslcrl?: scalar|null, // The file name of the SSL certificate revocation list for PostgreSQL.
1189
 *                 pooled?: bool, // True to use a pooled server with the oci8/pdo_oracle driver
1190
 *                 MultipleActiveResultSets?: bool, // Configuring MultipleActiveResultSets for the pdo_sqlsrv driver
1191
 *                 use_savepoints?: bool, // Use savepoints for nested transactions
1192
 *                 instancename?: scalar|null, // Optional parameter, complete whether to add the INSTANCE_NAME parameter in the connection. It is generally used to connect to an Oracle RAC server to select the name of a particular instance.
1193
 *                 connectstring?: scalar|null, // Complete Easy Connect connection descriptor, see https://docs.oracle.com/database/121/NETAG/naming.htm.When using this option, you will still need to provide the user and password parameters, but the other parameters will no longer be used. Note that when using this parameter, the getHost and getPort methods from Doctrine\DBAL\Connection will no longer function as expected.
1194
 *             }>,
1195
 *         }>,
1196
 *     },
1197
 *     orm?: array{
1198
 *         default_entity_manager?: scalar|null,
1199
 *         auto_generate_proxy_classes?: scalar|null, // Auto generate mode possible values are: "NEVER", "ALWAYS", "FILE_NOT_EXISTS", "EVAL", "FILE_NOT_EXISTS_OR_CHANGED", this option is ignored when the "enable_native_lazy_objects" option is true // Default: false
1200
 *         enable_lazy_ghost_objects?: bool, // Enables the new implementation of proxies based on lazy ghosts instead of using the legacy implementation // Default: true
1201
 *         enable_native_lazy_objects?: bool, // Enables the new native implementation of PHP lazy objects instead of generated proxies // Default: false
1202
 *         proxy_dir?: scalar|null, // Configures the path where generated proxy classes are saved when using non-native lazy objects, this option is ignored when the "enable_native_lazy_objects" option is true // Default: "%kernel.build_dir%/doctrine/orm/Proxies"
1203
 *         proxy_namespace?: scalar|null, // Defines the root namespace for generated proxy classes when using non-native lazy objects, this option is ignored when the "enable_native_lazy_objects" option is true // Default: "Proxies"
1204
 *         controller_resolver?: bool|array{
1205
 *             enabled?: bool, // Default: true
1206
 *             auto_mapping?: bool|null, // Set to false to disable using route placeholders as lookup criteria when the primary key doesn't match the argument name // Default: null
1207
 *             evict_cache?: bool, // Set to true to fetch the entity from the database instead of using the cache, if any // Default: false
1208
 *         },
1209
 *         entity_managers?: array<string, array{ // Default: []
1210
 *             query_cache_driver?: string|array{
1211
 *                 type?: scalar|null, // Default: null
1212
 *                 id?: scalar|null,
1213
 *                 pool?: scalar|null,
1214
 *             },
1215
 *             metadata_cache_driver?: string|array{
1216
 *                 type?: scalar|null, // Default: null
1217
 *                 id?: scalar|null,
1218
 *                 pool?: scalar|null,
1219
 *             },
1220
 *             result_cache_driver?: string|array{
1221
 *                 type?: scalar|null, // Default: null
1222
 *                 id?: scalar|null,
1223
 *                 pool?: scalar|null,
1224
 *             },
1225
 *             entity_listeners?: array{
1226
 *                 entities?: array<string, array{ // Default: []
1227
 *                     listeners?: array<string, array{ // Default: []
1228
 *                         events?: list<array{ // Default: []
1229
 *                             type?: scalar|null,
1230
 *                             method?: scalar|null, // Default: null
1231
 *                         }>,
1232
 *                     }>,
1233
 *                 }>,
1234
 *             },
1235
 *             connection?: scalar|null,
1236
 *             class_metadata_factory_name?: scalar|null, // Default: "Doctrine\\ORM\\Mapping\\ClassMetadataFactory"
1237
 *             default_repository_class?: scalar|null, // Default: "Doctrine\\ORM\\EntityRepository"
1238
 *             auto_mapping?: scalar|null, // Default: false
1239
 *             naming_strategy?: scalar|null, // Default: "doctrine.orm.naming_strategy.default"
1240
 *             quote_strategy?: scalar|null, // Default: "doctrine.orm.quote_strategy.default"
1241
 *             typed_field_mapper?: scalar|null, // Default: "doctrine.orm.typed_field_mapper.default"
1242
 *             entity_listener_resolver?: scalar|null, // Default: null
1243
 *             fetch_mode_subselect_batch_size?: scalar|null,
1244
 *             repository_factory?: scalar|null, // Default: "doctrine.orm.container_repository_factory"
1245
 *             schema_ignore_classes?: list<scalar|null>,
1246
 *             report_fields_where_declared?: bool, // Set to "true" to opt-in to the new mapping driver mode that was added in Doctrine ORM 2.16 and will be mandatory in ORM 3.0. See https://github.com/doctrine/orm/pull/10455. // Default: true
1247
 *             validate_xml_mapping?: bool, // Set to "true" to opt-in to the new mapping driver mode that was added in Doctrine ORM 2.14. See https://github.com/doctrine/orm/pull/6728. // Default: false
1248
 *             second_level_cache?: array{
1249
 *                 region_cache_driver?: string|array{
1250
 *                     type?: scalar|null, // Default: null
1251
 *                     id?: scalar|null,
1252
 *                     pool?: scalar|null,
1253
 *                 },
1254
 *                 region_lock_lifetime?: scalar|null, // Default: 60
1255
 *                 log_enabled?: bool, // Default: false
1256
 *                 region_lifetime?: scalar|null, // Default: 3600
1257
 *                 enabled?: bool, // Default: true
1258
 *                 factory?: scalar|null,
1259
 *                 regions?: array<string, array{ // Default: []
1260
 *                     cache_driver?: string|array{
1261
 *                         type?: scalar|null, // Default: null
1262
 *                         id?: scalar|null,
1263
 *                         pool?: scalar|null,
1264
 *                     },
1265
 *                     lock_path?: scalar|null, // Default: "%kernel.cache_dir%/doctrine/orm/slc/filelock"
1266
 *                     lock_lifetime?: scalar|null, // Default: 60
1267
 *                     type?: scalar|null, // Default: "default"
1268
 *                     lifetime?: scalar|null, // Default: 0
1269
 *                     service?: scalar|null,
1270
 *                     name?: scalar|null,
1271
 *                 }>,
1272
 *                 loggers?: array<string, array{ // Default: []
1273
 *                     name?: scalar|null,
1274
 *                     service?: scalar|null,
1275
 *                 }>,
1276
 *             },
1277
 *             hydrators?: array<string, scalar|null>,
1278
 *             mappings?: array<string, bool|string|array{ // Default: []
1279
 *                 mapping?: scalar|null, // Default: true
1280
 *                 type?: scalar|null,
1281
 *                 dir?: scalar|null,
1282
 *                 alias?: scalar|null,
1283
 *                 prefix?: scalar|null,
1284
 *                 is_bundle?: bool,
1285
 *             }>,
1286
 *             dql?: array{
1287
 *                 string_functions?: array<string, scalar|null>,
1288
 *                 numeric_functions?: array<string, scalar|null>,
1289
 *                 datetime_functions?: array<string, scalar|null>,
1290
 *             },
1291
 *             filters?: array<string, string|array{ // Default: []
1292
 *                 class: scalar|null,
1293
 *                 enabled?: bool, // Default: false
1294
 *                 parameters?: array<string, mixed>,
1295
 *             }>,
1296
 *             identity_generation_preferences?: array<string, scalar|null>,
1297
 *         }>,
1298
 *         resolve_target_entities?: array<string, scalar|null>,
1299
 *     },
1300
 * }
1301
 * @psalm-type DoctrineMigrationsConfig = array{
1302
 *     enable_service_migrations?: bool, // Whether to enable fetching migrations from the service container. // Default: false
1303
 *     migrations_paths?: array<string, scalar|null>,
1304
 *     services?: array<string, scalar|null>,
1305
 *     factories?: array<string, scalar|null>,
1306
 *     storage?: array{ // Storage to use for migration status metadata.
1307
 *         table_storage?: array{ // The default metadata storage, implemented as a table in the database.
1308
 *             table_name?: scalar|null, // Default: null
1309
 *             version_column_name?: scalar|null, // Default: null
1310
 *             version_column_length?: scalar|null, // Default: null
1311
 *             executed_at_column_name?: scalar|null, // Default: null
1312
 *             execution_time_column_name?: scalar|null, // Default: null
1313
 *         },
1314
 *     },
1315
 *     migrations?: list<scalar|null>,
1316
 *     connection?: scalar|null, // Connection name to use for the migrations database. // Default: null
1317
 *     em?: scalar|null, // Entity manager name to use for the migrations database (available when doctrine/orm is installed). // Default: null
1318
 *     all_or_nothing?: scalar|null, // Run all migrations in a transaction. // Default: false
1319
 *     check_database_platform?: scalar|null, // Adds an extra check in the generated migrations to allow execution only on the same platform as they were initially generated on. // Default: true
1320
 *     custom_template?: scalar|null, // Custom template path for generated migration classes. // Default: null
1321
 *     organize_migrations?: scalar|null, // Organize migrations mode. Possible values are: "BY_YEAR", "BY_YEAR_AND_MONTH", false // Default: false
1322
 *     enable_profiler?: bool, // Whether or not to enable the profiler collector to calculate and visualize migration status. This adds some queries overhead. // Default: false
1323
 *     transactional?: bool, // Whether or not to wrap migrations in a single transaction. // Default: true
1324
 * }
1325
 * @psalm-type LiipTestFixturesConfig = array{
1326
 *     cache_db?: array{
1327
 *         sqlite?: scalar|null, // Default: null
1328
 *         ...<mixed>
1329
 *     },
1330
 *     keep_database_and_schema?: bool, // Default: false
1331
 *     cache_metadata?: bool, // Default: true
1332
 * }
1333
 * @psalm-type TwigExtraConfig = array{
1334
 *     cache?: bool|array{
1335
 *         enabled?: bool, // Default: false
1336
 *     },
1337
 *     html?: bool|array{
1338
 *         enabled?: bool, // Default: false
1339
 *     },
1340
 *     markdown?: bool|array{
1341
 *         enabled?: bool, // Default: false
1342
 *     },
1343
 *     intl?: bool|array{
1344
 *         enabled?: bool, // Default: true
1345
 *     },
1346
 *     cssinliner?: bool|array{
1347
 *         enabled?: bool, // Default: false
1348
 *     },
1349
 *     inky?: bool|array{
1350
 *         enabled?: bool, // Default: false
1351
 *     },
1352
 *     string?: bool|array{
1353
 *         enabled?: bool, // Default: false
1354
 *     },
1355
 *     commonmark?: array{
1356
 *         renderer?: array{ // Array of options for rendering HTML.
1357
 *             block_separator?: scalar|null,
1358
 *             inner_separator?: scalar|null,
1359
 *             soft_break?: scalar|null,
1360
 *         },
1361
 *         html_input?: "strip"|"allow"|"escape", // How to handle HTML input.
1362
 *         allow_unsafe_links?: bool, // Remove risky link and image URLs by setting this to false. // Default: true
1363
 *         max_nesting_level?: int, // The maximum nesting level for blocks. // Default: 9223372036854775807
1364
 *         max_delimiters_per_line?: int, // The maximum number of strong/emphasis delimiters per line. // Default: 9223372036854775807
1365
 *         slug_normalizer?: array{ // Array of options for configuring how URL-safe slugs are created.
1366
 *             instance?: mixed,
1367
 *             max_length?: int, // Default: 255
1368
 *             unique?: mixed,
1369
 *         },
1370
 *         commonmark?: array{ // Array of options for configuring the CommonMark core extension.
1371
 *             enable_em?: bool, // Default: true
1372
 *             enable_strong?: bool, // Default: true
1373
 *             use_asterisk?: bool, // Default: true
1374
 *             use_underscore?: bool, // Default: true
1375
 *             unordered_list_markers?: list<scalar|null>,
1376
 *         },
1377
 *         ...<mixed>
1378
 *     },
1379
 * }
1380
 * @psalm-type TwigConfig = array{
1381
 *     form_themes?: list<scalar|null>,
1382
 *     globals?: array<string, array{ // Default: []
1383
 *         id?: scalar|null,
1384
 *         type?: scalar|null,
1385
 *         value?: mixed,
1386
 *     }>,
1387
 *     autoescape_service?: scalar|null, // Default: null
1388
 *     autoescape_service_method?: scalar|null, // Default: null
1389
 *     base_template_class?: scalar|null, // Deprecated: The child node "base_template_class" at path "twig.base_template_class" is deprecated.
1390
 *     cache?: scalar|null, // Default: true
1391
 *     charset?: scalar|null, // Default: "%kernel.charset%"
1392
 *     debug?: bool, // Default: "%kernel.debug%"
1393
 *     strict_variables?: bool, // Default: "%kernel.debug%"
1394
 *     auto_reload?: scalar|null,
1395
 *     optimizations?: int,
1396
 *     default_path?: scalar|null, // The default path used to load templates. // Default: "%kernel.project_dir%/templates"
1397
 *     file_name_pattern?: list<scalar|null>,
1398
 *     paths?: array<string, mixed>,
1399
 *     date?: array{ // The default format options used by the date filter.
1400
 *         format?: scalar|null, // Default: "F j, Y H:i"
1401
 *         interval_format?: scalar|null, // Default: "%d days"
1402
 *         timezone?: scalar|null, // The timezone used when formatting dates, when set to null, the timezone returned by date_default_timezone_get() is used. // Default: null
1403
 *     },
1404
 *     number_format?: array{ // The default format options for the number_format filter.
1405
 *         decimals?: int, // Default: 0
1406
 *         decimal_point?: scalar|null, // Default: "."
1407
 *         thousands_separator?: scalar|null, // Default: ","
1408
 *     },
1409
 *     mailer?: array{
1410
 *         html_to_text_converter?: scalar|null, // A service implementing the "Symfony\Component\Mime\HtmlToTextConverter\HtmlToTextConverterInterface". // Default: null
1411
 *     },
1412
 * }
1413
 * @psalm-type SecurityConfig = array{
1414
 *     access_denied_url?: scalar|null, // Default: null
1415
 *     session_fixation_strategy?: "none"|"migrate"|"invalidate", // Default: "migrate"
1416
 *     hide_user_not_found?: bool, // Deprecated: The "hide_user_not_found" option is deprecated and will be removed in 8.0. Use the "expose_security_errors" option instead.
1417
 *     expose_security_errors?: \Symfony\Component\Security\Http\Authentication\ExposeSecurityLevel::None|\Symfony\Component\Security\Http\Authentication\ExposeSecurityLevel::AccountStatus|\Symfony\Component\Security\Http\Authentication\ExposeSecurityLevel::All, // Default: "none"
1418
 *     erase_credentials?: bool, // Default: true
1419
 *     access_decision_manager?: array{
1420
 *         strategy?: "affirmative"|"consensus"|"unanimous"|"priority",
1421
 *         service?: scalar|null,
1422
 *         strategy_service?: scalar|null,
1423
 *         allow_if_all_abstain?: bool, // Default: false
1424
 *         allow_if_equal_granted_denied?: bool, // Default: true
1425
 *     },
1426
 *     password_hashers?: array<string, string|array{ // Default: []
1427
 *         algorithm?: scalar|null,
1428
 *         migrate_from?: list<scalar|null>,
1429
 *         hash_algorithm?: scalar|null, // Name of hashing algorithm for PBKDF2 (i.e. sha256, sha512, etc..) See hash_algos() for a list of supported algorithms. // Default: "sha512"
1430
 *         key_length?: scalar|null, // Default: 40
1431
 *         ignore_case?: bool, // Default: false
1432
 *         encode_as_base64?: bool, // Default: true
1433
 *         iterations?: scalar|null, // Default: 5000
1434
 *         cost?: int, // Default: null
1435
 *         memory_cost?: scalar|null, // Default: null
1436
 *         time_cost?: scalar|null, // Default: null
1437
 *         id?: scalar|null,
1438
 *     }>,
1439
 *     providers?: array<string, array{ // Default: []
1440
 *         id?: scalar|null,
1441
 *         chain?: array{
1442
 *             providers?: list<scalar|null>,
1443
 *         },
1444
 *         entity?: array{
1445
 *             class: scalar|null, // The full entity class name of your user class.
1446
 *             property?: scalar|null, // Default: null
1447
 *             manager_name?: scalar|null, // Default: null
1448
 *         },
1449
 *         memory?: array{
1450
 *             users?: array<string, array{ // Default: []
1451
 *                 password?: scalar|null, // Default: null
1452
 *                 roles?: list<scalar|null>,
1453
 *             }>,
1454
 *         },
1455
 *         ldap?: array{
1456
 *             service: scalar|null,
1457
 *             base_dn: scalar|null,
1458
 *             search_dn?: scalar|null, // Default: null
1459
 *             search_password?: scalar|null, // Default: null
1460
 *             extra_fields?: list<scalar|null>,
1461
 *             default_roles?: list<scalar|null>,
1462
 *             role_fetcher?: scalar|null, // Default: null
1463
 *             uid_key?: scalar|null, // Default: "sAMAccountName"
1464
 *             filter?: scalar|null, // Default: "({uid_key}={user_identifier})"
1465
 *             password_attribute?: scalar|null, // Default: null
1466
 *         },
1467
 *     }>,
1468
 *     firewalls: array<string, array{ // Default: []
1469
 *         pattern?: scalar|null,
1470
 *         host?: scalar|null,
1471
 *         methods?: list<scalar|null>,
1472
 *         security?: bool, // Default: true
1473
 *         user_checker?: scalar|null, // The UserChecker to use when authenticating users in this firewall. // Default: "security.user_checker"
1474
 *         request_matcher?: scalar|null,
1475
 *         access_denied_url?: scalar|null,
1476
 *         access_denied_handler?: scalar|null,
1477
 *         entry_point?: scalar|null, // An enabled authenticator name or a service id that implements "Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface".
1478
 *         provider?: scalar|null,
1479
 *         stateless?: bool, // Default: false
1480
 *         lazy?: bool, // Default: false
1481
 *         context?: scalar|null,
1482
 *         logout?: array{
1483
 *             enable_csrf?: bool|null, // Default: null
1484
 *             csrf_token_id?: scalar|null, // Default: "logout"
1485
 *             csrf_parameter?: scalar|null, // Default: "_csrf_token"
1486
 *             csrf_token_manager?: scalar|null,
1487
 *             path?: scalar|null, // Default: "/logout"
1488
 *             target?: scalar|null, // Default: "/"
1489
 *             invalidate_session?: bool, // Default: true
1490
 *             clear_site_data?: list<"*"|"cache"|"cookies"|"storage"|"executionContexts">,
1491
 *             delete_cookies?: array<string, array{ // Default: []
1492
 *                 path?: scalar|null, // Default: null
1493
 *                 domain?: scalar|null, // Default: null
1494
 *                 secure?: scalar|null, // Default: false
1495
 *                 samesite?: scalar|null, // Default: null
1496
 *                 partitioned?: scalar|null, // Default: false
1497
 *             }>,
1498
 *         },
1499
 *         switch_user?: array{
1500
 *             provider?: scalar|null,
1501
 *             parameter?: scalar|null, // Default: "_switch_user"
1502
 *             role?: scalar|null, // Default: "ROLE_ALLOWED_TO_SWITCH"
1503
 *             target_route?: scalar|null, // Default: null
1504
 *         },
1505
 *         required_badges?: list<scalar|null>,
1506
 *         custom_authenticators?: list<scalar|null>,
1507
 *         login_throttling?: array{
1508
 *             limiter?: scalar|null, // A service id implementing "Symfony\Component\HttpFoundation\RateLimiter\RequestRateLimiterInterface".
1509
 *             max_attempts?: int, // Default: 5
1510
 *             interval?: scalar|null, // Default: "1 minute"
1511
 *             lock_factory?: scalar|null, // The service ID of the lock factory used by the login rate limiter (or null to disable locking). // Default: null
1512
 *             cache_pool?: string, // The cache pool to use for storing the limiter state // Default: "cache.rate_limiter"
1513
 *             storage_service?: string, // The service ID of a custom storage implementation, this precedes any configured "cache_pool" // Default: null
1514
 *         },
1515
 *         x509?: array{
1516
 *             provider?: scalar|null,
1517
 *             user?: scalar|null, // Default: "SSL_CLIENT_S_DN_Email"
1518
 *             credentials?: scalar|null, // Default: "SSL_CLIENT_S_DN"
1519
 *             user_identifier?: scalar|null, // Default: "emailAddress"
1520
 *         },
1521
 *         remote_user?: array{
1522
 *             provider?: scalar|null,
1523
 *             user?: scalar|null, // Default: "REMOTE_USER"
1524
 *         },
1525
 *         login_link?: array{
1526
 *             check_route: scalar|null, // Route that will validate the login link - e.g. "app_login_link_verify".
1527
 *             check_post_only?: scalar|null, // If true, only HTTP POST requests to "check_route" will be handled by the authenticator. // Default: false
1528
 *             signature_properties: list<scalar|null>,
1529
 *             lifetime?: int, // The lifetime of the login link in seconds. // Default: 600
1530
 *             max_uses?: int, // Max number of times a login link can be used - null means unlimited within lifetime. // Default: null
1531
 *             used_link_cache?: scalar|null, // Cache service id used to expired links of max_uses is set.
1532
 *             success_handler?: scalar|null, // A service id that implements Symfony\Component\Security\Http\Authentication\AuthenticationSuccessHandlerInterface.
1533
 *             failure_handler?: scalar|null, // A service id that implements Symfony\Component\Security\Http\Authentication\AuthenticationFailureHandlerInterface.
1534
 *             provider?: scalar|null, // The user provider to load users from.
1535
 *             secret?: scalar|null, // Default: "%kernel.secret%"
1536
 *             always_use_default_target_path?: bool, // Default: false
1537
 *             default_target_path?: scalar|null, // Default: "/"
1538
 *             login_path?: scalar|null, // Default: "/login"
1539
 *             target_path_parameter?: scalar|null, // Default: "_target_path"
1540
 *             use_referer?: bool, // Default: false
1541
 *             failure_path?: scalar|null, // Default: null
1542
 *             failure_forward?: bool, // Default: false
1543
 *             failure_path_parameter?: scalar|null, // Default: "_failure_path"
1544
 *         },
1545
 *         form_login?: array{
1546
 *             provider?: scalar|null,
1547
 *             remember_me?: bool, // Default: true
1548
 *             success_handler?: scalar|null,
1549
 *             failure_handler?: scalar|null,
1550
 *             check_path?: scalar|null, // Default: "/login_check"
1551
 *             use_forward?: bool, // Default: false
1552
 *             login_path?: scalar|null, // Default: "/login"
1553
 *             username_parameter?: scalar|null, // Default: "_username"
1554
 *             password_parameter?: scalar|null, // Default: "_password"
1555
 *             csrf_parameter?: scalar|null, // Default: "_csrf_token"
1556
 *             csrf_token_id?: scalar|null, // Default: "authenticate"
1557
 *             enable_csrf?: bool, // Default: false
1558
 *             post_only?: bool, // Default: true
1559
 *             form_only?: bool, // Default: false
1560
 *             always_use_default_target_path?: bool, // Default: false
1561
 *             default_target_path?: scalar|null, // Default: "/"
1562
 *             target_path_parameter?: scalar|null, // Default: "_target_path"
1563
 *             use_referer?: bool, // Default: false
1564
 *             failure_path?: scalar|null, // Default: null
1565
 *             failure_forward?: bool, // Default: false
1566
 *             failure_path_parameter?: scalar|null, // Default: "_failure_path"
1567
 *         },
1568
 *         form_login_ldap?: array{
1569
 *             provider?: scalar|null,
1570
 *             remember_me?: bool, // Default: true
1571
 *             success_handler?: scalar|null,
1572
 *             failure_handler?: scalar|null,
1573
 *             check_path?: scalar|null, // Default: "/login_check"
1574
 *             use_forward?: bool, // Default: false
1575
 *             login_path?: scalar|null, // Default: "/login"
1576
 *             username_parameter?: scalar|null, // Default: "_username"
1577
 *             password_parameter?: scalar|null, // Default: "_password"
1578
 *             csrf_parameter?: scalar|null, // Default: "_csrf_token"
1579
 *             csrf_token_id?: scalar|null, // Default: "authenticate"
1580
 *             enable_csrf?: bool, // Default: false
1581
 *             post_only?: bool, // Default: true
1582
 *             form_only?: bool, // Default: false
1583
 *             always_use_default_target_path?: bool, // Default: false
1584
 *             default_target_path?: scalar|null, // Default: "/"
1585
 *             target_path_parameter?: scalar|null, // Default: "_target_path"
1586
 *             use_referer?: bool, // Default: false
1587
 *             failure_path?: scalar|null, // Default: null
1588
 *             failure_forward?: bool, // Default: false
1589
 *             failure_path_parameter?: scalar|null, // Default: "_failure_path"
1590
 *             service?: scalar|null, // Default: "ldap"
1591
 *             dn_string?: scalar|null, // Default: "{user_identifier}"
1592
 *             query_string?: scalar|null,
1593
 *             search_dn?: scalar|null, // Default: ""
1594
 *             search_password?: scalar|null, // Default: ""
1595
 *         },
1596
 *         json_login?: array{
1597
 *             provider?: scalar|null,
1598
 *             remember_me?: bool, // Default: true
1599
 *             success_handler?: scalar|null,
1600
 *             failure_handler?: scalar|null,
1601
 *             check_path?: scalar|null, // Default: "/login_check"
1602
 *             use_forward?: bool, // Default: false
1603
 *             login_path?: scalar|null, // Default: "/login"
1604
 *             username_path?: scalar|null, // Default: "username"
1605
 *             password_path?: scalar|null, // Default: "password"
1606
 *         },
1607
 *         json_login_ldap?: array{
1608
 *             provider?: scalar|null,
1609
 *             remember_me?: bool, // Default: true
1610
 *             success_handler?: scalar|null,
1611
 *             failure_handler?: scalar|null,
1612
 *             check_path?: scalar|null, // Default: "/login_check"
1613
 *             use_forward?: bool, // Default: false
1614
 *             login_path?: scalar|null, // Default: "/login"
1615
 *             username_path?: scalar|null, // Default: "username"
1616
 *             password_path?: scalar|null, // Default: "password"
1617
 *             service?: scalar|null, // Default: "ldap"
1618
 *             dn_string?: scalar|null, // Default: "{user_identifier}"
1619
 *             query_string?: scalar|null,
1620
 *             search_dn?: scalar|null, // Default: ""
1621
 *             search_password?: scalar|null, // Default: ""
1622
 *         },
1623
 *         access_token?: array{
1624
 *             provider?: scalar|null,
1625
 *             remember_me?: bool, // Default: true
1626
 *             success_handler?: scalar|null,
1627
 *             failure_handler?: scalar|null,
1628
 *             realm?: scalar|null, // Default: null
1629
 *             token_extractors?: list<scalar|null>,
1630
 *             token_handler: string|array{
1631
 *                 id?: scalar|null,
1632
 *                 oidc_user_info?: string|array{
1633
 *                     base_uri: scalar|null, // Base URI of the userinfo endpoint on the OIDC server, or the OIDC server URI to use the discovery (require "discovery" to be configured).
1634
 *                     discovery?: array{ // Enable the OIDC discovery.
1635
 *                         cache?: array{
1636
 *                             id: scalar|null, // Cache service id to use to cache the OIDC discovery configuration.
1637
 *                         },
1638
 *                     },
1639
 *                     claim?: scalar|null, // Claim which contains the user identifier (e.g. sub, email, etc.). // Default: "sub"
1640
 *                     client?: scalar|null, // HttpClient service id to use to call the OIDC server.
1641
 *                 },
1642
 *                 oidc?: array{
1643
 *                     discovery?: array{ // Enable the OIDC discovery.
1644
 *                         base_uri: list<scalar|null>,
1645
 *                         cache?: array{
1646
 *                             id: scalar|null, // Cache service id to use to cache the OIDC discovery configuration.
1647
 *                         },
1648
 *                     },
1649
 *                     claim?: scalar|null, // Claim which contains the user identifier (e.g.: sub, email..). // Default: "sub"
1650
 *                     audience: scalar|null, // Audience set in the token, for validation purpose.
1651
 *                     issuers: list<scalar|null>,
1652
 *                     algorithm?: array<mixed>,
1653
 *                     algorithms: list<scalar|null>,
1654
 *                     key?: scalar|null, // Deprecated: The "key" option is deprecated and will be removed in 8.0. Use the "keyset" option instead. // JSON-encoded JWK used to sign the token (must contain a "kty" key).
1655
 *                     keyset?: scalar|null, // JSON-encoded JWKSet used to sign the token (must contain a list of valid public keys).
1656
 *                     encryption?: bool|array{
1657
 *                         enabled?: bool, // Default: false
1658
 *                         enforce?: bool, // When enabled, the token shall be encrypted. // Default: false
1659
 *                         algorithms: list<scalar|null>,
1660
 *                         keyset: scalar|null, // JSON-encoded JWKSet used to decrypt the token (must contain a list of valid private keys).
1661
 *                     },
1662
 *                 },
1663
 *                 cas?: array{
1664
 *                     validation_url: scalar|null, // CAS server validation URL
1665
 *                     prefix?: scalar|null, // CAS prefix // Default: "cas"
1666
 *                     http_client?: scalar|null, // HTTP Client service // Default: null
1667
 *                 },
1668
 *                 oauth2?: scalar|null,
1669
 *             },
1670
 *         },
1671
 *         http_basic?: array{
1672
 *             provider?: scalar|null,
1673
 *             realm?: scalar|null, // Default: "Secured Area"
1674
 *         },
1675
 *         http_basic_ldap?: array{
1676
 *             provider?: scalar|null,
1677
 *             realm?: scalar|null, // Default: "Secured Area"
1678
 *             service?: scalar|null, // Default: "ldap"
1679
 *             dn_string?: scalar|null, // Default: "{user_identifier}"
1680
 *             query_string?: scalar|null,
1681
 *             search_dn?: scalar|null, // Default: ""
1682
 *             search_password?: scalar|null, // Default: ""
1683
 *         },
1684
 *         remember_me?: array{
1685
 *             secret?: scalar|null, // Default: "%kernel.secret%"
1686
 *             service?: scalar|null,
1687
 *             user_providers?: list<scalar|null>,
1688
 *             catch_exceptions?: bool, // Default: true
1689
 *             signature_properties?: list<scalar|null>,
1690
 *             token_provider?: string|array{
1691
 *                 service?: scalar|null, // The service ID of a custom remember-me token provider.
1692
 *                 doctrine?: bool|array{
1693
 *                     enabled?: bool, // Default: false
1694
 *                     connection?: scalar|null, // Default: null
1695
 *                 },
1696
 *             },
1697
 *             token_verifier?: scalar|null, // The service ID of a custom rememberme token verifier.
1698
 *             name?: scalar|null, // Default: "REMEMBERME"
1699
 *             lifetime?: int, // Default: 31536000
1700
 *             path?: scalar|null, // Default: "/"
1701
 *             domain?: scalar|null, // Default: null
1702
 *             secure?: true|false|"auto", // Default: null
1703
 *             httponly?: bool, // Default: true
1704
 *             samesite?: null|"lax"|"strict"|"none", // Default: "lax"
1705
 *             always_remember_me?: bool, // Default: false
1706
 *             remember_me_parameter?: scalar|null, // Default: "_remember_me"
1707
 *         },
1708
 *     }>,
1709
 *     access_control?: list<array{ // Default: []
1710
 *         request_matcher?: scalar|null, // Default: null
1711
 *         requires_channel?: scalar|null, // Default: null
1712
 *         path?: scalar|null, // Use the urldecoded format. // Default: null
1713
 *         host?: scalar|null, // Default: null
1714
 *         port?: int, // Default: null
1715
 *         ips?: list<scalar|null>,
1716
 *         attributes?: array<string, scalar|null>,
1717
 *         route?: scalar|null, // Default: null
1718
 *         methods?: list<scalar|null>,
1719
 *         allow_if?: scalar|null, // Default: null
1720
 *         roles?: list<scalar|null>,
1721
 *     }>,
1722
 *     role_hierarchy?: array<string, string|list<scalar|null>>,
1723
 * }
1724
 * @psalm-type WebProfilerConfig = array{
1725
 *     toolbar?: bool|array{ // Profiler toolbar configuration
1726
 *         enabled?: bool, // Default: false
1727
 *         ajax_replace?: bool, // Replace toolbar on AJAX requests // Default: false
1728
 *     },
1729
 *     intercept_redirects?: bool, // Default: false
1730
 *     excluded_ajax_paths?: scalar|null, // Default: "^/((index|app(_[\\w]+)?)\\.php/)?_wdt"
1731
 * }
1732
 * @psalm-type SurfnetStepupMiddlewareApiConfig = array{
1733
 *     http_basic_realm?: scalar|null, // Default: "Secure Gateway API"
1734
 * }
1735
 * @psalm-type SurfnetStepupMiddlewareCommandHandlingConfig = array{
1736
 *     self_service_email_verification_url_template: scalar|null, // Configures the URL where registrants can verify e-mail address ownership.
1737
 *     self_service_url: scalar|null, // Configures the URL for Self Service.
1738
 *     email_sender: array{ // Configures the sender used for all outgoing e-mail messages
1739
 *         name: scalar|null,
1740
 *         email: scalar|null,
1741
 *     },
1742
 *     email_fallback_locale: scalar|null,
1743
 * }
1744
 * @psalm-type SurfnetStepupMiddlewareGatewayConfig = array<mixed>
1745
 * @psalm-type SurfnetStepupMiddlewareManagementConfig = array{
1746
 *     email_required_locale: scalar|null,
1747
 * }
1748
 * @psalm-type SurfnetStepupMiddlewareMiddlewareConfig = array{
1749
 *     second_factors_display_name: list<scalar|null>,
1750
 *     email_verification_window?: scalar|null, // The amount of seconds after which the email verification url/code expires // Default: 3600
1751
 *     enabled_generic_second_factors: list<array{ // Default: []
1752
 *         loa: scalar|null, // The lao level of the Gssf
1753
 *     }>,
1754
 * }
1755
 * @psalm-type SurfnetSamlConfig = array<mixed>
1756
 * @psalm-type ConfigType = array{
1757
 *     imports?: ImportsConfig,
1758
 *     parameters?: ParametersConfig,
1759
 *     services?: ServicesConfig,
1760
 *     framework?: FrameworkConfig,
1761
 *     nelmio_security?: NelmioSecurityConfig,
1762
 *     open_conext_monitor?: OpenConextMonitorConfig,
1763
 *     surfnet_stepup?: SurfnetStepupConfig,
1764
 *     monolog?: MonologConfig,
1765
 *     doctrine?: DoctrineConfig,
1766
 *     doctrine_migrations?: DoctrineMigrationsConfig,
1767
 *     twig_extra?: TwigExtraConfig,
1768
 *     twig?: TwigConfig,
1769
 *     security?: SecurityConfig,
1770
 *     surfnet_stepup_middleware_api?: SurfnetStepupMiddlewareApiConfig,
1771
 *     surfnet_stepup_middleware_command_handling?: SurfnetStepupMiddlewareCommandHandlingConfig,
1772
 *     surfnet_stepup_middleware_gateway?: SurfnetStepupMiddlewareGatewayConfig,
1773
 *     surfnet_stepup_middleware_management?: SurfnetStepupMiddlewareManagementConfig,
1774
 *     surfnet_stepup_middleware_middleware?: SurfnetStepupMiddlewareMiddlewareConfig,
1775
 *     "when@dev"?: array{
1776
 *         imports?: ImportsConfig,
1777
 *         parameters?: ParametersConfig,
1778
 *         services?: ServicesConfig,
1779
 *         framework?: FrameworkConfig,
1780
 *         nelmio_security?: NelmioSecurityConfig,
1781
 *         open_conext_monitor?: OpenConextMonitorConfig,
1782
 *         surfnet_stepup?: SurfnetStepupConfig,
1783
 *         monolog?: MonologConfig,
1784
 *         doctrine?: DoctrineConfig,
1785
 *         doctrine_migrations?: DoctrineMigrationsConfig,
1786
 *         liip_test_fixtures?: LiipTestFixturesConfig,
1787
 *         twig_extra?: TwigExtraConfig,
1788
 *         twig?: TwigConfig,
1789
 *         security?: SecurityConfig,
1790
 *         web_profiler?: WebProfilerConfig,
1791
 *         surfnet_stepup_middleware_api?: SurfnetStepupMiddlewareApiConfig,
1792
 *         surfnet_stepup_middleware_command_handling?: SurfnetStepupMiddlewareCommandHandlingConfig,
1793
 *         surfnet_stepup_middleware_gateway?: SurfnetStepupMiddlewareGatewayConfig,
1794
 *         surfnet_stepup_middleware_management?: SurfnetStepupMiddlewareManagementConfig,
1795
 *         surfnet_stepup_middleware_middleware?: SurfnetStepupMiddlewareMiddlewareConfig,
1796
 *     },
1797
 *     "when@dev_event_replay"?: array{
1798
 *         imports?: ImportsConfig,
1799
 *         parameters?: ParametersConfig,
1800
 *         services?: ServicesConfig,
1801
 *         framework?: FrameworkConfig,
1802
 *         nelmio_security?: NelmioSecurityConfig,
1803
 *         open_conext_monitor?: OpenConextMonitorConfig,
1804
 *         surfnet_stepup?: SurfnetStepupConfig,
1805
 *         monolog?: MonologConfig,
1806
 *         doctrine?: DoctrineConfig,
1807
 *         doctrine_migrations?: DoctrineMigrationsConfig,
1808
 *         twig_extra?: TwigExtraConfig,
1809
 *         twig?: TwigConfig,
1810
 *         security?: SecurityConfig,
1811
 *         web_profiler?: WebProfilerConfig,
1812
 *         surfnet_stepup_middleware_api?: SurfnetStepupMiddlewareApiConfig,
1813
 *         surfnet_stepup_middleware_command_handling?: SurfnetStepupMiddlewareCommandHandlingConfig,
1814
 *         surfnet_stepup_middleware_gateway?: SurfnetStepupMiddlewareGatewayConfig,
1815
 *         surfnet_stepup_middleware_management?: SurfnetStepupMiddlewareManagementConfig,
1816
 *         surfnet_stepup_middleware_middleware?: SurfnetStepupMiddlewareMiddlewareConfig,
1817
 *     },
1818
 *     "when@prod"?: array{
1819
 *         imports?: ImportsConfig,
1820
 *         parameters?: ParametersConfig,
1821
 *         services?: ServicesConfig,
1822
 *         framework?: FrameworkConfig,
1823
 *         nelmio_security?: NelmioSecurityConfig,
1824
 *         open_conext_monitor?: OpenConextMonitorConfig,
1825
 *         surfnet_stepup?: SurfnetStepupConfig,
1826
 *         monolog?: MonologConfig,
1827
 *         doctrine?: DoctrineConfig,
1828
 *         doctrine_migrations?: DoctrineMigrationsConfig,
1829
 *         twig_extra?: TwigExtraConfig,
1830
 *         twig?: TwigConfig,
1831
 *         security?: SecurityConfig,
1832
 *         surfnet_stepup_middleware_api?: SurfnetStepupMiddlewareApiConfig,
1833
 *         surfnet_stepup_middleware_command_handling?: SurfnetStepupMiddlewareCommandHandlingConfig,
1834
 *         surfnet_stepup_middleware_gateway?: SurfnetStepupMiddlewareGatewayConfig,
1835
 *         surfnet_stepup_middleware_management?: SurfnetStepupMiddlewareManagementConfig,
1836
 *         surfnet_stepup_middleware_middleware?: SurfnetStepupMiddlewareMiddlewareConfig,
1837
 *     },
1838
 *     "when@prod_event_replay"?: array{
1839
 *         imports?: ImportsConfig,
1840
 *         parameters?: ParametersConfig,
1841
 *         services?: ServicesConfig,
1842
 *         framework?: FrameworkConfig,
1843
 *         nelmio_security?: NelmioSecurityConfig,
1844
 *         open_conext_monitor?: OpenConextMonitorConfig,
1845
 *         surfnet_stepup?: SurfnetStepupConfig,
1846
 *         monolog?: MonologConfig,
1847
 *         doctrine?: DoctrineConfig,
1848
 *         doctrine_migrations?: DoctrineMigrationsConfig,
1849
 *         twig_extra?: TwigExtraConfig,
1850
 *         twig?: TwigConfig,
1851
 *         security?: SecurityConfig,
1852
 *         web_profiler?: WebProfilerConfig,
1853
 *         surfnet_stepup_middleware_api?: SurfnetStepupMiddlewareApiConfig,
1854
 *         surfnet_stepup_middleware_command_handling?: SurfnetStepupMiddlewareCommandHandlingConfig,
1855
 *         surfnet_stepup_middleware_gateway?: SurfnetStepupMiddlewareGatewayConfig,
1856
 *         surfnet_stepup_middleware_management?: SurfnetStepupMiddlewareManagementConfig,
1857
 *         surfnet_stepup_middleware_middleware?: SurfnetStepupMiddlewareMiddlewareConfig,
1858
 *     },
1859
 *     "when@smoketes"?: array{
1860
 *         imports?: ImportsConfig,
1861
 *         parameters?: ParametersConfig,
1862
 *         services?: ServicesConfig,
1863
 *         framework?: FrameworkConfig,
1864
 *         nelmio_security?: NelmioSecurityConfig,
1865
 *         open_conext_monitor?: OpenConextMonitorConfig,
1866
 *         surfnet_stepup?: SurfnetStepupConfig,
1867
 *         monolog?: MonologConfig,
1868
 *         doctrine?: DoctrineConfig,
1869
 *         doctrine_migrations?: DoctrineMigrationsConfig,
1870
 *         twig_extra?: TwigExtraConfig,
1871
 *         twig?: TwigConfig,
1872
 *         security?: SecurityConfig,
1873
 *         surfnet_stepup_middleware_api?: SurfnetStepupMiddlewareApiConfig,
1874
 *         surfnet_stepup_middleware_command_handling?: SurfnetStepupMiddlewareCommandHandlingConfig,
1875
 *         surfnet_stepup_middleware_gateway?: SurfnetStepupMiddlewareGatewayConfig,
1876
 *         surfnet_stepup_middleware_management?: SurfnetStepupMiddlewareManagementConfig,
1877
 *         surfnet_stepup_middleware_middleware?: SurfnetStepupMiddlewareMiddlewareConfig,
1878
 *     },
1879
 *     "when@smoketest"?: array{
1880
 *         imports?: ImportsConfig,
1881
 *         parameters?: ParametersConfig,
1882
 *         services?: ServicesConfig,
1883
 *         framework?: FrameworkConfig,
1884
 *         nelmio_security?: NelmioSecurityConfig,
1885
 *         open_conext_monitor?: OpenConextMonitorConfig,
1886
 *         surfnet_stepup?: SurfnetStepupConfig,
1887
 *         monolog?: MonologConfig,
1888
 *         doctrine?: DoctrineConfig,
1889
 *         doctrine_migrations?: DoctrineMigrationsConfig,
1890
 *         liip_test_fixtures?: LiipTestFixturesConfig,
1891
 *         twig_extra?: TwigExtraConfig,
1892
 *         twig?: TwigConfig,
1893
 *         security?: SecurityConfig,
1894
 *         web_profiler?: WebProfilerConfig,
1895
 *         surfnet_stepup_middleware_api?: SurfnetStepupMiddlewareApiConfig,
1896
 *         surfnet_stepup_middleware_command_handling?: SurfnetStepupMiddlewareCommandHandlingConfig,
1897
 *         surfnet_stepup_middleware_gateway?: SurfnetStepupMiddlewareGatewayConfig,
1898
 *         surfnet_stepup_middleware_management?: SurfnetStepupMiddlewareManagementConfig,
1899
 *         surfnet_stepup_middleware_middleware?: SurfnetStepupMiddlewareMiddlewareConfig,
1900
 *     },
1901
 *     "when@smoketest_event_replay"?: array{
1902
 *         imports?: ImportsConfig,
1903
 *         parameters?: ParametersConfig,
1904
 *         services?: ServicesConfig,
1905
 *         framework?: FrameworkConfig,
1906
 *         nelmio_security?: NelmioSecurityConfig,
1907
 *         open_conext_monitor?: OpenConextMonitorConfig,
1908
 *         surfnet_stepup?: SurfnetStepupConfig,
1909
 *         monolog?: MonologConfig,
1910
 *         doctrine?: DoctrineConfig,
1911
 *         doctrine_migrations?: DoctrineMigrationsConfig,
1912
 *         liip_test_fixtures?: LiipTestFixturesConfig,
1913
 *         twig_extra?: TwigExtraConfig,
1914
 *         twig?: TwigConfig,
1915
 *         security?: SecurityConfig,
1916
 *         web_profiler?: WebProfilerConfig,
1917
 *         surfnet_stepup_middleware_api?: SurfnetStepupMiddlewareApiConfig,
1918
 *         surfnet_stepup_middleware_command_handling?: SurfnetStepupMiddlewareCommandHandlingConfig,
1919
 *         surfnet_stepup_middleware_gateway?: SurfnetStepupMiddlewareGatewayConfig,
1920
 *         surfnet_stepup_middleware_management?: SurfnetStepupMiddlewareManagementConfig,
1921
 *         surfnet_stepup_middleware_middleware?: SurfnetStepupMiddlewareMiddlewareConfig,
1922
 *     },
1923
 *     "when@sometest_event_replay"?: array{
1924
 *         imports?: ImportsConfig,
1925
 *         parameters?: ParametersConfig,
1926
 *         services?: ServicesConfig,
1927
 *         framework?: FrameworkConfig,
1928
 *         nelmio_security?: NelmioSecurityConfig,
1929
 *         open_conext_monitor?: OpenConextMonitorConfig,
1930
 *         surfnet_stepup?: SurfnetStepupConfig,
1931
 *         monolog?: MonologConfig,
1932
 *         doctrine?: DoctrineConfig,
1933
 *         doctrine_migrations?: DoctrineMigrationsConfig,
1934
 *         twig_extra?: TwigExtraConfig,
1935
 *         twig?: TwigConfig,
1936
 *         security?: SecurityConfig,
1937
 *         surfnet_stepup_middleware_api?: SurfnetStepupMiddlewareApiConfig,
1938
 *         surfnet_stepup_middleware_command_handling?: SurfnetStepupMiddlewareCommandHandlingConfig,
1939
 *         surfnet_stepup_middleware_gateway?: SurfnetStepupMiddlewareGatewayConfig,
1940
 *         surfnet_stepup_middleware_management?: SurfnetStepupMiddlewareManagementConfig,
1941
 *         surfnet_stepup_middleware_middleware?: SurfnetStepupMiddlewareMiddlewareConfig,
1942
 *     },
1943
 *     "when@test"?: array{
1944
 *         imports?: ImportsConfig,
1945
 *         parameters?: ParametersConfig,
1946
 *         services?: ServicesConfig,
1947
 *         framework?: FrameworkConfig,
1948
 *         nelmio_security?: NelmioSecurityConfig,
1949
 *         open_conext_monitor?: OpenConextMonitorConfig,
1950
 *         surfnet_stepup?: SurfnetStepupConfig,
1951
 *         monolog?: MonologConfig,
1952
 *         doctrine?: DoctrineConfig,
1953
 *         doctrine_migrations?: DoctrineMigrationsConfig,
1954
 *         liip_test_fixtures?: LiipTestFixturesConfig,
1955
 *         twig_extra?: TwigExtraConfig,
1956
 *         twig?: TwigConfig,
1957
 *         security?: SecurityConfig,
1958
 *         web_profiler?: WebProfilerConfig,
1959
 *         surfnet_stepup_middleware_api?: SurfnetStepupMiddlewareApiConfig,
1960
 *         surfnet_stepup_middleware_command_handling?: SurfnetStepupMiddlewareCommandHandlingConfig,
1961
 *         surfnet_stepup_middleware_gateway?: SurfnetStepupMiddlewareGatewayConfig,
1962
 *         surfnet_stepup_middleware_management?: SurfnetStepupMiddlewareManagementConfig,
1963
 *         surfnet_stepup_middleware_middleware?: SurfnetStepupMiddlewareMiddlewareConfig,
1964
 *     },
1965
 *     "when@test_event_replay"?: array{
1966
 *         imports?: ImportsConfig,
1967
 *         parameters?: ParametersConfig,
1968
 *         services?: ServicesConfig,
1969
 *         framework?: FrameworkConfig,
1970
 *         nelmio_security?: NelmioSecurityConfig,
1971
 *         open_conext_monitor?: OpenConextMonitorConfig,
1972
 *         surfnet_stepup?: SurfnetStepupConfig,
1973
 *         monolog?: MonologConfig,
1974
 *         doctrine?: DoctrineConfig,
1975
 *         doctrine_migrations?: DoctrineMigrationsConfig,
1976
 *         twig_extra?: TwigExtraConfig,
1977
 *         twig?: TwigConfig,
1978
 *         security?: SecurityConfig,
1979
 *         surfnet_stepup_middleware_api?: SurfnetStepupMiddlewareApiConfig,
1980
 *         surfnet_stepup_middleware_command_handling?: SurfnetStepupMiddlewareCommandHandlingConfig,
1981
 *         surfnet_stepup_middleware_gateway?: SurfnetStepupMiddlewareGatewayConfig,
1982
 *         surfnet_stepup_middleware_management?: SurfnetStepupMiddlewareManagementConfig,
1983
 *         surfnet_stepup_middleware_middleware?: SurfnetStepupMiddlewareMiddlewareConfig,
1984
 *     },
1985
 *     ...<string, ExtensionType|array{ // extra keys must follow the when@%env% pattern or match an extension alias
1986
 *         imports?: ImportsConfig,
1987
 *         parameters?: ParametersConfig,
1988
 *         services?: ServicesConfig,
1989
 *         ...<string, ExtensionType>,
1990
 *     }>
1991
 * }
1992
 */
1993
final class App
1994
{
1995
    /**
1996
     * @param ConfigType $config
0 ignored issues
show
Bug introduced by
The type Symfony\Component\Depend...Configurator\ConfigType was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
1997
     *
1998
     * @psalm-return ConfigType
1999
     */
2000
    public static function config(array $config): array
2001
    {
2002
        return AppReference::config($config);
2003
    }
2004
}
2005
2006
namespace Symfony\Component\Routing\Loader\Configurator;
2007
2008
/**
2009
 * This class provides array-shapes for configuring the routes of an application.
2010
 *
2011
 * Example:
2012
 *
2013
 *     ```php
2014
 *     // config/routes.php
2015
 *     namespace Symfony\Component\Routing\Loader\Configurator;
2016
 *
2017
 *     return Routes::config([
2018
 *         'controllers' => [
2019
 *             'resource' => 'routing.controllers',
2020
 *         ],
2021
 *     ]);
2022
 *     ```
2023
 *
2024
 * @psalm-type RouteConfig = array{
2025
 *     path: string|array<string,string>,
2026
 *     controller?: string,
2027
 *     methods?: string|list<string>,
2028
 *     requirements?: array<string,string>,
2029
 *     defaults?: array<string,mixed>,
2030
 *     options?: array<string,mixed>,
2031
 *     host?: string|array<string,string>,
2032
 *     schemes?: string|list<string>,
2033
 *     condition?: string,
2034
 *     locale?: string,
2035
 *     format?: string,
2036
 *     utf8?: bool,
2037
 *     stateless?: bool,
2038
 * }
2039
 * @psalm-type ImportConfig = array{
2040
 *     resource: string,
2041
 *     type?: string,
2042
 *     exclude?: string|list<string>,
2043
 *     prefix?: string|array<string,string>,
2044
 *     name_prefix?: string,
2045
 *     trailing_slash_on_root?: bool,
2046
 *     controller?: string,
2047
 *     methods?: string|list<string>,
2048
 *     requirements?: array<string,string>,
2049
 *     defaults?: array<string,mixed>,
2050
 *     options?: array<string,mixed>,
2051
 *     host?: string|array<string,string>,
2052
 *     schemes?: string|list<string>,
2053
 *     condition?: string,
2054
 *     locale?: string,
2055
 *     format?: string,
2056
 *     utf8?: bool,
2057
 *     stateless?: bool,
2058
 * }
2059
 * @psalm-type AliasConfig = array{
2060
 *     alias: string,
2061
 *     deprecated?: array{package:string, version:string, message?:string},
2062
 * }
2063
 * @psalm-type RoutesConfig = array{
2064
 *     "when@dev"?: array<string, RouteConfig|ImportConfig|AliasConfig>,
2065
 *     "when@dev_event_replay"?: array<string, RouteConfig|ImportConfig|AliasConfig>,
2066
 *     "when@prod"?: array<string, RouteConfig|ImportConfig|AliasConfig>,
2067
 *     "when@prod_event_replay"?: array<string, RouteConfig|ImportConfig|AliasConfig>,
2068
 *     "when@smoketes"?: array<string, RouteConfig|ImportConfig|AliasConfig>,
2069
 *     "when@smoketest"?: array<string, RouteConfig|ImportConfig|AliasConfig>,
2070
 *     "when@smoketest_event_replay"?: array<string, RouteConfig|ImportConfig|AliasConfig>,
2071
 *     "when@sometest_event_replay"?: array<string, RouteConfig|ImportConfig|AliasConfig>,
2072
 *     "when@test"?: array<string, RouteConfig|ImportConfig|AliasConfig>,
2073
 *     "when@test_event_replay"?: array<string, RouteConfig|ImportConfig|AliasConfig>,
2074
 *     ...<string, RouteConfig|ImportConfig|AliasConfig>
2075
 * }
2076
 */
2077
final class Routes
0 ignored issues
show
Coding Style Compatibility introduced by
PSR1 recommends that each class should be in its own file to aid autoloaders.

Having each class in a dedicated file usually plays nice with PSR autoloaders and is therefore a well established practice. If you use other autoloaders, you might not want to follow this rule.

Loading history...
2078
{
2079
    /**
2080
     * @param RoutesConfig $config
0 ignored issues
show
Bug introduced by
The type Symfony\Component\Routin...nfigurator\RoutesConfig was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
2081
     *
2082
     * @psalm-return RoutesConfig
2083
     */
2084
    public static function config(array $config): array
2085
    {
2086
        return $config;
2087
    }
2088
}
2089