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

  TYPO3\CMS\Lowlevel\:
    resource: '../Classes/*'

  lowlevel.configuration.module.provider.confvars:
    class: 'TYPO3\CMS\Lowlevel\ConfigurationModuleProvider\GlobalVariableProvider'
    tags:
      - name: 'lowlevel.configuration.module.provider'
        identifier: 'confVars'
        label: 'lowlevel.messages:typo3ConfVars'
        globalVariableKey: 'TYPO3_CONF_VARS'
        before: 'tca'

  lowlevel.configuration.module.provider.tca:
    class: 'TYPO3\CMS\Lowlevel\ConfigurationModuleProvider\GlobalVariableProvider'
    tags:
      - name: 'lowlevel.configuration.module.provider'
        identifier: 'tca'
        label: 'lowlevel.messages:tca'
        globalVariableKey: 'TCA'
        before: 'services'
        after: 'confVars'

  lowlevel.configuration.module.provider.services:
    class: 'TYPO3\CMS\Lowlevel\ConfigurationModuleProvider\GlobalVariableProvider'
    tags:
      - name: 'lowlevel.configuration.module.provider'
        identifier: 'services'
        label: 'lowlevel.messages:t3services'
        globalVariableKey: 'T3_SERVICES'
        before: 'userSettings'
        after: 'tca'

  lowlevel.configuration.module.provider.usersettings:
    class: 'TYPO3\CMS\Lowlevel\ConfigurationModuleProvider\GlobalVariableProvider'
    tags:
      - name: 'lowlevel.configuration.module.provider'
        identifier: 'userSettings'
        label: 'lowlevel.messages:usersettings'
        globalVariableKey: 'TYPO3_USER_SETTINGS'
        before: 'pagesTypes'
        after: 'services'

  lowlevel.configuration.module.provider.pagestypes:
    class: 'TYPO3\CMS\Lowlevel\ConfigurationModuleProvider\PageDoktypeProvider'
    tags:
      - name: 'lowlevel.configuration.module.provider'
        identifier: 'pagesTypes'
        label: 'lowlevel.messages:pagesTypes'
        before: 'beUserUc'
        after: 'userSettings'

  lowlevel.configuration.module.provider.beuseruc:
    class: 'TYPO3\CMS\Lowlevel\ConfigurationModuleProvider\BackendUserSettingsProvider'
    tags:
      - name: 'lowlevel.configuration.module.provider'
        identifier: 'beUserUc'
        label: 'lowlevel.messages:beUser'
        before: 'beUserTsConfig'
        after: 'pagesTypes'

  lowlevel.configuration.module.provider.beusertsconfig:
    class: 'TYPO3\CMS\Lowlevel\ConfigurationModuleProvider\BackendUserTsConfigProvider'
    tags:
      - name: 'lowlevel.configuration.module.provider'
        identifier: 'beUserTsConfig'
        label: 'lowlevel.messages:beUserTsConfig'
        before: 'beRoutes'
        after: 'beUserUc'

  lowlevel.configuration.module.provider.backendroutes:
    class: 'TYPO3\CMS\Lowlevel\ConfigurationModuleProvider\BackendRoutesProvider'
    tags:
      - name: 'lowlevel.configuration.module.provider'
        identifier: 'beRoutes'
        label: 'lowlevel.messages:routes'
        before: 'backendModules'
        after: 'beUserTsConfig'

  lowlevel.configuration.module.provider.backendModules:
    class: 'TYPO3\CMS\Lowlevel\ConfigurationModuleProvider\BackendModuleProvider'
    tags:
      - name: 'lowlevel.configuration.module.provider'
        identifier: 'backendModules'
        label: 'lowlevel.messages:backendModules'
        before: 'httpMiddlewareStacks'
        after: 'beRoutes'

  lowlevel.configuration.module.provider.httpmiddlewarestacks:
    class: 'TYPO3\CMS\Lowlevel\ConfigurationModuleProvider\HttpMiddlewareStackProvider'
    tags:
      - name: 'lowlevel.configuration.module.provider'
        identifier: 'httpMiddlewareStacks'
        label: 'lowlevel.messages:httpMiddlewareStacks'
        before: 'sitesTcaConfiguration'
        after: 'backendModules'

  lowlevel.configuration.module.provider.contentsecuritypolicymutationsprovider:
    class: 'TYPO3\CMS\Lowlevel\ConfigurationModuleProvider\ContentSecurityPolicyMutationsProvider'
    tags:
      - name: 'lowlevel.configuration.module.provider'
        identifier: 'contentSecurityPolicyMutations'
        label: 'lowlevel.messages:contentSecurityPolicyMutations'
        before: 'softReferenceParsers'
        after: 'httpMiddlewareStacks'

  lowlevel.configuration.module.provider.sitestcaconfiguration:
    class: 'TYPO3\CMS\Lowlevel\ConfigurationModuleProvider\SitesTcaConfigurationProvider'
    tags:
      - name: 'lowlevel.configuration.module.provider'
        identifier: 'sitesTcaConfiguration'
        label: 'lowlevel.messages:sitesTcaConfiguration'
        before: 'sitesYamlConfiguration'
        after: 'contentSecurityPolicyMutations'

  lowlevel.configuration.module.provider.sitesyamlconfiguration:
    class: 'TYPO3\CMS\Lowlevel\ConfigurationModuleProvider\SitesYamlConfigurationProvider'
    tags:
      - name: 'lowlevel.configuration.module.provider'
        identifier: 'sitesYamlConfiguration'
        label: 'lowlevel.messages:sitesYamlConfiguration'
        before: 'eventListeners'
        after: 'sitesTcaConfiguration'

  lowlevel.configuration.module.provider.eventlisteners:
    class: 'TYPO3\CMS\Lowlevel\ConfigurationModuleProvider\EventListenersProvider'
    tags:
      - name: 'lowlevel.configuration.module.provider'
        identifier: 'eventListeners'
        label: 'lowlevel.messages:eventListeners'
        before: 'mfaProviders'
        after: 'sitesYamlConfiguration'

  lowlevel.configuration.module.provider.mfaproviders:
    class: 'TYPO3\CMS\Lowlevel\ConfigurationModuleProvider\MfaProvidersProvider'
    tags:
      - name: 'lowlevel.configuration.module.provider'
        identifier: 'mfaProviders'
        label: 'lowlevel.messages:mfaProviders'
        before: 'softReferenceParsers'
        after: 'eventListeners'

  lowlevel.configuration.module.provider.softreferenceparsers:
    class: 'TYPO3\CMS\Lowlevel\ConfigurationModuleProvider\SoftReferenceParsersProvider'
    tags:
      - name: 'lowlevel.configuration.module.provider'
        identifier: 'softReferenceParsers'
        label: 'lowlevel.messages:softReferenceParsers'
        before: 'toolbaritems'
        after: 'mfaproviders'

  lowlevel.configuration.module.provider.toolbaritems:
    class: 'TYPO3\CMS\Lowlevel\ConfigurationModuleProvider\ToolbarItemsProvider'
    tags:
      - name: 'lowlevel.configuration.module.provider'
        identifier: 'toolbaritems'
        label: 'lowlevel.messages:toolbarItems'
        after: 'softReferenceParsers'

  lowlevel.configuration.module.provider.expressionlanguage:
    class: 'TYPO3\CMS\Lowlevel\ConfigurationModuleProvider\SymfonyExpressionLanguageProvidersProvider'
    tags:
      - name: 'lowlevel.configuration.module.provider'
        identifier: 'symfonyExpressionLanguage'
        label: 'lowlevel.messages:symfonyExpressionLanguage'
        after: 'toolbaritems'

  lowlevel.configuration.module.provider.doctrine-driver-middlewares:
    class: 'TYPO3\CMS\Lowlevel\ConfigurationModuleProvider\ConnectionDriverMiddlewaresProvider'
    tags:
      - name: 'lowlevel.configuration.module.provider'
        identifier: 'doctrineDbalDriverMiddlewares'
        label: 'lowlevel.messages:doctrineDbalDriverMiddlewares'
        after: 'expressionlanguage'

  lowlevel.configuration.module.provider.translation-domain-list:
    class: 'TYPO3\CMS\Lowlevel\ConfigurationModuleProvider\TranslationDomainListProvider'
    tags:
      - name: 'lowlevel.configuration.module.provider'
        identifier: 'translationDomainList'
        label: 'lowlevel.messages:translationDomainList'
        after: 'expressionlanguage'
