diff --git a/app/Actions/Fortify/CreateNewUser.php b/app/Actions/Fortify/CreateNewUser.php index 253a63d9..a66c0b4a 100644 --- a/app/Actions/Fortify/CreateNewUser.php +++ b/app/Actions/Fortify/CreateNewUser.php @@ -26,7 +26,7 @@ class CreateNewUser implements CreatesNewUsers /** * Create a newly registered user. * - * @param array $input + * @param array $input * * @throws ValidationException */ diff --git a/app/Actions/Fortify/UpdateUserProfileInformation.php b/app/Actions/Fortify/UpdateUserProfileInformation.php index 748d0e8c..ccc2a496 100644 --- a/app/Actions/Fortify/UpdateUserProfileInformation.php +++ b/app/Actions/Fortify/UpdateUserProfileInformation.php @@ -6,7 +6,6 @@ namespace App\Actions\Fortify; use App\Enums\Weekday; use App\Models\User; -use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Builder; use Illuminate\Support\Facades\Validator; use Illuminate\Validation\Rule; @@ -59,8 +58,7 @@ class UpdateUserProfileInformation implements UpdatesUserProfileInformation $user->updateProfilePhoto($input['photo']); } - if ($input['email'] !== $user->email && - $user instanceof MustVerifyEmail) { + if ($input['email'] !== $user->email) { $user->forceFill([ 'name' => $input['name'], 'email' => $input['email'], diff --git a/app/Actions/Jetstream/AddOrganizationMember.php b/app/Actions/Jetstream/AddOrganizationMember.php index 556eb8d1..7c8cc0f6 100644 --- a/app/Actions/Jetstream/AddOrganizationMember.php +++ b/app/Actions/Jetstream/AddOrganizationMember.php @@ -57,7 +57,7 @@ class AddOrganizationMember implements AddsTeamMembers */ protected function rules(): array { - return array_filter([ + return [ 'email' => [ 'required', 'email', @@ -75,7 +75,7 @@ class AddOrganizationMember implements AddsTeamMembers Role::Employee->value, ]), ], - ]); + ]; } /** diff --git a/app/Extensions/Scramble/PaginatedResourceCollectionTypeToSchema.php b/app/Extensions/Scramble/PaginatedResourceCollectionTypeToSchema.php index 484f73f1..5369743d 100644 --- a/app/Extensions/Scramble/PaginatedResourceCollectionTypeToSchema.php +++ b/app/Extensions/Scramble/PaginatedResourceCollectionTypeToSchema.php @@ -41,9 +41,7 @@ class PaginatedResourceCollectionTypeToSchema extends TypeToSchemaExtension return null; } - if (! ($collectingType = $this->openApiTransformer->transform($collectingClassType))) { - return null; - } + $collectingType = $this->openApiTransformer->transform($collectingClassType); $newType = new OpenApiObjectType; $newType->addProperty('data', (new ArrayType)->setItems($collectingType)); diff --git a/app/Filament/Resources/TokenResource.php b/app/Filament/Resources/TokenResource.php index b199fb5b..0ca00f0c 100644 --- a/app/Filament/Resources/TokenResource.php +++ b/app/Filament/Resources/TokenResource.php @@ -40,7 +40,7 @@ class TokenResource extends Resource ->label('Name') ->required() ->maxLength(255), - Forms\Components\Select::make('user_id') + Forms\Components\Select::make('owner_id') ->label('User') ->relationship(name: 'user', titleAttribute: 'name') ->searchable(['name']) @@ -79,10 +79,12 @@ class TokenResource extends Resource Tables\Columns\TextColumn::make('client.name') ->searchable() ->sortable(), - Tables\Columns\IconColumn::make('client.personal_access_client') + Tables\Columns\IconColumn::make('personal_access_client') + ->state(function (Token $token): bool { + return in_array('personal_access', $token->client->grant_types ?? [], true); + }) ->boolean() - ->label('API token?') - ->sortable(), + ->label('API token?'), Tables\Columns\IconColumn::make('revoked') ->boolean() ->label('Revoked?') @@ -106,14 +108,14 @@ class TokenResource extends Resource /** @var Builder $query */ return $query->whereHas('client', function (Builder $query) { /** @var Builder $query */ - return $query->where('personal_access_client', true); + return $query->whereJsonContains('grant_types', 'personal_access'); }); }, false: function (Builder $query) { /** @var Builder $query */ return $query->whereHas('client', function (Builder $query) { /** @var Builder $query */ - return $query->where('personal_access_client', false); + return $query->whereJsonDoesntContain('grant_types', 'personal_access'); }); }, blank: function (Builder $query) { diff --git a/app/Http/Controllers/Api/V1/ApiTokenController.php b/app/Http/Controllers/Api/V1/ApiTokenController.php index 30864cfe..2dea2694 100644 --- a/app/Http/Controllers/Api/V1/ApiTokenController.php +++ b/app/Http/Controllers/Api/V1/ApiTokenController.php @@ -8,9 +8,12 @@ use App\Exceptions\Api\PersonalAccessClientIsNotConfiguredException; use App\Http\Requests\V1\ApiToken\ApiTokenStoreRequest; use App\Http\Resources\V1\ApiToken\ApiTokenCollection; use App\Http\Resources\V1\ApiToken\ApiTokenWithAccessTokenResource; +use App\Models\Passport\Client; use App\Models\Passport\Token; use Illuminate\Auth\Access\AuthorizationException; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Http\JsonResponse; +use Illuminate\Support\Str; class ApiTokenController extends Controller { @@ -28,7 +31,10 @@ class ApiTokenController extends Controller $user = $this->user(); $tokens = $user->tokens() - ->where('client_id', '=', config('passport.personal_access_client.id')) + ->whereHas('client', function (Builder $query): void { + /** @var Builder $query */ + $query->whereJsonContains('grant_types', 'personal_access'); + }) ->get(); return new ApiTokenCollection($tokens); @@ -48,15 +54,21 @@ class ApiTokenController extends Controller { $user = $this->user(); - if (config('passport.personal_access_client.id') === null || config('passport.personal_access_client.secret') === null) { - throw new PersonalAccessClientIsNotConfiguredException; + try { + $token = $user->createToken($request->getName(), ['*']); + + /** @var Token $tokenModel */ + $tokenModel = $token->getToken(); + + return new ApiTokenWithAccessTokenResource($tokenModel, $token->accessToken); + } catch (\RuntimeException $exception) { + report($exception); + if (Str::contains($exception->getMessage(), ['Personal access client not found'])) { + throw new PersonalAccessClientIsNotConfiguredException; + } + + throw $exception; } - - $token = $user->createToken($request->getName(), ['*']); - /** @var Token $tokenModel */ - $tokenModel = $token->token; - - return new ApiTokenWithAccessTokenResource($tokenModel, $token->accessToken); } /** @@ -71,13 +83,10 @@ class ApiTokenController extends Controller { $user = $this->user(); - if (config('passport.personal_access_client.id') === null || config('passport.personal_access_client.secret') === null) { - throw new PersonalAccessClientIsNotConfiguredException; - } if ($apiToken->user_id !== $user->getKey()) { throw new AuthorizationException('API token does not belong to user'); } - if ($apiToken->client_id !== config('passport.personal_access_client.id')) { + if (! ($apiToken->client?->hasGrantType('personal_access') ?? false)) { throw new AuthorizationException('API token is not a personal access token'); } @@ -97,13 +106,10 @@ class ApiTokenController extends Controller { $user = $this->user(); - if (config('passport.personal_access_client.id') === null || config('passport.personal_access_client.secret') === null) { - throw new PersonalAccessClientIsNotConfiguredException; - } if ($apiToken->user_id !== $user->getKey()) { throw new AuthorizationException('API token does not belong to user'); } - if ($apiToken->client_id !== config('passport.personal_access_client.id')) { + if (! ($apiToken->client?->hasGrantType('personal_access') ?? false)) { throw new AuthorizationException('API token is not a personal access token'); } diff --git a/app/Http/Middleware/EnsureEmailIsVerified.php b/app/Http/Middleware/EnsureEmailIsVerified.php index d2ce9dee..809ac05d 100644 --- a/app/Http/Middleware/EnsureEmailIsVerified.php +++ b/app/Http/Middleware/EnsureEmailIsVerified.php @@ -5,7 +5,6 @@ declare(strict_types=1); namespace App\Http\Middleware; use Closure; -use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Http\Request; use Illuminate\Support\Facades\Redirect; use Illuminate\Support\Facades\URL; @@ -20,8 +19,7 @@ class EnsureEmailIsVerified { if (! app()->isLocal()) { if ($request->user() === null || - ($request->user() instanceof MustVerifyEmail && - ! $request->user()->hasVerifiedEmail())) { + (! $request->user()->hasVerifiedEmail())) { return $request->expectsJson() ? abort(403, 'Your email address is not verified.') : Redirect::guest(URL::route($redirectToRoute ?: 'verification.notice')); diff --git a/app/Http/Middleware/HandleInertiaRequests.php b/app/Http/Middleware/HandleInertiaRequests.php index f0b96ebd..c77fe0c2 100644 --- a/app/Http/Middleware/HandleInertiaRequests.php +++ b/app/Http/Middleware/HandleInertiaRequests.php @@ -50,7 +50,7 @@ class HandleInertiaRequests extends Middleware return array_merge(parent::share($request), [ 'has_billing_extension' => $hasBilling, 'has_invoicing_extension' => $hasInvoicing, - 'billing' => $billing !== null && $currentOrganization !== null ? [ + 'billing' => $currentOrganization !== null ? [ 'has_subscription' => $billing->hasSubscription($currentOrganization), 'has_trial' => $billing->hasTrial($currentOrganization), 'trial_until' => $billing->getTrialUntil($currentOrganization)?->toIso8601ZuluString(), diff --git a/app/Http/Middleware/ShareInertiaData.php b/app/Http/Middleware/ShareInertiaData.php index e5c3cfba..b37a5c5a 100644 --- a/app/Http/Middleware/ShareInertiaData.php +++ b/app/Http/Middleware/ShareInertiaData.php @@ -26,7 +26,7 @@ class ShareInertiaData { /** @var PermissionStore $permissions */ $permissions = app(PermissionStore::class); - Inertia::share(array_filter([ + Inertia::share([ 'jetstream' => function () use ($request) { /** @var User|null $user */ $user = $request->user(); @@ -101,7 +101,7 @@ class ShareInertiaData return [$key => $bag->messages()]; })->all(); }, - ])); + ]); return $next($request); } diff --git a/app/Http/Resources/V1/Project/ProjectCollection.php b/app/Http/Resources/V1/Project/ProjectCollection.php index 1142e654..613469b2 100644 --- a/app/Http/Resources/V1/Project/ProjectCollection.php +++ b/app/Http/Resources/V1/Project/ProjectCollection.php @@ -8,15 +8,11 @@ use App\Http\Resources\PaginatedResourceCollection; use App\Models\Project; use Illuminate\Http\Request; use Illuminate\Http\Resources\Json\ResourceCollection; -use Illuminate\Pagination\LengthAwarePaginator; class ProjectCollection extends ResourceCollection implements PaginatedResourceCollection { private bool $showBillableRates; - /** - * @param LengthAwarePaginator $resource - */ public function __construct($resource, bool $showBillableRates) { parent::__construct($resource); diff --git a/app/Models/Audit.php b/app/Models/Audit.php index 601d4731..c7466715 100644 --- a/app/Models/Audit.php +++ b/app/Models/Audit.php @@ -16,8 +16,8 @@ use OwenIt\Auditing\Models\Audit as PackageAuditModel; * @property string $event * @property string $auditable_type * @property string $auditable_id - * @property array|null $old_values - * @property array|null $new_values + * @property array|null $old_values + * @property array|null $new_values * @property string|null $url * @property string|null $ip_address * @property string|null $user_agent diff --git a/app/Models/Client.php b/app/Models/Client.php index 31cf5758..6189fbf3 100644 --- a/app/Models/Client.php +++ b/app/Models/Client.php @@ -47,7 +47,7 @@ class Client extends Model implements AuditableContract ]; /** - * @return BelongsTo + * @return BelongsTo */ public function organization(): BelongsTo { @@ -55,7 +55,7 @@ class Client extends Model implements AuditableContract } /** - * @return HasMany + * @return HasMany */ public function projects(): HasMany { diff --git a/app/Models/Member.php b/app/Models/Member.php index 694ec26e..4bca1125 100644 --- a/app/Models/Member.php +++ b/app/Models/Member.php @@ -25,8 +25,8 @@ use OwenIt\Auditing\Contracts\Auditable as AuditableContract; * @property Carbon|null $updated_at * @property-read Organization $organization * @property-read User $user - * @property-read Collection $projectMembers - * @property-read Collection $timeEntries + * @property-read Collection $projectMembers + * @property-read Collection $timeEntries * * @method static MemberFactory factory() */ @@ -47,7 +47,7 @@ class Member extends JetstreamMembership implements AuditableContract protected $table = 'members'; /** - * @return BelongsTo + * @return BelongsTo */ public function user(): BelongsTo { @@ -55,7 +55,7 @@ class Member extends JetstreamMembership implements AuditableContract } /** - * @return BelongsTo + * @return BelongsTo */ public function organization(): BelongsTo { @@ -63,7 +63,7 @@ class Member extends JetstreamMembership implements AuditableContract } /** - * @return HasMany + * @return HasMany */ public function timeEntries(): HasMany { @@ -71,7 +71,7 @@ class Member extends JetstreamMembership implements AuditableContract } /** - * @return HasMany + * @return HasMany */ public function projectMembers(): HasMany { diff --git a/app/Models/Organization.php b/app/Models/Organization.php index 8d3af098..a8b1f93e 100644 --- a/app/Models/Organization.php +++ b/app/Models/Organization.php @@ -18,6 +18,7 @@ use Illuminate\Database\Eloquent\ModelNotFoundException; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Eloquent\Relations\HasMany; +use Illuminate\Database\Eloquent\Relations\Pivot; use Illuminate\Support\Carbon; use Illuminate\Support\Str; use Laravel\Jetstream\Events\TeamCreated; @@ -47,7 +48,7 @@ use OwenIt\Auditing\Contracts\Auditable as AuditableContract; * @property IntervalFormat $interval_format * @property TimeFormat $time_format * - * @method HasMany teamInvitations() + * @method HasMany teamInvitations() * @method static OrganizationFactory factory() */ class Organization extends JetstreamTeam implements AuditableContract @@ -79,7 +80,7 @@ class Organization extends JetstreamTeam implements AuditableContract /** * The attributes that are mass assignable. * - * @var array + * @var list */ protected $fillable = [ 'name', @@ -125,7 +126,7 @@ class Organization extends JetstreamTeam implements AuditableContract /** * Get all the users that belong to the team. * - * @return BelongsToMany + * @return BelongsToMany */ public function users(): BelongsToMany { @@ -142,7 +143,7 @@ class Organization extends JetstreamTeam implements AuditableContract /** * Get the owner of the team. * - * @return BelongsTo + * @return BelongsTo */ public function owner(): BelongsTo { @@ -150,7 +151,7 @@ class Organization extends JetstreamTeam implements AuditableContract } /** - * @return HasMany + * @return HasMany */ public function members(): HasMany { @@ -158,7 +159,7 @@ class Organization extends JetstreamTeam implements AuditableContract } /** - * @return BelongsToMany + * @return BelongsToMany */ public function realUsers(): BelongsToMany { diff --git a/app/Models/OrganizationInvitation.php b/app/Models/OrganizationInvitation.php index a27bfd6f..75e99bdf 100644 --- a/app/Models/OrganizationInvitation.php +++ b/app/Models/OrganizationInvitation.php @@ -53,7 +53,7 @@ class OrganizationInvitation extends JetstreamTeamInvitation implements Auditabl /** * Get the organization that the invitation belongs to. * - * @return BelongsTo + * @return BelongsTo */ public function organization(): BelongsTo { @@ -63,7 +63,7 @@ class OrganizationInvitation extends JetstreamTeamInvitation implements Auditabl /** * Get the organization that the invitation belongs to. * - * @return BelongsTo + * @return BelongsTo */ public function team(): BelongsTo { diff --git a/app/Models/Passport/AuthCode.php b/app/Models/Passport/AuthCode.php index f0187dc3..ed6c7ab6 100644 --- a/app/Models/Passport/AuthCode.php +++ b/app/Models/Passport/AuthCode.php @@ -4,6 +4,26 @@ declare(strict_types=1); namespace App\Models\Passport; +use App\Models\User; +use Illuminate\Database\Eloquent\Relations\BelongsTo; +use Illuminate\Support\Carbon; use Laravel\Passport\AuthCode as PassportAuthCode; -class AuthCode extends PassportAuthCode {} +/** + * @property string $id + * @property string $user_id + * @property string $client_id + * @property string|null $scopes + * @property bool $revoked + * @property Carbon $expires_at + */ +class AuthCode extends PassportAuthCode +{ + /** + * @return BelongsTo + */ + public function user(): BelongsTo + { + return $this->belongsTo(User::class, 'user_id'); + } +} diff --git a/app/Models/Passport/Client.php b/app/Models/Passport/Client.php index 1807ff94..2641008c 100644 --- a/app/Models/Passport/Client.php +++ b/app/Models/Passport/Client.php @@ -5,22 +5,36 @@ declare(strict_types=1); namespace App\Models\Passport; use Database\Factories\Passport\ClientFactory; +use Illuminate\Database\Eloquent\Factories\Factory; use Illuminate\Database\Eloquent\Factories\HasFactory; +use Illuminate\Support\Carbon; use Laravel\Passport\Client as PassportClient; /** * @property string $id - * @property string|null $user_id + * @property string|null $owner_id + * @property string|null $owner_type * @property string $name * @property string|null $secret * @property string|null $provider - * @property string $redirect - * @property bool $personal_access_client - * @property bool $password_client + * @property array $grant_types + * @property array $redirect_uris + * @property Carbon|null $created_at + * @property Carbon|null $updated_at * @property bool $revoked */ class Client extends PassportClient { /** @use HasFactory */ use HasFactory; + + /** + * Create a new factory instance for the model. + * + * @return ClientFactory + */ + protected static function newFactory(): Factory + { + return ClientFactory::new(); + } } diff --git a/app/Models/Passport/PersonalAccessClient.php b/app/Models/Passport/PersonalAccessClient.php deleted file mode 100644 index c1cbb7de..00000000 --- a/app/Models/Passport/PersonalAccessClient.php +++ /dev/null @@ -1,9 +0,0 @@ - + * @return BelongsTo */ + // @phpstan-ignore method.childReturnType public function client(): BelongsTo { return $this->belongsTo(Client::class, 'client_id', 'id'); } + + /** + * Get the user that the token belongs to. + * + * @deprecated Will be removed in a future Laravel version. + * + * @return BelongsTo + */ + // @phpstan-ignore method.childReturnType + public function user(): BelongsTo + { + return $this->belongsTo(User::class, 'user_id'); + } } diff --git a/app/Models/Project.php b/app/Models/Project.php index 7bf8ef02..b33f05a6 100644 --- a/app/Models/Project.php +++ b/app/Models/Project.php @@ -137,7 +137,7 @@ class Project extends Model implements AuditableContract } /** - * @return BelongsTo + * @return BelongsTo */ public function organization(): BelongsTo { @@ -145,7 +145,7 @@ class Project extends Model implements AuditableContract } /** - * @return BelongsTo + * @return BelongsTo */ public function client(): BelongsTo { @@ -153,7 +153,7 @@ class Project extends Model implements AuditableContract } /** - * @return HasMany + * @return HasMany */ public function members(): HasMany { @@ -161,7 +161,7 @@ class Project extends Model implements AuditableContract } /** - * @return HasMany + * @return HasMany */ public function tasks(): HasMany { @@ -169,7 +169,7 @@ class Project extends Model implements AuditableContract } /** - * @return HasMany + * @return HasMany */ public function timeEntries(): HasMany { diff --git a/app/Models/ProjectMember.php b/app/Models/ProjectMember.php index d5c61be1..698f5bb7 100644 --- a/app/Models/ProjectMember.php +++ b/app/Models/ProjectMember.php @@ -48,7 +48,7 @@ class ProjectMember extends Model implements AuditableContract ]; /** - * @return BelongsTo + * @return BelongsTo */ public function project(): BelongsTo { @@ -58,7 +58,7 @@ class ProjectMember extends Model implements AuditableContract /** * @deprecated Use member relationship instead * - * @return BelongsTo + * @return BelongsTo */ public function user(): BelongsTo { @@ -66,7 +66,7 @@ class ProjectMember extends Model implements AuditableContract } /** - * @return BelongsTo + * @return BelongsTo */ public function member(): BelongsTo { diff --git a/app/Models/Report.php b/app/Models/Report.php index 04d19e48..537d37ef 100644 --- a/app/Models/Report.php +++ b/app/Models/Report.php @@ -55,7 +55,7 @@ class Report extends Model } /** - * @return BelongsTo + * @return BelongsTo */ public function organization(): BelongsTo { diff --git a/app/Models/Tag.php b/app/Models/Tag.php index 67c844a7..81840b08 100644 --- a/app/Models/Tag.php +++ b/app/Models/Tag.php @@ -22,7 +22,7 @@ use Staudenmeir\EloquentJsonRelations\Relations\HasManyJson; * @property string $organization_id * @property Carbon|null $created_at * @property Carbon|null $updated_at - * @property-read Collection $timeEntries + * @property-read Collection $timeEntries * @property-read Organization $organization * * @method static TagFactory factory() @@ -47,7 +47,7 @@ class Tag extends Model implements AuditableContract ]; /** - * @return BelongsTo + * @return BelongsTo */ public function organization(): BelongsTo { diff --git a/app/Models/Task.php b/app/Models/Task.php index 0344107b..dba09ffb 100644 --- a/app/Models/Task.php +++ b/app/Models/Task.php @@ -120,7 +120,7 @@ class Task extends Model implements AuditableContract } /** - * @return BelongsTo + * @return BelongsTo */ public function project(): BelongsTo { @@ -128,7 +128,7 @@ class Task extends Model implements AuditableContract } /** - * @return BelongsTo + * @return BelongsTo */ public function organization(): BelongsTo { @@ -136,7 +136,7 @@ class Task extends Model implements AuditableContract } /** - * @return HasMany + * @return HasMany */ public function timeEntries(): HasMany { diff --git a/app/Models/TimeEntry.php b/app/Models/TimeEntry.php index a92539da..de4576a9 100644 --- a/app/Models/TimeEntry.php +++ b/app/Models/TimeEntry.php @@ -28,7 +28,7 @@ use Staudenmeir\EloquentJsonRelations\Relations\BelongsToJson; * @property Carbon|null $end * @property int|null $billable_rate Billable rate per hour in cents * @property bool $billable - * @property array $tags + * @property array $tags * @property string $user_id * @property string $member_id * @property bool $is_imported @@ -45,7 +45,7 @@ use Staudenmeir\EloquentJsonRelations\Relations\BelongsToJson; * @property-read Client|null $client * @property string|null $task_id * @property-read Task|null $task - * @property-read Collection $tagsRelation + * @property-read Collection $tagsRelation * * @method Builder hasTag(Tag $tag) * @method static TimeEntryFactory factory() @@ -154,7 +154,7 @@ class TimeEntry extends Model implements AuditableContract } /** - * @return BelongsTo + * @return BelongsTo */ public function user(): BelongsTo { @@ -162,7 +162,7 @@ class TimeEntry extends Model implements AuditableContract } /** - * @return BelongsTo + * @return BelongsTo */ public function member(): BelongsTo { @@ -170,7 +170,7 @@ class TimeEntry extends Model implements AuditableContract } /** - * @return BelongsTo + * @return BelongsTo */ public function organization(): BelongsTo { @@ -178,7 +178,7 @@ class TimeEntry extends Model implements AuditableContract } /** - * @return BelongsTo + * @return BelongsTo */ public function project(): BelongsTo { @@ -186,7 +186,7 @@ class TimeEntry extends Model implements AuditableContract } /** - * @return BelongsTo + * @return BelongsTo */ public function task(): BelongsTo { @@ -196,7 +196,7 @@ class TimeEntry extends Model implements AuditableContract /** * This relation can be reconstructed via the task relation. It is only here for performance reasons. * - * @return BelongsTo + * @return BelongsTo */ public function client(): BelongsTo { diff --git a/app/Models/User.php b/app/Models/User.php index 2a40cd5d..76c5115d 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -19,6 +19,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Eloquent\Relations\HasMany; +use Illuminate\Database\Eloquent\Relations\Pivot; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Illuminate\Support\Carbon; @@ -27,6 +28,7 @@ use Laravel\Fortify\TwoFactorAuthenticatable; use Laravel\Jetstream\HasProfilePhoto; use Laravel\Jetstream\HasTeams; use Laravel\Passport\AuthCode; +use Laravel\Passport\Contracts\OAuthenticatable; use Laravel\Passport\HasApiTokens; use OwenIt\Auditing\Contracts\Auditable as AuditableContract; @@ -52,13 +54,13 @@ use OwenIt\Auditing\Contracts\Auditable as AuditableContract; * @property Collection $timeEntries * @property Member $membership * - * @method HasMany ownedTeams() + * @method HasMany ownedTeams() * @method static UserFactory factory() * @method static Builder query() * @method Builder belongsToOrganization(Organization $organization) * @method Builder active() */ -class User extends Authenticatable implements AuditableContract, FilamentUser, MustVerifyEmail +class User extends Authenticatable implements AuditableContract, FilamentUser, MustVerifyEmail, OAuthenticatable { use CustomAuditable; use HasApiTokens; @@ -75,7 +77,7 @@ class User extends Authenticatable implements AuditableContract, FilamentUser, M /** * The attributes that are mass assignable. * - * @var array + * @var list */ protected $fillable = [ 'name', @@ -86,7 +88,7 @@ class User extends Authenticatable implements AuditableContract, FilamentUser, M /** * The attributes that should be hidden for serialization. * - * @var array + * @var list */ protected $hidden = [ 'password', @@ -143,7 +145,7 @@ class User extends Authenticatable implements AuditableContract, FilamentUser, M } /** - * @return BelongsToMany + * @return BelongsToMany */ public function organizations(): BelongsToMany { @@ -158,7 +160,7 @@ class User extends Authenticatable implements AuditableContract, FilamentUser, M } /** - * @return HasMany + * @return HasMany */ public function timeEntries(): HasMany { @@ -166,7 +168,7 @@ class User extends Authenticatable implements AuditableContract, FilamentUser, M } /** - * @return BelongsTo + * @return BelongsTo */ public function currentOrganization(): BelongsTo { @@ -174,7 +176,7 @@ class User extends Authenticatable implements AuditableContract, FilamentUser, M } /** - * @return HasMany + * @return HasMany */ public function projectMembers(): HasMany { @@ -182,7 +184,7 @@ class User extends Authenticatable implements AuditableContract, FilamentUser, M } /** - * @return HasMany + * @return HasMany */ public function accessTokens(): HasMany { @@ -190,24 +192,13 @@ class User extends Authenticatable implements AuditableContract, FilamentUser, M } /** - * @return HasMany + * @return HasMany */ public function authCodes(): HasMany { return $this->hasMany(AuthCode::class); } - /** - * Get the access tokens for the user. - * - * @return HasMany - */ - public function tokens(): HasMany - { - return $this->hasMany(Token::class, 'user_id') - ->orderBy('created_at', 'desc'); - } - /** * @param Builder $builder */ diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php index 15ea2d43..f524f92d 100644 --- a/app/Providers/AuthServiceProvider.php +++ b/app/Providers/AuthServiceProvider.php @@ -7,7 +7,6 @@ namespace App\Providers; use App\Models\Organization; use App\Models\Passport\AuthCode; use App\Models\Passport\Client; -use App\Models\Passport\PersonalAccessClient; use App\Models\Passport\RefreshToken; use App\Models\Passport\Token; use App\Policies\OrganizationPolicy; @@ -51,7 +50,8 @@ class AuthServiceProvider extends ServiceProvider Passport::useRefreshTokenModel(RefreshToken::class); Passport::useAuthCodeModel(AuthCode::class); Passport::useClientModel(Client::class); - Passport::usePersonalAccessClientModel(PersonalAccessClient::class); + + Passport::authorizationView('auth.oauth.authorize'); // Passport::tokensExpireIn(now()->addDays(15)); // Passport::refreshTokensExpireIn(now()->addDays(30)); diff --git a/app/Service/Dto/ReportPropertiesDto.php b/app/Service/Dto/ReportPropertiesDto.php index 53e4ef8f..892f4eb1 100644 --- a/app/Service/Dto/ReportPropertiesDto.php +++ b/app/Service/Dto/ReportPropertiesDto.php @@ -119,9 +119,6 @@ class ReportPropertiesDto implements Castable return $dto; } - /** - * @param ReportPropertiesDto $value - */ public function set(Model $model, string $key, mixed $value, array $attributes): string { if (! ($value instanceof ReportPropertiesDto)) { diff --git a/app/Service/PermissionStore.php b/app/Service/PermissionStore.php index 87394f23..754badcd 100644 --- a/app/Service/PermissionStore.php +++ b/app/Service/PermissionStore.php @@ -71,7 +71,7 @@ class PermissionStore /** @var Role|null $roleObj */ $roleObj = Jetstream::findRole($role); - return $roleObj?->permissions ?? []; + return $roleObj->permissions ?? []; } /** diff --git a/composer.json b/composer.json index 6db20c23..10af10bf 100644 --- a/composer.json +++ b/composer.json @@ -11,31 +11,31 @@ "datomatic/laravel-enum-helper": "^2.0.0", "dedoc/scramble": "^0.12.2", "filament/filament": "^3.2", - "flowframe/laravel-trend": "^0.3.0", + "flowframe/laravel-trend": "^0.4.0", "gotenberg/gotenberg-php": "^2.8", "guzzlehttp/guzzle": "^7.2", - "inertiajs/inertia-laravel": "^1.0", + "inertiajs/inertia-laravel": "^2.0.3", "korridor/laravel-computed-attributes": "^3.1", "korridor/laravel-has-many-sync": "^3.1", "korridor/laravel-model-validation-rules": "^3.0", - "laravel/framework": "^11.16.0", + "laravel/framework": "^12.19.3", "laravel/jetstream": "^5.0", "laravel/octane": "^2.3", - "laravel/passport": "^12.0", + "laravel/passport": "^13.0.5", "laravel/tinker": "^2.8", "league/csv": "^9.16.0", "league/flysystem-aws-s3-v3": "^3.0", "league/iso3166": "^4.3", "maatwebsite/excel": "^3.1", "novadaemon/filament-pretty-json": "^2.2", - "nwidart/laravel-modules": "^11.0.11", - "owen-it/laravel-auditing": "^13.6", - "pxlrbt/filament-environment-indicator": "^2.0", + "nwidart/laravel-modules": "^12.0.4", + "owen-it/laravel-auditing": "^14.0.0", + "pxlrbt/filament-environment-indicator": "^2.1.0", "spatie/temporary-directory": "^2.2", "staudenmeir/eloquent-json-relations": "^1.1", "stechstudio/filament-impersonate": "^3.8", "tightenco/ziggy": "^2.1.0", - "tpetry/laravel-postgresql-enhanced": "^2.0.0", + "tpetry/laravel-postgresql-enhanced": "^3.0.0", "wikimedia/composer-merge-plugin": "^2.1.0" }, "require-dev": { @@ -43,14 +43,13 @@ "brianium/paratest": "^7.3", "fakerphp/faker": "^1.9.1", "fumeapp/modeltyper": "^3.0", - "phpstan/phpstan": "1.12.0", - "larastan/larastan": "^2.0", + "larastan/larastan": "^3.5.0", "laravel/pint": "^1.0", "laravel/sail": "^1.18", "laravel/telescope": "^5.0", "mockery/mockery": "^1.4.4", "nunomaduro/collision": "^8.1", - "phpunit/phpunit": "^11", + "phpunit/phpunit": "^12", "spatie/laravel-ignition": "^2.0", "timacdonald/log-fake": "^2.1" }, diff --git a/composer.lock b/composer.lock index 4e7ebd85..10fe2ae2 100644 --- a/composer.lock +++ b/composer.lock @@ -4,20 +4,20 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "33dc60657e6702ebd5e19f19d86a64b4", + "content-hash": "5c66bc515959a78418203fcc8439ed42", "packages": [ { "name": "anourvalar/eloquent-serialize", - "version": "1.3.1", + "version": "1.3.3", "source": { "type": "git", "url": "https://github.com/AnourValar/eloquent-serialize.git", - "reference": "060632195821e066de1fc0f869881dd585e2f299" + "reference": "2f05023f1e465a91dc4f08483e6710325641a444" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/AnourValar/eloquent-serialize/zipball/060632195821e066de1fc0f869881dd585e2f299", - "reference": "060632195821e066de1fc0f869881dd585e2f299", + "url": "https://api.github.com/repos/AnourValar/eloquent-serialize/zipball/2f05023f1e465a91dc4f08483e6710325641a444", + "reference": "2f05023f1e465a91dc4f08483e6710325641a444", "shasum": "" }, "require": { @@ -68,9 +68,9 @@ ], "support": { "issues": "https://github.com/AnourValar/eloquent-serialize/issues", - "source": "https://github.com/AnourValar/eloquent-serialize/tree/1.3.1" + "source": "https://github.com/AnourValar/eloquent-serialize/tree/1.3.3" }, - "time": "2025-04-06T06:54:34+00:00" + "time": "2025-05-28T17:07:28+00:00" }, { "name": "aws/aws-crt-php", @@ -128,16 +128,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.342.34", + "version": "3.349.3", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "dfb7a1677143f7245289c7ad7e7915dbeab05c89" + "reference": "b2d4718786398f47626add9c29840fc416175ef2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/dfb7a1677143f7245289c7ad7e7915dbeab05c89", - "reference": "dfb7a1677143f7245289c7ad7e7915dbeab05c89", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/b2d4718786398f47626add9c29840fc416175ef2", + "reference": "b2d4718786398f47626add9c29840fc416175ef2", "shasum": "" }, "require": { @@ -219,9 +219,9 @@ "support": { "forum": "https://github.com/aws/aws-sdk-php/discussions", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.342.34" + "source": "https://github.com/aws/aws-sdk-php/tree/3.349.3" }, - "time": "2025-04-24T18:07:33+00:00" + "time": "2025-07-09T18:10:17+00:00" }, { "name": "bacon/bacon-qr-code", @@ -429,16 +429,16 @@ }, { "name": "brick/math", - "version": "0.12.3", + "version": "0.13.1", "source": { "type": "git", "url": "https://github.com/brick/math.git", - "reference": "866551da34e9a618e64a819ee1e01c20d8a588ba" + "reference": "fc7ed316430118cc7836bf45faff18d5dfc8de04" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/866551da34e9a618e64a819ee1e01c20d8a588ba", - "reference": "866551da34e9a618e64a819ee1e01c20d8a588ba", + "url": "https://api.github.com/repos/brick/math/zipball/fc7ed316430118cc7836bf45faff18d5dfc8de04", + "reference": "fc7ed316430118cc7836bf45faff18d5dfc8de04", "shasum": "" }, "require": { @@ -477,7 +477,7 @@ ], "support": { "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.12.3" + "source": "https://github.com/brick/math/tree/0.13.1" }, "funding": [ { @@ -485,7 +485,7 @@ "type": "github" } ], - "time": "2025-02-28T13:11:00+00:00" + "time": "2025-03-29T13:50:30+00:00" }, { "name": "brick/money", @@ -615,16 +615,16 @@ }, { "name": "composer/ca-bundle", - "version": "1.5.6", + "version": "1.5.7", "source": { "type": "git", "url": "https://github.com/composer/ca-bundle.git", - "reference": "f65c239c970e7f072f067ab78646e9f0b2935175" + "reference": "d665d22c417056996c59019579f1967dfe5c1e82" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/f65c239c970e7f072f067ab78646e9f0b2935175", - "reference": "f65c239c970e7f072f067ab78646e9f0b2935175", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/d665d22c417056996c59019579f1967dfe5c1e82", + "reference": "d665d22c417056996c59019579f1967dfe5c1e82", "shasum": "" }, "require": { @@ -671,7 +671,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/ca-bundle/issues", - "source": "https://github.com/composer/ca-bundle/tree/1.5.6" + "source": "https://github.com/composer/ca-bundle/tree/1.5.7" }, "funding": [ { @@ -687,7 +687,7 @@ "type": "tidelift" } ], - "time": "2025-03-06T14:30:56+00:00" + "time": "2025-05-26T15:08:54+00:00" }, { "name": "composer/class-map-generator", @@ -764,16 +764,16 @@ }, { "name": "composer/composer", - "version": "2.8.8", + "version": "2.8.10", "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "85ff84d6c5260ba21740a7c5c9a111890805d6e7" + "reference": "53834f587d7ab2527eb237459d7b94d1fb9d4c5a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/85ff84d6c5260ba21740a7c5c9a111890805d6e7", - "reference": "85ff84d6c5260ba21740a7c5c9a111890805d6e7", + "url": "https://api.github.com/repos/composer/composer/zipball/53834f587d7ab2527eb237459d7b94d1fb9d4c5a", + "reference": "53834f587d7ab2527eb237459d7b94d1fb9d4c5a", "shasum": "" }, "require": { @@ -858,7 +858,7 @@ "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/composer/issues", "security": "https://github.com/composer/composer/security/policy", - "source": "https://github.com/composer/composer/tree/2.8.8" + "source": "https://github.com/composer/composer/tree/2.8.10" }, "funding": [ { @@ -874,7 +874,7 @@ "type": "tidelift" } ], - "time": "2025-04-04T14:56:46+00:00" + "time": "2025-07-10T17:08:33+00:00" }, { "name": "composer/metadata-minifier", @@ -1107,24 +1107,24 @@ }, { "name": "composer/spdx-licenses", - "version": "1.5.8", + "version": "1.5.9", "source": { "type": "git", "url": "https://github.com/composer/spdx-licenses.git", - "reference": "560bdcf8deb88ae5d611c80a2de8ea9d0358cc0a" + "reference": "edf364cefe8c43501e21e88110aac10b284c3c9f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/560bdcf8deb88ae5d611c80a2de8ea9d0358cc0a", - "reference": "560bdcf8deb88ae5d611c80a2de8ea9d0358cc0a", + "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/edf364cefe8c43501e21e88110aac10b284c3c9f", + "reference": "edf364cefe8c43501e21e88110aac10b284c3c9f", "shasum": "" }, "require": { "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "phpstan/phpstan": "^0.12.55", - "symfony/phpunit-bridge": "^4.2 || ^5" + "phpstan/phpstan": "^1.11", + "symfony/phpunit-bridge": "^3 || ^7" }, "type": "library", "extra": { @@ -1167,7 +1167,7 @@ "support": { "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/spdx-licenses/issues", - "source": "https://github.com/composer/spdx-licenses/tree/1.5.8" + "source": "https://github.com/composer/spdx-licenses/tree/1.5.9" }, "funding": [ { @@ -1183,7 +1183,7 @@ "type": "tidelift" } ], - "time": "2023-11-20T07:44:33+00:00" + "time": "2025-05-12T21:07:07+00:00" }, { "name": "composer/xdebug-handler", @@ -1518,16 +1518,16 @@ }, { "name": "dedoc/scramble", - "version": "v0.12.19", + "version": "v0.12.23", "source": { "type": "git", "url": "https://github.com/dedoc/scramble.git", - "reference": "f6516eb82c7c86e57e2cfaead4a05b900e4b5ecc" + "reference": "5b650167c81c59138e844c2ae550c14dc1a249d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dedoc/scramble/zipball/f6516eb82c7c86e57e2cfaead4a05b900e4b5ecc", - "reference": "f6516eb82c7c86e57e2cfaead4a05b900e4b5ecc", + "url": "https://api.github.com/repos/dedoc/scramble/zipball/5b650167c81c59138e844c2ae550c14dc1a249d0", + "reference": "5b650167c81c59138e844c2ae550c14dc1a249d0", "shasum": "" }, "require": { @@ -1539,11 +1539,15 @@ "spatie/laravel-package-tools": "^1.9.2" }, "require-dev": { + "larastan/larastan": "^3.3", "laravel/pint": "^v1.1.0", "nunomaduro/collision": "^7.0|^8.0", "orchestra/testbench": "^8.0|^9.0|^10.0", "pestphp/pest": "^2.34|^3.7", "pestphp/pest-plugin-laravel": "^2.3|^3.1", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan-deprecation-rules": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", "phpunit/phpunit": "^10.5|^11.5.3", "spatie/laravel-permission": "^6.10", "spatie/pest-plugin-snapshots": "^2.1" @@ -1582,7 +1586,7 @@ ], "support": { "issues": "https://github.com/dedoc/scramble/issues", - "source": "https://github.com/dedoc/scramble/tree/v0.12.19" + "source": "https://github.com/dedoc/scramble/tree/v0.12.23" }, "funding": [ { @@ -1590,7 +1594,7 @@ "type": "github" } ], - "time": "2025-04-23T09:41:53+00:00" + "time": "2025-06-15T09:04:49+00:00" }, { "name": "defuse/php-encryption", @@ -1736,34 +1740,34 @@ }, { "name": "doctrine/dbal", - "version": "4.2.3", + "version": "4.3.0", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "33d2d7fe1269b2301640c44cf2896ea607b30e3e" + "reference": "5fe09532be619202d59c70956c6fb20e97933ee3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/33d2d7fe1269b2301640c44cf2896ea607b30e3e", - "reference": "33d2d7fe1269b2301640c44cf2896ea607b30e3e", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/5fe09532be619202d59c70956c6fb20e97933ee3", + "reference": "5fe09532be619202d59c70956c6fb20e97933ee3", "shasum": "" }, "require": { - "doctrine/deprecations": "^0.5.3|^1", - "php": "^8.1", + "doctrine/deprecations": "^1.1.5", + "php": "^8.2", "psr/cache": "^1|^2|^3", "psr/log": "^1|^2|^3" }, "require-dev": { - "doctrine/coding-standard": "12.0.0", + "doctrine/coding-standard": "13.0.0", "fig/log-test": "^1", "jetbrains/phpstorm-stubs": "2023.2", - "phpstan/phpstan": "2.1.1", - "phpstan/phpstan-phpunit": "2.0.3", + "phpstan/phpstan": "2.1.17", + "phpstan/phpstan-phpunit": "2.0.6", "phpstan/phpstan-strict-rules": "^2", - "phpunit/phpunit": "10.5.39", - "slevomat/coding-standard": "8.13.1", - "squizlabs/php_codesniffer": "3.10.2", + "phpunit/phpunit": "11.5.23", + "slevomat/coding-standard": "8.16.2", + "squizlabs/php_codesniffer": "3.13.1", "symfony/cache": "^6.3.8|^7.0", "symfony/console": "^5.4|^6.3|^7.0" }, @@ -1822,7 +1826,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/4.2.3" + "source": "https://github.com/doctrine/dbal/tree/4.3.0" }, "funding": [ { @@ -1838,7 +1842,7 @@ "type": "tidelift" } ], - "time": "2025-03-07T18:29:05+00:00" + "time": "2025-06-16T19:31:04+00:00" }, { "name": "doctrine/deprecations", @@ -2251,16 +2255,16 @@ }, { "name": "filament/actions", - "version": "v3.3.13", + "version": "v3.3.31", "source": { "type": "git", "url": "https://github.com/filamentphp/actions.git", - "reference": "1532f9bbe5e0f12da860e90836983a5fd461ef1d" + "reference": "3fee2c23368e5ee8d4613786b1bed8d98a8073fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/actions/zipball/1532f9bbe5e0f12da860e90836983a5fd461ef1d", - "reference": "1532f9bbe5e0f12da860e90836983a5fd461ef1d", + "url": "https://api.github.com/repos/filamentphp/actions/zipball/3fee2c23368e5ee8d4613786b1bed8d98a8073fc", + "reference": "3fee2c23368e5ee8d4613786b1bed8d98a8073fc", "shasum": "" }, "require": { @@ -2300,20 +2304,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2025-04-23T06:39:44+00:00" + "time": "2025-07-08T20:42:21+00:00" }, { "name": "filament/filament", - "version": "v3.3.13", + "version": "v3.3.31", "source": { "type": "git", "url": "https://github.com/filamentphp/panels.git", - "reference": "8ba5e3127bbb4c3b343f6295bd7592a1af67e312" + "reference": "b432b938c35467b9626978fb8b72578ec4d162ae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/panels/zipball/8ba5e3127bbb4c3b343f6295bd7592a1af67e312", - "reference": "8ba5e3127bbb4c3b343f6295bd7592a1af67e312", + "url": "https://api.github.com/repos/filamentphp/panels/zipball/b432b938c35467b9626978fb8b72578ec4d162ae", + "reference": "b432b938c35467b9626978fb8b72578ec4d162ae", "shasum": "" }, "require": { @@ -2365,20 +2369,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2025-04-23T06:39:50+00:00" + "time": "2025-07-01T09:34:40+00:00" }, { "name": "filament/forms", - "version": "v3.3.13", + "version": "v3.3.31", "source": { "type": "git", "url": "https://github.com/filamentphp/forms.git", - "reference": "b43f1e2d0f946409d949c4bb91d2b001c2d33d00" + "reference": "e348d8a92c96fc87b002830848e48559eb0ef715" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/forms/zipball/b43f1e2d0f946409d949c4bb91d2b001c2d33d00", - "reference": "b43f1e2d0f946409d949c4bb91d2b001c2d33d00", + "url": "https://api.github.com/repos/filamentphp/forms/zipball/e348d8a92c96fc87b002830848e48559eb0ef715", + "reference": "e348d8a92c96fc87b002830848e48559eb0ef715", "shasum": "" }, "require": { @@ -2421,20 +2425,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2025-04-23T06:39:47+00:00" + "time": "2025-07-08T20:42:22+00:00" }, { "name": "filament/infolists", - "version": "v3.3.13", + "version": "v3.3.31", "source": { "type": "git", "url": "https://github.com/filamentphp/infolists.git", - "reference": "cc71f1c15f132660986384d302a33a2b20618a96" + "reference": "89a3f1f236863e2035be3d7b0c68987508dd06fa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/infolists/zipball/cc71f1c15f132660986384d302a33a2b20618a96", - "reference": "cc71f1c15f132660986384d302a33a2b20618a96", + "url": "https://api.github.com/repos/filamentphp/infolists/zipball/89a3f1f236863e2035be3d7b0c68987508dd06fa", + "reference": "89a3f1f236863e2035be3d7b0c68987508dd06fa", "shasum": "" }, "require": { @@ -2472,20 +2476,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2025-04-23T06:39:44+00:00" + "time": "2025-06-23T10:46:53+00:00" }, { "name": "filament/notifications", - "version": "v3.3.13", + "version": "v3.3.31", "source": { "type": "git", "url": "https://github.com/filamentphp/notifications.git", - "reference": "edf7960621b2181b4c2fc040b0712fbd5dd036ef" + "reference": "adc118c7fc34a423f3c01d6936ad0316f489949c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/notifications/zipball/edf7960621b2181b4c2fc040b0712fbd5dd036ef", - "reference": "edf7960621b2181b4c2fc040b0712fbd5dd036ef", + "url": "https://api.github.com/repos/filamentphp/notifications/zipball/adc118c7fc34a423f3c01d6936ad0316f489949c", + "reference": "adc118c7fc34a423f3c01d6936ad0316f489949c", "shasum": "" }, "require": { @@ -2524,20 +2528,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2025-04-23T06:39:49+00:00" + "time": "2025-07-08T20:42:18+00:00" }, { "name": "filament/support", - "version": "v3.3.13", + "version": "v3.3.31", "source": { "type": "git", "url": "https://github.com/filamentphp/support.git", - "reference": "819ebbd60a72b4ee3078d4771bb75d551fbb0b43" + "reference": "ec8c7e9e6b49d4f1150a19bfd6fc585c717a857d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/support/zipball/819ebbd60a72b4ee3078d4771bb75d551fbb0b43", - "reference": "819ebbd60a72b4ee3078d4771bb75d551fbb0b43", + "url": "https://api.github.com/repos/filamentphp/support/zipball/ec8c7e9e6b49d4f1150a19bfd6fc585c717a857d", + "reference": "ec8c7e9e6b49d4f1150a19bfd6fc585c717a857d", "shasum": "" }, "require": { @@ -2583,20 +2587,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2025-04-23T06:39:48+00:00" + "time": "2025-07-08T20:42:46+00:00" }, { "name": "filament/tables", - "version": "v3.3.13", + "version": "v3.3.31", "source": { "type": "git", "url": "https://github.com/filamentphp/tables.git", - "reference": "de7b1854ecfcccc97f59b89cda80ca6bd6431143" + "reference": "3f0d827c960f1ee4a67ab71c416ad67e24747dc4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/tables/zipball/de7b1854ecfcccc97f59b89cda80ca6bd6431143", - "reference": "de7b1854ecfcccc97f59b89cda80ca6bd6431143", + "url": "https://api.github.com/repos/filamentphp/tables/zipball/3f0d827c960f1ee4a67ab71c416ad67e24747dc4", + "reference": "3f0d827c960f1ee4a67ab71c416ad67e24747dc4", "shasum": "" }, "require": { @@ -2635,20 +2639,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2025-04-23T06:40:04+00:00" + "time": "2025-07-08T20:42:18+00:00" }, { "name": "filament/widgets", - "version": "v3.3.13", + "version": "v3.3.31", "source": { "type": "git", "url": "https://github.com/filamentphp/widgets.git", - "reference": "048c5a4bf0477efbe2910c54a1aeb55c64cf1348" + "reference": "5b956f884aaef479f6091463cb829e7c9f2afc2c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/widgets/zipball/048c5a4bf0477efbe2910c54a1aeb55c64cf1348", - "reference": "048c5a4bf0477efbe2910c54a1aeb55c64cf1348", + "url": "https://api.github.com/repos/filamentphp/widgets/zipball/5b956f884aaef479f6091463cb829e7c9f2afc2c", + "reference": "5b956f884aaef479f6091463cb829e7c9f2afc2c", "shasum": "" }, "require": { @@ -2679,7 +2683,7 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2025-04-23T06:39:59+00:00" + "time": "2025-06-12T15:11:14+00:00" }, { "name": "firebase/php-jwt", @@ -2746,30 +2750,30 @@ }, { "name": "flowframe/laravel-trend", - "version": "v0.3.0", + "version": "v0.4.0", "source": { "type": "git", "url": "https://github.com/Flowframe/laravel-trend.git", - "reference": "391849c27a1d4791efae930746a51d982820bd3a" + "reference": "5ace11d3075932652dc48963faa732c043aeb14d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Flowframe/laravel-trend/zipball/391849c27a1d4791efae930746a51d982820bd3a", - "reference": "391849c27a1d4791efae930746a51d982820bd3a", + "url": "https://api.github.com/repos/Flowframe/laravel-trend/zipball/5ace11d3075932652dc48963faa732c043aeb14d", + "reference": "5ace11d3075932652dc48963faa732c043aeb14d", "shasum": "" }, "require": { - "illuminate/contracts": "^8.37|^9|^10.0|^11.0", + "illuminate/contracts": "^8.37|^9|^10.0|^11.0|^12.0", "php": "^8.2", "spatie/laravel-package-tools": "^1.4.3" }, "require-dev": { "nunomaduro/collision": "^5.3|^6.1|^8.0", - "orchestra/testbench": "^6.15|^7.0|^8.0|^9.0", - "pestphp/pest": "^1.18|^2.34", - "pestphp/pest-plugin-laravel": "^1.1|^2.3", + "orchestra/testbench": "^6.15|^7.0|^8.0|^9.0|^10.0", + "pestphp/pest": "^1.18|^2.34|^3.7", + "pestphp/pest-plugin-laravel": "^1.1|^2.3|^3.1", "spatie/laravel-ray": "^1.23", - "vimeo/psalm": "^4.8|^5.6" + "vimeo/psalm": "^4.8|^5.6|^6.5" }, "type": "library", "extra": { @@ -2808,7 +2812,7 @@ ], "support": { "issues": "https://github.com/Flowframe/laravel-trend/issues", - "source": "https://github.com/Flowframe/laravel-trend/tree/v0.3.0" + "source": "https://github.com/Flowframe/laravel-trend/tree/v0.4.0" }, "funding": [ { @@ -2816,7 +2820,7 @@ "type": "github" } ], - "time": "2024-09-27T09:20:30+00:00" + "time": "2025-02-25T11:13:23+00:00" }, { "name": "fruitcake/php-cors", @@ -2891,16 +2895,16 @@ }, { "name": "gotenberg/gotenberg-php", - "version": "v2.13.0", + "version": "v2.14.0", "source": { "type": "git", "url": "https://github.com/gotenberg/gotenberg-php.git", - "reference": "edb5b91321c60c3da8c87e1d821f844b7e5c0c2c" + "reference": "748efe0a981b3e8eb676593246a75925448324ad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/gotenberg/gotenberg-php/zipball/edb5b91321c60c3da8c87e1d821f844b7e5c0c2c", - "reference": "edb5b91321c60c3da8c87e1d821f844b7e5c0c2c", + "url": "https://api.github.com/repos/gotenberg/gotenberg-php/zipball/748efe0a981b3e8eb676593246a75925448324ad", + "reference": "748efe0a981b3e8eb676593246a75925448324ad", "shasum": "" }, "require": { @@ -2960,7 +2964,7 @@ ], "support": { "issues": "https://github.com/gotenberg/gotenberg-php/issues", - "source": "https://github.com/gotenberg/gotenberg-php/tree/v2.13.0" + "source": "https://github.com/gotenberg/gotenberg-php/tree/v2.14.0" }, "funding": [ { @@ -2968,7 +2972,7 @@ "type": "github" } ], - "time": "2025-03-17T13:57:01+00:00" + "time": "2025-05-20T10:00:34+00:00" }, { "name": "graham-campbell/result-type", @@ -3445,28 +3449,29 @@ }, { "name": "inertiajs/inertia-laravel", - "version": "v1.3.2", + "version": "v2.0.3", "source": { "type": "git", "url": "https://github.com/inertiajs/inertia-laravel.git", - "reference": "7e6a030ffab315099782a4844a2175455f511c68" + "reference": "b732a5cc33423b2c2366fea38b17dc637d2a0b4f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/inertiajs/inertia-laravel/zipball/7e6a030ffab315099782a4844a2175455f511c68", - "reference": "7e6a030ffab315099782a4844a2175455f511c68", + "url": "https://api.github.com/repos/inertiajs/inertia-laravel/zipball/b732a5cc33423b2c2366fea38b17dc637d2a0b4f", + "reference": "b732a5cc33423b2c2366fea38b17dc637d2a0b4f", "shasum": "" }, "require": { "ext-json": "*", - "laravel/framework": "^8.74|^9.0|^10.0|^11.0", - "php": "^7.3|~8.0.0|~8.1.0|~8.2.0|~8.3.0|~8.4.0", - "symfony/console": "^5.3|^6.0|^7.0" + "laravel/framework": "^10.0|^11.0|^12.0", + "php": "^8.1.0", + "symfony/console": "^6.2|^7.0" }, "require-dev": { + "laravel/pint": "^1.16", "mockery/mockery": "^1.3.3", - "orchestra/testbench": "^6.45|^7.44|^8.25|^9.3", - "phpunit/phpunit": "^8.0|^9.5.8|^10.4", + "orchestra/testbench": "^8.0|^9.2|^10.0", + "phpunit/phpunit": "^10.4|^11.5", "roave/security-advisories": "dev-master" }, "suggest": { @@ -3478,9 +3483,6 @@ "providers": [ "Inertia\\ServiceProvider" ] - }, - "branch-alias": { - "dev-master": "1.x-dev" } }, "autoload": { @@ -3509,28 +3511,22 @@ ], "support": { "issues": "https://github.com/inertiajs/inertia-laravel/issues", - "source": "https://github.com/inertiajs/inertia-laravel/tree/v1.3.2" + "source": "https://github.com/inertiajs/inertia-laravel/tree/v2.0.3" }, - "funding": [ - { - "url": "https://github.com/reinink", - "type": "github" - } - ], - "time": "2024-12-05T14:52:50+00:00" + "time": "2025-06-20T07:38:21+00:00" }, { "name": "jawira/case-converter", - "version": "v3.5.2", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/jawira/case-converter.git", - "reference": "a3c957aac2b3ef7389c4a7930b952fb8aa740954" + "reference": "de9956122568743a83e0fc7e2eaa92c1b0de3f18" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jawira/case-converter/zipball/a3c957aac2b3ef7389c4a7930b952fb8aa740954", - "reference": "a3c957aac2b3ef7389c4a7930b952fb8aa740954", + "url": "https://api.github.com/repos/jawira/case-converter/zipball/de9956122568743a83e0fc7e2eaa92c1b0de3f18", + "reference": "de9956122568743a83e0fc7e2eaa92c1b0de3f18", "shasum": "" }, "require": { @@ -3581,22 +3577,22 @@ ], "support": { "issues": "https://github.com/jawira/case-converter/issues", - "source": "https://github.com/jawira/case-converter/tree/v3.5.2" + "source": "https://github.com/jawira/case-converter/tree/v3.6.0" }, - "time": "2024-12-21T19:43:32+00:00" + "time": "2025-06-13T21:12:55+00:00" }, { "name": "justinrainbow/json-schema", - "version": "6.4.1", + "version": "6.4.2", "source": { "type": "git", "url": "https://github.com/jsonrainbow/json-schema.git", - "reference": "35d262c94959571e8736db1e5c9bc36ab94ae900" + "reference": "ce1fd2d47799bb60668643bc6220f6278a4c1d02" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jsonrainbow/json-schema/zipball/35d262c94959571e8736db1e5c9bc36ab94ae900", - "reference": "35d262c94959571e8736db1e5c9bc36ab94ae900", + "url": "https://api.github.com/repos/jsonrainbow/json-schema/zipball/ce1fd2d47799bb60668643bc6220f6278a4c1d02", + "reference": "ce1fd2d47799bb60668643bc6220f6278a4c1d02", "shasum": "" }, "require": { @@ -3656,22 +3652,22 @@ ], "support": { "issues": "https://github.com/jsonrainbow/json-schema/issues", - "source": "https://github.com/jsonrainbow/json-schema/tree/6.4.1" + "source": "https://github.com/jsonrainbow/json-schema/tree/6.4.2" }, - "time": "2025-04-04T13:08:07+00:00" + "time": "2025-06-03T18:27:04+00:00" }, { "name": "kirschbaum-development/eloquent-power-joins", - "version": "4.2.3", + "version": "4.2.6", "source": { "type": "git", "url": "https://github.com/kirschbaum-development/eloquent-power-joins.git", - "reference": "d04e06b12e5e7864c303b8a8c6045bfcd4e2c641" + "reference": "72cff1e838bb3f826dc09a5566219ad7fa56237f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/kirschbaum-development/eloquent-power-joins/zipball/d04e06b12e5e7864c303b8a8c6045bfcd4e2c641", - "reference": "d04e06b12e5e7864c303b8a8c6045bfcd4e2c641", + "url": "https://api.github.com/repos/kirschbaum-development/eloquent-power-joins/zipball/72cff1e838bb3f826dc09a5566219ad7fa56237f", + "reference": "72cff1e838bb3f826dc09a5566219ad7fa56237f", "shasum": "" }, "require": { @@ -3719,9 +3715,9 @@ ], "support": { "issues": "https://github.com/kirschbaum-development/eloquent-power-joins/issues", - "source": "https://github.com/kirschbaum-development/eloquent-power-joins/tree/4.2.3" + "source": "https://github.com/kirschbaum-development/eloquent-power-joins/tree/4.2.6" }, - "time": "2025-04-01T14:41:56+00:00" + "time": "2025-07-10T16:55:34+00:00" }, { "name": "korridor/laravel-computed-attributes", @@ -4055,16 +4051,16 @@ }, { "name": "laminas/laminas-diactoros", - "version": "3.5.0", + "version": "3.6.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-diactoros.git", - "reference": "143a16306602ce56b8b092a7914fef03c37f9ed2" + "reference": "b068eac123f21c0e592de41deeb7403b88e0a89f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-diactoros/zipball/143a16306602ce56b8b092a7914fef03c37f9ed2", - "reference": "143a16306602ce56b8b092a7914fef03c37f9ed2", + "url": "https://api.github.com/repos/laminas/laminas-diactoros/zipball/b068eac123f21c0e592de41deeb7403b88e0a89f", + "reference": "b068eac123f21c0e592de41deeb7403b88e0a89f", "shasum": "" }, "require": { @@ -4085,7 +4081,7 @@ "ext-gd": "*", "ext-libxml": "*", "http-interop/http-factory-tests": "^2.2.0", - "laminas/laminas-coding-standard": "~2.5.0", + "laminas/laminas-coding-standard": "~3.0.0", "php-http/psr7-integration-tests": "^1.4.0", "phpunit/phpunit": "^10.5.36", "psalm/plugin-phpunit": "^0.19.0", @@ -4139,20 +4135,20 @@ "type": "community_bridge" } ], - "time": "2024-10-14T11:59:49+00:00" + "time": "2025-05-05T16:03:34+00:00" }, { "name": "laravel/fortify", - "version": "v1.25.4", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/laravel/fortify.git", - "reference": "f185600e2d3a861834ad00ee3b7863f26ac25d3f" + "reference": "0fb2ec99dfee77ed66884668fc06683acca91ebd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/fortify/zipball/f185600e2d3a861834ad00ee3b7863f26ac25d3f", - "reference": "f185600e2d3a861834ad00ee3b7863f26ac25d3f", + "url": "https://api.github.com/repos/laravel/fortify/zipball/0fb2ec99dfee77ed66884668fc06683acca91ebd", + "reference": "0fb2ec99dfee77ed66884668fc06683acca91ebd", "shasum": "" }, "require": { @@ -4204,24 +4200,24 @@ "issues": "https://github.com/laravel/fortify/issues", "source": "https://github.com/laravel/fortify" }, - "time": "2025-01-26T19:34:46+00:00" + "time": "2025-06-11T14:30:52+00:00" }, { "name": "laravel/framework", - "version": "v11.44.6", + "version": "v12.20.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "9d34abe28085fa74b46382ebddd0350f780d055f" + "reference": "1b9a00f8caf5503c92aa436279172beae1a484ff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/9d34abe28085fa74b46382ebddd0350f780d055f", - "reference": "9d34abe28085fa74b46382ebddd0350f780d055f", + "url": "https://api.github.com/repos/laravel/framework/zipball/1b9a00f8caf5503c92aa436279172beae1a484ff", + "reference": "1b9a00f8caf5503c92aa436279172beae1a484ff", "shasum": "" }, "require": { - "brick/math": "^0.9.3|^0.10.2|^0.11|^0.12", + "brick/math": "^0.11|^0.12|^0.13", "composer-runtime-api": "^2.2", "doctrine/inflector": "^2.0.5", "dragonmantank/cron-expression": "^3.4", @@ -4236,32 +4232,32 @@ "fruitcake/php-cors": "^1.3", "guzzlehttp/guzzle": "^7.8.2", "guzzlehttp/uri-template": "^1.0", - "laravel/prompts": "^0.1.18|^0.2.0|^0.3.0", + "laravel/prompts": "^0.3.0", "laravel/serializable-closure": "^1.3|^2.0", - "league/commonmark": "^2.6", + "league/commonmark": "^2.7", "league/flysystem": "^3.25.1", "league/flysystem-local": "^3.25.1", "league/uri": "^7.5.1", "monolog/monolog": "^3.0", - "nesbot/carbon": "^2.72.6|^3.8.4", + "nesbot/carbon": "^3.8.4", "nunomaduro/termwind": "^2.0", "php": "^8.2", "psr/container": "^1.1.1|^2.0.1", "psr/log": "^1.0|^2.0|^3.0", "psr/simple-cache": "^1.0|^2.0|^3.0", "ramsey/uuid": "^4.7", - "symfony/console": "^7.0.3", - "symfony/error-handler": "^7.0.3", - "symfony/finder": "^7.0.3", + "symfony/console": "^7.2.0", + "symfony/error-handler": "^7.2.0", + "symfony/finder": "^7.2.0", "symfony/http-foundation": "^7.2.0", - "symfony/http-kernel": "^7.0.3", - "symfony/mailer": "^7.0.3", - "symfony/mime": "^7.0.3", + "symfony/http-kernel": "^7.2.0", + "symfony/mailer": "^7.2.0", + "symfony/mime": "^7.2.0", "symfony/polyfill-php83": "^1.31", - "symfony/process": "^7.0.3", - "symfony/routing": "^7.0.3", - "symfony/uid": "^7.0.3", - "symfony/var-dumper": "^7.0.3", + "symfony/process": "^7.2.0", + "symfony/routing": "^7.2.0", + "symfony/uid": "^7.2.0", + "symfony/var-dumper": "^7.2.0", "tijsverkoyen/css-to-inline-styles": "^2.2.5", "vlucas/phpdotenv": "^5.6.1", "voku/portable-ascii": "^2.0.2" @@ -4325,17 +4321,17 @@ "league/flysystem-read-only": "^3.25.1", "league/flysystem-sftp-v3": "^3.25.1", "mockery/mockery": "^1.6.10", - "orchestra/testbench-core": "^9.11.2", - "pda/pheanstalk": "^5.0.6", + "orchestra/testbench-core": "^10.0.0", + "pda/pheanstalk": "^5.0.6|^7.0.0", "php-http/discovery": "^1.15", "phpstan/phpstan": "^2.0", - "phpunit/phpunit": "^10.5.35|^11.3.6|^12.0.1", - "predis/predis": "^2.3", + "phpunit/phpunit": "^10.5.35|^11.5.3|^12.0.1", + "predis/predis": "^2.3|^3.0", "resend/resend-php": "^0.10.0", - "symfony/cache": "^7.0.3", - "symfony/http-client": "^7.0.3", - "symfony/psr-http-message-bridge": "^7.0.3", - "symfony/translation": "^7.0.3" + "symfony/cache": "^7.2.0", + "symfony/http-client": "^7.2.0", + "symfony/psr-http-message-bridge": "^7.2.0", + "symfony/translation": "^7.2.0" }, "suggest": { "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).", @@ -4361,22 +4357,22 @@ "mockery/mockery": "Required to use mocking (^1.6).", "pda/pheanstalk": "Required to use the beanstalk queue driver (^5.0).", "php-http/discovery": "Required to use PSR-7 bridging features (^1.15).", - "phpunit/phpunit": "Required to use assertions and run tests (^10.5.35|^11.3.6|^12.0.1).", - "predis/predis": "Required to use the predis connector (^2.3).", + "phpunit/phpunit": "Required to use assertions and run tests (^10.5.35|^11.5.3|^12.0.1).", + "predis/predis": "Required to use the predis connector (^2.3|^3.0).", "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^6.0|^7.0).", "resend/resend-php": "Required to enable support for the Resend mail transport (^0.10.0).", - "symfony/cache": "Required to PSR-6 cache bridge (^7.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^7.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^7.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^7.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^7.0).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^7.0)." + "symfony/cache": "Required to PSR-6 cache bridge (^7.2).", + "symfony/filesystem": "Required to enable support for relative symbolic links (^7.2).", + "symfony/http-client": "Required to enable support for the Symfony API mail transports (^7.2).", + "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^7.2).", + "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^7.2).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^7.2)." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "11.x-dev" + "dev-master": "12.x-dev" } }, "autoload": { @@ -4419,20 +4415,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2025-04-25T08:33:55+00:00" + "time": "2025-07-08T15:02:21+00:00" }, { "name": "laravel/jetstream", - "version": "v5.3.6", + "version": "v5.3.7", "source": { "type": "git", "url": "https://github.com/laravel/jetstream.git", - "reference": "cb4371c07f533b61cdc42a85b582ada68ed77e43" + "reference": "b606c21daeaa38547f853789212e3802b0f6ff08" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/jetstream/zipball/cb4371c07f533b61cdc42a85b582ada68ed77e43", - "reference": "cb4371c07f533b61cdc42a85b582ada68ed77e43", + "url": "https://api.github.com/repos/laravel/jetstream/zipball/b606c21daeaa38547f853789212e3802b0f6ff08", + "reference": "b606c21daeaa38547f853789212e3802b0f6ff08", "shasum": "" }, "require": { @@ -4486,20 +4482,20 @@ "issues": "https://github.com/laravel/jetstream/issues", "source": "https://github.com/laravel/jetstream" }, - "time": "2025-03-24T16:58:34+00:00" + "time": "2025-06-16T13:27:00+00:00" }, { "name": "laravel/octane", - "version": "v2.9.1", + "version": "v2.11.0", "source": { "type": "git", "url": "https://github.com/laravel/octane.git", - "reference": "445002b2551c837d60cda4324259063c356dfb56" + "reference": "00e4d40047a24c267c9d3d0abfb47a6e27a7dc7f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/octane/zipball/445002b2551c837d60cda4324259063c356dfb56", - "reference": "445002b2551c837d60cda4324259063c356dfb56", + "url": "https://api.github.com/repos/laravel/octane/zipball/00e4d40047a24c267c9d3d0abfb47a6e27a7dc7f", + "reference": "00e4d40047a24c267c9d3d0abfb47a6e27a7dc7f", "shasum": "" }, "require": { @@ -4576,47 +4572,48 @@ "issues": "https://github.com/laravel/octane/issues", "source": "https://github.com/laravel/octane" }, - "time": "2025-04-13T21:10:35+00:00" + "time": "2025-06-28T17:28:13+00:00" }, { "name": "laravel/passport", - "version": "v12.4.2", + "version": "v13.0.5", "source": { "type": "git", "url": "https://github.com/laravel/passport.git", - "reference": "65a885607b62d361aedaeb10a946bc6b5a954262" + "reference": "9a3b47bc784dc9334aad67f690b13230b0434960" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/passport/zipball/65a885607b62d361aedaeb10a946bc6b5a954262", - "reference": "65a885607b62d361aedaeb10a946bc6b5a954262", + "url": "https://api.github.com/repos/laravel/passport/zipball/9a3b47bc784dc9334aad67f690b13230b0434960", + "reference": "9a3b47bc784dc9334aad67f690b13230b0434960", "shasum": "" }, "require": { "ext-json": "*", + "ext-openssl": "*", "firebase/php-jwt": "^6.4", - "illuminate/auth": "^9.21|^10.0|^11.0|^12.0", - "illuminate/console": "^9.21|^10.0|^11.0|^12.0", - "illuminate/container": "^9.21|^10.0|^11.0|^12.0", - "illuminate/contracts": "^9.21|^10.0|^11.0|^12.0", - "illuminate/cookie": "^9.21|^10.0|^11.0|^12.0", - "illuminate/database": "^9.21|^10.0|^11.0|^12.0", - "illuminate/encryption": "^9.21|^10.0|^11.0|^12.0", - "illuminate/http": "^9.21|^10.0|^11.0|^12.0", - "illuminate/support": "^9.21|^10.0|^11.0|^12.0", - "lcobucci/jwt": "^4.3|^5.0", - "league/oauth2-server": "^8.5.3", - "nyholm/psr7": "^1.5", - "php": "^8.0", - "phpseclib/phpseclib": "^2.0|^3.0", - "symfony/console": "^6.0|^7.0", - "symfony/psr-http-message-bridge": "^2.1|^6.0|^7.0" + "illuminate/auth": "^11.35|^12.0", + "illuminate/console": "^11.35|^12.0", + "illuminate/container": "^11.35|^12.0", + "illuminate/contracts": "^11.35|^12.0", + "illuminate/cookie": "^11.35|^12.0", + "illuminate/database": "^11.35|^12.0", + "illuminate/encryption": "^11.35|^12.0", + "illuminate/http": "^11.35|^12.0", + "illuminate/support": "^11.35|^12.0", + "league/oauth2-server": "^9.2", + "php": "^8.2", + "php-http/discovery": "^1.20", + "phpseclib/phpseclib": "^3.0", + "psr/http-factory-implementation": "*", + "symfony/console": "^7.1", + "symfony/psr-http-message-bridge": "^7.1" }, "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^7.35|^8.14|^9.0|^10.0", - "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^9.3|^10.5|^11.5" + "mockery/mockery": "^1.6", + "orchestra/testbench": "^9.9|^10.0", + "phpstan/phpstan": "^2.0", + "phpunit/phpunit": "^11.5|^12.0" }, "type": "library", "extra": { @@ -4652,20 +4649,20 @@ "issues": "https://github.com/laravel/passport/issues", "source": "https://github.com/laravel/passport" }, - "time": "2025-02-12T16:11:33+00:00" + "time": "2025-06-12T15:12:08+00:00" }, { "name": "laravel/prompts", - "version": "v0.3.5", + "version": "v0.3.6", "source": { "type": "git", "url": "https://github.com/laravel/prompts.git", - "reference": "57b8f7efe40333cdb925700891c7d7465325d3b1" + "reference": "86a8b692e8661d0fb308cec64f3d176821323077" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/prompts/zipball/57b8f7efe40333cdb925700891c7d7465325d3b1", - "reference": "57b8f7efe40333cdb925700891c7d7465325d3b1", + "url": "https://api.github.com/repos/laravel/prompts/zipball/86a8b692e8661d0fb308cec64f3d176821323077", + "reference": "86a8b692e8661d0fb308cec64f3d176821323077", "shasum": "" }, "require": { @@ -4709,9 +4706,9 @@ "description": "Add beautiful and user-friendly forms to your command-line applications.", "support": { "issues": "https://github.com/laravel/prompts/issues", - "source": "https://github.com/laravel/prompts/tree/v0.3.5" + "source": "https://github.com/laravel/prompts/tree/v0.3.6" }, - "time": "2025-02-11T13:34:40+00:00" + "time": "2025-07-07T14:17:42+00:00" }, { "name": "laravel/serializable-closure", @@ -4979,16 +4976,16 @@ }, { "name": "league/commonmark", - "version": "2.6.2", + "version": "2.7.0", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "06c3b0bf2540338094575612f4a1778d0d2d5e94" + "reference": "6fbb36d44824ed4091adbcf4c7d4a3923cdb3405" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/06c3b0bf2540338094575612f4a1778d0d2d5e94", - "reference": "06c3b0bf2540338094575612f4a1778d0d2d5e94", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/6fbb36d44824ed4091adbcf4c7d4a3923cdb3405", + "reference": "6fbb36d44824ed4091adbcf4c7d4a3923cdb3405", "shasum": "" }, "require": { @@ -5025,7 +5022,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.7-dev" + "dev-main": "2.8-dev" } }, "autoload": { @@ -5082,7 +5079,7 @@ "type": "tidelift" } ], - "time": "2025-04-18T21:09:27+00:00" + "time": "2025-05-05T12:20:28+00:00" }, { "name": "league/config", @@ -5168,16 +5165,16 @@ }, { "name": "league/csv", - "version": "9.23.0", + "version": "9.24.1", "source": { "type": "git", "url": "https://github.com/thephpleague/csv.git", - "reference": "774008ad8a634448e4f8e288905e070e8b317ff3" + "reference": "e0221a3f16aa2a823047d59fab5809d552e29bc8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/csv/zipball/774008ad8a634448e4f8e288905e070e8b317ff3", - "reference": "774008ad8a634448e4f8e288905e070e8b317ff3", + "url": "https://api.github.com/repos/thephpleague/csv/zipball/e0221a3f16aa2a823047d59fab5809d552e29bc8", + "reference": "e0221a3f16aa2a823047d59fab5809d552e29bc8", "shasum": "" }, "require": { @@ -5187,14 +5184,14 @@ "require-dev": { "ext-dom": "*", "ext-xdebug": "*", - "friendsofphp/php-cs-fixer": "^3.69.0", - "phpbench/phpbench": "^1.4.0", - "phpstan/phpstan": "^1.12.18", + "friendsofphp/php-cs-fixer": "^3.75.0", + "phpbench/phpbench": "^1.4.1", + "phpstan/phpstan": "^1.12.27", "phpstan/phpstan-deprecation-rules": "^1.2.1", "phpstan/phpstan-phpunit": "^1.4.2", "phpstan/phpstan-strict-rules": "^1.6.2", - "phpunit/phpunit": "^10.5.16 || ^11.5.7", - "symfony/var-dumper": "^6.4.8 || ^7.2.3" + "phpunit/phpunit": "^10.5.16 || ^11.5.22", + "symfony/var-dumper": "^6.4.8 || ^7.3.0" }, "suggest": { "ext-dom": "Required to use the XMLConverter and the HTMLConverter classes", @@ -5255,33 +5252,38 @@ "type": "github" } ], - "time": "2025-03-28T06:52:04+00:00" + "time": "2025-06-25T14:53:51+00:00" }, { "name": "league/event", - "version": "2.3.0", + "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/thephpleague/event.git", - "reference": "062ebb450efbe9a09bc2478e89b7c933875b0935" + "reference": "ec38ff7ea10cad7d99a79ac937fbcffb9334c210" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/event/zipball/062ebb450efbe9a09bc2478e89b7c933875b0935", - "reference": "062ebb450efbe9a09bc2478e89b7c933875b0935", + "url": "https://api.github.com/repos/thephpleague/event/zipball/ec38ff7ea10cad7d99a79ac937fbcffb9334c210", + "reference": "ec38ff7ea10cad7d99a79ac937fbcffb9334c210", "shasum": "" }, "require": { - "php": ">=7.1.0" + "php": ">=7.2.0", + "psr/event-dispatcher": "^1.0" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0" }, "require-dev": { - "henrikbjorn/phpspec-code-coverage": "~1.0.1", - "phpspec/phpspec": "^2.2" + "friendsofphp/php-cs-fixer": "^2.16", + "phpstan/phpstan": "^0.12.45", + "phpunit/phpunit": "^8.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.2-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -5307,22 +5309,22 @@ ], "support": { "issues": "https://github.com/thephpleague/event/issues", - "source": "https://github.com/thephpleague/event/tree/2.3.0" + "source": "https://github.com/thephpleague/event/tree/3.0.3" }, - "time": "2025-03-14T19:51:10+00:00" + "time": "2024-09-04T16:06:53+00:00" }, { "name": "league/flysystem", - "version": "3.29.1", + "version": "3.30.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "edc1bb7c86fab0776c3287dbd19b5fa278347319" + "reference": "2203e3151755d874bb2943649dae1eb8533ac93e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/edc1bb7c86fab0776c3287dbd19b5fa278347319", - "reference": "edc1bb7c86fab0776c3287dbd19b5fa278347319", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/2203e3151755d874bb2943649dae1eb8533ac93e", + "reference": "2203e3151755d874bb2943649dae1eb8533ac93e", "shasum": "" }, "require": { @@ -5346,13 +5348,13 @@ "composer/semver": "^3.0", "ext-fileinfo": "*", "ext-ftp": "*", - "ext-mongodb": "^1.3", + "ext-mongodb": "^1.3|^2", "ext-zip": "*", "friendsofphp/php-cs-fixer": "^3.5", "google/cloud-storage": "^1.23", "guzzlehttp/psr7": "^2.6", "microsoft/azure-storage-blob": "^1.1", - "mongodb/mongodb": "^1.2", + "mongodb/mongodb": "^1.2|^2", "phpseclib/phpseclib": "^3.0.36", "phpstan/phpstan": "^1.10", "phpunit/phpunit": "^9.5.11|^10.0", @@ -5390,9 +5392,9 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/3.29.1" + "source": "https://github.com/thephpleague/flysystem/tree/3.30.0" }, - "time": "2024-10-08T08:58:34+00:00" + "time": "2025-06-25T13:29:59+00:00" }, { "name": "league/flysystem-aws-s3-v3", @@ -5451,16 +5453,16 @@ }, { "name": "league/flysystem-local", - "version": "3.29.0", + "version": "3.30.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem-local.git", - "reference": "e0e8d52ce4b2ed154148453d321e97c8e931bd27" + "reference": "6691915f77c7fb69adfb87dcd550052dc184ee10" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/e0e8d52ce4b2ed154148453d321e97c8e931bd27", - "reference": "e0e8d52ce4b2ed154148453d321e97c8e931bd27", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/6691915f77c7fb69adfb87dcd550052dc184ee10", + "reference": "6691915f77c7fb69adfb87dcd550052dc184ee10", "shasum": "" }, "require": { @@ -5494,22 +5496,22 @@ "local" ], "support": { - "source": "https://github.com/thephpleague/flysystem-local/tree/3.29.0" + "source": "https://github.com/thephpleague/flysystem-local/tree/3.30.0" }, - "time": "2024-08-09T21:24:39+00:00" + "time": "2025-05-21T10:34:19+00:00" }, { "name": "league/iso3166", - "version": "4.3.2", + "version": "4.3.3", "source": { "type": "git", "url": "https://github.com/alcohol/iso3166.git", - "reference": "5133fed7d54728222f4058702487dccedda20472" + "reference": "3f692113a1c07859ec69303a0127b43da8a66768" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/alcohol/iso3166/zipball/5133fed7d54728222f4058702487dccedda20472", - "reference": "5133fed7d54728222f4058702487dccedda20472", + "url": "https://api.github.com/repos/alcohol/iso3166/zipball/3f692113a1c07859ec69303a0127b43da8a66768", + "reference": "3f692113a1c07859ec69303a0127b43da8a66768", "shasum": "" }, "require": { @@ -5563,7 +5565,7 @@ "type": "github" } ], - "time": "2024-10-10T07:39:24+00:00" + "time": "2025-06-05T08:06:30+00:00" }, { "name": "league/mime-type-detection", @@ -5623,38 +5625,46 @@ }, { "name": "league/oauth2-server", - "version": "8.5.5", + "version": "9.2.0", "source": { "type": "git", "url": "https://github.com/thephpleague/oauth2-server.git", - "reference": "cc8778350f905667e796b3c2364a9d3bd7a73518" + "reference": "00323013403e1a1e0f424affafca56c28b60c22c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/oauth2-server/zipball/cc8778350f905667e796b3c2364a9d3bd7a73518", - "reference": "cc8778350f905667e796b3c2364a9d3bd7a73518", + "url": "https://api.github.com/repos/thephpleague/oauth2-server/zipball/00323013403e1a1e0f424affafca56c28b60c22c", + "reference": "00323013403e1a1e0f424affafca56c28b60c22c", "shasum": "" }, "require": { - "defuse/php-encryption": "^2.3", + "defuse/php-encryption": "^2.4", + "ext-json": "*", "ext-openssl": "*", - "lcobucci/clock": "^2.2 || ^3.0", - "lcobucci/jwt": "^4.3 || ^5.0", - "league/event": "^2.2", - "league/uri": "^6.7 || ^7.0", - "php": "^8.0", - "psr/http-message": "^1.0.1 || ^2.0" + "lcobucci/clock": "^2.3 || ^3.0", + "lcobucci/jwt": "^5.0", + "league/event": "^3.0", + "league/uri": "^7.0", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", + "psr/http-message": "^2.0", + "psr/http-server-middleware": "^1.0" }, "replace": { "league/oauth2server": "*", "lncd/oauth2": "*" }, "require-dev": { - "laminas/laminas-diactoros": "^3.0.0", - "phpstan/phpstan": "^0.12.57", - "phpstan/phpstan-phpunit": "^0.12.16", - "phpunit/phpunit": "^9.6.6", - "roave/security-advisories": "dev-master" + "laminas/laminas-diactoros": "^3.5", + "php-parallel-lint/php-parallel-lint": "^1.3.2", + "phpstan/extension-installer": "^1.3.1", + "phpstan/phpstan": "^1.12", + "phpstan/phpstan-deprecation-rules": "^1.1.4", + "phpstan/phpstan-phpunit": "^1.3.15", + "phpstan/phpstan-strict-rules": "^1.5.2", + "phpunit/phpunit": "^9.6.21", + "roave/security-advisories": "dev-master", + "slevomat/coding-standard": "^8.14.1", + "squizlabs/php_codesniffer": "^3.8" }, "type": "library", "autoload": { @@ -5699,7 +5709,7 @@ ], "support": { "issues": "https://github.com/thephpleague/oauth2-server/issues", - "source": "https://github.com/thephpleague/oauth2-server/tree/8.5.5" + "source": "https://github.com/thephpleague/oauth2-server/tree/9.2.0" }, "funding": [ { @@ -5707,7 +5717,7 @@ "type": "github" } ], - "time": "2024-12-20T23:06:10+00:00" + "time": "2025-02-15T00:49:10+00:00" }, { "name": "league/uri", @@ -6601,16 +6611,16 @@ }, { "name": "myclabs/deep-copy", - "version": "1.13.0", + "version": "1.13.3", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "024473a478be9df5fdaca2c793f2232fe788e414" + "reference": "faed855a7b5f4d4637717c2b3863e277116beb36" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/024473a478be9df5fdaca2c793f2232fe788e414", - "reference": "024473a478be9df5fdaca2c793f2232fe788e414", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/faed855a7b5f4d4637717c2b3863e277116beb36", + "reference": "faed855a7b5f4d4637717c2b3863e277116beb36", "shasum": "" }, "require": { @@ -6649,7 +6659,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.13.0" + "source": "https://github.com/myclabs/DeepCopy/tree/1.13.3" }, "funding": [ { @@ -6657,20 +6667,20 @@ "type": "tidelift" } ], - "time": "2025-02-12T12:17:51+00:00" + "time": "2025-07-05T12:25:42+00:00" }, { "name": "nesbot/carbon", - "version": "3.9.0", + "version": "3.10.1", "source": { "type": "git", "url": "https://github.com/CarbonPHP/carbon.git", - "reference": "6d16a8a015166fe54e22c042e0805c5363aef50d" + "reference": "1fd1935b2d90aef2f093c5e35f7ae1257c448d00" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/6d16a8a015166fe54e22c042e0805c5363aef50d", - "reference": "6d16a8a015166fe54e22c042e0805c5363aef50d", + "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/1fd1935b2d90aef2f093c5e35f7ae1257c448d00", + "reference": "1fd1935b2d90aef2f093c5e35f7ae1257c448d00", "shasum": "" }, "require": { @@ -6678,9 +6688,9 @@ "ext-json": "*", "php": "^8.1", "psr/clock": "^1.0", - "symfony/clock": "^6.3 || ^7.0", + "symfony/clock": "^6.3.12 || ^7.0", "symfony/polyfill-mbstring": "^1.0", - "symfony/translation": "^4.4.18 || ^5.2.1|| ^6.0 || ^7.0" + "symfony/translation": "^4.4.18 || ^5.2.1 || ^6.0 || ^7.0" }, "provide": { "psr/clock-implementation": "1.0" @@ -6688,14 +6698,13 @@ "require-dev": { "doctrine/dbal": "^3.6.3 || ^4.0", "doctrine/orm": "^2.15.2 || ^3.0", - "friendsofphp/php-cs-fixer": "^3.57.2", + "friendsofphp/php-cs-fixer": "^3.75.0", "kylekatarnls/multi-tester": "^2.5.3", - "ondrejmirtes/better-reflection": "^6.25.0.4", "phpmd/phpmd": "^2.15.0", - "phpstan/extension-installer": "^1.3.1", - "phpstan/phpstan": "^1.11.2", - "phpunit/phpunit": "^10.5.20", - "squizlabs/php_codesniffer": "^3.9.0" + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan": "^2.1.17", + "phpunit/phpunit": "^10.5.46", + "squizlabs/php_codesniffer": "^3.13.0" }, "bin": [ "bin/carbon" @@ -6763,7 +6772,7 @@ "type": "tidelift" } ], - "time": "2025-03-27T12:57:33+00:00" + "time": "2025-06-21T15:19:35+00:00" }, { "name": "nette/schema", @@ -6829,16 +6838,16 @@ }, { "name": "nette/utils", - "version": "v4.0.6", + "version": "v4.0.7", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "ce708655043c7050eb050df361c5e313cf708309" + "reference": "e67c4061eb40b9c113b218214e42cb5a0dda28f2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/ce708655043c7050eb050df361c5e313cf708309", - "reference": "ce708655043c7050eb050df361c5e313cf708309", + "url": "https://api.github.com/repos/nette/utils/zipball/e67c4061eb40b9c113b218214e42cb5a0dda28f2", + "reference": "e67c4061eb40b9c113b218214e42cb5a0dda28f2", "shasum": "" }, "require": { @@ -6909,22 +6918,22 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.0.6" + "source": "https://github.com/nette/utils/tree/v4.0.7" }, - "time": "2025-03-30T21:06:30+00:00" + "time": "2025-06-03T04:55:08+00:00" }, { "name": "nikic/php-parser", - "version": "v5.4.0", + "version": "v5.5.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "447a020a1f875a434d62f2a401f53b82a396e494" + "reference": "ae59794362fe85e051a58ad36b289443f57be7a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/447a020a1f875a434d62f2a401f53b82a396e494", - "reference": "447a020a1f875a434d62f2a401f53b82a396e494", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/ae59794362fe85e051a58ad36b289443f57be7a9", + "reference": "ae59794362fe85e051a58ad36b289443f57be7a9", "shasum": "" }, "require": { @@ -6967,9 +6976,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.4.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.5.0" }, - "time": "2024-12-30T11:07:19+00:00" + "time": "2025-05-31T08:24:38+00:00" }, { "name": "novadaemon/filament-pretty-json", @@ -6977,12 +6986,12 @@ "source": { "type": "git", "url": "https://github.com/novadaemon/filament-pretty-json.git", - "reference": "af7c6693d77fa97018d01a9b27fcc01dbf6ee23f" + "reference": "e1577286c6b26d85ba0deaf95fcd13ee6d09c831" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/novadaemon/filament-pretty-json/zipball/af7c6693d77fa97018d01a9b27fcc01dbf6ee23f", - "reference": "af7c6693d77fa97018d01a9b27fcc01dbf6ee23f", + "url": "https://api.github.com/repos/novadaemon/filament-pretty-json/zipball/e1577286c6b26d85ba0deaf95fcd13ee6d09c831", + "reference": "e1577286c6b26d85ba0deaf95fcd13ee6d09c831", "shasum": "" }, "require": { @@ -7041,35 +7050,35 @@ "type": "github" } ], - "time": "2025-03-31T15:02:02+00:00" + "time": "2025-05-12T12:42:29+00:00" }, { "name": "nunomaduro/termwind", - "version": "v2.3.0", + "version": "v2.3.1", "source": { "type": "git", "url": "https://github.com/nunomaduro/termwind.git", - "reference": "52915afe6a1044e8b9cee1bcff836fb63acf9cda" + "reference": "dfa08f390e509967a15c22493dc0bac5733d9123" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/52915afe6a1044e8b9cee1bcff836fb63acf9cda", - "reference": "52915afe6a1044e8b9cee1bcff836fb63acf9cda", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/dfa08f390e509967a15c22493dc0bac5733d9123", + "reference": "dfa08f390e509967a15c22493dc0bac5733d9123", "shasum": "" }, "require": { "ext-mbstring": "*", "php": "^8.2", - "symfony/console": "^7.1.8" + "symfony/console": "^7.2.6" }, "require-dev": { - "illuminate/console": "^11.33.2", - "laravel/pint": "^1.18.2", + "illuminate/console": "^11.44.7", + "laravel/pint": "^1.22.0", "mockery/mockery": "^1.6.12", - "pestphp/pest": "^2.36.0", - "phpstan/phpstan": "^1.12.11", - "phpstan/phpstan-strict-rules": "^1.6.1", - "symfony/var-dumper": "^7.1.8", + "pestphp/pest": "^2.36.0 || ^3.8.2", + "phpstan/phpstan": "^1.12.25", + "phpstan/phpstan-strict-rules": "^1.6.2", + "symfony/var-dumper": "^7.2.6", "thecodingmachine/phpstan-strict-rules": "^1.0.0" }, "type": "library", @@ -7112,7 +7121,7 @@ ], "support": { "issues": "https://github.com/nunomaduro/termwind/issues", - "source": "https://github.com/nunomaduro/termwind/tree/v2.3.0" + "source": "https://github.com/nunomaduro/termwind/tree/v2.3.1" }, "funding": [ { @@ -7128,20 +7137,20 @@ "type": "github" } ], - "time": "2024-11-21T10:39:51+00:00" + "time": "2025-05-08T08:14:37+00:00" }, { "name": "nwidart/laravel-modules", - "version": "v11.1.10", + "version": "v12.0.4", "source": { "type": "git", "url": "https://github.com/nWidart/laravel-modules.git", - "reference": "6a987af3103bcf2dc31ebd18a68373bc8c7a99f7" + "reference": "6e1f50de63366206b06ec53bbc823282977ddd06" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nWidart/laravel-modules/zipball/6a987af3103bcf2dc31ebd18a68373bc8c7a99f7", - "reference": "6a987af3103bcf2dc31ebd18a68373bc8c7a99f7", + "url": "https://api.github.com/repos/nWidart/laravel-modules/zipball/6e1f50de63366206b06ec53bbc823282977ddd06", + "reference": "6e1f50de63366206b06ec53bbc823282977ddd06", "shasum": "" }, "require": { @@ -7153,12 +7162,12 @@ }, "require-dev": { "friendsofphp/php-cs-fixer": "^v3.52", - "laravel/framework": "^v11.33", + "laravel/framework": "^v12.0", "laravel/pint": "^1.16", "mockery/mockery": "^1.6", - "orchestra/testbench": "^v9.0", - "phpstan/phpstan": "^1.4", - "phpunit/phpunit": "^11.0", + "orchestra/testbench": "^v10.0", + "phpstan/phpstan": "^2.0", + "phpunit/phpunit": "^11.5.3|^12.0.", "spatie/phpunit-snapshot-assertions": "^5.0" }, "type": "library", @@ -7172,7 +7181,7 @@ ] }, "branch-alias": { - "dev-master": "11.0-dev" + "dev-master": "12.x-dev" } }, "autoload": { @@ -7205,7 +7214,7 @@ ], "support": { "issues": "https://github.com/nWidart/laravel-modules/issues", - "source": "https://github.com/nWidart/laravel-modules/tree/v11.1.10" + "source": "https://github.com/nWidart/laravel-modules/tree/v12.0.4" }, "funding": [ { @@ -7217,98 +7226,20 @@ "type": "github" } ], - "time": "2025-02-18T09:58:04+00:00" - }, - { - "name": "nyholm/psr7", - "version": "1.8.2", - "source": { - "type": "git", - "url": "https://github.com/Nyholm/psr7.git", - "reference": "a71f2b11690f4b24d099d6b16690a90ae14fc6f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Nyholm/psr7/zipball/a71f2b11690f4b24d099d6b16690a90ae14fc6f3", - "reference": "a71f2b11690f4b24d099d6b16690a90ae14fc6f3", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.1 || ^2.0" - }, - "provide": { - "php-http/message-factory-implementation": "1.0", - "psr/http-factory-implementation": "1.0", - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "http-interop/http-factory-tests": "^0.9", - "php-http/message-factory": "^1.0", - "php-http/psr7-integration-tests": "^1.0", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.4", - "symfony/error-handler": "^4.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-dev" - } - }, - "autoload": { - "psr-4": { - "Nyholm\\Psr7\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com" - }, - { - "name": "Martijn van der Ven", - "email": "martijn@vanderven.se" - } - ], - "description": "A fast PHP7 implementation of PSR-7", - "homepage": "https://tnyholm.se", - "keywords": [ - "psr-17", - "psr-7" - ], - "support": { - "issues": "https://github.com/Nyholm/psr7/issues", - "source": "https://github.com/Nyholm/psr7/tree/1.8.2" - }, - "funding": [ - { - "url": "https://github.com/Zegnat", - "type": "github" - }, - { - "url": "https://github.com/nyholm", - "type": "github" - } - ], - "time": "2024-09-09T07:06:30+00:00" + "time": "2025-06-29T09:23:53+00:00" }, { "name": "openspout/openspout", - "version": "v4.29.1", + "version": "v4.30.1", "source": { "type": "git", "url": "https://github.com/openspout/openspout.git", - "reference": "ec83106bc3922fe94c9d37976ba6b7259511c4c5" + "reference": "4550fc0dbf01aff86d12691f8a7f6ce22d2b2edc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/openspout/openspout/zipball/ec83106bc3922fe94c9d37976ba6b7259511c4c5", - "reference": "ec83106bc3922fe94c9d37976ba6b7259511c4c5", + "url": "https://api.github.com/repos/openspout/openspout/zipball/4550fc0dbf01aff86d12691f8a7f6ce22d2b2edc", + "reference": "4550fc0dbf01aff86d12691f8a7f6ce22d2b2edc", "shasum": "" }, "require": { @@ -7322,13 +7253,13 @@ }, "require-dev": { "ext-zlib": "*", - "friendsofphp/php-cs-fixer": "^3.71.0", - "infection/infection": "^0.29.14", - "phpbench/phpbench": "^1.4.0", - "phpstan/phpstan": "^2.1.8", - "phpstan/phpstan-phpunit": "^2.0.4", - "phpstan/phpstan-strict-rules": "^2.0.3", - "phpunit/phpunit": "^12.0.7" + "friendsofphp/php-cs-fixer": "^3.80.0", + "infection/infection": "^0.30.1", + "phpbench/phpbench": "^1.4.1", + "phpstan/phpstan": "^2.1.17", + "phpstan/phpstan-phpunit": "^2.0.6", + "phpstan/phpstan-strict-rules": "^2.0.4", + "phpunit/phpunit": "^12.2.6" }, "suggest": { "ext-iconv": "To handle non UTF-8 CSV files (if \"php-mbstring\" is not already installed or is too limited)", @@ -7376,7 +7307,7 @@ ], "support": { "issues": "https://github.com/openspout/openspout/issues", - "source": "https://github.com/openspout/openspout/tree/v4.29.1" + "source": "https://github.com/openspout/openspout/tree/v4.30.1" }, "funding": [ { @@ -7388,37 +7319,33 @@ "type": "github" } ], - "time": "2025-03-11T14:40:46+00:00" + "time": "2025-07-07T06:15:55+00:00" }, { "name": "owen-it/laravel-auditing", - "version": "v13.7.2", + "version": "v14.0.0", "source": { "type": "git", "url": "https://github.com/owen-it/laravel-auditing.git", - "reference": "4f72181622683bc667bbdd2e5fa09cd376329af4" + "reference": "f92602d1b3f53df29ddd577290e9d735ea707c53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/owen-it/laravel-auditing/zipball/4f72181622683bc667bbdd2e5fa09cd376329af4", - "reference": "4f72181622683bc667bbdd2e5fa09cd376329af4", + "url": "https://api.github.com/repos/owen-it/laravel-auditing/zipball/f92602d1b3f53df29ddd577290e9d735ea707c53", + "reference": "f92602d1b3f53df29ddd577290e9d735ea707c53", "shasum": "" }, "require": { "ext-json": "*", - "illuminate/console": "^7.0|^8.0|^9.0|^10.0|^11.0", - "illuminate/database": "^7.0|^8.0|^9.0|^10.0|^11.0", - "illuminate/filesystem": "^7.0|^8.0|^9.0|^10.0|^11.0", - "php": "^7.3|^8.0" + "illuminate/console": "^11.0|^12.0", + "illuminate/database": "^11.0|^12.0", + "illuminate/filesystem": "^11.0|^12.0", + "php": "^8.2" }, "require-dev": { - "laravel/legacy-factories": "*", - "mockery/mockery": "^1.0", - "orchestra/testbench": "^5.0|^6.0|^7.0|^8.0|^9.0", - "phpunit/phpunit": "^9.6|^10.5|^11.0" - }, - "suggest": { - "irazasyed/larasupport": "Needed to publish the package configuration in Lumen" + "mockery/mockery": "^1.5.1", + "orchestra/testbench": "^9.0|^10.0", + "phpunit/phpunit": "^11.0" }, "type": "package", "extra": { @@ -7428,7 +7355,7 @@ ] }, "branch-alias": { - "dev-master": "v13-dev" + "dev-master": "v14-dev" } }, "autoload": { @@ -7454,7 +7381,7 @@ "email": "morten@visia.dk" } ], - "description": "Audit changes of your Eloquent models in Laravel/Lumen", + "description": "Audit changes of your Eloquent models in Laravel", "homepage": "https://laravel-auditing.com", "keywords": [ "Accountability", @@ -7476,7 +7403,7 @@ "issues": "https://github.com/owen-it/laravel-auditing/issues", "source": "https://github.com/owen-it/laravel-auditing" }, - "time": "2025-02-21T14:58:02+00:00" + "time": "2025-02-26T16:40:54+00:00" }, { "name": "paragonie/constant_time_encoding", @@ -7676,16 +7603,16 @@ }, { "name": "phpoffice/phpspreadsheet", - "version": "1.29.10", + "version": "1.29.11", "source": { "type": "git", "url": "https://github.com/PHPOffice/PhpSpreadsheet.git", - "reference": "c80041b1628c4f18030407134fe88303661d4e4e" + "reference": "05b6c4378ddf3e81b460ea645c42b46432c0db25" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/c80041b1628c4f18030407134fe88303661d4e4e", - "reference": "c80041b1628c4f18030407134fe88303661d4e4e", + "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/05b6c4378ddf3e81b460ea645c42b46432c0db25", + "reference": "05b6c4378ddf3e81b460ea645c42b46432c0db25", "shasum": "" }, "require": { @@ -7776,9 +7703,9 @@ ], "support": { "issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues", - "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.29.10" + "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.29.11" }, - "time": "2025-02-08T02:56:14+00:00" + "time": "2025-06-23T01:22:06+00:00" }, { "name": "phpoption/phpoption", @@ -7857,16 +7784,16 @@ }, { "name": "phpseclib/phpseclib", - "version": "3.0.43", + "version": "3.0.46", "source": { "type": "git", "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "709ec107af3cb2f385b9617be72af8cf62441d02" + "reference": "56483a7de62a6c2a6635e42e93b8a9e25d4f0ec6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/709ec107af3cb2f385b9617be72af8cf62441d02", - "reference": "709ec107af3cb2f385b9617be72af8cf62441d02", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/56483a7de62a6c2a6635e42e93b8a9e25d4f0ec6", + "reference": "56483a7de62a6c2a6635e42e93b8a9e25d4f0ec6", "shasum": "" }, "require": { @@ -7947,7 +7874,7 @@ ], "support": { "issues": "https://github.com/phpseclib/phpseclib/issues", - "source": "https://github.com/phpseclib/phpseclib/tree/3.0.43" + "source": "https://github.com/phpseclib/phpseclib/tree/3.0.46" }, "funding": [ { @@ -7963,20 +7890,20 @@ "type": "tidelift" } ], - "time": "2024-12-14T21:12:59+00:00" + "time": "2025-06-26T16:29:55+00:00" }, { "name": "phpstan/phpdoc-parser", - "version": "2.1.0", + "version": "2.2.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "9b30d6fd026b2c132b3985ce6b23bec09ab3aa68" + "reference": "b9e61a61e39e02dd90944e9115241c7f7e76bfd8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/9b30d6fd026b2c132b3985ce6b23bec09ab3aa68", - "reference": "9b30d6fd026b2c132b3985ce6b23bec09ab3aa68", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/b9e61a61e39e02dd90944e9115241c7f7e76bfd8", + "reference": "b9e61a61e39e02dd90944e9115241c7f7e76bfd8", "shasum": "" }, "require": { @@ -8008,9 +7935,9 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/2.1.0" + "source": "https://github.com/phpstan/phpdoc-parser/tree/2.2.0" }, - "time": "2025-02-19T13:28:12+00:00" + "time": "2025-07-13T07:04:09+00:00" }, { "name": "pragmarx/google2fa", @@ -8424,6 +8351,119 @@ }, "time": "2023-04-04T09:54:51+00:00" }, + { + "name": "psr/http-server-handler", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-server-handler.git", + "reference": "84c4fb66179be4caaf8e97bd239203245302e7d4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-server-handler/zipball/84c4fb66179be4caaf8e97bd239203245302e7d4", + "reference": "84c4fb66179be4caaf8e97bd239203245302e7d4", + "shasum": "" + }, + "require": { + "php": ">=7.0", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Server\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP server-side request handler", + "keywords": [ + "handler", + "http", + "http-interop", + "psr", + "psr-15", + "psr-7", + "request", + "response", + "server" + ], + "support": { + "source": "https://github.com/php-fig/http-server-handler/tree/1.0.2" + }, + "time": "2023-04-10T20:06:20+00:00" + }, + { + "name": "psr/http-server-middleware", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-server-middleware.git", + "reference": "c1481f747daaa6a0782775cd6a8c26a1bf4a3829" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-server-middleware/zipball/c1481f747daaa6a0782775cd6a8c26a1bf4a3829", + "reference": "c1481f747daaa6a0782775cd6a8c26a1bf4a3829", + "shasum": "" + }, + "require": { + "php": ">=7.0", + "psr/http-message": "^1.0 || ^2.0", + "psr/http-server-handler": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Server\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP server-side middleware", + "keywords": [ + "http", + "http-interop", + "middleware", + "psr", + "psr-15", + "psr-7", + "request", + "response" + ], + "support": { + "issues": "https://github.com/php-fig/http-server-middleware/issues", + "source": "https://github.com/php-fig/http-server-middleware/tree/1.0.2" + }, + "time": "2023-04-11T06:14:47+00:00" + }, { "name": "psr/log", "version": "3.0.2", @@ -8527,16 +8567,16 @@ }, { "name": "psy/psysh", - "version": "v0.12.8", + "version": "v0.12.9", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "85057ceedee50c49d4f6ecaff73ee96adb3b3625" + "reference": "1b801844becfe648985372cb4b12ad6840245ace" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/85057ceedee50c49d4f6ecaff73ee96adb3b3625", - "reference": "85057ceedee50c49d4f6ecaff73ee96adb3b3625", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/1b801844becfe648985372cb4b12ad6840245ace", + "reference": "1b801844becfe648985372cb4b12ad6840245ace", "shasum": "" }, "require": { @@ -8600,9 +8640,9 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.12.8" + "source": "https://github.com/bobthecow/psysh/tree/v0.12.9" }, - "time": "2025-03-16T03:05:19+00:00" + "time": "2025-06-23T02:35:06+00:00" }, { "name": "pxlrbt/filament-environment-indicator", @@ -8788,21 +8828,20 @@ }, { "name": "ramsey/uuid", - "version": "4.7.6", + "version": "4.9.0", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "91039bc1faa45ba123c4328958e620d382ec7088" + "reference": "4e0e23cc785f0724a0e838279a9eb03f28b092a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/91039bc1faa45ba123c4328958e620d382ec7088", - "reference": "91039bc1faa45ba123c4328958e620d382ec7088", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/4e0e23cc785f0724a0e838279a9eb03f28b092a0", + "reference": "4e0e23cc785f0724a0e838279a9eb03f28b092a0", "shasum": "" }, "require": { - "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12", - "ext-json": "*", + "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13", "php": "^8.0", "ramsey/collection": "^1.2 || ^2.0" }, @@ -8810,26 +8849,23 @@ "rhumsaa/uuid": "self.version" }, "require-dev": { - "captainhook/captainhook": "^5.10", + "captainhook/captainhook": "^5.25", "captainhook/plugin-composer": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "doctrine/annotations": "^1.8", - "ergebnis/composer-normalize": "^2.15", - "mockery/mockery": "^1.3", + "dealerdirect/phpcodesniffer-composer-installer": "^1.0", + "ergebnis/composer-normalize": "^2.47", + "mockery/mockery": "^1.6", "paragonie/random-lib": "^2", - "php-mock/php-mock": "^2.2", - "php-mock/php-mock-mockery": "^1.3", - "php-parallel-lint/php-parallel-lint": "^1.1", - "phpbench/phpbench": "^1.0", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-mockery": "^1.1", - "phpstan/phpstan-phpunit": "^1.1", - "phpunit/phpunit": "^8.5 || ^9", - "ramsey/composer-repl": "^1.4", - "slevomat/coding-standard": "^8.4", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" + "php-mock/php-mock": "^2.6", + "php-mock/php-mock-mockery": "^1.5", + "php-parallel-lint/php-parallel-lint": "^1.4.0", + "phpbench/phpbench": "^1.2.14", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-mockery": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^9.6", + "slevomat/coding-standard": "^8.18", + "squizlabs/php_codesniffer": "^3.13" }, "suggest": { "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", @@ -8864,19 +8900,9 @@ ], "support": { "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.7.6" + "source": "https://github.com/ramsey/uuid/tree/4.9.0" }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2024-04-27T21:32:50+00:00" + "time": "2025-06-25T14:20:11+00:00" }, { "name": "react/promise", @@ -9322,16 +9348,16 @@ }, { "name": "spatie/laravel-package-tools", - "version": "1.92.4", + "version": "1.92.6", "source": { "type": "git", "url": "https://github.com/spatie/laravel-package-tools.git", - "reference": "d20b1969f836d210459b78683d85c9cd5c5f508c" + "reference": "afa90e37741a953d33728e7106a1f24a13fdd808" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/d20b1969f836d210459b78683d85c9cd5c5f508c", - "reference": "d20b1969f836d210459b78683d85c9cd5c5f508c", + "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/afa90e37741a953d33728e7106a1f24a13fdd808", + "reference": "afa90e37741a953d33728e7106a1f24a13fdd808", "shasum": "" }, "require": { @@ -9371,7 +9397,7 @@ ], "support": { "issues": "https://github.com/spatie/laravel-package-tools/issues", - "source": "https://github.com/spatie/laravel-package-tools/tree/1.92.4" + "source": "https://github.com/spatie/laravel-package-tools/tree/1.92.6" }, "funding": [ { @@ -9379,7 +9405,7 @@ "type": "github" } ], - "time": "2025-04-11T15:27:14+00:00" + "time": "2025-07-14T08:02:47+00:00" }, { "name": "spatie/regex", @@ -9507,20 +9533,20 @@ }, { "name": "staudenmeir/eloquent-has-many-deep-contracts", - "version": "v1.2.1", + "version": "v1.3", "source": { "type": "git", "url": "https://github.com/staudenmeir/eloquent-has-many-deep-contracts.git", - "reference": "3ad76c6eeda60042f262d113bf471dcce584d88b" + "reference": "37ce351e4db919b3af606bc8ca0e62e2e4939cde" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/staudenmeir/eloquent-has-many-deep-contracts/zipball/3ad76c6eeda60042f262d113bf471dcce584d88b", - "reference": "3ad76c6eeda60042f262d113bf471dcce584d88b", + "url": "https://api.github.com/repos/staudenmeir/eloquent-has-many-deep-contracts/zipball/37ce351e4db919b3af606bc8ca0e62e2e4939cde", + "reference": "37ce351e4db919b3af606bc8ca0e62e2e4939cde", "shasum": "" }, "require": { - "illuminate/database": "^11.0", + "illuminate/database": "^12.0", "php": "^8.2" }, "type": "library", @@ -9542,37 +9568,37 @@ "description": "Contracts for staudenmeir/eloquent-has-many-deep", "support": { "issues": "https://github.com/staudenmeir/eloquent-has-many-deep-contracts/issues", - "source": "https://github.com/staudenmeir/eloquent-has-many-deep-contracts/tree/v1.2.1" + "source": "https://github.com/staudenmeir/eloquent-has-many-deep-contracts/tree/v1.3" }, - "time": "2024-09-25T18:24:22+00:00" + "time": "2025-02-15T17:11:01+00:00" }, { "name": "staudenmeir/eloquent-json-relations", - "version": "v1.13.3", + "version": "v1.14.1", "source": { "type": "git", "url": "https://github.com/staudenmeir/eloquent-json-relations.git", - "reference": "aaa2c78868842b7cdf7a60b2a1d6b4be6517aa11" + "reference": "48b76d3094e528993abc77dc2414c58f7531f31f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/staudenmeir/eloquent-json-relations/zipball/aaa2c78868842b7cdf7a60b2a1d6b4be6517aa11", - "reference": "aaa2c78868842b7cdf7a60b2a1d6b4be6517aa11", + "url": "https://api.github.com/repos/staudenmeir/eloquent-json-relations/zipball/48b76d3094e528993abc77dc2414c58f7531f31f", + "reference": "48b76d3094e528993abc77dc2414c58f7531f31f", "shasum": "" }, "require": { - "illuminate/database": "^11.0", + "illuminate/database": "^12.0", "php": "^8.2", - "staudenmeir/eloquent-has-many-deep-contracts": "^1.2" + "staudenmeir/eloquent-has-many-deep-contracts": "^1.3" }, "require-dev": { "barryvdh/laravel-ide-helper": "^3.0", "larastan/larastan": "^3.0", - "laravel/framework": "^11.0", + "laravel/framework": "^12.0", "mockery/mockery": "^1.5.1", - "orchestra/testbench-core": "^9.5", + "orchestra/testbench-core": "^10.0", "phpunit/phpunit": "^11.0", - "staudenmeir/eloquent-has-many-deep": "^1.20" + "staudenmeir/eloquent-has-many-deep": "^1.21" }, "type": "library", "extra": { @@ -9600,7 +9626,7 @@ "description": "Laravel Eloquent relationships with JSON keys", "support": { "issues": "https://github.com/staudenmeir/eloquent-json-relations/issues", - "source": "https://github.com/staudenmeir/eloquent-json-relations/tree/v1.13.3" + "source": "https://github.com/staudenmeir/eloquent-json-relations/tree/v1.14.1" }, "funding": [ { @@ -9608,7 +9634,7 @@ "type": "custom" } ], - "time": "2025-02-16T14:49:18+00:00" + "time": "2025-02-25T21:36:38+00:00" }, { "name": "stechstudio/filament-impersonate", @@ -9654,7 +9680,7 @@ }, { "name": "symfony/clock", - "version": "v7.2.0", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/clock.git", @@ -9708,7 +9734,7 @@ "time" ], "support": { - "source": "https://github.com/symfony/clock/tree/v7.2.0" + "source": "https://github.com/symfony/clock/tree/v7.3.0" }, "funding": [ { @@ -9728,23 +9754,24 @@ }, { "name": "symfony/console", - "version": "v7.2.5", + "version": "v7.3.1", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "e51498ea18570c062e7df29d05a7003585b19b88" + "reference": "9e27aecde8f506ba0fd1d9989620c04a87697101" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/e51498ea18570c062e7df29d05a7003585b19b88", - "reference": "e51498ea18570c062e7df29d05a7003585b19b88", + "url": "https://api.github.com/repos/symfony/console/zipball/9e27aecde8f506ba0fd1d9989620c04a87697101", + "reference": "9e27aecde8f506ba0fd1d9989620c04a87697101", "shasum": "" }, "require": { "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^6.4|^7.0" + "symfony/string": "^7.2" }, "conflict": { "symfony/dependency-injection": "<6.4", @@ -9801,7 +9828,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.2.5" + "source": "https://github.com/symfony/console/tree/v7.3.1" }, "funding": [ { @@ -9817,11 +9844,11 @@ "type": "tidelift" } ], - "time": "2025-03-12T08:11:12+00:00" + "time": "2025-06-27T19:55:54+00:00" }, { "name": "symfony/css-selector", - "version": "v7.2.0", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", @@ -9866,7 +9893,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v7.2.0" + "source": "https://github.com/symfony/css-selector/tree/v7.3.0" }, "funding": [ { @@ -9886,16 +9913,16 @@ }, { "name": "symfony/deprecation-contracts", - "version": "v3.5.1", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6" + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", - "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62", + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62", "shasum": "" }, "require": { @@ -9908,7 +9935,7 @@ "name": "symfony/contracts" }, "branch-alias": { - "dev-main": "3.5-dev" + "dev-main": "3.6-dev" } }, "autoload": { @@ -9933,7 +9960,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.1" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0" }, "funding": [ { @@ -9949,20 +9976,20 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:20:29+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/error-handler", - "version": "v7.2.5", + "version": "v7.3.1", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "102be5e6a8e4f4f3eb3149bcbfa33a80d1ee374b" + "reference": "35b55b166f6752d6aaf21aa042fc5ed280fce235" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/102be5e6a8e4f4f3eb3149bcbfa33a80d1ee374b", - "reference": "102be5e6a8e4f4f3eb3149bcbfa33a80d1ee374b", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/35b55b166f6752d6aaf21aa042fc5ed280fce235", + "reference": "35b55b166f6752d6aaf21aa042fc5ed280fce235", "shasum": "" }, "require": { @@ -9975,9 +10002,11 @@ "symfony/http-kernel": "<6.4" }, "require-dev": { + "symfony/console": "^6.4|^7.0", "symfony/deprecation-contracts": "^2.5|^3", "symfony/http-kernel": "^6.4|^7.0", - "symfony/serializer": "^6.4|^7.0" + "symfony/serializer": "^6.4|^7.0", + "symfony/webpack-encore-bundle": "^1.0|^2.0" }, "bin": [ "Resources/bin/patch-type-declarations" @@ -10008,7 +10037,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v7.2.5" + "source": "https://github.com/symfony/error-handler/tree/v7.3.1" }, "funding": [ { @@ -10024,20 +10053,20 @@ "type": "tidelift" } ], - "time": "2025-03-03T07:12:39+00:00" + "time": "2025-06-13T07:48:40+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v7.2.0", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "910c5db85a5356d0fea57680defec4e99eb9c8c1" + "reference": "497f73ac996a598c92409b44ac43b6690c4f666d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/910c5db85a5356d0fea57680defec4e99eb9c8c1", - "reference": "910c5db85a5356d0fea57680defec4e99eb9c8c1", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/497f73ac996a598c92409b44ac43b6690c4f666d", + "reference": "497f73ac996a598c92409b44ac43b6690c4f666d", "shasum": "" }, "require": { @@ -10088,7 +10117,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v7.2.0" + "source": "https://github.com/symfony/event-dispatcher/tree/v7.3.0" }, "funding": [ { @@ -10104,20 +10133,20 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:21:43+00:00" + "time": "2025-04-22T09:11:45+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.5.1", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f" + "reference": "59eb412e93815df44f05f342958efa9f46b1e586" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/7642f5e970b672283b7823222ae8ef8bbc160b9f", - "reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/59eb412e93815df44f05f342958efa9f46b1e586", + "reference": "59eb412e93815df44f05f342958efa9f46b1e586", "shasum": "" }, "require": { @@ -10131,7 +10160,7 @@ "name": "symfony/contracts" }, "branch-alias": { - "dev-main": "3.5-dev" + "dev-main": "3.6-dev" } }, "autoload": { @@ -10164,7 +10193,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.1" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.6.0" }, "funding": [ { @@ -10180,11 +10209,11 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:20:29+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/filesystem", - "version": "v7.2.0", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", @@ -10230,7 +10259,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v7.2.0" + "source": "https://github.com/symfony/filesystem/tree/v7.3.0" }, "funding": [ { @@ -10250,16 +10279,16 @@ }, { "name": "symfony/finder", - "version": "v7.2.2", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "87a71856f2f56e4100373e92529eed3171695cfb" + "reference": "ec2344cf77a48253bbca6939aa3d2477773ea63d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/87a71856f2f56e4100373e92529eed3171695cfb", - "reference": "87a71856f2f56e4100373e92529eed3171695cfb", + "url": "https://api.github.com/repos/symfony/finder/zipball/ec2344cf77a48253bbca6939aa3d2477773ea63d", + "reference": "ec2344cf77a48253bbca6939aa3d2477773ea63d", "shasum": "" }, "require": { @@ -10294,7 +10323,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.2.2" + "source": "https://github.com/symfony/finder/tree/v7.3.0" }, "funding": [ { @@ -10310,20 +10339,20 @@ "type": "tidelift" } ], - "time": "2024-12-30T19:00:17+00:00" + "time": "2024-12-30T19:00:26+00:00" }, { "name": "symfony/html-sanitizer", - "version": "v7.2.3", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/html-sanitizer.git", - "reference": "91443febe34cfa5e8e00425f892e6316db95bc23" + "reference": "cf21254e982b12276329940ca4af5e623ee06c58" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/html-sanitizer/zipball/91443febe34cfa5e8e00425f892e6316db95bc23", - "reference": "91443febe34cfa5e8e00425f892e6316db95bc23", + "url": "https://api.github.com/repos/symfony/html-sanitizer/zipball/cf21254e982b12276329940ca4af5e623ee06c58", + "reference": "cf21254e982b12276329940ca4af5e623ee06c58", "shasum": "" }, "require": { @@ -10363,7 +10392,7 @@ "sanitizer" ], "support": { - "source": "https://github.com/symfony/html-sanitizer/tree/v7.2.3" + "source": "https://github.com/symfony/html-sanitizer/tree/v7.3.0" }, "funding": [ { @@ -10379,20 +10408,20 @@ "type": "tidelift" } ], - "time": "2025-01-27T11:08:17+00:00" + "time": "2025-03-31T08:49:55+00:00" }, { "name": "symfony/http-foundation", - "version": "v7.2.5", + "version": "v7.3.1", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "371272aeb6286f8135e028ca535f8e4d6f114126" + "reference": "23dd60256610c86a3414575b70c596e5deff6ed9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/371272aeb6286f8135e028ca535f8e4d6f114126", - "reference": "371272aeb6286f8135e028ca535f8e4d6f114126", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/23dd60256610c86a3414575b70c596e5deff6ed9", + "reference": "23dd60256610c86a3414575b70c596e5deff6ed9", "shasum": "" }, "require": { @@ -10409,6 +10438,7 @@ "doctrine/dbal": "^3.6|^4", "predis/predis": "^1.1|^2.0", "symfony/cache": "^6.4.12|^7.1.5", + "symfony/clock": "^6.4|^7.0", "symfony/dependency-injection": "^6.4|^7.0", "symfony/expression-language": "^6.4|^7.0", "symfony/http-kernel": "^6.4|^7.0", @@ -10441,7 +10471,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.2.5" + "source": "https://github.com/symfony/http-foundation/tree/v7.3.1" }, "funding": [ { @@ -10457,20 +10487,20 @@ "type": "tidelift" } ], - "time": "2025-03-25T15:54:33+00:00" + "time": "2025-06-23T15:07:14+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.2.5", + "version": "v7.3.1", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "b1fe91bc1fa454a806d3f98db4ba826eb9941a54" + "reference": "1644879a66e4aa29c36fe33dfa6c54b450ce1831" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/b1fe91bc1fa454a806d3f98db4ba826eb9941a54", - "reference": "b1fe91bc1fa454a806d3f98db4ba826eb9941a54", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/1644879a66e4aa29c36fe33dfa6c54b450ce1831", + "reference": "1644879a66e4aa29c36fe33dfa6c54b450ce1831", "shasum": "" }, "require": { @@ -10478,8 +10508,8 @@ "psr/log": "^1|^2|^3", "symfony/deprecation-contracts": "^2.5|^3", "symfony/error-handler": "^6.4|^7.0", - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", + "symfony/event-dispatcher": "^7.3", + "symfony/http-foundation": "^7.3", "symfony/polyfill-ctype": "^1.8" }, "conflict": { @@ -10555,7 +10585,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v7.2.5" + "source": "https://github.com/symfony/http-kernel/tree/v7.3.1" }, "funding": [ { @@ -10571,20 +10601,20 @@ "type": "tidelift" } ], - "time": "2025-03-28T13:32:50+00:00" + "time": "2025-06-28T08:24:55+00:00" }, { "name": "symfony/mailer", - "version": "v7.2.3", + "version": "v7.3.1", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "f3871b182c44997cf039f3b462af4a48fb85f9d3" + "reference": "b5db5105b290bdbea5ab27b89c69effcf1cb3368" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/f3871b182c44997cf039f3b462af4a48fb85f9d3", - "reference": "f3871b182c44997cf039f3b462af4a48fb85f9d3", + "url": "https://api.github.com/repos/symfony/mailer/zipball/b5db5105b290bdbea5ab27b89c69effcf1cb3368", + "reference": "b5db5105b290bdbea5ab27b89c69effcf1cb3368", "shasum": "" }, "require": { @@ -10635,7 +10665,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v7.2.3" + "source": "https://github.com/symfony/mailer/tree/v7.3.1" }, "funding": [ { @@ -10651,20 +10681,20 @@ "type": "tidelift" } ], - "time": "2025-01-27T11:08:17+00:00" + "time": "2025-06-27T19:55:54+00:00" }, { "name": "symfony/mime", - "version": "v7.2.4", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "87ca22046b78c3feaff04b337f33b38510fd686b" + "reference": "0e7b19b2f399c31df0cdbe5d8cbf53f02f6cfcd9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/87ca22046b78c3feaff04b337f33b38510fd686b", - "reference": "87ca22046b78c3feaff04b337f33b38510fd686b", + "url": "https://api.github.com/repos/symfony/mime/zipball/0e7b19b2f399c31df0cdbe5d8cbf53f02f6cfcd9", + "reference": "0e7b19b2f399c31df0cdbe5d8cbf53f02f6cfcd9", "shasum": "" }, "require": { @@ -10719,7 +10749,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v7.2.4" + "source": "https://github.com/symfony/mime/tree/v7.3.0" }, "funding": [ { @@ -10735,11 +10765,11 @@ "type": "tidelift" } ], - "time": "2025-02-19T08:51:20+00:00" + "time": "2025-02-19T08:51:26+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.31.0", + "version": "v1.32.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", @@ -10798,7 +10828,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.32.0" }, "funding": [ { @@ -10818,7 +10848,7 @@ }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.31.0", + "version": "v1.32.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", @@ -10876,7 +10906,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.32.0" }, "funding": [ { @@ -10896,16 +10926,16 @@ }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.31.0", + "version": "v1.32.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "c36586dcf89a12315939e00ec9b4474adcb1d773" + "reference": "9614ac4d8061dc257ecc64cba1b140873dce8ad3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/c36586dcf89a12315939e00ec9b4474adcb1d773", - "reference": "c36586dcf89a12315939e00ec9b4474adcb1d773", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/9614ac4d8061dc257ecc64cba1b140873dce8ad3", + "reference": "9614ac4d8061dc257ecc64cba1b140873dce8ad3", "shasum": "" }, "require": { @@ -10959,7 +10989,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.32.0" }, "funding": [ { @@ -10975,11 +11005,11 @@ "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2024-09-10T14:38:51+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.31.0", + "version": "v1.32.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", @@ -11040,7 +11070,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.32.0" }, "funding": [ { @@ -11060,19 +11090,20 @@ }, { "name": "symfony/polyfill-mbstring", - "version": "v1.31.0", + "version": "v1.32.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341" + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341", - "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493", + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493", "shasum": "" }, "require": { + "ext-iconv": "*", "php": ">=7.2" }, "provide": { @@ -11120,7 +11151,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.32.0" }, "funding": [ { @@ -11136,11 +11167,11 @@ "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2024-12-23T08:48:59+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.31.0", + "version": "v1.32.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", @@ -11196,7 +11227,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.32.0" }, "funding": [ { @@ -11216,16 +11247,16 @@ }, { "name": "symfony/polyfill-php80", - "version": "v1.31.0", + "version": "v1.32.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8" + "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", - "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/0cc9dd0f17f61d8131e7df6b84bd344899fe2608", + "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608", "shasum": "" }, "require": { @@ -11276,7 +11307,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.32.0" }, "funding": [ { @@ -11292,11 +11323,11 @@ "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2025-01-02T08:10:11+00:00" }, { "name": "symfony/polyfill-php81", - "version": "v1.31.0", + "version": "v1.32.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", @@ -11352,7 +11383,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.32.0" }, "funding": [ { @@ -11372,7 +11403,7 @@ }, { "name": "symfony/polyfill-php83", - "version": "v1.31.0", + "version": "v1.32.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php83.git", @@ -11428,7 +11459,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php83/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-php83/tree/v1.32.0" }, "funding": [ { @@ -11448,7 +11479,7 @@ }, { "name": "symfony/polyfill-uuid", - "version": "v1.31.0", + "version": "v1.32.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-uuid.git", @@ -11507,7 +11538,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/polyfill-uuid/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.32.0" }, "funding": [ { @@ -11527,16 +11558,16 @@ }, { "name": "symfony/process", - "version": "v7.2.5", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "87b7c93e57df9d8e39a093d32587702380ff045d" + "reference": "40c295f2deb408d5e9d2d32b8ba1dd61e36f05af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/87b7c93e57df9d8e39a093d32587702380ff045d", - "reference": "87b7c93e57df9d8e39a093d32587702380ff045d", + "url": "https://api.github.com/repos/symfony/process/zipball/40c295f2deb408d5e9d2d32b8ba1dd61e36f05af", + "reference": "40c295f2deb408d5e9d2d32b8ba1dd61e36f05af", "shasum": "" }, "require": { @@ -11568,7 +11599,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.2.5" + "source": "https://github.com/symfony/process/tree/v7.3.0" }, "funding": [ { @@ -11584,11 +11615,11 @@ "type": "tidelift" } ], - "time": "2025-03-13T12:21:46+00:00" + "time": "2025-04-17T09:11:12+00:00" }, { "name": "symfony/psr-http-message-bridge", - "version": "v7.2.0", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/psr-http-message-bridge.git", @@ -11651,7 +11682,7 @@ "psr-7" ], "support": { - "source": "https://github.com/symfony/psr-http-message-bridge/tree/v7.2.0" + "source": "https://github.com/symfony/psr-http-message-bridge/tree/v7.3.0" }, "funding": [ { @@ -11671,16 +11702,16 @@ }, { "name": "symfony/routing", - "version": "v7.2.3", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "ee9a67edc6baa33e5fae662f94f91fd262930996" + "reference": "8e213820c5fea844ecea29203d2a308019007c15" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/ee9a67edc6baa33e5fae662f94f91fd262930996", - "reference": "ee9a67edc6baa33e5fae662f94f91fd262930996", + "url": "https://api.github.com/repos/symfony/routing/zipball/8e213820c5fea844ecea29203d2a308019007c15", + "reference": "8e213820c5fea844ecea29203d2a308019007c15", "shasum": "" }, "require": { @@ -11732,7 +11763,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v7.2.3" + "source": "https://github.com/symfony/routing/tree/v7.3.0" }, "funding": [ { @@ -11748,20 +11779,20 @@ "type": "tidelift" } ], - "time": "2025-01-17T10:56:55+00:00" + "time": "2025-05-24T20:43:28+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.5.1", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0" + "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/e53260aabf78fb3d63f8d79d69ece59f80d5eda0", - "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f021b05a130d35510bd6b25fe9053c2a8a15d5d4", + "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4", "shasum": "" }, "require": { @@ -11779,7 +11810,7 @@ "name": "symfony/contracts" }, "branch-alias": { - "dev-main": "3.5-dev" + "dev-main": "3.6-dev" } }, "autoload": { @@ -11815,7 +11846,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.5.1" + "source": "https://github.com/symfony/service-contracts/tree/v3.6.0" }, "funding": [ { @@ -11831,20 +11862,20 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:20:29+00:00" + "time": "2025-04-25T09:37:31+00:00" }, { "name": "symfony/string", - "version": "v7.2.0", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "446e0d146f991dde3e73f45f2c97a9faad773c82" + "reference": "f3570b8c61ca887a9e2938e85cb6458515d2b125" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/446e0d146f991dde3e73f45f2c97a9faad773c82", - "reference": "446e0d146f991dde3e73f45f2c97a9faad773c82", + "url": "https://api.github.com/repos/symfony/string/zipball/f3570b8c61ca887a9e2938e85cb6458515d2b125", + "reference": "f3570b8c61ca887a9e2938e85cb6458515d2b125", "shasum": "" }, "require": { @@ -11902,7 +11933,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.2.0" + "source": "https://github.com/symfony/string/tree/v7.3.0" }, "funding": [ { @@ -11918,20 +11949,20 @@ "type": "tidelift" } ], - "time": "2024-11-13T13:31:26+00:00" + "time": "2025-04-20T20:19:01+00:00" }, { "name": "symfony/translation", - "version": "v7.2.4", + "version": "v7.3.1", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "283856e6981286cc0d800b53bd5703e8e363f05a" + "reference": "241d5ac4910d256660238a7ecf250deba4c73063" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/283856e6981286cc0d800b53bd5703e8e363f05a", - "reference": "283856e6981286cc0d800b53bd5703e8e363f05a", + "url": "https://api.github.com/repos/symfony/translation/zipball/241d5ac4910d256660238a7ecf250deba4c73063", + "reference": "241d5ac4910d256660238a7ecf250deba4c73063", "shasum": "" }, "require": { @@ -11941,6 +11972,7 @@ "symfony/translation-contracts": "^2.5|^3.0" }, "conflict": { + "nikic/php-parser": "<5.0", "symfony/config": "<6.4", "symfony/console": "<6.4", "symfony/dependency-injection": "<6.4", @@ -11954,7 +11986,7 @@ "symfony/translation-implementation": "2.3|3.0" }, "require-dev": { - "nikic/php-parser": "^4.18|^5.0", + "nikic/php-parser": "^5.0", "psr/log": "^1|^2|^3", "symfony/config": "^6.4|^7.0", "symfony/console": "^6.4|^7.0", @@ -11997,7 +12029,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v7.2.4" + "source": "https://github.com/symfony/translation/tree/v7.3.1" }, "funding": [ { @@ -12013,20 +12045,20 @@ "type": "tidelift" } ], - "time": "2025-02-13T10:27:23+00:00" + "time": "2025-06-27T19:55:54+00:00" }, { "name": "symfony/translation-contracts", - "version": "v3.5.1", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "4667ff3bd513750603a09c8dedbea942487fb07c" + "reference": "df210c7a2573f1913b2d17cc95f90f53a73d8f7d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/4667ff3bd513750603a09c8dedbea942487fb07c", - "reference": "4667ff3bd513750603a09c8dedbea942487fb07c", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/df210c7a2573f1913b2d17cc95f90f53a73d8f7d", + "reference": "df210c7a2573f1913b2d17cc95f90f53a73d8f7d", "shasum": "" }, "require": { @@ -12039,7 +12071,7 @@ "name": "symfony/contracts" }, "branch-alias": { - "dev-main": "3.5-dev" + "dev-main": "3.6-dev" } }, "autoload": { @@ -12075,7 +12107,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.5.1" + "source": "https://github.com/symfony/translation-contracts/tree/v3.6.0" }, "funding": [ { @@ -12091,20 +12123,20 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:20:29+00:00" + "time": "2024-09-27T08:32:26+00:00" }, { "name": "symfony/uid", - "version": "v7.2.0", + "version": "v7.3.1", "source": { "type": "git", "url": "https://github.com/symfony/uid.git", - "reference": "2d294d0c48df244c71c105a169d0190bfb080426" + "reference": "a69f69f3159b852651a6bf45a9fdd149520525bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/2d294d0c48df244c71c105a169d0190bfb080426", - "reference": "2d294d0c48df244c71c105a169d0190bfb080426", + "url": "https://api.github.com/repos/symfony/uid/zipball/a69f69f3159b852651a6bf45a9fdd149520525bb", + "reference": "a69f69f3159b852651a6bf45a9fdd149520525bb", "shasum": "" }, "require": { @@ -12149,7 +12181,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/uid/tree/v7.2.0" + "source": "https://github.com/symfony/uid/tree/v7.3.1" }, "funding": [ { @@ -12165,24 +12197,25 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:21:43+00:00" + "time": "2025-06-27T19:55:54+00:00" }, { "name": "symfony/var-dumper", - "version": "v7.2.3", + "version": "v7.3.1", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "82b478c69745d8878eb60f9a049a4d584996f73a" + "reference": "6e209fbe5f5a7b6043baba46fe5735a4b85d0d42" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/82b478c69745d8878eb60f9a049a4d584996f73a", - "reference": "82b478c69745d8878eb60f9a049a4d584996f73a", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/6e209fbe5f5a7b6043baba46fe5735a4b85d0d42", + "reference": "6e209fbe5f5a7b6043baba46fe5735a4b85d0d42", "shasum": "" }, "require": { "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0" }, "conflict": { @@ -12232,7 +12265,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.2.3" + "source": "https://github.com/symfony/var-dumper/tree/v7.3.1" }, "funding": [ { @@ -12248,20 +12281,20 @@ "type": "tidelift" } ], - "time": "2025-01-17T11:39:41+00:00" + "time": "2025-06-27T19:55:54+00:00" }, { "name": "tightenco/ziggy", - "version": "v2.5.2", + "version": "v2.5.3", "source": { "type": "git", "url": "https://github.com/tighten/ziggy.git", - "reference": "d59dbb61dc0a1d9abb2130451b9e5e0f264bfe1c" + "reference": "0b3b521d2c55fbdb04b6721532f7f5f49d32f52b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tighten/ziggy/zipball/d59dbb61dc0a1d9abb2130451b9e5e0f264bfe1c", - "reference": "d59dbb61dc0a1d9abb2130451b9e5e0f264bfe1c", + "url": "https://api.github.com/repos/tighten/ziggy/zipball/0b3b521d2c55fbdb04b6721532f7f5f49d32f52b", + "reference": "0b3b521d2c55fbdb04b6721532f7f5f49d32f52b", "shasum": "" }, "require": { @@ -12316,9 +12349,9 @@ ], "support": { "issues": "https://github.com/tighten/ziggy/issues", - "source": "https://github.com/tighten/ziggy/tree/v2.5.2" + "source": "https://github.com/tighten/ziggy/tree/v2.5.3" }, - "time": "2025-02-27T15:43:52+00:00" + "time": "2025-05-17T18:15:19+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -12377,24 +12410,22 @@ }, { "name": "tpetry/laravel-postgresql-enhanced", - "version": "2.4.1", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/tpetry/laravel-postgresql-enhanced.git", - "reference": "e4745fb416e2ca648b8fc80deba29b9832c5d5b8" + "reference": "816f36fc3b3e0a3daf90f61d8d9dd76eb15ec6f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tpetry/laravel-postgresql-enhanced/zipball/e4745fb416e2ca648b8fc80deba29b9832c5d5b8", - "reference": "e4745fb416e2ca648b8fc80deba29b9832c5d5b8", + "url": "https://api.github.com/repos/tpetry/laravel-postgresql-enhanced/zipball/816f36fc3b3e0a3daf90f61d8d9dd76eb15ec6f4", + "reference": "816f36fc3b3e0a3daf90f61d8d9dd76eb15ec6f4", "shasum": "" }, "require": { "doctrine/dbal": "^2.6|^3.5|^4.0", - "illuminate/container": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", "illuminate/database": "^6.0|^7.0|^8.79|^9.0|^10.0|^11.0|^12.0", - "illuminate/events": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "laravel/framework": "*", "php": "^8.0", "spatie/regex": "^2.0|^3.0" }, @@ -12445,22 +12476,22 @@ ], "support": { "issues": "https://github.com/tpetry/laravel-postgresql-enhanced/issues", - "source": "https://github.com/tpetry/laravel-postgresql-enhanced/tree/2.4.1" + "source": "https://github.com/tpetry/laravel-postgresql-enhanced/tree/3.0.0" }, - "time": "2025-04-11T07:00:36+00:00" + "time": "2025-04-23T10:19:01+00:00" }, { "name": "vlucas/phpdotenv", - "version": "v5.6.1", + "version": "v5.6.2", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "a59a13791077fe3d44f90e7133eb68e7d22eaff2" + "reference": "24ac4c74f91ee2c193fa1aaa5c249cb0822809af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/a59a13791077fe3d44f90e7133eb68e7d22eaff2", - "reference": "a59a13791077fe3d44f90e7133eb68e7d22eaff2", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/24ac4c74f91ee2c193fa1aaa5c249cb0822809af", + "reference": "24ac4c74f91ee2c193fa1aaa5c249cb0822809af", "shasum": "" }, "require": { @@ -12519,7 +12550,7 @@ ], "support": { "issues": "https://github.com/vlucas/phpdotenv/issues", - "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.1" + "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.2" }, "funding": [ { @@ -12531,7 +12562,7 @@ "type": "tidelift" } ], - "time": "2024-07-20T21:52:34+00:00" + "time": "2025-04-30T23:37:27+00:00" }, { "name": "voku/portable-ascii", @@ -12871,16 +12902,16 @@ }, { "name": "brianium/paratest", - "version": "v7.8.3", + "version": "v7.10.3", "source": { "type": "git", "url": "https://github.com/paratestphp/paratest.git", - "reference": "a585c346ddf1bec22e51e20b5387607905604a71" + "reference": "cfee22cc949d170e61e7111c89ea9fc86aa02ffb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paratestphp/paratest/zipball/a585c346ddf1bec22e51e20b5387607905604a71", - "reference": "a585c346ddf1bec22e51e20b5387607905604a71", + "url": "https://api.github.com/repos/paratestphp/paratest/zipball/cfee22cc949d170e61e7111c89ea9fc86aa02ffb", + "reference": "cfee22cc949d170e61e7111c89ea9fc86aa02ffb", "shasum": "" }, "require": { @@ -12889,26 +12920,27 @@ "ext-reflection": "*", "ext-simplexml": "*", "fidry/cpu-core-counter": "^1.2.0", - "jean85/pretty-package-versions": "^2.1.0", - "php": "~8.2.0 || ~8.3.0 || ~8.4.0", - "phpunit/php-code-coverage": "^11.0.9 || ^12.0.4", - "phpunit/php-file-iterator": "^5.1.0 || ^6", - "phpunit/php-timer": "^7.0.1 || ^8", - "phpunit/phpunit": "^11.5.11 || ^12.0.6", - "sebastian/environment": "^7.2.0 || ^8", - "symfony/console": "^6.4.17 || ^7.2.1", - "symfony/process": "^6.4.19 || ^7.2.4" + "jean85/pretty-package-versions": "^2.1.1", + "php": "~8.3.0 || ~8.4.0", + "phpunit/php-code-coverage": "^12.3.1", + "phpunit/php-file-iterator": "^6", + "phpunit/php-timer": "^8", + "phpunit/phpunit": "^12.2.3", + "sebastian/environment": "^8.0.2", + "symfony/console": "^6.4.20 || ^7.3.0", + "symfony/process": "^6.4.20 || ^7.3.0" }, "require-dev": { - "doctrine/coding-standard": "^12.0.0", + "doctrine/coding-standard": "^13.0.1", + "ext-pcntl": "*", "ext-pcov": "*", "ext-posix": "*", - "phpstan/phpstan": "^2.1.6", - "phpstan/phpstan-deprecation-rules": "^2.0.1", - "phpstan/phpstan-phpunit": "^2.0.4", - "phpstan/phpstan-strict-rules": "^2.0.3", - "squizlabs/php_codesniffer": "^3.11.3", - "symfony/filesystem": "^6.4.13 || ^7.2.0" + "phpstan/phpstan": "^2.1.17", + "phpstan/phpstan-deprecation-rules": "^2.0.3", + "phpstan/phpstan-phpunit": "^2.0.6", + "phpstan/phpstan-strict-rules": "^2.0.4", + "squizlabs/php_codesniffer": "^3.13.2", + "symfony/filesystem": "^6.4.13 || ^7.3.0" }, "bin": [ "bin/paratest", @@ -12948,7 +12980,7 @@ ], "support": { "issues": "https://github.com/paratestphp/paratest/issues", - "source": "https://github.com/paratestphp/paratest/tree/v7.8.3" + "source": "https://github.com/paratestphp/paratest/tree/v7.10.3" }, "funding": [ { @@ -12960,7 +12992,7 @@ "type": "paypal" } ], - "time": "2025-03-05T08:29:11+00:00" + "time": "2025-06-22T16:27:15+00:00" }, { "name": "fakerphp/faker", @@ -13088,16 +13120,16 @@ }, { "name": "filp/whoops", - "version": "2.18.0", + "version": "2.18.3", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "a7de6c3c6c3c022f5cfc337f8ede6a14460cf77e" + "reference": "59a123a3d459c5a23055802237cb317f609867e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a7de6c3c6c3c022f5cfc337f8ede6a14460cf77e", - "reference": "a7de6c3c6c3c022f5cfc337f8ede6a14460cf77e", + "url": "https://api.github.com/repos/filp/whoops/zipball/59a123a3d459c5a23055802237cb317f609867e5", + "reference": "59a123a3d459c5a23055802237cb317f609867e5", "shasum": "" }, "require": { @@ -13147,7 +13179,7 @@ ], "support": { "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.18.0" + "source": "https://github.com/filp/whoops/tree/2.18.3" }, "funding": [ { @@ -13155,20 +13187,20 @@ "type": "github" } ], - "time": "2025-03-15T12:00:00+00:00" + "time": "2025-06-16T00:02:10+00:00" }, { "name": "fumeapp/modeltyper", - "version": "v3.1.0", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/fumeapp/modeltyper.git", - "reference": "f63676558a1901f21c83c749e7e672c361394a68" + "reference": "03556593e6332b25aaed188b2891ffe9f900fb84" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fumeapp/modeltyper/zipball/f63676558a1901f21c83c749e7e672c361394a68", - "reference": "f63676558a1901f21c83c749e7e672c361394a68", + "url": "https://api.github.com/repos/fumeapp/modeltyper/zipball/03556593e6332b25aaed188b2891ffe9f900fb84", + "reference": "03556593e6332b25aaed188b2891ffe9f900fb84", "shasum": "" }, "require": { @@ -13216,26 +13248,26 @@ "description": "Generate TypeScript interfaces from Laravel Models", "support": { "issues": "https://github.com/fumeapp/modeltyper/issues", - "source": "https://github.com/fumeapp/modeltyper/tree/v3.1.0" + "source": "https://github.com/fumeapp/modeltyper/tree/v3.3.0" }, - "time": "2025-04-03T13:46:40+00:00" + "time": "2025-06-18T14:16:32+00:00" }, { "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", + "version": "v2.1.1", "source": { "type": "git", "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" + "reference": "f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487", + "reference": "f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487", "shasum": "" }, "require": { - "php": "^5.3|^7.0|^8.0" + "php": "^7.4|^8.0" }, "replace": { "cordoval/hamcrest-php": "*", @@ -13243,8 +13275,8 @@ "kodova/hamcrest-php": "*" }, "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" + "phpunit/php-file-iterator": "^1.4 || ^2.0 || ^3.0", + "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0 || ^8.0 || ^9.0" }, "type": "library", "extra": { @@ -13267,9 +13299,50 @@ ], "support": { "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" + "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.1.1" }, - "time": "2020-07-09T08:09:16+00:00" + "time": "2025-04-30T06:54:44+00:00" + }, + { + "name": "iamcal/sql-parser", + "version": "v0.6", + "source": { + "type": "git", + "url": "https://github.com/iamcal/SQLParser.git", + "reference": "947083e2dca211a6f12fb1beb67a01e387de9b62" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/iamcal/SQLParser/zipball/947083e2dca211a6f12fb1beb67a01e387de9b62", + "reference": "947083e2dca211a6f12fb1beb67a01e387de9b62", + "shasum": "" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^1.0", + "phpunit/phpunit": "^5|^6|^7|^8|^9" + }, + "type": "library", + "autoload": { + "psr-4": { + "iamcal\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Cal Henderson", + "email": "cal@iamcal.com" + } + ], + "description": "MySQL schema parser", + "support": { + "issues": "https://github.com/iamcal/SQLParser/issues", + "source": "https://github.com/iamcal/SQLParser/tree/v0.6" + }, + "time": "2025-03-17T16:59:46+00:00" }, { "name": "jean85/pretty-package-versions", @@ -13333,37 +13406,40 @@ }, { "name": "larastan/larastan", - "version": "v2.9.8", + "version": "v3.5.0", "source": { "type": "git", "url": "https://github.com/larastan/larastan.git", - "reference": "340badd89b0eb5bddbc503a4829c08cf9a2819d7" + "reference": "e8ccd73008487ba91da9877b373f8c447743f1ce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/larastan/larastan/zipball/340badd89b0eb5bddbc503a4829c08cf9a2819d7", - "reference": "340badd89b0eb5bddbc503a4829c08cf9a2819d7", + "url": "https://api.github.com/repos/larastan/larastan/zipball/e8ccd73008487ba91da9877b373f8c447743f1ce", + "reference": "e8ccd73008487ba91da9877b373f8c447743f1ce", "shasum": "" }, "require": { "ext-json": "*", - "illuminate/console": "^9.52.16 || ^10.28.0 || ^11.0", - "illuminate/container": "^9.52.16 || ^10.28.0 || ^11.0", - "illuminate/contracts": "^9.52.16 || ^10.28.0 || ^11.0", - "illuminate/database": "^9.52.16 || ^10.28.0 || ^11.0", - "illuminate/http": "^9.52.16 || ^10.28.0 || ^11.0", - "illuminate/pipeline": "^9.52.16 || ^10.28.0 || ^11.0", - "illuminate/support": "^9.52.16 || ^10.28.0 || ^11.0", - "php": "^8.0.2", - "phpmyadmin/sql-parser": "^5.9.0", - "phpstan/phpstan": "^1.11.2" + "iamcal/sql-parser": "^0.6.0", + "illuminate/console": "^11.44.2 || ^12.4.1", + "illuminate/container": "^11.44.2 || ^12.4.1", + "illuminate/contracts": "^11.44.2 || ^12.4.1", + "illuminate/database": "^11.44.2 || ^12.4.1", + "illuminate/http": "^11.44.2 || ^12.4.1", + "illuminate/pipeline": "^11.44.2 || ^12.4.1", + "illuminate/support": "^11.44.2 || ^12.4.1", + "php": "^8.2", + "phpstan/phpstan": "^2.1.11" }, "require-dev": { - "doctrine/coding-standard": "^12.0", - "nikic/php-parser": "^4.19.1", - "orchestra/canvas": "^7.11.1 || ^8.11.0 || ^9.0.2", - "orchestra/testbench": "^7.33.0 || ^8.13.0 || ^9.0.3", - "phpunit/phpunit": "^9.6.13 || ^10.5.16" + "doctrine/coding-standard": "^13", + "laravel/framework": "^11.44.2 || ^12.7.2", + "mockery/mockery": "^1.6.12", + "nikic/php-parser": "^5.4", + "orchestra/canvas": "^v9.2.2 || ^10.0.1", + "orchestra/testbench-core": "^9.12.0 || ^10.1", + "phpstan/phpstan-deprecation-rules": "^2.0.1", + "phpunit/phpunit": "^10.5.35 || ^11.5.15" }, "suggest": { "orchestra/testbench": "Using Larastan for analysing a package needs Testbench" @@ -13376,7 +13452,7 @@ ] }, "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -13392,13 +13468,9 @@ { "name": "Can Vural", "email": "can9119@gmail.com" - }, - { - "name": "Nuno Maduro", - "email": "enunomaduro@gmail.com" } ], - "description": "Larastan - Discover bugs in your code without running it. A phpstan/phpstan wrapper for Laravel", + "description": "Larastan - Discover bugs in your code without running it. A phpstan/phpstan extension for Laravel", "keywords": [ "PHPStan", "code analyse", @@ -13411,40 +13483,28 @@ ], "support": { "issues": "https://github.com/larastan/larastan/issues", - "source": "https://github.com/larastan/larastan/tree/v2.9.8" + "source": "https://github.com/larastan/larastan/tree/v3.5.0" }, "funding": [ - { - "url": "https://www.paypal.com/paypalme/enunomaduro", - "type": "custom" - }, { "url": "https://github.com/canvural", "type": "github" - }, - { - "url": "https://github.com/nunomaduro", - "type": "github" - }, - { - "url": "https://www.patreon.com/nunomaduro", - "type": "patreon" } ], - "time": "2024-07-06T17:46:02+00:00" + "time": "2025-06-19T22:41:50+00:00" }, { "name": "laravel/pint", - "version": "v1.22.0", + "version": "v1.24.0", "source": { "type": "git", "url": "https://github.com/laravel/pint.git", - "reference": "7ddfaa6523a675fae5c4123ee38fc6bfb8ee4f36" + "reference": "0345f3b05f136801af8c339f9d16ef29e6b4df8a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/pint/zipball/7ddfaa6523a675fae5c4123ee38fc6bfb8ee4f36", - "reference": "7ddfaa6523a675fae5c4123ee38fc6bfb8ee4f36", + "url": "https://api.github.com/repos/laravel/pint/zipball/0345f3b05f136801af8c339f9d16ef29e6b4df8a", + "reference": "0345f3b05f136801af8c339f9d16ef29e6b4df8a", "shasum": "" }, "require": { @@ -13455,12 +13515,12 @@ "php": "^8.2.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^3.75.0", - "illuminate/view": "^11.44.2", - "larastan/larastan": "^3.3.1", - "laravel-zero/framework": "^11.36.1", + "friendsofphp/php-cs-fixer": "^3.82.2", + "illuminate/view": "^11.45.1", + "larastan/larastan": "^3.5.0", + "laravel-zero/framework": "^11.45.0", "mockery/mockery": "^1.6.12", - "nunomaduro/termwind": "^2.3", + "nunomaduro/termwind": "^2.3.1", "pestphp/pest": "^2.36.0" }, "bin": [ @@ -13468,6 +13528,9 @@ ], "type": "project", "autoload": { + "files": [ + "overrides/Runner/Parallel/ProcessFactory.php" + ], "psr-4": { "App\\": "app/", "Database\\Seeders\\": "database/seeders/", @@ -13497,20 +13560,20 @@ "issues": "https://github.com/laravel/pint/issues", "source": "https://github.com/laravel/pint" }, - "time": "2025-04-08T22:11:45+00:00" + "time": "2025-07-10T18:09:32+00:00" }, { "name": "laravel/sail", - "version": "v1.41.1", + "version": "v1.43.1", "source": { "type": "git", "url": "https://github.com/laravel/sail.git", - "reference": "e5692510f1ef8e0f5096cde2b885d558f8d86592" + "reference": "3e7d899232a8c5e3ea4fc6dee7525ad583887e72" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/e5692510f1ef8e0f5096cde2b885d558f8d86592", - "reference": "e5692510f1ef8e0f5096cde2b885d558f8d86592", + "url": "https://api.github.com/repos/laravel/sail/zipball/3e7d899232a8c5e3ea4fc6dee7525ad583887e72", + "reference": "3e7d899232a8c5e3ea4fc6dee7525ad583887e72", "shasum": "" }, "require": { @@ -13560,20 +13623,20 @@ "issues": "https://github.com/laravel/sail/issues", "source": "https://github.com/laravel/sail" }, - "time": "2025-04-22T13:39:39+00:00" + "time": "2025-05-19T13:19:21+00:00" }, { "name": "laravel/telescope", - "version": "v5.7.0", + "version": "v5.10.0", "source": { "type": "git", "url": "https://github.com/laravel/telescope.git", - "reference": "440908cb856cfbef9323244f7978ad4bf8cd2daa" + "reference": "fc0a8662682c0375b534033873debb780c003486" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/telescope/zipball/440908cb856cfbef9323244f7978ad4bf8cd2daa", - "reference": "440908cb856cfbef9323244f7978ad4bf8cd2daa", + "url": "https://api.github.com/repos/laravel/telescope/zipball/fc0a8662682c0375b534033873debb780c003486", + "reference": "fc0a8662682c0375b534033873debb780c003486", "shasum": "" }, "require": { @@ -13627,9 +13690,9 @@ ], "support": { "issues": "https://github.com/laravel/telescope/issues", - "source": "https://github.com/laravel/telescope/tree/v5.7.0" + "source": "https://github.com/laravel/telescope/tree/v5.10.0" }, - "time": "2025-03-27T17:25:52+00:00" + "time": "2025-07-07T14:47:19+00:00" }, { "name": "mockery/mockery", @@ -13716,23 +13779,23 @@ }, { "name": "nunomaduro/collision", - "version": "v8.8.0", + "version": "v8.8.2", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "4cf9f3b47afff38b139fb79ce54fc71799022ce8" + "reference": "60207965f9b7b7a4ce15a0f75d57f9dadb105bdb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/4cf9f3b47afff38b139fb79ce54fc71799022ce8", - "reference": "4cf9f3b47afff38b139fb79ce54fc71799022ce8", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/60207965f9b7b7a4ce15a0f75d57f9dadb105bdb", + "reference": "60207965f9b7b7a4ce15a0f75d57f9dadb105bdb", "shasum": "" }, "require": { - "filp/whoops": "^2.18.0", - "nunomaduro/termwind": "^2.3.0", + "filp/whoops": "^2.18.1", + "nunomaduro/termwind": "^2.3.1", "php": "^8.2.0", - "symfony/console": "^7.2.5" + "symfony/console": "^7.3.0" }, "conflict": { "laravel/framework": "<11.44.2 || >=13.0.0", @@ -13740,15 +13803,15 @@ }, "require-dev": { "brianium/paratest": "^7.8.3", - "larastan/larastan": "^3.2", - "laravel/framework": "^11.44.2 || ^12.6", - "laravel/pint": "^1.21.2", - "laravel/sail": "^1.41.0", - "laravel/sanctum": "^4.0.8", + "larastan/larastan": "^3.4.2", + "laravel/framework": "^11.44.2 || ^12.18", + "laravel/pint": "^1.22.1", + "laravel/sail": "^1.43.1", + "laravel/sanctum": "^4.1.1", "laravel/tinker": "^2.10.1", - "orchestra/testbench-core": "^9.12.0 || ^10.1", - "pestphp/pest": "^3.8.0", - "sebastian/environment": "^7.2.0 || ^8.0" + "orchestra/testbench-core": "^9.12.0 || ^10.4", + "pestphp/pest": "^3.8.2", + "sebastian/environment": "^7.2.1 || ^8.0" }, "type": "library", "extra": { @@ -13811,7 +13874,7 @@ "type": "patreon" } ], - "time": "2025-04-03T14:33:09+00:00" + "time": "2025-06-25T02:12:12+00:00" }, { "name": "phar-io/manifest", @@ -13931,111 +13994,22 @@ }, "time": "2022-02-21T01:04:05+00:00" }, - { - "name": "phpmyadmin/sql-parser", - "version": "5.11.0", - "source": { - "type": "git", - "url": "https://github.com/phpmyadmin/sql-parser.git", - "reference": "07044bc8c13abd542756c3fd34dc66a5d6dee8e4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpmyadmin/sql-parser/zipball/07044bc8c13abd542756c3fd34dc66a5d6dee8e4", - "reference": "07044bc8c13abd542756c3fd34dc66a5d6dee8e4", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-mbstring": "^1.3", - "symfony/polyfill-php80": "^1.16" - }, - "conflict": { - "phpmyadmin/motranslator": "<3.0" - }, - "require-dev": { - "phpbench/phpbench": "^1.1", - "phpmyadmin/coding-standard": "^3.0", - "phpmyadmin/motranslator": "^4.0 || ^5.0", - "phpstan/extension-installer": "^1.4", - "phpstan/phpstan": "^1.12", - "phpstan/phpstan-deprecation-rules": "^1.2", - "phpstan/phpstan-phpunit": "^1.4", - "phpstan/phpstan-strict-rules": "^1.6", - "phpunit/phpunit": "^8.5 || ^9.6", - "psalm/plugin-phpunit": "^0.16.1", - "vimeo/psalm": "^4.11", - "zumba/json-serializer": "~3.0.2" - }, - "suggest": { - "ext-mbstring": "For best performance", - "phpmyadmin/motranslator": "Translate messages to your favorite locale" - }, - "bin": [ - "bin/highlight-query", - "bin/lint-query", - "bin/sql-parser", - "bin/tokenize-query" - ], - "type": "library", - "autoload": { - "psr-4": { - "PhpMyAdmin\\SqlParser\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "The phpMyAdmin Team", - "email": "developers@phpmyadmin.net", - "homepage": "https://www.phpmyadmin.net/team/" - } - ], - "description": "A validating SQL lexer and parser with a focus on MySQL dialect.", - "homepage": "https://github.com/phpmyadmin/sql-parser", - "keywords": [ - "analysis", - "lexer", - "parser", - "query linter", - "sql", - "sql lexer", - "sql linter", - "sql parser", - "sql syntax highlighter", - "sql tokenizer" - ], - "support": { - "issues": "https://github.com/phpmyadmin/sql-parser/issues", - "source": "https://github.com/phpmyadmin/sql-parser" - }, - "funding": [ - { - "url": "https://www.phpmyadmin.net/donate/", - "type": "other" - } - ], - "time": "2025-02-22T20:00:59+00:00" - }, { "name": "phpstan/phpstan", - "version": "1.12.0", + "version": "2.1.17", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "384af967d35b2162f69526c7276acadce534d0e1" + "reference": "89b5ef665716fa2a52ecd2633f21007a6a349053" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/384af967d35b2162f69526c7276acadce534d0e1", - "reference": "384af967d35b2162f69526c7276acadce534d0e1", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/89b5ef665716fa2a52ecd2633f21007a6a349053", + "reference": "89b5ef665716fa2a52ecd2633f21007a6a349053", "shasum": "" }, "require": { - "php": "^7.2|^8.0" + "php": "^7.4|^8.0" }, "conflict": { "phpstan/phpstan-shim": "*" @@ -14076,20 +14050,20 @@ "type": "github" } ], - "time": "2024-08-27T09:18:05+00:00" + "time": "2025-05-21T20:55:28+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "11.0.9", + "version": "12.3.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "14d63fbcca18457e49c6f8bebaa91a87e8e188d7" + "reference": "ddec29dfc128eba9c204389960f2063f3b7fa170" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/14d63fbcca18457e49c6f8bebaa91a87e8e188d7", - "reference": "14d63fbcca18457e49c6f8bebaa91a87e8e188d7", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ddec29dfc128eba9c204389960f2063f3b7fa170", + "reference": "ddec29dfc128eba9c204389960f2063f3b7fa170", "shasum": "" }, "require": { @@ -14097,18 +14071,17 @@ "ext-libxml": "*", "ext-xmlwriter": "*", "nikic/php-parser": "^5.4.0", - "php": ">=8.2", - "phpunit/php-file-iterator": "^5.1.0", - "phpunit/php-text-template": "^4.0.1", - "sebastian/code-unit-reverse-lookup": "^4.0.1", - "sebastian/complexity": "^4.0.1", - "sebastian/environment": "^7.2.0", - "sebastian/lines-of-code": "^3.0.1", - "sebastian/version": "^5.0.2", + "php": ">=8.3", + "phpunit/php-file-iterator": "^6.0", + "phpunit/php-text-template": "^5.0", + "sebastian/complexity": "^5.0", + "sebastian/environment": "^8.0", + "sebastian/lines-of-code": "^4.0", + "sebastian/version": "^6.0", "theseer/tokenizer": "^1.2.3" }, "require-dev": { - "phpunit/phpunit": "^11.5.2" + "phpunit/phpunit": "^12.1" }, "suggest": { "ext-pcov": "PHP extension that provides line coverage", @@ -14117,7 +14090,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "11.0.x-dev" + "dev-main": "12.3.x-dev" } }, "autoload": { @@ -14146,40 +14119,52 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/11.0.9" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/12.3.1" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/php-code-coverage", + "type": "tidelift" } ], - "time": "2025-02-25T13:26:39+00:00" + "time": "2025-06-18T08:58:13+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "5.1.0", + "version": "6.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "118cfaaa8bc5aef3287bf315b6060b1174754af6" + "reference": "961bc913d42fe24a257bfff826a5068079ac7782" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/118cfaaa8bc5aef3287bf315b6060b1174754af6", - "reference": "118cfaaa8bc5aef3287bf315b6060b1174754af6", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/961bc913d42fe24a257bfff826a5068079ac7782", + "reference": "961bc913d42fe24a257bfff826a5068079ac7782", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^11.0" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -14207,7 +14192,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/5.1.0" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/6.0.0" }, "funding": [ { @@ -14215,28 +14200,28 @@ "type": "github" } ], - "time": "2024-08-27T05:02:59+00:00" + "time": "2025-02-07T04:58:37+00:00" }, { "name": "phpunit/php-invoker", - "version": "5.0.1", + "version": "6.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "c1ca3814734c07492b3d4c5f794f4b0995333da2" + "reference": "12b54e689b07a25a9b41e57736dfab6ec9ae5406" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/c1ca3814734c07492b3d4c5f794f4b0995333da2", - "reference": "c1ca3814734c07492b3d4c5f794f4b0995333da2", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/12b54e689b07a25a9b41e57736dfab6ec9ae5406", + "reference": "12b54e689b07a25a9b41e57736dfab6ec9ae5406", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.3" }, "require-dev": { "ext-pcntl": "*", - "phpunit/phpunit": "^11.0" + "phpunit/phpunit": "^12.0" }, "suggest": { "ext-pcntl": "*" @@ -14244,7 +14229,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -14271,7 +14256,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-invoker/issues", "security": "https://github.com/sebastianbergmann/php-invoker/security/policy", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/5.0.1" + "source": "https://github.com/sebastianbergmann/php-invoker/tree/6.0.0" }, "funding": [ { @@ -14279,32 +14264,32 @@ "type": "github" } ], - "time": "2024-07-03T05:07:44+00:00" + "time": "2025-02-07T04:58:58+00:00" }, { "name": "phpunit/php-text-template", - "version": "4.0.1", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "3e0404dc6b300e6bf56415467ebcb3fe4f33e964" + "reference": "e1367a453f0eda562eedb4f659e13aa900d66c53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/3e0404dc6b300e6bf56415467ebcb3fe4f33e964", - "reference": "3e0404dc6b300e6bf56415467ebcb3fe4f33e964", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/e1367a453f0eda562eedb4f659e13aa900d66c53", + "reference": "e1367a453f0eda562eedb4f659e13aa900d66c53", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^11.0" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -14331,7 +14316,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-text-template/issues", "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/4.0.1" + "source": "https://github.com/sebastianbergmann/php-text-template/tree/5.0.0" }, "funding": [ { @@ -14339,32 +14324,32 @@ "type": "github" } ], - "time": "2024-07-03T05:08:43+00:00" + "time": "2025-02-07T04:59:16+00:00" }, { "name": "phpunit/php-timer", - "version": "7.0.1", + "version": "8.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "3b415def83fbcb41f991d9ebf16ae4ad8b7837b3" + "reference": "f258ce36aa457f3aa3339f9ed4c81fc66dc8c2cc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3b415def83fbcb41f991d9ebf16ae4ad8b7837b3", - "reference": "3b415def83fbcb41f991d9ebf16ae4ad8b7837b3", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/f258ce36aa457f3aa3339f9ed4c81fc66dc8c2cc", + "reference": "f258ce36aa457f3aa3339f9ed4c81fc66dc8c2cc", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^11.0" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "7.0-dev" + "dev-main": "8.0-dev" } }, "autoload": { @@ -14391,7 +14376,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-timer/issues", "security": "https://github.com/sebastianbergmann/php-timer/security/policy", - "source": "https://github.com/sebastianbergmann/php-timer/tree/7.0.1" + "source": "https://github.com/sebastianbergmann/php-timer/tree/8.0.0" }, "funding": [ { @@ -14399,20 +14384,20 @@ "type": "github" } ], - "time": "2024-07-03T05:09:35+00:00" + "time": "2025-02-07T04:59:38+00:00" }, { "name": "phpunit/phpunit", - "version": "11.5.18", + "version": "12.2.7", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "fc3e887c7f3f9917e1bf61e523413d753db00a17" + "reference": "8b1348b254e5959acaf1539c6bd790515fb49414" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/fc3e887c7f3f9917e1bf61e523413d753db00a17", - "reference": "fc3e887c7f3f9917e1bf61e523413d753db00a17", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/8b1348b254e5959acaf1539c6bd790515fb49414", + "reference": "8b1348b254e5959acaf1539c6bd790515fb49414", "shasum": "" }, "require": { @@ -14422,37 +14407,33 @@ "ext-mbstring": "*", "ext-xml": "*", "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.13.0", + "myclabs/deep-copy": "^1.13.3", "phar-io/manifest": "^2.0.4", "phar-io/version": "^3.2.1", - "php": ">=8.2", - "phpunit/php-code-coverage": "^11.0.9", - "phpunit/php-file-iterator": "^5.1.0", - "phpunit/php-invoker": "^5.0.1", - "phpunit/php-text-template": "^4.0.1", - "phpunit/php-timer": "^7.0.1", - "sebastian/cli-parser": "^3.0.2", - "sebastian/code-unit": "^3.0.3", - "sebastian/comparator": "^6.3.1", - "sebastian/diff": "^6.0.2", - "sebastian/environment": "^7.2.0", - "sebastian/exporter": "^6.3.0", - "sebastian/global-state": "^7.0.2", - "sebastian/object-enumerator": "^6.0.1", - "sebastian/type": "^5.1.2", - "sebastian/version": "^5.0.2", + "php": ">=8.3", + "phpunit/php-code-coverage": "^12.3.1", + "phpunit/php-file-iterator": "^6.0.0", + "phpunit/php-invoker": "^6.0.0", + "phpunit/php-text-template": "^5.0.0", + "phpunit/php-timer": "^8.0.0", + "sebastian/cli-parser": "^4.0.0", + "sebastian/comparator": "^7.1.0", + "sebastian/diff": "^7.0.0", + "sebastian/environment": "^8.0.2", + "sebastian/exporter": "^7.0.0", + "sebastian/global-state": "^8.0.0", + "sebastian/object-enumerator": "^7.0.0", + "sebastian/type": "^6.0.2", + "sebastian/version": "^6.0.0", "staabm/side-effects-detector": "^1.0.5" }, - "suggest": { - "ext-soap": "To be able to generate mocks based on WSDL files" - }, "bin": [ "phpunit" ], "type": "library", "extra": { "branch-alias": { - "dev-main": "11.5-dev" + "dev-main": "12.2-dev" } }, "autoload": { @@ -14484,7 +14465,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.18" + "source": "https://github.com/sebastianbergmann/phpunit/tree/12.2.7" }, "funding": [ { @@ -14508,32 +14489,32 @@ "type": "tidelift" } ], - "time": "2025-04-22T06:09:49+00:00" + "time": "2025-07-11T04:11:13+00:00" }, { "name": "sebastian/cli-parser", - "version": "3.0.2", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "15c5dd40dc4f38794d383bb95465193f5e0ae180" + "reference": "6d584c727d9114bcdc14c86711cd1cad51778e7c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/15c5dd40dc4f38794d383bb95465193f5e0ae180", - "reference": "15c5dd40dc4f38794d383bb95465193f5e0ae180", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/6d584c727d9114bcdc14c86711cd1cad51778e7c", + "reference": "6d584c727d9114bcdc14c86711cd1cad51778e7c", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^11.0" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -14557,7 +14538,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/cli-parser/issues", "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/3.0.2" + "source": "https://github.com/sebastianbergmann/cli-parser/tree/4.0.0" }, "funding": [ { @@ -14565,144 +14546,31 @@ "type": "github" } ], - "time": "2024-07-03T04:41:36+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "54391c61e4af8078e5b276ab082b6d3c54c9ad64" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/54391c61e4af8078e5b276ab082b6d3c54c9ad64", - "reference": "54391c61e4af8078e5b276ab082b6d3c54c9ad64", - "shasum": "" - }, - "require": { - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Collection of value objects that represent the PHP code units", - "homepage": "https://github.com/sebastianbergmann/code-unit", - "support": { - "issues": "https://github.com/sebastianbergmann/code-unit/issues", - "security": "https://github.com/sebastianbergmann/code-unit/security/policy", - "source": "https://github.com/sebastianbergmann/code-unit/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2025-03-19T07:56:08+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "4.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "183a9b2632194febd219bb9246eee421dad8d45e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/183a9b2632194febd219bb9246eee421dad8d45e", - "reference": "183a9b2632194febd219bb9246eee421dad8d45e", - "shasum": "" - }, - "require": { - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Looks up which function or method a line of code belongs to", - "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "support": { - "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "security": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/security/policy", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/4.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-07-03T04:45:54+00:00" + "time": "2025-02-07T04:53:50+00:00" }, { "name": "sebastian/comparator", - "version": "6.3.1", + "version": "7.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "24b8fbc2c8e201bb1308e7b05148d6ab393b6959" + "reference": "03d905327dccc0851c9a08d6a979dfc683826b6f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/24b8fbc2c8e201bb1308e7b05148d6ab393b6959", - "reference": "24b8fbc2c8e201bb1308e7b05148d6ab393b6959", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/03d905327dccc0851c9a08d6a979dfc683826b6f", + "reference": "03d905327dccc0851c9a08d6a979dfc683826b6f", "shasum": "" }, "require": { "ext-dom": "*", "ext-mbstring": "*", - "php": ">=8.2", - "sebastian/diff": "^6.0", - "sebastian/exporter": "^6.0" + "php": ">=8.3", + "sebastian/diff": "^7.0", + "sebastian/exporter": "^7.0" }, "require-dev": { - "phpunit/phpunit": "^11.4" + "phpunit/phpunit": "^12.2" }, "suggest": { "ext-bcmath": "For comparing BcMath\\Number objects" @@ -14710,7 +14578,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "6.3-dev" + "dev-main": "7.1-dev" } }, "autoload": { @@ -14750,41 +14618,53 @@ "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", "security": "https://github.com/sebastianbergmann/comparator/security/policy", - "source": "https://github.com/sebastianbergmann/comparator/tree/6.3.1" + "source": "https://github.com/sebastianbergmann/comparator/tree/7.1.0" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/comparator", + "type": "tidelift" } ], - "time": "2025-03-07T06:57:01+00:00" + "time": "2025-06-17T07:41:58+00:00" }, { "name": "sebastian/complexity", - "version": "4.0.1", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "ee41d384ab1906c68852636b6de493846e13e5a0" + "reference": "bad4316aba5303d0221f43f8cee37eb58d384bbb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/ee41d384ab1906c68852636b6de493846e13e5a0", - "reference": "ee41d384ab1906c68852636b6de493846e13e5a0", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/bad4316aba5303d0221f43f8cee37eb58d384bbb", + "reference": "bad4316aba5303d0221f43f8cee37eb58d384bbb", "shasum": "" }, "require": { "nikic/php-parser": "^5.0", - "php": ">=8.2" + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^11.0" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -14808,7 +14688,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", "security": "https://github.com/sebastianbergmann/complexity/security/policy", - "source": "https://github.com/sebastianbergmann/complexity/tree/4.0.1" + "source": "https://github.com/sebastianbergmann/complexity/tree/5.0.0" }, "funding": [ { @@ -14816,33 +14696,33 @@ "type": "github" } ], - "time": "2024-07-03T04:49:50+00:00" + "time": "2025-02-07T04:55:25+00:00" }, { "name": "sebastian/diff", - "version": "6.0.2", + "version": "7.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "b4ccd857127db5d41a5b676f24b51371d76d8544" + "reference": "7ab1ea946c012266ca32390913653d844ecd085f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/b4ccd857127db5d41a5b676f24b51371d76d8544", - "reference": "b4ccd857127db5d41a5b676f24b51371d76d8544", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7ab1ea946c012266ca32390913653d844ecd085f", + "reference": "7ab1ea946c012266ca32390913653d844ecd085f", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^11.0", - "symfony/process": "^4.2 || ^5" + "phpunit/phpunit": "^12.0", + "symfony/process": "^7.2" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "6.0-dev" + "dev-main": "7.0-dev" } }, "autoload": { @@ -14875,7 +14755,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", "security": "https://github.com/sebastianbergmann/diff/security/policy", - "source": "https://github.com/sebastianbergmann/diff/tree/6.0.2" + "source": "https://github.com/sebastianbergmann/diff/tree/7.0.0" }, "funding": [ { @@ -14883,27 +14763,27 @@ "type": "github" } ], - "time": "2024-07-03T04:53:05+00:00" + "time": "2025-02-07T04:55:46+00:00" }, { "name": "sebastian/environment", - "version": "7.2.0", + "version": "8.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "855f3ae0ab316bbafe1ba4e16e9f3c078d24a0c5" + "reference": "d364b9e5d0d3b18a2573351a1786fbf96b7e0792" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/855f3ae0ab316bbafe1ba4e16e9f3c078d24a0c5", - "reference": "855f3ae0ab316bbafe1ba4e16e9f3c078d24a0c5", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/d364b9e5d0d3b18a2573351a1786fbf96b7e0792", + "reference": "d364b9e5d0d3b18a2573351a1786fbf96b7e0792", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^11.0" + "phpunit/phpunit": "^12.0" }, "suggest": { "ext-posix": "*" @@ -14911,7 +14791,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "7.2-dev" + "dev-main": "8.0-dev" } }, "autoload": { @@ -14939,42 +14819,54 @@ "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", "security": "https://github.com/sebastianbergmann/environment/security/policy", - "source": "https://github.com/sebastianbergmann/environment/tree/7.2.0" + "source": "https://github.com/sebastianbergmann/environment/tree/8.0.2" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/environment", + "type": "tidelift" } ], - "time": "2024-07-03T04:54:44+00:00" + "time": "2025-05-21T15:05:44+00:00" }, { "name": "sebastian/exporter", - "version": "6.3.0", + "version": "7.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "3473f61172093b2da7de1fb5782e1f24cc036dc3" + "reference": "76432aafc58d50691a00d86d0632f1217a47b688" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/3473f61172093b2da7de1fb5782e1f24cc036dc3", - "reference": "3473f61172093b2da7de1fb5782e1f24cc036dc3", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/76432aafc58d50691a00d86d0632f1217a47b688", + "reference": "76432aafc58d50691a00d86d0632f1217a47b688", "shasum": "" }, "require": { "ext-mbstring": "*", - "php": ">=8.2", - "sebastian/recursion-context": "^6.0" + "php": ">=8.3", + "sebastian/recursion-context": "^7.0" }, "require-dev": { - "phpunit/phpunit": "^11.3" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "6.1-dev" + "dev-main": "7.0-dev" } }, "autoload": { @@ -15017,7 +14909,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", "security": "https://github.com/sebastianbergmann/exporter/security/policy", - "source": "https://github.com/sebastianbergmann/exporter/tree/6.3.0" + "source": "https://github.com/sebastianbergmann/exporter/tree/7.0.0" }, "funding": [ { @@ -15025,35 +14917,35 @@ "type": "github" } ], - "time": "2024-12-05T09:17:50+00:00" + "time": "2025-02-07T04:56:42+00:00" }, { "name": "sebastian/global-state", - "version": "7.0.2", + "version": "8.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "3be331570a721f9a4b5917f4209773de17f747d7" + "reference": "570a2aeb26d40f057af686d63c4e99b075fb6cbc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/3be331570a721f9a4b5917f4209773de17f747d7", - "reference": "3be331570a721f9a4b5917f4209773de17f747d7", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/570a2aeb26d40f057af686d63c4e99b075fb6cbc", + "reference": "570a2aeb26d40f057af686d63c4e99b075fb6cbc", "shasum": "" }, "require": { - "php": ">=8.2", - "sebastian/object-reflector": "^4.0", - "sebastian/recursion-context": "^6.0" + "php": ">=8.3", + "sebastian/object-reflector": "^5.0", + "sebastian/recursion-context": "^7.0" }, "require-dev": { "ext-dom": "*", - "phpunit/phpunit": "^11.0" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "7.0-dev" + "dev-main": "8.0-dev" } }, "autoload": { @@ -15079,7 +14971,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", "security": "https://github.com/sebastianbergmann/global-state/security/policy", - "source": "https://github.com/sebastianbergmann/global-state/tree/7.0.2" + "source": "https://github.com/sebastianbergmann/global-state/tree/8.0.0" }, "funding": [ { @@ -15087,33 +14979,33 @@ "type": "github" } ], - "time": "2024-07-03T04:57:36+00:00" + "time": "2025-02-07T04:56:59+00:00" }, { "name": "sebastian/lines-of-code", - "version": "3.0.1", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "d36ad0d782e5756913e42ad87cb2890f4ffe467a" + "reference": "97ffee3bcfb5805568d6af7f0f893678fc076d2f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/d36ad0d782e5756913e42ad87cb2890f4ffe467a", - "reference": "d36ad0d782e5756913e42ad87cb2890f4ffe467a", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/97ffee3bcfb5805568d6af7f0f893678fc076d2f", + "reference": "97ffee3bcfb5805568d6af7f0f893678fc076d2f", "shasum": "" }, "require": { "nikic/php-parser": "^5.0", - "php": ">=8.2" + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^11.0" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -15137,7 +15029,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/3.0.1" + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/4.0.0" }, "funding": [ { @@ -15145,34 +15037,34 @@ "type": "github" } ], - "time": "2024-07-03T04:58:38+00:00" + "time": "2025-02-07T04:57:28+00:00" }, { "name": "sebastian/object-enumerator", - "version": "6.0.1", + "version": "7.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "f5b498e631a74204185071eb41f33f38d64608aa" + "reference": "1effe8e9b8e068e9ae228e542d5d11b5d16db894" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/f5b498e631a74204185071eb41f33f38d64608aa", - "reference": "f5b498e631a74204185071eb41f33f38d64608aa", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1effe8e9b8e068e9ae228e542d5d11b5d16db894", + "reference": "1effe8e9b8e068e9ae228e542d5d11b5d16db894", "shasum": "" }, "require": { - "php": ">=8.2", - "sebastian/object-reflector": "^4.0", - "sebastian/recursion-context": "^6.0" + "php": ">=8.3", + "sebastian/object-reflector": "^5.0", + "sebastian/recursion-context": "^7.0" }, "require-dev": { - "phpunit/phpunit": "^11.0" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "6.0-dev" + "dev-main": "7.0-dev" } }, "autoload": { @@ -15195,7 +15087,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", "security": "https://github.com/sebastianbergmann/object-enumerator/security/policy", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/6.0.1" + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/7.0.0" }, "funding": [ { @@ -15203,32 +15095,32 @@ "type": "github" } ], - "time": "2024-07-03T05:00:13+00:00" + "time": "2025-02-07T04:57:48+00:00" }, { "name": "sebastian/object-reflector", - "version": "4.0.1", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "6e1a43b411b2ad34146dee7524cb13a068bb35f9" + "reference": "4bfa827c969c98be1e527abd576533293c634f6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/6e1a43b411b2ad34146dee7524cb13a068bb35f9", - "reference": "6e1a43b411b2ad34146dee7524cb13a068bb35f9", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/4bfa827c969c98be1e527abd576533293c634f6a", + "reference": "4bfa827c969c98be1e527abd576533293c634f6a", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^11.0" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -15251,7 +15143,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/object-reflector/issues", "security": "https://github.com/sebastianbergmann/object-reflector/security/policy", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/4.0.1" + "source": "https://github.com/sebastianbergmann/object-reflector/tree/5.0.0" }, "funding": [ { @@ -15259,32 +15151,32 @@ "type": "github" } ], - "time": "2024-07-03T05:01:32+00:00" + "time": "2025-02-07T04:58:17+00:00" }, { "name": "sebastian/recursion-context", - "version": "6.0.2", + "version": "7.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "694d156164372abbd149a4b85ccda2e4670c0e16" + "reference": "c405ae3a63e01b32eb71577f8ec1604e39858a7c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/694d156164372abbd149a4b85ccda2e4670c0e16", - "reference": "694d156164372abbd149a4b85ccda2e4670c0e16", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/c405ae3a63e01b32eb71577f8ec1604e39858a7c", + "reference": "c405ae3a63e01b32eb71577f8ec1604e39858a7c", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^11.0" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "6.0-dev" + "dev-main": "7.0-dev" } }, "autoload": { @@ -15315,7 +15207,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", "security": "https://github.com/sebastianbergmann/recursion-context/security/policy", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/6.0.2" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/7.0.0" }, "funding": [ { @@ -15323,32 +15215,32 @@ "type": "github" } ], - "time": "2024-07-03T05:10:34+00:00" + "time": "2025-02-07T05:00:01+00:00" }, { "name": "sebastian/type", - "version": "5.1.2", + "version": "6.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "a8a7e30534b0eb0c77cd9d07e82de1a114389f5e" + "reference": "1d7cd6e514384c36d7a390347f57c385d4be6069" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/a8a7e30534b0eb0c77cd9d07e82de1a114389f5e", - "reference": "a8a7e30534b0eb0c77cd9d07e82de1a114389f5e", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/1d7cd6e514384c36d7a390347f57c385d4be6069", + "reference": "1d7cd6e514384c36d7a390347f57c385d4be6069", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^11.3" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.1-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -15372,7 +15264,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/type/issues", "security": "https://github.com/sebastianbergmann/type/security/policy", - "source": "https://github.com/sebastianbergmann/type/tree/5.1.2" + "source": "https://github.com/sebastianbergmann/type/tree/6.0.2" }, "funding": [ { @@ -15380,29 +15272,29 @@ "type": "github" } ], - "time": "2025-03-18T13:35:50+00:00" + "time": "2025-03-18T13:37:31+00:00" }, { "name": "sebastian/version", - "version": "5.0.2", + "version": "6.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c687e3387b99f5b03b6caa64c74b63e2936ff874" + "reference": "3e6ccf7657d4f0a59200564b08cead899313b53c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c687e3387b99f5b03b6caa64c74b63e2936ff874", - "reference": "c687e3387b99f5b03b6caa64c74b63e2936ff874", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/3e6ccf7657d4f0a59200564b08cead899313b53c", + "reference": "3e6ccf7657d4f0a59200564b08cead899313b53c", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -15426,7 +15318,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/version/issues", "security": "https://github.com/sebastianbergmann/version/security/policy", - "source": "https://github.com/sebastianbergmann/version/tree/5.0.2" + "source": "https://github.com/sebastianbergmann/version/tree/6.0.0" }, "funding": [ { @@ -15434,20 +15326,20 @@ "type": "github" } ], - "time": "2024-10-09T05:16:32+00:00" + "time": "2025-02-07T05:00:38+00:00" }, { "name": "spatie/backtrace", - "version": "1.7.1", + "version": "1.7.4", "source": { "type": "git", "url": "https://github.com/spatie/backtrace.git", - "reference": "0f2477c520e3729de58e061b8192f161c99f770b" + "reference": "cd37a49fce7137359ac30ecc44ef3e16404cccbe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/0f2477c520e3729de58e061b8192f161c99f770b", - "reference": "0f2477c520e3729de58e061b8192f161c99f770b", + "url": "https://api.github.com/repos/spatie/backtrace/zipball/cd37a49fce7137359ac30ecc44ef3e16404cccbe", + "reference": "cd37a49fce7137359ac30ecc44ef3e16404cccbe", "shasum": "" }, "require": { @@ -15485,7 +15377,7 @@ "spatie" ], "support": { - "source": "https://github.com/spatie/backtrace/tree/1.7.1" + "source": "https://github.com/spatie/backtrace/tree/1.7.4" }, "funding": [ { @@ -15497,7 +15389,7 @@ "type": "other" } ], - "time": "2024-12-02T13:28:15+00:00" + "time": "2025-05-08T15:41:09+00:00" }, { "name": "spatie/error-solutions", @@ -15870,16 +15762,16 @@ }, { "name": "symfony/yaml", - "version": "v7.2.5", + "version": "v7.3.1", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "4c4b6f4cfcd7e52053f0c8bfad0f7f30fb924912" + "reference": "0c3555045a46ab3cd4cc5a69d161225195230edb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/4c4b6f4cfcd7e52053f0c8bfad0f7f30fb924912", - "reference": "4c4b6f4cfcd7e52053f0c8bfad0f7f30fb924912", + "url": "https://api.github.com/repos/symfony/yaml/zipball/0c3555045a46ab3cd4cc5a69d161225195230edb", + "reference": "0c3555045a46ab3cd4cc5a69d161225195230edb", "shasum": "" }, "require": { @@ -15922,7 +15814,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v7.2.5" + "source": "https://github.com/symfony/yaml/tree/v7.3.1" }, "funding": [ { @@ -15938,7 +15830,7 @@ "type": "tidelift" } ], - "time": "2025-03-03T07:12:39+00:00" + "time": "2025-06-03T06:57:57+00:00" }, { "name": "theseer/tokenizer", diff --git a/config/passport.php b/config/passport.php index 99f8aa8f..949d38d8 100644 --- a/config/passport.php +++ b/config/passport.php @@ -34,31 +34,15 @@ return [ /* |-------------------------------------------------------------------------- - | Client UUIDs + | Passport Database Connection |-------------------------------------------------------------------------- | - | By default, Passport uses auto-incrementing primary keys when assigning - | IDs to clients. However, if Passport is installed using the provided - | --uuids switch, this will be set to "true" and UUIDs will be used. + | By default, Passport's models will utilize your application's default + | database connection. If you wish to use a different connection you + | may specify the configured name of the database connection here. | */ - 'client_uuids' => true, - - /* - |-------------------------------------------------------------------------- - | Personal Access Client - |-------------------------------------------------------------------------- - | - | If you enable client hashing, you should set the personal access client - | ID and unhashed secret within your environment file. The values will - | get used while issuing fresh personal access tokens to your users. - | - */ - - 'personal_access_client' => [ - 'id' => env('PASSPORT_PERSONAL_ACCESS_CLIENT_ID'), - 'secret' => env('PASSPORT_PERSONAL_ACCESS_CLIENT_SECRET'), - ], + 'connection' => env('PASSPORT_CONNECTION'), ]; diff --git a/database/factories/Passport/ClientFactory.php b/database/factories/Passport/ClientFactory.php index b38aedd2..41c39a50 100644 --- a/database/factories/Passport/ClientFactory.php +++ b/database/factories/Passport/ClientFactory.php @@ -7,11 +7,12 @@ namespace Database\Factories\Passport; use App\Models\Passport\Client; use App\Models\User; use Illuminate\Database\Eloquent\Factories\Factory; +use Laravel\Passport\Database\Factories\ClientFactory as BaseClientFactory; /** * @extends Factory */ -class ClientFactory extends Factory +class ClientFactory extends BaseClientFactory { /** * Define the model's default state. @@ -22,13 +23,13 @@ class ClientFactory extends Factory { return [ 'id' => $this->faker->uuid, - 'user_id' => null, + 'owner_id' => null, + 'owner_type' => null, 'name' => $this->faker->company(), 'secret' => $this->faker->regexify('[A-Za-z]{40}'), 'provider' => 'users', - 'redirect' => $this->faker->url(), - 'personal_access_client' => false, - 'password_client' => false, + 'redirect_uris' => [$this->faker->url()], + 'grant_types' => [], 'revoked' => false, 'created_at' => $this->faker->dateTime(), 'updated_at' => $this->faker->dateTime(), @@ -39,7 +40,7 @@ class ClientFactory extends Factory { return $this->state(function (array $attributes) { return [ - 'personal_access_client' => true, + 'grant_types' => ['personal_access'], ]; }); } @@ -48,7 +49,8 @@ class ClientFactory extends Factory { return $this->state(function (array $attributes) use ($user): array { return [ - 'user_id' => $user->getKey(), + 'owner_id' => $user->getKey(), + 'owner_type' => (new User)->getMorphClass(), ]; }); } diff --git a/database/migrations/2024_06_01_000001_create_oauth_device_codes_table.php b/database/migrations/2024_06_01_000001_create_oauth_device_codes_table.php new file mode 100644 index 00000000..19d011be --- /dev/null +++ b/database/migrations/2024_06_01_000001_create_oauth_device_codes_table.php @@ -0,0 +1,44 @@ +char('id', 80)->primary(); + $table->foreignId('user_id')->nullable()->index(); + $table->foreignUuid('client_id')->index(); + $table->char('user_code', 8)->unique(); + $table->text('scopes'); + $table->boolean('revoked'); + $table->dateTime('user_approved_at')->nullable(); + $table->dateTime('last_polled_at')->nullable(); + $table->dateTime('expires_at')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('oauth_device_codes'); + } + + /** + * Get the migration connection name. + */ + public function getConnection(): ?string + { + return $this->connection ?? config('passport.connection'); + } +}; diff --git a/database/migrations/2025_06_30_095942_remove_oauth_personal_access_clients_table.php b/database/migrations/2025_06_30_095942_remove_oauth_personal_access_clients_table.php new file mode 100644 index 00000000..865ddf94 --- /dev/null +++ b/database/migrations/2025_06_30_095942_remove_oauth_personal_access_clients_table.php @@ -0,0 +1,35 @@ +bigIncrements('id'); + $table->uuid('client_id'); + $table->foreign('client_id') + ->references('id') + ->on('oauth_clients') + ->onDelete('restrict') + ->onUpdate('cascade'); + $table->timestamps(); + }); + } +}; diff --git a/database/migrations/2025_06_30_132538_update_oauth_clients_table.php b/database/migrations/2025_06_30_132538_update_oauth_clients_table.php new file mode 100644 index 00000000..ff1ff47f --- /dev/null +++ b/database/migrations/2025_06_30_132538_update_oauth_clients_table.php @@ -0,0 +1,97 @@ +update(['provider' => 'users']); // Change default provider if necessary + + Schema::table('oauth_clients', function (Blueprint $table): void { + $table->text('grant_types')->default('[]')->after('provider'); + $table->text('redirect_uris')->default('[]'); + $table->renameColumn('user_id', 'owner_id'); + $table->string('owner_type')->after('owner_id')->nullable(); + }); + DB::table('oauth_clients') + ->where('personal_access_client', 1) + ->update(['grant_types' => ['personal_access']]); + DB::table('oauth_clients') + ->where('password_client', 1) + ->update(['grant_types' => ['password', 'refresh_token']]); + DB::table('oauth_clients') + ->where('password_client', 0) + ->where('personal_access_client', 0) + ->update(['grant_types' => ['client_credentials']]); + + DB::table('oauth_clients') + ->whereNotNull('owner_id') + ->update(['owner_type' => 'user']); // Value might be class name of the owner model, depends on if you use "enforceMorphMap" + + DB::table('oauth_clients')->eachById(function ($client): void { + $redirectUris = [$client->redirect]; + DB::table('oauth_clients') + ->where('id', $client->id) + ->update([ + 'redirect_uris' => $redirectUris, + ]); + }); + + Schema::table('oauth_clients', function (Blueprint $table): void { + $table->dropForeign(['user_id']); + $table->index(['owner_id', 'owner_type']); + $table->dropColumn('redirect'); + $table->dropColumn('personal_access_client'); + $table->dropColumn('password_client'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('oauth_clients', function (Blueprint $table): void { + $table->dropIndex(['owner_id', 'owner_type']); + $table->renameColumn('owner_id', 'user_id'); + $table->foreign('user_id') + ->on('users') + ->references('id') + ->onDelete('cascade') + ->onUpdate('cascade'); + $table->string('redirect')->nullable(); + $table->boolean('personal_access_client')->default(false); + $table->boolean('password_client')->default(false); + }); + + DB::table('oauth_clients')->eachById(function ($client): void { + $redirectUris = json_decode($client->redirect_uris); + $grantTypes = json_decode($client->grant_types); + + DB::table('oauth_clients') + ->where('id', $client->id) + ->update([ + 'redirect' => $redirectUris[0] ?? '', // redirect not nullable + 'password_client' => in_array('password', $grantTypes, true) + && in_array('refresh_token', $grantTypes, true), + 'personal_access_client' => in_array('personal_access', $grantTypes, true), + ]); + }); + + Schema::table('oauth_clients', function (Blueprint $table): void { + $table->dropColumn(['grant_types', 'redirect_uris', 'owner_type']); + $table->string('redirect')->nullable(false)->change(); + $table->boolean('personal_access_client')->default(null)->change(); + $table->boolean('password_client')->default(null)->change(); + }); + + } +}; diff --git a/database/migrations/2025_07_15_105949_hash_oauth_clients.php b/database/migrations/2025_07_15_105949_hash_oauth_clients.php new file mode 100644 index 00000000..36b76d96 --- /dev/null +++ b/database/migrations/2025_07_15_105949_hash_oauth_clients.php @@ -0,0 +1,35 @@ +eachById(function ($client): void { + $secret = $client->secret; + if (Hash::isHashed($secret) && ! Hash::needsRehash($secret)) { + return; // Already hashed and not needing rehash + } + DB::table('oauth_clients') + ->where('id', $client->id) + ->update([ + 'secret' => Hash::make($secret), + ]); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + // This can not be reversed without a backup of the original secrets, for security reasons. + } +}; diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 30447b8d..dfbe153b 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -24,7 +24,6 @@ use Illuminate\Support\Facades\DB; use Laravel\Passport\AuthCode; use Laravel\Passport\Client as PassportClient; use Laravel\Passport\ClientRepository; -use Laravel\Passport\PersonalAccessClient; use Laravel\Passport\RefreshToken; use Laravel\Passport\Token; @@ -37,6 +36,18 @@ class DatabaseSeeder extends Seeder { $this->deleteAll(); + app(ClientRepository::class)->createAuthorizationCodeGrantClient( + name: 'Desktop App', + redirectUris: ['solidtime://oauth/callback'], + confidential: false, // TODO: ? + enableDeviceFlow: false, // TODO: ? + ); + + // TODO: grant_types ? migration? + + // app(ClientRepository::class)->createPersonalAccessGrantClient('API'); + + /* app(ClientRepository::class)->create( null, 'desktop', @@ -46,17 +57,16 @@ class DatabaseSeeder extends Seeder false, false ); + */ $personalAccessClient = new PassportClient; $personalAccessClient->id = config('passport.personal_access_client.id'); $personalAccessClient->secret = config('passport.personal_access_client.secret'); $personalAccessClient->name = 'API'; - $personalAccessClient->redirect = 'http://localhost'; - $personalAccessClient->user_id = null; + $personalAccessClient->redirect_uris = ['http://localhost']; $personalAccessClient->revoked = false; - $personalAccessClient->provider = null; - $personalAccessClient->personal_access_client = true; - $personalAccessClient->password_client = false; + $personalAccessClient->provider = 'users'; + $personalAccessClient->grant_types = ['personal_access']; $personalAccessClient->save(); $userWithMultipleOrganizations = User::factory()->withPersonalOrganization()->create([ @@ -197,7 +207,6 @@ class DatabaseSeeder extends Seeder DB::table((new RefreshToken)->getTable())->delete(); DB::table((new Token)->getTable())->delete(); DB::table((new AuthCode)->getTable())->delete(); - DB::table((new PersonalAccessClient)->getTable())->delete(); DB::table((new PassportClient)->getTable())->delete(); // Internal tables diff --git a/phpstan.neon b/phpstan.neon index ceb6bdff..14723499 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -12,3 +12,7 @@ parameters: checkOctaneCompatibility: true checkModelProperties: true noEnvCallsOutsideOfConfig: true + + ignoreErrors: + - '# is not subtype of native type Illuminate\\Database\\Eloquent\\Builder#' + - '# is not subtype of native type Illuminate\\Database\\Eloquent\\Relations\\Relation#' diff --git a/resources/views/vendor/passport/authorize.blade.php b/resources/views/auth/oauth/authorize.blade.php similarity index 100% rename from resources/views/vendor/passport/authorize.blade.php rename to resources/views/auth/oauth/authorize.blade.php diff --git a/routes/api.php b/routes/api.php index 23b8b033..a09eac0a 100644 --- a/routes/api.php +++ b/routes/api.php @@ -114,6 +114,7 @@ Route::prefix('v1')->name('v1.')->group(static function (): void { Route::name('users.time-entries.')->group(static function (): void { Route::get('/users/me/time-entries/active', [UserTimeEntryController::class, 'myActive'])->name('my-active'); + Route::get('/users/me/time-entries', [UserTimeEntryController::class, 'my'])->name('my'); // TODO }); // Report routes diff --git a/tests/Unit/Console/Commands/Admin/OrganizationDeleteCommandTest.php b/tests/Unit/Console/Commands/Admin/OrganizationDeleteCommandTest.php index 22198f7d..afbe9f11 100644 --- a/tests/Unit/Console/Commands/Admin/OrganizationDeleteCommandTest.php +++ b/tests/Unit/Console/Commands/Admin/OrganizationDeleteCommandTest.php @@ -10,11 +10,9 @@ use App\Service\DeletionService; use Illuminate\Support\Str; use Mockery\MockInterface; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; use Tests\TestCaseWithDatabase; #[CoversClass(OrganizationDeleteCommand::class)] -#[UsesClass(OrganizationDeleteCommand::class)] class OrganizationDeleteCommandTest extends TestCaseWithDatabase { public function test_it_calls_the_deletion_service_with_the_organization(): void diff --git a/tests/Unit/Console/Commands/Admin/UserCreateCommandCommandTest.php b/tests/Unit/Console/Commands/Admin/UserCreateCommandCommandTest.php index 1d822241..37e94f9c 100644 --- a/tests/Unit/Console/Commands/Admin/UserCreateCommandCommandTest.php +++ b/tests/Unit/Console/Commands/Admin/UserCreateCommandCommandTest.php @@ -10,11 +10,9 @@ use Illuminate\Console\Command; use Illuminate\Support\Facades\Artisan; use Illuminate\Support\Facades\Hash; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; use Tests\TestCaseWithDatabase; #[CoversClass(UserCreateCommand::class)] -#[UsesClass(UserCreateCommand::class)] class UserCreateCommandCommandTest extends TestCaseWithDatabase { public function test_it_creates_user(): void diff --git a/tests/Unit/Console/Commands/Admin/UserVerifyCommandTest.php b/tests/Unit/Console/Commands/Admin/UserVerifyCommandTest.php index 0efa985c..d05be5dc 100644 --- a/tests/Unit/Console/Commands/Admin/UserVerifyCommandTest.php +++ b/tests/Unit/Console/Commands/Admin/UserVerifyCommandTest.php @@ -9,11 +9,9 @@ use App\Models\Member; use App\Models\Organization; use App\Models\User; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; use Tests\TestCaseWithDatabase; #[CoversClass(UserVerifyCommand::class)] -#[UsesClass(UserVerifyCommand::class)] class UserVerifyCommandTest extends TestCaseWithDatabase { public function test_it_verifies_user_email(): void diff --git a/tests/Unit/Console/Commands/Correction/CorrectionPlaceholderMembersCommandTest.php b/tests/Unit/Console/Commands/Correction/CorrectionPlaceholderMembersCommandTest.php index 651f1fb4..5607f3e3 100644 --- a/tests/Unit/Console/Commands/Correction/CorrectionPlaceholderMembersCommandTest.php +++ b/tests/Unit/Console/Commands/Correction/CorrectionPlaceholderMembersCommandTest.php @@ -12,11 +12,9 @@ use App\Models\User; use Illuminate\Console\Command; use Illuminate\Support\Facades\Artisan; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; use Tests\TestCaseWithDatabase; #[CoversClass(CorrectionPlaceholderMembersCommand::class)] -#[UsesClass(CorrectionPlaceholderMembersCommand::class)] class CorrectionPlaceholderMembersCommandTest extends TestCaseWithDatabase { public function test_sets_member_role_to_placeholder_if_user_is_placeholder(): void diff --git a/tests/Unit/Console/Commands/Report/ReportSetExpiredToPrivateCommandTest.php b/tests/Unit/Console/Commands/Report/ReportSetExpiredToPrivateCommandTest.php index 9df61274..f19f4098 100644 --- a/tests/Unit/Console/Commands/Report/ReportSetExpiredToPrivateCommandTest.php +++ b/tests/Unit/Console/Commands/Report/ReportSetExpiredToPrivateCommandTest.php @@ -9,11 +9,9 @@ use App\Models\Report; use Illuminate\Console\Command; use Illuminate\Support\Facades\Artisan; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; use Tests\TestCaseWithDatabase; #[CoversClass(ReportSetExpiredToPrivateCommand::class)] -#[UsesClass(ReportSetExpiredToPrivateCommand::class)] class ReportSetExpiredToPrivateCommandTest extends TestCaseWithDatabase { public function test_command_sets_expired_reports_to_private(): void diff --git a/tests/Unit/Console/Commands/SelfHost/SelfHostCheckForUpdateCommandTest.php b/tests/Unit/Console/Commands/SelfHost/SelfHostCheckForUpdateCommandTest.php index 3c67f139..880334c8 100644 --- a/tests/Unit/Console/Commands/SelfHost/SelfHostCheckForUpdateCommandTest.php +++ b/tests/Unit/Console/Commands/SelfHost/SelfHostCheckForUpdateCommandTest.php @@ -12,12 +12,10 @@ use Illuminate\Http\Client\ConnectionException; use Illuminate\Support\Facades\Artisan; use Illuminate\Support\Facades\Http; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; use Tests\TestCase; #[CoversClass(SelfHostCheckForUpdateCommand::class)] #[CoversClass(ApiService::class)] -#[UsesClass(SelfHostCheckForUpdateCommand::class)] class SelfHostCheckForUpdateCommandTest extends TestCase { public function test_checks_for_update_and_saves_version_in_cache(): void diff --git a/tests/Unit/Console/Commands/SelfHost/SelfHostDatabaseConsistencyCommandTest.php b/tests/Unit/Console/Commands/SelfHost/SelfHostDatabaseConsistencyCommandTest.php index f9f728a8..26491860 100644 --- a/tests/Unit/Console/Commands/SelfHost/SelfHostDatabaseConsistencyCommandTest.php +++ b/tests/Unit/Console/Commands/SelfHost/SelfHostDatabaseConsistencyCommandTest.php @@ -15,11 +15,9 @@ use App\Models\User; use Illuminate\Console\Command; use Illuminate\Support\Facades\Artisan; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; use Tests\TestCaseWithDatabase; #[CoversClass(SelfHostDatabaseConsistency::class)] -#[UsesClass(SelfHostDatabaseConsistency::class)] class SelfHostDatabaseConsistencyCommandTest extends TestCaseWithDatabase { public function test_checks_that_task_need_to_be_part_of_project_in_time_entries(): void diff --git a/tests/Unit/Console/Commands/SelfHost/SelfHostGenerateKeysCommandTest.php b/tests/Unit/Console/Commands/SelfHost/SelfHostGenerateKeysCommandTest.php index ff6c5c28..138e520e 100644 --- a/tests/Unit/Console/Commands/SelfHost/SelfHostGenerateKeysCommandTest.php +++ b/tests/Unit/Console/Commands/SelfHost/SelfHostGenerateKeysCommandTest.php @@ -8,11 +8,9 @@ use App\Console\Commands\SelfHost\SelfHostGenerateKeysCommand; use Illuminate\Console\Command; use Illuminate\Support\Facades\Artisan; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; use Tests\TestCase; #[CoversClass(SelfHostGenerateKeysCommand::class)] -#[UsesClass(SelfHostGenerateKeysCommand::class)] class SelfHostGenerateKeysCommandTest extends TestCase { public function test_generates_app_key_and_passport_keys_per_default_in_env_format(): void diff --git a/tests/Unit/Console/Commands/SelfHost/SelfHostTelemetryCommandTest.php b/tests/Unit/Console/Commands/SelfHost/SelfHostTelemetryCommandTest.php index be436152..1507c628 100644 --- a/tests/Unit/Console/Commands/SelfHost/SelfHostTelemetryCommandTest.php +++ b/tests/Unit/Console/Commands/SelfHost/SelfHostTelemetryCommandTest.php @@ -11,12 +11,10 @@ use Illuminate\Http\Client\ConnectionException; use Illuminate\Support\Facades\Artisan; use Illuminate\Support\Facades\Http; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; use Tests\TestCase; #[CoversClass(SelfHostTelemetryCommand::class)] #[CoversClass(ApiService::class)] -#[UsesClass(SelfHostTelemetryCommand::class)] class SelfHostTelemetryCommandTest extends TestCase { public function test_telemetry_sends_data_to_telemetry_endpoint_of_solidtime_cloud(): void diff --git a/tests/Unit/Console/Commands/TimeEntry/TimeEntrySendStillRunningMailsCommandTest.php b/tests/Unit/Console/Commands/TimeEntry/TimeEntrySendStillRunningMailsCommandTest.php index 958d508f..bfffd01f 100644 --- a/tests/Unit/Console/Commands/TimeEntry/TimeEntrySendStillRunningMailsCommandTest.php +++ b/tests/Unit/Console/Commands/TimeEntry/TimeEntrySendStillRunningMailsCommandTest.php @@ -12,11 +12,9 @@ use Illuminate\Support\Carbon; use Illuminate\Support\Facades\Artisan; use Illuminate\Support\Facades\Mail; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; use Tests\TestCaseWithDatabase; #[CoversClass(TimeEntrySendStillRunningMailsCommand::class)] -#[UsesClass(TimeEntrySendStillRunningMailsCommand::class)] class TimeEntrySendStillRunningMailsCommandTest extends TestCaseWithDatabase { public function test_sends_mails_for_still_running_time_entries(): void diff --git a/tests/Unit/Endpoint/Api/V1/ApiTokenEndpointTest.php b/tests/Unit/Endpoint/Api/V1/ApiTokenEndpointTest.php index c84418a6..9f9b177a 100644 --- a/tests/Unit/Endpoint/Api/V1/ApiTokenEndpointTest.php +++ b/tests/Unit/Endpoint/Api/V1/ApiTokenEndpointTest.php @@ -7,7 +7,6 @@ namespace Tests\Unit\Endpoint\Api\V1; use App\Http\Controllers\Api\V1\ApiTokenController; use App\Models\Passport\Client; use App\Models\Passport\Token; -use Illuminate\Support\Facades\Config; use Laravel\Passport\ClientRepository; use Laravel\Passport\Passport; use PHPUnit\Framework\Attributes\UsesClass; @@ -20,8 +19,6 @@ class ApiTokenEndpointTest extends ApiEndpointTestAbstract // Arrange $data = $this->createUserWithPermission([]); $personalAccessClient = $this->createPersonalAccessClient(); - Config::set('passport.personal_access_client.id', $personalAccessClient->id); - Config::set('passport.personal_access_client.secret', $personalAccessClient->secret); $client = $this->createClient(); $token = Token::factory()->forUser($data->user)->forClient($personalAccessClient)->create(); $otherTokenType = Token::factory()->forUser($data->user)->forClient($client)->create(); @@ -34,6 +31,7 @@ class ApiTokenEndpointTest extends ApiEndpointTestAbstract // Assert $this->assertResponseCode($response, 200); + $response->assertJsonCount(1, 'data'); $response->assertExactJson([ 'data' => [ [ @@ -53,8 +51,6 @@ class ApiTokenEndpointTest extends ApiEndpointTestAbstract // Arrange $data = $this->createUserWithPermission([]); $personalAccessClient = $this->createPersonalAccessClient(); - Config::set('passport.personal_access_client.id', $personalAccessClient->id); - Config::set('passport.personal_access_client.secret', $personalAccessClient->secret); Passport::actingAs($data->user); // Act @@ -102,8 +98,6 @@ class ApiTokenEndpointTest extends ApiEndpointTestAbstract // Arrange $data = $this->createUserWithPermission([]); $client = $this->createPersonalAccessClient(); - Config::set('passport.personal_access_client.id', $client->id); - Config::set('passport.personal_access_client.secret', $client->secret); $token = Token::factory()->forUser($data->user)->forClient($client)->create(); Passport::actingAs($data->user); @@ -123,8 +117,6 @@ class ApiTokenEndpointTest extends ApiEndpointTestAbstract // Arrange $data = $this->createUserWithPermission([]); $personalAccessClient = $this->createPersonalAccessClient(); - Config::set('passport.personal_access_client.id', $personalAccessClient->id); - Config::set('passport.personal_access_client.secret', $personalAccessClient->secret); $client = $this->createClient(); $token = Token::factory()->forUser($data->user)->forClient($client)->create(); Passport::actingAs($data->user); @@ -153,34 +145,12 @@ class ApiTokenEndpointTest extends ApiEndpointTestAbstract $this->assertResponseCode($response, 404); } - public function test_revoke_fails_if_personal_access_client_is_not_configured(): void - { - // Arrange - $data = $this->createUserWithPermission([]); - $client = $this->createPersonalAccessClient(); - $token = Token::factory()->forUser($data->user)->forClient($client)->create(); - Passport::actingAs($data->user); - - // Act - $response = $this->postJson(route('api.v1.api-tokens.revoke', $token->id)); - - // Assert - $this->assertResponseCode($response, 400); - $response->assertExactJson([ - 'error' => true, - 'key' => 'personal_access_client_is_not_configured', - 'message' => 'Personal access client is not configured', - ]); - } - public function test_revoke_fails_if_the_token_does_not_belong_to_the_user(): void { // Arrange $data = $this->createUserWithPermission([]); $otherData = $this->createUserWithPermission([]); $client = $this->createPersonalAccessClient(); - Config::set('passport.personal_access_client.id', $client->id); - Config::set('passport.personal_access_client.secret', $client->secret); $token = Token::factory()->forUser($otherData->user)->forClient($client)->create(); Passport::actingAs($data->user); @@ -200,8 +170,6 @@ class ApiTokenEndpointTest extends ApiEndpointTestAbstract // Arrange $data = $this->createUserWithPermission([]); $client = $this->createPersonalAccessClient(); - Config::set('passport.personal_access_client.id', $client->id); - Config::set('passport.personal_access_client.secret', $client->secret); $token = Token::factory()->forUser($data->user)->forClient($client)->create(); Passport::actingAs($data->user); @@ -213,33 +181,11 @@ class ApiTokenEndpointTest extends ApiEndpointTestAbstract $this->assertDatabaseMissing(Token::class, ['id' => $token->id]); } - public function test_destroy_fails_if_personal_access_client_is_not_configured(): void - { - // Arrange - $data = $this->createUserWithPermission([]); - $client = $this->createPersonalAccessClient(); - $token = Token::factory()->forUser($data->user)->forClient($client)->create(); - Passport::actingAs($data->user); - - // Act - $response = $this->deleteJson(route('api.v1.api-tokens.destroy', $token->id)); - - // Assert - $this->assertResponseCode($response, 400); - $response->assertExactJson([ - 'error' => true, - 'key' => 'personal_access_client_is_not_configured', - 'message' => 'Personal access client is not configured', - ]); - } - public function test_destroy_fails_if_token_is_not_personal_access_token(): void { // Arrange $data = $this->createUserWithPermission([]); $personalAccessClient = $this->createPersonalAccessClient(); - Config::set('passport.personal_access_client.id', $personalAccessClient->id); - Config::set('passport.personal_access_client.secret', $personalAccessClient->secret); $client = $this->createClient(); $token = Token::factory()->forUser($data->user)->forClient($client)->create(); Passport::actingAs($data->user); @@ -273,8 +219,6 @@ class ApiTokenEndpointTest extends ApiEndpointTestAbstract $data = $this->createUserWithPermission([]); $otherData = $this->createUserWithPermission([]); $client = $this->createPersonalAccessClient(); - Config::set('passport.personal_access_client.id', $client->id); - Config::set('passport.personal_access_client.secret', $client->secret); $token = Token::factory()->forUser($otherData->user)->forClient($client)->create(); Passport::actingAs($data->user); @@ -292,9 +236,7 @@ class ApiTokenEndpointTest extends ApiEndpointTestAbstract { $clientRepository = new ClientRepository; /** @var Client $client */ - $client = $clientRepository->createPersonalAccessClient( - null, 'Test Personal Access Client', 'http://localhost' - ); + $client = $clientRepository->createPersonalAccessGrantClient('Test Personal Access Client'); return $client; } @@ -303,8 +245,9 @@ class ApiTokenEndpointTest extends ApiEndpointTestAbstract { $clientRepository = new ClientRepository; /** @var Client $client */ - $client = $clientRepository->create( - null, 'Desktop App', 'http://localhost', null + $client = $clientRepository->createAuthorizationCodeGrantClient( + name: 'Desktop App', + redirectUris: ['http://localhost'] ); return $client; diff --git a/tests/Unit/Endpoint/Api/V1/CurrencyEndpointTest.php b/tests/Unit/Endpoint/Api/V1/CurrencyEndpointTest.php index 23fa6e43..0a59bcf8 100644 --- a/tests/Unit/Endpoint/Api/V1/CurrencyEndpointTest.php +++ b/tests/Unit/Endpoint/Api/V1/CurrencyEndpointTest.php @@ -7,11 +7,9 @@ namespace Tests\Unit\Endpoint\Api\V1; use App\Http\Controllers\Api\V1\CurrencyController; use App\Service\CurrencyService; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; #[CoversClass(CurrencyController::class)] #[CoversClass(CurrencyService::class)] -#[UsesClass(CurrencyController::class)] class CurrencyEndpointTest extends ApiEndpointTestAbstract { public function test_index_return_list_of_available_currencies_incl_symbol(): void diff --git a/tests/Unit/Endpoint/Web/DashboardEndpointTest.php b/tests/Unit/Endpoint/Web/DashboardEndpointTest.php index d6aa5b49..fe01ff32 100644 --- a/tests/Unit/Endpoint/Web/DashboardEndpointTest.php +++ b/tests/Unit/Endpoint/Web/DashboardEndpointTest.php @@ -10,10 +10,8 @@ use App\Models\Organization; use App\Models\User; use Inertia\Testing\AssertableInertia as Assert; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; #[CoversClass(DashboardController::class)] -#[UsesClass(DashboardController::class)] class DashboardEndpointTest extends EndpointTestAbstract { public function test_showing_dashboard_succeeds_for_empty_user(): void diff --git a/tests/Unit/Endpoint/Web/HealthCheckEndpointTest.php b/tests/Unit/Endpoint/Web/HealthCheckEndpointTest.php index 3cef7c26..102dd0ba 100644 --- a/tests/Unit/Endpoint/Web/HealthCheckEndpointTest.php +++ b/tests/Unit/Endpoint/Web/HealthCheckEndpointTest.php @@ -7,10 +7,8 @@ namespace Tests\Unit\Endpoint\Web; use App\Http\Controllers\Web\HealthCheckController; use Illuminate\Support\Facades\DB; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; #[CoversClass(HealthCheckController::class)] -#[UsesClass(HealthCheckController::class)] class HealthCheckEndpointTest extends EndpointTestAbstract { public function test_up_endpoint_returns_ok(): void diff --git a/tests/Unit/Endpoint/Web/HomeEndpointTest.php b/tests/Unit/Endpoint/Web/HomeEndpointTest.php index c2656674..aaf3c363 100644 --- a/tests/Unit/Endpoint/Web/HomeEndpointTest.php +++ b/tests/Unit/Endpoint/Web/HomeEndpointTest.php @@ -9,12 +9,10 @@ use App\Http\Middleware\Authenticate; use App\Http\Middleware\RedirectIfAuthenticated; use App\Models\User; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; #[CoversClass(HomeController::class)] #[CoversClass(Authenticate::class)] #[CoversClass(RedirectIfAuthenticated::class)] -#[UsesClass(HomeController::class)] class HomeEndpointTest extends EndpointTestAbstract { public function test_index_redirects_to_dashboard_if_user_is_logged_in(): void diff --git a/tests/Unit/Mail/OrganizationInvitationMailTest.php b/tests/Unit/Mail/OrganizationInvitationMailTest.php index 27d5091e..fbd51813 100644 --- a/tests/Unit/Mail/OrganizationInvitationMailTest.php +++ b/tests/Unit/Mail/OrganizationInvitationMailTest.php @@ -8,11 +8,9 @@ use App\Mail\OrganizationInvitationMail; use App\Models\Organization; use App\Models\OrganizationInvitation; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; use Tests\TestCaseWithDatabase; #[CoversClass(OrganizationInvitationMail::class)] -#[UsesClass(OrganizationInvitationMail::class)] class OrganizationInvitationMailTest extends TestCaseWithDatabase { public function test_mail_renders_content_correctly(): void diff --git a/tests/Unit/Mail/TimeEntryStillRunningMailTest.php b/tests/Unit/Mail/TimeEntryStillRunningMailTest.php index 86f6c7e7..c9b08ef1 100644 --- a/tests/Unit/Mail/TimeEntryStillRunningMailTest.php +++ b/tests/Unit/Mail/TimeEntryStillRunningMailTest.php @@ -7,11 +7,9 @@ namespace Tests\Unit\Mail; use App\Mail\TimeEntryStillRunningMail; use App\Models\TimeEntry; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; use Tests\TestCaseWithDatabase; #[CoversClass(TimeEntryStillRunningMail::class)] -#[UsesClass(TimeEntryStillRunningMail::class)] class TimeEntryStillRunningMailTest extends TestCaseWithDatabase { public function test_mail_renders_content_correctly(): void diff --git a/tests/Unit/Middleware/CheckOrganizationBlockedMiddlewareTest.php b/tests/Unit/Middleware/CheckOrganizationBlockedMiddlewareTest.php index 71b1d348..9d58513a 100644 --- a/tests/Unit/Middleware/CheckOrganizationBlockedMiddlewareTest.php +++ b/tests/Unit/Middleware/CheckOrganizationBlockedMiddlewareTest.php @@ -14,10 +14,8 @@ use Illuminate\Support\Str; use Laravel\Passport\Passport; use Mockery\MockInterface; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; #[CoversClass(CheckOrganizationBlocked::class)] -#[UsesClass(CheckOrganizationBlocked::class)] class CheckOrganizationBlockedMiddlewareTest extends MiddlewareTestAbstract { private function createTestRoute(): void diff --git a/tests/Unit/Middleware/EnsureEmailIsVerifiedMiddlewareTest.php b/tests/Unit/Middleware/EnsureEmailIsVerifiedMiddlewareTest.php index 0ea3c904..4a3108b1 100644 --- a/tests/Unit/Middleware/EnsureEmailIsVerifiedMiddlewareTest.php +++ b/tests/Unit/Middleware/EnsureEmailIsVerifiedMiddlewareTest.php @@ -8,10 +8,8 @@ use App\Http\Middleware\EnsureEmailIsVerified; use App\Models\User; use Illuminate\Support\Facades\Route; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; #[CoversClass(EnsureEmailIsVerified::class)] -#[UsesClass(EnsureEmailIsVerified::class)] class EnsureEmailIsVerifiedMiddlewareTest extends MiddlewareTestAbstract { private function createTestRoute(): string diff --git a/tests/Unit/Middleware/ForceHttpsMiddlewareTest.php b/tests/Unit/Middleware/ForceHttpsMiddlewareTest.php index 422c86cc..482460ab 100644 --- a/tests/Unit/Middleware/ForceHttpsMiddlewareTest.php +++ b/tests/Unit/Middleware/ForceHttpsMiddlewareTest.php @@ -8,10 +8,8 @@ use App\Http\Middleware\ForceHttps; use Illuminate\Support\Facades\Config; use Illuminate\Support\Facades\Route; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; #[CoversClass(ForceHttps::class)] -#[UsesClass(ForceHttps::class)] class ForceHttpsMiddlewareTest extends MiddlewareTestAbstract { private function createTestRoute(): string diff --git a/tests/Unit/Middleware/HandleInertiaRequestsMiddlewareTest.php b/tests/Unit/Middleware/HandleInertiaRequestsMiddlewareTest.php index 1ae7cb71..f87de353 100644 --- a/tests/Unit/Middleware/HandleInertiaRequestsMiddlewareTest.php +++ b/tests/Unit/Middleware/HandleInertiaRequestsMiddlewareTest.php @@ -14,10 +14,8 @@ use Inertia\Testing\AssertableInertia as Assert; use Laravel\Passport\Passport; use Mockery\MockInterface; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; #[CoversClass(HandleInertiaRequests::class)] -#[UsesClass(HandleInertiaRequests::class)] class HandleInertiaRequestsMiddlewareTest extends MiddlewareTestAbstract { private function createTestRoute(): string diff --git a/tests/Unit/Model/ClientModelTest.php b/tests/Unit/Model/ClientModelTest.php index b4b85f7e..530f5c27 100644 --- a/tests/Unit/Model/ClientModelTest.php +++ b/tests/Unit/Model/ClientModelTest.php @@ -8,10 +8,8 @@ use App\Models\Client; use App\Models\Organization; use App\Models\Project; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; #[CoversClass(Client::class)] -#[UsesClass(Client::class)] class ClientModelTest extends ModelTestAbstract { public function test_it_belongs_to_a_organization(): void diff --git a/tests/Unit/Model/MemberModelTest.php b/tests/Unit/Model/MemberModelTest.php index abe8fcb8..5a452b43 100644 --- a/tests/Unit/Model/MemberModelTest.php +++ b/tests/Unit/Model/MemberModelTest.php @@ -10,10 +10,8 @@ use App\Models\Project; use App\Models\ProjectMember; use App\Models\User; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; #[CoversClass(Member::class)] -#[UsesClass(Member::class)] class MemberModelTest extends ModelTestAbstract { public function test_it_belongs_to_a_user(): void diff --git a/tests/Unit/Model/OrganizationModelTest.php b/tests/Unit/Model/OrganizationModelTest.php index d4594b14..e14e534d 100644 --- a/tests/Unit/Model/OrganizationModelTest.php +++ b/tests/Unit/Model/OrganizationModelTest.php @@ -7,10 +7,8 @@ namespace Tests\Unit\Model; use App\Models\Member; use App\Models\Organization; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; #[CoversClass(Organization::class)] -#[UsesClass(Organization::class)] class OrganizationModelTest extends ModelTestAbstract { public function test_it_has_many_members(): void diff --git a/tests/Unit/Model/ProjectMemberModelTest.php b/tests/Unit/Model/ProjectMemberModelTest.php index 88d4cd45..e49d8a8e 100644 --- a/tests/Unit/Model/ProjectMemberModelTest.php +++ b/tests/Unit/Model/ProjectMemberModelTest.php @@ -9,10 +9,8 @@ use App\Models\Organization; use App\Models\Project; use App\Models\ProjectMember; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; #[CoversClass(ProjectMember::class)] -#[UsesClass(ProjectMember::class)] class ProjectMemberModelTest extends ModelTestAbstract { public function test_it_belongs_to_a_project(): void diff --git a/tests/Unit/Model/ProjectModelTest.php b/tests/Unit/Model/ProjectModelTest.php index 1c417829..679a4eca 100644 --- a/tests/Unit/Model/ProjectModelTest.php +++ b/tests/Unit/Model/ProjectModelTest.php @@ -13,10 +13,8 @@ use App\Models\Task; use App\Models\TimeEntry; use Illuminate\Support\Facades\DB; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; #[CoversClass(Project::class)] -#[UsesClass(Project::class)] class ProjectModelTest extends ModelTestAbstract { public function test_it_belongs_to_a_organization(): void diff --git a/tests/Unit/Model/ReportModelTest.php b/tests/Unit/Model/ReportModelTest.php index 603abc5f..7afc1012 100644 --- a/tests/Unit/Model/ReportModelTest.php +++ b/tests/Unit/Model/ReportModelTest.php @@ -8,10 +8,8 @@ use App\Models\Organization; use App\Models\Report; use App\Service\ReportService; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; #[CoversClass(Report::class)] -#[UsesClass(Report::class)] class ReportModelTest extends ModelTestAbstract { public function test_it_belongs_to_a_organization(): void diff --git a/tests/Unit/Model/TagModelTest.php b/tests/Unit/Model/TagModelTest.php index 336870e8..41e0219f 100644 --- a/tests/Unit/Model/TagModelTest.php +++ b/tests/Unit/Model/TagModelTest.php @@ -8,10 +8,8 @@ use App\Models\Organization; use App\Models\Tag; use App\Models\TimeEntry; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; #[CoversClass(Tag::class)] -#[UsesClass(Tag::class)] class TagModelTest extends ModelTestAbstract { public function test_it_belongs_to_a_organization(): void diff --git a/tests/Unit/Model/TaskModelTest.php b/tests/Unit/Model/TaskModelTest.php index 3e7a9a6f..181e6c7f 100644 --- a/tests/Unit/Model/TaskModelTest.php +++ b/tests/Unit/Model/TaskModelTest.php @@ -11,10 +11,8 @@ use App\Models\ProjectMember; use App\Models\Task; use App\Models\TimeEntry; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; #[CoversClass(Task::class)] -#[UsesClass(Task::class)] class TaskModelTest extends ModelTestAbstract { public function test_it_belongs_to_a_organization(): void diff --git a/tests/Unit/Model/TimeEntryModelTest.php b/tests/Unit/Model/TimeEntryModelTest.php index eca36a2c..7a7f6ff8 100644 --- a/tests/Unit/Model/TimeEntryModelTest.php +++ b/tests/Unit/Model/TimeEntryModelTest.php @@ -12,10 +12,8 @@ use App\Models\TimeEntry; use App\Models\User; use Illuminate\Support\Carbon; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; #[CoversClass(TimeEntry::class)] -#[UsesClass(TimeEntry::class)] class TimeEntryModelTest extends ModelTestAbstract { public function test_it_belongs_to_a_user(): void diff --git a/tests/Unit/Model/UserModelTest.php b/tests/Unit/Model/UserModelTest.php index fa8f88d4..d58afbf5 100644 --- a/tests/Unit/Model/UserModelTest.php +++ b/tests/Unit/Model/UserModelTest.php @@ -7,20 +7,18 @@ namespace Tests\Unit\Model; use App\Enums\Role; use App\Models\Member; use App\Models\Organization; +use App\Models\Passport\AuthCode; +use App\Models\Passport\Client; +use App\Models\Passport\Token; use App\Models\ProjectMember; use App\Models\TimeEntry; use App\Models\User; use App\Providers\Filament\AdminPanelProvider; use Filament\Panel; use Illuminate\Support\Facades\Config; -use Laravel\Passport\AuthCode; -use Laravel\Passport\Client; -use Laravel\Passport\Token; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; #[CoversClass(User::class)] -#[UsesClass(User::class)] class UserModelTest extends ModelTestAbstract { public function test_normal_user_can_not_access_admin_panel(): void @@ -148,9 +146,8 @@ class UserModelTest extends ModelTestAbstract $user = User::factory()->create(); $client = new Client; $client->name = 'desktop'; - $client->redirect = 'solidtime://oauth/callback'; - $client->personal_access_client = false; - $client->password_client = false; + $client->redirect_uris = ['solidtime://oauth/callback']; + $client->grant_types = []; $client->revoked = false; $client->save(); $token = new Token; @@ -179,9 +176,8 @@ class UserModelTest extends ModelTestAbstract $user = User::factory()->create(); $client = new Client; $client->name = 'desktop'; - $client->redirect = 'solidtime://oauth/callback'; - $client->personal_access_client = false; - $client->password_client = false; + $client->redirect_uris = 'solidtime://oauth/callback'; + $client->grant_types = []; $client->revoked = false; $client->save(); $authCode = new AuthCode; diff --git a/tests/Unit/Rules/ColorRuleTest.php b/tests/Unit/Rules/ColorRuleTest.php index ae5582f3..fea13246 100644 --- a/tests/Unit/Rules/ColorRuleTest.php +++ b/tests/Unit/Rules/ColorRuleTest.php @@ -7,11 +7,9 @@ namespace Tests\Unit\Rules; use App\Rules\ColorRule; use Illuminate\Support\Facades\Validator; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; use Tests\TestCase; #[CoversClass(ColorRule::class)] -#[UsesClass(ColorRule::class)] class ColorRuleTest extends TestCase { public function test_validation_passes_if_value_is_valid_color(): void diff --git a/tests/Unit/Rules/CurrencyRuleTest.php b/tests/Unit/Rules/CurrencyRuleTest.php index 0847b60f..32f82d0d 100644 --- a/tests/Unit/Rules/CurrencyRuleTest.php +++ b/tests/Unit/Rules/CurrencyRuleTest.php @@ -7,11 +7,9 @@ namespace Tests\Unit\Rules; use App\Rules\CurrencyRule; use Illuminate\Support\Facades\Validator; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; use Tests\TestCase; #[CoversClass(CurrencyRule::class)] -#[UsesClass(CurrencyRule::class)] class CurrencyRuleTest extends TestCase { public function test_validation_passes_if_value_is_valid_currency_code(): void diff --git a/tests/Unit/Service/BillableRateServiceTest.php b/tests/Unit/Service/BillableRateServiceTest.php index cd6a0b7e..1cc87e96 100644 --- a/tests/Unit/Service/BillableRateServiceTest.php +++ b/tests/Unit/Service/BillableRateServiceTest.php @@ -14,11 +14,9 @@ use App\Service\BillableRateService; use DB; use Illuminate\Foundation\Testing\RefreshDatabase; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; use Tests\TestCaseWithDatabase; #[CoversClass(BillableRateService::class)] -#[UsesClass(BillableRateService::class)] class BillableRateServiceTest extends TestCaseWithDatabase { use RefreshDatabase; diff --git a/tests/Unit/Service/CurrencyServiceTest.php b/tests/Unit/Service/CurrencyServiceTest.php index 44a6889e..d7bf0586 100644 --- a/tests/Unit/Service/CurrencyServiceTest.php +++ b/tests/Unit/Service/CurrencyServiceTest.php @@ -8,11 +8,9 @@ use App\Service\CurrencyService; use Brick\Money\Currency; use Brick\Money\Money; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; use Tests\TestCaseWithDatabase; #[CoversClass(CurrencyService::class)] -#[UsesClass(CurrencyService::class)] class CurrencyServiceTest extends TestCaseWithDatabase { private CurrencyService $currencyService; diff --git a/tests/Unit/Service/DashboardServiceTest.php b/tests/Unit/Service/DashboardServiceTest.php index 56f94325..31677262 100644 --- a/tests/Unit/Service/DashboardServiceTest.php +++ b/tests/Unit/Service/DashboardServiceTest.php @@ -16,11 +16,9 @@ use App\Service\DashboardService; use Illuminate\Foundation\Testing\RefreshDatabase; use Illuminate\Support\Carbon; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; use Tests\TestCase; #[CoversClass(DashboardService::class)] -#[UsesClass(DashboardService::class)] class DashboardServiceTest extends TestCase { use RefreshDatabase; diff --git a/tests/Unit/Service/DeletionServiceTest.php b/tests/Unit/Service/DeletionServiceTest.php index 131569e1..7ed908a2 100644 --- a/tests/Unit/Service/DeletionServiceTest.php +++ b/tests/Unit/Service/DeletionServiceTest.php @@ -24,12 +24,10 @@ use Illuminate\Support\Facades\Event; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Storage; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; use Tests\TestCaseWithDatabase; use TiMacDonald\Log\LogEntry; #[CoversClass(DeletionService::class)] -#[UsesClass(DeletionService::class)] class DeletionServiceTest extends TestCaseWithDatabase { private DeletionService $deletionService; diff --git a/tests/Unit/Service/Export/ExportServiceTest.php b/tests/Unit/Service/Export/ExportServiceTest.php index 5137ab2e..1f783ef4 100644 --- a/tests/Unit/Service/Export/ExportServiceTest.php +++ b/tests/Unit/Service/Export/ExportServiceTest.php @@ -17,11 +17,9 @@ use App\Models\User; use App\Service\Export\ExportService; use Illuminate\Support\Facades\Storage; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; use Tests\TestCaseWithDatabase; #[CoversClass(ExportService::class)] -#[UsesClass(ExportService::class)] class ExportServiceTest extends TestCaseWithDatabase { private function getFullOrganization(): Organization diff --git a/tests/Unit/Service/Import/ImportDatabaseHelperTest.php b/tests/Unit/Service/Import/ImportDatabaseHelperTest.php index 854d5a9f..046875ec 100644 --- a/tests/Unit/Service/Import/ImportDatabaseHelperTest.php +++ b/tests/Unit/Service/Import/ImportDatabaseHelperTest.php @@ -11,11 +11,9 @@ use App\Service\Import\ImportDatabaseHelper; use Illuminate\Foundation\Testing\RefreshDatabase; use Illuminate\Support\Str; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; use Tests\TestCase; #[CoversClass(ImportDatabaseHelper::class)] -#[UsesClass(ImportDatabaseHelper::class)] class ImportDatabaseHelperTest extends TestCase { use RefreshDatabase; diff --git a/tests/Unit/Service/Import/ImportServiceTest.php b/tests/Unit/Service/Import/ImportServiceTest.php index 95e24e63..6a2d6225 100644 --- a/tests/Unit/Service/Import/ImportServiceTest.php +++ b/tests/Unit/Service/Import/ImportServiceTest.php @@ -12,12 +12,10 @@ use Illuminate\Foundation\Testing\RefreshDatabase; use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Storage; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; use Tests\TestCase; #[CoversClass(ImportService::class)] #[CoversClass(ImporterProvider::class)] -#[UsesClass(ImportService::class)] class ImportServiceTest extends TestCase { use RefreshDatabase; diff --git a/tests/Unit/Service/Import/Importers/ClockifyProjectsImporterTest.php b/tests/Unit/Service/Import/Importers/ClockifyProjectsImporterTest.php index 07dbed33..4e848316 100644 --- a/tests/Unit/Service/Import/Importers/ClockifyProjectsImporterTest.php +++ b/tests/Unit/Service/Import/Importers/ClockifyProjectsImporterTest.php @@ -10,12 +10,10 @@ use App\Service\Import\Importers\DefaultImporter; use App\Service\Import\Importers\ImportException; use Illuminate\Support\Facades\Storage; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; #[CoversClass(ClockifyProjectsImporter::class)] #[CoversClass(ImportException::class)] #[CoversClass(DefaultImporter::class)] -#[UsesClass(ClockifyProjectsImporter::class)] class ClockifyProjectsImporterTest extends ImporterTestAbstract { public function test_import_of_test_file_succeeds(): void diff --git a/tests/Unit/Service/Import/Importers/ClockifyTimeEntriesImporterTest.php b/tests/Unit/Service/Import/Importers/ClockifyTimeEntriesImporterTest.php index eb6ca5e0..4d0bcd4e 100644 --- a/tests/Unit/Service/Import/Importers/ClockifyTimeEntriesImporterTest.php +++ b/tests/Unit/Service/Import/Importers/ClockifyTimeEntriesImporterTest.php @@ -11,12 +11,10 @@ use App\Service\Import\Importers\DefaultImporter; use App\Service\Import\Importers\ImportException; use Illuminate\Support\Facades\Storage; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; #[CoversClass(ClockifyTimeEntriesImporter::class)] #[CoversClass(ImportException::class)] #[CoversClass(DefaultImporter::class)] -#[UsesClass(ClockifyTimeEntriesImporter::class)] class ClockifyTimeEntriesImporterTest extends ImporterTestAbstract { public function test_import_of_test_file_succeeds(): void diff --git a/tests/Unit/Service/Import/Importers/GenericProjectsImporterTest.php b/tests/Unit/Service/Import/Importers/GenericProjectsImporterTest.php index 6b26b0af..5db1ec52 100644 --- a/tests/Unit/Service/Import/Importers/GenericProjectsImporterTest.php +++ b/tests/Unit/Service/Import/Importers/GenericProjectsImporterTest.php @@ -14,12 +14,10 @@ use App\Service\Import\Importers\GenericProjectsImporter; use App\Service\Import\Importers\ImportException; use Illuminate\Support\Facades\Storage; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; #[CoversClass(GenericProjectsImporter::class)] #[CoversClass(ImportException::class)] #[CoversClass(DefaultImporter::class)] -#[UsesClass(GenericProjectsImporter::class)] class GenericProjectsImporterTest extends ImporterTestAbstract { public function test_import_of_test_file_succeeds(): void diff --git a/tests/Unit/Service/Import/Importers/GenericTimeEntriesImporterTest.php b/tests/Unit/Service/Import/Importers/GenericTimeEntriesImporterTest.php index 23e1341a..65c73eb4 100644 --- a/tests/Unit/Service/Import/Importers/GenericTimeEntriesImporterTest.php +++ b/tests/Unit/Service/Import/Importers/GenericTimeEntriesImporterTest.php @@ -10,12 +10,10 @@ use App\Service\Import\Importers\GenericTimeEntriesImporter; use App\Service\Import\Importers\ImportException; use Illuminate\Support\Facades\Storage; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; #[CoversClass(GenericTimeEntriesImporter::class)] #[CoversClass(ImportException::class)] #[CoversClass(DefaultImporter::class)] -#[UsesClass(GenericTimeEntriesImporter::class)] class GenericTimeEntriesImporterTest extends ImporterTestAbstract { public function test_import_of_test_file_succeeds(): void diff --git a/tests/Unit/Service/Import/Importers/HarvestClientsImporterTest.php b/tests/Unit/Service/Import/Importers/HarvestClientsImporterTest.php index f8bdc192..5ceef6e0 100644 --- a/tests/Unit/Service/Import/Importers/HarvestClientsImporterTest.php +++ b/tests/Unit/Service/Import/Importers/HarvestClientsImporterTest.php @@ -11,12 +11,10 @@ use App\Service\Import\Importers\HarvestClientsImporter; use App\Service\Import\Importers\ImportException; use Illuminate\Support\Facades\Storage; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; #[CoversClass(HarvestClientsImporter::class)] #[CoversClass(ImportException::class)] #[CoversClass(DefaultImporter::class)] -#[UsesClass(HarvestClientsImporter::class)] class HarvestClientsImporterTest extends ImporterTestAbstract { public function test_import_of_test_file_succeeds(): void diff --git a/tests/Unit/Service/Import/Importers/HarvestProjectsImporterTest.php b/tests/Unit/Service/Import/Importers/HarvestProjectsImporterTest.php index ae513768..ec757212 100644 --- a/tests/Unit/Service/Import/Importers/HarvestProjectsImporterTest.php +++ b/tests/Unit/Service/Import/Importers/HarvestProjectsImporterTest.php @@ -12,12 +12,10 @@ use App\Service\Import\Importers\HarvestProjectsImporter; use App\Service\Import\Importers\ImportException; use Illuminate\Support\Facades\Storage; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; #[CoversClass(HarvestProjectsImporter::class)] #[CoversClass(ImportException::class)] #[CoversClass(DefaultImporter::class)] -#[UsesClass(HarvestProjectsImporter::class)] class HarvestProjectsImporterTest extends ImporterTestAbstract { public function test_import_of_test_file_succeeds(): void diff --git a/tests/Unit/Service/Import/Importers/HarvestTimeEntriesImporterTest.php b/tests/Unit/Service/Import/Importers/HarvestTimeEntriesImporterTest.php index 0b1c58e6..c94f93c5 100644 --- a/tests/Unit/Service/Import/Importers/HarvestTimeEntriesImporterTest.php +++ b/tests/Unit/Service/Import/Importers/HarvestTimeEntriesImporterTest.php @@ -18,12 +18,10 @@ use App\Service\Import\Importers\HarvestTimeEntriesImporter; use App\Service\Import\Importers\ImportException; use Illuminate\Support\Facades\Storage; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; #[CoversClass(HarvestTimeEntriesImporter::class)] #[CoversClass(ImportException::class)] #[CoversClass(DefaultImporter::class)] -#[UsesClass(HarvestTimeEntriesImporter::class)] class HarvestTimeEntriesImporterTest extends ImporterTestAbstract { public function test_import_of_test_file_succeeds(): void diff --git a/tests/Unit/Service/Import/Importers/ImporterProviderTest.php b/tests/Unit/Service/Import/Importers/ImporterProviderTest.php index 86d74d46..15288fff 100644 --- a/tests/Unit/Service/Import/Importers/ImporterProviderTest.php +++ b/tests/Unit/Service/Import/Importers/ImporterProviderTest.php @@ -7,11 +7,9 @@ namespace Tests\Unit\Service\Import\Importers; use App\Service\Import\Importers\ClockifyProjectsImporter; use App\Service\Import\Importers\ImporterProvider; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; use Tests\TestCase; #[CoversClass(ImporterProvider::class)] -#[UsesClass(ImporterProvider::class)] class ImporterProviderTest extends TestCase { public function test_register_importer_can_register_a_new_importer_for_example_in_an_extension(): void diff --git a/tests/Unit/Service/Import/Importers/SolidtimeImporterTest.php b/tests/Unit/Service/Import/Importers/SolidtimeImporterTest.php index 78c50363..17cffd25 100644 --- a/tests/Unit/Service/Import/Importers/SolidtimeImporterTest.php +++ b/tests/Unit/Service/Import/Importers/SolidtimeImporterTest.php @@ -14,12 +14,10 @@ use Exception; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Queue; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; #[CoversClass(SolidtimeImporter::class)] #[CoversClass(ImportException::class)] #[CoversClass(DefaultImporter::class)] -#[UsesClass(SolidtimeImporter::class)] class SolidtimeImporterTest extends ImporterTestAbstract { public function test_import_throws_exception_if_data_is_not_zip(): void diff --git a/tests/Unit/Service/Import/Importers/TogglDataImporterTest.php b/tests/Unit/Service/Import/Importers/TogglDataImporterTest.php index fc5505e1..c1785344 100644 --- a/tests/Unit/Service/Import/Importers/TogglDataImporterTest.php +++ b/tests/Unit/Service/Import/Importers/TogglDataImporterTest.php @@ -11,12 +11,10 @@ use App\Service\Import\Importers\ImportException; use App\Service\Import\Importers\TogglDataImporter; use Exception; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; #[CoversClass(TogglDataImporter::class)] #[CoversClass(ImportException::class)] #[CoversClass(DefaultImporter::class)] -#[UsesClass(TogglDataImporter::class)] class TogglDataImporterTest extends ImporterTestAbstract { public function test_import_throws_exception_if_data_is_not_zip(): void diff --git a/tests/Unit/Service/Import/Importers/TogglTimeEntriesImporterTest.php b/tests/Unit/Service/Import/Importers/TogglTimeEntriesImporterTest.php index 34eb7020..719bea69 100644 --- a/tests/Unit/Service/Import/Importers/TogglTimeEntriesImporterTest.php +++ b/tests/Unit/Service/Import/Importers/TogglTimeEntriesImporterTest.php @@ -15,12 +15,10 @@ use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Queue; use Illuminate\Support\Facades\Storage; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; #[CoversClass(TogglTimeEntriesImporter::class)] #[CoversClass(ImportException::class)] #[CoversClass(DefaultImporter::class)] -#[UsesClass(TogglTimeEntriesImporter::class)] class TogglTimeEntriesImporterTest extends ImporterTestAbstract { public function test_import_of_test_file_succeeds(): void diff --git a/tests/Unit/Service/LocalizationServiceTest.php b/tests/Unit/Service/LocalizationServiceTest.php index a7a83205..aa7001f3 100644 --- a/tests/Unit/Service/LocalizationServiceTest.php +++ b/tests/Unit/Service/LocalizationServiceTest.php @@ -15,11 +15,9 @@ use Brick\Money\Money; use Carbon\CarbonInterval; use Illuminate\Support\Carbon; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; use Tests\TestCaseWithDatabase; #[CoversClass(LocalizationService::class)] -#[UsesClass(LocalizationService::class)] class LocalizationServiceTest extends TestCaseWithDatabase { private LocalizationService $localizationService; diff --git a/tests/Unit/Service/MemberServiceTest.php b/tests/Unit/Service/MemberServiceTest.php index 2185396d..26498485 100644 --- a/tests/Unit/Service/MemberServiceTest.php +++ b/tests/Unit/Service/MemberServiceTest.php @@ -15,12 +15,10 @@ use App\Service\MemberService; use App\Service\UserService; use InvalidArgumentException; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; use Tests\TestCaseWithDatabase; #[CoversClass(MemberService::class)] #[CoversClass(UserService::class)] -#[UsesClass(MemberService::class)] class MemberServiceTest extends TestCaseWithDatabase { private MemberService $memberService; diff --git a/tests/Unit/Service/PermissionStoreTest.php b/tests/Unit/Service/PermissionStoreTest.php index f5d3edae..499795b7 100644 --- a/tests/Unit/Service/PermissionStoreTest.php +++ b/tests/Unit/Service/PermissionStoreTest.php @@ -11,11 +11,9 @@ use App\Service\PermissionStore; use Illuminate\Foundation\Testing\RefreshDatabase; use Laravel\Jetstream\Jetstream; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; use Tests\TestCase; #[CoversClass(PermissionStore::class)] -#[UsesClass(PermissionStore::class)] class PermissionStoreTest extends TestCase { use RefreshDatabase; diff --git a/tests/Unit/Service/TimeEntryAggregationServiceTest.php b/tests/Unit/Service/TimeEntryAggregationServiceTest.php index 02542490..2b6009a2 100644 --- a/tests/Unit/Service/TimeEntryAggregationServiceTest.php +++ b/tests/Unit/Service/TimeEntryAggregationServiceTest.php @@ -12,11 +12,9 @@ use App\Models\TimeEntry; use App\Service\TimeEntryAggregationService; use Illuminate\Support\Carbon; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; use Tests\TestCaseWithDatabase; #[CoversClass(TimeEntryAggregationService::class)] -#[UsesClass(TimeEntryAggregationService::class)] class TimeEntryAggregationServiceTest extends TestCaseWithDatabase { private TimeEntryAggregationService $service; diff --git a/tests/Unit/Service/TimeEntryFilterTest.php b/tests/Unit/Service/TimeEntryFilterTest.php index 8c8df4bf..1c390f7d 100644 --- a/tests/Unit/Service/TimeEntryFilterTest.php +++ b/tests/Unit/Service/TimeEntryFilterTest.php @@ -8,11 +8,9 @@ use App\Models\Tag; use App\Models\TimeEntry; use App\Service\TimeEntryFilter; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; use Tests\TestCaseWithDatabase; #[CoversClass(TimeEntryFilter::class)] -#[UsesClass(TimeEntryFilter::class)] class TimeEntryFilterTest extends TestCaseWithDatabase { public function test_add_tag_ids_filter_is_or(): void diff --git a/tests/Unit/Service/TimezoneServiceTest.php b/tests/Unit/Service/TimezoneServiceTest.php index d6bc6253..3459f9f3 100644 --- a/tests/Unit/Service/TimezoneServiceTest.php +++ b/tests/Unit/Service/TimezoneServiceTest.php @@ -9,12 +9,10 @@ use App\Service\TimezoneService; use Illuminate\Foundation\Testing\RefreshDatabase; use Illuminate\Support\Facades\Log; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; use Tests\TestCase; use TiMacDonald\Log\LogEntry; #[CoversClass(TimezoneService::class)] -#[UsesClass(TimezoneService::class)] class TimezoneServiceTest extends TestCase { use RefreshDatabase; diff --git a/tests/Unit/Service/UserServiceTest.php b/tests/Unit/Service/UserServiceTest.php index a3b24a94..457c2248 100644 --- a/tests/Unit/Service/UserServiceTest.php +++ b/tests/Unit/Service/UserServiceTest.php @@ -14,11 +14,9 @@ use App\Models\User; use App\Service\UserService; use Illuminate\Foundation\Testing\RefreshDatabase; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\UsesClass; use Tests\TestCase; #[CoversClass(UserService::class)] -#[UsesClass(UserService::class)] class UserServiceTest extends TestCase { use RefreshDatabase;