Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: apply fixes from PHPStan #60

Merged
merged 1 commit into from
Feb 26, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
93 changes: 57 additions & 36 deletions phpstan-baseline.neon
Original file line number Diff line number Diff line change
@@ -1,136 +1,157 @@
parameters:
ignoreErrors:
-
message: "#^PHPDoc tag @var for variable \\$result contains generic class Illuminate\\\\Support\\\\Collection but does not specify its types\\: TKey, TValue$#"
message: '#^Method Worksome\\RequestFactories\\Actions\\CreateFactoryResultSteps\\InvokeAfterCreatingHooks\:\:handle\(\) has parameter \$data with generic class Illuminate\\Support\\Collection but does not specify its types\: TKey, TValue$#'
identifier: missingType.generics
count: 1
path: src/Actions/CreateFactoryResult.php
path: src/Actions/CreateFactoryResultSteps/InvokeAfterCreatingHooks.php

-
message: "#^Method Worksome\\\\RequestFactories\\\\Actions\\\\CreateFactoryResultSteps\\\\InvokeAfterCreatingHooks\\:\\:handle\\(\\) has parameter \\$data with generic class Illuminate\\\\Support\\\\Collection but does not specify its types\\: TKey, TValue$#"
count: 1
message: '#^Method Worksome\\RequestFactories\\Actions\\CreateFactoryResultSteps\\InvokeAfterCreatingHooks\:\:handle\(\) has parameter \$next with generic class Illuminate\\Support\\Collection but does not specify its types\: TKey, TValue$#'
identifier: missingType.generics
count: 2
path: src/Actions/CreateFactoryResultSteps/InvokeAfterCreatingHooks.php

-
message: "#^Method Worksome\\\\RequestFactories\\\\Actions\\\\CreateFactoryResultSteps\\\\InvokeAfterCreatingHooks\\:\\:handle\\(\\) has parameter \\$next with generic class Illuminate\\\\Support\\\\Collection but does not specify its types\\: TKey, TValue$#"
count: 2
message: '#^Method Worksome\\RequestFactories\\Actions\\CreateFactoryResultSteps\\InvokeAfterCreatingHooks\:\:handle\(\) return type with generic class Illuminate\\Support\\Collection does not specify its types\: TKey, TValue$#'
identifier: missingType.generics
count: 1
path: src/Actions/CreateFactoryResultSteps/InvokeAfterCreatingHooks.php

-
message: "#^Method Worksome\\\\RequestFactories\\\\Actions\\\\CreateFactoryResultSteps\\\\InvokeAfterCreatingHooks\\:\\:handle\\(\\) return type with generic class Illuminate\\\\Support\\\\Collection does not specify its types\\: TKey, TValue$#"
message: '#^Parameter \#1 \$callback of method Illuminate\\Support\\Collection\<\(int\|string\),mixed\>\:\:reduce\(\) expects callable\(mixed, mixed, int\|string\)\: mixed, Closure\(mixed, Closure\)\: mixed given\.$#'
identifier: argument.type
count: 1
path: src/Actions/CreateFactoryResultSteps/InvokeAfterCreatingHooks.php

-
message: "#^Method Worksome\\\\RequestFactories\\\\Actions\\\\CreateFactoryResultSteps\\\\RecursiveStep\\:\\:handle\\(\\) has parameter \\$data with generic class Illuminate\\\\Support\\\\Collection but does not specify its types\\: TKey, TValue$#"
message: '#^Method Worksome\\RequestFactories\\Actions\\CreateFactoryResultSteps\\RecursiveStep\:\:handle\(\) has parameter \$data with generic class Illuminate\\Support\\Collection but does not specify its types\: TKey, TValue$#'
identifier: missingType.generics
count: 1
path: src/Actions/CreateFactoryResultSteps/RecursiveStep.php

-
message: "#^Method Worksome\\\\RequestFactories\\\\Actions\\\\CreateFactoryResultSteps\\\\RecursiveStep\\:\\:handle\\(\\) has parameter \\$next with generic class Illuminate\\\\Support\\\\Collection but does not specify its types\\: TKey, TValue$#"
message: '#^Method Worksome\\RequestFactories\\Actions\\CreateFactoryResultSteps\\RecursiveStep\:\:handle\(\) has parameter \$next with generic class Illuminate\\Support\\Collection but does not specify its types\: TKey, TValue$#'
identifier: missingType.generics
count: 2
path: src/Actions/CreateFactoryResultSteps/RecursiveStep.php

-
message: "#^Method Worksome\\\\RequestFactories\\\\Actions\\\\CreateFactoryResultSteps\\\\RecursiveStep\\:\\:handle\\(\\) return type with generic class Illuminate\\\\Support\\\\Collection does not specify its types\\: TKey, TValue$#"
message: '#^Method Worksome\\RequestFactories\\Actions\\CreateFactoryResultSteps\\RecursiveStep\:\:handle\(\) return type with generic class Illuminate\\Support\\Collection does not specify its types\: TKey, TValue$#'
identifier: missingType.generics
count: 1
path: src/Actions/CreateFactoryResultSteps/RecursiveStep.php

-
message: "#^Method Worksome\\\\RequestFactories\\\\Actions\\\\CreateFactoryResultSteps\\\\RemoveWithout\\:\\:handle\\(\\) has parameter \\$data with generic class Illuminate\\\\Support\\\\Collection but does not specify its types\\: TKey, TValue$#"
message: '#^Method Worksome\\RequestFactories\\Actions\\CreateFactoryResultSteps\\RemoveWithout\:\:handle\(\) has parameter \$data with generic class Illuminate\\Support\\Collection but does not specify its types\: TKey, TValue$#'
identifier: missingType.generics
count: 1
path: src/Actions/CreateFactoryResultSteps/RemoveWithout.php

-
message: "#^Method Worksome\\\\RequestFactories\\\\Actions\\\\CreateFactoryResultSteps\\\\RemoveWithout\\:\\:handle\\(\\) has parameter \\$next with generic class Illuminate\\\\Support\\\\Collection but does not specify its types\\: TKey, TValue$#"
message: '#^Method Worksome\\RequestFactories\\Actions\\CreateFactoryResultSteps\\RemoveWithout\:\:handle\(\) has parameter \$next with generic class Illuminate\\Support\\Collection but does not specify its types\: TKey, TValue$#'
identifier: missingType.generics
count: 2
path: src/Actions/CreateFactoryResultSteps/RemoveWithout.php

-
message: "#^Method Worksome\\\\RequestFactories\\\\Actions\\\\CreateFactoryResultSteps\\\\RemoveWithout\\:\\:handle\\(\\) return type with generic class Illuminate\\\\Support\\\\Collection does not specify its types\\: TKey, TValue$#"
message: '#^Method Worksome\\RequestFactories\\Actions\\CreateFactoryResultSteps\\RemoveWithout\:\:handle\(\) return type with generic class Illuminate\\Support\\Collection does not specify its types\: TKey, TValue$#'
identifier: missingType.generics
count: 1
path: src/Actions/CreateFactoryResultSteps/RemoveWithout.php

-
message: "#^Method Worksome\\\\RequestFactories\\\\Actions\\\\CreateFactoryResultSteps\\\\ResolveClosures\\:\\:handle\\(\\) has parameter \\$data with generic class Illuminate\\\\Support\\\\Collection but does not specify its types\\: TKey, TValue$#"
message: '#^Method Worksome\\RequestFactories\\Actions\\CreateFactoryResultSteps\\ResolveClosures\:\:handle\(\) has parameter \$data with generic class Illuminate\\Support\\Collection but does not specify its types\: TKey, TValue$#'
identifier: missingType.generics
count: 1
path: src/Actions/CreateFactoryResultSteps/ResolveClosures.php

-
message: "#^Method Worksome\\\\RequestFactories\\\\Actions\\\\CreateFactoryResultSteps\\\\ResolveClosures\\:\\:handle\\(\\) has parameter \\$next with generic class Illuminate\\\\Support\\\\Collection but does not specify its types\\: TKey, TValue$#"
message: '#^Method Worksome\\RequestFactories\\Actions\\CreateFactoryResultSteps\\ResolveClosures\:\:handle\(\) has parameter \$next with generic class Illuminate\\Support\\Collection but does not specify its types\: TKey, TValue$#'
identifier: missingType.generics
count: 2
path: src/Actions/CreateFactoryResultSteps/ResolveClosures.php

-
message: "#^Method Worksome\\\\RequestFactories\\\\Actions\\\\CreateFactoryResultSteps\\\\ResolveClosures\\:\\:handle\\(\\) return type with generic class Illuminate\\\\Support\\\\Collection does not specify its types\\: TKey, TValue$#"
message: '#^Method Worksome\\RequestFactories\\Actions\\CreateFactoryResultSteps\\ResolveClosures\:\:handle\(\) return type with generic class Illuminate\\Support\\Collection does not specify its types\: TKey, TValue$#'
identifier: missingType.generics
count: 1
path: src/Actions/CreateFactoryResultSteps/ResolveClosures.php

-
message: "#^Method Worksome\\\\RequestFactories\\\\Actions\\\\CreateFactoryResultSteps\\\\ResolveModelFactories\\:\\:handle\\(\\) has parameter \\$data with generic class Illuminate\\\\Support\\\\Collection but does not specify its types\\: TKey, TValue$#"
message: '#^Method Worksome\\RequestFactories\\Actions\\CreateFactoryResultSteps\\ResolveModelFactories\:\:handle\(\) has parameter \$data with generic class Illuminate\\Support\\Collection but does not specify its types\: TKey, TValue$#'
identifier: missingType.generics
count: 1
path: src/Actions/CreateFactoryResultSteps/ResolveModelFactories.php

-
message: "#^Method Worksome\\\\RequestFactories\\\\Actions\\\\CreateFactoryResultSteps\\\\ResolveModelFactories\\:\\:handle\\(\\) has parameter \\$next with generic class Illuminate\\\\Support\\\\Collection but does not specify its types\\: TKey, TValue$#"
message: '#^Method Worksome\\RequestFactories\\Actions\\CreateFactoryResultSteps\\ResolveModelFactories\:\:handle\(\) has parameter \$next with generic class Illuminate\\Support\\Collection but does not specify its types\: TKey, TValue$#'
identifier: missingType.generics
count: 2
path: src/Actions/CreateFactoryResultSteps/ResolveModelFactories.php

-
message: "#^Method Worksome\\\\RequestFactories\\\\Actions\\\\CreateFactoryResultSteps\\\\ResolveModelFactories\\:\\:handle\\(\\) return type with generic class Illuminate\\\\Support\\\\Collection does not specify its types\\: TKey, TValue$#"
message: '#^Method Worksome\\RequestFactories\\Actions\\CreateFactoryResultSteps\\ResolveModelFactories\:\:handle\(\) return type with generic class Illuminate\\Support\\Collection does not specify its types\: TKey, TValue$#'
identifier: missingType.generics
count: 1
path: src/Actions/CreateFactoryResultSteps/ResolveModelFactories.php

-
message: "#^Method Worksome\\\\RequestFactories\\\\Actions\\\\CreateFactoryResultSteps\\\\ResolveNestedRequestFactories\\:\\:handle\\(\\) has parameter \\$data with generic class Illuminate\\\\Support\\\\Collection but does not specify its types\\: TKey, TValue$#"
message: '#^Method Worksome\\RequestFactories\\Actions\\CreateFactoryResultSteps\\ResolveNestedRequestFactories\:\:handle\(\) has parameter \$data with generic class Illuminate\\Support\\Collection but does not specify its types\: TKey, TValue$#'
identifier: missingType.generics
count: 1
path: src/Actions/CreateFactoryResultSteps/ResolveNestedRequestFactories.php

-
message: "#^Method Worksome\\\\RequestFactories\\\\Actions\\\\CreateFactoryResultSteps\\\\ResolveNestedRequestFactories\\:\\:handle\\(\\) has parameter \\$next with generic class Illuminate\\\\Support\\\\Collection but does not specify its types\\: TKey, TValue$#"
message: '#^Method Worksome\\RequestFactories\\Actions\\CreateFactoryResultSteps\\ResolveNestedRequestFactories\:\:handle\(\) has parameter \$next with generic class Illuminate\\Support\\Collection but does not specify its types\: TKey, TValue$#'
identifier: missingType.generics
count: 2
path: src/Actions/CreateFactoryResultSteps/ResolveNestedRequestFactories.php

-
message: "#^Method Worksome\\\\RequestFactories\\\\Actions\\\\CreateFactoryResultSteps\\\\ResolveNestedRequestFactories\\:\\:handle\\(\\) return type with generic class Illuminate\\\\Support\\\\Collection does not specify its types\\: TKey, TValue$#"
message: '#^Method Worksome\\RequestFactories\\Actions\\CreateFactoryResultSteps\\ResolveNestedRequestFactories\:\:handle\(\) return type with generic class Illuminate\\Support\\Collection does not specify its types\: TKey, TValue$#'
identifier: missingType.generics
count: 1
path: src/Actions/CreateFactoryResultSteps/ResolveNestedRequestFactories.php

-
message: "#^Class Worksome\\\\RequestFactories\\\\Actions\\\\UndotArrayKeys implements generic interface Worksome\\\\RequestFactories\\\\Contracts\\\\Actions\\\\UndotsArrayKeys but does not specify its types\\: TValue$#"
message: '#^Class Worksome\\RequestFactories\\Actions\\UndotArrayKeys implements generic interface Worksome\\RequestFactories\\Contracts\\Actions\\UndotsArrayKeys but does not specify its types\: TValue$#'
identifier: missingType.generics
count: 1
path: src/Actions/UndotArrayKeys.php

-
message: "#^Method Worksome\\\\RequestFactories\\\\Contracts\\\\Actions\\\\CreateFactoryResultStep\\:\\:handle\\(\\) has parameter \\$data with generic class Illuminate\\\\Support\\\\Collection but does not specify its types\\: TKey, TValue$#"
message: '#^Method Worksome\\RequestFactories\\Contracts\\Actions\\CreateFactoryResultStep\:\:handle\(\) has parameter \$data with generic class Illuminate\\Support\\Collection but does not specify its types\: TKey, TValue$#'
identifier: missingType.generics
count: 1
path: src/Contracts/Actions/CreateFactoryResultStep.php

-
message: "#^Method Worksome\\\\RequestFactories\\\\Contracts\\\\Actions\\\\CreateFactoryResultStep\\:\\:handle\\(\\) has parameter \\$next with generic class Illuminate\\\\Support\\\\Collection but does not specify its types\\: TKey, TValue$#"
message: '#^Method Worksome\\RequestFactories\\Contracts\\Actions\\CreateFactoryResultStep\:\:handle\(\) has parameter \$next with generic class Illuminate\\Support\\Collection but does not specify its types\: TKey, TValue$#'
identifier: missingType.generics
count: 2
path: src/Contracts/Actions/CreateFactoryResultStep.php

-
message: "#^Method Worksome\\\\RequestFactories\\\\Contracts\\\\Actions\\\\CreateFactoryResultStep\\:\\:handle\\(\\) return type with generic class Illuminate\\\\Support\\\\Collection does not specify its types\\: TKey, TValue$#"
message: '#^Method Worksome\\RequestFactories\\Contracts\\Actions\\CreateFactoryResultStep\:\:handle\(\) return type with generic class Illuminate\\Support\\Collection does not specify its types\: TKey, TValue$#'
identifier: missingType.generics
count: 1
path: src/Contracts/Actions/CreateFactoryResultStep.php

-
message: "#^Method Worksome\\\\RequestFactories\\\\RequestFactory\\:\\:getUndotsArrayKeysAction\\(\\) return type with generic interface Worksome\\\\RequestFactories\\\\Contracts\\\\Actions\\\\UndotsArrayKeys does not specify its types\\: TValue$#"
message: '#^Method Worksome\\RequestFactories\\RequestFactory\:\:getUndotsArrayKeysAction\(\) return type with generic interface Worksome\\RequestFactories\\Contracts\\Actions\\UndotsArrayKeys does not specify its types\: TValue$#'
identifier: missingType.generics
count: 1
path: src/RequestFactory.php

-
message: "#^Class Worksome\\\\RequestFactories\\\\Support\\\\Result implements generic interface ArrayAccess but does not specify its types\\: TKey, TValue$#"
message: '#^Parameter \#2 \$without of class Worksome\\RequestFactories\\RequestFactory constructor expects array\<int, string\>, array given\.$#'
identifier: argument.type
count: 1
path: src/Support/Result.php

-
message: "#^Class Worksome\\\\RequestFactories\\\\Support\\\\Result implements generic interface Illuminate\\\\Contracts\\\\Support\\\\Arrayable but does not specify its types\\: TKey, TValue$#"
count: 1
path: src/Support/Result.php
path: src/RequestFactory.php

-
message: "#^Class Worksome\\\\RequestFactories\\\\Support\\\\Result implements generic interface IteratorAggregate but does not specify its types\\: TKey, TValue$#"
message: '#^Parameter \#3 \$afterCreatingHooks of class Worksome\\RequestFactories\\RequestFactory constructor expects array\<\(Closure\(array\)\: array\)\|void\>, array given\.$#'
identifier: argument.type
count: 1
path: src/Support/Result.php
path: src/RequestFactory.php
2 changes: 1 addition & 1 deletion src/Actions/CreateFactoryResult.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public function __invoke(RequestFactory $factory): Result
{
$data = $factory->getFactoryData();

/** @var Collection<mixed> $result */
/** @var Collection<array-key, mixed> $result */
$result = (new Pipeline())
->send(collect($data->getRequestedData()))
->through([
Expand Down
1 change: 0 additions & 1 deletion src/Actions/CreateFactoryResultSteps/RemoveWithout.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ public function handle(Collection $data, Closure $next): Collection
$data = $data->all();
Arr::forget($data, $this->without);

// @phpstan-ignore-next-line
return $next(collect($data));
}
}
1 change: 1 addition & 0 deletions src/Concerns/Pest/FakesRequests.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
use Worksome\RequestFactories\RequestFactory;
use Worksome\RequestFactories\Support\HigherOrderRequestFactory;

/** @phpstan-ignore trait.unused */
trait FakesRequests
{
/**
Expand Down
1 change: 1 addition & 0 deletions src/Contracts/Actions/CreatesFactoryResult.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,6 @@

interface CreatesFactoryResult
{
/** @return Result<array-key, mixed> */
public function __invoke(RequestFactory $factory): Result;
}
1 change: 1 addition & 0 deletions src/RequestFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ abstract class RequestFactory

/**
* @param array<mixed> $attributes
* @param array<int, string> $without
* @param array<Closure(array): array|void> $afterCreatingHooks
*/
final public function __construct(
Expand Down
4 changes: 2 additions & 2 deletions src/Support/ConfigBasedFinder.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,12 @@ public function requestFactoriesLocation(string $name = ''): string

public function requestFactoriesNamespace(): string
{
return strval($this->config['namespace'] ?? 'Tests\\RequestFactories');
return strval($this->config['namespace'] ?? 'Tests\\RequestFactories'); // @phpstan-ignore argument.type
}

private function getName(): string
{
return strval($this->config['path'] ?? 'tests/RequestFactories');
return strval($this->config['path'] ?? 'tests/RequestFactories'); // @phpstan-ignore argument.type
}

private function withCorrectSeparator(string $path): string
Expand Down
27 changes: 18 additions & 9 deletions src/Support/Result.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,25 @@
use SplFileInfo;
use Traversable;

/**
* @template TKey of array-key
* @template TValue
*
* @implements Arrayable<TKey, TValue>
* @implements ArrayAccess<TKey, TValue>
* @implements IteratorAggregate<TKey, TValue>
*/
final readonly class Result implements Arrayable, ArrayAccess, IteratorAggregate
{
/** @param array<TKey, TValue> $attributes */
public function __construct(private array $attributes)
{
}

/**
* All attributes from the factory, including files.
*
* @return array<mixed>
* @return array<TKey, TValue>
*/
public function all(): array
{
Expand All @@ -32,7 +41,7 @@ public function all(): array
/**
* All attributes from the array except files.
*
* @return array<mixed>
* @return array<TKey, TValue>
*/
public function input(): array
{
Expand All @@ -42,11 +51,11 @@ public function input(): array
/**
* All files from the factory attributes.
*
* @return array<SplFileInfo>
* @return array<TKey, SplFileInfo>
*/
public function files(): array
{
return array_filter($this->attributes, fn ($attribute) => $attribute instanceof SplFileInfo);
return array_filter($this->attributes, fn (mixed $attribute) => $attribute instanceof SplFileInfo);
}

public function hasFiles(): bool
Expand All @@ -55,39 +64,39 @@ public function hasFiles(): bool
}

/**
* @return array<mixed>
* @return array<TKey, TValue>
*/
public function toArray(): array
{
return $this->all();
}

/**
* @param array-key $offset
* @param TKey $offset
*/
public function offsetExists(mixed $offset): bool
{
return array_key_exists($offset, $this->all());
}

/**
* @param array-key $offset
* @param TKey $offset
*/
public function offsetGet(mixed $offset): mixed
{
return $this->all()[$offset];
}

/**
* @param array-key $offset
* @param TKey $offset
*/
public function offsetSet(mixed $offset, mixed $value): void
{
throw new BadMethodCallException('Factory results cannot be mutated.');
}

/**
* @param array-key $offset
* @param TKey $offset
*/
public function offsetUnset(mixed $offset): void
{
Expand Down
Loading