getTSConfig(). */ #[Autoconfigure(public: true)] final readonly class UserTsConfigFactory { public function __construct( private ContainerInterface $container, private TokenizerInterface $tokenizer, private TsConfigTreeBuilder $tsConfigTreeBuilder, #[Autowire(service: 'cache.typoscript')] private PhpFrontend $cache, ) {} public function create(BackendUserAuthentication $backendUser): UserTsConfig { $includeTreeTraverserConditionVerdictAware = new ConditionVerdictAwareIncludeTreeTraverser(); $includeTreeTraverserConditionVerdictAwareVisitors = []; $userTsConfigTree = $this->tsConfigTreeBuilder->getUserTsConfigTree($backendUser, $this->tokenizer, $this->cache); $conditionMatcherVisitor = GeneralUtility::makeInstance(IncludeTreeConditionMatcherVisitor::class); // User TSconfig is not within page context, that what page TSconfig is for, so 'page', 'pageId', // 'rootLine' and 'tree' can not be used in user TSconfig conditions. There is no request, either. $conditionMatcherVisitor->initializeExpressionMatcherWithVariables([ 'page' => [], 'pageId' => 0, ]); $includeTreeTraverserConditionVerdictAwareVisitors[] = $conditionMatcherVisitor; $astBuilderVisitor = $this->container->get(IncludeTreeAstBuilderVisitor::class); $includeTreeTraverserConditionVerdictAwareVisitors[] = $astBuilderVisitor; $includeTreeTraverserConditionVerdictAware->traverse($userTsConfigTree, $includeTreeTraverserConditionVerdictAwareVisitors); return new UserTsConfig($astBuilderVisitor->getAst()); } }