Issues (99)

Branch: feature/package_updates

config/reference.php (2 issues)

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