#                                                                        #
# Configuration for the Flow Framework                                   #
#                                                                        #
# This file contains the default base configuration for the Flow         #
# Framework. Don't modify this file but add configuration options to     #
# the Settings.yaml file in the in global Configuration/ directory       #
# instead.                                                               #
#                                                                        #

TYPO3:

  Flow:

    aop:

      # Registers global objects to be evaluated for dynamic pointcut expressions
      globalObjects:

        securityContext: TYPO3\Flow\Security\Context

    compatibility:

      uriBuilder:

        # A compatibility flag that affects the behavior of the UriBuilder when creating relative URIs:
        # TRUE: The UriBuilder creates relative path like "some/path", a base tag is required in the respective HTML head
        # FALSE: The UriBuilder prefixes the path with the scripts request path: "/document/root/some/path", no base tag will be required
        #
        # NOTE: This flag will be obsolete with version 2.2 and removed in version 3.0 of Flow
        createRelativePaths: FALSE

    core:

      # Flow's application context
      # This setting is automatically set by the configuration manager and can't be set manually.
      context: ''

      # Key of the "main" package of the application. This package's meta data is used for displaying the application
      # version and possibly other metadata in the X-Flow-Powered HTTP header, ./flow command line help and where else needed.
      applicationPackageKey: 'TYPO3.Flow'

      # Human-readable name of the "main" package of the application. This name is displayed in the X-Flow-Powered
      # HTTP header, in the ./flow command line help and where else needed.
      applicationName: 'Flow'

      # Path and filename of the PHP binary
      # The constant PHP_BINDIR usually contains the path, but on Windows this doesn't work reliably
      phpBinaryPathAndFilename: '%PHP_BINDIR%/php'

      # optional list of variables (key: value) that will be set for all Flow CLI sub requests
      subRequestEnvironmentVariables: []

      # Set which php.ini file should be used for the CLI sub requests.
      # If not set (that is value equals NULL) the php.ini file of the executing process (usually the web server's) is used.
      # If set to a path and filename, the specified php.ini file is loaded.
      # If set to boolean FALSE, Flow does not try to specify any php.ini file to the sub process.
      subRequestPhpIniPathAndFilename: NULL

      # optional list of INI entries (entry: value) to set for all Flow CLI sub requests.
      # This equals to the -d argument of the php CLI
      # Example:
      # subRequestIniEntries:
      #   'date.timezone': 'UTC'
      subRequestIniEntries: []

    error:

      exceptionHandler:

        # Defines the global, last-resort exception handler.
        # The specified class must implement \TYPO3\Flow\Error\ExceptionHandlerInterface
        className: TYPO3\Flow\Error\ProductionExceptionHandler

        # default options for all rendering groups (see below). Options can be overridden in the respective rendering group
        defaultRenderingOptions:
          renderTechnicalDetails: FALSE
          logException: TRUE

        # Rendering groups can define special renderings depending on status code or class of the
        # thrown exception.
        renderingGroups:

          notFoundExceptions:
            matchingStatusCodes: [404]
            options:
              logException: FALSE
              templatePathAndFilename: 'resource://TYPO3.Flow/Private/Templates/Error/Default.html'
              variables:
                errorDescription: 'Sorry, the page you requested was not found.'

          databaseConnectionExceptions:
            matchingExceptionClassNames: ['TYPO3\Flow\Persistence\Doctrine\Exception\DatabaseException']
            options:
              templatePathAndFilename: 'resource://TYPO3.Flow/Private/Templates/Error/Default.html'
              variables:
                errorDescription: 'Sorry, the database connection couldn''t be established.'

      errorHandler:

        # Defines which errors should result in an exception thrown - all other error
        # levels will be silently ignored. Only errors that can be handled in an
        # user-defined error handler are affected, of course.
        exceptionalErrors: ['%E_USER_ERROR%', '%E_RECOVERABLE_ERROR%']

      debugger:

        # List of regular expressions classes are matched against in the debugger
        # to prevent them from being expanded.
        ignoredClasses:
          'TYPO3\\Flow\\Aop.*': TRUE
          'TYPO3\\Flow\\Cac.*': TRUE
          'TYPO3\\Flow\\Core\\.*': TRUE
          'TYPO3\\Flow\\Con.*': TRUE
          'TYPO3\\Flow\\Http\\RequestHandler': TRUE
          'TYPO3\\Flow\\Uti.*': TRUE
          'TYPO3\\Flow\\Mvc\\Routing.*': TRUE
          'TYPO3\\Flow\\Log.*': TRUE
          'TYPO3\\Flow\\Obj.*': TRUE
          'TYPO3\\Flow\\Pac.*': TRUE
          'TYPO3\\Flow\\Persistence\\(?!Doctrine\\Mapping).*': TRUE
          'TYPO3\\Flow\\Pro.*': TRUE
          'TYPO3\\Flow\\Ref.*': TRUE
          'TYPO3\\Flow\\Sec.*': TRUE
          'TYPO3\\Flow\\Sig.*': TRUE
          'TYPO3\\Flow\\.*ResourceManager': TRUE
          'TYPO3\\Fluid\\.*': TRUE
          '.+Service$': TRUE
          '.+Repository$': TRUE
          'PHPUnit_Framework_MockObject_InvocationMocker': TRUE

    mvc:
      # Defines routes that should be included after existing routes defined in the main Routes.yaml (if any)
      # Note: This only allows to include existing Routes.yaml files from other packages, you can't adjust the routes via Settings.
      #
      # Syntax:
      # 'Some.Package': TRUE
      # 'SomeOther.Package':
      #   position: 'after Some.Package'
      #
      routes: []

    http:

      # Defines the "application token" which is sent by in HTTP Response "X-Flow-Powered" headers.
      #
      # The value can be one of:
      #
      # - "Off" (no application token header is sent)
      # - "ApplicationName" (the application name only, determined via the TYPO3.Flow.core.applicationKey setting)
      # - "MajorVersion" (the application name + major version, e.g. "Neos/2"
      # - "MinorVersion" (the application name + minor version, e.g. "Neos/2.1"
      #
      applicationToken: 'MinorVersion'

      # Defines an explicit base URI that should be used. This affects
      # resource management, routing and all other parts accessing
      # "Http\Request->getBaseUri()".
      #
      # If this setting is NULL, the base URI will be detected from the current
      # request (default).
      baseUri: NULL

      # Defines the workflow of one request from bootstrap to the HTTP response
      #
      # By default this workflow is devided in three sub-chains "preprocess", "process" and "postprocess" but the chain can be restructured as needed
      #
      chain:

        'preprocess':
          position: 'before process'
          chain:
            'trustedProxies':
              position: 'start'
              component: 'TYPO3\Flow\Http\Component\TrustedProxiesComponent'

        'process':
          chain:
            'routing':
              position: 'start'
              component: 'TYPO3\Flow\Mvc\Routing\RoutingComponent'
            'dispatching':
              component: 'TYPO3\Flow\Mvc\DispatchComponent'

        'postprocess':
          chain:
            'standardsCompliance':
              position: 'end'
              component: 'TYPO3\Flow\Http\Component\StandardsComplianceComponent'

      trustedProxies:

        # Defines Proxy servers which are trusted for setting request headers
        # By default all proxies are trusted ('*')
        # If you have some reverse proxies or CDN running in front of your server, you should provide
        # an array list of those servers' addresses or address ranges (in CIDR notation) here.
        #
        # If you do definitely not have any reverse proxy or CDN in front of your server, you should not
        # trust any proxies and set this option to "[]", ie. an empty list.
        #
        # proxies:
        #   - '216.246.40.0/24'
        #   - '216.246.100.0/24'
        proxies: '*'

        # Defines request headers which are trusted from proxies to override important request information
        # Each value can be a single header or a comma separated list of headers
        headers:
          # This is a list mainly for backwards-compatibility. You should only set a single header, e.g. 'X-Forwarded-For'
          clientIp: 'Client-Ip,X-Forwarded-For,X-Forwarded,X-Cluster-Client-Ip,Forwarded-For,Forwarded'
          host: 'X-Forwarded-Host'
          port: 'X-Forwarded-Port'
          proto: 'X-Forwarded-Proto'

    log:

      # Settings for Flow's default loggers
      systemLogger:
        logger: TYPO3\Flow\Log\Logger
        backend: TYPO3\Flow\Log\Backend\FileBackend
        backendOptions:
           logFileURL: '%FLOW_PATH_DATA%Logs/System.log'
           createParentDirectories: TRUE
           severityThreshold: '%LOG_INFO%'
           maximumLogFileSize: 10485760
           logFilesToKeep: 1
           logMessageOrigin: FALSE

      securityLogger:
        backend: TYPO3\Flow\Log\Backend\FileBackend
        backendOptions:
           logFileURL: '%FLOW_PATH_DATA%Logs/Security.log'
           createParentDirectories: TRUE
           severityThreshold: '%LOG_INFO%'
           maximumLogFileSize: 10485760
           logFilesToKeep: 1
           logIpAddress: TRUE

      sqlLogger:
        backend: TYPO3\Flow\Log\Backend\FileBackend
        backendOptions:
          logFileURL: '%FLOW_PATH_DATA%Logs/Query.log'
          createParentDirectories: TRUE
          severityThreshold: '%LOG_INFO%'
          maximumLogFileSize: 10485760
          logFilesToKeep: 1

      i18nLogger:
        backend: TYPO3\Flow\Log\Backend\FileBackend
        backendOptions:
          logFileURL: '%FLOW_PATH_DATA%Logs/I18n.log'
          createParentDirectories: TRUE
          severityThreshold: '%LOG_INFO%'
          maximumLogFileSize: 1048576
          logFilesToKeep: 1

    i18n:

      # The default locale identifier.
      defaultLocale: en

      # The fallback rule to use for locale resolution
      fallbackRule:
        # Strictly use the defined order (without implicit locale fallback)
        strict: FALSE
        # The locales identifiers to use in their desired order
        order: []

      scan:
        # You can list any paths that you want to include in scanning for locales relative to the "Resources"
        # directory of each package. Setting a path to FALSE will skip scanning this folder.
        # Additionally, you can define patterns that you want to further skip inside the scanned paths.
        #
        # Example:
        #   includePaths:
        #     '/Public/': TRUE
        #     '/Private/images/': TRUE
        #   excludePatterns:
        #     '/node_modules/': TRUE
        #
        #   This will scan all of the Public Resources folder, as well as the 'images' sub-folder inside the Private
        #   Resources, except any 'node_modules' sub-folder in either one.
        includePaths:
          '/Public/': TRUE
          '/Private/': TRUE

        excludePatterns:
          '/node_modules/': TRUE
          '/bower_components/': TRUE
          # skip folders starting with a dot (e.g. '.git', '.sass-cache', etc.)
          '/\..*/': TRUE

    object:

      # If enabled, the Object Manager will - additionally to the class files found
      # in the "Classes" directory - also register class files found in the directory
      # "Tests/Functional/". Enabling this feature obviously only makes sense in a
      # testing context.
      registerFunctionalTestClasses: FALSE

      # Explicitly include classes to object management (Reflection and Configuration building).
      # Sequence of package keys with an array of regular expressions.
      # The package key must match the key found in PackageStates.php regarding case.
      #
      # Each regular expression will be tested against the list of fully qualified
      # class names in the package and classes will be included if matching.
      #
      # For Flow packages (type = "typo3-flow-*") this setting is not required as they're
      # reflected by default. You can however exclude specific (or all) classes from Flow packages
      # by specifying corresponding regular expressions that don't match classes to exclude.
      #
      # Note: The previous setting "excludeClasses" has been deprecated with Flow 3.0
      includeClasses: []

    package:

      # This can be used to make packages inactive, even though they would be
      # activated automatically otherwise.
      inactiveByDefault:
        - 'neos.composerplugin'
        - 'Composer.Installers'
      # Option for the PackageManager::Create to map the packagesPath by package type
      packagesPathByType:
        'typo3-flow-package': 'Application'
        'neos-package': 'Application'
        'typo3-flow-framework': 'Framework'
        'neos-framework': 'Framework'

    persistence:

      # Options for the default Doctrine persistence
      backendOptions:
        driver: 'pdo_mysql'
        host: NULL
        dbname: NULL
        user: NULL
        password: NULL
        charset: 'utf8'
      cacheAllQueryResults: FALSE

      doctrine:
        # By default Doctrine proxy compilation is done in the Flow bootstrap
        enable: TRUE
        sqlLogger: NULL
        filters:
          Flow_Security_Entity_Filter: 'TYPO3\Flow\Security\Authorization\Privilege\Entity\Doctrine\SqlFilter'

        # DBAL custom mapping types can be registered here
        dbal:
          mappingTypes:
            'flow_json_array':
              dbType: 'json_array'
              className: 'TYPO3\Flow\Persistence\Doctrine\DataTypes\JsonArrayType'
            'objectarray':
              dbType: 'array'
              className: 'TYPO3\Flow\Persistence\Doctrine\DataTypes\ObjectArray'

        # Doctrine ORM Lifecycle events and their subscribers and listeners.
        # See Flow manual, chapter "Persistence" for further information on how to subscribe to Doctrine events.
        eventSubscribers: []
        eventListeners: []

        # List of regular expressions table names are matched against in the doctrine service
        # to prevent them from creating corresponding migrations.
        #
        # Example:
        # '^autogenerated_.*': TRUE
        # '^acme_package_.*: TRUE
        # (would skip tables starting with "autogenerated_" or "acme_package_" when calling doctrine:migrationgenerate)
        migrations:
          ignoredTables: []

    reflection:

      # A list of tags to be ignored during reflection
      ignoredTags:
        'api': TRUE
        'package': TRUE
        'subpackage': TRUE
        'license': TRUE
        'copyright': TRUE
        'author': TRUE
        'const': TRUE
        'see': TRUE
        'todo': TRUE
        'scope': TRUE
        'fixme': TRUE
        'test': TRUE
        'expectedException': TRUE
        'expectedExceptionMessage': TRUE
        'expectedExceptionCode': TRUE
        'depends': TRUE
        'dataProvider': TRUE
        'group': TRUE
        'codeCoverageIgnore': TRUE
        'requires': TRUE
        'Given': TRUE
        'When': TRUE
        'Then': TRUE
        'BeforeScenario': TRUE
        'AfterScenario': TRUE
        'fixtures': TRUE
        'Isolated': TRUE
        'AfterFeature': TRUE
        'BeforeFeature': TRUE
        'BeforeStep': TRUE
        'AfterStep': TRUE
        'WithoutSecurityChecks': TRUE
        'covers': TRUE

      # If enabled, the Reflection Service notes all incorrect or inconsistent usage
      # of @param annotations in the default log.
      logIncorrectDocCommentHints: FALSE

    resource:

      # A list of filename extensions that must not be uploaded through the resource
      # management.
      uploadExtensionBlacklist: &uploadExtensionBlacklist
        'aspx': TRUE
        'cgi': TRUE
        'php3': TRUE
        'php4': TRUE
        'php5': TRUE
        'phtml': TRUE
        'php': TRUE
        'pl': TRUE
        'py': TRUE
        'pyc': TRUE
        'pyo': TRUE
        'rb': TRUE

      # Definition of resource storages provided by the Flow core.
      # Storages are used for storing and retrieving resources.
      storages:

        #
        defaultPersistentResourcesStorage:
          storage: 'TYPO3\Flow\Resource\Storage\WritableFileSystemStorage'
          storageOptions:
            path: '%FLOW_PATH_DATA%Persistent/Resources/'

        #
        defaultStaticResourcesStorage:
          storage: 'TYPO3\Flow\Resource\Storage\PackageStorage'

      # Definition of the default resource collections.
      # Collections are used to bundle / group static or persistent resources
      # for common processing and publication.
      collections:

        # Collection which contains all static resources
        static:
          storage: 'defaultStaticResourcesStorage'
          target: 'localWebDirectoryStaticResourcesTarget'
          pathPatterns:
            - '*/Resources/Public/*'

        # Collection which contains all persistent resources
        persistent:
          storage: 'defaultPersistentResourcesStorage'
          target: 'localWebDirectoryPersistentResourcesTarget'

      # Definition of the basic resource publication targets.
      targets:

        # Target for publishing static resources to the local web directory
        localWebDirectoryStaticResourcesTarget:
          target: 'TYPO3\Flow\Resource\Target\FileSystemSymlinkTarget'
          targetOptions:
            path: '%FLOW_PATH_WEB%_Resources/Static/Packages/'
            baseUri: '_Resources/Static/Packages/'
            extensionBlacklist: *uploadExtensionBlacklist

            # If the symlinks should be relative instead of absolute
            relativeSymlinks: false

        # Target for publishing persistent resources to the local web directory
        localWebDirectoryPersistentResourcesTarget:
          target: 'TYPO3\Flow\Resource\Target\FileSystemSymlinkTarget'
          targetOptions:
            path: '%FLOW_PATH_WEB%_Resources/Persistent/'
            baseUri: '_Resources/Persistent/'
            extensionBlacklist: *uploadExtensionBlacklist

            # If the generated URI path segment containing the sha1 should be divided into multiple segments (recommended if you expect many resources):
            subdivideHashPathSegment: false

            # If the symlinks should be relative instead of absolute
            relativeSymlinks: false

    security:

      firewall:

        # If set to TRUE, the firewall will reject any request that is not
        # explicitly allowed by a configured request filter.
        rejectAll: FALSE

        # The filter configuration for the firewall. Here is an example configuration array:
        #
        # filters:
        #   'Some.Package:SomeFilter':
        #     pattern: 'Uri'
        #     patternOptions:
        #       'uriPattern': '\/some\/url\/.*'
        #     interceptor:  AccessGrant
        #   'Some.Package:AnotherFilter':
        #     pattern: 'Some\Request\Pattern\ClassName'
        #     patternOptions:
        #       'foo': 'bar'
        #     interceptor:  AccessDeny
        #
        # If the objects are in the namespace "\TYPO3\Flow\Security" it is enough to specify
        # the last name of the class name, e.g. AccessGrant
        filters:
          'TYPO3.Flow:CsrfProtection':
            pattern: 'CsrfProtection'
            interceptor: AccessDeny

      authentication:

        # Array of authentication providers that should be used for authentication.
        # If you define a request pattern, the provider will only be called if the pattern
        # matches the current request. If the objects are in the namespace
        # "\TYPO3\Flow\Security" it is sufficient to specify the last part of the class name,
        # e.g. PersistedUsernamePasswordProvider
        # Note: Authentication will be performed in the given order of the providers.
        # So make sure, that the primary authentication method is the first array entry.
        #
        # You'll need to configure your own authentication provider depending on your use case.
        # Below you find an example which uses simple username/password authentication. In
        # case the user is not logged in, the web redirect entry point, which redirects her
        # to the login action that displays the authentication form.
        #
        #  'AdminInterfaceProvider':
        #    provider: 'PersistedUsernamePasswordProvider'
        #    providerOptions:
        #      fooBar: 'baz'
        #    requestPatterns:
        #      'AdminControllers':
        #        pattern: 'ControllerObjectName'
        #        patternOptions:
        #          'controllerObjectNamePattern': 'TYPO3\Admin\Controller\.*'
        #    entryPoint: 'WebRedirect'
        #    entryPointOptions:
        #      routeValues:
        #        '@package': 'Your.Package'
        #        '@controller': 'Authenticate'
        #        '@action': 'login'
        #        '@format': 'html'
        providers: []

        # One of the available authentication strategies:
        #
        #   "anyToken":
        #     Authenticate as many tokens as possible but do not require
        #     an authenticated token (e.g. for guests with role Everybody).
        #
        #   "allTokens":
        #     Authenticate all active tokens and throw an exception if
        #     an active token could not be authenticated.
        #
        #   "oneToken":
        #     Stop authentication of tokens after first successful
        #     authentication of a token. Requires an authenticated token.
        #
        #   "atLeastOneToken" (default):
        #     Authenticate as many tokens as possible but do not fail if
        #     a token could not be authenticated as long as at least one
        #     token could be authenticated.
        authenticationStrategy: atLeastOneToken

      authorization:
        # If this is set to TRUE access will be granted even if all voters abstain
        allowAccessIfAllVotersAbstain: FALSE

      # "Cross-site request forgery" is an attack method to have authorized users trigger
      # actions without them knowing it. This section is configuring the built-in CSRF
      # protection in Flow.
      csrf:
        # The strategy to use for generating and using the CSRF protection token. Available are
        # onePerSession, onePerUri and onePerRequest.
        csrfStrategy: onePerSession

      cryptography:

        hashingStrategies:

          # The default strategy will be used to hash or validate passwords if no specific strategy is given
          default: bcrypt

          # If a fallback strategy is configured, it will be used to validate passwords without a strategy identifier.
          # This should be configured to the hashing strategy that was used before strategy identifiers were introduced
          # with Flow 1.1 (pbkdf2 by default) to allow for a seamless migration.
          fallback: pbkdf2

          pbkdf2: TYPO3\Flow\Security\Cryptography\Pbkdf2HashingStrategy
          bcrypt: TYPO3\Flow\Security\Cryptography\BCryptHashingStrategy
          saltedmd5: TYPO3\Flow\Security\Cryptography\SaltedMd5HashingStrategy

        Pbkdf2HashingStrategy:

          # Length of the random, dynamic salt that will be stored with the hashed password
          dynamicSaltLength: 8
          # Iteration count, high enough to make brute-force attacks unfeasible, use a custom value!
          iterationCount: 10000
          # Length of the derived key (hashed password) in bytes
          derivedKeyLength: 64
          # Hash function to use for PBKDF2
          algorithm: sha256

        BCryptHashingStrategy:

          # Cost of a BCrypt operation, can be between 4 and 31
          # The faster your machine is, the higher this number should be
          cost: 14

        RSAWalletServicePHP:

          # Path to the file where RSA keys shall be stored
          # Note: This file must not be accessible by the public!
          keystorePath: '%FLOW_PATH_DATA%Persistent/RsaWalletData'

          # Defines the openSSL configuration used for key handling.
          # See the PHP openSSL documentation for possible settings.
          openSSLConfiguration: []

    session:

      # Specifies the number of seconds a user must be idle before the session
      # automatically expires. If set to "0", a session will never expire
      # automatically.
      inactivityTimeout: 3600

      # A specific name for the session, used in the session cookie.
      # The session name must be alphanumerical and must contain at least one
      # character – not only numbers.
      name: 'TYPO3_Flow_Session'

      # Configuration for handling of expired sessions
      garbageCollection:

        # The probability in percent of a session shutdown triggering a garbage
        # collection which removes expired session data from other sessions.
        #
        # Examples:
        #    1    (would be a 1% chance to clean up)
        #   20    (would be a 20% chance to clean up)
        #    0.42 (would be a 0.42 % chance to clean up)
        probability: 1

        # The number of invalid and expired sessions which are removed per garbage
        # collection run.
        maximumPerRun: 1000

      # Configuration for the session cookie:
      cookie:

        # Cookie lifetime in seconds
        # Note that if you want to sessions expire automatically, you should rather
        # set inactivityTimeout to the wanted value. Only in rare cases you'd want
        # some other cookie lifetime than "0".
        lifetime: 0

        # Cookie path: set this if a cookie should be only valid for a subfolder of a domain.
        path: /

        # Force SSL cookies.
        secure: FALSE

        # Allow http access only.
        httponly: TRUE

        # The cookie domain. Use dot notation if cookies should be valid for
        # all subdomains.
        #domain: .domain.com
        domain: NULL

    utility:
      lockStrategyClassName: 'TYPO3\Flow\Utility\Lock\FlockLockStrategy'

  # DocTools is a tool used by Flow Developers to help with a variety of documentation tasks.
  # These settings are only used in generating Documentation.
  DocTools:
    collections:
      'Flow':
        commandReferences:
          - 'Flow:FlowCommands'
        references:
          - 'Flow:FluidViewHelpers'
          - 'Flow:FlowValidators'
          - 'Flow:FlowSignals'
          - 'Flow:FlowTypeConverters'
          - 'Flow:FlowAnnotations'

    commandReferences:
      'Flow:FlowCommands':
        title: 'Flow Command Reference'
        packageKeys:
          - 'TYPO3.Flow'
          - 'TYPO3.Party'
          - 'TYPO3.Fluid'
          - 'TYPO3.Kickstart'
          - 'TYPO3.Welcome'
        savePathAndFilename: '%FLOW_PATH_PACKAGES%Framework/TYPO3.Flow/Documentation/TheDefinitiveGuide/PartV/CommandReference.rst'

    references:
      'Flow:FluidViewHelpers':
        title: 'Fluid ViewHelper Reference'
        savePathAndFilename: '%FLOW_PATH_PACKAGES%Framework/TYPO3.Flow/Documentation/TheDefinitiveGuide/PartV/FluidViewHelperReference.rst'
        affectedClasses:
          parentClassName: 'TYPO3\Fluid\Core\ViewHelper\AbstractViewHelper'
          classNamePattern: '/^TYPO3\\Fluid\\ViewHelpers\\.*$/i'
        parser:
          implementationClassName: 'TYPO3\DocTools\Domain\Service\FluidViewHelperClassParser'
          options:
            namespaces:
              f: 'TYPO3\Fluid\ViewHelpers'
      'Flow:FlowValidators':
        title: 'Flow Validator Reference'
        savePathAndFilename: '%FLOW_PATH_PACKAGES%Framework/TYPO3.Flow/Documentation/TheDefinitiveGuide/PartV/ValidatorReference.rst'
        affectedClasses:
          parentClassName: 'TYPO3\Flow\Validation\Validator\AbstractValidator'
          classNamePattern: '/^TYPO3\\Flow\\Validation\\Validator\\.*$/i'
        parser:
          implementationClassName: 'TYPO3\DocTools\Domain\Service\FlowValidatorClassParser'
      'Flow:FlowSignals':
        title: 'Flow Signals Reference'
        savePathAndFilename: '%FLOW_PATH_PACKAGES%Framework/TYPO3.Flow/Documentation/TheDefinitiveGuide/PartV/SignalsReference.rst'
        affectedClasses:
          classesContainingMethodsAnnotatedWith: 'TYPO3\Flow\Annotations\Signal'
          classNamePattern: '/^TYPO3\\Flow\\.*$/i'
          includeAbstractClasses: TRUE
        parser:
          implementationClassName: 'TYPO3\DocTools\Domain\Service\SignalsParser'
      'Flow:FlowTypeConverters':
        title: 'Flow TypeConverter Reference'
        savePathAndFilename: '%FLOW_PATH_PACKAGES%Framework/TYPO3.Flow/Documentation/TheDefinitiveGuide/PartV/TypeConverterReference.rst'
        affectedClasses:
          parentClassName: 'TYPO3\Flow\Property\TypeConverter\AbstractTypeConverter'
          classNamePattern: '/^TYPO3\\Flow\\.*$/i'
        parser:
          implementationClassName: 'TYPO3\DocTools\Domain\Service\FlowTypeConverterClassParser'
      'Flow:FlowAnnotations':
        title: 'Flow Annotation Reference'
        savePathAndFilename: '%FLOW_PATH_PACKAGES%Framework/TYPO3.Flow/Documentation/TheDefinitiveGuide/PartV/AnnotationReference.rst'
        affectedClasses:
          classNamePattern: '/^TYPO3\\Flow\\Annotations\\.*$/i'
        parser:
          implementationClassName: 'TYPO3\DocTools\Domain\Service\FlowAnnotationClassParser'
