Skip to content

Commit

Permalink
Merge pull request #38 from ricventu/fix-phpstan
Browse files Browse the repository at this point in the history
Fix PHPStan errors
  • Loading branch information
freekmurze authored Jan 27, 2025
2 parents 2b2c500 + 8063b2f commit 9810b34
Show file tree
Hide file tree
Showing 19 changed files with 126 additions and 77 deletions.
4 changes: 2 additions & 2 deletions src/PendingRouteTransformers/AddControllerUriToActions.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@
class AddControllerUriToActions implements PendingRouteTransformer
{
/**
* @param Collection<PendingRoute> $pendingRoutes
* @param Collection<int, PendingRoute> $pendingRoutes
*
* @return Collection<PendingRoute>
* @return Collection<int, PendingRoute>
*/
public function transform(Collection $pendingRoutes): Collection
{
Expand Down
26 changes: 15 additions & 11 deletions src/PendingRouteTransformers/AddDefaultRouteName.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,15 @@
class AddDefaultRouteName implements PendingRouteTransformer
{
/**
* @param Collection<PendingRoute> $pendingRoutes
* @param Collection<int, PendingRoute> $pendingRoutes
*
* @return Collection<PendingRoute>
* @return Collection<int, PendingRoute>
*/
public function transform(Collection $pendingRoutes): Collection
{
$pendingRoutes->each(function (PendingRoute $pendingRoute) {
$pendingRoute->actions
->reject(fn (PendingRouteAction $action) => $action->name)
/** @phpstan-ignore-next-line */
->reject(fn (PendingRouteAction $action): bool => (bool)$action->name)
->each(fn (PendingRouteAction $action) => $action->name = $this->generateRouteName($action));
});

Expand All @@ -27,19 +26,24 @@ public function transform(Collection $pendingRoutes): Collection

protected function generateRouteName(PendingRouteAction $pendingRouteAction): string
{
return collect(explode('/', $pendingRouteAction->uri))
/** @var array<int, non-empty-string> $segments */
$segments = collect(explode('/', $pendingRouteAction->uri))
->reject(fn (string $segment) => str_starts_with($segment, '{'))
->filter()
->when(
$this->discoverMethodRouteName($pendingRouteAction),
fn (Collection $collection, $name) => $name != $collection->last() ? $collection->push($name) : $collection
)
->join('.');
->all();

$methodName = $this->discoverMethodRouteName($pendingRouteAction);

if ($methodName !== null && $methodName !== end($segments)) {
$segments[] = $methodName;
}

return implode('.', $segments);
}

/**
* @param PendingRouteAction $pendingRouteAction
* @return string|null
* @return non-empty-string|null
*/
protected function discoverMethodRouteName(PendingRouteAction $pendingRouteAction): ?string
{
Expand Down
13 changes: 8 additions & 5 deletions src/PendingRouteTransformers/HandleDoNotDiscoverAttribute.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,18 +10,21 @@
class HandleDoNotDiscoverAttribute implements PendingRouteTransformer
{
/**
* @param Collection<PendingRoute> $pendingRoutes
* @param Collection<int, PendingRoute> $pendingRoutes
*
* @return Collection<PendingRoute>
* @return Collection<int, PendingRoute>
*/
public function transform(Collection $pendingRoutes): Collection
{
return $pendingRoutes
->reject(fn (PendingRoute $pendingRoute) => $pendingRoute->getAttribute(DoNotDiscover::class))
->reject(fn (PendingRoute $pendingRoute): bool => (bool)$pendingRoute->getAttribute(DoNotDiscover::class))
->each(function (PendingRoute $pendingRoute) {
$pendingRoute->actions = $pendingRoute
/** @var Collection<int, PendingRouteAction> $actions */
$actions = $pendingRoute
->actions
->reject(fn (PendingRouteAction $action) => $action->getAttribute(DoNotDiscover::class));
->reject(fn (PendingRouteAction $action): bool => (bool)$action->getAttribute(DoNotDiscover::class));

$pendingRoute->actions = $actions;
});
}
}
13 changes: 11 additions & 2 deletions src/PendingRouteTransformers/HandleDomainAttribute.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,30 @@
namespace Spatie\RouteDiscovery\PendingRouteTransformers;

use Illuminate\Support\Collection;
use Spatie\RouteDiscovery\Attributes\Route;
use Spatie\RouteDiscovery\PendingRoutes\PendingRoute;
use Spatie\RouteDiscovery\PendingRoutes\PendingRouteAction;

class HandleDomainAttribute implements PendingRouteTransformer
{
/**
* @param Collection<int, PendingRoute> $pendingRoutes
* @return Collection<int, PendingRoute>
*/
public function transform(Collection $pendingRoutes): Collection
{
$pendingRoutes->each(function (PendingRoute $pendingRoute) {
$pendingRoute->actions->each(function (PendingRouteAction $action) use ($pendingRoute) {
if ($pendingRouteAttribute = $pendingRoute->getRouteAttribute()) {
$action->domain = $pendingRouteAttribute->domain;
if ($pendingRouteAttribute instanceof Route) {
$action->domain = $pendingRouteAttribute->domain;
}
}

if ($actionAttribute = $action->getRouteAttribute()) {
$action->domain = $actionAttribute->domain;
if ($actionAttribute instanceof Route) {
$action->domain = $actionAttribute->domain;
}
}
});
});
Expand Down
6 changes: 4 additions & 2 deletions src/PendingRouteTransformers/HandleFullUriAttribute.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,16 @@
namespace Spatie\RouteDiscovery\PendingRouteTransformers;

use Illuminate\Support\Collection;
use Spatie\RouteDiscovery\Attributes\Route;
use Spatie\RouteDiscovery\PendingRoutes\PendingRoute;
use Spatie\RouteDiscovery\PendingRoutes\PendingRouteAction;

class HandleFullUriAttribute implements PendingRouteTransformer
{
/**
* @param Collection<PendingRoute> $pendingRoutes
* @param Collection<int, PendingRoute> $pendingRoutes
*
* @return Collection<PendingRoute>
* @return Collection<int, PendingRoute>
*/
public function transform(Collection $pendingRoutes): Collection
{
Expand All @@ -21,6 +22,7 @@ public function transform(Collection $pendingRoutes): Collection
return;
}

/** @var Route $routeAttribute */
if (! $routeAttributeFullUri = $routeAttribute->fullUri) {
return;
}
Expand Down
9 changes: 7 additions & 2 deletions src/PendingRouteTransformers/HandleHttpMethodsAttribute.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,16 @@
namespace Spatie\RouteDiscovery\PendingRouteTransformers;

use Illuminate\Support\Collection;
use Spatie\RouteDiscovery\Attributes\Route;
use Spatie\RouteDiscovery\PendingRoutes\PendingRoute;
use Spatie\RouteDiscovery\PendingRoutes\PendingRouteAction;

class HandleHttpMethodsAttribute implements PendingRouteTransformer
{
/**
* @param Collection<PendingRoute> $pendingRoutes
* @param Collection<int, PendingRoute> $pendingRoutes
*
* @return Collection<PendingRoute>
* @return Collection<int, PendingRoute>
*/
public function transform(Collection $pendingRoutes): Collection
{
Expand All @@ -21,6 +22,10 @@ public function transform(Collection $pendingRoutes): Collection
return;
}

if (! $routeAttribute instanceof Route) {
return;
}

if (! $httpMethods = $routeAttribute->methods) {
return;
}
Expand Down
13 changes: 9 additions & 4 deletions src/PendingRouteTransformers/HandleMiddlewareAttribute.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,26 +3,31 @@
namespace Spatie\RouteDiscovery\PendingRouteTransformers;

use Illuminate\Support\Collection;
use Spatie\RouteDiscovery\Attributes\Route;
use Spatie\RouteDiscovery\PendingRoutes\PendingRoute;
use Spatie\RouteDiscovery\PendingRoutes\PendingRouteAction;

class HandleMiddlewareAttribute implements PendingRouteTransformer
{
/**
* @param Collection<PendingRoute> $pendingRoutes
* @param Collection<int, PendingRoute> $pendingRoutes
*
* @return Collection<PendingRoute>
* @return Collection<int, PendingRoute>
*/
public function transform(Collection $pendingRoutes): Collection
{
$pendingRoutes->each(function (PendingRoute $pendingRoute) {
$pendingRoute->actions->each(function (PendingRouteAction $action) use ($pendingRoute) {
if ($pendingRouteAttribute = $pendingRoute->getRouteAttribute()) {
$action->addMiddleware($pendingRouteAttribute->middleware);
if ($pendingRouteAttribute instanceof Route) {
$action->addMiddleware($pendingRouteAttribute->middleware);
}
}

if ($actionRouteAttribute = $action->getRouteAttribute()) {
$action->addMiddleware($actionRouteAttribute->middleware);
if ($actionRouteAttribute instanceof Route) {
$action->addMiddleware($actionRouteAttribute->middleware);
}
}
});
});
Expand Down
9 changes: 7 additions & 2 deletions src/PendingRouteTransformers/HandleRouteNameAttribute.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,16 @@
namespace Spatie\RouteDiscovery\PendingRouteTransformers;

use Illuminate\Support\Collection;
use Spatie\RouteDiscovery\Attributes\Route;
use Spatie\RouteDiscovery\PendingRoutes\PendingRoute;
use Spatie\RouteDiscovery\PendingRoutes\PendingRouteAction;

class HandleRouteNameAttribute implements PendingRouteTransformer
{
/**
* @param Collection<PendingRoute> $pendingRoutes
* @param Collection<int, PendingRoute> $pendingRoutes
*
* @return Collection<PendingRoute>
* @return Collection<int, PendingRoute>
*/
public function transform(Collection $pendingRoutes): Collection
{
Expand All @@ -21,6 +22,10 @@ public function transform(Collection $pendingRoutes): Collection
return;
}

if (! $routeAttribute instanceof Route) {
return;
}

if (! $name = $routeAttribute->name) {
return;
}
Expand Down
12 changes: 8 additions & 4 deletions src/PendingRouteTransformers/HandleUriAttribute.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@
class HandleUriAttribute implements PendingRouteTransformer
{
/**
* @param Collection<PendingRoute> $pendingRoutes
* @param Collection<int, PendingRoute> $pendingRoutes
*
* @return Collection<PendingRoute>
* @return Collection<int, PendingRoute>
*/
public function transform(Collection $pendingRoutes): Collection
{
Expand All @@ -22,12 +22,16 @@ public function transform(Collection $pendingRoutes): Collection
return;
}

if (! $routeAttributeUri = $routeAttribute->uri) {
if (! isset($routeAttribute->uri)) {
return;
}

if (! $routeAttribute->uri) {
return;
}

$baseUri = Str::beforeLast($action->uri, '/');
$action->uri = $baseUri . '/' . $routeAttributeUri;
$action->uri = $baseUri . '/' . $routeAttribute->uri;
});
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ public function transform(Collection $pendingRoutes): Collection

$childrenNodes->each(function (PendingRoute $childNode) use ($parentPendingRoute, $parentAction) {
$childNode->actions->each(function (PendingRouteAction $action) use ($parentPendingRoute, $parentAction) {
/** @var Collection<int, ReflectionParameter> $paramsToRemove */
$paramsToRemove = $action->modelParameters()
->filter(
fn (ReflectionParameter $parameter) => $parentAction
Expand Down
12 changes: 8 additions & 4 deletions src/PendingRouteTransformers/HandleWheresAttribute.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,20 +10,24 @@
class HandleWheresAttribute implements PendingRouteTransformer
{
/**
* @param Collection<PendingRoute> $pendingRoutes
* @param Collection<int, PendingRoute> $pendingRoutes
*
* @return Collection<PendingRoute>
* @return Collection<int, PendingRoute>
*/
public function transform(Collection $pendingRoutes): Collection
{
$pendingRoutes->each(function (PendingRoute $pendingRoute) {
$pendingRoute->actions->each(function (PendingRouteAction $action) use ($pendingRoute) {
if ($pendingRouteWhereAttribute = $pendingRoute->getAttribute(Where::class)) {
$action->addWhere($pendingRouteWhereAttribute);
if ($pendingRouteWhereAttribute instanceof Where) {
$action->addWhere($pendingRouteWhereAttribute);
}
}

if ($actionWhereAttribute = $action->getAttribute(Where::class)) {
$action->addWhere($actionWhereAttribute);
if ($actionWhereAttribute instanceof Where) {
$action->addWhere($actionWhereAttribute);
}
}
});
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@
class MoveRoutesStartingWithParametersLast implements PendingRouteTransformer
{
/**
* @param Collection<PendingRoute> $pendingRoutes
* @param Collection<int, PendingRoute> $pendingRoutes
*
* @return Collection<PendingRoute>
* @return Collection<int, PendingRoute>
*/
public function transform(Collection $pendingRoutes): Collection
{
Expand Down
5 changes: 2 additions & 3 deletions src/PendingRouteTransformers/PendingRouteTransformer.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,8 @@
interface PendingRouteTransformer
{
/**
* @param Collection<PendingRoute> $pendingRoutes
*
* @return Collection<PendingRoute>
* @param Collection<int, PendingRoute> $pendingRoutes
* @return Collection<int, PendingRoute>
*/
public function transform(Collection $pendingRoutes): Collection;
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@ class RejectDefaultControllerMethodRoutes implements PendingRouteTransformer
];

/**
* @param Collection<PendingRoute> $pendingRoutes
* @param Collection<int, PendingRoute> $pendingRoutes
*
* @return Collection<PendingRoute>
* @return Collection<int, PendingRoute>
*/
public function transform(Collection $pendingRoutes): Collection
{
Expand Down
8 changes: 4 additions & 4 deletions src/PendingRoutes/PendingRoute.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ class PendingRoute
{
/**
* @param SplFileInfo $fileInfo
* @param ReflectionClass $class
* @param ReflectionClass<object> $class
* @param string $uri
* @param string $fullyQualifiedClassName
* @param Collection<PendingRouteAction> $actions
* @param Collection<int, PendingRouteAction> $actions
*/
public function __construct(
public SplFileInfo $fileInfo,
Expand Down Expand Up @@ -45,7 +45,7 @@ public function childNamespace(): string
return $this->namespace() . '\\' . $this->shortControllerName();
}

public function getRouteAttribute(): ?Route
public function getRouteAttribute(): ?DiscoveryAttribute
{
return $this->getAttribute(Route::class);
}
Expand All @@ -55,7 +55,7 @@ public function getRouteAttribute(): ?Route
*
* @param class-string<TDiscoveryAttribute> $attributeClass
*
* @return ?TDiscoveryAttribute
* @return DiscoveryAttribute|null
*/
public function getAttribute(string $attributeClass): ?DiscoveryAttribute
{
Expand Down
Loading

0 comments on commit 9810b34

Please sign in to comment.