From 45b24644651f20b574b3cbdead811f371e21474c Mon Sep 17 00:00:00 2001 From: Christophe Coevoet Date: Sat, 1 Jul 2023 22:44:00 +0200 Subject: [PATCH] Add more precise types for the Symfony bundle --- .../DependencyInjection/AsyncAwsExtension.php | 76 +++++++++++++++++++ .../AwsPackagesProvider.php | 8 ++ .../src/DependencyInjection/Configuration.php | 7 +- .../Bundle/src/Secrets/CachedEnvVarLoader.php | 9 +++ .../Symfony/Bundle/src/Secrets/SsmVault.php | 9 +++ .../Bundle/src/VarDumper/ResultCaster.php | 14 +++- 6 files changed, 120 insertions(+), 3 deletions(-) diff --git a/src/Integration/Symfony/Bundle/src/DependencyInjection/AsyncAwsExtension.php b/src/Integration/Symfony/Bundle/src/DependencyInjection/AsyncAwsExtension.php index 5aa5a6ff1..475ec2e6e 100644 --- a/src/Integration/Symfony/Bundle/src/DependencyInjection/AsyncAwsExtension.php +++ b/src/Integration/Symfony/Bundle/src/DependencyInjection/AsyncAwsExtension.php @@ -22,6 +22,9 @@ class AsyncAwsExtension extends Extension { + /** + * @param mixed[] $configs + */ public function load(array $configs, ContainerBuilder $container): void { $configuration = new Configuration(); @@ -33,6 +36,33 @@ public function load(array $configs, ContainerBuilder $container): void $this->autowireServices($container, $usedServices); } + /** + * @param array{ + * register_service: bool, + * logger?: string|null, + * http_client?: string|null, + * credential_provider: string|null, + * credential_provider_cache: string|null, + * config: array, + * secrets: array{ + * enabled: bool, + * client: string|null, + * path: string|null, + * recursive: bool, + * cache: array{enabled: bool, pool: string, ttl: int}, + * }, + * clients: array, + * }>, + * } $config + * + * @return array + */ private function registerConfiguredServices(ContainerBuilder $container, array $config): array { $availableServices = AwsPackagesProvider::getAllServices(); @@ -59,6 +89,20 @@ private function registerConfiguredServices(ContainerBuilder $container, array $ return $usedServices; } + /** + * @param array{ + * register_service: bool, + * clients: array, + * logger?: string|null, + * http_client?: string|null, + * credential_provider: string|null, + * credential_provider_cache: string|null, + * config: array, + * } $config + * @param array $usedServices + * + * @return array + */ private function registerInstalledServices(ContainerBuilder $container, array $config, array $usedServices): array { if (!$config['register_service']) { @@ -84,6 +128,17 @@ private function registerInstalledServices(ContainerBuilder $container, array $c return $usedServices; } + /** + * @param array{ + * register_service: bool, + * logger?: string|null, + * http_client?: string|null, + * credential_provider: string|null, + * credential_provider_cache: string|null, + * config: array, + * ... + * } $config + */ private function addServiceDefinition(ContainerBuilder $container, string $name, array $config, string $clientClass): void { if (\array_key_exists('logger', $config)) { @@ -147,6 +202,24 @@ private function addServiceDefinition(ContainerBuilder $container, string $name, $container->setDefinition(sprintf('async_aws.client.%s', $name), $definition); } + /** + * @param array{ + * register_service: bool, + * logger?: string|null, + * http_client?: string|null, + * credential_provider: string|null, + * credential_provider_cache: string|null, + * config: array, + * secrets: array{ + * enabled: bool, + * client: string|null, + * path: string|null, + * recursive: bool, + * cache: array{enabled: bool, pool: string, ttl: int}, + * }, + * clients: array, + * } $config + */ private function registerEnvLoader(ContainerBuilder $container, array $config): void { if (!$config['secrets']['enabled']) { @@ -201,6 +274,9 @@ private function registerEnvLoader(ContainerBuilder $container, array $config): } } + /** + * @param array $usedServices + */ private function autowireServices(ContainerBuilder $container, array $usedServices): void { $awsServices = AwsPackagesProvider::getAllServices(); diff --git a/src/Integration/Symfony/Bundle/src/DependencyInjection/AwsPackagesProvider.php b/src/Integration/Symfony/Bundle/src/DependencyInjection/AwsPackagesProvider.php index 868a8770c..e8724a29c 100644 --- a/src/Integration/Symfony/Bundle/src/DependencyInjection/AwsPackagesProvider.php +++ b/src/Integration/Symfony/Bundle/src/DependencyInjection/AwsPackagesProvider.php @@ -4,8 +4,13 @@ namespace AsyncAws\Symfony\Bundle\DependencyInjection; +use AsyncAws\Core\AbstractApi; + class AwsPackagesProvider { + /** + * @return array, package: string}> + */ public static function getAllServices(): array { return [ @@ -172,6 +177,9 @@ public static function getAllServices(): array ]; } + /** + * @return list + */ public static function getServiceNames(): array { $services = self::getAllServices(); diff --git a/src/Integration/Symfony/Bundle/src/DependencyInjection/Configuration.php b/src/Integration/Symfony/Bundle/src/DependencyInjection/Configuration.php index 9b262f148..b8a012bd5 100644 --- a/src/Integration/Symfony/Bundle/src/DependencyInjection/Configuration.php +++ b/src/Integration/Symfony/Bundle/src/DependencyInjection/Configuration.php @@ -63,7 +63,12 @@ public function getConfigTreeBuilder(): TreeBuilder return $treeBuilder; } - private static function validateType(?array $clients) + /** + * @param null|array $clients + * + * @return array + */ + private static function validateType(?array $clients): array { if (null === $clients) { return []; diff --git a/src/Integration/Symfony/Bundle/src/Secrets/CachedEnvVarLoader.php b/src/Integration/Symfony/Bundle/src/Secrets/CachedEnvVarLoader.php index bc9576c34..60aaeb564 100644 --- a/src/Integration/Symfony/Bundle/src/Secrets/CachedEnvVarLoader.php +++ b/src/Integration/Symfony/Bundle/src/Secrets/CachedEnvVarLoader.php @@ -8,10 +8,19 @@ class CachedEnvVarLoader implements EnvVarLoaderInterface { + /** + * @var EnvVarLoaderInterface + */ private $decorated; + /** + * @var CacheInterface + */ private $cache; + /** + * @var int + */ private $ttl; public function __construct(EnvVarLoaderInterface $decorated, CacheInterface $cache, int $ttl) diff --git a/src/Integration/Symfony/Bundle/src/Secrets/SsmVault.php b/src/Integration/Symfony/Bundle/src/Secrets/SsmVault.php index 37e00763a..ef00d1fd4 100644 --- a/src/Integration/Symfony/Bundle/src/Secrets/SsmVault.php +++ b/src/Integration/Symfony/Bundle/src/Secrets/SsmVault.php @@ -8,10 +8,19 @@ class SsmVault implements EnvVarLoaderInterface { + /** + * @var SsmClient + */ private $client; + /** + * @var string + */ private $path; + /** + * @var bool + */ private $recursive; public function __construct(SsmClient $client, ?string $path, bool $recursive) diff --git a/src/Integration/Symfony/Bundle/src/VarDumper/ResultCaster.php b/src/Integration/Symfony/Bundle/src/VarDumper/ResultCaster.php index 0986e2f3e..6938ff110 100644 --- a/src/Integration/Symfony/Bundle/src/VarDumper/ResultCaster.php +++ b/src/Integration/Symfony/Bundle/src/VarDumper/ResultCaster.php @@ -9,7 +9,12 @@ class ResultCaster { - public static function castResult(Result $result, array $a, Stub $stub, bool $isNested) + /** + * @param array $a + * + * @return array + */ + public static function castResult(Result $result, array $a, Stub $stub, bool $isNested): array { foreach (["\0AsyncAws\\Core\\Result\0httpClient", "\0AsyncAws\\Core\\Result\0response", "\0AsyncAws\\Core\\Result\0prefetchResults", Caster::PREFIX_PROTECTED . 'awsClient', Caster::PREFIX_PROTECTED . 'input'] as $k) { if (\array_key_exists($k, $a)) { @@ -21,7 +26,12 @@ public static function castResult(Result $result, array $a, Stub $stub, bool $is return $a; } - public static function castWaiter(Waiter $waiter, array $a, Stub $stub, bool $isNested) + /** + * @param array $a + * + * @return array + */ + public static function castWaiter(Waiter $waiter, array $a, Stub $stub, bool $isNested): array { foreach (["\0AsyncAws\\Core\\Waiter\0httpClient", "\0AsyncAws\\Core\\Waiter\0response", Caster::PREFIX_PROTECTED . 'awsClient', Caster::PREFIX_PROTECTED . 'input'] as $k) { if (\array_key_exists($k, $a)) {