diff --git a/.github/workflows/code_checks.yaml b/.github/workflows/code_checks.yaml index 2c82bf4e..55b991da 100644 --- a/.github/workflows/code_checks.yaml +++ b/.github/workflows/code_checks.yaml @@ -6,7 +6,7 @@ on: ["push", "pull_request"] jobs: js-tests: name: "JS Tests" - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 steps: - name: Checkout uses: actions/checkout@v3 @@ -20,7 +20,7 @@ jobs: cd Resources && npm run test phpunit: name: "PHP ${{ matrix.php }} + ${{ matrix.dependencies }} dependencies + Symfony ${{ matrix.symfony }}" - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 strategy: fail-fast: false matrix: diff --git a/DependencyInjection/FOSJsRoutingExtension.php b/DependencyInjection/FOSJsRoutingExtension.php index aac5d86a..533346a5 100644 --- a/DependencyInjection/FOSJsRoutingExtension.php +++ b/DependencyInjection/FOSJsRoutingExtension.php @@ -18,7 +18,7 @@ use Symfony\Component\DependencyInjection\Alias; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Extension\Extension; -use Symfony\Component\DependencyInjection\Loader\XmlFileLoader; +use Symfony\Component\DependencyInjection\Loader\PhpFileLoader; /** * @author William DURAND @@ -31,14 +31,14 @@ public function load(array $configs, ContainerBuilder $container): void $configuration = new Configuration(); $config = $processor->processConfiguration($configuration, $configs); - $loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config')); - $loader->load('services.xml'); - $loader->load('controllers.xml'); + $loader = new PhpFileLoader($container, new FileLocator(__DIR__.'/../Resources/config')); + $loader->load('services.php'); + $loader->load('controllers.php'); if (isset($config['serializer'])) { $container->setAlias('fos_js_routing.serializer', new Alias($config['serializer'], false)); } else { - $loader->load('serializer.xml'); + $loader->load('serializer.php'); } $container->setAlias( diff --git a/Resources/config/controllers.php b/Resources/config/controllers.php new file mode 100644 index 00000000..a02ae4ea --- /dev/null +++ b/Resources/config/controllers.php @@ -0,0 +1,32 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\DependencyInjection\Loader\Configurator; + +use FOS\JsRoutingBundle\Controller\Controller; + +return static function (ContainerConfigurator $containerConfigurator): void { + $containerConfigurator->parameters() + ->set('fos_js_routing.controller.class', Controller::class); + + $containerConfigurator->services() + ->set('fos_js_routing.controller', '%fos_js_routing.controller.class%') + ->public() + ->args([ + service('fos_js_routing.routes_response'), + service('fos_js_routing.serializer'), + service('fos_js_routing.extractor'), + param('fos_js_routing.cache_control'), + param('kernel.debug'), + ]); +}; diff --git a/Resources/config/controllers.xml b/Resources/config/controllers.xml deleted file mode 100644 index 5413804a..00000000 --- a/Resources/config/controllers.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - FOS\JsRoutingBundle\Controller\Controller - - - - - - - %fos_js_routing.cache_control% - %kernel.debug% - - - diff --git a/Resources/config/serializer.php b/Resources/config/serializer.php new file mode 100644 index 00000000..e35a8c88 --- /dev/null +++ b/Resources/config/serializer.php @@ -0,0 +1,49 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\DependencyInjection\Loader\Configurator; + +use FOS\JsRoutingBundle\Serializer\Denormalizer\RouteCollectionDenormalizer; +use FOS\JsRoutingBundle\Serializer\Normalizer\RouteCollectionNormalizer; +use FOS\JsRoutingBundle\Serializer\Normalizer\RoutesResponseNormalizer; +use Symfony\Component\Serializer\Encoder\JsonEncoder; +use Symfony\Component\Serializer\Serializer; + +return static function (ContainerConfigurator $containerConfigurator): void { + $containerConfigurator->parameters() + ->set('fos_js_routing.normalizer.route_collection.class', RouteCollectionNormalizer::class) + ->set('fos_js_routing.normalizer.routes_response.class', RoutesResponseNormalizer::class) + ->set('fos_js_routing.denormalizer.route_collection.class', RouteCollectionDenormalizer::class); + + $containerConfigurator->services() + ->set('fos_js_routing.serializer', Serializer::class) + ->public() + ->args([ + [ + service('fos_js_routing.normalizer.route_collection'), + service('fos_js_routing.normalizer.routes_response'), + service('fos_js_routing.denormalizer.route_collection'), + ], + [ + 'json' => service('fos_js_routing.encoder'), + ], + ]) + + ->set('fos_js_routing.normalizer.route_collection', '%fos_js_routing.normalizer.route_collection.class%') + + ->set('fos_js_routing.normalizer.routes_response', '%fos_js_routing.normalizer.routes_response.class%') + + ->set('fos_js_routing.denormalizer.route_collection', '%fos_js_routing.denormalizer.route_collection.class%') + + ->set('fos_js_routing.encoder', JsonEncoder::class); +}; diff --git a/Resources/config/serializer.xml b/Resources/config/serializer.xml deleted file mode 100644 index 8b749eaa..00000000 --- a/Resources/config/serializer.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - FOS\JsRoutingBundle\Serializer\Normalizer\RouteCollectionNormalizer - FOS\JsRoutingBundle\Serializer\Normalizer\RoutesResponseNormalizer - - FOS\JsRoutingBundle\Serializer\Denormalizer\RouteCollectionDenormalizer - - - - - - - - - - - - - - - - - - - - - - diff --git a/Resources/config/services.php b/Resources/config/services.php new file mode 100644 index 00000000..7f6e5de6 --- /dev/null +++ b/Resources/config/services.php @@ -0,0 +1,55 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\DependencyInjection\Loader\Configurator; + +use FOS\JsRoutingBundle\Command\DumpCommand; +use FOS\JsRoutingBundle\Command\RouterDebugExposedCommand; +use FOS\JsRoutingBundle\Extractor\ExposedRoutesExtractor; +use FOS\JsRoutingBundle\Response\RoutesResponse; + +return static function (ContainerConfigurator $containerConfigurator): void { + $containerConfigurator->parameters() + ->set('fos_js_routing.extractor.class', ExposedRoutesExtractor::class) + ->set('fos_js_routing.routes_response.class', RoutesResponse::class); + + $containerConfigurator->services() + ->set('fos_js_routing.extractor', '%fos_js_routing.extractor.class%') + ->public() + ->args([ + service('fos_js_routing.router'), + abstract_arg('routes to expose'), + param('kernel.cache_dir'), + param('kernel.bundles'), + ]) + + ->set('fos_js_routing.routes_response', '%fos_js_routing.routes_response.class%') + ->public() + + ->set('fos_js_routing.dump_command', DumpCommand::class) + ->tag('console.command') + ->args([ + service('fos_js_routing.routes_response'), + service('fos_js_routing.extractor'), + service('fos_js_routing.serializer'), + param('kernel.project_dir'), + param('fos_js_routing.request_context_base_url'), + ]) + + ->set('fos_js_routing.router_debug_exposed_command', RouterDebugExposedCommand::class) + ->tag('console.command') + ->args([ + service('fos_js_routing.extractor'), + service('router'), + ]); +}; diff --git a/Resources/config/services.xml b/Resources/config/services.xml deleted file mode 100644 index cd71b95c..00000000 --- a/Resources/config/services.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - FOS\JsRoutingBundle\Extractor\ExposedRoutesExtractor - FOS\JsRoutingBundle\Response\RoutesResponse - - - - - - - %kernel.cache_dir% - %kernel.bundles% - - - - - - - %kernel.project_dir% - %fos_js_routing.request_context_base_url% - - - - - - - - -