diff --git a/api/config/reference.php b/api/config/reference.php new file mode 100644 index 0000000000..52ecacaa90 --- /dev/null +++ b/api/config/reference.php @@ -0,0 +1,2436 @@ + [ + * 'App\\' => [ + * 'resource' => '../src/', + * ], + * ], + * ]); + * ``` + * + * @psalm-type ImportsConfig = list + * @psalm-type ParametersConfig = array|null>|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|null, + * http_method_override?: bool, // Set true to enable support for the '_method' request parameter to determine the intended HTTP method on POST requests. // Default: false + * allowed_http_method_override?: list|null, + * trust_x_sendfile_type_header?: scalar|null, // Set true to enable support for xsendfile in binary file responses. // Default: "%env(bool:default::SYMFONY_TRUST_X_SENDFILE_TYPE_HEADER)%" + * ide?: scalar|null, // Default: "%env(default::SYMFONY_IDE)%" + * test?: bool, + * default_locale?: scalar|null, // Default: "en" + * set_locale_from_accept_language?: bool, // Whether to use the Accept-Language HTTP header to set the Request locale (only when the "_locale" request attribute is not passed). // Default: false + * set_content_language_from_locale?: bool, // 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|null, // Default: "error_controller" + * handle_all_throwables?: bool, // HttpKernel will handle all kinds of \Throwable. // Default: true + * csrf_protection?: bool|array{ + * enabled?: scalar|null, // Default: null + * stateless_token_ids?: list, + * check_header?: scalar|null, // Whether to check the CSRF token in a header in addition to a cookie when using stateless protection. // Default: false + * cookie_name?: scalar|null, // The name of the cookie to use when using stateless protection. // Default: "csrf-token" + * }, + * form?: bool|array{ // Form configuration + * enabled?: bool, // Default: false + * csrf_protection?: array{ + * enabled?: scalar|null, // Default: null + * token_id?: scalar|null, // Default: null + * field_name?: scalar|null, // Default: "_token" + * field_attr?: array, + * }, + * }, + * http_cache?: bool|array{ // HTTP cache configuration + * enabled?: bool, // Default: false + * debug?: bool, // Default: "%kernel.debug%" + * trace_level?: "none"|"short"|"full", + * trace_header?: scalar|null, + * default_ttl?: int, + * private_headers?: list, + * skip_response_headers?: list, + * allow_reload?: bool, + * allow_revalidate?: bool, + * stale_while_revalidate?: int, + * stale_if_error?: int, + * terminate_on_cache_hit?: bool, + * }, + * esi?: bool|array{ // ESI configuration + * enabled?: bool, // Default: false + * }, + * ssi?: bool|array{ // SSI configuration + * enabled?: bool, // Default: false + * }, + * fragments?: bool|array{ // Fragments configuration + * enabled?: bool, // Default: false + * hinclude_default_template?: scalar|null, // Default: null + * path?: scalar|null, // Default: "/_fragment" + * }, + * profiler?: bool|array{ // Profiler configuration + * enabled?: bool, // Default: false + * collect?: bool, // Default: true + * collect_parameter?: scalar|null, // The name of the parameter to use to enable or disable collection on a per request basis. // Default: null + * only_exceptions?: bool, // Default: false + * only_main_requests?: bool, // Default: false + * dsn?: scalar|null, // Default: "file:%kernel.cache_dir%/profiler" + * collect_serializer_data?: bool, // Enables the serializer data collector and profiler panel. // Default: false + * }, + * workflows?: bool|array{ + * enabled?: bool, // Default: false + * workflows?: array, + * definition_validators?: list, + * support_strategy?: scalar|null, + * initial_marking?: list, + * events_to_dispatch?: list|null, + * places?: list, + * }>, + * transitions: list, + * to?: list, + * weight?: int, // Default: 1 + * metadata?: list, + * }>, + * metadata?: list, + * }>, + * }, + * router?: bool|array{ // Router configuration + * enabled?: bool, // Default: false + * resource: scalar|null, + * type?: scalar|null, + * cache_dir?: scalar|null, // Deprecated: Setting the "framework.router.cache_dir.cache_dir" configuration option is deprecated. It will be removed in version 8.0. // Default: "%kernel.build_dir%" + * default_uri?: scalar|null, // The default URI used to generate URLs in a non-HTTP context. // Default: null + * http_port?: scalar|null, // Default: 80 + * https_port?: scalar|null, // Default: 443 + * strict_requirements?: scalar|null, // set to true to throw an exception when a parameter does not match the requirements set to false to disable exceptions when a parameter does not match the requirements (and return null instead) set to null to disable parameter checks against requirements 'true' is the preferred configuration in development mode, while 'false' or 'null' might be preferred in production // Default: true + * utf8?: bool, // Default: true + * }, + * session?: bool|array{ // Session configuration + * enabled?: bool, // Default: false + * storage_factory_id?: scalar|null, // Default: "session.storage.factory.native" + * handler_id?: scalar|null, // Defaults to using the native session handler, or to the native *file* session handler if "save_path" is not null. + * name?: scalar|null, + * cookie_lifetime?: scalar|null, + * cookie_path?: scalar|null, + * cookie_domain?: scalar|null, + * cookie_secure?: true|false|"auto", // Default: "auto" + * cookie_httponly?: bool, // Default: true + * cookie_samesite?: null|"lax"|"strict"|"none", // Default: "lax" + * use_cookies?: bool, + * gc_divisor?: scalar|null, + * gc_probability?: scalar|null, + * gc_maxlifetime?: scalar|null, + * save_path?: scalar|null, // Defaults to "%kernel.cache_dir%/sessions" if the "handler_id" option is not null. + * metadata_update_threshold?: int, // Seconds to wait between 2 session metadata updates. // Default: 0 + * sid_length?: int, // Deprecated: Setting the "framework.session.sid_length.sid_length" configuration option is deprecated. It will be removed in version 8.0. No alternative is provided as PHP 8.4 has deprecated the related option. + * sid_bits_per_character?: int, // Deprecated: Setting the "framework.session.sid_bits_per_character.sid_bits_per_character" configuration option is deprecated. It will be removed in version 8.0. No alternative is provided as PHP 8.4 has deprecated the related option. + * }, + * request?: bool|array{ // Request configuration + * enabled?: bool, // Default: false + * formats?: array>, + * }, + * assets?: bool|array{ // Assets configuration + * enabled?: bool, // Default: true + * strict_mode?: bool, // Throw an exception if an entry is missing from the manifest.json. // Default: false + * version_strategy?: scalar|null, // Default: null + * version?: scalar|null, // Default: null + * version_format?: scalar|null, // Default: "%%s?%%s" + * json_manifest_path?: scalar|null, // Default: null + * base_path?: scalar|null, // Default: "" + * base_urls?: list, + * packages?: array, + * }>, + * }, + * asset_mapper?: bool|array{ // Asset Mapper configuration + * enabled?: bool, // Default: false + * paths?: array, + * excluded_patterns?: list, + * exclude_dotfiles?: bool, // If true, any files starting with "." will be excluded from the asset mapper. // Default: true + * server?: bool, // 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|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", // 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|null, // The path of the importmap.php file. // Default: "%kernel.project_dir%/importmap.php" + * importmap_polyfill?: scalar|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|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, // Default: false + * formats?: list, + * extensions?: list, + * }, + * }, + * translator?: bool|array{ // Translator configuration + * enabled?: bool, // Default: true + * fallbacks?: list, + * logging?: bool, // Default: false + * formatter?: scalar|null, // Default: "translator.formatter.default" + * cache_dir?: scalar|null, // Default: "%kernel.cache_dir%/translations" + * default_path?: scalar|null, // The default path used to load translations. // Default: "%kernel.project_dir%/translations" + * paths?: list, + * pseudo_localization?: bool|array{ + * enabled?: bool, // Default: false + * accents?: bool, // Default: true + * expansion_factor?: float, // Default: 1.0 + * brackets?: bool, // Default: true + * parse_html?: bool, // Default: false + * localizable_html_attributes?: list, + * }, + * providers?: array, + * locales?: list, + * }>, + * globals?: array, + * domain?: string, + * }>, + * }, + * validation?: bool|array{ // Validation configuration + * enabled?: bool, // Default: true + * cache?: scalar|null, // Deprecated: Setting the "framework.validation.cache.cache" configuration option is deprecated. It will be removed in version 8.0. + * enable_attributes?: bool, // Default: true + * static_method?: list, + * translation_domain?: scalar|null, // Default: "validators" + * email_validation_mode?: "html5"|"html5-allow-no-tld"|"strict"|"loose", // Default: "html5" + * mapping?: array{ + * paths?: list, + * }, + * not_compromised_password?: bool|array{ + * enabled?: bool, // When disabled, compromised passwords will be accepted as valid. // Default: true + * endpoint?: scalar|null, // API endpoint for the NotCompromisedPassword Validator. // Default: null + * }, + * disable_translation?: bool, // Default: false + * auto_mapping?: array, + * }>, + * }, + * annotations?: bool|array{ + * enabled?: bool, // Default: false + * }, + * serializer?: bool|array{ // Serializer configuration + * enabled?: bool, // Default: true + * enable_attributes?: bool, // Default: true + * name_converter?: scalar|null, + * circular_reference_handler?: scalar|null, + * max_depth_handler?: scalar|null, + * mapping?: array{ + * paths?: list, + * }, + * default_context?: list, + * named_serializers?: array, + * include_built_in_normalizers?: bool, // Whether to include the built-in normalizers // Default: true + * include_built_in_encoders?: bool, // Whether to include the built-in encoders // Default: true + * }>, + * }, + * property_access?: bool|array{ // Property access configuration + * enabled?: bool, // Default: true + * magic_call?: bool, // Default: false + * magic_get?: bool, // Default: true + * magic_set?: bool, // Default: true + * throw_exception_on_invalid_index?: bool, // Default: false + * throw_exception_on_invalid_property_path?: bool, // Default: true + * }, + * type_info?: bool|array{ // Type info configuration + * enabled?: bool, // Default: true + * aliases?: array, + * }, + * property_info?: bool|array{ // Property info configuration + * enabled?: bool, // Default: true + * with_constructor_extractor?: bool, // Registers the constructor extractor. + * }, + * cache?: array{ // Cache configuration + * prefix_seed?: scalar|null, // Used to namespace cache keys when using several apps with the same shared backend. // Default: "_%kernel.project_dir%.%kernel.container_class%" + * app?: scalar|null, // App related cache pools configuration. // Default: "cache.adapter.filesystem" + * system?: scalar|null, // System related cache pools configuration. // Default: "cache.adapter.system" + * directory?: scalar|null, // Default: "%kernel.share_dir%/pools/app" + * default_psr6_provider?: scalar|null, + * default_redis_provider?: scalar|null, // Default: "redis://localhost" + * default_valkey_provider?: scalar|null, // Default: "valkey://localhost" + * default_memcached_provider?: scalar|null, // Default: "memcached://localhost" + * default_doctrine_dbal_provider?: scalar|null, // Default: "database_connection" + * default_pdo_provider?: scalar|null, // Default: null + * pools?: array, + * tags?: scalar|null, // Default: null + * public?: bool, // Default: false + * default_lifetime?: scalar|null, // Default lifetime of the pool. + * provider?: scalar|null, // Overwrite the setting from the default provider for this adapter. + * early_expiration_message_bus?: scalar|null, + * clearer?: scalar|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, // Throw PHP errors as \ErrorException instances. // Default: true + * }, + * exceptions?: array, + * web_link?: bool|array{ // Web links configuration + * enabled?: bool, // Default: true + * }, + * lock?: bool|string|array{ // Lock configuration + * enabled?: bool, // Default: false + * resources?: array>, + * }, + * semaphore?: bool|string|array{ // Semaphore configuration + * enabled?: bool, // Default: false + * resources?: array, + * }, + * messenger?: bool|array{ // Messenger configuration + * enabled?: bool, // Default: false + * routing?: array, + * }>, + * serializer?: array{ + * default_serializer?: scalar|null, // Service id to use as the default serializer for the transports. // Default: "messenger.transport.native_php_serializer" + * symfony_serializer?: array{ + * format?: scalar|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|null, // Transport name to send failed messages to (after all retries have failed). // Default: null + * retry_strategy?: string|array{ + * service?: scalar|null, // Service id to override the retry strategy entirely. // Default: null + * max_retries?: int, // Default: 3 + * delay?: int, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000 + * multiplier?: float, // If greater than 1, delay will grow exponentially for each retry: this delay = (delay * (multiple ^ retries)). // Default: 2 + * max_delay?: int, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0 + * jitter?: float, // Randomness to apply to the delay (between 0 and 1). // Default: 0.1 + * }, + * rate_limiter?: scalar|null, // Rate limiter name to use when processing messages. // Default: null + * }>, + * failure_transport?: scalar|null, // Transport name to send failed messages to (after all retries have failed). // Default: null + * stop_worker_on_signals?: list, + * default_bus?: scalar|null, // Default: null + * buses?: array, + * }>, + * }>, + * }, + * scheduler?: bool|array{ // Scheduler configuration + * enabled?: bool, // Default: false + * }, + * disallow_search_engine_index?: bool, // Enabled by default when debug is enabled. // Default: true + * http_client?: bool|array{ // HTTP Client configuration + * enabled?: bool, // Default: true + * max_host_connections?: int, // The maximum number of connections to a single host. + * default_options?: array{ + * headers?: array, + * vars?: list, + * max_redirects?: int, // The maximum number of redirects to follow. + * http_version?: scalar|null, // The default HTTP version, typically 1.1 or 2.0, leave to null for the best version. + * resolve?: array, + * proxy?: scalar|null, // The URL of the proxy to pass requests through or null for automatic detection. + * no_proxy?: scalar|null, // A comma separated list of hosts that do not require a proxy to be reached. + * timeout?: float, // The idle timeout, defaults to the "default_socket_timeout" ini parameter. + * max_duration?: float, // The maximum execution time for the request+response as a whole. + * bindto?: scalar|null, // A network interface name, IP address, a host name or a UNIX socket to bind to. + * verify_peer?: bool, // Indicates if the peer should be verified in a TLS context. + * verify_host?: bool, // Indicates if the host should exist as a certificate common name. + * cafile?: scalar|null, // A certificate authority file. + * capath?: scalar|null, // A directory that contains multiple certificate authority files. + * local_cert?: scalar|null, // A PEM formatted certificate file. + * local_pk?: scalar|null, // A private key file. + * passphrase?: scalar|null, // The passphrase used to encrypt the "local_pk" file. + * ciphers?: scalar|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|null, // The minimum version of TLS to accept; must be one of STREAM_CRYPTO_METHOD_TLSv*_CLIENT constants. + * extra?: list, + * rate_limiter?: scalar|null, // Rate limiter name to use for throttling requests. // Default: null + * caching?: bool|array{ // Caching configuration. + * enabled?: bool, // Default: false + * cache_pool?: string, // The taggable cache pool to use for storing the responses. // Default: "cache.http_client" + * shared?: bool, // Indicates whether the cache is shared (public) or private. // Default: true + * max_ttl?: int, // The maximum TTL (in seconds) allowed for cached responses. Null means no cap. // Default: null + * }, + * retry_failed?: bool|array{ + * enabled?: bool, // Default: false + * retry_strategy?: scalar|null, // service id to override the retry strategy. // Default: null + * http_codes?: array, + * }>, + * max_retries?: int, // Default: 3 + * delay?: int, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000 + * multiplier?: float, // If greater than 1, delay will grow exponentially for each retry: delay * (multiple ^ retries). // Default: 2 + * max_delay?: int, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0 + * jitter?: float, // Randomness in percent (between 0 and 1) to apply to the delay. // Default: 0.1 + * }, + * }, + * mock_response_factory?: scalar|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, // The maximum number of redirects to follow. + * http_version?: scalar|null, // The default HTTP version, typically 1.1 or 2.0, leave to null for the best version. + * resolve?: array, + * proxy?: scalar|null, // The URL of the proxy to pass requests through or null for automatic detection. + * no_proxy?: scalar|null, // A comma separated list of hosts that do not require a proxy to be reached. + * timeout?: float, // The idle timeout, defaults to the "default_socket_timeout" ini parameter. + * max_duration?: float, // The maximum execution time for the request+response as a whole. + * bindto?: scalar|null, // A network interface name, IP address, a host name or a UNIX socket to bind to. + * verify_peer?: bool, // Indicates if the peer should be verified in a TLS context. + * verify_host?: bool, // Indicates if the host should exist as a certificate common name. + * cafile?: scalar|null, // A certificate authority file. + * capath?: scalar|null, // A directory that contains multiple certificate authority files. + * local_cert?: scalar|null, // A PEM formatted certificate file. + * local_pk?: scalar|null, // A private key file. + * passphrase?: scalar|null, // The passphrase used to encrypt the "local_pk" file. + * ciphers?: scalar|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|null, // The minimum version of TLS to accept; must be one of STREAM_CRYPTO_METHOD_TLSv*_CLIENT constants. + * extra?: list, + * rate_limiter?: scalar|null, // Rate limiter name to use for throttling requests. // Default: null + * caching?: bool|array{ // Caching configuration. + * enabled?: bool, // Default: false + * cache_pool?: string, // The taggable cache pool to use for storing the responses. // Default: "cache.http_client" + * shared?: bool, // Indicates whether the cache is shared (public) or private. // Default: true + * max_ttl?: int, // The maximum TTL (in seconds) allowed for cached responses. Null means no cap. // Default: null + * }, + * retry_failed?: bool|array{ + * enabled?: bool, // Default: false + * retry_strategy?: scalar|null, // service id to override the retry strategy. // Default: null + * http_codes?: array, + * }>, + * max_retries?: int, // Default: 3 + * delay?: int, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000 + * multiplier?: float, // If greater than 1, delay will grow exponentially for each retry: delay * (multiple ^ retries). // Default: 2 + * max_delay?: int, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0 + * jitter?: float, // Randomness in percent (between 0 and 1) to apply to the delay. // Default: 0.1 + * }, + * }>, + * }, + * mailer?: bool|array{ // Mailer configuration + * enabled?: bool, // Default: true + * message_bus?: scalar|null, // The message bus to use. Defaults to the default bus if the Messenger component is installed. // Default: null + * dsn?: scalar|null, // Default: null + * transports?: array, + * envelope?: array{ // Mailer Envelope configuration + * sender?: scalar|null, + * recipients?: list, + * allowed_recipients?: list, + * }, + * headers?: array, + * dkim_signer?: bool|array{ // DKIM signer configuration + * enabled?: bool, // Default: false + * key?: scalar|null, // Key content, or path to key (in PEM format with the `file://` prefix) // Default: "" + * domain?: scalar|null, // Default: "" + * select?: scalar|null, // Default: "" + * passphrase?: scalar|null, // The private key passphrase // Default: "" + * options?: array, + * }, + * smime_signer?: bool|array{ // S/MIME signer configuration + * enabled?: bool, // Default: false + * key?: scalar|null, // Path to key (in PEM format) // Default: "" + * certificate?: scalar|null, // Path to certificate (in PEM format without the `file://` prefix) // Default: "" + * passphrase?: scalar|null, // The private key passphrase // Default: null + * extra_certificates?: scalar|null, // Default: null + * sign_options?: int, // Default: null + * }, + * smime_encrypter?: bool|array{ // S/MIME encrypter configuration + * enabled?: bool, // Default: false + * repository?: scalar|null, // S/MIME certificate repository service. This service shall implement the `Symfony\Component\Mailer\EventListener\SmimeCertificateRepositoryInterface`. // Default: "" + * cipher?: int, // A set of algorithms used to encrypt the message // Default: null + * }, + * }, + * secrets?: bool|array{ + * enabled?: bool, // Default: true + * vault_directory?: scalar|null, // Default: "%kernel.project_dir%/config/secrets/%kernel.runtime_environment%" + * local_dotenv_file?: scalar|null, // Default: "%kernel.project_dir%/.env.%kernel.runtime_environment%.local" + * decryption_env_var?: scalar|null, // Default: "base64:default::SYMFONY_DECRYPTION_SECRET" + * }, + * notifier?: bool|array{ // Notifier configuration + * enabled?: bool, // Default: false + * message_bus?: scalar|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, // Default: false + * channel_policy?: array>, + * admin_recipients?: list, + * }, + * rate_limiter?: bool|array{ // Rate limiter configuration + * enabled?: bool, // Default: false + * limiters?: array, + * limit?: int, // The maximum allowed hits in a fixed interval or burst. + * interval?: scalar|null, // Configures the fixed interval if "policy" is set to "fixed_window" or "sliding_window". The value must be a number followed by "second", "minute", "hour", "day", "week" or "month" (or their plural equivalent). + * rate?: array{ // Configures the fill rate if "policy" is set to "token_bucket". + * interval?: scalar|null, // Configures the rate interval. The value must be a number followed by "second", "minute", "hour", "day", "week" or "month" (or their plural equivalent). + * amount?: int, // Amount of tokens to add each interval. // Default: 1 + * }, + * }>, + * }, + * uid?: bool|array{ // Uid configuration + * enabled?: bool, // Default: true + * default_uuid_version?: 7|6|4|1, // Default: 7 + * name_based_uuid_version?: 5|3, // Default: 5 + * name_based_uuid_namespace?: scalar|null, + * time_based_uuid_version?: 7|6|1, // Default: 7 + * time_based_uuid_node?: scalar|null, + * }, + * html_sanitizer?: bool|array{ // HtmlSanitizer configuration + * enabled?: bool, // Default: false + * sanitizers?: array, + * block_elements?: list, + * drop_elements?: list, + * allow_attributes?: array, + * drop_attributes?: array, + * force_attributes?: array>, + * force_https_urls?: bool, // 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, // 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, // 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, // The maximum length allowed for the sanitized input. // Default: 0 + * }>, + * }, + * webhook?: bool|array{ // Webhook configuration + * enabled?: bool, // Default: false + * message_bus?: scalar|null, // The message bus to use. // Default: "messenger.default_bus" + * routing?: array, + * }, + * remote-event?: bool|array{ // RemoteEvent configuration + * enabled?: bool, // Default: false + * }, + * json_streamer?: bool|array{ // JSON streamer configuration + * enabled?: bool, // Default: false + * }, + * } + * @psalm-type SecurityConfig = array{ + * access_denied_url?: scalar|null, // Default: null + * session_fixation_strategy?: "none"|"migrate"|"invalidate", // Default: "migrate" + * hide_user_not_found?: bool, // Deprecated: The "hide_user_not_found" option is deprecated and will be removed in 8.0. Use the "expose_security_errors" option instead. + * expose_security_errors?: \Symfony\Component\Security\Http\Authentication\ExposeSecurityLevel::None|\Symfony\Component\Security\Http\Authentication\ExposeSecurityLevel::AccountStatus|\Symfony\Component\Security\Http\Authentication\ExposeSecurityLevel::All, // Default: "none" + * erase_credentials?: bool, // Default: true + * access_decision_manager?: array{ + * strategy?: "affirmative"|"consensus"|"unanimous"|"priority", + * service?: scalar|null, + * strategy_service?: scalar|null, + * allow_if_all_abstain?: bool, // Default: false + * allow_if_equal_granted_denied?: bool, // Default: true + * }, + * password_hashers?: array, + * hash_algorithm?: scalar|null, // Name of hashing algorithm for PBKDF2 (i.e. sha256, sha512, etc..) See hash_algos() for a list of supported algorithms. // Default: "sha512" + * key_length?: scalar|null, // Default: 40 + * ignore_case?: bool, // Default: false + * encode_as_base64?: bool, // Default: true + * iterations?: scalar|null, // Default: 5000 + * cost?: int, // Default: null + * memory_cost?: scalar|null, // Default: null + * time_cost?: scalar|null, // Default: null + * id?: scalar|null, + * }>, + * providers?: array, + * }, + * memory?: array{ + * users?: array, + * }>, + * }, + * ldap?: array{ + * service: scalar|null, + * base_dn: scalar|null, + * search_dn?: scalar|null, // Default: null + * search_password?: scalar|null, // Default: null + * extra_fields?: list, + * default_roles?: list, + * role_fetcher?: scalar|null, // Default: null + * uid_key?: scalar|null, // Default: "sAMAccountName" + * filter?: scalar|null, // Default: "({uid_key}={user_identifier})" + * password_attribute?: scalar|null, // Default: null + * }, + * entity?: array{ + * class: scalar|null, // The full entity class name of your user class. + * property?: scalar|null, // Default: null + * manager_name?: scalar|null, // Default: null + * }, + * lexik_jwt?: array{ + * class?: scalar|null, // Default: "Lexik\\Bundle\\JWTAuthenticationBundle\\Security\\User\\JWTUser" + * }, + * }>, + * firewalls: array, + * security?: bool, // Default: true + * user_checker?: scalar|null, // The UserChecker to use when authenticating users in this firewall. // Default: "security.user_checker" + * request_matcher?: scalar|null, + * access_denied_url?: scalar|null, + * access_denied_handler?: scalar|null, + * entry_point?: scalar|null, // An enabled authenticator name or a service id that implements "Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface". + * provider?: scalar|null, + * stateless?: bool, // Default: false + * lazy?: bool, // Default: false + * context?: scalar|null, + * logout?: array{ + * enable_csrf?: bool|null, // Default: null + * csrf_token_id?: scalar|null, // Default: "logout" + * csrf_parameter?: scalar|null, // Default: "_csrf_token" + * csrf_token_manager?: scalar|null, + * path?: scalar|null, // Default: "/logout" + * target?: scalar|null, // Default: "/" + * invalidate_session?: bool, // Default: true + * clear_site_data?: list<"*"|"cache"|"cookies"|"storage"|"executionContexts">, + * delete_cookies?: array, + * }, + * switch_user?: array{ + * provider?: scalar|null, + * parameter?: scalar|null, // Default: "_switch_user" + * role?: scalar|null, // Default: "ROLE_ALLOWED_TO_SWITCH" + * target_route?: scalar|null, // Default: null + * }, + * required_badges?: list, + * custom_authenticators?: list, + * login_throttling?: array{ + * limiter?: scalar|null, // A service id implementing "Symfony\Component\HttpFoundation\RateLimiter\RequestRateLimiterInterface". + * max_attempts?: int, // Default: 5 + * interval?: scalar|null, // Default: "1 minute" + * lock_factory?: scalar|null, // The service ID of the lock factory used by the login rate limiter (or null to disable locking). // Default: null + * cache_pool?: string, // The cache pool to use for storing the limiter state // Default: "cache.rate_limiter" + * storage_service?: string, // The service ID of a custom storage implementation, this precedes any configured "cache_pool" // Default: null + * }, + * x509?: array{ + * provider?: scalar|null, + * user?: scalar|null, // Default: "SSL_CLIENT_S_DN_Email" + * credentials?: scalar|null, // Default: "SSL_CLIENT_S_DN" + * user_identifier?: scalar|null, // Default: "emailAddress" + * }, + * remote_user?: array{ + * provider?: scalar|null, + * user?: scalar|null, // Default: "REMOTE_USER" + * }, + * jwt?: array{ + * provider?: scalar|null, // Default: null + * authenticator?: scalar|null, // Default: "lexik_jwt_authentication.security.jwt_authenticator" + * }, + * login_link?: array{ + * check_route: scalar|null, // Route that will validate the login link - e.g. "app_login_link_verify". + * check_post_only?: scalar|null, // If true, only HTTP POST requests to "check_route" will be handled by the authenticator. // Default: false + * signature_properties: list, + * lifetime?: int, // The lifetime of the login link in seconds. // Default: 600 + * max_uses?: int, // Max number of times a login link can be used - null means unlimited within lifetime. // Default: null + * used_link_cache?: scalar|null, // Cache service id used to expired links of max_uses is set. + * success_handler?: scalar|null, // A service id that implements Symfony\Component\Security\Http\Authentication\AuthenticationSuccessHandlerInterface. + * failure_handler?: scalar|null, // A service id that implements Symfony\Component\Security\Http\Authentication\AuthenticationFailureHandlerInterface. + * provider?: scalar|null, // The user provider to load users from. + * secret?: scalar|null, // Default: "%kernel.secret%" + * always_use_default_target_path?: bool, // Default: false + * default_target_path?: scalar|null, // Default: "/" + * login_path?: scalar|null, // Default: "/login" + * target_path_parameter?: scalar|null, // Default: "_target_path" + * use_referer?: bool, // Default: false + * failure_path?: scalar|null, // Default: null + * failure_forward?: bool, // Default: false + * failure_path_parameter?: scalar|null, // Default: "_failure_path" + * }, + * form_login?: array{ + * provider?: scalar|null, + * remember_me?: bool, // Default: true + * success_handler?: scalar|null, + * failure_handler?: scalar|null, + * check_path?: scalar|null, // Default: "/login_check" + * use_forward?: bool, // Default: false + * login_path?: scalar|null, // Default: "/login" + * username_parameter?: scalar|null, // Default: "_username" + * password_parameter?: scalar|null, // Default: "_password" + * csrf_parameter?: scalar|null, // Default: "_csrf_token" + * csrf_token_id?: scalar|null, // Default: "authenticate" + * enable_csrf?: bool, // Default: false + * post_only?: bool, // Default: true + * form_only?: bool, // Default: false + * always_use_default_target_path?: bool, // Default: false + * default_target_path?: scalar|null, // Default: "/" + * target_path_parameter?: scalar|null, // Default: "_target_path" + * use_referer?: bool, // Default: false + * failure_path?: scalar|null, // Default: null + * failure_forward?: bool, // Default: false + * failure_path_parameter?: scalar|null, // Default: "_failure_path" + * }, + * form_login_ldap?: array{ + * provider?: scalar|null, + * remember_me?: bool, // Default: true + * success_handler?: scalar|null, + * failure_handler?: scalar|null, + * check_path?: scalar|null, // Default: "/login_check" + * use_forward?: bool, // Default: false + * login_path?: scalar|null, // Default: "/login" + * username_parameter?: scalar|null, // Default: "_username" + * password_parameter?: scalar|null, // Default: "_password" + * csrf_parameter?: scalar|null, // Default: "_csrf_token" + * csrf_token_id?: scalar|null, // Default: "authenticate" + * enable_csrf?: bool, // Default: false + * post_only?: bool, // Default: true + * form_only?: bool, // Default: false + * always_use_default_target_path?: bool, // Default: false + * default_target_path?: scalar|null, // Default: "/" + * target_path_parameter?: scalar|null, // Default: "_target_path" + * use_referer?: bool, // Default: false + * failure_path?: scalar|null, // Default: null + * failure_forward?: bool, // Default: false + * failure_path_parameter?: scalar|null, // Default: "_failure_path" + * service?: scalar|null, // Default: "ldap" + * dn_string?: scalar|null, // Default: "{user_identifier}" + * query_string?: scalar|null, + * search_dn?: scalar|null, // Default: "" + * search_password?: scalar|null, // Default: "" + * }, + * json_login?: array{ + * provider?: scalar|null, + * remember_me?: bool, // Default: true + * success_handler?: scalar|null, + * failure_handler?: scalar|null, + * check_path?: scalar|null, // Default: "/login_check" + * use_forward?: bool, // Default: false + * login_path?: scalar|null, // Default: "/login" + * username_path?: scalar|null, // Default: "username" + * password_path?: scalar|null, // Default: "password" + * }, + * json_login_ldap?: array{ + * provider?: scalar|null, + * remember_me?: bool, // Default: true + * success_handler?: scalar|null, + * failure_handler?: scalar|null, + * check_path?: scalar|null, // Default: "/login_check" + * use_forward?: bool, // Default: false + * login_path?: scalar|null, // Default: "/login" + * username_path?: scalar|null, // Default: "username" + * password_path?: scalar|null, // Default: "password" + * service?: scalar|null, // Default: "ldap" + * dn_string?: scalar|null, // Default: "{user_identifier}" + * query_string?: scalar|null, + * search_dn?: scalar|null, // Default: "" + * search_password?: scalar|null, // Default: "" + * }, + * access_token?: array{ + * provider?: scalar|null, + * remember_me?: bool, // Default: true + * success_handler?: scalar|null, + * failure_handler?: scalar|null, + * realm?: scalar|null, // Default: null + * token_extractors?: list, + * token_handler: string|array{ + * id?: scalar|null, + * oidc_user_info?: string|array{ + * base_uri: scalar|null, // Base URI of the userinfo endpoint on the OIDC server, or the OIDC server URI to use the discovery (require "discovery" to be configured). + * discovery?: array{ // Enable the OIDC discovery. + * cache?: array{ + * id: scalar|null, // Cache service id to use to cache the OIDC discovery configuration. + * }, + * }, + * claim?: scalar|null, // Claim which contains the user identifier (e.g. sub, email, etc.). // Default: "sub" + * client?: scalar|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|null, // Cache service id to use to cache the OIDC discovery configuration. + * }, + * }, + * claim?: scalar|null, // Claim which contains the user identifier (e.g.: sub, email..). // Default: "sub" + * audience: scalar|null, // Audience set in the token, for validation purpose. + * issuers: list, + * algorithm?: array, + * algorithms: list, + * key?: scalar|null, // Deprecated: The "key" option is deprecated and will be removed in 8.0. Use the "keyset" option instead. // JSON-encoded JWK used to sign the token (must contain a "kty" key). + * keyset?: scalar|null, // JSON-encoded JWKSet used to sign the token (must contain a list of valid public keys). + * encryption?: bool|array{ + * enabled?: bool, // Default: false + * enforce?: bool, // When enabled, the token shall be encrypted. // Default: false + * algorithms: list, + * keyset: scalar|null, // JSON-encoded JWKSet used to decrypt the token (must contain a list of valid private keys). + * }, + * }, + * cas?: array{ + * validation_url: scalar|null, // CAS server validation URL + * prefix?: scalar|null, // CAS prefix // Default: "cas" + * http_client?: scalar|null, // HTTP Client service // Default: null + * }, + * oauth2?: scalar|null, + * }, + * }, + * http_basic?: array{ + * provider?: scalar|null, + * realm?: scalar|null, // Default: "Secured Area" + * }, + * http_basic_ldap?: array{ + * provider?: scalar|null, + * realm?: scalar|null, // Default: "Secured Area" + * service?: scalar|null, // Default: "ldap" + * dn_string?: scalar|null, // Default: "{user_identifier}" + * query_string?: scalar|null, + * search_dn?: scalar|null, // Default: "" + * search_password?: scalar|null, // Default: "" + * }, + * remember_me?: array{ + * secret?: scalar|null, // Default: "%kernel.secret%" + * service?: scalar|null, + * user_providers?: list, + * catch_exceptions?: bool, // Default: true + * signature_properties?: list, + * token_provider?: string|array{ + * service?: scalar|null, // The service ID of a custom remember-me token provider. + * doctrine?: bool|array{ + * enabled?: bool, // Default: false + * connection?: scalar|null, // Default: null + * }, + * }, + * token_verifier?: scalar|null, // The service ID of a custom rememberme token verifier. + * name?: scalar|null, // Default: "REMEMBERME" + * lifetime?: int, // Default: 31536000 + * path?: scalar|null, // Default: "/" + * domain?: scalar|null, // Default: null + * secure?: true|false|"auto", // Default: false + * httponly?: bool, // Default: true + * samesite?: null|"lax"|"strict"|"none", // Default: null + * always_remember_me?: bool, // Default: false + * remember_me_parameter?: scalar|null, // Default: "_remember_me" + * }, + * refresh_jwt?: array{ + * check_path?: scalar|null, // Default: null + * provider?: scalar|null, + * success_handler?: scalar|null, + * failure_handler?: scalar|null, + * }, + * }>, + * access_control?: list, + * attributes?: array, + * route?: scalar|null, // Default: null + * methods?: list, + * allow_if?: scalar|null, // Default: null + * roles?: list, + * }>, + * role_hierarchy?: array>, + * } + * @psalm-type TwigConfig = array{ + * form_themes?: list, + * globals?: array, + * autoescape_service?: scalar|null, // Default: null + * autoescape_service_method?: scalar|null, // Default: null + * base_template_class?: scalar|null, // Deprecated: The child node "base_template_class" at path "twig.base_template_class" is deprecated. + * cache?: scalar|null, // Default: true + * charset?: scalar|null, // Default: "%kernel.charset%" + * debug?: bool, // Default: "%kernel.debug%" + * strict_variables?: bool, // Default: "%kernel.debug%" + * auto_reload?: scalar|null, + * optimizations?: int, + * default_path?: scalar|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|null, // Default: "F j, Y H:i" + * interval_format?: scalar|null, // Default: "%d days" + * timezone?: scalar|null, // The timezone used when formatting dates, when set to null, the timezone returned by date_default_timezone_get() is used. // Default: null + * }, + * number_format?: array{ // The default format options for the number_format filter. + * decimals?: int, // Default: 0 + * decimal_point?: scalar|null, // Default: "." + * thousands_separator?: scalar|null, // Default: "," + * }, + * mailer?: array{ + * html_to_text_converter?: scalar|null, // A service implementing the "Symfony\Component\Mime\HtmlToTextConverter\HtmlToTextConverterInterface". // Default: null + * }, + * } + * @psalm-type DoctrineConfig = array{ + * dbal?: array{ + * default_connection?: scalar|null, + * types?: array, + * driver_schemes?: array, + * connections?: array, + * mapping_types?: array, + * default_table_options?: array, + * schema_manager_factory?: scalar|null, // Default: "doctrine.dbal.default_schema_manager_factory" + * result_cache?: scalar|null, + * replicas?: array, + * }>, + * }, + * orm?: array{ + * default_entity_manager?: scalar|null, + * enable_native_lazy_objects?: bool, // 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, // Default: true + * auto_mapping?: bool, // Deprecated: The "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, // Set to true to fetch the entity from the database instead of using the cache, if any // Default: false + * }, + * entity_managers?: array, + * }>, + * }>, + * }, + * connection?: scalar|null, + * class_metadata_factory_name?: scalar|null, // Default: "Doctrine\\ORM\\Mapping\\ClassMetadataFactory" + * default_repository_class?: scalar|null, // Default: "Doctrine\\ORM\\EntityRepository" + * auto_mapping?: scalar|null, // Default: false + * naming_strategy?: scalar|null, // Default: "doctrine.orm.naming_strategy.default" + * quote_strategy?: scalar|null, // Default: "doctrine.orm.quote_strategy.default" + * typed_field_mapper?: scalar|null, // Default: "doctrine.orm.typed_field_mapper.default" + * entity_listener_resolver?: scalar|null, // Default: null + * fetch_mode_subselect_batch_size?: scalar|null, + * repository_factory?: scalar|null, // Default: "doctrine.orm.container_repository_factory" + * schema_ignore_classes?: list, + * validate_xml_mapping?: bool, // 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|null, // Default: null + * id?: scalar|null, + * pool?: scalar|null, + * }, + * region_lock_lifetime?: scalar|null, // Default: 60 + * log_enabled?: bool, // Default: true + * region_lifetime?: scalar|null, // Default: 3600 + * enabled?: bool, // Default: true + * factory?: scalar|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 ApiPlatformConfig = array{ + * title?: scalar|null, // The title of the API. // Default: "" + * description?: scalar|null, // The description of the API. // Default: "" + * version?: scalar|null, // The version of the API. // Default: "0.0.0" + * show_webby?: bool, // If true, show Webby on the documentation page // Default: true + * use_symfony_listeners?: bool, // Uses Symfony event listeners instead of the ApiPlatform\Symfony\Controller\MainController. // Default: false + * name_converter?: scalar|null, // Specify a name converter to use. // Default: null + * asset_package?: scalar|null, // Specify an asset package name to use. // Default: null + * path_segment_name_generator?: scalar|null, // Specify a path name generator to use. // Default: "api_platform.metadata.path_segment_name_generator.underscore" + * inflector?: scalar|null, // Specify an inflector to use. // Default: "api_platform.metadata.inflector" + * validator?: array{ + * serialize_payload_fields?: mixed, // Set to null to serialize all payload fields when a validation error is thrown, or set the fields you want to include explicitly. // Default: [] + * query_parameter_validation?: bool, // Default: true + * }, + * eager_loading?: bool|array{ + * enabled?: bool, // Default: true + * fetch_partial?: bool, // Fetch only partial data according to serialization groups. If enabled, Doctrine ORM entities will not work as expected if any of the other fields are used. // Default: false + * max_joins?: int, // Max number of joined relations before EagerLoading throws a RuntimeException // Default: 30 + * force_eager?: bool, // Force join on every relation. If disabled, it will only join relations having the EAGER fetch mode. // Default: true + * }, + * handle_symfony_errors?: bool, // Allows to handle symfony exceptions. // Default: false + * enable_swagger?: bool, // Enable the Swagger documentation and export. // Default: true + * enable_swagger_ui?: bool, // Enable Swagger UI // Default: true + * enable_re_doc?: bool, // Enable ReDoc // Default: true + * enable_entrypoint?: bool, // Enable the entrypoint // Default: true + * enable_docs?: bool, // Enable the docs // Default: true + * enable_profiler?: bool, // Enable the data collector and the WebProfilerBundle integration. // Default: true + * enable_link_security?: bool, // Enable security for Links (sub resources) // Default: false + * collection?: array{ + * exists_parameter_name?: scalar|null, // The name of the query parameter to filter on nullable field values. // Default: "exists" + * order?: scalar|null, // The default order of results. // Default: "ASC" + * order_parameter_name?: scalar|null, // The name of the query parameter to order results. // Default: "order" + * order_nulls_comparison?: "nulls_smallest"|"nulls_largest"|"nulls_always_first"|"nulls_always_last"|null, // The nulls comparison strategy. // Default: null + * pagination?: bool|array{ + * enabled?: bool, // Default: true + * page_parameter_name?: scalar|null, // The default name of the parameter handling the page number. // Default: "page" + * enabled_parameter_name?: scalar|null, // The name of the query parameter to enable or disable pagination. // Default: "pagination" + * items_per_page_parameter_name?: scalar|null, // The name of the query parameter to set the number of items per page. // Default: "itemsPerPage" + * partial_parameter_name?: scalar|null, // The name of the query parameter to enable or disable partial pagination. // Default: "partial" + * }, + * }, + * mapping?: array{ + * paths?: list, + * }, + * resource_class_directories?: list, + * serializer?: array{ + * hydra_prefix?: bool, // Use the "hydra:" prefix. // Default: false + * }, + * doctrine?: bool|array{ + * enabled?: bool, // Default: true + * }, + * doctrine_mongodb_odm?: bool|array{ + * enabled?: bool, // Default: false + * }, + * oauth?: bool|array{ + * enabled?: bool, // Default: false + * clientId?: scalar|null, // The oauth client id. // Default: "" + * clientSecret?: scalar|null, // The OAuth client secret. Never use this parameter in your production environment. It exposes crucial security information. This feature is intended for dev/test environments only. Enable "oauth.pkce" instead // Default: "" + * pkce?: bool, // Enable the oauth PKCE. // Default: false + * type?: scalar|null, // The oauth type. // Default: "oauth2" + * flow?: scalar|null, // The oauth flow grant type. // Default: "application" + * tokenUrl?: scalar|null, // The oauth token url. // Default: "" + * authorizationUrl?: scalar|null, // The oauth authentication url. // Default: "" + * refreshUrl?: scalar|null, // The oauth refresh url. // Default: "" + * scopes?: list, + * }, + * graphql?: bool|array{ + * enabled?: bool, // Default: true + * default_ide?: scalar|null, // Default: "graphiql" + * graphiql?: bool|array{ + * enabled?: bool, // Default: true + * }, + * introspection?: bool|array{ + * enabled?: bool, // Default: true + * }, + * max_query_depth?: int, // Default: 20 + * graphql_playground?: array, + * max_query_complexity?: int, // Default: 500 + * nesting_separator?: scalar|null, // The separator to use to filter nested fields. // Default: "_" + * collection?: array{ + * pagination?: bool|array{ + * enabled?: bool, // Default: true + * }, + * }, + * }, + * swagger?: array{ + * persist_authorization?: bool, // Persist the SwaggerUI Authorization in the localStorage. // Default: false + * versions?: list, + * api_keys?: array, + * http_auth?: array, + * swagger_ui_extra_configuration?: mixed, // To pass extra configuration to Swagger UI, like docExpansion or filter. // Default: [] + * }, + * http_cache?: array{ + * public?: bool|null, // To make all responses public by default. // Default: null + * invalidation?: bool|array{ // Enable the tags-based cache invalidation system. + * enabled?: bool, // Default: false + * varnish_urls?: list, + * urls?: list, + * scoped_clients?: list, + * max_header_length?: int, // Max header length supported by the cache server. // Default: 7500 + * request_options?: mixed, // To pass options to the client charged with the request. // Default: [] + * purger?: scalar|null, // Specify a purger to use (available values: "api_platform.http_cache.purger.varnish.ban", "api_platform.http_cache.purger.varnish.xkey", "api_platform.http_cache.purger.souin"). // Default: "api_platform.http_cache.purger.varnish" + * xkey?: array{ // Deprecated: The "xkey" configuration is deprecated, use your own purger to customize surrogate keys or the appropriate paramters. + * glue?: scalar|null, // xkey glue between keys // Default: " " + * }, + * }, + * }, + * mercure?: bool|array{ + * enabled?: bool, // Default: false + * hub_url?: scalar|null, // The URL sent in the Link HTTP header. If not set, will default to the URL for MercureBundle's default hub. // Default: null + * include_type?: bool, // Always include @var in updates (including delete ones). // Default: false + * }, + * messenger?: bool|array{ + * enabled?: bool, // Default: false + * }, + * elasticsearch?: bool|array{ + * enabled?: bool, // Default: false + * hosts?: list, + * }, + * openapi?: array{ + * contact?: array{ + * name?: scalar|null, // The identifying name of the contact person/organization. // Default: null + * url?: scalar|null, // The URL pointing to the contact information. MUST be in the format of a URL. // Default: null + * email?: scalar|null, // The email address of the contact person/organization. MUST be in the format of an email address. // Default: null + * }, + * termsOfService?: scalar|null, // A URL to the Terms of Service for the API. MUST be in the format of a URL. // Default: null + * tags?: list, + * license?: array{ + * name?: scalar|null, // The license name used for the API. // Default: null + * url?: scalar|null, // URL to the license used for the API. MUST be in the format of a URL. // Default: null + * }, + * swagger_ui_extra_configuration?: mixed, // To pass extra configuration to Swagger UI, like docExpansion or filter. // Default: [] + * overrideResponses?: bool, // Whether API Platform adds automatic responses to the OpenAPI documentation. // Default: true + * }, + * maker?: bool|array{ + * enabled?: bool, // Default: true + * }, + * exception_to_status?: array, + * formats?: array, + * }>, + * patch_formats?: array, + * }>, + * docs_formats?: array, + * }>, + * error_formats?: array, + * }>, + * jsonschema_formats?: list, + * defaults?: array{ + * uri_template?: mixed, + * short_name?: mixed, + * description?: mixed, + * types?: mixed, + * operations?: mixed, + * formats?: mixed, + * input_formats?: mixed, + * output_formats?: mixed, + * uri_variables?: mixed, + * route_prefix?: mixed, + * defaults?: mixed, + * requirements?: mixed, + * options?: mixed, + * stateless?: mixed, + * sunset?: mixed, + * accept_patch?: mixed, + * status?: mixed, + * host?: mixed, + * schemes?: mixed, + * condition?: mixed, + * controller?: mixed, + * class?: mixed, + * url_generation_strategy?: mixed, + * deprecation_reason?: mixed, + * headers?: mixed, + * cache_headers?: mixed, + * normalization_context?: mixed, + * denormalization_context?: mixed, + * collect_denormalization_errors?: mixed, + * hydra_context?: mixed, + * openapi?: mixed, + * validation_context?: mixed, + * filters?: mixed, + * mercure?: mixed, + * messenger?: mixed, + * input?: mixed, + * output?: mixed, + * order?: mixed, + * fetch_partial?: mixed, + * force_eager?: mixed, + * pagination_client_enabled?: mixed, + * pagination_client_items_per_page?: mixed, + * pagination_client_partial?: mixed, + * pagination_via_cursor?: mixed, + * pagination_enabled?: mixed, + * pagination_fetch_join_collection?: mixed, + * pagination_use_output_walkers?: mixed, + * pagination_items_per_page?: mixed, + * pagination_maximum_items_per_page?: mixed, + * pagination_partial?: mixed, + * pagination_type?: mixed, + * security?: mixed, + * security_message?: mixed, + * security_post_denormalize?: mixed, + * security_post_denormalize_message?: mixed, + * security_post_validation?: mixed, + * security_post_validation_message?: mixed, + * composite_identifier?: mixed, + * exception_to_status?: mixed, + * query_parameter_validation_enabled?: mixed, + * links?: mixed, + * graph_ql_operations?: mixed, + * provider?: mixed, + * processor?: mixed, + * state_options?: mixed, + * rules?: mixed, + * policy?: mixed, + * middleware?: mixed, + * parameters?: mixed, + * strict_query_parameter_validation?: mixed, + * hide_hydra_operation?: mixed, + * extra_properties?: mixed, + * route_name?: mixed, + * errors?: mixed, + * read?: mixed, + * deserialize?: mixed, + * validate?: mixed, + * write?: mixed, + * serialize?: mixed, + * priority?: mixed, + * name?: mixed, + * allow_create?: mixed, + * item_uri_template?: mixed, + * ... + * }, + * } + * @psalm-type NelmioCorsConfig = array{ + * defaults?: array{ + * allow_credentials?: bool, // Default: false + * allow_origin?: list, + * allow_headers?: list, + * allow_methods?: list, + * allow_private_network?: bool, // Default: false + * expose_headers?: list, + * max_age?: scalar|null, // Default: 0 + * hosts?: list, + * origin_regex?: bool, // Default: false + * forced_allow_origin_value?: scalar|null, // Default: null + * skip_same_as_origin?: bool, // Default: true + * }, + * paths?: array, + * allow_headers?: list, + * allow_methods?: list, + * allow_private_network?: bool, + * expose_headers?: list, + * max_age?: scalar|null, // Default: 0 + * hosts?: list, + * origin_regex?: bool, + * forced_allow_origin_value?: scalar|null, // Default: null + * skip_same_as_origin?: bool, + * }>, + * } + * @psalm-type WebProfilerConfig = array{ + * toolbar?: bool|array{ // Profiler toolbar configuration + * enabled?: bool, // Default: false + * ajax_replace?: bool, // Replace toolbar on AJAX requests // Default: false + * }, + * intercept_redirects?: bool, // Default: false + * excluded_ajax_paths?: scalar|null, // Default: "^/((index|app(_[\\w]+)?)\\.php/)?_wdt" + * } + * @psalm-type DoctrineMigrationsConfig = array{ + * enable_service_migrations?: bool, // 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|null, // Default: null + * version_column_name?: scalar|null, // Default: null + * version_column_length?: scalar|null, // Default: null + * executed_at_column_name?: scalar|null, // Default: null + * execution_time_column_name?: scalar|null, // Default: null + * }, + * }, + * migrations?: list, + * connection?: scalar|null, // Connection name to use for the migrations database. // Default: null + * em?: scalar|null, // Entity manager name to use for the migrations database (available when doctrine/orm is installed). // Default: null + * all_or_nothing?: scalar|null, // Run all migrations in a transaction. // Default: false + * check_database_platform?: scalar|null, // Adds an extra check in the generated migrations to allow execution only on the same platform as they were initially generated on. // Default: true + * custom_template?: scalar|null, // Custom template path for generated migration classes. // Default: null + * organize_migrations?: scalar|null, // Organize migrations mode. Possible values are: "BY_YEAR", "BY_YEAR_AND_MONTH", false // Default: false + * enable_profiler?: bool, // Whether or not to enable the profiler collector to calculate and visualize migration status. This adds some queries overhead. // Default: false + * transactional?: bool, // Whether or not to wrap migrations in a single transaction. // Default: true + * } + * @psalm-type MonologConfig = array{ + * use_microseconds?: scalar|null, // Default: true + * channels?: list, + * handlers?: array, + * excluded_http_codes?: list, + * }>, + * accepted_levels?: list, + * min_level?: scalar|null, // Default: "DEBUG" + * max_level?: scalar|null, // Default: "EMERGENCY" + * buffer_size?: scalar|null, // Default: 0 + * flush_on_overflow?: bool, // Default: false + * handler?: scalar|null, + * url?: scalar|null, + * exchange?: scalar|null, + * exchange_name?: scalar|null, // Default: "log" + * room?: scalar|null, + * message_format?: scalar|null, // Default: "text" + * api_version?: scalar|null, // Default: null + * channel?: scalar|null, // Default: null + * bot_name?: scalar|null, // Default: "Monolog" + * use_attachment?: scalar|null, // Default: true + * use_short_attachment?: scalar|null, // Default: false + * include_extra?: scalar|null, // Default: false + * icon_emoji?: scalar|null, // Default: null + * webhook_url?: scalar|null, + * exclude_fields?: list, + * team?: scalar|null, + * notify?: scalar|null, // Default: false + * nickname?: scalar|null, // Default: "Monolog" + * token?: scalar|null, + * region?: scalar|null, + * source?: scalar|null, + * use_ssl?: bool, // Default: true + * user?: mixed, + * title?: scalar|null, // Default: null + * host?: scalar|null, // Default: null + * port?: scalar|null, // Default: 514 + * config?: list, + * members?: list, + * connection_string?: scalar|null, + * timeout?: scalar|null, + * time?: scalar|null, // Default: 60 + * deduplication_level?: scalar|null, // Default: 400 + * store?: scalar|null, // Default: null + * connection_timeout?: scalar|null, + * persistent?: bool, + * dsn?: scalar|null, + * hub_id?: scalar|null, // Default: null + * client_id?: scalar|null, // Default: null + * auto_log_stacks?: scalar|null, // Default: false + * release?: scalar|null, // Default: null + * environment?: scalar|null, // Default: null + * message_type?: scalar|null, // Default: 0 + * parse_mode?: scalar|null, // Default: null + * disable_webpage_preview?: bool|null, // Default: null + * disable_notification?: bool|null, // Default: null + * split_long_messages?: bool, // Default: false + * delay_between_messages?: bool, // Default: false + * topic?: int, // Default: null + * factor?: int, // Default: 1 + * tags?: list, + * console_formater_options?: mixed, // Deprecated: "monolog.handlers..console_formater_options.console_formater_options" is deprecated, use "monolog.handlers..console_formater_options.console_formatter_options" instead. + * console_formatter_options?: mixed, // Default: [] + * formatter?: scalar|null, + * nested?: bool, // Default: false + * publisher?: string|array{ + * id?: scalar|null, + * hostname?: scalar|null, + * port?: scalar|null, // Default: 12201 + * chunk_size?: scalar|null, // Default: 1420 + * encoder?: "json"|"compressed_json", + * }, + * mongo?: string|array{ + * id?: scalar|null, + * host?: scalar|null, + * port?: scalar|null, // Default: 27017 + * user?: scalar|null, + * pass?: scalar|null, + * database?: scalar|null, // Default: "monolog" + * collection?: scalar|null, // Default: "logs" + * }, + * mongodb?: string|array{ + * id?: scalar|null, // ID of a MongoDB\Client service + * uri?: scalar|null, + * username?: scalar|null, + * password?: scalar|null, + * database?: scalar|null, // Default: "monolog" + * collection?: scalar|null, // Default: "logs" + * }, + * elasticsearch?: string|array{ + * id?: scalar|null, + * hosts?: list, + * host?: scalar|null, + * port?: scalar|null, // Default: 9200 + * transport?: scalar|null, // Default: "Http" + * user?: scalar|null, // Default: null + * password?: scalar|null, // Default: null + * }, + * index?: scalar|null, // Default: "monolog" + * document_type?: scalar|null, // Default: "logs" + * ignore_error?: scalar|null, // Default: false + * redis?: string|array{ + * id?: scalar|null, + * host?: scalar|null, + * password?: scalar|null, // Default: null + * port?: scalar|null, // Default: 6379 + * database?: scalar|null, // Default: 0 + * key_name?: scalar|null, // Default: "monolog_redis" + * }, + * predis?: string|array{ + * id?: scalar|null, + * host?: scalar|null, + * }, + * from_email?: scalar|null, + * to_email?: list, + * subject?: scalar|null, + * content_type?: scalar|null, // Default: null + * headers?: list, + * mailer?: scalar|null, // Default: null + * email_prototype?: string|array{ + * id: scalar|null, + * method?: scalar|null, // Default: null + * }, + * lazy?: bool, // Default: true + * verbosity_levels?: array{ + * VERBOSITY_QUIET?: scalar|null, // Default: "ERROR" + * VERBOSITY_NORMAL?: scalar|null, // Default: "WARNING" + * VERBOSITY_VERBOSE?: scalar|null, // Default: "NOTICE" + * VERBOSITY_VERY_VERBOSE?: scalar|null, // Default: "INFO" + * VERBOSITY_DEBUG?: scalar|null, // Default: "DEBUG" + * }, + * channels?: string|array{ + * type?: scalar|null, + * elements?: list, + * }, + * }>, + * } + * @psalm-type DebugConfig = array{ + * max_items?: int, // Max number of displayed items past the first level, -1 means no limit. // Default: 2500 + * min_depth?: int, // Minimum tree depth to clone all the items, 1 is default. // Default: 1 + * max_string_length?: int, // Max length of displayed strings, -1 means no limit. // Default: -1 + * dump_destination?: scalar|null, // A stream URL where dumps should be written to. // Default: null + * theme?: "dark"|"light", // Changes the color of the dump() output when rendered directly on the templating. "dark" (default) or "light". // Default: "dark" + * } + * @psalm-type StofDoctrineExtensionsConfig = array{ + * orm?: array, + * mongodb?: array, + * class?: array{ + * translatable?: scalar|null, // Default: "Gedmo\\Translatable\\TranslatableListener" + * timestampable?: scalar|null, // Default: "Gedmo\\Timestampable\\TimestampableListener" + * blameable?: scalar|null, // Default: "Gedmo\\Blameable\\BlameableListener" + * sluggable?: scalar|null, // Default: "Gedmo\\Sluggable\\SluggableListener" + * tree?: scalar|null, // Default: "Gedmo\\Tree\\TreeListener" + * loggable?: scalar|null, // Default: "Gedmo\\Loggable\\LoggableListener" + * sortable?: scalar|null, // Default: "Gedmo\\Sortable\\SortableListener" + * softdeleteable?: scalar|null, // Default: "Gedmo\\SoftDeleteable\\SoftDeleteableListener" + * uploadable?: scalar|null, // Default: "Gedmo\\Uploadable\\UploadableListener" + * reference_integrity?: scalar|null, // Default: "Gedmo\\ReferenceIntegrity\\ReferenceIntegrityListener" + * }, + * uploadable?: array{ + * default_file_path?: scalar|null, // Default: null + * mime_type_guesser_class?: scalar|null, // Default: "Stof\\DoctrineExtensionsBundle\\Uploadable\\MimeTypeGuesserAdapter" + * default_file_info_class?: scalar|null, // Default: "Stof\\DoctrineExtensionsBundle\\Uploadable\\UploadedFileInfo" + * validate_writable_directory?: bool, // Default: true + * }, + * default_locale?: scalar|null, // Default: "en" + * translation_fallback?: bool, // Default: false + * persist_default_translation?: bool, // Default: false + * skip_translation_on_load?: bool, // Default: false + * metadata_cache_pool?: scalar|null, // Default: null + * } + * @psalm-type LexikJwtAuthenticationConfig = array{ + * public_key?: scalar|null, // The key used to sign tokens (useless for HMAC). If not set, the key will be automatically computed from the secret key. // Default: null + * additional_public_keys?: list, + * secret_key?: scalar|null, // The key used to sign tokens. It can be a raw secret (for HMAC), a raw RSA/ECDSA key or the path to a file itself being plaintext or PEM. // Default: null + * pass_phrase?: scalar|null, // The key passphrase (useless for HMAC) // Default: "" + * token_ttl?: scalar|null, // Default: 3600 + * allow_no_expiration?: bool, // Allow tokens without "exp" claim (i.e. indefinitely valid, no lifetime) to be considered valid. Caution: usage of this should be rare. // Default: false + * clock_skew?: scalar|null, // Default: 0 + * encoder?: array{ + * service?: scalar|null, // Default: "lexik_jwt_authentication.encoder.lcobucci" + * signature_algorithm?: scalar|null, // Default: "RS256" + * }, + * user_id_claim?: scalar|null, // Default: "username" + * token_extractors?: array{ + * authorization_header?: bool|array{ + * enabled?: bool, // Default: true + * prefix?: scalar|null, // Default: "Bearer" + * name?: scalar|null, // Default: "Authorization" + * }, + * cookie?: bool|array{ + * enabled?: bool, // Default: false + * name?: scalar|null, // Default: "BEARER" + * }, + * query_parameter?: bool|array{ + * enabled?: bool, // Default: false + * name?: scalar|null, // Default: "bearer" + * }, + * split_cookie?: bool|array{ + * enabled?: bool, // Default: false + * cookies?: list, + * }, + * }, + * remove_token_from_body_when_cookies_used?: scalar|null, // Default: true + * set_cookies?: array, + * }>, + * api_platform?: bool|array{ // API Platform compatibility: add check_path in OpenAPI documentation. + * enabled?: bool, // Default: false + * check_path?: scalar|null, // The login check path to add in OpenAPI. // Default: null + * username_path?: scalar|null, // The path to the username in the JSON body. // Default: null + * password_path?: scalar|null, // The path to the password in the JSON body. // Default: null + * }, + * access_token_issuance?: bool|array{ + * enabled?: bool, // Default: false + * signature?: array{ + * algorithm: scalar|null, // The algorithm use to sign the access tokens. + * key: scalar|null, // The signature key. It shall be JWK encoded. + * }, + * encryption?: bool|array{ + * enabled?: bool, // Default: false + * key_encryption_algorithm: scalar|null, // The key encryption algorithm is used to encrypt the token. + * content_encryption_algorithm: scalar|null, // The key encryption algorithm is used to encrypt the token. + * key: scalar|null, // The encryption key. It shall be JWK encoded. + * }, + * }, + * access_token_verification?: bool|array{ + * enabled?: bool, // Default: false + * signature?: array{ + * header_checkers?: list, + * claim_checkers?: list, + * mandatory_claims?: list, + * allowed_algorithms?: list, + * keyset: scalar|null, // The signature keyset. It shall be JWKSet encoded. + * }, + * encryption?: bool|array{ + * enabled?: bool, // Default: false + * continue_on_decryption_failure?: bool, // If enable, non-encrypted tokens or tokens that failed during decryption or verification processes are accepted. // Default: false + * header_checkers?: list, + * allowed_key_encryption_algorithms?: list, + * allowed_content_encryption_algorithms?: list, + * keyset: scalar|null, // The encryption keyset. It shall be JWKSet encoded. + * }, + * }, + * blocklist_token?: bool|array{ + * enabled?: bool, // Default: false + * cache?: scalar|null, // Storage to track blocked tokens // Default: "cache.app" + * }, + * } + * @psalm-type NelmioAliceConfig = array{ + * locale?: scalar|null, // Default locale for the Faker Generator // Default: "en_US" + * seed?: scalar|null, // Value used make sure Faker generates data consistently across runs, set to null to disable. // Default: 1 + * functions_blacklist?: list, + * loading_limit?: int, // Alice may do some recursion to resolve certain values. This parameter defines a limit which will stop the resolution once reached. // Default: 5 + * max_unique_values_retry?: int, // Maximum number of time Alice can try to generate a unique value before stopping and failing. // Default: 150 + * } + * @psalm-type FidryAliceDataFixturesConfig = array{ + * default_purge_mode?: scalar|null, // Default: "delete" + * db_drivers?: array{ // The list of enabled drivers. + * doctrine_orm?: bool|null, // Default: null + * doctrine_mongodb_odm?: bool|null, // Default: null + * doctrine_phpcr_odm?: bool|null, // Default: null + * eloquent_orm?: bool|null, // Default: null + * }, + * } + * @psalm-type HautelookAliceConfig = array{ + * fixtures_path?: list, + * root_dirs?: list, + * } + * @psalm-type ExerciseHtmlPurifierConfig = array{ + * default_cache_serializer_path?: scalar|null, // Default: "%kernel.cache_dir%/htmlpurifier" + * default_cache_serializer_permissions?: scalar|null, // Default: 493 + * html_profiles?: array, + * attributes?: array>, + * elements?: array>, + * blank_elements?: list, + * parents?: list, + * }>, + * } + * @psalm-type KnpuOauth2ClientConfig = array{ + * http_client?: scalar|null, // Service id of HTTP client to use (must implement GuzzleHttp\ClientInterface) // Default: null + * http_client_options?: array{ + * timeout?: int, + * proxy?: scalar|null, + * verify?: bool, // Use only with proxy option set + * }, + * clients?: array>, + * } + * @psalm-type SentryConfig = array{ + * dsn?: scalar|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, // Default: true + * register_error_handler?: bool, // Default: true + * logger?: scalar|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, + * prefixes?: list, + * sample_rate?: float, // 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, + * traces_sample_rate?: float, // 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|null, + * profiles_sample_rate?: float, // 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, + * attach_stacktrace?: bool, + * attach_metric_code_locations?: bool, + * context_lines?: int, + * environment?: scalar|null, // Default: "%kernel.environment%" + * logger?: scalar|null, + * spotlight?: bool, + * spotlight_url?: scalar|null, + * release?: scalar|null, // Default: "%env(default::SENTRY_RELEASE)%" + * server_name?: scalar|null, + * ignore_exceptions?: list, + * ignore_transactions?: list, + * before_send?: scalar|null, + * before_send_transaction?: scalar|null, + * before_send_check_in?: scalar|null, + * before_send_metrics?: scalar|null, + * before_send_log?: scalar|null, + * trace_propagation_targets?: mixed, + * tags?: array, + * error_types?: scalar|null, + * max_breadcrumbs?: int, + * before_breadcrumb?: mixed, + * in_app_exclude?: list, + * in_app_include?: list, + * send_default_pii?: bool, + * max_value_length?: int, + * transport?: scalar|null, + * http_client?: scalar|null, + * http_proxy?: scalar|null, + * http_proxy_authentication?: scalar|null, + * http_connect_timeout?: float, // 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, // The maximum execution time for the request+response as a whole. It works only when using the default transport. + * http_ssl_verify_peer?: bool, + * http_compression?: bool, + * capture_silenced_errors?: bool, + * max_request_body_size?: "none"|"small"|"medium"|"always", + * class_serializers?: array, + * }, + * messenger?: bool|array{ + * enabled?: bool, // Default: false + * capture_soft_fails?: bool, // Default: true + * isolate_breadcrumbs_by_message?: bool, // Default: false + * }, + * tracing?: bool|array{ + * enabled?: bool, // Default: true + * dbal?: bool|array{ + * enabled?: bool, // Default: true + * connections?: list, + * }, + * twig?: bool|array{ + * enabled?: bool, // Default: true + * }, + * cache?: bool|array{ + * enabled?: bool, // Default: true + * }, + * http_client?: bool|array{ + * enabled?: bool, // Default: true + * }, + * console?: array{ + * excluded_commands?: list, + * }, + * }, + * } + * @psalm-type TwigExtraConfig = array{ + * cache?: bool|array{ + * enabled?: bool, // Default: false + * }, + * html?: bool|array{ + * enabled?: bool, // Default: false + * }, + * markdown?: bool|array{ + * enabled?: bool, // Default: false + * }, + * intl?: bool|array{ + * enabled?: bool, // Default: false + * }, + * cssinliner?: bool|array{ + * enabled?: bool, // Default: true + * }, + * inky?: bool|array{ + * enabled?: bool, // Default: false + * }, + * string?: bool|array{ + * enabled?: bool, // Default: false + * }, + * commonmark?: array{ + * renderer?: array{ // Array of options for rendering HTML. + * block_separator?: scalar|null, + * inner_separator?: scalar|null, + * soft_break?: scalar|null, + * }, + * html_input?: "strip"|"allow"|"escape", // How to handle HTML input. + * allow_unsafe_links?: bool, // Remove risky link and image URLs by setting this to false. // Default: true + * max_nesting_level?: int, // The maximum nesting level for blocks. // Default: 9223372036854775807 + * max_delimiters_per_line?: int, // 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, // Default: 255 + * unique?: mixed, + * }, + * commonmark?: array{ // Array of options for configuring the CommonMark core extension. + * enable_em?: bool, // Default: true + * enable_strong?: bool, // Default: true + * use_asterisk?: bool, // Default: true + * use_underscore?: bool, // Default: true + * unordered_list_markers?: list, + * }, + * ... + * }, + * } + * @psalm-type FosHttpCacheConfig = array{ + * cacheable?: array{ + * response?: array{ + * additional_status?: list, + * expression?: scalar|null, // Expression to decide whether response is cacheable. Replaces the default status codes. // Default: null + * }, + * }, + * cache_control?: array{ + * defaults?: array{ + * overwrite?: bool, // Whether to overwrite existing cache headers // Default: false + * }, + * ttl_header?: scalar|null, // Specify the header name to use with the cache_control.reverse_proxy_ttl setting // Default: "X-Reverse-Proxy-TTL" + * rules?: list, + * ips?: array, + * attributes?: array, + * additional_response_status?: list, + * match_response?: scalar|null, // Expression to decide whether response should be matched. Replaces cacheable configuration. // Default: null + * expression_language?: scalar|null, // Service name of a custom ExpressionLanguage to use. + * }, + * headers: array{ + * overwrite?: "default"|true|false, // Whether to overwrite cache headers for this rule, defaults to the cache_control.defaults.overwrite setting // Default: "default" + * cache_control?: array{ // Add the specified cache control directives. + * max_age?: scalar|null, + * s_maxage?: scalar|null, + * private?: bool, + * public?: bool, + * must_revalidate?: bool, + * proxy_revalidate?: bool, + * no_transform?: bool, + * no_cache?: bool, + * no_store?: bool, + * stale_if_error?: scalar|null, + * stale_while_revalidate?: scalar|null, + * }, + * etag?: "weak"|"strong"|false, // Set a simple ETag which is just the md5 hash of the response body. You can specify which type of ETag you want by passing "strong" or "weak". // Default: false + * last_modified?: scalar|null, // Set a default last modified timestamp if none is set yet. Value must be parseable by DateTime + * reverse_proxy_ttl?: scalar|null, // Specify a custom time to live in seconds for your caching proxy. This value is sent in the custom header configured in cache_control.ttl_header. // Default: null + * vary?: list, + * }, + * }>, + * }, + * proxy_client?: array{ + * default?: "varnish"|"nginx"|"symfony"|"cloudflare"|"cloudfront"|"fastly"|"noop", // If you configure more than one proxy client, you need to specify which client is the default. + * varnish?: array{ + * tags_header?: scalar|null, // HTTP header to use when sending tag invalidation requests to Varnish + * header_length?: scalar|null, // Maximum header length when invalidating tags. If there are more tags to invalidate than fit into the header, the invalidation request is split into several requests. + * default_ban_headers?: array, + * tag_mode?: "ban"|"purgekeys", // If you can enable the xkey module in Varnish, use the purgekeys mode for more efficient tag handling // Default: "ban" + * http?: array{ + * servers?: array, + * servers_from_jsonenv?: mixed, // Addresses of the hosts the caching proxy is running on (env var that contains a json array as a string). The values may be hostnames or ips, and with :port if not the default port 80. + * base_url?: scalar|null, // Default host name and optional path for path based invalidation. // Default: null + * http_client?: scalar|null, // Httplug async client service name to use for sending the requests. // Default: null + * request_factory?: scalar|null, // Service name of PSR-17 message factory. // Default: null + * stream_factory?: scalar|null, // Service name of PSR-17 stream factory. // Default: null + * }, + * }, + * nginx?: array{ + * purge_location?: scalar|null, // Path to trigger the purge on Nginx for different location purge. // Default: false + * http?: array{ + * servers?: array, + * servers_from_jsonenv?: mixed, // Addresses of the hosts the caching proxy is running on (env var that contains a json array as a string). The values may be hostnames or ips, and with :port if not the default port 80. + * base_url?: scalar|null, // Default host name and optional path for path based invalidation. // Default: null + * http_client?: scalar|null, // Httplug async client service name to use for sending the requests. // Default: null + * request_factory?: scalar|null, // Service name of PSR-17 message factory. // Default: null + * stream_factory?: scalar|null, // Service name of PSR-17 stream factory. // Default: null + * }, + * }, + * symfony?: array{ + * tags_header?: scalar|null, // HTTP header to use when sending tag invalidation requests to Symfony HttpCache // Default: "X-Cache-Tags" + * tags_method?: scalar|null, // HTTP method for sending tag invalidation requests to Symfony HttpCache // Default: "PURGETAGS" + * header_length?: scalar|null, // Maximum header length when invalidating tags. If there are more tags to invalidate than fit into the header, the invalidation request is split into several requests. + * purge_method?: scalar|null, // HTTP method to use when sending purge requests to Symfony HttpCache // Default: "PURGE" + * use_kernel_dispatcher?: bool, // Dispatches invalidation requests to the kernel directly instead of executing real HTTP requests. Requires special kernel setup! Refer to the documentation for more information. // Default: false + * http?: array{ + * servers?: array, + * servers_from_jsonenv?: mixed, // Addresses of the hosts the caching proxy is running on (env var that contains a json array as a string). The values may be hostnames or ips, and with :port if not the default port 80. + * base_url?: scalar|null, // Default host name and optional path for path based invalidation. // Default: null + * http_client?: scalar|null, // Httplug async client service name to use for sending the requests. // Default: null + * request_factory?: scalar|null, // Service name of PSR-17 message factory. // Default: null + * stream_factory?: scalar|null, // Service name of PSR-17 stream factory. // Default: null + * }, + * }, + * cloudflare?: array{ + * authentication_token?: scalar|null, // API authorization token, requires Zone.Cache Purge permissions + * zone_identifier?: scalar|null, // Identifier for your Cloudflare zone you want to purge the cache for + * http?: array{ + * servers?: array, + * http_client?: scalar|null, // Httplug async client service name to use for sending the requests. // Default: null + * }, + * }, + * cloudfront?: array{ // Configure a client to interact with AWS cloudfront. You need to install jean-beru/fos-http-cache-cloudfront to work with cloudfront + * distribution_id?: scalar|null, // Identifier for your CloudFront distribution you want to purge the cache for + * client?: scalar|null, // AsyncAws\CloudFront\CloudFrontClient client to use // Default: null + * configuration?: mixed, // Client configuration from https://async-aws.com/configuration.html // Default: [] + * }, + * fastly?: array{ // Configure a client to interact with Fastly. + * service_identifier?: scalar|null, // Identifier for your Fastly service account. + * authentication_token?: scalar|null, // User token for authentication against Fastly APIs. + * soft_purge?: scalar|null, // Boolean for doing soft purges or not on tag & URL purging. Soft purges expires the cache unlike hard purge (removal), and allow grace/stale handling within Fastly VCL. // Default: true + * http?: array{ + * servers?: array, + * base_url?: scalar|null, // Default host name and optional path for path based invalidation. // Default: "service" + * http_client?: scalar|null, // Httplug async client service name to use for sending the requests. // Default: null + * }, + * }, + * noop?: bool, + * }, + * cache_manager?: array{ // Configure the cache manager. Needs a proxy_client to be configured. + * enabled?: true|false|"auto", // Allows to disable the invalidation manager. Enabled by default if you configure a proxy client. // Default: "auto" + * custom_proxy_client?: scalar|null, // Service name of a custom proxy client to use. With a custom client, generate_url_type defaults to ABSOLUTE_URL and tag support needs to be explicitly enabled. If no custom proxy client is specified, the first proxy client you configured is used. + * generate_url_type?: "auto"|1|0|3|2, // Set what URLs to generate on invalidate/refresh Route. Auto means path if base_url is set on the default proxy client, full URL otherwise. // Default: "auto" + * }, + * tags?: array{ + * enabled?: true|false|"auto", // Allows to disable tag support. Enabled by default if you configured the cache manager and have a proxy client that supports tagging. // Default: "auto" + * strict?: bool, // Default: false + * expression_language?: scalar|null, // Service name of a custom ExpressionLanguage to use. // Default: null + * response_header?: scalar|null, // HTTP header that contains cache tags. Defaults to xkey-softpurge for Varnish xkey or X-Cache-Tags otherwise // Default: null + * separator?: scalar|null, // Character(s) to use to separate multiple tags. Defaults to " " for Varnish xkey or "," otherwise // Default: null + * max_header_value_length?: scalar|null, // If configured the tag header value will be split into multiple response headers of the same name (see "response_header" configuration key) that all do not exceed the configured "max_header_value_length" (recommended is 4KB = 4096) - configure in bytes. // Default: null + * rules?: list, + * ips?: array, + * attributes?: array, + * }, + * tags?: list, + * tag_expressions?: list, + * }>, + * }, + * invalidation?: array{ + * enabled?: true|false|"auto", // Allows to disable the listener for invalidation. Enabled by default if the cache manager is configured. When disabled, the cache manager is no longer flushed automatically. // Default: "auto" + * expression_language?: scalar|null, // Service name of a custom ExpressionLanguage to use. // Default: null + * rules?: list, + * ips?: array, + * attributes?: array, + * }, + * routes: array, + * }>, + * }, + * user_context?: bool|array{ // Listener that returns the request for the user context hash as early as possible. + * enabled?: bool, // Default: false + * match?: array{ + * matcher_service?: scalar|null, // Service id of a request matcher that tells whether the request is a context hash request. // Default: "fos_http_cache.user_context.request_matcher" + * accept?: scalar|null, // Specify the accept HTTP header used for context hash requests. // Default: "application/vnd.fos.user-context-hash" + * method?: scalar|null, // Specify the HTTP method used for context hash requests. // Default: null + * }, + * hash_cache_ttl?: scalar|null, // Cache the response for the hash for the specified number of seconds. Setting this to 0 will not cache those responses at all. // Default: 0 + * always_vary_on_context_hash?: bool, // Whether to always add the user context hash header name in the response Vary header. // Default: true + * user_identifier_headers?: list, + * session_name_prefix?: scalar|null, // Prefix for session cookies. Must match your PHP session configuration. Set to false to ignore the session in user context. // Default: false + * user_hash_header?: scalar|null, // Name of the header that contains the hash information for the context. // Default: "X-User-Context-Hash" + * role_provider?: bool, // Whether to enable a provider that automatically adds all roles of the current user to the context. // Default: false + * logout_handler?: bool|array{ + * enabled?: true|false|"auto", // Whether to enable the user context logout handler. // Default: "auto" + * }, + * }, + * flash_message?: bool|array{ // Activate the flash message listener that puts flash messages into a cookie. + * enabled?: bool, // Default: false + * name?: scalar|null, // Name of the cookie to set for flashes. // Default: "flashes" + * path?: scalar|null, // Cookie path validity. // Default: "/" + * host?: scalar|null, // Cookie host name validity. // Default: null + * secure?: scalar|null, // Whether the cookie should only be transmitted over a secure HTTPS connection from the client. // Default: false + * }, + * test?: array{ + * cache_header?: scalar|null, // HTTP cache hit/miss header // Default: "X-Cache" + * proxy_server?: array{ // Configure how caching proxy will be run in your tests + * default?: "varnish"|"nginx", // If you configure more than one proxy server, specify which client is the default. + * varnish?: array{ + * config_file: scalar|null, + * binary?: scalar|null, // Default: "varnishd" + * port?: int, // Default: 6181 + * ip?: scalar|null, // Default: "127.0.0.1" + * }, + * nginx?: array{ + * config_file: scalar|null, + * binary?: scalar|null, // Default: "nginx" + * port?: int, // Default: 8080 + * ip?: scalar|null, // Default: "127.0.0.1" + * }, + * }, + * }, + * debug?: bool|array{ + * enabled?: bool, // Whether to send a debug header with the response to trigger a caching proxy to send debug information. If not set, defaults to kernel.debug. // Default: true + * header?: scalar|null, // The header to send if debug is true. // Default: "X-Cache-Debug" + * }, + * } + * @psalm-type GesdinetJwtRefreshTokenConfig = array{ + * ttl?: int, // The default TTL for all authenticators. // Default: 2592000 + * ttl_update?: bool, // The default update TTL flag for all authenticators. // Default: false + * firewall?: scalar|null, // Deprecated: The "firewall" node is deprecated without replacement. // Default: "api" + * user_provider?: scalar|null, // Deprecated: The "user_provider" node is deprecated without replacement. // Default: null + * user_identity_field?: scalar|null, // Deprecated: The "user_identity_field" node is deprecated without replacement. // Default: "username" + * manager_type?: scalar|null, // Set the type of object manager to use (default: orm) // Default: "orm" + * refresh_token_class?: scalar|null, // Set the refresh token class to use (default: Gesdinet\JWTRefreshTokenBundle\Entity\RefreshToken) // Default: null + * object_manager?: scalar|null, // Set the object manager to use (default: doctrine.orm.entity_manager) // Default: null + * user_checker?: scalar|null, // Deprecated: The "user_checker" node is deprecated without replacement. // Default: "security.user_checker" + * refresh_token_entity?: scalar|null, // Deprecated: The "refresh_token_entity" node is deprecated, use the "refresh_token_class" node instead. // Set the refresh token class to use (default: Gesdinet\JWTRefreshTokenBundle\Entity\RefreshToken) // Default: null + * entity_manager?: scalar|null, // Deprecated: The "entity_manager" node is deprecated, use the "object_manager" node instead. // Set the entity manager to use // Default: null + * single_use?: scalar|null, // When true, generate a new refresh token on consumption (deleting the old one) // Default: false + * token_parameter_name?: scalar|null, // The default request parameter name containing the refresh token for all authenticators. // Default: "refresh_token" + * doctrine_mappings?: bool, // Deprecated: The "doctrine_mappings" node is deprecated without replacement. // When true, resolving of Doctrine mapping is done automatically to use either ORM or ODM object manager // Default: true + * cookie?: bool|array{ + * enabled?: bool, // Default: false + * same_site?: "none"|"lax"|"strict", // Default: "lax" + * path?: scalar|null, // Default: "/" + * domain?: scalar|null, // Default: null + * http_only?: scalar|null, // Default: true + * secure?: scalar|null, // Default: true + * partitioned?: scalar|null, // Default: false + * remove_token_from_body?: scalar|null, // Default: true + * }, + * logout_firewall?: scalar|null, // Name of the firewall that triggers the logout event to hook into (default: api) // Default: "api" + * return_expiration?: scalar|null, // When true, the response will include the token expiration timestamp // Default: false + * return_expiration_parameter_name?: scalar|null, // The default response parameter name containing the refresh token expiration timestamp // Default: "refresh_token_expiration" + * } + * @psalm-type MakerConfig = array{ + * root_namespace?: scalar|null, // Default: "App" + * generate_final_classes?: bool, // Default: true + * generate_final_entities?: bool, // Default: false + * } + * @psalm-type ConfigType = array{ + * imports?: ImportsConfig, + * parameters?: ParametersConfig, + * services?: ServicesConfig, + * framework?: FrameworkConfig, + * security?: SecurityConfig, + * twig?: TwigConfig, + * doctrine?: DoctrineConfig, + * api_platform?: ApiPlatformConfig, + * nelmio_cors?: NelmioCorsConfig, + * doctrine_migrations?: DoctrineMigrationsConfig, + * monolog?: MonologConfig, + * stof_doctrine_extensions?: StofDoctrineExtensionsConfig, + * lexik_jwt_authentication?: LexikJwtAuthenticationConfig, + * exercise_html_purifier?: ExerciseHtmlPurifierConfig, + * knpu_oauth2_client?: KnpuOauth2ClientConfig, + * sentry?: SentryConfig, + * twig_extra?: TwigExtraConfig, + * fos_http_cache?: FosHttpCacheConfig, + * gesdinet_jwt_refresh_token?: GesdinetJwtRefreshTokenConfig, + * "when@dev"?: array{ + * imports?: ImportsConfig, + * parameters?: ParametersConfig, + * services?: ServicesConfig, + * framework?: FrameworkConfig, + * security?: SecurityConfig, + * twig?: TwigConfig, + * doctrine?: DoctrineConfig, + * api_platform?: ApiPlatformConfig, + * nelmio_cors?: NelmioCorsConfig, + * web_profiler?: WebProfilerConfig, + * maker?: MakerConfig, + * doctrine_migrations?: DoctrineMigrationsConfig, + * monolog?: MonologConfig, + * debug?: DebugConfig, + * stof_doctrine_extensions?: StofDoctrineExtensionsConfig, + * lexik_jwt_authentication?: LexikJwtAuthenticationConfig, + * nelmio_alice?: NelmioAliceConfig, + * fidry_alice_data_fixtures?: FidryAliceDataFixturesConfig, + * hautelook_alice?: HautelookAliceConfig, + * exercise_html_purifier?: ExerciseHtmlPurifierConfig, + * knpu_oauth2_client?: KnpuOauth2ClientConfig, + * sentry?: SentryConfig, + * twig_extra?: TwigExtraConfig, + * fos_http_cache?: FosHttpCacheConfig, + * gesdinet_jwt_refresh_token?: GesdinetJwtRefreshTokenConfig, + * }, + * "when@prod"?: array{ + * imports?: ImportsConfig, + * parameters?: ParametersConfig, + * services?: ServicesConfig, + * framework?: FrameworkConfig, + * security?: SecurityConfig, + * twig?: TwigConfig, + * doctrine?: DoctrineConfig, + * api_platform?: ApiPlatformConfig, + * nelmio_cors?: NelmioCorsConfig, + * doctrine_migrations?: DoctrineMigrationsConfig, + * monolog?: MonologConfig, + * stof_doctrine_extensions?: StofDoctrineExtensionsConfig, + * lexik_jwt_authentication?: LexikJwtAuthenticationConfig, + * exercise_html_purifier?: ExerciseHtmlPurifierConfig, + * knpu_oauth2_client?: KnpuOauth2ClientConfig, + * sentry?: SentryConfig, + * twig_extra?: TwigExtraConfig, + * fos_http_cache?: FosHttpCacheConfig, + * gesdinet_jwt_refresh_token?: GesdinetJwtRefreshTokenConfig, + * }, + * "when@test"?: array{ + * imports?: ImportsConfig, + * parameters?: ParametersConfig, + * services?: ServicesConfig, + * framework?: FrameworkConfig, + * security?: SecurityConfig, + * twig?: TwigConfig, + * doctrine?: DoctrineConfig, + * api_platform?: ApiPlatformConfig, + * nelmio_cors?: NelmioCorsConfig, + * web_profiler?: WebProfilerConfig, + * doctrine_migrations?: DoctrineMigrationsConfig, + * monolog?: MonologConfig, + * debug?: DebugConfig, + * stof_doctrine_extensions?: StofDoctrineExtensionsConfig, + * lexik_jwt_authentication?: LexikJwtAuthenticationConfig, + * nelmio_alice?: NelmioAliceConfig, + * fidry_alice_data_fixtures?: FidryAliceDataFixturesConfig, + * hautelook_alice?: HautelookAliceConfig, + * exercise_html_purifier?: ExerciseHtmlPurifierConfig, + * knpu_oauth2_client?: KnpuOauth2ClientConfig, + * sentry?: SentryConfig, + * twig_extra?: TwigExtraConfig, + * fos_http_cache?: FosHttpCacheConfig, + * gesdinet_jwt_refresh_token?: GesdinetJwtRefreshTokenConfig, + * }, + * ..., + * }> + * } + */ +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; + } +}