[ * 'App\\' => [ * 'resource' => '../src/', * ], * ], * ]); * ``` * * @psalm-type ImportsConfig = list * @psalm-type ParametersConfig = array|Param|null>|Param|null> * @psalm-type ArgumentsType = list|array * @psalm-type CallType = array|array{0:string, 1?:ArgumentsType, 2?:bool}|array{method:string, arguments?:ArgumentsType, returns_clone?:bool} * @psalm-type TagsType = list>> // arrays inside the list must have only one element, with the tag name as the key * @psalm-type CallbackType = string|array{0:string|ReferenceConfigurator,1:string}|\Closure|ReferenceConfigurator|ExpressionConfigurator * @psalm-type DeprecationType = array{package: string, version: string, message?: string} * @psalm-type DefaultsType = array{ * public?: bool, * tags?: TagsType, * resource_tags?: TagsType, * autowire?: bool, * autoconfigure?: bool, * bind?: array, * } * @psalm-type InstanceofType = array{ * shared?: bool, * lazy?: bool|string, * public?: bool, * properties?: array, * configurator?: CallbackType, * calls?: list, * tags?: TagsType, * resource_tags?: TagsType, * autowire?: bool, * bind?: array, * constructor?: string, * } * @psalm-type DefinitionType = array{ * class?: string, * file?: string, * parent?: string, * shared?: bool, * synthetic?: bool, * lazy?: bool|string, * public?: bool, * abstract?: bool, * deprecated?: DeprecationType, * factory?: CallbackType, * configurator?: CallbackType, * arguments?: ArgumentsType, * properties?: array, * calls?: list, * tags?: TagsType, * resource_tags?: TagsType, * decorates?: string, * decoration_inner_name?: string, * decoration_priority?: int, * decoration_on_invalid?: 'exception'|'ignore'|null, * autowire?: bool, * autoconfigure?: bool, * bind?: array, * constructor?: string, * from_callable?: CallbackType, * } * @psalm-type AliasType = string|array{ * alias: string, * public?: bool, * deprecated?: DeprecationType, * } * @psalm-type PrototypeType = array{ * resource: string, * namespace?: string, * exclude?: string|list, * parent?: string, * shared?: bool, * lazy?: bool|string, * public?: bool, * abstract?: bool, * deprecated?: DeprecationType, * factory?: CallbackType, * arguments?: ArgumentsType, * properties?: array, * configurator?: CallbackType, * calls?: list, * tags?: TagsType, * resource_tags?: TagsType, * autowire?: bool, * autoconfigure?: bool, * bind?: array, * constructor?: string, * } * @psalm-type StackType = array{ * stack: list>, * public?: bool, * deprecated?: DeprecationType, * } * @psalm-type ServicesConfig = array{ * _defaults?: DefaultsType, * _instanceof?: InstanceofType, * ... * } * @psalm-type ExtensionType = array * @psalm-type FrameworkConfig = array{ * secret?: scalar|Param|null, * http_method_override?: bool|Param, // Set true to enable support for the '_method' request parameter to determine the intended HTTP method on POST requests. // Default: false * allowed_http_method_override?: list|null, * trust_x_sendfile_type_header?: scalar|Param|null, // Set true to enable support for xsendfile in binary file responses. // Default: "%env(bool:default::SYMFONY_TRUST_X_SENDFILE_TYPE_HEADER)%" * ide?: scalar|Param|null, // Default: "%env(default::SYMFONY_IDE)%" * test?: bool|Param, * default_locale?: scalar|Param|null, // Default: "en" * set_locale_from_accept_language?: bool|Param, // Whether to use the Accept-Language HTTP header to set the Request locale (only when the "_locale" request attribute is not passed). // Default: false * set_content_language_from_locale?: bool|Param, // Whether to set the Content-Language HTTP header on the Response using the Request locale. // Default: false * enabled_locales?: list, * trusted_hosts?: list, * trusted_proxies?: mixed, // Default: ["%env(default::SYMFONY_TRUSTED_PROXIES)%"] * trusted_headers?: list, * error_controller?: scalar|Param|null, // Default: "error_controller" * handle_all_throwables?: bool|Param, // HttpKernel will handle all kinds of \Throwable. // Default: true * csrf_protection?: bool|array{ * enabled?: scalar|Param|null, // Default: null * stateless_token_ids?: list, * check_header?: scalar|Param|null, // Whether to check the CSRF token in a header in addition to a cookie when using stateless protection. // Default: false * cookie_name?: scalar|Param|null, // The name of the cookie to use when using stateless protection. // Default: "csrf-token" * }, * form?: bool|array{ // Form configuration * enabled?: bool|Param, // Default: true * csrf_protection?: bool|array{ * enabled?: scalar|Param|null, // Default: null * token_id?: scalar|Param|null, // Default: null * field_name?: scalar|Param|null, // Default: "_token" * field_attr?: array, * }, * }, * http_cache?: bool|array{ // HTTP cache configuration * enabled?: bool|Param, // Default: false * debug?: bool|Param, // Default: "%kernel.debug%" * trace_level?: "none"|"short"|"full"|Param, * trace_header?: scalar|Param|null, * default_ttl?: int|Param, * private_headers?: list, * skip_response_headers?: list, * allow_reload?: bool|Param, * allow_revalidate?: bool|Param, * stale_while_revalidate?: int|Param, * stale_if_error?: int|Param, * terminate_on_cache_hit?: bool|Param, * }, * esi?: bool|array{ // ESI configuration * enabled?: bool|Param, // Default: false * }, * ssi?: bool|array{ // SSI configuration * enabled?: bool|Param, // Default: false * }, * fragments?: bool|array{ // Fragments configuration * enabled?: bool|Param, // Default: false * hinclude_default_template?: scalar|Param|null, // Default: null * path?: scalar|Param|null, // Default: "/_fragment" * }, * profiler?: bool|array{ // Profiler configuration * enabled?: bool|Param, // Default: false * collect?: bool|Param, // Default: true * collect_parameter?: scalar|Param|null, // The name of the parameter to use to enable or disable collection on a per request basis. // Default: null * only_exceptions?: bool|Param, // Default: false * only_main_requests?: bool|Param, // Default: false * dsn?: scalar|Param|null, // Default: "file:%kernel.cache_dir%/profiler" * collect_serializer_data?: true|Param, // Default: true * }, * workflows?: bool|array{ * enabled?: bool|Param, // Default: false * workflows?: array, * definition_validators?: list, * support_strategy?: scalar|Param|null, * initial_marking?: list, * events_to_dispatch?: list|null, * places?: list, * }>, * transitions: list, * to?: list, * weight?: int|Param, // Default: 1 * metadata?: list, * }>, * metadata?: list, * }>, * }, * router?: bool|array{ // Router configuration * enabled?: bool|Param, // Default: false * resource: scalar|Param|null, * type?: scalar|Param|null, * default_uri?: scalar|Param|null, // The default URI used to generate URLs in a non-HTTP context. // Default: null * http_port?: scalar|Param|null, // Default: 80 * https_port?: scalar|Param|null, // Default: 443 * strict_requirements?: scalar|Param|null, // set to true to throw an exception when a parameter does not match the requirements set to false to disable exceptions when a parameter does not match the requirements (and return null instead) set to null to disable parameter checks against requirements 'true' is the preferred configuration in development mode, while 'false' or 'null' might be preferred in production // Default: true * utf8?: bool|Param, // Default: true * }, * session?: bool|array{ // Session configuration * enabled?: bool|Param, // Default: false * storage_factory_id?: scalar|Param|null, // Default: "session.storage.factory.native" * handler_id?: scalar|Param|null, // Defaults to using the native session handler, or to the native *file* session handler if "save_path" is not null. * name?: scalar|Param|null, * cookie_lifetime?: scalar|Param|null, * cookie_path?: scalar|Param|null, * cookie_domain?: scalar|Param|null, * cookie_secure?: true|false|"auto"|Param, // Default: "auto" * cookie_httponly?: bool|Param, // Default: true * cookie_samesite?: null|"lax"|"strict"|"none"|Param, // Default: "lax" * use_cookies?: bool|Param, * gc_divisor?: scalar|Param|null, * gc_probability?: scalar|Param|null, * gc_maxlifetime?: scalar|Param|null, * save_path?: scalar|Param|null, // Defaults to "%kernel.cache_dir%/sessions" if the "handler_id" option is not null. * metadata_update_threshold?: int|Param, // Seconds to wait between 2 session metadata updates. // Default: 0 * }, * request?: bool|array{ // Request configuration * enabled?: bool|Param, // Default: false * formats?: array>, * }, * assets?: bool|array{ // Assets configuration * enabled?: bool|Param, // Default: true * strict_mode?: bool|Param, // Throw an exception if an entry is missing from the manifest.json. // Default: false * version_strategy?: scalar|Param|null, // Default: null * version?: scalar|Param|null, // Default: null * version_format?: scalar|Param|null, // Default: "%%s?%%s" * json_manifest_path?: scalar|Param|null, // Default: null * base_path?: scalar|Param|null, // Default: "" * base_urls?: list, * packages?: array, * }>, * }, * asset_mapper?: bool|array{ // Asset Mapper configuration * enabled?: bool|Param, // Default: true * paths?: array, * excluded_patterns?: list, * exclude_dotfiles?: bool|Param, // If true, any files starting with "." will be excluded from the asset mapper. // Default: true * server?: bool|Param, // If true, a "dev server" will return the assets from the public directory (true in "debug" mode only by default). // Default: true * public_prefix?: scalar|Param|null, // The public path where the assets will be written to (and served from when "server" is true). // Default: "/assets/" * missing_import_mode?: "strict"|"warn"|"ignore"|Param, // Behavior if an asset cannot be found when imported from JavaScript or CSS files - e.g. "import './non-existent.js'". "strict" means an exception is thrown, "warn" means a warning is logged, "ignore" means the import is left as-is. // Default: "warn" * extensions?: array, * importmap_path?: scalar|Param|null, // The path of the importmap.php file. // Default: "%kernel.project_dir%/importmap.php" * importmap_polyfill?: scalar|Param|null, // The importmap name that will be used to load the polyfill. Set to false to disable. // Default: "es-module-shims" * importmap_script_attributes?: array, * vendor_dir?: scalar|Param|null, // The directory to store JavaScript vendors. // Default: "%kernel.project_dir%/assets/vendor" * precompress?: bool|array{ // Precompress assets with Brotli, Zstandard and gzip. * enabled?: bool|Param, // Default: false * formats?: list, * extensions?: list, * }, * }, * translator?: bool|array{ // Translator configuration * enabled?: bool|Param, // Default: true * fallbacks?: list, * logging?: bool|Param, // Default: false * formatter?: scalar|Param|null, // Default: "translator.formatter.default" * cache_dir?: scalar|Param|null, // Default: "%kernel.cache_dir%/translations" * default_path?: scalar|Param|null, // The default path used to load translations. // Default: "%kernel.project_dir%/translations" * paths?: list, * pseudo_localization?: bool|array{ * enabled?: bool|Param, // Default: false * accents?: bool|Param, // Default: true * expansion_factor?: float|Param, // Default: 1.0 * brackets?: bool|Param, // Default: true * parse_html?: bool|Param, // Default: false * localizable_html_attributes?: list, * }, * providers?: array, * locales?: list, * }>, * globals?: array, * domain?: string|Param, * }>, * }, * validation?: bool|array{ // Validation configuration * enabled?: bool|Param, // Default: true * enable_attributes?: bool|Param, // Default: true * static_method?: list, * translation_domain?: scalar|Param|null, // Default: "validators" * email_validation_mode?: "html5"|"html5-allow-no-tld"|"strict"|Param, // Default: "html5" * mapping?: array{ * paths?: list, * }, * not_compromised_password?: bool|array{ * enabled?: bool|Param, // When disabled, compromised passwords will be accepted as valid. // Default: true * endpoint?: scalar|Param|null, // API endpoint for the NotCompromisedPassword Validator. // Default: null * }, * disable_translation?: bool|Param, // Default: false * auto_mapping?: array, * }>, * }, * serializer?: bool|array{ // Serializer configuration * enabled?: bool|Param, // Default: true * enable_attributes?: bool|Param, // Default: true * name_converter?: scalar|Param|null, * circular_reference_handler?: scalar|Param|null, * max_depth_handler?: scalar|Param|null, * mapping?: array{ * paths?: list, * }, * default_context?: list, * named_serializers?: array, * include_built_in_normalizers?: bool|Param, // Whether to include the built-in normalizers // Default: true * include_built_in_encoders?: bool|Param, // Whether to include the built-in encoders // Default: true * }>, * }, * property_access?: bool|array{ // Property access configuration * enabled?: bool|Param, // Default: true * magic_call?: bool|Param, // Default: false * magic_get?: bool|Param, // Default: true * magic_set?: bool|Param, // Default: true * throw_exception_on_invalid_index?: bool|Param, // Default: false * throw_exception_on_invalid_property_path?: bool|Param, // Default: true * }, * type_info?: bool|array{ // Type info configuration * enabled?: bool|Param, // Default: true * aliases?: array, * }, * property_info?: bool|array{ // Property info configuration * enabled?: bool|Param, // Default: true * with_constructor_extractor?: bool|Param, // Registers the constructor extractor. // Default: true * }, * cache?: array{ // Cache configuration * prefix_seed?: scalar|Param|null, // Used to namespace cache keys when using several apps with the same shared backend. // Default: "_%kernel.project_dir%.%kernel.container_class%" * app?: scalar|Param|null, // App related cache pools configuration. // Default: "cache.adapter.filesystem" * system?: scalar|Param|null, // System related cache pools configuration. // Default: "cache.adapter.system" * directory?: scalar|Param|null, // Default: "%kernel.share_dir%/pools/app" * default_psr6_provider?: scalar|Param|null, * default_redis_provider?: scalar|Param|null, // Default: "redis://localhost" * default_valkey_provider?: scalar|Param|null, // Default: "valkey://localhost" * default_memcached_provider?: scalar|Param|null, // Default: "memcached://localhost" * default_doctrine_dbal_provider?: scalar|Param|null, // Default: "database_connection" * default_pdo_provider?: scalar|Param|null, // Default: null * pools?: array, * tags?: scalar|Param|null, // Default: null * public?: bool|Param, // Default: false * default_lifetime?: scalar|Param|null, // Default lifetime of the pool. * provider?: scalar|Param|null, // Overwrite the setting from the default provider for this adapter. * early_expiration_message_bus?: scalar|Param|null, * clearer?: scalar|Param|null, * }>, * }, * php_errors?: array{ // PHP errors handling configuration * log?: mixed, // Use the application logger instead of the PHP logger for logging PHP errors. // Default: true * throw?: bool|Param, // Throw PHP errors as \ErrorException instances. // Default: true * }, * exceptions?: array, * web_link?: bool|array{ // Web links configuration * enabled?: bool|Param, // Default: true * }, * lock?: bool|string|array{ // Lock configuration * enabled?: bool|Param, // Default: false * resources?: array>, * }, * semaphore?: bool|string|array{ // Semaphore configuration * enabled?: bool|Param, // Default: false * resources?: array, * }, * messenger?: bool|array{ // Messenger configuration * enabled?: bool|Param, // Default: true * routing?: array, * }>, * serializer?: array{ * default_serializer?: scalar|Param|null, // Service id to use as the default serializer for the transports. // Default: "messenger.transport.native_php_serializer" * symfony_serializer?: array{ * format?: scalar|Param|null, // Serialization format for the messenger.transport.symfony_serializer service (which is not the serializer used by default). // Default: "json" * context?: array, * }, * }, * transports?: array, * failure_transport?: scalar|Param|null, // Transport name to send failed messages to (after all retries have failed). // Default: null * retry_strategy?: string|array{ * service?: scalar|Param|null, // Service id to override the retry strategy entirely. // Default: null * max_retries?: int|Param, // Default: 3 * delay?: int|Param, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000 * multiplier?: float|Param, // If greater than 1, delay will grow exponentially for each retry: this delay = (delay * (multiple ^ retries)). // Default: 2 * max_delay?: int|Param, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0 * jitter?: float|Param, // Randomness to apply to the delay (between 0 and 1). // Default: 0.1 * }, * rate_limiter?: scalar|Param|null, // Rate limiter name to use when processing messages. // Default: null * }>, * failure_transport?: scalar|Param|null, // Transport name to send failed messages to (after all retries have failed). // Default: null * stop_worker_on_signals?: list, * default_bus?: scalar|Param|null, // Default: null * buses?: array, * }>, * }>, * }, * scheduler?: bool|array{ // Scheduler configuration * enabled?: bool|Param, // Default: false * }, * disallow_search_engine_index?: bool|Param, // Enabled by default when debug is enabled. // Default: true * http_client?: bool|array{ // HTTP Client configuration * enabled?: bool|Param, // Default: true * max_host_connections?: int|Param, // The maximum number of connections to a single host. * default_options?: array{ * headers?: array, * vars?: array, * max_redirects?: int|Param, // The maximum number of redirects to follow. * http_version?: scalar|Param|null, // The default HTTP version, typically 1.1 or 2.0, leave to null for the best version. * resolve?: array, * proxy?: scalar|Param|null, // The URL of the proxy to pass requests through or null for automatic detection. * no_proxy?: scalar|Param|null, // A comma separated list of hosts that do not require a proxy to be reached. * timeout?: float|Param, // The idle timeout, defaults to the "default_socket_timeout" ini parameter. * max_duration?: float|Param, // The maximum execution time for the request+response as a whole. * bindto?: scalar|Param|null, // A network interface name, IP address, a host name or a UNIX socket to bind to. * verify_peer?: bool|Param, // Indicates if the peer should be verified in a TLS context. * verify_host?: bool|Param, // Indicates if the host should exist as a certificate common name. * cafile?: scalar|Param|null, // A certificate authority file. * capath?: scalar|Param|null, // A directory that contains multiple certificate authority files. * local_cert?: scalar|Param|null, // A PEM formatted certificate file. * local_pk?: scalar|Param|null, // A private key file. * passphrase?: scalar|Param|null, // The passphrase used to encrypt the "local_pk" file. * ciphers?: scalar|Param|null, // A list of TLS ciphers separated by colons, commas or spaces (e.g. "RC3-SHA:TLS13-AES-128-GCM-SHA256"...) * peer_fingerprint?: array{ // Associative array: hashing algorithm => hash(es). * sha1?: mixed, * pin-sha256?: mixed, * md5?: mixed, * }, * crypto_method?: scalar|Param|null, // The minimum version of TLS to accept; must be one of STREAM_CRYPTO_METHOD_TLSv*_CLIENT constants. * extra?: array, * rate_limiter?: scalar|Param|null, // Rate limiter name to use for throttling requests. // Default: null * caching?: bool|array{ // Caching configuration. * enabled?: bool|Param, // Default: false * cache_pool?: string|Param, // The taggable cache pool to use for storing the responses. // Default: "cache.http_client" * shared?: bool|Param, // Indicates whether the cache is shared (public) or private. // Default: true * max_ttl?: int|Param, // The maximum TTL (in seconds) allowed for cached responses. Null means no cap. // Default: null * }, * retry_failed?: bool|array{ * enabled?: bool|Param, // Default: false * retry_strategy?: scalar|Param|null, // service id to override the retry strategy. // Default: null * http_codes?: array, * }>, * max_retries?: int|Param, // Default: 3 * delay?: int|Param, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000 * multiplier?: float|Param, // If greater than 1, delay will grow exponentially for each retry: delay * (multiple ^ retries). // Default: 2 * max_delay?: int|Param, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0 * jitter?: float|Param, // Randomness in percent (between 0 and 1) to apply to the delay. // Default: 0.1 * }, * }, * mock_response_factory?: scalar|Param|null, // The id of the service that should generate mock responses. It should be either an invokable or an iterable. * scoped_clients?: array, * headers?: array, * max_redirects?: int|Param, // The maximum number of redirects to follow. * http_version?: scalar|Param|null, // The default HTTP version, typically 1.1 or 2.0, leave to null for the best version. * resolve?: array, * proxy?: scalar|Param|null, // The URL of the proxy to pass requests through or null for automatic detection. * no_proxy?: scalar|Param|null, // A comma separated list of hosts that do not require a proxy to be reached. * timeout?: float|Param, // The idle timeout, defaults to the "default_socket_timeout" ini parameter. * max_duration?: float|Param, // The maximum execution time for the request+response as a whole. * bindto?: scalar|Param|null, // A network interface name, IP address, a host name or a UNIX socket to bind to. * verify_peer?: bool|Param, // Indicates if the peer should be verified in a TLS context. * verify_host?: bool|Param, // Indicates if the host should exist as a certificate common name. * cafile?: scalar|Param|null, // A certificate authority file. * capath?: scalar|Param|null, // A directory that contains multiple certificate authority files. * local_cert?: scalar|Param|null, // A PEM formatted certificate file. * local_pk?: scalar|Param|null, // A private key file. * passphrase?: scalar|Param|null, // The passphrase used to encrypt the "local_pk" file. * ciphers?: scalar|Param|null, // A list of TLS ciphers separated by colons, commas or spaces (e.g. "RC3-SHA:TLS13-AES-128-GCM-SHA256"...). * peer_fingerprint?: array{ // Associative array: hashing algorithm => hash(es). * sha1?: mixed, * pin-sha256?: mixed, * md5?: mixed, * }, * crypto_method?: scalar|Param|null, // The minimum version of TLS to accept; must be one of STREAM_CRYPTO_METHOD_TLSv*_CLIENT constants. * extra?: array, * rate_limiter?: scalar|Param|null, // Rate limiter name to use for throttling requests. // Default: null * caching?: bool|array{ // Caching configuration. * enabled?: bool|Param, // Default: false * cache_pool?: string|Param, // The taggable cache pool to use for storing the responses. // Default: "cache.http_client" * shared?: bool|Param, // Indicates whether the cache is shared (public) or private. // Default: true * max_ttl?: int|Param, // The maximum TTL (in seconds) allowed for cached responses. Null means no cap. // Default: null * }, * retry_failed?: bool|array{ * enabled?: bool|Param, // Default: false * retry_strategy?: scalar|Param|null, // service id to override the retry strategy. // Default: null * http_codes?: array, * }>, * max_retries?: int|Param, // Default: 3 * delay?: int|Param, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000 * multiplier?: float|Param, // If greater than 1, delay will grow exponentially for each retry: delay * (multiple ^ retries). // Default: 2 * max_delay?: int|Param, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0 * jitter?: float|Param, // Randomness in percent (between 0 and 1) to apply to the delay. // Default: 0.1 * }, * }>, * }, * mailer?: bool|array{ // Mailer configuration * enabled?: bool|Param, // Default: true * message_bus?: scalar|Param|null, // The message bus to use. Defaults to the default bus if the Messenger component is installed. // Default: null * dsn?: scalar|Param|null, // Default: null * transports?: array, * envelope?: array{ // Mailer Envelope configuration * sender?: scalar|Param|null, * recipients?: list, * allowed_recipients?: list, * }, * headers?: array, * dkim_signer?: bool|array{ // DKIM signer configuration * enabled?: bool|Param, // Default: false * key?: scalar|Param|null, // Key content, or path to key (in PEM format with the `file://` prefix) // Default: "" * domain?: scalar|Param|null, // Default: "" * select?: scalar|Param|null, // Default: "" * passphrase?: scalar|Param|null, // The private key passphrase // Default: "" * options?: array, * }, * smime_signer?: bool|array{ // S/MIME signer configuration * enabled?: bool|Param, // Default: false * key?: scalar|Param|null, // Path to key (in PEM format) // Default: "" * certificate?: scalar|Param|null, // Path to certificate (in PEM format without the `file://` prefix) // Default: "" * passphrase?: scalar|Param|null, // The private key passphrase // Default: null * extra_certificates?: scalar|Param|null, // Default: null * sign_options?: int|Param, // Default: null * }, * smime_encrypter?: bool|array{ // S/MIME encrypter configuration * enabled?: bool|Param, // Default: false * repository?: scalar|Param|null, // S/MIME certificate repository service. This service shall implement the `Symfony\Component\Mailer\EventListener\SmimeCertificateRepositoryInterface`. // Default: "" * cipher?: int|Param, // A set of algorithms used to encrypt the message // Default: null * }, * }, * secrets?: bool|array{ * enabled?: bool|Param, // Default: true * vault_directory?: scalar|Param|null, // Default: "%kernel.project_dir%/config/secrets/%kernel.runtime_environment%" * local_dotenv_file?: scalar|Param|null, // Default: "%kernel.project_dir%/.env.%kernel.environment%.local" * decryption_env_var?: scalar|Param|null, // Default: "base64:default::SYMFONY_DECRYPTION_SECRET" * }, * notifier?: bool|array{ // Notifier configuration * enabled?: bool|Param, // Default: true * message_bus?: scalar|Param|null, // The message bus to use. Defaults to the default bus if the Messenger component is installed. // Default: null * chatter_transports?: array, * texter_transports?: array, * notification_on_failed_messages?: bool|Param, // Default: false * channel_policy?: array>, * admin_recipients?: list, * }, * rate_limiter?: bool|array{ // Rate limiter configuration * enabled?: bool|Param, // Default: false * limiters?: array, * limit?: int|Param, // The maximum allowed hits in a fixed interval or burst. * interval?: scalar|Param|null, // Configures the fixed interval if "policy" is set to "fixed_window" or "sliding_window". The value must be a number followed by "second", "minute", "hour", "day", "week" or "month" (or their plural equivalent). * rate?: array{ // Configures the fill rate if "policy" is set to "token_bucket". * interval?: scalar|Param|null, // Configures the rate interval. The value must be a number followed by "second", "minute", "hour", "day", "week" or "month" (or their plural equivalent). * amount?: int|Param, // Amount of tokens to add each interval. // Default: 1 * }, * }>, * }, * uid?: bool|array{ // Uid configuration * enabled?: bool|Param, // Default: true * default_uuid_version?: 7|6|4|1|Param, // Default: 7 * name_based_uuid_version?: 5|3|Param, // Default: 5 * name_based_uuid_namespace?: scalar|Param|null, * time_based_uuid_version?: 7|6|1|Param, // Default: 7 * time_based_uuid_node?: scalar|Param|null, * }, * html_sanitizer?: bool|array{ // HtmlSanitizer configuration * enabled?: bool|Param, // Default: false * sanitizers?: array, * block_elements?: list, * drop_elements?: list, * allow_attributes?: array, * drop_attributes?: array, * force_attributes?: array>, * force_https_urls?: bool|Param, // Transforms URLs using the HTTP scheme to use the HTTPS scheme instead. // Default: false * allowed_link_schemes?: list, * allowed_link_hosts?: list|null, * allow_relative_links?: bool|Param, // Allows relative URLs to be used in links href attributes. // Default: false * allowed_media_schemes?: list, * allowed_media_hosts?: list|null, * allow_relative_medias?: bool|Param, // Allows relative URLs to be used in media source attributes (img, audio, video, ...). // Default: false * with_attribute_sanitizers?: list, * without_attribute_sanitizers?: list, * max_input_length?: int|Param, // The maximum length allowed for the sanitized input. // Default: 0 * }>, * }, * webhook?: bool|array{ // Webhook configuration * enabled?: bool|Param, // Default: false * message_bus?: scalar|Param|null, // The message bus to use. // Default: "messenger.default_bus" * routing?: array, * }, * remote-event?: bool|array{ // RemoteEvent configuration * enabled?: bool|Param, // Default: false * }, * json_streamer?: bool|array{ // JSON streamer configuration * enabled?: bool|Param, // Default: false * }, * } * @psalm-type DoctrineConfig = array{ * dbal?: array{ * default_connection?: scalar|Param|null, * types?: array, * driver_schemes?: array, * connections?: array, * mapping_types?: array, * default_table_options?: array, * schema_manager_factory?: scalar|Param|null, // Default: "doctrine.dbal.default_schema_manager_factory" * result_cache?: scalar|Param|null, * replicas?: array, * }>, * }, * orm?: array{ * default_entity_manager?: scalar|Param|null, * enable_native_lazy_objects?: bool|Param, // Deprecated: The "enable_native_lazy_objects" option is deprecated and will be removed in DoctrineBundle 4.0, as native lazy objects are now always enabled. // Default: true * controller_resolver?: bool|array{ * enabled?: bool|Param, // Default: true * auto_mapping?: bool|Param, // Deprecated: The "doctrine.orm.controller_resolver.auto_mapping.auto_mapping" option is deprecated and will be removed in DoctrineBundle 4.0, as it only accepts `false` since 3.0. // Set to true to enable using route placeholders as lookup criteria when the primary key doesn't match the argument name // Default: false * evict_cache?: bool|Param, // Set to true to fetch the entity from the database instead of using the cache, if any // Default: false * }, * entity_managers?: array, * }>, * }>, * }, * connection?: scalar|Param|null, * class_metadata_factory_name?: scalar|Param|null, // Default: "Doctrine\\ORM\\Mapping\\ClassMetadataFactory" * default_repository_class?: scalar|Param|null, // Default: "Doctrine\\ORM\\EntityRepository" * auto_mapping?: scalar|Param|null, // Default: false * naming_strategy?: scalar|Param|null, // Default: "doctrine.orm.naming_strategy.default" * quote_strategy?: scalar|Param|null, // Default: "doctrine.orm.quote_strategy.default" * typed_field_mapper?: scalar|Param|null, // Default: "doctrine.orm.typed_field_mapper.default" * entity_listener_resolver?: scalar|Param|null, // Default: null * fetch_mode_subselect_batch_size?: scalar|Param|null, * repository_factory?: scalar|Param|null, // Default: "doctrine.orm.container_repository_factory" * schema_ignore_classes?: list, * validate_xml_mapping?: bool|Param, // Set to "true" to opt-in to the new mapping driver mode that was added in Doctrine ORM 2.14 and will be mandatory in ORM 3.0. See https://github.com/doctrine/orm/pull/6728. // Default: false * second_level_cache?: array{ * region_cache_driver?: string|array{ * type?: scalar|Param|null, // Default: null * id?: scalar|Param|null, * pool?: scalar|Param|null, * }, * region_lock_lifetime?: scalar|Param|null, // Default: 60 * log_enabled?: bool|Param, // Default: true * region_lifetime?: scalar|Param|null, // Default: 3600 * enabled?: bool|Param, // Default: true * factory?: scalar|Param|null, * regions?: array, * loggers?: array, * }, * hydrators?: array, * mappings?: array, * dql?: array{ * string_functions?: array, * numeric_functions?: array, * datetime_functions?: array, * }, * filters?: array, * }>, * identity_generation_preferences?: array, * }>, * resolve_target_entities?: array, * }, * } * @psalm-type DoctrineMigrationsConfig = array{ * enable_service_migrations?: bool|Param, // Whether to enable fetching migrations from the service container. // Default: false * migrations_paths?: array, * services?: array, * factories?: array, * storage?: array{ // Storage to use for migration status metadata. * table_storage?: array{ // The default metadata storage, implemented as a table in the database. * table_name?: scalar|Param|null, // Default: null * version_column_name?: scalar|Param|null, // Default: null * version_column_length?: scalar|Param|null, // Default: null * executed_at_column_name?: scalar|Param|null, // Default: null * execution_time_column_name?: scalar|Param|null, // Default: null * }, * }, * migrations?: list, * connection?: scalar|Param|null, // Connection name to use for the migrations database. // Default: null * em?: scalar|Param|null, // Entity manager name to use for the migrations database (available when doctrine/orm is installed). // Default: null * all_or_nothing?: scalar|Param|null, // Run all migrations in a transaction. // Default: false * check_database_platform?: scalar|Param|null, // Adds an extra check in the generated migrations to allow execution only on the same platform as they were initially generated on. // Default: true * custom_template?: scalar|Param|null, // Custom template path for generated migration classes. // Default: null * organize_migrations?: scalar|Param|null, // Organize migrations mode. Possible values are: "BY_YEAR", "BY_YEAR_AND_MONTH", false // Default: false * enable_profiler?: bool|Param, // Whether or not to enable the profiler collector to calculate and visualize migration status. This adds some queries overhead. // Default: false * transactional?: bool|Param, // Whether or not to wrap migrations in a single transaction. // Default: true * } * @psalm-type DebugConfig = array{ * max_items?: int|Param, // Max number of displayed items past the first level, -1 means no limit. // Default: 2500 * min_depth?: int|Param, // Minimum tree depth to clone all the items, 1 is default. // Default: 1 * max_string_length?: int|Param, // Max length of displayed strings, -1 means no limit. // Default: -1 * dump_destination?: scalar|Param|null, // A stream URL where dumps should be written to. // Default: null * theme?: "dark"|"light"|Param, // Changes the color of the dump() output when rendered directly on the templating. "dark" (default) or "light". // Default: "dark" * } * @psalm-type TwigConfig = array{ * form_themes?: list, * globals?: array, * autoescape_service?: scalar|Param|null, // Default: null * autoescape_service_method?: scalar|Param|null, // Default: null * cache?: scalar|Param|null, // Default: true * charset?: scalar|Param|null, // Default: "%kernel.charset%" * debug?: bool|Param, // Default: "%kernel.debug%" * strict_variables?: bool|Param, // Default: "%kernel.debug%" * auto_reload?: scalar|Param|null, * optimizations?: int|Param, * default_path?: scalar|Param|null, // The default path used to load templates. // Default: "%kernel.project_dir%/templates" * file_name_pattern?: list, * paths?: array, * date?: array{ // The default format options used by the date filter. * format?: scalar|Param|null, // Default: "F j, Y H:i" * interval_format?: scalar|Param|null, // Default: "%d days" * timezone?: scalar|Param|null, // The timezone used when formatting dates, when set to null, the timezone returned by date_default_timezone_get() is used. // Default: null * }, * number_format?: array{ // The default format options for the number_format filter. * decimals?: int|Param, // Default: 0 * decimal_point?: scalar|Param|null, // Default: "." * thousands_separator?: scalar|Param|null, // Default: "," * }, * mailer?: array{ * html_to_text_converter?: scalar|Param|null, // A service implementing the "Symfony\Component\Mime\HtmlToTextConverter\HtmlToTextConverterInterface". // Default: null * }, * } * @psalm-type WebProfilerConfig = array{ * toolbar?: bool|array{ // Profiler toolbar configuration * enabled?: bool|Param, // Default: false * ajax_replace?: bool|Param, // Replace toolbar on AJAX requests // Default: false * }, * intercept_redirects?: bool|Param, // Default: false * excluded_ajax_paths?: scalar|Param|null, // Default: "^/((index|app(_[\\w]+)?)\\.php/)?_wdt" * } * @psalm-type TwigExtraConfig = array{ * cache?: bool|array{ * enabled?: bool|Param, // Default: false * }, * html?: bool|array{ * enabled?: bool|Param, // Default: false * }, * markdown?: bool|array{ * enabled?: bool|Param, // Default: false * }, * intl?: bool|array{ * enabled?: bool|Param, // Default: true * }, * cssinliner?: bool|array{ * enabled?: bool|Param, // Default: false * }, * inky?: bool|array{ * enabled?: bool|Param, // Default: false * }, * string?: bool|array{ * enabled?: bool|Param, // Default: false * }, * commonmark?: array{ * renderer?: array{ // Array of options for rendering HTML. * block_separator?: scalar|Param|null, * inner_separator?: scalar|Param|null, * soft_break?: scalar|Param|null, * }, * html_input?: "strip"|"allow"|"escape"|Param, // How to handle HTML input. * allow_unsafe_links?: bool|Param, // Remove risky link and image URLs by setting this to false. // Default: true * max_nesting_level?: int|Param, // The maximum nesting level for blocks. // Default: 9223372036854775807 * max_delimiters_per_line?: int|Param, // The maximum number of strong/emphasis delimiters per line. // Default: 9223372036854775807 * slug_normalizer?: array{ // Array of options for configuring how URL-safe slugs are created. * instance?: mixed, * max_length?: int|Param, // Default: 255 * unique?: mixed, * }, * commonmark?: array{ // Array of options for configuring the CommonMark core extension. * enable_em?: bool|Param, // Default: true * enable_strong?: bool|Param, // Default: true * use_asterisk?: bool|Param, // Default: true * use_underscore?: bool|Param, // Default: true * unordered_list_markers?: list, * }, * ... * }, * } * @psalm-type SecurityConfig = array{ * access_denied_url?: scalar|Param|null, // Default: null * session_fixation_strategy?: "none"|"migrate"|"invalidate"|Param, // Default: "migrate" * expose_security_errors?: \Symfony\Component\Security\Http\Authentication\ExposeSecurityLevel::None|\Symfony\Component\Security\Http\Authentication\ExposeSecurityLevel::AccountStatus|\Symfony\Component\Security\Http\Authentication\ExposeSecurityLevel::All|Param, // Default: "none" * erase_credentials?: bool|Param, // Default: true * access_decision_manager?: array{ * strategy?: "affirmative"|"consensus"|"unanimous"|"priority"|Param, * service?: scalar|Param|null, * strategy_service?: scalar|Param|null, * allow_if_all_abstain?: bool|Param, // Default: false * allow_if_equal_granted_denied?: bool|Param, // Default: true * }, * password_hashers?: array, * hash_algorithm?: scalar|Param|null, // Name of hashing algorithm for PBKDF2 (i.e. sha256, sha512, etc..) See hash_algos() for a list of supported algorithms. // Default: "sha512" * key_length?: scalar|Param|null, // Default: 40 * ignore_case?: bool|Param, // Default: false * encode_as_base64?: bool|Param, // Default: true * iterations?: scalar|Param|null, // Default: 5000 * cost?: int|Param, // Default: null * memory_cost?: scalar|Param|null, // Default: null * time_cost?: scalar|Param|null, // Default: null * id?: scalar|Param|null, * }>, * providers?: array, * }, * entity?: array{ * class: scalar|Param|null, // The full entity class name of your user class. * property?: scalar|Param|null, // Default: null * manager_name?: scalar|Param|null, // Default: null * }, * memory?: array{ * users?: array, * }>, * }, * ldap?: array{ * service: scalar|Param|null, * base_dn: scalar|Param|null, * search_dn?: scalar|Param|null, // Default: null * search_password?: scalar|Param|null, // Default: null * extra_fields?: list, * default_roles?: list, * role_fetcher?: scalar|Param|null, // Default: null * uid_key?: scalar|Param|null, // Default: "sAMAccountName" * filter?: scalar|Param|null, // Default: "({uid_key}={user_identifier})" * password_attribute?: scalar|Param|null, // Default: null * }, * }>, * firewalls: array, * security?: bool|Param, // Default: true * user_checker?: scalar|Param|null, // The UserChecker to use when authenticating users in this firewall. // Default: "security.user_checker" * request_matcher?: scalar|Param|null, * access_denied_url?: scalar|Param|null, * access_denied_handler?: scalar|Param|null, * entry_point?: scalar|Param|null, // An enabled authenticator name or a service id that implements "Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface". * provider?: scalar|Param|null, * stateless?: bool|Param, // Default: false * lazy?: bool|Param, // Default: false * context?: scalar|Param|null, * logout?: array{ * enable_csrf?: bool|Param|null, // Default: null * csrf_token_id?: scalar|Param|null, // Default: "logout" * csrf_parameter?: scalar|Param|null, // Default: "_csrf_token" * csrf_token_manager?: scalar|Param|null, * path?: scalar|Param|null, // Default: "/logout" * target?: scalar|Param|null, // Default: "/" * invalidate_session?: bool|Param, // Default: true * clear_site_data?: list<"*"|"cache"|"cookies"|"storage"|"executionContexts"|Param>, * delete_cookies?: array, * }, * switch_user?: array{ * provider?: scalar|Param|null, * parameter?: scalar|Param|null, // Default: "_switch_user" * role?: scalar|Param|null, // Default: "ROLE_ALLOWED_TO_SWITCH" * target_route?: scalar|Param|null, // Default: null * }, * required_badges?: list, * custom_authenticators?: list, * login_throttling?: array{ * limiter?: scalar|Param|null, // A service id implementing "Symfony\Component\HttpFoundation\RateLimiter\RequestRateLimiterInterface". * max_attempts?: int|Param, // Default: 5 * interval?: scalar|Param|null, // Default: "1 minute" * lock_factory?: scalar|Param|null, // The service ID of the lock factory used by the login rate limiter (or null to disable locking). // Default: null * cache_pool?: string|Param, // The cache pool to use for storing the limiter state // Default: "cache.rate_limiter" * storage_service?: string|Param, // The service ID of a custom storage implementation, this precedes any configured "cache_pool" // Default: null * }, * x509?: array{ * provider?: scalar|Param|null, * user?: scalar|Param|null, // Default: "SSL_CLIENT_S_DN_Email" * credentials?: scalar|Param|null, // Default: "SSL_CLIENT_S_DN" * user_identifier?: scalar|Param|null, // Default: "emailAddress" * }, * remote_user?: array{ * provider?: scalar|Param|null, * user?: scalar|Param|null, // Default: "REMOTE_USER" * }, * login_link?: array{ * check_route: scalar|Param|null, // Route that will validate the login link - e.g. "app_login_link_verify". * check_post_only?: scalar|Param|null, // If true, only HTTP POST requests to "check_route" will be handled by the authenticator. // Default: false * signature_properties: list, * lifetime?: int|Param, // The lifetime of the login link in seconds. // Default: 600 * max_uses?: int|Param, // Max number of times a login link can be used - null means unlimited within lifetime. // Default: null * used_link_cache?: scalar|Param|null, // Cache service id used to expired links of max_uses is set. * success_handler?: scalar|Param|null, // A service id that implements Symfony\Component\Security\Http\Authentication\AuthenticationSuccessHandlerInterface. * failure_handler?: scalar|Param|null, // A service id that implements Symfony\Component\Security\Http\Authentication\AuthenticationFailureHandlerInterface. * provider?: scalar|Param|null, // The user provider to load users from. * secret?: scalar|Param|null, // Default: "%kernel.secret%" * always_use_default_target_path?: bool|Param, // Default: false * default_target_path?: scalar|Param|null, // Default: "/" * login_path?: scalar|Param|null, // Default: "/login" * target_path_parameter?: scalar|Param|null, // Default: "_target_path" * use_referer?: bool|Param, // Default: false * failure_path?: scalar|Param|null, // Default: null * failure_forward?: bool|Param, // Default: false * failure_path_parameter?: scalar|Param|null, // Default: "_failure_path" * }, * form_login?: array{ * provider?: scalar|Param|null, * remember_me?: bool|Param, // Default: true * success_handler?: scalar|Param|null, * failure_handler?: scalar|Param|null, * check_path?: scalar|Param|null, // Default: "/login_check" * use_forward?: bool|Param, // Default: false * login_path?: scalar|Param|null, // Default: "/login" * username_parameter?: scalar|Param|null, // Default: "_username" * password_parameter?: scalar|Param|null, // Default: "_password" * csrf_parameter?: scalar|Param|null, // Default: "_csrf_token" * csrf_token_id?: scalar|Param|null, // Default: "authenticate" * enable_csrf?: bool|Param, // Default: false * post_only?: bool|Param, // Default: true * form_only?: bool|Param, // Default: false * always_use_default_target_path?: bool|Param, // Default: false * default_target_path?: scalar|Param|null, // Default: "/" * target_path_parameter?: scalar|Param|null, // Default: "_target_path" * use_referer?: bool|Param, // Default: false * failure_path?: scalar|Param|null, // Default: null * failure_forward?: bool|Param, // Default: false * failure_path_parameter?: scalar|Param|null, // Default: "_failure_path" * }, * form_login_ldap?: array{ * provider?: scalar|Param|null, * remember_me?: bool|Param, // Default: true * success_handler?: scalar|Param|null, * failure_handler?: scalar|Param|null, * check_path?: scalar|Param|null, // Default: "/login_check" * use_forward?: bool|Param, // Default: false * login_path?: scalar|Param|null, // Default: "/login" * username_parameter?: scalar|Param|null, // Default: "_username" * password_parameter?: scalar|Param|null, // Default: "_password" * csrf_parameter?: scalar|Param|null, // Default: "_csrf_token" * csrf_token_id?: scalar|Param|null, // Default: "authenticate" * enable_csrf?: bool|Param, // Default: false * post_only?: bool|Param, // Default: true * form_only?: bool|Param, // Default: false * always_use_default_target_path?: bool|Param, // Default: false * default_target_path?: scalar|Param|null, // Default: "/" * target_path_parameter?: scalar|Param|null, // Default: "_target_path" * use_referer?: bool|Param, // Default: false * failure_path?: scalar|Param|null, // Default: null * failure_forward?: bool|Param, // Default: false * failure_path_parameter?: scalar|Param|null, // Default: "_failure_path" * service?: scalar|Param|null, // Default: "ldap" * dn_string?: scalar|Param|null, // Default: "{user_identifier}" * query_string?: scalar|Param|null, * search_dn?: scalar|Param|null, // Default: "" * search_password?: scalar|Param|null, // Default: "" * }, * json_login?: array{ * provider?: scalar|Param|null, * remember_me?: bool|Param, // Default: true * success_handler?: scalar|Param|null, * failure_handler?: scalar|Param|null, * check_path?: scalar|Param|null, // Default: "/login_check" * use_forward?: bool|Param, // Default: false * login_path?: scalar|Param|null, // Default: "/login" * username_path?: scalar|Param|null, // Default: "username" * password_path?: scalar|Param|null, // Default: "password" * }, * json_login_ldap?: array{ * provider?: scalar|Param|null, * remember_me?: bool|Param, // Default: true * success_handler?: scalar|Param|null, * failure_handler?: scalar|Param|null, * check_path?: scalar|Param|null, // Default: "/login_check" * use_forward?: bool|Param, // Default: false * login_path?: scalar|Param|null, // Default: "/login" * username_path?: scalar|Param|null, // Default: "username" * password_path?: scalar|Param|null, // Default: "password" * service?: scalar|Param|null, // Default: "ldap" * dn_string?: scalar|Param|null, // Default: "{user_identifier}" * query_string?: scalar|Param|null, * search_dn?: scalar|Param|null, // Default: "" * search_password?: scalar|Param|null, // Default: "" * }, * access_token?: array{ * provider?: scalar|Param|null, * remember_me?: bool|Param, // Default: true * success_handler?: scalar|Param|null, * failure_handler?: scalar|Param|null, * realm?: scalar|Param|null, // Default: null * token_extractors?: list, * token_handler: string|array{ * id?: scalar|Param|null, * oidc_user_info?: string|array{ * base_uri: scalar|Param|null, // Base URI of the userinfo endpoint on the OIDC server, or the OIDC server URI to use the discovery (require "discovery" to be configured). * discovery?: array{ // Enable the OIDC discovery. * cache?: array{ * id: scalar|Param|null, // Cache service id to use to cache the OIDC discovery configuration. * }, * }, * claim?: scalar|Param|null, // Claim which contains the user identifier (e.g. sub, email, etc.). // Default: "sub" * client?: scalar|Param|null, // HttpClient service id to use to call the OIDC server. * }, * oidc?: array{ * discovery?: array{ // Enable the OIDC discovery. * base_uri: list, * cache?: array{ * id: scalar|Param|null, // Cache service id to use to cache the OIDC discovery configuration. * }, * }, * claim?: scalar|Param|null, // Claim which contains the user identifier (e.g.: sub, email..). // Default: "sub" * audience: scalar|Param|null, // Audience set in the token, for validation purpose. * issuers: list, * algorithms: list, * keyset?: scalar|Param|null, // JSON-encoded JWKSet used to sign the token (must contain a list of valid public keys). * encryption?: bool|array{ * enabled?: bool|Param, // Default: false * enforce?: bool|Param, // When enabled, the token shall be encrypted. // Default: false * algorithms: list, * keyset: scalar|Param|null, // JSON-encoded JWKSet used to decrypt the token (must contain a list of valid private keys). * }, * }, * cas?: array{ * validation_url: scalar|Param|null, // CAS server validation URL * prefix?: scalar|Param|null, // CAS prefix // Default: "cas" * http_client?: scalar|Param|null, // HTTP Client service // Default: null * }, * oauth2?: scalar|Param|null, * }, * }, * http_basic?: array{ * provider?: scalar|Param|null, * realm?: scalar|Param|null, // Default: "Secured Area" * }, * http_basic_ldap?: array{ * provider?: scalar|Param|null, * realm?: scalar|Param|null, // Default: "Secured Area" * service?: scalar|Param|null, // Default: "ldap" * dn_string?: scalar|Param|null, // Default: "{user_identifier}" * query_string?: scalar|Param|null, * search_dn?: scalar|Param|null, // Default: "" * search_password?: scalar|Param|null, // Default: "" * }, * remember_me?: array{ * secret?: scalar|Param|null, // Default: "%kernel.secret%" * service?: scalar|Param|null, * user_providers?: list, * catch_exceptions?: bool|Param, // Default: true * signature_properties?: list, * token_provider?: string|array{ * service?: scalar|Param|null, // The service ID of a custom remember-me token provider. * doctrine?: bool|array{ * enabled?: bool|Param, // Default: false * connection?: scalar|Param|null, // Default: null * }, * }, * token_verifier?: scalar|Param|null, // The service ID of a custom rememberme token verifier. * name?: scalar|Param|null, // Default: "REMEMBERME" * lifetime?: int|Param, // Default: 31536000 * path?: scalar|Param|null, // Default: "/" * domain?: scalar|Param|null, // Default: null * secure?: true|false|"auto"|Param, // Default: true * httponly?: bool|Param, // Default: true * samesite?: null|"lax"|"strict"|"none"|Param, // Default: null * always_remember_me?: bool|Param, // Default: false * remember_me_parameter?: scalar|Param|null, // Default: "_remember_me" * }, * two_factor?: array{ * check_path?: scalar|Param|null, // Default: "/2fa_check" * post_only?: bool|Param, // Default: true * auth_form_path?: scalar|Param|null, // Default: "/2fa" * always_use_default_target_path?: bool|Param, // Default: false * default_target_path?: scalar|Param|null, // Default: "/" * success_handler?: scalar|Param|null, // Default: null * failure_handler?: scalar|Param|null, // Default: null * authentication_required_handler?: scalar|Param|null, // Default: null * auth_code_parameter_name?: scalar|Param|null, // Default: "_auth_code" * trusted_parameter_name?: scalar|Param|null, // Default: "_trusted" * remember_me_sets_trusted?: scalar|Param|null, // Default: false * multi_factor?: bool|Param, // Default: false * prepare_on_login?: bool|Param, // Default: false * prepare_on_access_denied?: bool|Param, // Default: false * enable_csrf?: scalar|Param|null, // Default: false * csrf_parameter?: scalar|Param|null, // Default: "_csrf_token" * csrf_token_id?: scalar|Param|null, // Default: "two_factor" * csrf_header?: scalar|Param|null, // Default: null * csrf_token_manager?: scalar|Param|null, // Default: "scheb_two_factor.csrf_token_manager" * provider?: scalar|Param|null, // Default: null * }, * }>, * access_control?: list, * attributes?: array, * route?: scalar|Param|null, // Default: null * methods?: list, * allow_if?: scalar|Param|null, // Default: null * roles?: list, * }>, * role_hierarchy?: array>, * } * @psalm-type MonologConfig = array{ * use_microseconds?: scalar|Param|null, // Default: true * channels?: list, * handlers?: array, * }>, * accepted_levels?: list, * min_level?: scalar|Param|null, // Default: "DEBUG" * max_level?: scalar|Param|null, // Default: "EMERGENCY" * buffer_size?: scalar|Param|null, // Default: 0 * flush_on_overflow?: bool|Param, // Default: false * handler?: scalar|Param|null, * url?: scalar|Param|null, * exchange?: scalar|Param|null, * exchange_name?: scalar|Param|null, // Default: "log" * channel?: scalar|Param|null, // Default: null * bot_name?: scalar|Param|null, // Default: "Monolog" * use_attachment?: scalar|Param|null, // Default: true * use_short_attachment?: scalar|Param|null, // Default: false * include_extra?: scalar|Param|null, // Default: false * icon_emoji?: scalar|Param|null, // Default: null * webhook_url?: scalar|Param|null, * exclude_fields?: list, * token?: scalar|Param|null, * region?: scalar|Param|null, * source?: scalar|Param|null, * use_ssl?: bool|Param, // Default: true * user?: mixed, * title?: scalar|Param|null, // Default: null * host?: scalar|Param|null, // Default: null * port?: scalar|Param|null, // Default: 514 * config?: list, * members?: list, * connection_string?: scalar|Param|null, * timeout?: scalar|Param|null, * time?: scalar|Param|null, // Default: 60 * deduplication_level?: scalar|Param|null, // Default: 400 * store?: scalar|Param|null, // Default: null * connection_timeout?: scalar|Param|null, * persistent?: bool|Param, * message_type?: scalar|Param|null, // Default: 0 * parse_mode?: scalar|Param|null, // Default: null * disable_webpage_preview?: bool|Param|null, // Default: null * disable_notification?: bool|Param|null, // Default: null * split_long_messages?: bool|Param, // Default: false * delay_between_messages?: bool|Param, // Default: false * topic?: int|Param, // Default: null * factor?: int|Param, // Default: 1 * tags?: list, * console_formatter_options?: mixed, // Default: [] * formatter?: scalar|Param|null, * nested?: bool|Param, // Default: false * publisher?: string|array{ * id?: scalar|Param|null, * hostname?: scalar|Param|null, * port?: scalar|Param|null, // Default: 12201 * chunk_size?: scalar|Param|null, // Default: 1420 * encoder?: "json"|"compressed_json"|Param, * }, * mongodb?: string|array{ * id?: scalar|Param|null, // ID of a MongoDB\Client service * uri?: scalar|Param|null, * username?: scalar|Param|null, * password?: scalar|Param|null, * database?: scalar|Param|null, // Default: "monolog" * collection?: scalar|Param|null, // Default: "logs" * }, * elasticsearch?: string|array{ * id?: scalar|Param|null, * hosts?: list, * host?: scalar|Param|null, * port?: scalar|Param|null, // Default: 9200 * transport?: scalar|Param|null, // Default: "Http" * user?: scalar|Param|null, // Default: null * password?: scalar|Param|null, // Default: null * }, * index?: scalar|Param|null, // Default: "monolog" * document_type?: scalar|Param|null, // Default: "logs" * ignore_error?: scalar|Param|null, // Default: false * redis?: string|array{ * id?: scalar|Param|null, * host?: scalar|Param|null, * password?: scalar|Param|null, // Default: null * port?: scalar|Param|null, // Default: 6379 * database?: scalar|Param|null, // Default: 0 * key_name?: scalar|Param|null, // Default: "monolog_redis" * }, * predis?: string|array{ * id?: scalar|Param|null, * host?: scalar|Param|null, * }, * from_email?: scalar|Param|null, * to_email?: list, * subject?: scalar|Param|null, * content_type?: scalar|Param|null, // Default: null * headers?: list, * mailer?: scalar|Param|null, // Default: null * email_prototype?: string|array{ * id: scalar|Param|null, * method?: scalar|Param|null, // Default: null * }, * verbosity_levels?: array{ * VERBOSITY_QUIET?: scalar|Param|null, // Default: "ERROR" * VERBOSITY_NORMAL?: scalar|Param|null, // Default: "WARNING" * VERBOSITY_VERBOSE?: scalar|Param|null, // Default: "NOTICE" * VERBOSITY_VERY_VERBOSE?: scalar|Param|null, // Default: "INFO" * VERBOSITY_DEBUG?: scalar|Param|null, // Default: "DEBUG" * }, * channels?: string|array{ * type?: scalar|Param|null, * elements?: list, * }, * }>, * } * @psalm-type MakerConfig = array{ * root_namespace?: scalar|Param|null, // Default: "App" * generate_final_classes?: bool|Param, // Default: true * generate_final_entities?: bool|Param, // Default: false * } * @psalm-type KnpPaginatorConfig = array{ * default_options?: array{ * sort_field_name?: scalar|Param|null, // Default: "sort" * sort_direction_name?: scalar|Param|null, // Default: "direction" * filter_field_name?: scalar|Param|null, // Default: "filterField" * filter_value_name?: scalar|Param|null, // Default: "filterValue" * page_name?: scalar|Param|null, // Default: "page" * distinct?: bool|Param, // Default: true * page_out_of_range?: scalar|Param|null, // Default: "ignore" * default_limit?: scalar|Param|null, // Default: 10 * }, * template?: array{ * pagination?: scalar|Param|null, // Default: "@KnpPaginator/Pagination/sliding.html.twig" * rel_links?: scalar|Param|null, // Default: "@KnpPaginator/Pagination/rel_links.html.twig" * filtration?: scalar|Param|null, // Default: "@KnpPaginator/Pagination/filtration.html.twig" * sortable?: scalar|Param|null, // Default: "@KnpPaginator/Pagination/sortable_link.html.twig" * }, * page_range?: scalar|Param|null, // Default: 5 * page_limit?: scalar|Param|null, // Default: null * convert_exception?: bool|Param, // Default: false * remove_first_page_param?: bool|Param, // Default: false * } * @psalm-type FlysystemConfig = array{ * storages?: array, * visibility?: scalar|Param|null, // Default: null * directory_visibility?: scalar|Param|null, // Default: null * retain_visibility?: bool|Param|null, // Default: null * case_sensitive?: bool|Param, // Default: true * disable_asserts?: bool|Param, // Default: false * public_url?: list, * path_normalizer?: scalar|Param|null, // Default: null * public_url_generator?: scalar|Param|null, // Default: null * temporary_url_generator?: scalar|Param|null, // Default: null * read_only?: bool|Param, // Default: false * }>, * } * @psalm-type LiipImagineConfig = array{ * resolvers?: array, * get_options?: array, * put_options?: array, * proxies?: array, * }, * flysystem?: array{ * filesystem_service: scalar|Param|null, * cache_prefix?: scalar|Param|null, // Default: "" * root_url: scalar|Param|null, * visibility?: "public"|"private"|"noPredefinedVisibility"|Param, // Default: "public" * }, * }>, * loaders?: array, * allow_unresolvable_data_roots?: bool|Param, // Default: false * bundle_resources?: array{ * enabled?: bool|Param, // Default: false * access_control_type?: "blacklist"|"whitelist"|Param, // Sets the access control method applied to bundle names in "access_control_list" into a blacklist or whitelist. // Default: "blacklist" * access_control_list?: list, * }, * }, * flysystem?: array{ * filesystem_service: scalar|Param|null, * }, * asset_mapper?: array, * chain?: array{ * loaders: list, * }, * }>, * driver?: scalar|Param|null, // Default: "gd" * cache?: scalar|Param|null, // Default: "default" * cache_base_path?: scalar|Param|null, // Default: "" * data_loader?: scalar|Param|null, // Default: "default" * default_image?: scalar|Param|null, // Default: null * default_filter_set_settings?: array{ * quality?: scalar|Param|null, // Default: 100 * jpeg_quality?: scalar|Param|null, // Default: null * png_compression_level?: scalar|Param|null, // Default: null * png_compression_filter?: scalar|Param|null, // Default: null * format?: scalar|Param|null, // Default: null * animated?: bool|Param, // Default: false * cache?: scalar|Param|null, // Default: null * data_loader?: scalar|Param|null, // Default: null * default_image?: scalar|Param|null, // Default: null * filters?: array>, * post_processors?: array>, * }, * controller?: array{ * filter_action?: scalar|Param|null, // Default: "Liip\\ImagineBundle\\Controller\\ImagineController::filterAction" * filter_runtime_action?: scalar|Param|null, // Default: "Liip\\ImagineBundle\\Controller\\ImagineController::filterRuntimeAction" * redirect_response_code?: int|Param, // Default: 302 * }, * filter_sets?: array>, * post_processors?: array>, * }>, * twig?: array{ * mode?: "none"|"lazy"|"legacy"|Param, // Twig mode: none/lazy/legacy (default) // Default: "legacy" * assets_version?: scalar|Param|null, // Default: null * }, * enqueue?: bool|Param, // Enables integration with enqueue if set true. Allows resolve image caches in background by sending messages to MQ. // Default: false * messenger?: bool|array{ // Enables integration with symfony/messenger if set true. Warmup image caches in background by sending messages to MQ. * enabled?: bool|Param, // Default: false * }, * templating?: bool|Param, // Enables integration with symfony/templating component // Default: true * webp?: array{ * generate?: bool|Param, // Default: false * quality?: int|Param, // Default: 100 * cache?: scalar|Param|null, // Default: null * data_loader?: scalar|Param|null, // Default: null * post_processors?: array>, * }, * } * @psalm-type NelmioCorsConfig = array{ * defaults?: array{ * allow_credentials?: bool|Param, // Default: false * allow_origin?: list, * allow_headers?: list, * allow_methods?: list, * allow_private_network?: bool|Param, // Default: false * expose_headers?: list, * max_age?: scalar|Param|null, // Default: 0 * hosts?: list, * origin_regex?: bool|Param, // Default: false * forced_allow_origin_value?: scalar|Param|null, // Default: null * skip_same_as_origin?: bool|Param, // Default: true * }, * paths?: array, * allow_headers?: list, * allow_methods?: list, * allow_private_network?: bool|Param, * expose_headers?: list, * max_age?: scalar|Param|null, // Default: 0 * hosts?: list, * origin_regex?: bool|Param, * forced_allow_origin_value?: scalar|Param|null, // Default: null * skip_same_as_origin?: bool|Param, * }>, * } * @psalm-type PrestaSitemapConfig = array{ * generator?: scalar|Param|null, // Default: "presta_sitemap.generator_default" * dumper?: scalar|Param|null, // Default: "presta_sitemap.dumper_default" * timetolive?: int|Param, // Default: 3600 * sitemap_file_prefix?: scalar|Param|null, // Sets sitemap filename prefix defaults to "sitemap" -> sitemap.xml (for index); sitemap.
.xml(.gz) (for sitemaps) // Default: "sitemap" * items_by_set?: int|Param, // The maximum number of items allowed in single sitemap. // Default: 50000 * route_annotation_listener?: scalar|Param|null, // Default: true * dump_directory?: scalar|Param|null, // The directory to which the sitemap will be dumped. It can be either absolute, or relative (to the place where the command will be triggered). Default to Symfony's public dir. // Default: "%kernel.project_dir%/public" * defaults?: array{ * priority?: scalar|Param|null, // Default: 0.5 * changefreq?: scalar|Param|null, // Default: "daily" * lastmod?: scalar|Param|null, // Default: "now" * }, * default_section?: scalar|Param|null, // The default section in which static routes are registered. // Default: "default" * alternate?: bool|array{ // Automatically generate alternate (hreflang) urls with static routes. Requires route_annotation_listener config to be enabled. * enabled?: bool|Param, // Default: false * default_locale?: scalar|Param|null, // The default locale of your routes. // Default: "en" * locales?: list, * i18n?: "symfony"|"jms"|Param, // Strategy used to create your i18n routes. // Default: "symfony" * }, * } * @psalm-type SentryConfig = array{ * dsn?: scalar|Param|null, // If this value is not provided, the SDK will try to read it from the SENTRY_DSN environment variable. If that variable also does not exist, the SDK will not send any events. * register_error_listener?: bool|Param, // Default: true * register_error_handler?: bool|Param, // Default: true * logger?: scalar|Param|null, // The service ID of the PSR-3 logger used to log messages coming from the SDK client. Be aware that setting the same logger of the application may create a circular loop when an event fails to be sent. // Default: null * options?: array{ * integrations?: mixed, // Default: [] * default_integrations?: bool|Param, * prefixes?: list, * sample_rate?: float|Param, // The sampling factor to apply to events. A value of 0 will deny sending any event, and a value of 1 will send all events. * enable_tracing?: bool|Param, * traces_sample_rate?: float|Param, // The sampling factor to apply to transactions. A value of 0 will deny sending any transaction, and a value of 1 will send all transactions. * traces_sampler?: scalar|Param|null, * profiles_sample_rate?: float|Param, // The sampling factor to apply to profiles. A value of 0 will deny sending any profiles, and a value of 1 will send all profiles. Profiles are sampled in relation to traces_sample_rate * enable_logs?: bool|Param, * enable_metrics?: bool|Param, // Default: true * attach_stacktrace?: bool|Param, * attach_metric_code_locations?: bool|Param, * context_lines?: int|Param, * environment?: scalar|Param|null, // Default: "%kernel.environment%" * logger?: scalar|Param|null, * spotlight?: bool|Param, * spotlight_url?: scalar|Param|null, * release?: scalar|Param|null, // Default: "%env(default::SENTRY_RELEASE)%" * server_name?: scalar|Param|null, * ignore_exceptions?: list, * ignore_transactions?: list, * before_send?: scalar|Param|null, * before_send_transaction?: scalar|Param|null, * before_send_check_in?: scalar|Param|null, * before_send_metrics?: scalar|Param|null, * before_send_log?: scalar|Param|null, * before_send_metric?: scalar|Param|null, * trace_propagation_targets?: mixed, * tags?: array, * error_types?: scalar|Param|null, * max_breadcrumbs?: int|Param, * before_breadcrumb?: mixed, * in_app_exclude?: list, * in_app_include?: list, * send_default_pii?: bool|Param, * max_value_length?: int|Param, * transport?: scalar|Param|null, * http_client?: scalar|Param|null, * http_proxy?: scalar|Param|null, * http_proxy_authentication?: scalar|Param|null, * http_connect_timeout?: float|Param, // The maximum number of seconds to wait while trying to connect to a server. It works only when using the default transport. * http_timeout?: float|Param, // The maximum execution time for the request+response as a whole. It works only when using the default transport. * http_ssl_verify_peer?: bool|Param, * http_compression?: bool|Param, * capture_silenced_errors?: bool|Param, * max_request_body_size?: "none"|"never"|"small"|"medium"|"always"|Param, * class_serializers?: array, * }, * messenger?: bool|array{ * enabled?: bool|Param, // Default: true * capture_soft_fails?: bool|Param, // Default: true * isolate_breadcrumbs_by_message?: bool|Param, // Default: false * }, * tracing?: bool|array{ * enabled?: bool|Param, // Default: true * dbal?: bool|array{ * enabled?: bool|Param, // Default: true * connections?: list, * }, * twig?: bool|array{ * enabled?: bool|Param, // Default: true * }, * cache?: bool|array{ * enabled?: bool|Param, // Default: true * }, * http_client?: bool|array{ * enabled?: bool|Param, // Default: true * }, * console?: array{ * excluded_commands?: list, * }, * }, * } * @psalm-type VichUploaderConfig = array{ * default_filename_attribute_suffix?: scalar|Param|null, // Default: "_name" * db_driver: scalar|Param|null, * storage?: scalar|Param|null, // Default: "file_system" * use_flysystem_to_resolve_uri?: bool|Param, // Default: false * twig?: scalar|Param|null, // twig requires templating // Default: true * form?: scalar|Param|null, // Default: true * metadata?: array{ * cache?: scalar|Param|null, // Default: "file" * type?: scalar|Param|null, // Default: "attribute" * file_cache?: array{ * dir?: scalar|Param|null, // Default: "%kernel.cache_dir%/vich_uploader" * }, * auto_detection?: bool|Param, // Default: true * directories?: list, * }, * mappings?: array, * } * @psalm-type KnpuOauth2ClientConfig = array{ * http_client?: scalar|Param|null, // Service id of HTTP client to use (must implement GuzzleHttp\ClientInterface) // Default: null * http_client_options?: array{ * timeout?: int|Param, * proxy?: scalar|Param|null, * verify?: bool|Param, // Use only with proxy option set * }, * clients?: array>, * } * @psalm-type SchebTwoFactorConfig = array{ * persister?: scalar|Param|null, // Default: "scheb_two_factor.persister.doctrine" * model_manager_name?: scalar|Param|null, // Default: null * security_tokens?: list, * ip_whitelist?: list, * ip_whitelist_provider?: scalar|Param|null, // Default: "scheb_two_factor.default_ip_whitelist_provider" * two_factor_token_factory?: scalar|Param|null, // Default: "scheb_two_factor.default_token_factory" * two_factor_provider_decider?: scalar|Param|null, // Default: "scheb_two_factor.default_provider_decider" * two_factor_condition?: scalar|Param|null, // Default: null * code_reuse_cache?: scalar|Param|null, // Default: null * code_reuse_cache_duration?: int|Param, // Default: 60 * code_reuse_default_handler?: scalar|Param|null, // Default: null * backup_codes?: bool|array{ * enabled?: scalar|Param|null, // Default: false * manager?: scalar|Param|null, // Default: "scheb_two_factor.default_backup_code_manager" * }, * email?: bool|array{ * enabled?: scalar|Param|null, // Default: false * mailer?: scalar|Param|null, // Default: null * code_generator?: scalar|Param|null, // Default: "scheb_two_factor.security.email.default_code_generator" * form_renderer?: scalar|Param|null, // Default: null * sender_email?: scalar|Param|null, // Default: null * sender_name?: scalar|Param|null, // Default: null * template?: scalar|Param|null, // Default: "@SchebTwoFactor/Authentication/form.html.twig" * digits?: int|Param, // Default: 4 * }, * google?: bool|array{ * enabled?: scalar|Param|null, // Default: false * form_renderer?: scalar|Param|null, // Default: null * issuer?: scalar|Param|null, // Default: null * server_name?: scalar|Param|null, // Default: null * template?: scalar|Param|null, // Default: "@SchebTwoFactor/Authentication/form.html.twig" * digits?: int|Param, // Default: 6 * leeway?: int|Param, // Default: 0 * }, * } * @psalm-type NelmioSecurityConfig = array{ * signed_cookie?: array{ * names?: list, * secret?: scalar|Param|null, // Default: "%kernel.secret%" * hash_algo?: scalar|Param|null, * legacy_hash_algo?: scalar|Param|null, // Fallback algorithm to allow for frictionless hash algorithm upgrades. Use with caution and as a temporary measure as it allows for downgrade attacks. // Default: null * separator?: scalar|Param|null, // Default: "." * }, * clickjacking?: array{ * hosts?: list, * paths?: array, * content_types?: list, * }, * external_redirects?: array{ * abort?: bool|Param, // Default: false * override?: scalar|Param|null, // Default: null * forward_as?: scalar|Param|null, // Default: null * log?: bool|Param, // Default: false * allow_list?: list, * }, * flexible_ssl?: bool|array{ * enabled?: bool|Param, // Default: false * cookie_name?: scalar|Param|null, // Default: "auth" * unsecured_logout?: bool|Param, // Default: false * }, * forced_ssl?: bool|array{ * enabled?: bool|Param, // Default: false * hsts_max_age?: scalar|Param|null, // Default: null * hsts_subdomains?: bool|Param, // Default: false * hsts_preload?: bool|Param, // Default: false * allow_list?: list, * hosts?: list, * redirect_status_code?: scalar|Param|null, // Default: 302 * }, * content_type?: array{ * nosniff?: bool|Param, // Default: false * }, * xss_protection?: array{ // Deprecated: The "xss_protection" option is deprecated, use Content Security Policy without allowing "unsafe-inline" scripts instead. * enabled?: bool|Param, // Default: false * mode_block?: bool|Param, // Default: false * report_uri?: scalar|Param|null, // Default: null * }, * csp?: bool|array{ * enabled?: bool|Param, // Default: true * request_matcher?: scalar|Param|null, // Default: null * hosts?: list, * content_types?: list, * report_endpoint?: array{ * log_channel?: scalar|Param|null, // Default: null * log_formatter?: scalar|Param|null, // Default: "nelmio_security.csp_report.log_formatter" * log_level?: "alert"|"critical"|"debug"|"emergency"|"error"|"info"|"notice"|"warning"|Param, // Default: "notice" * filters?: array{ * domains?: bool|Param, // Default: true * schemes?: bool|Param, // Default: true * browser_bugs?: bool|Param, // Default: true * injected_scripts?: bool|Param, // Default: true * }, * dismiss?: list>, * }, * compat_headers?: bool|Param, // Default: true * report_logger_service?: scalar|Param|null, // Default: "logger" * hash?: array{ * algorithm?: "sha256"|"sha384"|"sha512"|Param, // The algorithm to use for hashes // Default: "sha256" * }, * report?: array{ * level1_fallback?: bool|Param, // Provides CSP Level 1 fallback when using hash or nonce (CSP level 2) by adding 'unsafe-inline' source. See https://www.w3.org/TR/CSP2/#directive-script-src and https://www.w3.org/TR/CSP2/#directive-style-src // Default: true * browser_adaptive?: bool|array{ // Do not send directives that browser do not support * enabled?: bool|Param, // Default: false * parser?: scalar|Param|null, // Default: "nelmio_security.ua_parser.ua_php" * }, * default-src?: list, * base-uri?: list, * block-all-mixed-content?: bool|Param, // Default: false * child-src?: list, * connect-src?: list, * font-src?: list, * form-action?: list, * frame-ancestors?: list, * frame-src?: list, * img-src?: list, * manifest-src?: list, * media-src?: list, * object-src?: list, * plugin-types?: list, * script-src?: list, * style-src?: list, * upgrade-insecure-requests?: bool|Param, // Default: false * report-uri?: list, * worker-src?: list, * prefetch-src?: list, * report-to?: scalar|Param|null, * }, * enforce?: array{ * level1_fallback?: bool|Param, // Provides CSP Level 1 fallback when using hash or nonce (CSP level 2) by adding 'unsafe-inline' source. See https://www.w3.org/TR/CSP2/#directive-script-src and https://www.w3.org/TR/CSP2/#directive-style-src // Default: true * browser_adaptive?: bool|array{ // Do not send directives that browser do not support * enabled?: bool|Param, // Default: false * parser?: scalar|Param|null, // Default: "nelmio_security.ua_parser.ua_php" * }, * default-src?: list, * base-uri?: list, * block-all-mixed-content?: bool|Param, // Default: false * child-src?: list, * connect-src?: list, * font-src?: list, * form-action?: list, * frame-ancestors?: list, * frame-src?: list, * img-src?: list, * manifest-src?: list, * media-src?: list, * object-src?: list, * plugin-types?: list, * script-src?: list, * style-src?: list, * upgrade-insecure-requests?: bool|Param, // Default: false * report-uri?: list, * worker-src?: list, * prefetch-src?: list, * report-to?: scalar|Param|null, * }, * }, * referrer_policy?: bool|array{ * enabled?: bool|Param, // Default: false * policies?: list, * }, * permissions_policy?: bool|array{ * enabled?: bool|Param, // Default: false * policies?: array{ * accelerometer?: mixed, // Default: null * ambient_light_sensor?: mixed, // Default: null * attribution_reporting?: mixed, // Default: null * autoplay?: mixed, // Default: null * bluetooth?: mixed, // Default: null * browsing_topics?: mixed, // Default: null * camera?: mixed, // Default: null * captured_surface_control?: mixed, // Default: null * compute_pressure?: mixed, // Default: null * cross_origin_isolated?: mixed, // Default: null * deferred_fetch?: mixed, // Default: null * deferred_fetch_minimal?: mixed, // Default: null * display_capture?: mixed, // Default: null * encrypted_media?: mixed, // Default: null * fullscreen?: mixed, // Default: null * gamepad?: mixed, // Default: null * geolocation?: mixed, // Default: null * gyroscope?: mixed, // Default: null * hid?: mixed, // Default: null * identity_credentials_get?: mixed, // Default: null * idle_detection?: mixed, // Default: null * interest_cohort?: mixed, // Default: null * language_detector?: mixed, // Default: null * local_fonts?: mixed, // Default: null * magnetometer?: mixed, // Default: null * microphone?: mixed, // Default: null * midi?: mixed, // Default: null * otp_credentials?: mixed, // Default: null * payment?: mixed, // Default: null * picture_in_picture?: mixed, // Default: null * publickey_credentials_create?: mixed, // Default: null * publickey_credentials_get?: mixed, // Default: null * screen_wake_lock?: mixed, // Default: null * serial?: mixed, // Default: null * speaker_selection?: mixed, // Default: null * storage_access?: mixed, // Default: null * summarizer?: mixed, // Default: null * translator?: mixed, // Default: null * usb?: mixed, // Default: null * web_share?: mixed, // Default: null * window_management?: mixed, // Default: null * xr_spatial_tracking?: mixed, // Default: null * }, * }, * cross_origin_isolation?: bool|array{ * enabled?: bool|Param, // Default: false * paths?: array, * }, * } * @psalm-type PwaConfig = array{ * asset_compiler?: bool|Param, // When true, the assets will be compiled when the command "asset-map:compile" is run. // Default: true * early_hints?: bool|array{ // Early Hints (HTTP 103) configuration. Requires a compatible server (FrankenPHP, Caddy). * enabled?: bool|Param, // Default: false * preload_manifest?: bool|Param, // Preload the PWA manifest file. // Default: true * preload_serviceworker?: bool|Param, // Preload the service worker script. Disabled by default as SW registration is usually deferred. // Default: false * preconnect_workbox_cdn?: bool|Param, // Preconnect to Workbox CDN when using CDN mode. // Default: true * }, * favicons?: bool|array{ * enabled?: bool|Param, // Default: false * default?: array{ // The favicon source and parameters. When used with "dark", this favicon will become the light version. * src: scalar|Param|null, // The path to the icon. Can be served by Asset Mapper, an absolute path or a Symfony UX Icon (if the bundle is installed). * background_color?: scalar|Param|null, // The background color of the application. If this value is not defined and that of the Manifest section is, the value of the latter will be used. // Default: null * border_radius?: int|Param, // The border radius of the icon. // Default: null * image_scale?: int|Param, // The scale of the icon. // Default: null * svg_attr?: array, * }, * dark?: array{ // The favicon source and parameters for the dark theme. Should only be used with "default". * src: scalar|Param|null, // The path to the icon. Can be served by Asset Mapper, an absolute path or a Symfony UX Icon (if the bundle is installed). * background_color?: scalar|Param|null, // The background color of the application. If this value is not defined and that of the Manifest section is, the value of the latter will be used. // Default: null * border_radius?: int|Param, // The border radius of the icon. // Default: null * image_scale?: int|Param, // The scale of the icon. // Default: null * svg_attr?: array, * }, * src?: scalar|Param|null, // Deprecated: The "src" configuration key is deprecated. Use the "default.src" configuration key instead. // The source of the favicon. Shall be a SVG or large PNG. // Default: null * src_dark?: scalar|Param|null, // Deprecated: The "src_dark" configuration key is deprecated. Use the "dark.src" configuration key instead. // The source of the favicon in dark mode. Shall be a SVG or large PNG. // Default: null * background_color?: scalar|Param|null, // Deprecated: The "background_color" configuration key is deprecated. Use the "default.background_color" configuration key instead. // The background color of the icon. // Default: null * background_color_dark?: scalar|Param|null, // Deprecated: The "background_color_dark" configuration key is deprecated. Use the "dark.background_color" configuration key instead. // The background color of the icon in dark mode. // Default: null * safari_pinned_tab_color?: scalar|Param|null, // The color of the Safari pinned tab. Requires "use_silhouette" to be set to "true". // Default: null * tile_color?: scalar|Param|null, // The color of the tile for Windows 8+. // Default: null * border_radius?: int|Param, // Deprecated: The "border_radius" configuration key is deprecated. Use the "default.border_radius" or "dark.border_radius" configuration key instead. // The border radius of the icon. // Default: null * image_scale?: int|Param, // Deprecated: The "image_scale" configuration key is deprecated. Use the "default.image_scale" or "dark.image_scale" configuration key instead. // The scale of the icon. // Default: null * low_resolution?: bool|Param, // Include low resolution icons. // Default: false * use_silhouette?: bool|Param|null, // Use only the silhouette of the icon. Applicable for macOS Safari and Windows 8+. Requires potrace to be installed. // Default: null * use_start_image?: bool|Param, // Use the icon as a start image for the iOS splash screen. // Default: true * svg_color?: scalar|Param|null, // When the asset is a SVG file, replaces the currentColor attribute with this color. // Default: "#000" * monochrome?: bool|Param, // Use a monochrome icon. // Default: false * potrace?: scalar|Param|null, // The path to the potrace binary. // Default: "potrace" * }, * image_processor?: scalar|Param|null, // The image processor to use to generate the icons of different sizes. // Default: null * logger?: scalar|Param|null, // The logger service to use. If not set, the default logger will be used. // Default: null * manifest?: bool|array{ * enabled?: bool|Param, // Default: false * public_url?: scalar|Param|null, // The public URL of the manifest file. // Default: "/site.webmanifest" * use_credentials?: bool|Param, // Indicates whether the manifest should be fetched with credentials. // Default: true * background_color?: scalar|Param|null, // The background color of the application. It should match the background-color CSS property in the sites stylesheet for a smooth transition between launching the web application and loading the site's content. * categories?: list, * description?: scalar|Param|null, // The description of the application. * display?: scalar|Param|null, // The display mode of the application. * display_override?: list, * id?: scalar|Param|null, // A string that represents the identity of the web application. * orientation?: scalar|Param|null, // The orientation of the application. * dir?: scalar|Param|null, // The direction of the application. * lang?: scalar|Param|null, // The language of the application. * name?: scalar|Param|null, // The name of the application. * short_name?: scalar|Param|null, // The short name of the application. * scope?: scalar|Param|null, // The scope of the application. * start_url?: string|array{ // The start URL of the application. * path: scalar|Param|null, // The URL or route name. * path_type_reference?: int|Param, // The path type reference to generate paths/URLs. See https://symfony.com/doc/current/routing.html#generating-urls-in-controllers for more information. // Default: 1 * params?: list, * }, * theme_color?: scalar|Param|null, // The theme color of the application. If a dark theme color is specified, the theme color will be used for the light theme. * dark_theme_color?: scalar|Param|null, // The dark theme color of the application. * edge_side_panel?: array{ // Specifies whether or not your app supports the side panel view in Microsoft Edge. * preferred_width?: int|Param, // Specifies the preferred width of the side panel view in Microsoft Edge. * }, * iarc_rating_id?: scalar|Param|null, // Specifies the International Age Rating Coalition (IARC) rating ID for the app. See https://www.globalratings.com/how-iarc-works.aspx for more information. * scope_extensions?: list, * handle_links?: scalar|Param|null, // Specifies the default link handling for the web app. * note_taking?: array{ // The note-taking capabilities of the application. * note_taking_url?: string|array{ // The URL to the note-taking service. * path: scalar|Param|null, // The URL or route name. * path_type_reference?: int|Param, // The path type reference to generate paths/URLs. See https://symfony.com/doc/current/routing.html#generating-urls-in-controllers for more information. // Default: 1 * params?: list, * }, * }, * icons?: list, * background_color?: scalar|Param|null, // The background color of the application. If this value is not defined and that of the Manifest section is, the value of the latter will be used. // Default: null * border_radius?: int|Param, // The border radius of the icon. // Default: null * image_scale?: int|Param, // The scale of the icon. // Default: null * type?: scalar|Param|null, // The icon mime type. * format?: scalar|Param|null, // The icon format. When set, the "type" option is ignored and the image will be converted. * purpose?: scalar|Param|null, // The purpose of the icon. * svg_attr?: array, * }>, * screenshots?: list, * file_handlers?: list, * }, * accept?: array>, * }>, * launch_handler?: array{ // The launch handler of the application. * client_mode?: list, * }, * protocol_handlers?: list, * }, * }>, * prefer_related_applications?: bool|Param, // prefer related native applications (instead of this application) // Default: false * related_applications?: list, * }, * id?: scalar|Param|null, // The ID of the application. * }>, * shortcuts?: list, * }, * icons?: list, * background_color?: scalar|Param|null, // The background color of the application. If this value is not defined and that of the Manifest section is, the value of the latter will be used. // Default: null * border_radius?: int|Param, // The border radius of the icon. // Default: null * image_scale?: int|Param, // The scale of the icon. // Default: null * type?: scalar|Param|null, // The icon mime type. * format?: scalar|Param|null, // The icon format. When set, the "type" option is ignored and the image will be converted. * purpose?: scalar|Param|null, // The purpose of the icon. * svg_attr?: array, * }>, * }>, * share_target?: array{ // The share target of the application. * action?: string|array{ // The action of the share target. * path: scalar|Param|null, // The URL or route name. * path_type_reference?: int|Param, // The path type reference to generate paths/URLs. See https://symfony.com/doc/current/routing.html#generating-urls-in-controllers for more information. // Default: 1 * params?: list, * }, * method?: scalar|Param|null, // The method of the share target. * enctype?: scalar|Param|null, // The enctype of the share target. Ignored if method is GET. * params: array{ // The parameters of the share target. * title?: scalar|Param|null, // The title of the share target. * text?: scalar|Param|null, // The text of the share target. * url?: scalar|Param|null, // The URL of the share target. * files?: list, * }>, * }, * }, * widgets?: list, * background_color?: scalar|Param|null, // The background color of the application. If this value is not defined and that of the Manifest section is, the value of the latter will be used. // Default: null * border_radius?: int|Param, // The border radius of the icon. // Default: null * image_scale?: int|Param, // The scale of the icon. // Default: null * type?: scalar|Param|null, // The icon mime type. * format?: scalar|Param|null, // The icon format. When set, the "type" option is ignored and the image will be converted. * purpose?: scalar|Param|null, // The purpose of the icon. * svg_attr?: array, * }>, * screenshots?: list, * tag: scalar|Param|null, // A string used to reference the widget in the PWA service worker. * template?: scalar|Param|null, // The template to use to display the widget in the operating system widgets dashboard. Note: this property is currently only informational and not used. See ms_ac_template below. * ms_ac_template?: string|array{ // The URL of the custom Adaptive Cards template to use to display the widget in the operating system widgets dashboard. * path: scalar|Param|null, // The URL or route name. * path_type_reference?: int|Param, // The path type reference to generate paths/URLs. See https://symfony.com/doc/current/routing.html#generating-urls-in-controllers for more information. // Default: 1 * params?: list, * }, * data?: string|array{ // The URL where the data to fill the template with can be found. If present, this URL is required to return valid JSON. * path: scalar|Param|null, // The URL or route name. * path_type_reference?: int|Param, // The path type reference to generate paths/URLs. See https://symfony.com/doc/current/routing.html#generating-urls-in-controllers for more information. // Default: 1 * params?: list, * }, * type?: scalar|Param|null, // The MIME type for the widget data. * auth?: bool|Param, // A boolean indicating if the widget requires authentication. * update?: int|Param, // The frequency, in seconds, at which the widget will be updated. Code in your service worker must perform the updating; the widget is not updated automatically. See Access widget instances at runtime. * multiple?: bool|Param, // A boolean indicating whether to allow multiple instances of the widget. Defaults to true. // Default: true * }>, * }, * path_type_reference?: int|Param, // Deprecated: The "path_type_reference" configuration key is deprecated. Use the "path_type_reference" of URL nodes instead. // The path type reference to generate paths/URLs. See https://symfony.com/doc/current/routing.html#generating-urls-in-controllers for more information. // Default: 1 * resource_hints?: bool|array{ // Resource Hints configuration for preconnect, dns-prefetch, and preload. * enabled?: bool|Param, // Default: false * auto_preconnect?: bool|Param, // Automatically add preconnect hints for detected external origins (Workbox CDN, Google Fonts). // Default: true * preconnect?: list, * dns_prefetch?: list, * preload?: list, * }, * serviceworker?: bool|string|array{ * enabled?: bool|Param, // Default: false * src?: scalar|Param|null, // The path to the service worker source file. Can be served by Asset Mapper. * dest?: scalar|Param|null, // The public URL to the service worker. // Default: "/sw.js" * skip_waiting?: bool|Param, // Whether to skip waiting for the service worker to be activated. // Default: false * scope?: scalar|Param|null, // The scope of the service worker. // Default: "/" * use_cache?: bool|Param, // Whether the service worker should use the cache. // Default: true * workbox?: bool|array{ // The configuration of the workbox. * enabled?: bool|Param, // Default: true * use_cdn?: bool|Param, // Deprecated: The "use_cdn" option is deprecated and will be removed in 2.0.0. use "config.use_cdn" instead. // Whether to use the local workbox or the CDN. // Default: false * google_fonts?: bool|array{ * enabled?: bool|Param, // Default: true * cache_prefix?: scalar|Param|null, // The cache prefix for the Google fonts. // Default: null * max_age?: scalar|Param|null, // The maximum age of the Google fonts cache (in seconds). // Default: null * max_entries?: int|Param, // The maximum number of entries in the Google fonts cache. // Default: null * }, * cache_manifest?: bool|Param, // Whether to cache the manifest file. // Default: true * version?: scalar|Param|null, // Deprecated: The "version" option is deprecated and will be removed in 2.0.0. use "config.version" instead. // The version of workbox. When using local files, the version shall be "7.0.0." // Default: "7.3.0" * workbox_public_url?: scalar|Param|null, // Deprecated: The "workbox_public_url" option is deprecated and will be removed in 2.0.0. use "config.workbox_public_url" instead. // The public path to the local workbox. Only used if use_cdn is false. // Default: "/workbox" * idb_public_url?: scalar|Param|null, // The public path to the local IndexDB. Only used if use_cdn is false. // Default: "/idb" * workbox_import_placeholder?: scalar|Param|null, // Deprecated: The "workbox_import_placeholder" option is deprecated and will be removed in 2.0.0. No replacement. // The placeholder for the workbox import. Will be replaced by the workbox import. // Default: "//WORKBOX_IMPORT_PLACEHOLDER" * standard_rules_placeholder?: scalar|Param|null, // Deprecated: The "standard_rules_placeholder" option is deprecated and will be removed in 2.0.0. No replacement. // The placeholder for the standard rules. Will be replaced by caching strategies. // Default: "//STANDARD_RULES_PLACEHOLDER" * offline_fallback_placeholder?: scalar|Param|null, // Deprecated: The "offline_fallback_placeholder" option is deprecated and will be removed in 2.0.0. No replacement. // The placeholder for the offline fallback. Will be replaced by the URL. // Default: "//OFFLINE_FALLBACK_PLACEHOLDER" * widgets_placeholder?: scalar|Param|null, // Deprecated: The "widgets_placeholder" option is deprecated and will be removed in 2.0.0. No replacement. // The placeholder for the widgets. Will be replaced by the widgets management events. // Default: "//WIDGETS_PLACEHOLDER" * clear_cache?: bool|Param, // Whether to clear the cache during the service worker activation. // Default: true * navigation_preload?: bool|Param, // Whether to enable navigation preload. This speeds up navigation requests by making the network request in parallel with service worker boot-up. Note: Do not enable if you are precaching HTML pages (e.g., with offline_fallback or warm_cache_urls), as it would be redundant. // Default: false * config?: array{ * debug?: bool|Param, // Controls workbox debug logging. Set to false to disable debug mode and logging. // Default: true * version?: scalar|Param|null, // The version of workbox. When using local files, the version shall be "7.0.0." // Default: "7.3.0" * use_cdn?: bool|Param, // Whether to use the local workbox or the CDN. // Default: false * workbox_public_url?: scalar|Param|null, // The public path to the local workbox. Only used if use_cdn is false. // Default: "/workbox" * }, * offline_fallback?: array{ * cache_name?: scalar|Param|null, // The name of the offline cache. // Default: "offline" * page?: string|array{ // The URL of the offline page fallback. * path: scalar|Param|null, // The URL or route name. * path_type_reference?: int|Param, // The path type reference to generate paths/URLs. See https://symfony.com/doc/current/routing.html#generating-urls-in-controllers for more information. // Default: 1 * params?: list, * }, * image?: string|array{ // The URL of the offline image fallback. * path: scalar|Param|null, // The URL or route name. * path_type_reference?: int|Param, // The path type reference to generate paths/URLs. See https://symfony.com/doc/current/routing.html#generating-urls-in-controllers for more information. // Default: 1 * params?: list, * }, * font?: string|array{ // The URL of the offline font fallback. * path: scalar|Param|null, // The URL or route name. * path_type_reference?: int|Param, // The path type reference to generate paths/URLs. See https://symfony.com/doc/current/routing.html#generating-urls-in-controllers for more information. // Default: 1 * params?: list, * }, * }, * image_cache?: bool|array{ * enabled?: bool|Param, // Default: true * cache_name?: scalar|Param|null, // The name of the image cache. // Default: "images" * regex?: scalar|Param|null, // The regex to match the images. // Default: "/\\.(ico|png|jpe?g|gif|svg|webp|bmp)$/" * max_entries?: int|Param, // The maximum number of entries in the image cache. // Default: 60 * max_age?: scalar|Param|null, // The maximum number of seconds before the image cache is invalidated. // Default: 31536000 * }, * asset_cache?: bool|array{ * enabled?: bool|Param, // Default: true * cache_name?: scalar|Param|null, // The name of the asset cache. // Default: "assets" * regex?: scalar|Param|null, // The regex to match the assets. // Default: "/\\.(css|js|json|xml|txt|map|ico|png|jpe?g|gif|svg|webp|bmp)$/" * max_age?: scalar|Param|null, // The maximum number of seconds before the asset cache is invalidated. // Default: 31536000 * }, * font_cache?: bool|array{ * enabled?: bool|Param, // Default: true * cache_name?: scalar|Param|null, // The name of the font cache. // Default: "fonts" * regex?: scalar|Param|null, // The regex to match the fonts. // Default: "/\\.(ttf|eot|otf|woff2)$/" * max_entries?: int|Param, // The maximum number of entries in the image cache. // Default: 60 * max_age?: int|Param, // The maximum number of seconds before the font cache is invalidated. // Default: 31536000 * }, * resource_caches?: list, * cacheable_response_statuses?: list, * broadcast_headers?: list, * preload_urls?: list, * }>, * }>, * background_sync?: list, * expect_redirect?: bool|Param, // Whether to expect a redirect (JS response type should be "opaqueredirect" or the "redirected" property is "true"). // Default: false * method?: scalar|Param|null, // The HTTP method. // Default: "POST" * broadcast_channel?: scalar|Param|null, // The broadcast channel. Set null to disable. // Default: null * max_retention_time?: int|Param, // The maximum retention time in minutes. // Default: 1440 * force_sync_fallback?: bool|Param, // If `true`, instead of attempting to use background sync events, always attempt to replay queued request at service worker startup. Most folks will not need this, unless you explicitly target a runtime like Electron that exposes the interfaces for background sync, but does not have a working implementation. // Default: false * }>, * background_fetch?: bool|array{ * enabled?: bool|Param, // Default: false * db_name?: scalar|Param|null, // The IndexDB name where downloads are stored // Default: "bgfetch-completed" * progress_url?: string|array{ // The URL of the progress page. * path: scalar|Param|null, // The URL or route name. * path_type_reference?: int|Param, // The path type reference to generate paths/URLs. See https://symfony.com/doc/current/routing.html#generating-urls-in-controllers for more information. // Default: 1 * params?: list, * }, * success_url?: string|array{ // The URL of the success page. * path: scalar|Param|null, // The URL or route name. * path_type_reference?: int|Param, // The path type reference to generate paths/URLs. See https://symfony.com/doc/current/routing.html#generating-urls-in-controllers for more information. // Default: 1 * params?: list, * }, * success_message?: scalar|Param|null, // The message to display on success. This message is translated. // Default: null * failure_message?: scalar|Param|null, // The message to display on success. This message is translated. // Default: null * }, * image_cache_name?: scalar|Param|null, // Deprecated: The "image_cache_name" option is deprecated and will be removed in 2.0.0. Please use "pwa.serviceworker.workbox.image_cache.cache_name" instead. // The name of the image cache. // Default: "images" * font_cache_name?: scalar|Param|null, // Deprecated: The "font_cache_name" option is deprecated and will be removed in 2.0.0. Please use "pwa.serviceworker.workbox.font_cache.cache_name" instead. // The name of the font cache. // Default: "fonts" * page_cache_name?: scalar|Param|null, // Deprecated: The "page_cache_name" option is deprecated and will be removed in 2.0.0. Please use "pwa.serviceworker.workbox.resource_caches[].cache_name" instead. // The name of the page cache. // Default: "pages" * asset_cache_name?: scalar|Param|null, // Deprecated: The "asset_cache_name" option is deprecated and will be removed in 2.0.0. Please use "pwa.serviceworker.workbox.asset_cache.cache_name" instead. // The name of the asset cache. // Default: "assets" * page_fallback?: string|array{ // The URL of the offline page fallback. * path: scalar|Param|null, // The URL or route name. * path_type_reference?: int|Param, // The path type reference to generate paths/URLs. See https://symfony.com/doc/current/routing.html#generating-urls-in-controllers for more information. // Default: 1 * params?: list, * }, * image_fallback?: string|array{ // The URL of the offline image fallback. * path: scalar|Param|null, // The URL or route name. * path_type_reference?: int|Param, // The path type reference to generate paths/URLs. See https://symfony.com/doc/current/routing.html#generating-urls-in-controllers for more information. // Default: 1 * params?: list, * }, * font_fallback?: string|array{ // The URL of the offline font fallback. * path: scalar|Param|null, // The URL or route name. * path_type_reference?: int|Param, // The path type reference to generate paths/URLs. See https://symfony.com/doc/current/routing.html#generating-urls-in-controllers for more information. // Default: 1 * params?: list, * }, * image_regex?: scalar|Param|null, // Deprecated: The "image_regex" option is deprecated and will be removed in 2.0.0. Please use "pwa.serviceworker.workbox.image_cache.regex" instead. // The regex to match the images. // Default: "/\\.(ico|png|jpe?g|gif|svg|webp|bmp)$/" * static_regex?: scalar|Param|null, // Deprecated: The "static_regex" option is deprecated and will be removed in 2.0.0. Please use "pwa.serviceworker.workbox.asset_cache.regex" instead. // The regex to match the static files. // Default: "/\\.(css|js|json|xml|txt|map)$/" * font_regex?: scalar|Param|null, // Deprecated: The "font_regex" option is deprecated and will be removed in 2.0.0. Please use "pwa.serviceworker.workbox.font_cache.regex" instead. // The regex to match the static files. // Default: "/\\.(ttf|eot|otf|woff2)$/" * max_image_cache_entries?: int|Param, // Deprecated: The "max_image_cache_entries" option is deprecated and will be removed in 2.0.0. Please use "pwa.serviceworker.workbox.image_cache.max_entries" instead. // The maximum number of entries in the image cache. // Default: 60 * max_image_age?: int|Param, // Deprecated: The "max_image_age" option is deprecated and will be removed in 2.0.0. Please use "pwa.serviceworker.workbox.image_cache.max_age" instead. // The maximum number of seconds before the image cache is invalidated. // Default: 31536000 * max_font_cache_entries?: int|Param, // Deprecated: The "max_font_cache_entries" option is deprecated and will be removed in 2.0.0. Please use "pwa.serviceworker.workbox.font_cache.max_entries" instead. // The maximum number of entries in the font cache. // Default: 30 * max_font_age?: int|Param, // Deprecated: The "max_font_age" option is deprecated and will be removed in 2.0.0. Please use "pwa.serviceworker.workbox.font_cache.max_age" instead. // The maximum number of seconds before the font cache is invalidated. // Default: 31536000 * network_timeout_seconds?: int|Param, // Deprecated: The "network_timeout_seconds" option is deprecated and will be removed in 2.0.0. Please use "pwa.serviceworker.workbox.resource_caches[].network_timeout" instead. // The network timeout in seconds before cache is called (for warm cache URLs only). // Default: 3 * warm_cache_urls?: list, * }>, * }, * }, * speculation_rules?: bool|array{ // Speculation Rules API configuration for prefetching and prerendering pages. * enabled?: bool|Param, // Default: false * prefetch?: list, * }>, * selector_matches?: scalar|Param|null, // For "document" source: CSS selector to match links. // Default: null * href_matches?: scalar|Param|null, // For "document" source: URL pattern to match href attributes. // Default: null * eagerness?: "immediate"|"eager"|"moderate"|"conservative"|Param, // Eagerness level: "immediate" (viewport), "eager" (hover 200ms), "moderate" (hover 100ms), "conservative" (mousedown/touchstart). // Default: "moderate" * referrer_policy?: scalar|Param|null, // Referrer policy for the speculative request. // Default: null * }>, * prerender?: list, * }>, * selector_matches?: scalar|Param|null, // For "document" source: CSS selector to match links. // Default: null * href_matches?: scalar|Param|null, // For "document" source: URL pattern to match href attributes. // Default: null * eagerness?: "immediate"|"eager"|"moderate"|"conservative"|Param, // Eagerness level. For prerender, "conservative" is recommended. // Default: "conservative" * referrer_policy?: scalar|Param|null, // Referrer policy for the speculative request. // Default: null * }>, * }, * web_client?: scalar|Param|null, // The Panther Client for generating screenshots. If not set, the default client will be used. // Default: null * user_agent?: scalar|Param|null, // The user agent to use when generating screenshots. When this user agent is detected, the Symfony profiler and debug toolbar will be automatically disabled to ensure screenshots look like production. // Default: "PWAScreenshotBot" * } * @psalm-type WebpushConfig = array{ * logger?: scalar|Param|null, // A PSR3 logger to receive logs // Default: null * http_client?: scalar|Param|null, // PSR18 client to send notification to Web Push Services // Default: "Symfony\\Contracts\\HttpClient\\HttpClientInterface" * vapid?: bool|array{ * enabled?: bool|Param, // Default: false * subject: scalar|Param|null, // The URL of the service or an email address * token_lifetime?: scalar|Param|null, // A PSR6 cache pool to enable caching feature // Default: "now +1hour" * web_token?: bool|array{ * enabled?: bool|Param, // Default: false * private_key: scalar|Param|null, // The VAPID private key * public_key: scalar|Param|null, // The VAPID public key * }, * lcobucci?: bool|array{ * enabled?: bool|Param, // Default: false * private_key: scalar|Param|null, // The VAPID private key * public_key: scalar|Param|null, // The VAPID public key * }, * custom?: bool|array{ * enabled?: bool|Param, // Default: false * id: scalar|Param|null, // The custom JWS Provider service ID * }, * }, * payload?: array{ * aes128gcm?: array{ * padding?: scalar|Param|null, // Length of the padding: none, recommended, max or and integer // Default: "recommended" * cache?: scalar|Param|null, // A PSR6 cache pool to enable caching feature // Default: null * cache_lifetime?: scalar|Param|null, // A PSR6 cache pool to enable caching feature // Default: "now + 30min" * }, * aesgcm?: array{ * padding?: scalar|Param|null, // Length of the padding: none, recommended, max or and integer // Default: "recommended" * cache?: scalar|Param|null, // A PSR6 cache pool to enable caching feature // Default: null * cache_lifetime?: scalar|Param|null, // A PSR6 cache pool to enable caching feature // Default: "now + 30min" * }, * }, * } * @psalm-type ConfigType = array{ * imports?: ImportsConfig, * parameters?: ParametersConfig, * services?: ServicesConfig, * framework?: FrameworkConfig, * doctrine?: DoctrineConfig, * doctrine_migrations?: DoctrineMigrationsConfig, * twig?: TwigConfig, * twig_extra?: TwigExtraConfig, * security?: SecurityConfig, * monolog?: MonologConfig, * knp_paginator?: KnpPaginatorConfig, * flysystem?: FlysystemConfig, * liip_imagine?: LiipImagineConfig, * nelmio_cors?: NelmioCorsConfig, * presta_sitemap?: PrestaSitemapConfig, * vich_uploader?: VichUploaderConfig, * knpu_oauth2_client?: KnpuOauth2ClientConfig, * scheb_two_factor?: SchebTwoFactorConfig, * nelmio_security?: NelmioSecurityConfig, * pwa?: PwaConfig, * webpush?: WebpushConfig, * "when@dev"?: array{ * imports?: ImportsConfig, * parameters?: ParametersConfig, * services?: ServicesConfig, * framework?: FrameworkConfig, * doctrine?: DoctrineConfig, * doctrine_migrations?: DoctrineMigrationsConfig, * debug?: DebugConfig, * twig?: TwigConfig, * web_profiler?: WebProfilerConfig, * twig_extra?: TwigExtraConfig, * security?: SecurityConfig, * monolog?: MonologConfig, * maker?: MakerConfig, * knp_paginator?: KnpPaginatorConfig, * flysystem?: FlysystemConfig, * liip_imagine?: LiipImagineConfig, * nelmio_cors?: NelmioCorsConfig, * presta_sitemap?: PrestaSitemapConfig, * vich_uploader?: VichUploaderConfig, * knpu_oauth2_client?: KnpuOauth2ClientConfig, * scheb_two_factor?: SchebTwoFactorConfig, * nelmio_security?: NelmioSecurityConfig, * pwa?: PwaConfig, * webpush?: WebpushConfig, * }, * "when@prod"?: array{ * imports?: ImportsConfig, * parameters?: ParametersConfig, * services?: ServicesConfig, * framework?: FrameworkConfig, * doctrine?: DoctrineConfig, * doctrine_migrations?: DoctrineMigrationsConfig, * twig?: TwigConfig, * twig_extra?: TwigExtraConfig, * security?: SecurityConfig, * monolog?: MonologConfig, * knp_paginator?: KnpPaginatorConfig, * flysystem?: FlysystemConfig, * liip_imagine?: LiipImagineConfig, * nelmio_cors?: NelmioCorsConfig, * presta_sitemap?: PrestaSitemapConfig, * sentry?: SentryConfig, * vich_uploader?: VichUploaderConfig, * knpu_oauth2_client?: KnpuOauth2ClientConfig, * scheb_two_factor?: SchebTwoFactorConfig, * nelmio_security?: NelmioSecurityConfig, * pwa?: PwaConfig, * webpush?: WebpushConfig, * }, * "when@test"?: array{ * imports?: ImportsConfig, * parameters?: ParametersConfig, * services?: ServicesConfig, * framework?: FrameworkConfig, * doctrine?: DoctrineConfig, * doctrine_migrations?: DoctrineMigrationsConfig, * twig?: TwigConfig, * web_profiler?: WebProfilerConfig, * twig_extra?: TwigExtraConfig, * security?: SecurityConfig, * monolog?: MonologConfig, * knp_paginator?: KnpPaginatorConfig, * flysystem?: FlysystemConfig, * liip_imagine?: LiipImagineConfig, * nelmio_cors?: NelmioCorsConfig, * presta_sitemap?: PrestaSitemapConfig, * vich_uploader?: VichUploaderConfig, * knpu_oauth2_client?: KnpuOauth2ClientConfig, * scheb_two_factor?: SchebTwoFactorConfig, * nelmio_security?: NelmioSecurityConfig, * pwa?: PwaConfig, * webpush?: WebpushConfig, * }, * ..., * }> * } */ final class App { /** * @param ConfigType $config * * @psalm-return ConfigType */ public static function config(array $config): array { return AppReference::config($config); } } namespace Symfony\Component\Routing\Loader\Configurator; /** * This class provides array-shapes for configuring the routes of an application. * * Example: * * ```php * // config/routes.php * namespace Symfony\Component\Routing\Loader\Configurator; * * return Routes::config([ * 'controllers' => [ * 'resource' => 'routing.controllers', * ], * ]); * ``` * * @psalm-type RouteConfig = array{ * path: string|array, * controller?: string, * methods?: string|list, * requirements?: array, * defaults?: array, * options?: array, * host?: string|array, * schemes?: string|list, * condition?: string, * locale?: string, * format?: string, * utf8?: bool, * stateless?: bool, * } * @psalm-type ImportConfig = array{ * resource: string, * type?: string, * exclude?: string|list, * prefix?: string|array, * name_prefix?: string, * trailing_slash_on_root?: bool, * controller?: string, * methods?: string|list, * requirements?: array, * defaults?: array, * options?: array, * host?: string|array, * schemes?: string|list, * condition?: string, * locale?: string, * format?: string, * utf8?: bool, * stateless?: bool, * } * @psalm-type AliasConfig = array{ * alias: string, * deprecated?: array{package:string, version:string, message?:string}, * } * @psalm-type RoutesConfig = array{ * "when@dev"?: array, * "when@prod"?: array, * "when@test"?: array, * ... * } */ final class Routes { /** * @param RoutesConfig $config * * @psalm-return RoutesConfig */ public static function config(array $config): array { return $config; } }