services:
  _defaults:
    autowire: true
    autoconfigure: true
    public: false

  TYPO3\CMS\Frontend\:
    resource: '../Classes/*'
    # glob for services that have been previously available as
    # container entries and have been removed in the mean time
    # (e.g. because factories are to be used instead)
    exclude: '../Classes/{Frontend/Controller/TypoScriptFrontendController.php}'

  TYPO3\CMS\Frontend\Middleware\ContentSecurityPolicyHeaders:
    arguments:
      $cache: '@cache.assets'

  TYPO3\CMS\Frontend\Controller\ShowImageController:
    public: true

  TYPO3\CMS\Frontend\ContentObject\ContentDataProcessor:
    public: true

  TYPO3\CMS\Frontend\ContentObject\ContentObjectFactory:
    public: true
    arguments: [!tagged_locator { tag: 'frontend.contentobject', index_by: 'identifier' }]

  TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer:
    public: true
    shared: false
    arguments:
      $typoScriptFrontendController: null

  TYPO3\CMS\Frontend\ContentObject\Exception\ProductionExceptionHandler:
    public: true
    shared: false

  TYPO3\CMS\Frontend\DataProcessing\DataProcessorRegistry:
    arguments: [!tagged_locator { tag: 'data.processor', index_by: 'identifier' }]

  TYPO3\CMS\Frontend\Resource\PublicUrlPrefixer:
    public: true

  TYPO3\CMS\Frontend\Aspect\FileMetadataOverlayAspect:
    tags:
      - name: event.listener
        identifier: 'typo3-frontend/overlay'
        method: 'languageAndWorkspaceOverlay'

  TYPO3\CMS\Frontend\Html\HtmlWorker:
    public: true

  TYPO3\CMS\Frontend\Typolink\LinkResultFactory:
    public: true
    alias: TYPO3\CMS\Frontend\Typolink\LinkFactory

  TYPO3\CMS\Frontend\Cache\CacheLifetimeCalculator:
    public: true
    arguments:
      $runtimeCache: '@cache.runtime'

  # Register all available content objects
  TYPO3\CMS\Frontend\ContentObject\TextContentObject:
    tags:
      - name: frontend.contentobject
        identifier: 'TEXT'

  TYPO3\CMS\Frontend\ContentObject\CaseContentObject:
    tags:
      - name: frontend.contentobject
        identifier: 'CASE'

  TYPO3\CMS\Frontend\ContentObject\ContentObjectArrayContentObject:
    tags:
      - name: frontend.contentobject
        identifier: 'COA'

  TYPO3\CMS\Frontend\ContentObject\ContentObjectArrayInternalContentObject:
    tags:
      - name: frontend.contentobject
        identifier: 'COA_INT'

  TYPO3\CMS\Frontend\ContentObject\UserContentObject:
    tags:
      - name: frontend.contentobject
        identifier: 'USER'

  TYPO3\CMS\Frontend\ContentObject\UserInternalContentObject:
    tags:
      - name: frontend.contentobject
        identifier: 'USER_INT'

  TYPO3\CMS\Frontend\ContentObject\FilesContentObject:
    tags:
      - name: frontend.contentobject
        identifier: 'FILES'

  TYPO3\CMS\Frontend\ContentObject\ImageContentObject:
    tags:
      - name: frontend.contentobject
        identifier: 'IMAGE'

  TYPO3\CMS\Frontend\ContentObject\ImageResourceContentObject:
    tags:
      - name: frontend.contentobject
        identifier: 'IMG_RESOURCE'

  TYPO3\CMS\Frontend\ContentObject\ContentContentObject:
    tags:
      - name: frontend.contentobject
        identifier: 'CONTENT'

  TYPO3\CMS\Frontend\ContentObject\RecordsContentObject:
    tags:
      - name: frontend.contentobject
        identifier: 'RECORDS'

  TYPO3\CMS\Frontend\ContentObject\HierarchicalMenuContentObject:
    tags:
      - name: frontend.contentobject
        identifier: 'HMENU'

  TYPO3\CMS\Frontend\ContentObject\LoadRegisterContentObject:
    tags:
      - name: frontend.contentobject
        identifier: 'LOAD_REGISTER'

  TYPO3\CMS\Frontend\ContentObject\RestoreRegisterContentObject:
    tags:
      - name: frontend.contentobject
        identifier: 'RESTORE_REGISTER'

  TYPO3\CMS\Frontend\ContentObject\FluidTemplateContentObject:
    tags:
      - name: frontend.contentobject
        identifier: 'FLUIDTEMPLATE'

  TYPO3\CMS\Frontend\ContentObject\ScalableVectorGraphicsContentObject:
    tags:
      - name: frontend.contentobject
        identifier: 'SVG'

  TYPO3\CMS\Frontend\Typolink\LinkFactory:
    public: true
    arguments:
      $runtimeCache: '@cache.runtime'

  TYPO3\CMS\Frontend\DataProcessing\CommaSeparatedValueProcessor:
    tags:
      - { name: 'data.processor', identifier: 'comma-separated-value' }

  TYPO3\CMS\Frontend\DataProcessing\DatabaseQueryProcessor:
    public: true
    tags:
      - { name: 'data.processor', identifier: 'database-query' }

  TYPO3\CMS\Frontend\DataProcessing\FilesProcessor:
    tags:
      - { name: 'data.processor', identifier: 'files' }

  TYPO3\CMS\Frontend\DataProcessing\FlexFormProcessor:
    tags:
      - { name: 'data.processor', identifier: 'flex-form' }

  TYPO3\CMS\Frontend\DataProcessing\GalleryProcessor:
    shared: false
    tags:
      - { name: 'data.processor', identifier: 'gallery' }

  TYPO3\CMS\Frontend\DataProcessing\LanguageMenuProcessor:
    shared: false
    tags:
      - { name: 'data.processor', identifier: 'language-menu' }

  TYPO3\CMS\Frontend\DataProcessing\MenuProcessor:
    public: true
    shared: false
    tags:
      - { name: 'data.processor', identifier: 'menu' }

  TYPO3\CMS\Frontend\DataProcessing\SiteLanguageProcessor:
    tags:
      - { name: 'data.processor', identifier: 'site-language' }

  TYPO3\CMS\Frontend\DataProcessing\SiteProcessor:
    tags:
      - { name: 'data.processor', identifier: 'site' }

  TYPO3\CMS\Frontend\DataProcessing\SplitProcessor:
    tags:
      - { name: 'data.processor', identifier: 'split' }
