diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php
index c00fa4d1..5d9f3554 100644
--- a/.php-cs-fixer.dist.php
+++ b/.php-cs-fixer.dist.php
@@ -53,13 +53,13 @@ return (new Config())
'yield_from',
],
],
- 'braces' => [
- 'allow_single_line_anonymous_class_with_empty_body' => true,
- 'allow_single_line_closure' => true,
- 'position_after_anonymous_constructs' => 'same',
- 'position_after_control_structures' => 'next',
- 'position_after_functions_and_oop_constructs' => 'next',
- ],
+// 'braces' => [
+// 'allow_single_line_anonymous_class_with_empty_body' => true,
+// 'allow_single_line_closure' => true,
+// 'position_after_anonymous_constructs' => 'same',
+// 'position_after_control_structures' => 'next',
+// 'position_after_functions_and_oop_constructs' => 'next',
+// ],
'cast_spaces' => ['space' => 'single'],
'class_attributes_separation' => [
'elements' => [
@@ -93,7 +93,16 @@ return (new Config())
'compact_nullable_typehint' => true,
'concat_space' => ['spacing' => 'one'],
'constant_case' => ['case' => 'upper'],
+ 'control_structure_braces' => true,
'control_structure_continuation_position' => ['position' => 'next_line'],
+ 'curly_braces_position' => [
+ 'allow_single_line_anonymous_functions' => true,
+ 'allow_single_line_empty_anonymous_classes' => true,
+ 'anonymous_functions_opening_brace' => 'same_line',
+ 'classes_opening_brace' => 'next_line_unless_newline_at_signature_end',
+ 'control_structures_opening_brace' => 'next_line_unless_newline_at_signature_end',
+ 'functions_opening_brace' => 'next_line_unless_newline_at_signature_end',
+ ],
'date_time_immutable' => false,
'declare_equal_normalize' => ['space' => 'none'],
'declare_parentheses' => true,
@@ -108,7 +117,7 @@ return (new Config())
'long_function' => 'echo',
'shorten_simple_statements_only' => false,
],
- 'elseif' => true,
+ 'elseif' => false,
'empty_loop_body' => ['style' => 'braces'],
'empty_loop_condition' => ['style' => 'while'],
'encoding' => true,
@@ -429,8 +438,8 @@ return (new Config())
'single_line_comment_style' => ['comment_types' => ['asterisk', 'hash']],
'single_line_throw' => false,
'single_quote' => ['strings_containing_single_quote_chars' => false],
- 'single_space_after_construct' => [
- 'constructs' => [
+ 'single_space_around_construct' => [
+ 'constructs_followed_by_a_single_space' => [
'abstract',
'as',
'attribute',
@@ -493,6 +502,7 @@ return (new Config())
'space_after_semicolon' => ['remove_in_empty_for_expressions' => true],
'standardize_increment' => true,
'standardize_not_equals' => true,
+ 'statement_indentation' => true,
'static_lambda' => true,
'strict_comparison' => true,
'strict_param' => true,
diff --git a/composer.json b/composer.json
index c248eff0..5e16500a 100644
--- a/composer.json
+++ b/composer.json
@@ -13,8 +13,8 @@
"autoload": {
"files": [
"src/Ion/functions.php",
- "src/AnimeClient/constants.php",
- "src/AnimeClient/AnimeClient.php"
+ "src/AnimeClient.php",
+ "src/AnimeClient/constants.php"
],
"psr-4": {
"Aviat\\": "src/"
diff --git a/src/AnimeClient/AnimeClient.php b/src/AnimeClient.php
similarity index 98%
rename from src/AnimeClient/AnimeClient.php
rename to src/AnimeClient.php
index ca5e53d7..5655d5eb 100644
--- a/src/AnimeClient/AnimeClient.php
+++ b/src/AnimeClient.php
@@ -18,7 +18,7 @@ use Amp\Http\Client\{HttpClient, HttpClientBuilder, Request, Response};
use Aviat\Ion\{ConfigInterface, ImageBuilder};
use DateTimeImmutable;
-use Psr\SimpleCache\CacheInterface;
+use Psr\SimpleCache\{CacheInterface, InvalidArgumentException};
use Throwable;
use Yosymfony\Toml\{Toml, TomlBuilder};
@@ -218,7 +218,7 @@ function getResponse(Request|string $request): Response
*/
function getLocalImg(string $kitsuUrl, bool $webp = TRUE): string
{
- if (empty($kitsuUrl) || ( ! is_string($kitsuUrl)))
+ if (empty($kitsuUrl))
{
return 'images/placeholder.webp';
}
@@ -276,6 +276,7 @@ function colNotEmpty(array $search, string $key): bool
/**
* Clear the cache, but save user auth data
+ * @throws InvalidArgumentException
*/
function clearCache(CacheInterface $cache): bool
{
diff --git a/src/AnimeClient/API/APIRequestBuilder.php b/src/AnimeClient/API/APIRequestBuilder.php
index 3e194206..4cce68d2 100644
--- a/src/AnimeClient/API/APIRequestBuilder.php
+++ b/src/AnimeClient/API/APIRequestBuilder.php
@@ -16,16 +16,14 @@ namespace Aviat\AnimeClient\API;
// use Amp\Http\Client\Form;
use Amp\Http\Client\Body\FormBody;
-use Amp\Http\Client\HttpClientBuilder;
-use Amp\Http\Client\HttpException;
-use Amp\Http\Client\Request;
+use Amp\Http\Client\{HttpClientBuilder, HttpException, Request};
use Aviat\Ion\Json;
-use Error;
use InvalidArgumentException;
use Psr\Log\LoggerAwareTrait;
use Throwable;
-use TypeError;
+// use function Amp\async;
+// use function Amp\Future\await;
use function Amp\Promise\wait;
use function Aviat\AnimeClient\getResponse;
use const Aviat\AnimeClient\USER_AGENT;
@@ -221,8 +219,6 @@ abstract class APIRequestBuilder
/**
* Get the data from the response of the passed request
*
- * @param Request $request
- * @return mixed
* @throws Throwable
*/
public function getResponseData(Request $request): mixed
diff --git a/src/AnimeClient/API/AbstractListItem.php b/src/AnimeClient/API/AbstractListItem.php
index 02a37178..8b866e03 100644
--- a/src/AnimeClient/API/AbstractListItem.php
+++ b/src/AnimeClient/API/AbstractListItem.php
@@ -38,7 +38,6 @@ abstract class AbstractListItem
* Retrieve a list item
*
* @param string $id - The id of the list item
- * @return mixed[]
*/
abstract public function get(string $id): array;
diff --git a/src/AnimeClient/API/CacheTrait.php b/src/AnimeClient/API/CacheTrait.php
index b6f91419..745808be 100644
--- a/src/AnimeClient/API/CacheTrait.php
+++ b/src/AnimeClient/API/CacheTrait.php
@@ -14,7 +14,7 @@
namespace Aviat\AnimeClient\API;
-use Psr\SimpleCache\CacheInterface;
+use Psr\SimpleCache\{CacheInterface, InvalidArgumentException};
/**
* Helper methods for dealing with the Cache
@@ -44,6 +44,7 @@ trait CacheTrait
/**
* Get the cached value if it exists, otherwise set the cache value
* and return it.
+ * @throws InvalidArgumentException
*/
public function getCached(string $key, callable $primer, ?array $primeArgs = []): mixed
{
diff --git a/src/AnimeClient/API/Kitsu/RequestBuilder.php b/src/AnimeClient/API/Kitsu/RequestBuilder.php
index 204bedee..ef9db924 100644
--- a/src/AnimeClient/API/Kitsu/RequestBuilder.php
+++ b/src/AnimeClient/API/Kitsu/RequestBuilder.php
@@ -16,7 +16,6 @@ namespace Aviat\AnimeClient\API\Kitsu;
use Amp\Http\Client\{Request, Response};
use Aviat\AnimeClient\API\APIRequestBuilder;
-use Aviat\AnimeClient\Enum\EventType;
use Aviat\AnimeClient\Kitsu as K;
use Aviat\Ion\Di\{ContainerAware, ContainerInterface};
use Aviat\Ion\{Event, Json, JsonException};
diff --git a/src/AnimeClient/API/Kitsu/Transformer/MangaTransformer.php b/src/AnimeClient/API/Kitsu/Transformer/MangaTransformer.php
index 668e08e1..980d9fdb 100644
--- a/src/AnimeClient/API/Kitsu/Transformer/MangaTransformer.php
+++ b/src/AnimeClient/API/Kitsu/Transformer/MangaTransformer.php
@@ -54,7 +54,7 @@ final class MangaTransformer extends AbstractTransformer
}
$details = $rawCharacter['character'];
- if (array_key_exists($details['id'], (array)$characters[$type]))
+ if (array_key_exists($details['id'], (array) $characters[$type]))
{
$characters[$type][$details['id']] = [
'image' => Kitsu::getImage($details),
diff --git a/src/AnimeClient/API/ParallelAPIRequest.php b/src/AnimeClient/API/ParallelAPIRequest.php
index ab66c3cf..a3b43123 100644
--- a/src/AnimeClient/API/ParallelAPIRequest.php
+++ b/src/AnimeClient/API/ParallelAPIRequest.php
@@ -14,11 +14,12 @@
namespace Aviat\AnimeClient\API;
-use Amp\Http\Client\Request;
+use Amp\Http\Client\{HttpException, Request};
use Generator;
use Throwable;
use function Amp\call;
+// use function Amp\Future\{async, await};
use function Amp\Promise\{all, wait};
use function Aviat\AnimeClient\getApiClient;
@@ -65,9 +66,23 @@ final class ParallelAPIRequest
* Make the requests, and return the body for each
*
* @throws Throwable
- * @return mixed[]
*/
public function makeRequests(): array
+ {
+ return $this->makeRequestOld();
+ }
+
+ /**
+ * Make the requests and return the response objects
+ *
+ * @throws Throwable
+ */
+ public function getResponses(): array
+ {
+ return $this->getResponsesOld();
+ }
+
+ private function makeRequestOld(): array
{
$client = getApiClient();
@@ -84,13 +99,19 @@ final class ParallelAPIRequest
return wait(all($promises));
}
- /**
- * Make the requests and return the response objects
- *
- * @throws Throwable
- * @return mixed[]
- */
- public function getResponses(): array
+ private function makeRequestsNew(): array
+ {
+ $futures = [];
+
+ foreach ($this->requests as $key => $url)
+ {
+ $futures[$key] = async(static fn () => self::bodyHandler($url));
+ }
+
+ return await($futures);
+ }
+
+ private function getResponsesOld(): array
{
$client = getApiClient();
@@ -103,4 +124,41 @@ final class ParallelAPIRequest
return wait(all($promises));
}
+
+ private function getResponsesNew(): array
+ {
+ $futures = [];
+
+ foreach ($this->requests as $key => $url)
+ {
+ $futures[$key] = async(static fn () => self::responseHandler($url));
+ }
+
+ return await($futures);
+ }
+
+ private static function bodyHandler(string|Request $uri): string
+ {
+ $client = getApiClient();
+
+ if (is_string($uri))
+ {
+ $uri = new Request($uri);
+ }
+ $response = $client->request($uri);
+
+ return $response->getBody()->buffer();
+ }
+
+ private static function responseHandler(string|Request $uri)
+ {
+ $client = getApiClient();
+
+ if (is_string($uri))
+ {
+ $uri = new Request($uri);
+ }
+
+ return $client->request($uri);
+ }
}
diff --git a/src/AnimeClient/Controller.php b/src/AnimeClient/Controller.php
index f10e0647..52e09f9e 100644
--- a/src/AnimeClient/Controller.php
+++ b/src/AnimeClient/Controller.php
@@ -120,194 +120,185 @@ class Controller
Event::on(EventType::RESET_CACHE_KEY, fn (string $key) => $this->cache->delete($key));
}
- /**
- * Set the current url in the session as the target of a future redirect
- *
- * @throws ContainerException
- * @throws NotFoundException
- */
- #[\PHPUnit\Framework\Attributes\CodeCoverageIgnore]
- public function setSessionRedirect(?string $url = NULL): void
- {
- $serverParams = $this->request->getServerParams();
+ /**
+ * Set the current url in the session as the target of a future redirect
+ *
+ * @throws ContainerException
+ * @throws NotFoundException
+ */
+ public function setSessionRedirect(?string $url = NULL): void
+ {
+ $serverParams = $this->request->getServerParams();
- if ( ! array_key_exists('HTTP_REFERER', $serverParams))
- {
- return;
- }
+ if ( ! array_key_exists('HTTP_REFERER', $serverParams))
+ {
+ return;
+ }
- $util = $this->container->get('util');
- $doubleFormPage = $serverParams['HTTP_REFERER'] === $this->request->getUri();
- $isLoginPage = str_contains($serverParams['HTTP_REFERER'], 'login');
+ $util = $this->container->get('util');
+ $doubleFormPage = $serverParams['HTTP_REFERER'] === $this->request->getUri();
+ $isLoginPage = str_contains($serverParams['HTTP_REFERER'], 'login');
- // Don't attempt to set the redirect url if
- // the page is one of the form type pages,
- // and the previous page is also a form type
- if ($doubleFormPage || $isLoginPage)
- {
- return;
- }
+ // Don't attempt to set the redirect url if
+ // the page is one of the form type pages,
+ // and the previous page is also a form type
+ if ($doubleFormPage || $isLoginPage)
+ {
+ return;
+ }
- if (NULL === $url)
- {
- $url = $util->isViewPage()
- ? (string) $this->request->getUri()
- : $serverParams['HTTP_REFERER'];
- }
+ if (NULL === $url)
+ {
+ $url = $util->isViewPage()
+ ? (string) $this->request->getUri()
+ : $serverParams['HTTP_REFERER'];
+ }
- $this->session->set('redirect_url', $url);
- }
+ $this->session->set('redirect_url', $url);
+ }
- /**
- * Redirect to the url previously set in the session
- *
- * If one is not set, redirect to default url
- *
- * @throws InvalidArgumentException
- */
- #[\PHPUnit\Framework\Attributes\CodeCoverageIgnore]
- public function sessionRedirect(): void
- {
- $target = $this->session->get('redirect_url') ?? '/';
+ /**
+ * Redirect to the url previously set in the session
+ *
+ * If one is not set, redirect to default url
+ *
+ * @throws InvalidArgumentException
+ */
+ public function sessionRedirect(): void
+ {
+ $target = $this->session->get('redirect_url') ?? '/';
- $this->redirect($target, 303);
- $this->session->set('redirect_url', NULL);
- }
+ $this->redirect($target, 303);
+ $this->session->set('redirect_url', NULL);
+ }
- /**
- * Check if the current user is authenticated, else error and exit
- */
- #[\PHPUnit\Framework\Attributes\CodeCoverageIgnore]
- protected function checkAuth(): void
- {
- if ( ! $this->auth->isAuthenticated())
- {
- $this->errorPage(
- 403,
- 'Forbidden',
- 'You must log in to perform this action.'
- );
- }
- }
+ /**
+ * Check if the current user is authenticated, else error and exit
+ */
+ protected function checkAuth(): void
+ {
+ if ( ! $this->auth->isAuthenticated())
+ {
+ $this->errorPage(
+ 403,
+ 'Forbidden',
+ 'You must log in to perform this action.'
+ );
+ }
+ }
- /**
- * Get the string output of a partial template
- */
- #[\PHPUnit\Framework\Attributes\CodeCoverageIgnore]
- protected function loadPartial(HtmlView $view, string $template, array $data = []): string
- {
- $router = $this->container->get('dispatcher');
+ /**
+ * Get the string output of a partial template
+ */
+ protected function loadPartial(HtmlView $view, string $template, array $data = []): string
+ {
+ $router = $this->container->get('dispatcher');
- if (isset($this->baseData))
- {
- $data = array_merge($this->baseData, $data);
- }
+ if (isset($this->baseData))
+ {
+ $data = array_merge($this->baseData, $data);
+ }
- $route = $router->getRoute();
- $data['route_path'] = $route !== FALSE ? $route->path : '';
+ $route = $router->getRoute();
+ $data['route_path'] = $route !== FALSE ? $route->path : '';
- $templatePath = _dir($this->config->get('view_path'), "{$template}.php");
+ $templatePath = _dir($this->config->get('view_path'), "{$template}.php");
- if ( ! is_file($templatePath))
- {
- throw new InvalidArgumentException("Invalid template : {$template}");
- }
+ if ( ! is_file($templatePath))
+ {
+ throw new InvalidArgumentException("Invalid template : {$template}");
+ }
- return $view->renderTemplate($templatePath, $data);
- }
+ return $view->renderTemplate($templatePath, $data);
+ }
- /**
- * Render a template with header and footer
- */
- #[\PHPUnit\Framework\Attributes\CodeCoverageIgnore]
- protected function renderFullPage(HtmlView $view, string $template, array $data): HtmlView
- {
- $csp = [
- "default-src 'self' media.kitsu.io kitsu-production-media.s3.us-west-002.backblazeb2.com",
- "object-src 'none'",
- "child-src 'self' *.youtube.com polyfill.io",
- ];
+ /**
+ * Render a template with header and footer
+ */
+ protected function renderFullPage(HtmlView $view, string $template, array $data): HtmlView
+ {
+ $csp = [
+ "default-src 'self' media.kitsu.io kitsu-production-media.s3.us-west-002.backblazeb2.com",
+ "object-src 'none'",
+ "child-src 'self' *.youtube.com polyfill.io",
+ ];
- $view->addHeader('Content-Security-Policy', implode('; ', $csp));
- $view->appendOutput($this->loadPartial($view, 'header', $data));
+ $view->addHeader('Content-Security-Policy', implode('; ', $csp));
+ $view->appendOutput($this->loadPartial($view, 'header', $data));
- if (array_key_exists('message', $data) && is_array($data['message']))
- {
- $view->appendOutput($this->loadPartial($view, 'message', $data['message']));
- }
+ if (array_key_exists('message', $data) && is_array($data['message']))
+ {
+ $view->appendOutput($this->loadPartial($view, 'message', $data['message']));
+ }
- $view->appendOutput($this->loadPartial($view, $template, $data));
- $view->appendOutput($this->loadPartial($view, 'footer', $data));
+ $view->appendOutput($this->loadPartial($view, $template, $data));
+ $view->appendOutput($this->loadPartial($view, 'footer', $data));
- return $view;
- }
+ return $view;
+ }
- /**
- * 404 action
- *
- * @throws InvalidArgumentException
- */
- #[\PHPUnit\Framework\Attributes\CodeCoverageIgnore]
- public function notFound(
- string $title = 'Sorry, page not found',
- string $message = 'Page Not Found'
- ): never {
- $this->outputHTML('404', [
- 'title' => $title,
- 'message' => $message,
- ], NULL, 404);
+ /**
+ * 404 action
+ *
+ * @throws InvalidArgumentException
+ */
+ public function notFound(
+ string $title = 'Sorry, page not found',
+ string $message = 'Page Not Found'
+ ): never {
+ $this->outputHTML('404', [
+ 'title' => $title,
+ 'message' => $message,
+ ], NULL, 404);
- exit();
- }
+ exit();
+ }
- /**
- * Display a generic error page
- *
- * @throws InvalidArgumentException
- */
- #[\PHPUnit\Framework\Attributes\CodeCoverageIgnore]
- public function errorPage(int $httpCode, string $title, string $message, string $longMessage = ''): void
- {
- $this->outputHTML('error', [
- 'title' => $title,
- 'message' => $message,
- 'long_message' => $longMessage,
- ], NULL, $httpCode);
- }
+ /**
+ * Display a generic error page
+ *
+ * @throws InvalidArgumentException
+ */
+ public function errorPage(int $httpCode, string $title, string $message, string $longMessage = ''): void
+ {
+ $this->outputHTML('error', [
+ 'title' => $title,
+ 'message' => $message,
+ 'long_message' => $longMessage,
+ ], NULL, $httpCode);
+ }
- /**
- * Redirect to the default controller/url from an empty path
- *
- * @throws InvalidArgumentException
- */
- #[\PHPUnit\Framework\Attributes\CodeCoverageIgnore]
- public function redirectToDefaultRoute(): void
- {
- $defaultType = $this->config->get('default_list');
- $this->redirect($this->urlGenerator->defaultUrl($defaultType), 303);
- }
+ /**
+ * Redirect to the default controller/url from an empty path
+ *
+ * @throws InvalidArgumentException
+ */
+ public function redirectToDefaultRoute(): void
+ {
+ $defaultType = $this->config->get('default_list');
+ $this->redirect($this->urlGenerator->defaultUrl($defaultType), 303);
+ }
- /**
- * Set a session flash variable to display a message on
- * next page load
- */
- #[\PHPUnit\Framework\Attributes\CodeCoverageIgnore]
- public function setFlashMessage(string $message, string $type = 'info'): void
- {
- static $messages;
+ /**
+ * Set a session flash variable to display a message on
+ * next page load
+ */
+ public function setFlashMessage(string $message, string $type = 'info'): void
+ {
+ static $messages;
- if ( ! $messages)
- {
- $messages = [];
- }
+ if ( ! $messages)
+ {
+ $messages = [];
+ }
- $messages[] = [
- 'message_type' => $type,
- 'message' => $message,
- ];
+ $messages[] = [
+ 'message_type' => $type,
+ 'message' => $message,
+ ];
- $this->session->setFlash('message', $messages);
- }
+ $this->session->setFlash('message', $messages);
+ }
/**
* Helper for consistent page titles
@@ -319,62 +310,58 @@ class Controller
return implode(' · ', $parts);
}
- /**
- * Add a message box to the page
- *
- * @throws InvalidArgumentException
- */
- #[\PHPUnit\Framework\Attributes\CodeCoverageIgnore]
- protected function showMessage(HtmlView $view, string $type, string $message): string
- {
- return $this->loadPartial($view, 'message', [
- 'message_type' => $type,
- 'message' => $message,
- ]);
- }
+ /**
+ * Add a message box to the page
+ *
+ * @throws InvalidArgumentException
+ */
+ protected function showMessage(HtmlView $view, string $type, string $message): string
+ {
+ return $this->loadPartial($view, 'message', [
+ 'message_type' => $type,
+ 'message' => $message,
+ ]);
+ }
- /**
- * Output a template to HTML, using the provided data
- *
- * @throws InvalidArgumentException
- */
- #[\PHPUnit\Framework\Attributes\CodeCoverageIgnore]
- protected function outputHTML(string $template, array $data = [], ?HtmlView $view = NULL, int $code = 200): void
- {
- if (NULL === $view)
- {
- $view = new HtmlView($this->container);
- }
+ /**
+ * Output a template to HTML, using the provided data
+ *
+ * @throws InvalidArgumentException
+ */
+ protected function outputHTML(string $template, array $data = [], ?HtmlView $view = NULL, int $code = 200): void
+ {
+ if (NULL === $view)
+ {
+ $view = new HtmlView($this->container);
+ }
- $view->setStatusCode($code);
- $this->renderFullPage($view, $template, $data)->send();
- }
+ $view->setStatusCode($code);
+ $this->renderFullPage($view, $template, $data)->send();
+ }
- /**
- * Output a JSON Response
- *
- * @param int $code - the http status code
- * @throws DoubleRenderException
- */
- #[\PHPUnit\Framework\Attributes\CodeCoverageIgnore]
- protected function outputJSON(mixed $data, int $code): void
- {
- JsonView::new()
- ->setOutput($data)
- ->setStatusCode($code)
- ->send();
- }
+ /**
+ * Output a JSON Response
+ *
+ * @param int $code - the http status code
+ * @throws DoubleRenderException
+ */
+ protected function outputJSON(mixed $data, int $code): void
+ {
+ JsonView::new()
+ ->setOutput($data)
+ ->setStatusCode($code)
+ ->send();
+ }
- /**
- * Redirect to the selected page
- */
- #[\PHPUnit\Framework\Attributes\CodeCoverageIgnore]
- protected function redirect(string $url, int $code): void
- {
- HttpView::new()
- ->redirect($url, $code)
- ->send();
- }
+ /**
+ * Redirect to the selected page
+ */
+ protected function redirect(string $url, int $code): void
+ {
+ HttpView::new()
+ ->redirect($url, $code)
+ ->send();
+ }
}
// End of BaseController.php
diff --git a/src/AnimeClient/Dispatcher.php b/src/AnimeClient/Dispatcher.php
index 97ad2a52..31721d2c 100644
--- a/src/AnimeClient/Dispatcher.php
+++ b/src/AnimeClient/Dispatcher.php
@@ -214,8 +214,6 @@ final class Dispatcher extends RoutingBase
/**
* Get the list of controllers in the default namespace
- *
- * @return array
*/
public function getControllerList(): array
{
diff --git a/src/AnimeClient/UrlGenerator.php b/src/AnimeClient/UrlGenerator.php
index 337250ef..def45928 100644
--- a/src/AnimeClient/UrlGenerator.php
+++ b/src/AnimeClient/UrlGenerator.php
@@ -98,9 +98,7 @@ class UrlGenerator extends RoutingBase
if ($defaultPath !== NULL)
{
- // @codeCoverageIgnoreStart
return $this->url("{$type}/{$defaultPath}");
- // @codeCoverageIgnoreEnd
}
throw new InvalidArgumentException("Invalid default type: '{$type}'");
diff --git a/src/Ion/Json.php b/src/Ion/Json.php
index 781c77ea..b39df121 100644
--- a/src/Ion/Json.php
+++ b/src/Ion/Json.php
@@ -25,10 +25,7 @@ class Json
/**
* Encode data in json format
*
- * @param mixed $data
- * @param int $options
* @param int<1, max> $depth
- * @return string
*/
public static function encode(mixed $data, int $options = 0, int $depth = 512): string
{
@@ -57,11 +54,7 @@ class Json
/**
* Decode data from json
*
- * @param string|null $json
- * @param bool $assoc
* @param int<1, max> $depth
- * @param int $options
- * @return mixed
*/
public static function decode(?string $json, bool $assoc = TRUE, int $depth = 512, int $options = 0): mixed
{
@@ -81,11 +74,7 @@ class Json
/**
* Decode json data loaded from the passed filename
*
- * @param string $filename
- * @param bool $assoc
* @param int<1, max> $depth
- * @param int $options
- * @return mixed
*/
public static function decodeFile(string $filename, bool $assoc = TRUE, int $depth = 512, int $options = 0): mixed
{
diff --git a/src/Ion/Type/Stringy.php b/src/Ion/Type/Stringy.php
index 8e4c40a6..54eaea05 100644
--- a/src/Ion/Type/Stringy.php
+++ b/src/Ion/Type/Stringy.php
@@ -2138,7 +2138,7 @@ abstract class Stringy implements Countable, IteratorAggregate, ArrayAccess
return mb_regex_encoding(...$args);
}
- return null;
+ return NULL;
}
protected function supportsEncoding(): bool|null
diff --git a/tests/Ion/ConfigTest.php b/tests/Ion/ConfigTest.php
index c32d9010..910be9dd 100644
--- a/tests/Ion/ConfigTest.php
+++ b/tests/Ion/ConfigTest.php
@@ -15,8 +15,7 @@
namespace Aviat\Ion\Tests;
use Aviat\Ion\Config;
-use PHPUnit\Framework\Attributes\DataProvider;
-use PHPUnit\Framework\Attributes\IgnoreMethodForCodeCoverage;
+use PHPUnit\Framework\Attributes\{DataProvider, IgnoreMethodForCodeCoverage};
/**
* @internal
diff --git a/tests/Ion/Type/StringTypeTest.php b/tests/Ion/Type/StringTypeTest.php
index 1a762153..247d6669 100644
--- a/tests/Ion/Type/StringTypeTest.php
+++ b/tests/Ion/Type/StringTypeTest.php
@@ -15,11 +15,8 @@
namespace Aviat\Ion\Tests\Type;
use Aviat\Ion\Tests\IonTestCase;
-use Aviat\Ion\Type\StringType;
-use Aviat\Ion\Type\Stringy;
-use PHPUnit\Framework\Attributes\DataProvider;
-use PHPUnit\Framework\Attributes\IgnoreClassForCodeCoverage;
-use PHPUnit\Framework\Attributes\Test;
+use Aviat\Ion\Type\{StringType, Stringy};
+use PHPUnit\Framework\Attributes\{DataProvider, IgnoreClassForCodeCoverage, Test};
/**
* @internal
diff --git a/tests/Ion/functionsTest.php b/tests/Ion/functionsTest.php
index 1d77b2f8..51fb2203 100644
--- a/tests/Ion/functionsTest.php
+++ b/tests/Ion/functionsTest.php
@@ -14,8 +14,7 @@
namespace Aviat\Ion\Tests;
-use PHPUnit\Framework\Attributes\IgnoreClassForCodeCoverage;
-use PHPUnit\Framework\Attributes\Test;
+use PHPUnit\Framework\Attributes\{IgnoreClassForCodeCoverage, Test};
use PHPUnit\Framework\TestCase;
use function Aviat\Ion\_dir;