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