<?php declare(strict_types=1);

return function (\Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator $configurator): void {
    $services = $configurator->services();
    $services->defaults()
        ->autowire()
        ->autoconfigure();

    $configurator->parameters()->set("frontend.index_follow", "%env(FRONTEND_INDEX_FOLLOW)%");

    $services->load('App\\', '../src/')
        ->exclude([
            '../src/{DependencyInjection,Entity,Kernel.php}', // System excludes
        ]);

    $services->set(\App\Engine\Templating\ViteExtension::class)
        ->tag('twig.extension')
        ->arg("\$rootDir", "%kernel.project_dir%")
        ->arg("\$appVueViteUrl", \Symfony\Component\DependencyInjection\Loader\Configurator\env("APP_VUE_VITE_URL")->string());

    $services->set(\App\Engine\Admin\Inertia\SystemConfiguration\AdminSystemConfigurationProvider::class);
    $services->set(\App\Engine\Admin\Paginator::class);

    $services->set(\App\Doctrine\FilteredDriver::class)
        ->decorate('doctrine.orm.default_metadata_driver')
        ->args([
            \Symfony\Component\DependencyInjection\Loader\Configurator\service('.inner'),
            [\Webauthn\PublicKeyCredentialSource::class],
        ]);

    // Repositories
    $services->set(\App\Engine\AdministratorUser\AdministratorUserRepository::class);
};
