diff --git a/app/Actions/Fortify/PasswordValidationRules.php b/app/Actions/Fortify/PasswordValidationRules.php index 76b19d33..36788656 100644 --- a/app/Actions/Fortify/PasswordValidationRules.php +++ b/app/Actions/Fortify/PasswordValidationRules.php @@ -2,6 +2,7 @@ namespace App\Actions\Fortify; +use Illuminate\Contracts\Validation\Rule; use Illuminate\Validation\Rules\Password; trait PasswordValidationRules @@ -9,7 +10,7 @@ trait PasswordValidationRules /** * Get the validation rules used to validate passwords. * - * @return array|string> + * @return array|string> */ protected function passwordRules(): array { diff --git a/app/Console/Commands/SyncStripePricesCommand.php b/app/Console/Commands/SyncStripePricesCommand.php index 642c3766..6a3c7cad 100644 --- a/app/Console/Commands/SyncStripePricesCommand.php +++ b/app/Console/Commands/SyncStripePricesCommand.php @@ -102,7 +102,7 @@ class SyncStripePricesCommand extends Command } /** - * @return \Stripe\Price|null + * @return Price|null */ private function findPriceByLookupKey(string $lookupKey): mixed { @@ -138,7 +138,7 @@ class SyncStripePricesCommand extends Command } /** - * @param \Stripe\Price $price + * @param Price $price */ private function priceMatches(mixed $price, int $amountInCents, string $currency, ?string $billingPeriod): bool { diff --git a/app/Http/Controllers/AccountController.php b/app/Http/Controllers/AccountController.php index cc347959..8bc23447 100644 --- a/app/Http/Controllers/AccountController.php +++ b/app/Http/Controllers/AccountController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers; +use App\Enums\AccountType; use App\Models\Account; use App\Models\AccountBalance; use App\Services\AccountMetricsService; @@ -41,7 +42,7 @@ class AccountController extends Controller $data = $account->only(['id', 'name', 'name_iv', 'encrypted', 'bank_id', 'type', 'currency_code', 'banking_connection_id', 'bank']); - if ($account->type === \App\Enums\AccountType::RealEstate) { + if ($account->type === AccountType::RealEstate) { $account->load('realEstateDetail.linkedLoanAccount.bank:id,name,logo'); $realEstateDetail = $account->realEstateDetail; @@ -78,7 +79,7 @@ class AccountController extends Controller // Provide available loan accounts for linking $data['available_loan_accounts'] = $request->user() ->accounts() - ->where('type', \App\Enums\AccountType::Loan->value) + ->where('type', AccountType::Loan->value) ->with('bank:id,name,logo') ->get(['id', 'name', 'name_iv', 'encrypted', 'bank_id', 'type', 'currency_code']); } diff --git a/app/Http/Controllers/Api/DashboardAnalyticsController.php b/app/Http/Controllers/Api/DashboardAnalyticsController.php index 3930de3e..7ccc2584 100644 --- a/app/Http/Controllers/Api/DashboardAnalyticsController.php +++ b/app/Http/Controllers/Api/DashboardAnalyticsController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers\Api; +use App\Enums\AccountType; use App\Enums\CategoryType; use App\Http\Controllers\Controller; use App\Models\Account; @@ -356,7 +357,7 @@ class DashboardAnalyticsController extends Controller */ private function getLinkedLoanAccountId(Account $account): ?string { - if ($account->type !== \App\Enums\AccountType::RealEstate) { + if ($account->type !== AccountType::RealEstate) { return null; } diff --git a/app/Http/Controllers/BudgetController.php b/app/Http/Controllers/BudgetController.php index d19d45b5..c64e2564 100644 --- a/app/Http/Controllers/BudgetController.php +++ b/app/Http/Controllers/BudgetController.php @@ -5,9 +5,13 @@ namespace App\Http\Controllers; use App\Http\Requests\StoreBudgetRequest; use App\Http\Requests\UpdateBudgetRequest; use App\Jobs\AssignHistoricalTransactionsToBudget; +use App\Models\Account; +use App\Models\Bank; use App\Models\Budget; +use App\Models\Category; use App\Services\BudgetPeriodService; use Illuminate\Foundation\Auth\Access\AuthorizesRequests; +use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Inertia\Inertia; @@ -78,18 +82,18 @@ class BudgetController extends Controller $budget->load(['category', 'label']); - $categories = \App\Models\Category::query() + $categories = Category::query() ->where('user_id', $user->id) ->orderBy('name') ->get(['id', 'name', 'icon', 'color']); - $accounts = \App\Models\Account::query() + $accounts = Account::query() ->where('user_id', $user->id) ->with('bank:id,name,logo') ->orderBy('name') ->get(['id', 'name', 'name_iv', 'encrypted', 'bank_id', 'type', 'currency_code']); - $banks = \App\Models\Bank::query() + $banks = Bank::query() ->where(function ($q) use ($user) { $q->whereNull('user_id') ->orWhere('user_id', $user->id); @@ -109,7 +113,7 @@ class BudgetController extends Controller ]); } - public function store(StoreBudgetRequest $request): \Illuminate\Http\RedirectResponse + public function store(StoreBudgetRequest $request): RedirectResponse { $result = DB::transaction(function () use ($request) { $budget = $request->user()->budgets()->create([ @@ -133,7 +137,7 @@ class BudgetController extends Controller return redirect()->route('budgets.show', $result['budget']); } - public function update(UpdateBudgetRequest $request, Budget $budget): \Illuminate\Http\RedirectResponse + public function update(UpdateBudgetRequest $request, Budget $budget): RedirectResponse { $this->authorize('update', $budget); @@ -159,7 +163,7 @@ class BudgetController extends Controller return redirect()->route('budgets.show', $budget); } - public function destroy(Request $request, Budget $budget): \Illuminate\Http\RedirectResponse + public function destroy(Request $request, Budget $budget): RedirectResponse { $this->authorize('delete', $budget); diff --git a/app/Http/Controllers/Settings/AccountController.php b/app/Http/Controllers/Settings/AccountController.php index b0d8b814..1b8762c6 100644 --- a/app/Http/Controllers/Settings/AccountController.php +++ b/app/Http/Controllers/Settings/AccountController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers\Settings; +use App\Enums\AccountType; use App\Http\Controllers\Controller; use App\Http\Requests\Settings\StoreAccountRequest; use App\Http\Requests\Settings\UpdateAccountRequest; @@ -59,7 +60,7 @@ class AccountController extends Controller } // Create real estate detail if account type is real_estate - if ($account->type === \App\Enums\AccountType::RealEstate) { + if ($account->type === AccountType::RealEstate) { $realEstateData = collect($validated)->only([ 'property_type', 'address', 'purchase_price', 'purchase_date', 'area_value', 'area_unit', 'linked_loan_account_id', 'notes', diff --git a/app/Http/Middleware/ActivateDevelopmentFeatures.php b/app/Http/Middleware/ActivateDevelopmentFeatures.php index a386a03d..97690cf7 100644 --- a/app/Http/Middleware/ActivateDevelopmentFeatures.php +++ b/app/Http/Middleware/ActivateDevelopmentFeatures.php @@ -12,7 +12,7 @@ class ActivateDevelopmentFeatures /** * Handle an incoming request. * - * @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next + * @param Closure(Request): (Response) $next */ public function handle(Request $request, Closure $next): Response { diff --git a/app/Http/Middleware/EnsureOnboardingComplete.php b/app/Http/Middleware/EnsureOnboardingComplete.php index 43c71de2..b5d4e0e6 100644 --- a/app/Http/Middleware/EnsureOnboardingComplete.php +++ b/app/Http/Middleware/EnsureOnboardingComplete.php @@ -14,7 +14,7 @@ class EnsureOnboardingComplete * Redirects non-onboarded users to the onboarding flow. * Redirects onboarded users away from the onboarding page. * - * @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next + * @param Closure(Request): (Response) $next */ public function handle(Request $request, Closure $next): Response { diff --git a/app/Http/Middleware/EnsureOpenBankingFeature.php b/app/Http/Middleware/EnsureOpenBankingFeature.php index 1374b920..677fc5cf 100644 --- a/app/Http/Middleware/EnsureOpenBankingFeature.php +++ b/app/Http/Middleware/EnsureOpenBankingFeature.php @@ -14,7 +14,7 @@ class EnsureOpenBankingFeature * * Returns 404 if user doesn't have open-banking feature enabled. * - * @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next + * @param Closure(Request): (Response) $next */ public function handle(Request $request, Closure $next): Response { diff --git a/app/Http/Middleware/EnsureUserIsSubscribed.php b/app/Http/Middleware/EnsureUserIsSubscribed.php index 74ce9109..f5ce63d1 100644 --- a/app/Http/Middleware/EnsureUserIsSubscribed.php +++ b/app/Http/Middleware/EnsureUserIsSubscribed.php @@ -10,7 +10,7 @@ use Symfony\Component\HttpFoundation\Response; class EnsureUserIsSubscribed { /** - * @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next + * @param Closure(Request): (Response) $next */ public function handle(Request $request, Closure $next): Response { diff --git a/app/Http/Middleware/HandleAppearance.php b/app/Http/Middleware/HandleAppearance.php index d974fd62..ec64d22e 100644 --- a/app/Http/Middleware/HandleAppearance.php +++ b/app/Http/Middleware/HandleAppearance.php @@ -12,7 +12,7 @@ class HandleAppearance /** * Handle an incoming request. * - * @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next + * @param Closure(Request): (Response) $next */ public function handle(Request $request, Closure $next): Response { diff --git a/app/Http/Middleware/SetLocale.php b/app/Http/Middleware/SetLocale.php index 0c8de860..c7817a17 100644 --- a/app/Http/Middleware/SetLocale.php +++ b/app/Http/Middleware/SetLocale.php @@ -12,7 +12,7 @@ class SetLocale /** * Handle an incoming request. * - * @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next + * @param Closure(Request): (Response) $next */ public function handle(Request $request, Closure $next): Response { diff --git a/app/Http/Requests/Settings/TwoFactorAuthenticationRequest.php b/app/Http/Requests/Settings/TwoFactorAuthenticationRequest.php index 9db81d21..1086eb50 100644 --- a/app/Http/Requests/Settings/TwoFactorAuthenticationRequest.php +++ b/app/Http/Requests/Settings/TwoFactorAuthenticationRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\Settings; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; use Laravel\Fortify\Features; use Laravel\Fortify\InteractsWithTwoFactorState; @@ -21,7 +22,7 @@ class TwoFactorAuthenticationRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array|string> */ public function rules(): array { diff --git a/app/Http/Requests/Settings/UpdateChartColorSchemeRequest.php b/app/Http/Requests/Settings/UpdateChartColorSchemeRequest.php index 9e7d2043..c393f3e2 100644 --- a/app/Http/Requests/Settings/UpdateChartColorSchemeRequest.php +++ b/app/Http/Requests/Settings/UpdateChartColorSchemeRequest.php @@ -3,6 +3,7 @@ namespace App\Http\Requests\Settings; use App\Enums\ChartColorScheme; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Validation\Rule; @@ -11,7 +12,7 @@ class UpdateChartColorSchemeRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array|string> */ public function rules(): array { diff --git a/app/Http/Requests/Settings/UpdateNetWorthChartLoanPreferenceRequest.php b/app/Http/Requests/Settings/UpdateNetWorthChartLoanPreferenceRequest.php index ab8b15f9..28f90b19 100644 --- a/app/Http/Requests/Settings/UpdateNetWorthChartLoanPreferenceRequest.php +++ b/app/Http/Requests/Settings/UpdateNetWorthChartLoanPreferenceRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\Settings; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class UpdateNetWorthChartLoanPreferenceRequest extends FormRequest @@ -17,7 +18,7 @@ class UpdateNetWorthChartLoanPreferenceRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array|string> */ public function rules(): array { diff --git a/app/Http/Requests/Settings/UpdateNetWorthChartRealEstatePreferenceRequest.php b/app/Http/Requests/Settings/UpdateNetWorthChartRealEstatePreferenceRequest.php index 83deb8e1..40dc95f2 100644 --- a/app/Http/Requests/Settings/UpdateNetWorthChartRealEstatePreferenceRequest.php +++ b/app/Http/Requests/Settings/UpdateNetWorthChartRealEstatePreferenceRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\Settings; +use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Foundation\Http\FormRequest; class UpdateNetWorthChartRealEstatePreferenceRequest extends FormRequest @@ -17,7 +18,7 @@ class UpdateNetWorthChartRealEstatePreferenceRequest extends FormRequest /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array|string> */ public function rules(): array { diff --git a/app/Mail/UserLeadInvitation.php b/app/Mail/UserLeadInvitation.php index 349715dd..e36ef7cd 100644 --- a/app/Mail/UserLeadInvitation.php +++ b/app/Mail/UserLeadInvitation.php @@ -6,6 +6,7 @@ use App\Models\UserLead; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Mail\Mailable; +use Illuminate\Mail\Mailables\Attachment; use Illuminate\Mail\Mailables\Content; use Illuminate\Mail\Mailables\Envelope; use Illuminate\Queue\Middleware\RateLimited; @@ -60,7 +61,7 @@ class UserLeadInvitation extends Mailable implements ShouldQueue /** * Get the attachments for the message. * - * @return array + * @return array */ public function attachments(): array { diff --git a/app/Mail/WaitlistOvertaken.php b/app/Mail/WaitlistOvertaken.php index 4907e355..4ba7cdd0 100644 --- a/app/Mail/WaitlistOvertaken.php +++ b/app/Mail/WaitlistOvertaken.php @@ -7,6 +7,7 @@ use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Mail\Mailable; use Illuminate\Mail\Mailables\Address; +use Illuminate\Mail\Mailables\Attachment; use Illuminate\Mail\Mailables\Content; use Illuminate\Mail\Mailables\Envelope; use Illuminate\Queue\Middleware\RateLimited; @@ -66,7 +67,7 @@ class WaitlistOvertaken extends Mailable implements ShouldQueue /** * Get the attachments for the message. * - * @return array + * @return array */ public function attachments(): array { diff --git a/app/Mail/WaitlistReferralNotification.php b/app/Mail/WaitlistReferralNotification.php index 32686785..f95b442f 100644 --- a/app/Mail/WaitlistReferralNotification.php +++ b/app/Mail/WaitlistReferralNotification.php @@ -7,6 +7,7 @@ use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Mail\Mailable; use Illuminate\Mail\Mailables\Address; +use Illuminate\Mail\Mailables\Attachment; use Illuminate\Mail\Mailables\Content; use Illuminate\Mail\Mailables\Envelope; use Illuminate\Queue\Middleware\RateLimited; @@ -66,7 +67,7 @@ class WaitlistReferralNotification extends Mailable implements ShouldQueue /** * Get the attachments for the message. * - * @return array + * @return array */ public function attachments(): array { diff --git a/app/Mail/WaitlistWelcome.php b/app/Mail/WaitlistWelcome.php index 766844ce..b5c4e66b 100644 --- a/app/Mail/WaitlistWelcome.php +++ b/app/Mail/WaitlistWelcome.php @@ -7,6 +7,7 @@ use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Mail\Mailable; use Illuminate\Mail\Mailables\Address; +use Illuminate\Mail\Mailables\Attachment; use Illuminate\Mail\Mailables\Content; use Illuminate\Mail\Mailables\Envelope; use Illuminate\Queue\Middleware\RateLimited; @@ -67,7 +68,7 @@ class WaitlistWelcome extends Mailable implements ShouldQueue /** * Get the attachments for the message. * - * @return array + * @return array */ public function attachments(): array { diff --git a/app/Models/Account.php b/app/Models/Account.php index e33622c7..0a404267 100644 --- a/app/Models/Account.php +++ b/app/Models/Account.php @@ -3,6 +3,7 @@ namespace App\Models; use App\Enums\AccountType; +use Database\Factories\AccountFactory; use Illuminate\Database\Eloquent\Concerns\HasUuids; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; @@ -12,11 +13,11 @@ use Illuminate\Database\Eloquent\Relations\HasOne; use Illuminate\Database\Eloquent\SoftDeletes; /** - * @property \App\Enums\AccountType $type + * @property AccountType $type */ class Account extends Model { - /** @use HasFactory<\Database\Factories\AccountFactory> */ + /** @use HasFactory */ use HasFactory, HasUuids, SoftDeletes; protected $fillable = [ diff --git a/app/Models/AccountBalance.php b/app/Models/AccountBalance.php index b9a04e07..1f27143a 100644 --- a/app/Models/AccountBalance.php +++ b/app/Models/AccountBalance.php @@ -2,17 +2,19 @@ namespace App\Models; +use Carbon\Carbon; +use Database\Factories\AccountBalanceFactory; use Illuminate\Database\Eloquent\Concerns\HasUuids; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; /** - * @property \Carbon\Carbon $balance_date + * @property Carbon $balance_date */ class AccountBalance extends Model { - /** @use HasFactory<\Database\Factories\AccountBalanceFactory> */ + /** @use HasFactory */ use HasFactory, HasUuids; protected $fillable = [ diff --git a/app/Models/AutomationRule.php b/app/Models/AutomationRule.php index 1b4c2f37..e95ea658 100644 --- a/app/Models/AutomationRule.php +++ b/app/Models/AutomationRule.php @@ -2,6 +2,7 @@ namespace App\Models; +use Database\Factories\AutomationRuleFactory; use Illuminate\Database\Eloquent\Concerns\HasUuids; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; @@ -11,7 +12,7 @@ use Illuminate\Database\Eloquent\SoftDeletes; class AutomationRule extends Model { - /** @use HasFactory<\Database\Factories\AutomationRuleFactory> */ + /** @use HasFactory */ use HasFactory, HasUuids, SoftDeletes; protected $fillable = [ diff --git a/app/Models/Bank.php b/app/Models/Bank.php index fdd541ef..dd865726 100644 --- a/app/Models/Bank.php +++ b/app/Models/Bank.php @@ -2,6 +2,7 @@ namespace App\Models; +use Database\Factories\BankFactory; use Illuminate\Database\Eloquent\Concerns\HasUuids; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; @@ -11,7 +12,7 @@ use Illuminate\Database\Eloquent\SoftDeletes; class Bank extends Model { - /** @use HasFactory<\Database\Factories\BankFactory> */ + /** @use HasFactory */ use HasFactory, HasUuids, SoftDeletes; protected $fillable = [ diff --git a/app/Models/BankingConnection.php b/app/Models/BankingConnection.php index 61c87351..87942831 100644 --- a/app/Models/BankingConnection.php +++ b/app/Models/BankingConnection.php @@ -3,6 +3,8 @@ namespace App\Models; use App\Enums\BankingConnectionStatus; +use Carbon\Carbon; +use Database\Factories\BankingConnectionFactory; use Illuminate\Database\Eloquent\Concerns\HasUuids; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; @@ -12,14 +14,14 @@ use Illuminate\Database\Eloquent\SoftDeletes; /** * @property bool $has_pending_accounts - * @property \App\Enums\BankingConnectionStatus $status - * @property \Carbon\Carbon|null $valid_until - * @property \Carbon\Carbon|null $last_synced_at + * @property BankingConnectionStatus $status + * @property Carbon|null $valid_until + * @property Carbon|null $last_synced_at * @property array|null $pending_accounts_data */ class BankingConnection extends Model { - /** @use HasFactory<\Database\Factories\BankingConnectionFactory> */ + /** @use HasFactory */ use HasFactory, HasUuids, SoftDeletes; protected $fillable = [ diff --git a/app/Models/Budget.php b/app/Models/Budget.php index 8b257237..1ca7505c 100644 --- a/app/Models/Budget.php +++ b/app/Models/Budget.php @@ -12,8 +12,8 @@ use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\SoftDeletes; /** - * @property \App\Enums\RolloverType $rollover_type - * @property \App\Enums\BudgetPeriodType $period_type + * @property RolloverType $rollover_type + * @property BudgetPeriodType $period_type */ class Budget extends Model { diff --git a/app/Models/BudgetPeriod.php b/app/Models/BudgetPeriod.php index a4782368..06e68510 100644 --- a/app/Models/BudgetPeriod.php +++ b/app/Models/BudgetPeriod.php @@ -2,6 +2,7 @@ namespace App\Models; +use Carbon\Carbon; use Illuminate\Database\Eloquent\Concerns\HasUuids; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; @@ -9,8 +10,8 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; /** - * @property \Carbon\Carbon $start_date - * @property \Carbon\Carbon $end_date + * @property Carbon $start_date + * @property Carbon $end_date */ class BudgetPeriod extends Model { diff --git a/app/Models/Category.php b/app/Models/Category.php index 02303806..108e3a05 100644 --- a/app/Models/Category.php +++ b/app/Models/Category.php @@ -4,6 +4,7 @@ namespace App\Models; use App\Enums\CategoryCashflowDirection; use App\Enums\CategoryType; +use Database\Factories\CategoryFactory; use Illuminate\Database\Eloquent\Concerns\HasUuids; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; @@ -13,7 +14,7 @@ use Illuminate\Database\Eloquent\SoftDeletes; class Category extends Model { - /** @use HasFactory<\Database\Factories\CategoryFactory> */ + /** @use HasFactory */ use HasFactory, HasUuids, SoftDeletes; protected $fillable = [ diff --git a/app/Models/ExchangeRate.php b/app/Models/ExchangeRate.php index aefe5e95..495a390e 100644 --- a/app/Models/ExchangeRate.php +++ b/app/Models/ExchangeRate.php @@ -2,6 +2,7 @@ namespace App\Models; +use Database\Factories\ExchangeRateFactory; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; @@ -10,7 +11,7 @@ use Illuminate\Database\Eloquent\Model; */ class ExchangeRate extends Model { - /** @use HasFactory<\Database\Factories\ExchangeRateFactory> */ + /** @use HasFactory */ use HasFactory; protected $fillable = [ diff --git a/app/Models/Label.php b/app/Models/Label.php index c5467d45..f7c0dc9b 100644 --- a/app/Models/Label.php +++ b/app/Models/Label.php @@ -2,6 +2,7 @@ namespace App\Models; +use Database\Factories\LabelFactory; use Illuminate\Database\Eloquent\Concerns\HasUuids; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; @@ -11,7 +12,7 @@ use Illuminate\Database\Eloquent\SoftDeletes; class Label extends Model { - /** @use HasFactory<\Database\Factories\LabelFactory> */ + /** @use HasFactory */ use HasFactory, HasUuids, SoftDeletes; protected $fillable = [ diff --git a/app/Models/RealEstateDetail.php b/app/Models/RealEstateDetail.php index 8da3d96b..3e727100 100644 --- a/app/Models/RealEstateDetail.php +++ b/app/Models/RealEstateDetail.php @@ -3,18 +3,19 @@ namespace App\Models; use App\Enums\PropertyType; +use Database\Factories\RealEstateDetailFactory; use Illuminate\Database\Eloquent\Concerns\HasUuids; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; /** - * @property \App\Enums\PropertyType $property_type + * @property PropertyType $property_type * @property int|null $purchase_price */ class RealEstateDetail extends Model { - /** @use HasFactory<\Database\Factories\RealEstateDetailFactory> */ + /** @use HasFactory */ use HasFactory, HasUuids; protected $fillable = [ diff --git a/app/Models/Transaction.php b/app/Models/Transaction.php index 74c1bc2a..75596472 100644 --- a/app/Models/Transaction.php +++ b/app/Models/Transaction.php @@ -6,6 +6,8 @@ use App\Enums\TransactionSource; use App\Events\TransactionCreated; use App\Events\TransactionDeleted; use App\Events\TransactionUpdated; +use Carbon\Carbon; +use Database\Factories\TransactionFactory; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Concerns\HasUuids; use Illuminate\Database\Eloquent\Factories\HasFactory; @@ -16,12 +18,12 @@ use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\SoftDeletes; /** - * @property \Carbon\Carbon $transaction_date + * @property Carbon $transaction_date * @property int|float $total_amount */ class Transaction extends Model { - /** @use HasFactory<\Database\Factories\TransactionFactory> */ + /** @use HasFactory */ use HasFactory, HasUuids, SoftDeletes; /** @var array */ diff --git a/app/Models/User.php b/app/Models/User.php index e6ef6873..938abc51 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -4,6 +4,7 @@ namespace App\Models; use App\Enums\DripEmailType; use App\Notifications\VerifyEmailNotification; +use Database\Factories\UserFactory; use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Contracts\Translation\HasLocalePreference; use Illuminate\Database\Eloquent\Builder; @@ -19,7 +20,7 @@ use Laravel\Pennant\Concerns\HasFeatures; class User extends Authenticatable implements HasLocalePreference, MustVerifyEmail { - /** @use HasFactory<\Database\Factories\UserFactory> */ + /** @use HasFactory */ use Billable, HasFactory, HasFeatures, HasUuids, Notifiable, TwoFactorAuthenticatable; /** diff --git a/app/Models/UserLead.php b/app/Models/UserLead.php index 1d0eb4c8..21dc1ee4 100644 --- a/app/Models/UserLead.php +++ b/app/Models/UserLead.php @@ -2,6 +2,7 @@ namespace App\Models; +use Database\Factories\UserLeadFactory; use Illuminate\Database\Eloquent\Concerns\HasUuids; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; @@ -11,7 +12,7 @@ use Illuminate\Support\Str; class UserLead extends Model { - /** @use HasFactory<\Database\Factories\UserLeadFactory> */ + /** @use HasFactory */ use HasFactory, HasUuids; protected $fillable = [ diff --git a/app/Models/UserSetting.php b/app/Models/UserSetting.php index 4e2afbd5..cba1b5e5 100644 --- a/app/Models/UserSetting.php +++ b/app/Models/UserSetting.php @@ -3,19 +3,20 @@ namespace App\Models; use App\Enums\ChartColorScheme; +use Database\Factories\UserSettingFactory; use Illuminate\Database\Eloquent\Concerns\HasUuids; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; /** - * @property \App\Enums\ChartColorScheme $chart_color_scheme + * @property ChartColorScheme $chart_color_scheme * @property bool $include_loans_in_net_worth_chart * @property bool $include_real_estate_in_net_worth_chart */ class UserSetting extends Model { - /** @use HasFactory<\Database\Factories\UserSettingFactory> */ + /** @use HasFactory */ use HasFactory, HasUuids; protected $fillable = [ diff --git a/app/Services/Banking/BalanceSyncService.php b/app/Services/Banking/BalanceSyncService.php index bc87222c..321cc639 100644 --- a/app/Services/Banking/BalanceSyncService.php +++ b/app/Services/Banking/BalanceSyncService.php @@ -4,6 +4,7 @@ namespace App\Services\Banking; use App\Contracts\BankingProviderInterface; use App\Models\Account; +use Carbon\Carbon; use Illuminate\Support\Facades\Log; class BalanceSyncService @@ -69,7 +70,7 @@ class BalanceSyncService $existingDates = $account->balances() ->pluck('balance_date') - ->map(fn (mixed $date) => $date instanceof \Carbon\Carbon ? $date->toDateString() : (string) $date) + ->map(fn (mixed $date) => $date instanceof Carbon ? $date->toDateString() : (string) $date) ->flip() ->all(); diff --git a/bootstrap/app.php b/bootstrap/app.php index 632b6d1b..cf73aa7d 100644 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -1,6 +1,8 @@ alias([ 'subscribed' => EnsureUserIsSubscribed::class, - 'onboarded' => \App\Http\Middleware\EnsureOnboardingComplete::class, - 'block-demo' => \App\Http\Middleware\BlockDemoAccountActions::class, + 'onboarded' => EnsureOnboardingComplete::class, + 'block-demo' => BlockDemoAccountActions::class, 'open-banking' => EnsureOpenBankingFeature::class, ]); }) diff --git a/bootstrap/providers.php b/bootstrap/providers.php index 0ad9c573..5ffd7697 100644 --- a/bootstrap/providers.php +++ b/bootstrap/providers.php @@ -1,6 +1,9 @@ =8.2", + "php": ">=8.4", "psr/log": "^1|^2|^3", "symfony/polyfill-php85": "^1.32", - "symfony/var-dumper": "^6.4|^7.0|^8.0" + "symfony/var-dumper": "^7.4|^8.0" }, "conflict": { - "symfony/deprecation-contracts": "<2.5", - "symfony/http-kernel": "<6.4" + "symfony/deprecation-contracts": "<2.5" }, "require-dev": { - "symfony/console": "^6.4|^7.0|^8.0", + "symfony/console": "^7.4|^8.0", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/http-kernel": "^6.4|^7.0|^8.0", - "symfony/serializer": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/serializer": "^7.4|^8.0", "symfony/webpack-encore-bundle": "^1.0|^2.0" }, "bin": [ @@ -5071,7 +5082,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.4.4" + "source": "https://github.com/symfony/error-handler/tree/v8.0.4" }, "funding": [ { @@ -5091,7 +5102,7 @@ "type": "tidelift" } ], - "time": "2026-01-20T16:42:42+00:00" + "time": "2026-01-23T11:07:10+00:00" }, { "name": "symfony/event-dispatcher", @@ -5256,23 +5267,23 @@ }, { "name": "symfony/finder", - "version": "v7.4.5", + "version": "v8.0.6", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "ad4daa7c38668dcb031e63bc99ea9bd42196a2cb" + "reference": "441404f09a54de6d1bd6ad219e088cdf4c91f97c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/ad4daa7c38668dcb031e63bc99ea9bd42196a2cb", - "reference": "ad4daa7c38668dcb031e63bc99ea9bd42196a2cb", + "url": "https://api.github.com/repos/symfony/finder/zipball/441404f09a54de6d1bd6ad219e088cdf4c91f97c", + "reference": "441404f09a54de6d1bd6ad219e088cdf4c91f97c", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.4" }, "require-dev": { - "symfony/filesystem": "^6.4|^7.0|^8.0" + "symfony/filesystem": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -5300,7 +5311,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.4.5" + "source": "https://github.com/symfony/finder/tree/v8.0.6" }, "funding": [ { @@ -5320,41 +5331,39 @@ "type": "tidelift" } ], - "time": "2026-01-26T15:07:59+00:00" + "time": "2026-01-29T09:41:02+00:00" }, { "name": "symfony/http-foundation", - "version": "v7.4.5", + "version": "v8.0.7", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "446d0db2b1f21575f1284b74533e425096abdfb6" + "reference": "c5ecf7b07408dbc4a87482634307654190954ae8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/446d0db2b1f21575f1284b74533e425096abdfb6", - "reference": "446d0db2b1f21575f1284b74533e425096abdfb6", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/c5ecf7b07408dbc4a87482634307654190954ae8", + "reference": "c5ecf7b07408dbc4a87482634307654190954ae8", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3", + "php": ">=8.4", "symfony/polyfill-mbstring": "^1.1" }, "conflict": { - "doctrine/dbal": "<3.6", - "symfony/cache": "<6.4.12|>=7.0,<7.1.5" + "doctrine/dbal": "<4.3" }, "require-dev": { - "doctrine/dbal": "^3.6|^4", + "doctrine/dbal": "^4.3", "predis/predis": "^1.1|^2.0", - "symfony/cache": "^6.4.12|^7.1.5|^8.0", - "symfony/clock": "^6.4|^7.0|^8.0", - "symfony/dependency-injection": "^6.4|^7.0|^8.0", - "symfony/expression-language": "^6.4|^7.0|^8.0", - "symfony/http-kernel": "^6.4|^7.0|^8.0", - "symfony/mime": "^6.4|^7.0|^8.0", - "symfony/rate-limiter": "^6.4|^7.0|^8.0" + "symfony/cache": "^7.4|^8.0", + "symfony/clock": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/expression-language": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/mime": "^7.4|^8.0", + "symfony/rate-limiter": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -5382,7 +5391,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.4.5" + "source": "https://github.com/symfony/http-foundation/tree/v8.0.7" }, "funding": [ { @@ -5402,20 +5411,20 @@ "type": "tidelift" } ], - "time": "2026-01-27T16:16:02+00:00" + "time": "2026-03-06T13:17:40+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.4.5", + "version": "v7.4.7", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "229eda477017f92bd2ce7615d06222ec0c19e82a" + "reference": "3b3fcf386c809be990c922e10e4c620d6367cab1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/229eda477017f92bd2ce7615d06222ec0c19e82a", - "reference": "229eda477017f92bd2ce7615d06222ec0c19e82a", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/3b3fcf386c809be990c922e10e4c620d6367cab1", + "reference": "3b3fcf386c809be990c922e10e4c620d6367cab1", "shasum": "" }, "require": { @@ -5457,7 +5466,7 @@ "symfony/config": "^6.4|^7.0|^8.0", "symfony/console": "^6.4|^7.0|^8.0", "symfony/css-selector": "^6.4|^7.0|^8.0", - "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4.1|^7.0.1|^8.0", "symfony/dom-crawler": "^6.4|^7.0|^8.0", "symfony/expression-language": "^6.4|^7.0|^8.0", "symfony/finder": "^6.4|^7.0|^8.0", @@ -5501,7 +5510,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.4.5" + "source": "https://github.com/symfony/http-kernel/tree/v7.4.7" }, "funding": [ { @@ -5521,43 +5530,39 @@ "type": "tidelift" } ], - "time": "2026-01-28T10:33:42+00:00" + "time": "2026-03-06T16:33:18+00:00" }, { "name": "symfony/mailer", - "version": "v7.4.4", + "version": "v8.0.6", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "7b750074c40c694ceb34cb926d6dffee231c5cd6" + "reference": "a8971c86b25ff8557e844f08c1f6207d9b3e614c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/7b750074c40c694ceb34cb926d6dffee231c5cd6", - "reference": "7b750074c40c694ceb34cb926d6dffee231c5cd6", + "url": "https://api.github.com/repos/symfony/mailer/zipball/a8971c86b25ff8557e844f08c1f6207d9b3e614c", + "reference": "a8971c86b25ff8557e844f08c1f6207d9b3e614c", "shasum": "" }, "require": { "egulias/email-validator": "^2.1.10|^3|^4", - "php": ">=8.2", + "php": ">=8.4", "psr/event-dispatcher": "^1", "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^6.4|^7.0|^8.0", - "symfony/mime": "^7.2|^8.0", + "symfony/event-dispatcher": "^7.4|^8.0", + "symfony/mime": "^7.4|^8.0", "symfony/service-contracts": "^2.5|^3" }, "conflict": { - "symfony/http-client-contracts": "<2.5", - "symfony/http-kernel": "<6.4", - "symfony/messenger": "<6.4", - "symfony/mime": "<6.4", - "symfony/twig-bridge": "<6.4" + "symfony/http-client-contracts": "<2.5" }, "require-dev": { - "symfony/console": "^6.4|^7.0|^8.0", - "symfony/http-client": "^6.4|^7.0|^8.0", - "symfony/messenger": "^6.4|^7.0|^8.0", - "symfony/twig-bridge": "^6.4|^7.0|^8.0" + "symfony/console": "^7.4|^8.0", + "symfony/http-client": "^7.4|^8.0", + "symfony/messenger": "^7.4|^8.0", + "symfony/twig-bridge": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -5585,7 +5590,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v7.4.4" + "source": "https://github.com/symfony/mailer/tree/v8.0.6" }, "funding": [ { @@ -5605,44 +5610,41 @@ "type": "tidelift" } ], - "time": "2026-01-08T08:25:11+00:00" + "time": "2026-02-25T16:59:43+00:00" }, { "name": "symfony/mime", - "version": "v7.4.5", + "version": "v8.0.7", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "b18c7e6e9eee1e19958138df10412f3c4c316148" + "reference": "5d26d1958aeeba2ace8cc64a3a93d4f5d8f8022b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/b18c7e6e9eee1e19958138df10412f3c4c316148", - "reference": "b18c7e6e9eee1e19958138df10412f3c4c316148", + "url": "https://api.github.com/repos/symfony/mime/zipball/5d26d1958aeeba2ace8cc64a3a93d4f5d8f8022b", + "reference": "5d26d1958aeeba2ace8cc64a3a93d4f5d8f8022b", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3", + "php": ">=8.4", "symfony/polyfill-intl-idn": "^1.10", "symfony/polyfill-mbstring": "^1.0" }, "conflict": { "egulias/email-validator": "~3.0.0", - "phpdocumentor/reflection-docblock": "<5.2|>=6", - "phpdocumentor/type-resolver": "<1.5.1", - "symfony/mailer": "<6.4", - "symfony/serializer": "<6.4.3|>7.0,<7.0.3" + "phpdocumentor/reflection-docblock": "<5.2|>=7", + "phpdocumentor/type-resolver": "<1.5.1" }, "require-dev": { "egulias/email-validator": "^2.1.10|^3.1|^4", "league/html-to-markdown": "^5.0", - "phpdocumentor/reflection-docblock": "^5.2", - "symfony/dependency-injection": "^6.4|^7.0|^8.0", - "symfony/process": "^6.4|^7.0|^8.0", - "symfony/property-access": "^6.4|^7.0|^8.0", - "symfony/property-info": "^6.4|^7.0|^8.0", - "symfony/serializer": "^6.4.3|^7.0.3|^8.0" + "phpdocumentor/reflection-docblock": "^5.2|^6.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/process": "^7.4|^8.0", + "symfony/property-access": "^7.4|^8.0", + "symfony/property-info": "^7.4|^8.0", + "symfony/serializer": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -5674,7 +5676,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v7.4.5" + "source": "https://github.com/symfony/mime/tree/v8.0.7" }, "funding": [ { @@ -5694,7 +5696,7 @@ "type": "tidelift" } ], - "time": "2026-01-27T08:59:58+00:00" + "time": "2026-03-06T13:17:40+00:00" }, { "name": "symfony/options-resolver", @@ -6361,86 +6363,6 @@ ], "time": "2025-01-02T08:10:11+00:00" }, - { - "name": "symfony/polyfill-php83", - "version": "v1.33.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php83.git", - "reference": "17f6f9a6b1735c0f163024d959f700cfbc5155e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/17f6f9a6b1735c0f163024d959f700cfbc5155e5", - "reference": "17f6f9a6b1735c0f163024d959f700cfbc5155e5", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php83\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php83/tree/v1.33.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2025-07-08T02:45:35+00:00" - }, { "name": "symfony/polyfill-php84", "version": "v1.33.0", @@ -6686,20 +6608,20 @@ }, { "name": "symfony/process", - "version": "v7.4.5", + "version": "v8.0.5", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "608476f4604102976d687c483ac63a79ba18cc97" + "reference": "b5f3aa6762e33fd95efbaa2ec4f4bc9fdd16d674" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/608476f4604102976d687c483ac63a79ba18cc97", - "reference": "608476f4604102976d687c483ac63a79ba18cc97", + "url": "https://api.github.com/repos/symfony/process/zipball/b5f3aa6762e33fd95efbaa2ec4f4bc9fdd16d674", + "reference": "b5f3aa6762e33fd95efbaa2ec4f4bc9fdd16d674", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.4" }, "type": "library", "autoload": { @@ -6727,7 +6649,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.4.5" + "source": "https://github.com/symfony/process/tree/v8.0.5" }, "funding": [ { @@ -6747,7 +6669,7 @@ "type": "tidelift" } ], - "time": "2026-01-26T15:07:59+00:00" + "time": "2026-01-26T15:08:38+00:00" }, { "name": "symfony/psr-http-message-bridge", @@ -6838,34 +6760,29 @@ }, { "name": "symfony/routing", - "version": "v7.4.4", + "version": "v8.0.6", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "0798827fe2c79caeed41d70b680c2c3507d10147" + "reference": "053c40fd46e1d19c5c5a94cada93ce6c3facdd55" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/0798827fe2c79caeed41d70b680c2c3507d10147", - "reference": "0798827fe2c79caeed41d70b680c2c3507d10147", + "url": "https://api.github.com/repos/symfony/routing/zipball/053c40fd46e1d19c5c5a94cada93ce6c3facdd55", + "reference": "053c40fd46e1d19c5c5a94cada93ce6c3facdd55", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.4", "symfony/deprecation-contracts": "^2.5|^3" }, - "conflict": { - "symfony/config": "<6.4", - "symfony/dependency-injection": "<6.4", - "symfony/yaml": "<6.4" - }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0|^8.0", - "symfony/dependency-injection": "^6.4|^7.0|^8.0", - "symfony/expression-language": "^6.4|^7.0|^8.0", - "symfony/http-foundation": "^6.4|^7.0|^8.0", - "symfony/yaml": "^6.4|^7.0|^8.0" + "symfony/config": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/expression-language": "^7.4|^8.0", + "symfony/http-foundation": "^7.4|^8.0", + "symfony/yaml": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -6899,7 +6816,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v7.4.4" + "source": "https://github.com/symfony/routing/tree/v8.0.6" }, "funding": [ { @@ -6919,7 +6836,7 @@ "type": "tidelift" } ], - "time": "2026-01-12T12:19:02+00:00" + "time": "2026-02-25T16:59:43+00:00" }, { "name": "symfony/service-contracts", @@ -7010,16 +6927,16 @@ }, { "name": "symfony/string", - "version": "v8.0.4", + "version": "v8.0.6", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "758b372d6882506821ed666032e43020c4f57194" + "reference": "6c9e1108041b5dce21a9a4984b531c4923aa9ec4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/758b372d6882506821ed666032e43020c4f57194", - "reference": "758b372d6882506821ed666032e43020c4f57194", + "url": "https://api.github.com/repos/symfony/string/zipball/6c9e1108041b5dce21a9a4984b531c4923aa9ec4", + "reference": "6c9e1108041b5dce21a9a4984b531c4923aa9ec4", "shasum": "" }, "require": { @@ -7076,7 +6993,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v8.0.4" + "source": "https://github.com/symfony/string/tree/v8.0.6" }, "funding": [ { @@ -7096,20 +7013,20 @@ "type": "tidelift" } ], - "time": "2026-01-12T12:37:40+00:00" + "time": "2026-02-09T10:14:57+00:00" }, { "name": "symfony/translation", - "version": "v8.0.4", + "version": "v8.0.6", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "db70c8ce7db74fd2da7b1d268db46b2a8ce32c10" + "reference": "13ff19bcf2bea492d3c2fbeaa194dd6f4599ce1b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/db70c8ce7db74fd2da7b1d268db46b2a8ce32c10", - "reference": "db70c8ce7db74fd2da7b1d268db46b2a8ce32c10", + "url": "https://api.github.com/repos/symfony/translation/zipball/13ff19bcf2bea492d3c2fbeaa194dd6f4599ce1b", + "reference": "13ff19bcf2bea492d3c2fbeaa194dd6f4599ce1b", "shasum": "" }, "require": { @@ -7169,7 +7086,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v8.0.4" + "source": "https://github.com/symfony/translation/tree/v8.0.6" }, "funding": [ { @@ -7189,7 +7106,7 @@ "type": "tidelift" } ], - "time": "2026-01-13T13:06:50+00:00" + "time": "2026-02-17T13:07:04+00:00" }, { "name": "symfony/translation-contracts", @@ -7275,24 +7192,24 @@ }, { "name": "symfony/uid", - "version": "v7.4.4", + "version": "v8.0.4", "source": { "type": "git", "url": "https://github.com/symfony/uid.git", - "reference": "7719ce8aba76be93dfe249192f1fbfa52c588e36" + "reference": "8b81bd3700f5c1913c22a3266a647aa1bb974435" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/7719ce8aba76be93dfe249192f1fbfa52c588e36", - "reference": "7719ce8aba76be93dfe249192f1fbfa52c588e36", + "url": "https://api.github.com/repos/symfony/uid/zipball/8b81bd3700f5c1913c22a3266a647aa1bb974435", + "reference": "8b81bd3700f5c1913c22a3266a647aa1bb974435", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.4", "symfony/polyfill-uuid": "^1.15" }, "require-dev": { - "symfony/console": "^6.4|^7.0|^8.0" + "symfony/console": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -7329,7 +7246,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/uid/tree/v7.4.4" + "source": "https://github.com/symfony/uid/tree/v8.0.4" }, "funding": [ { @@ -7349,35 +7266,35 @@ "type": "tidelift" } ], - "time": "2026-01-03T23:30:35+00:00" + "time": "2026-01-03T23:40:55+00:00" }, { "name": "symfony/var-dumper", - "version": "v7.4.4", + "version": "v8.0.6", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "0e4769b46a0c3c62390d124635ce59f66874b282" + "reference": "2e14f7e0bf5ff02c6e63bd31cb8e4855a13d6209" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/0e4769b46a0c3c62390d124635ce59f66874b282", - "reference": "0e4769b46a0c3c62390d124635ce59f66874b282", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/2e14f7e0bf5ff02c6e63bd31cb8e4855a13d6209", + "reference": "2e14f7e0bf5ff02c6e63bd31cb8e4855a13d6209", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-mbstring": "~1.0" + "php": ">=8.4", + "symfony/polyfill-mbstring": "^1.0" }, "conflict": { - "symfony/console": "<6.4" + "symfony/console": "<7.4", + "symfony/error-handler": "<7.4" }, "require-dev": { - "symfony/console": "^6.4|^7.0|^8.0", - "symfony/http-kernel": "^6.4|^7.0|^8.0", - "symfony/process": "^6.4|^7.0|^8.0", - "symfony/uid": "^6.4|^7.0|^8.0", + "symfony/console": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/process": "^7.4|^8.0", + "symfony/uid": "^7.4|^8.0", "twig/twig": "^3.12" }, "bin": [ @@ -7416,7 +7333,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.4.4" + "source": "https://github.com/symfony/var-dumper/tree/v8.0.6" }, "funding": [ { @@ -7436,7 +7353,7 @@ "type": "tidelift" } ], - "time": "2026-01-01T22:13:48+00:00" + "time": "2026-02-15T10:53:29+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -9026,16 +8943,16 @@ }, { "name": "brianium/paratest", - "version": "v7.19.0", + "version": "v7.19.2", "source": { "type": "git", "url": "https://github.com/paratestphp/paratest.git", - "reference": "7c6c29af7c4b406b49ce0c6b0a3a81d3684474e6" + "reference": "66e4f7910cecf67736bccf2b8bd53a2e3eb98bd9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paratestphp/paratest/zipball/7c6c29af7c4b406b49ce0c6b0a3a81d3684474e6", - "reference": "7c6c29af7c4b406b49ce0c6b0a3a81d3684474e6", + "url": "https://api.github.com/repos/paratestphp/paratest/zipball/66e4f7910cecf67736bccf2b8bd53a2e3eb98bd9", + "reference": "66e4f7910cecf67736bccf2b8bd53a2e3eb98bd9", "shasum": "" }, "require": { @@ -9049,9 +8966,9 @@ "phpunit/php-code-coverage": "^12.5.3 || ^13.0.1", "phpunit/php-file-iterator": "^6.0.1 || ^7", "phpunit/php-timer": "^8 || ^9", - "phpunit/phpunit": "^12.5.9 || ^13", + "phpunit/phpunit": "^12.5.14 || ^13.0.5", "sebastian/environment": "^8.0.3 || ^9", - "symfony/console": "^7.4.4 || ^8.0.4", + "symfony/console": "^7.4.7 || ^8.0.7", "symfony/process": "^7.4.5 || ^8.0.5" }, "require-dev": { @@ -9059,11 +8976,11 @@ "ext-pcntl": "*", "ext-pcov": "*", "ext-posix": "*", - "phpstan/phpstan": "^2.1.38", - "phpstan/phpstan-deprecation-rules": "^2.0.3", - "phpstan/phpstan-phpunit": "^2.0.12", - "phpstan/phpstan-strict-rules": "^2.0.8", - "symfony/filesystem": "^7.4.0 || ^8.0.1" + "phpstan/phpstan": "^2.1.40", + "phpstan/phpstan-deprecation-rules": "^2.0.4", + "phpstan/phpstan-phpunit": "^2.0.16", + "phpstan/phpstan-strict-rules": "^2.0.10", + "symfony/filesystem": "^7.4.6 || ^8.0.6" }, "bin": [ "bin/paratest", @@ -9103,7 +9020,7 @@ ], "support": { "issues": "https://github.com/paratestphp/paratest/issues", - "source": "https://github.com/paratestphp/paratest/tree/v7.19.0" + "source": "https://github.com/paratestphp/paratest/tree/v7.19.2" }, "funding": [ { @@ -9115,7 +9032,7 @@ "type": "paypal" } ], - "time": "2026-02-06T10:53:26+00:00" + "time": "2026-03-09T14:33:17+00:00" }, { "name": "clue/stream-filter", @@ -9837,25 +9754,25 @@ }, { "name": "laravel/boost", - "version": "v2.2.0", + "version": "v2.3.4", "source": { "type": "git", "url": "https://github.com/laravel/boost.git", - "reference": "b4c5bed7b45e9cd9f705ef3ab1157d437376323c" + "reference": "9e3dd5f05b59394e463e78853067dc36c63a0394" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/boost/zipball/b4c5bed7b45e9cd9f705ef3ab1157d437376323c", - "reference": "b4c5bed7b45e9cd9f705ef3ab1157d437376323c", + "url": "https://api.github.com/repos/laravel/boost/zipball/9e3dd5f05b59394e463e78853067dc36c63a0394", + "reference": "9e3dd5f05b59394e463e78853067dc36c63a0394", "shasum": "" }, "require": { "guzzlehttp/guzzle": "^7.9", - "illuminate/console": "^11.45.3|^12.41.1", - "illuminate/contracts": "^11.45.3|^12.41.1", - "illuminate/routing": "^11.45.3|^12.41.1", - "illuminate/support": "^11.45.3|^12.41.1", - "laravel/mcp": "^0.5.1", + "illuminate/console": "^11.45.3|^12.41.1|^13.0", + "illuminate/contracts": "^11.45.3|^12.41.1|^13.0", + "illuminate/routing": "^11.45.3|^12.41.1|^13.0", + "illuminate/support": "^11.45.3|^12.41.1|^13.0", + "laravel/mcp": "^0.5.1|^0.6.0", "laravel/prompts": "^0.3.10", "laravel/roster": "^0.5.0", "php": "^8.2" @@ -9863,7 +9780,7 @@ "require-dev": { "laravel/pint": "^1.27.0", "mockery/mockery": "^1.6.12", - "orchestra/testbench": "^9.15.0|^10.6", + "orchestra/testbench": "^9.15.0|^10.6|^11.0", "pestphp/pest": "^2.36.0|^3.8.4|^4.1.5", "phpstan/phpstan": "^2.1.27", "rector/rector": "^2.1" @@ -9899,20 +9816,20 @@ "issues": "https://github.com/laravel/boost/issues", "source": "https://github.com/laravel/boost" }, - "time": "2026-02-20T14:45:22+00:00" + "time": "2026-03-17T16:42:14+00:00" }, { "name": "laravel/mcp", - "version": "v0.5.9", + "version": "v0.6.3", "source": { "type": "git", "url": "https://github.com/laravel/mcp.git", - "reference": "39e8da60eb7bce4737c5d868d35a3fe78938c129" + "reference": "8a2c97ec1184e16029080e3f6172a7ca73de4df9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/mcp/zipball/39e8da60eb7bce4737c5d868d35a3fe78938c129", - "reference": "39e8da60eb7bce4737c5d868d35a3fe78938c129", + "url": "https://api.github.com/repos/laravel/mcp/zipball/8a2c97ec1184e16029080e3f6172a7ca73de4df9", + "reference": "8a2c97ec1184e16029080e3f6172a7ca73de4df9", "shasum": "" }, "require": { @@ -9972,7 +9889,7 @@ "issues": "https://github.com/laravel/mcp/issues", "source": "https://github.com/laravel/mcp" }, - "time": "2026-02-17T19:05:53+00:00" + "time": "2026-03-12T12:46:43+00:00" }, { "name": "laravel/pail", @@ -10056,16 +9973,16 @@ }, { "name": "laravel/pint", - "version": "v1.27.1", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/laravel/pint.git", - "reference": "54cca2de13790570c7b6f0f94f37896bee4abcb5" + "reference": "bdec963f53172c5e36330f3a400604c69bf02d39" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/pint/zipball/54cca2de13790570c7b6f0f94f37896bee4abcb5", - "reference": "54cca2de13790570c7b6f0f94f37896bee4abcb5", + "url": "https://api.github.com/repos/laravel/pint/zipball/bdec963f53172c5e36330f3a400604c69bf02d39", + "reference": "bdec963f53172c5e36330f3a400604c69bf02d39", "shasum": "" }, "require": { @@ -10076,13 +9993,14 @@ "php": "^8.2.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^3.93.1", - "illuminate/view": "^12.51.0", - "larastan/larastan": "^3.9.2", + "friendsofphp/php-cs-fixer": "^3.94.2", + "illuminate/view": "^12.54.1", + "larastan/larastan": "^3.9.3", "laravel-zero/framework": "^12.0.5", "mockery/mockery": "^1.6.12", - "nunomaduro/termwind": "^2.3.3", - "pestphp/pest": "^3.8.5" + "nunomaduro/termwind": "^2.4.0", + "pestphp/pest": "^3.8.6", + "shipfastlabs/agent-detector": "^1.1.0" }, "bin": [ "builds/pint" @@ -10119,20 +10037,20 @@ "issues": "https://github.com/laravel/pint/issues", "source": "https://github.com/laravel/pint" }, - "time": "2026-02-10T20:00:20+00:00" + "time": "2026-03-12T15:51:39+00:00" }, { "name": "laravel/roster", - "version": "v0.5.0", + "version": "v0.5.1", "source": { "type": "git", "url": "https://github.com/laravel/roster.git", - "reference": "56904a78f4d7360c1c490ced7deeebf9aecb8c0e" + "reference": "5089de7615f72f78e831590ff9d0435fed0102bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/roster/zipball/56904a78f4d7360c1c490ced7deeebf9aecb8c0e", - "reference": "56904a78f4d7360c1c490ced7deeebf9aecb8c0e", + "url": "https://api.github.com/repos/laravel/roster/zipball/5089de7615f72f78e831590ff9d0435fed0102bb", + "reference": "5089de7615f72f78e831590ff9d0435fed0102bb", "shasum": "" }, "require": { @@ -10180,20 +10098,20 @@ "issues": "https://github.com/laravel/roster/issues", "source": "https://github.com/laravel/roster" }, - "time": "2026-02-17T17:33:35+00:00" + "time": "2026-03-05T07:58:43+00:00" }, { "name": "laravel/sail", - "version": "v1.53.0", + "version": "v1.54.0", "source": { "type": "git", "url": "https://github.com/laravel/sail.git", - "reference": "e340eaa2bea9b99192570c48ed837155dbf24fbb" + "reference": "bcc5e06f1a79d806d880a4b027964d2aa5872b07" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/e340eaa2bea9b99192570c48ed837155dbf24fbb", - "reference": "e340eaa2bea9b99192570c48ed837155dbf24fbb", + "url": "https://api.github.com/repos/laravel/sail/zipball/bcc5e06f1a79d806d880a4b027964d2aa5872b07", + "reference": "bcc5e06f1a79d806d880a4b027964d2aa5872b07", "shasum": "" }, "require": { @@ -10243,24 +10161,24 @@ "issues": "https://github.com/laravel/sail/issues", "source": "https://github.com/laravel/sail" }, - "time": "2026-02-06T12:16:02+00:00" + "time": "2026-03-11T14:10:52+00:00" }, { "name": "league/uri-components", - "version": "7.8.0", + "version": "7.8.1", "source": { "type": "git", "url": "https://github.com/thephpleague/uri-components.git", - "reference": "8b5ffcebcc0842b76eb80964795bd56a8333b2ba" + "reference": "848ff9db2f0be06229d6034b7c2e33d41b4fd675" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/uri-components/zipball/8b5ffcebcc0842b76eb80964795bd56a8333b2ba", - "reference": "8b5ffcebcc0842b76eb80964795bd56a8333b2ba", + "url": "https://api.github.com/repos/thephpleague/uri-components/zipball/848ff9db2f0be06229d6034b7c2e33d41b4fd675", + "reference": "848ff9db2f0be06229d6034b7c2e33d41b4fd675", "shasum": "" }, "require": { - "league/uri": "^7.8", + "league/uri": "^7.8.1", "php": "^8.1" }, "suggest": { @@ -10319,7 +10237,7 @@ "docs": "https://uri.thephpleague.com", "forum": "https://thephpleague.slack.com", "issues": "https://github.com/thephpleague/uri-src/issues", - "source": "https://github.com/thephpleague/uri-components/tree/7.8.0" + "source": "https://github.com/thephpleague/uri-components/tree/7.8.1" }, "funding": [ { @@ -10327,7 +10245,7 @@ "type": "github" } ], - "time": "2026-01-14T17:24:56+00:00" + "time": "2026-03-15T20:22:25+00:00" }, { "name": "mockery/mockery", @@ -10570,33 +10488,33 @@ }, { "name": "pestphp/pest", - "version": "v4.4.1", + "version": "v4.4.3", "source": { "type": "git", "url": "https://github.com/pestphp/pest.git", - "reference": "f96a1b27864b585b0b29b0ee7331176726f7e54a" + "reference": "e6ab897594312728ef2e32d586cb4f6780b1b495" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest/zipball/f96a1b27864b585b0b29b0ee7331176726f7e54a", - "reference": "f96a1b27864b585b0b29b0ee7331176726f7e54a", + "url": "https://api.github.com/repos/pestphp/pest/zipball/e6ab897594312728ef2e32d586cb4f6780b1b495", + "reference": "e6ab897594312728ef2e32d586cb4f6780b1b495", "shasum": "" }, "require": { - "brianium/paratest": "^7.19.0", - "nunomaduro/collision": "^8.9.0", + "brianium/paratest": "^7.19.2", + "nunomaduro/collision": "^8.9.1", "nunomaduro/termwind": "^2.4.0", "pestphp/pest-plugin": "^4.0.0", "pestphp/pest-plugin-arch": "^4.0.0", "pestphp/pest-plugin-mutate": "^4.0.1", "pestphp/pest-plugin-profanity": "^4.2.1", "php": "^8.3.0", - "phpunit/phpunit": "^12.5.12", + "phpunit/phpunit": "^12.5.14", "symfony/process": "^7.4.5|^8.0.5" }, "conflict": { "filp/whoops": "<2.18.3", - "phpunit/phpunit": ">12.5.12", + "phpunit/phpunit": ">12.5.14", "sebastian/exporter": "<7.0.0", "webmozart/assert": "<1.11.0" }, @@ -10604,7 +10522,7 @@ "pestphp/pest-dev-tools": "^4.1.0", "pestphp/pest-plugin-browser": "^4.3.0", "pestphp/pest-plugin-type-coverage": "^4.0.3", - "psy/psysh": "^0.12.20" + "psy/psysh": "^0.12.21" }, "bin": [ "bin/pest" @@ -10670,7 +10588,7 @@ ], "support": { "issues": "https://github.com/pestphp/pest/issues", - "source": "https://github.com/pestphp/pest/tree/v4.4.1" + "source": "https://github.com/pestphp/pest/tree/v4.4.3" }, "funding": [ { @@ -10682,7 +10600,7 @@ "type": "github" } ], - "time": "2026-02-17T15:27:18+00:00" + "time": "2026-03-21T13:14:39+00:00" }, { "name": "pestphp/pest-plugin", @@ -11783,16 +11701,16 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "5.6.6", + "version": "6.0.3", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "5cee1d3dfc2d2aa6599834520911d246f656bcb8" + "reference": "7bae67520aa9f5ecc506d646810bd40d9da54582" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/5cee1d3dfc2d2aa6599834520911d246f656bcb8", - "reference": "5cee1d3dfc2d2aa6599834520911d246f656bcb8", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/7bae67520aa9f5ecc506d646810bd40d9da54582", + "reference": "7bae67520aa9f5ecc506d646810bd40d9da54582", "shasum": "" }, "require": { @@ -11800,8 +11718,8 @@ "ext-filter": "*", "php": "^7.4 || ^8.0", "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.7", - "phpstan/phpdoc-parser": "^1.7|^2.0", + "phpdocumentor/type-resolver": "^2.0", + "phpstan/phpdoc-parser": "^2.0", "webmozart/assert": "^1.9.1 || ^2" }, "require-dev": { @@ -11811,7 +11729,8 @@ "phpstan/phpstan-mockery": "^1.1", "phpstan/phpstan-webmozart-assert": "^1.2", "phpunit/phpunit": "^9.5", - "psalm/phar": "^5.26" + "psalm/phar": "^5.26", + "shipmonk/dead-code-detector": "^0.5.1" }, "type": "library", "extra": { @@ -11841,44 +11760,44 @@ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", "support": { "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.6" + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/6.0.3" }, - "time": "2025-12-22T21:13:58+00:00" + "time": "2026-03-18T20:49:53+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "1.12.0", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "92a98ada2b93d9b201a613cb5a33584dde25f195" + "reference": "327a05bbee54120d4786a0dc67aad30226ad4cf9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/92a98ada2b93d9b201a613cb5a33584dde25f195", - "reference": "92a98ada2b93d9b201a613cb5a33584dde25f195", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/327a05bbee54120d4786a0dc67aad30226ad4cf9", + "reference": "327a05bbee54120d4786a0dc67aad30226ad4cf9", "shasum": "" }, "require": { "doctrine/deprecations": "^1.0", - "php": "^7.3 || ^8.0", + "php": "^7.4 || ^8.0", "phpdocumentor/reflection-common": "^2.0", - "phpstan/phpdoc-parser": "^1.18|^2.0" + "phpstan/phpdoc-parser": "^2.0" }, "require-dev": { "ext-tokenizer": "*", "phpbench/phpbench": "^1.2", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-phpunit": "^1.1", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-phpunit": "^2.0", "phpunit/phpunit": "^9.5", - "rector/rector": "^0.13.9", - "vimeo/psalm": "^4.25" + "psalm/phar": "^4" }, "type": "library", "extra": { "branch-alias": { - "dev-1.x": "1.x-dev" + "dev-1.x": "1.x-dev", + "dev-2.x": "2.x-dev" } }, "autoload": { @@ -11899,17 +11818,17 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.12.0" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/2.0.0" }, - "time": "2025-11-21T15:09:14+00:00" + "time": "2026-01-06T21:53:42+00:00" }, { "name": "phpstan/phpstan", - "version": "2.1.40", + "version": "2.1.42", "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/9b2c7aeb83a75d8680ea5e7c9b7fca88052b766b", - "reference": "9b2c7aeb83a75d8680ea5e7c9b7fca88052b766b", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/1279e1ce86ba768f0780c9d889852b4e02ff40d0", + "reference": "1279e1ce86ba768f0780c9d889852b4e02ff40d0", "shasum": "" }, "require": { @@ -11954,7 +11873,7 @@ "type": "github" } ], - "time": "2026-02-23T15:04:35+00:00" + "time": "2026-03-17T14:58:32+00:00" }, { "name": "phpunit/php-code-coverage", @@ -12304,16 +12223,16 @@ }, { "name": "phpunit/phpunit", - "version": "12.5.12", + "version": "12.5.14", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "418e06b3b46b0d54bad749ff4907fc7dfb530199" + "reference": "47283cfd98d553edcb1353591f4e255dc1bb61f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/418e06b3b46b0d54bad749ff4907fc7dfb530199", - "reference": "418e06b3b46b0d54bad749ff4907fc7dfb530199", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/47283cfd98d553edcb1353591f4e255dc1bb61f0", + "reference": "47283cfd98d553edcb1353591f4e255dc1bb61f0", "shasum": "" }, "require": { @@ -12382,7 +12301,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/12.5.12" + "source": "https://github.com/sebastianbergmann/phpunit/tree/12.5.14" }, "funding": [ { @@ -12406,7 +12325,7 @@ "type": "tidelift" } ], - "time": "2026-02-16T08:34:36+00:00" + "time": "2026-02-18T12:38:40+00:00" }, { "name": "revolt/event-loop", @@ -12768,16 +12687,16 @@ }, { "name": "sebastian/environment", - "version": "8.0.3", + "version": "8.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "24a711b5c916efc6d6e62aa65aa2ec98fef77f68" + "reference": "7b8842c2d8e85d0c3a5831236bf5869af6ab2a11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/24a711b5c916efc6d6e62aa65aa2ec98fef77f68", - "reference": "24a711b5c916efc6d6e62aa65aa2ec98fef77f68", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/7b8842c2d8e85d0c3a5831236bf5869af6ab2a11", + "reference": "7b8842c2d8e85d0c3a5831236bf5869af6ab2a11", "shasum": "" }, "require": { @@ -12820,7 +12739,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", "security": "https://github.com/sebastianbergmann/environment/security/policy", - "source": "https://github.com/sebastianbergmann/environment/tree/8.0.3" + "source": "https://github.com/sebastianbergmann/environment/tree/8.0.4" }, "funding": [ { @@ -12840,7 +12759,7 @@ "type": "tidelift" } ], - "time": "2025-08-12T14:11:56+00:00" + "time": "2026-03-15T07:05:40+00:00" }, { "name": "sebastian/exporter", @@ -13431,16 +13350,16 @@ }, { "name": "symfony/filesystem", - "version": "v8.0.1", + "version": "v8.0.6", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "d937d400b980523dc9ee946bb69972b5e619058d" + "reference": "7bf9162d7a0dff98d079b72948508fa48018a770" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/d937d400b980523dc9ee946bb69972b5e619058d", - "reference": "d937d400b980523dc9ee946bb69972b5e619058d", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/7bf9162d7a0dff98d079b72948508fa48018a770", + "reference": "7bf9162d7a0dff98d079b72948508fa48018a770", "shasum": "" }, "require": { @@ -13477,7 +13396,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v8.0.1" + "source": "https://github.com/symfony/filesystem/tree/v8.0.6" }, "funding": [ { @@ -13497,20 +13416,20 @@ "type": "tidelift" } ], - "time": "2025-12-01T09:13:36+00:00" + "time": "2026-02-25T16:59:43+00:00" }, { "name": "symfony/serializer", - "version": "v8.0.5", + "version": "v8.0.7", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "867a38a1927d23a503f7248aa182032c6ea42702" + "reference": "18bbaf7317e33e7e4bcd7ef281357ec4335fc900" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/867a38a1927d23a503f7248aa182032c6ea42702", - "reference": "867a38a1927d23a503f7248aa182032c6ea42702", + "url": "https://api.github.com/repos/symfony/serializer/zipball/18bbaf7317e33e7e4bcd7ef281357ec4335fc900", + "reference": "18bbaf7317e33e7e4bcd7ef281357ec4335fc900", "shasum": "" }, "require": { @@ -13518,12 +13437,13 @@ "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "phpdocumentor/reflection-docblock": "<5.2|>=6", + "phpdocumentor/reflection-docblock": "<5.2|>=7", "phpdocumentor/type-resolver": "<1.5.1", - "symfony/property-info": "<7.3" + "symfony/property-info": "<7.4", + "symfony/type-info": "<7.4" }, "require-dev": { - "phpdocumentor/reflection-docblock": "^5.2", + "phpdocumentor/reflection-docblock": "^5.2|^6.0", "phpstan/phpdoc-parser": "^1.0|^2.0", "seld/jsonlint": "^1.10", "symfony/cache": "^7.4|^8.0", @@ -13573,7 +13493,7 @@ "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/serializer/tree/v8.0.5" + "source": "https://github.com/symfony/serializer/tree/v8.0.7" }, "funding": [ { @@ -13593,20 +13513,20 @@ "type": "tidelift" } ], - "time": "2026-01-27T09:06:43+00:00" + "time": "2026-03-06T13:17:40+00:00" }, { "name": "symfony/validator", - "version": "v8.0.5", + "version": "v8.0.7", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "ba171e89ee2d01c24c1d8201d59ec595ef4adba1" + "reference": "04f7111e6f246d8211081fdc76e34b1298a9fc27" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/ba171e89ee2d01c24c1d8201d59ec595ef4adba1", - "reference": "ba171e89ee2d01c24c1d8201d59ec595ef4adba1", + "url": "https://api.github.com/repos/symfony/validator/zipball/04f7111e6f246d8211081fdc76e34b1298a9fc27", + "reference": "04f7111e6f246d8211081fdc76e34b1298a9fc27", "shasum": "" }, "require": { @@ -13617,7 +13537,8 @@ }, "conflict": { "doctrine/lexer": "<1.1", - "symfony/doctrine-bridge": "<7.4" + "symfony/doctrine-bridge": "<7.4", + "symfony/expression-language": "<7.4" }, "require-dev": { "egulias/email-validator": "^2.1.10|^3|^4", @@ -13667,7 +13588,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v8.0.5" + "source": "https://github.com/symfony/validator/tree/v8.0.7" }, "funding": [ { @@ -13687,20 +13608,20 @@ "type": "tidelift" } ], - "time": "2026-01-27T09:06:10+00:00" + "time": "2026-03-06T13:17:40+00:00" }, { "name": "symfony/yaml", - "version": "v8.0.1", + "version": "v8.0.6", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "7a1a90ba1df6e821a6b53c4cabdc32a56cabfb14" + "reference": "5f006c50a981e1630bbb70ad409c5d85f9a716e0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/7a1a90ba1df6e821a6b53c4cabdc32a56cabfb14", - "reference": "7a1a90ba1df6e821a6b53c4cabdc32a56cabfb14", + "url": "https://api.github.com/repos/symfony/yaml/zipball/5f006c50a981e1630bbb70ad409c5d85f9a716e0", + "reference": "5f006c50a981e1630bbb70ad409c5d85f9a716e0", "shasum": "" }, "require": { @@ -13742,7 +13663,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v8.0.1" + "source": "https://github.com/symfony/yaml/tree/v8.0.6" }, "funding": [ { @@ -13762,7 +13683,7 @@ "type": "tidelift" } ], - "time": "2025-12-04T18:17:06+00:00" + "time": "2026-02-09T10:14:57+00:00" }, { "name": "ta-tikoma/phpunit-architecture-test", @@ -13825,16 +13746,16 @@ }, { "name": "testcontainers/testcontainers", - "version": "1.0.4", + "version": "1.0.8", "source": { "type": "git", "url": "https://github.com/testcontainers/testcontainers-php.git", - "reference": "f78f10d283477cf8d3a7ceee34fb4449d1522f0e" + "reference": "266f0beca7bfc654b763c97b6ba7d228eb4a3d8e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/testcontainers/testcontainers-php/zipball/f78f10d283477cf8d3a7ceee34fb4449d1522f0e", - "reference": "f78f10d283477cf8d3a7ceee34fb4449d1522f0e", + "url": "https://api.github.com/repos/testcontainers/testcontainers-php/zipball/266f0beca7bfc654b763c97b6ba7d228eb4a3d8e", + "reference": "266f0beca7bfc654b763c97b6ba7d228eb4a3d8e", "shasum": "" }, "require": { @@ -13844,7 +13765,6 @@ }, "require-dev": { "brianium/paratest": "^6.11", - "ext-mongodb": "*", "ext-pdo": "*", "ext-pdo_mysql": "*", "ext-pdo_pgsql": "*", @@ -13855,6 +13775,9 @@ "phpunit/phpunit": "^9.5", "predis/predis": "^3.0 || ^2.0" }, + "suggest": { + "ext-mongodb": "Required for MongoDB container support" + }, "type": "library", "autoload": { "psr-4": { @@ -13878,9 +13801,9 @@ ], "support": { "issues": "https://github.com/testcontainers/testcontainers-php/issues", - "source": "https://github.com/testcontainers/testcontainers-php/tree/1.0.4" + "source": "https://github.com/testcontainers/testcontainers-php/tree/1.0.8" }, - "time": "2025-12-27T08:07:16+00:00" + "time": "2026-03-12T05:59:42+00:00" }, { "name": "theseer/tokenizer", @@ -13991,16 +13914,16 @@ }, { "name": "webmozart/assert", - "version": "2.1.5", + "version": "2.1.6", "source": { "type": "git", "url": "https://github.com/webmozarts/assert.git", - "reference": "79155f94852fa27e2f73b459f6503f5e87e2c188" + "reference": "ff31ad6efc62e66e518fbab1cde3453d389bcdc8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/79155f94852fa27e2f73b459f6503f5e87e2c188", - "reference": "79155f94852fa27e2f73b459f6503f5e87e2c188", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/ff31ad6efc62e66e518fbab1cde3453d389bcdc8", + "reference": "ff31ad6efc62e66e518fbab1cde3453d389bcdc8", "shasum": "" }, "require": { @@ -14047,9 +13970,9 @@ ], "support": { "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/2.1.5" + "source": "https://github.com/webmozarts/assert/tree/2.1.6" }, - "time": "2026-02-18T14:09:36+00:00" + "time": "2026-02-27T10:28:38+00:00" } ], "aliases": [], @@ -14058,7 +13981,7 @@ "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": "^8.2" + "php": "^8.3" }, "platform-dev": {}, "plugin-api-version": "2.9.0" diff --git a/config/auth.php b/config/auth.php index 7d1eb0de..d7568ff1 100644 --- a/config/auth.php +++ b/config/auth.php @@ -1,5 +1,7 @@ [ 'users' => [ 'driver' => 'eloquent', - 'model' => env('AUTH_MODEL', App\Models\User::class), + 'model' => env('AUTH_MODEL', User::class), ], // 'users' => [ diff --git a/config/cache.php b/config/cache.php index b32aead2..c68acdfc 100644 --- a/config/cache.php +++ b/config/cache.php @@ -114,4 +114,17 @@ return [ 'prefix' => env('CACHE_PREFIX', Str::slug((string) env('APP_NAME', 'laravel')).'-cache-'), + /* + |-------------------------------------------------------------------------- + | Serializable Classes + |-------------------------------------------------------------------------- + | + | This value determines the classes that can be unserialized from cache + | storage. By default, no PHP classes will be unserialized from your + | cache to prevent gadget chain attacks if your APP_KEY is leaked. + | + */ + + 'serializable_classes' => false, + ]; diff --git a/database/factories/AccountBalanceFactory.php b/database/factories/AccountBalanceFactory.php index 603b6200..5c5aebf0 100644 --- a/database/factories/AccountBalanceFactory.php +++ b/database/factories/AccountBalanceFactory.php @@ -2,10 +2,12 @@ namespace Database\Factories; +use App\Models\Account; +use App\Models\AccountBalance; use Illuminate\Database\Eloquent\Factories\Factory; /** - * @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\AccountBalance> + * @extends Factory */ class AccountBalanceFactory extends Factory { @@ -17,7 +19,7 @@ class AccountBalanceFactory extends Factory public function definition(): array { return [ - 'account_id' => \App\Models\Account::factory(), + 'account_id' => Account::factory(), 'balance_date' => fake()->date(), 'balance' => fake()->numberBetween(100000, 10000000), ]; diff --git a/database/factories/AccountFactory.php b/database/factories/AccountFactory.php index 985d5528..487296b0 100644 --- a/database/factories/AccountFactory.php +++ b/database/factories/AccountFactory.php @@ -3,13 +3,14 @@ namespace Database\Factories; use App\Enums\AccountType; +use App\Models\Account; use App\Models\Bank; use App\Models\BankingConnection; use App\Models\User; use Illuminate\Database\Eloquent\Factories\Factory; /** - * @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Account> + * @extends Factory */ class AccountFactory extends Factory { diff --git a/database/factories/AutomationRuleFactory.php b/database/factories/AutomationRuleFactory.php index 0973e56d..ad327899 100644 --- a/database/factories/AutomationRuleFactory.php +++ b/database/factories/AutomationRuleFactory.php @@ -2,10 +2,11 @@ namespace Database\Factories; +use App\Models\AutomationRule; use Illuminate\Database\Eloquent\Factories\Factory; /** - * @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\AutomationRule> + * @extends Factory */ class AutomationRuleFactory extends Factory { diff --git a/database/factories/BankFactory.php b/database/factories/BankFactory.php index 283fdc19..d5db3af5 100644 --- a/database/factories/BankFactory.php +++ b/database/factories/BankFactory.php @@ -2,10 +2,11 @@ namespace Database\Factories; +use App\Models\Bank; use Illuminate\Database\Eloquent\Factories\Factory; /** - * @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Bank> + * @extends Factory */ class BankFactory extends Factory { diff --git a/database/factories/BankingConnectionFactory.php b/database/factories/BankingConnectionFactory.php index 07cada1e..2a286c1b 100644 --- a/database/factories/BankingConnectionFactory.php +++ b/database/factories/BankingConnectionFactory.php @@ -3,11 +3,12 @@ namespace Database\Factories; use App\Enums\BankingConnectionStatus; +use App\Models\BankingConnection; use App\Models\User; use Illuminate\Database\Eloquent\Factories\Factory; /** - * @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\BankingConnection> + * @extends Factory */ class BankingConnectionFactory extends Factory { diff --git a/database/factories/BudgetFactory.php b/database/factories/BudgetFactory.php index 8144b247..4611ce51 100644 --- a/database/factories/BudgetFactory.php +++ b/database/factories/BudgetFactory.php @@ -3,11 +3,12 @@ namespace Database\Factories; use App\Enums\BudgetPeriodType; +use App\Models\Budget; use App\Models\User; use Illuminate\Database\Eloquent\Factories\Factory; /** - * @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Budget> + * @extends Factory */ class BudgetFactory extends Factory { diff --git a/database/factories/BudgetPeriodFactory.php b/database/factories/BudgetPeriodFactory.php index 09be167c..f29129ee 100644 --- a/database/factories/BudgetPeriodFactory.php +++ b/database/factories/BudgetPeriodFactory.php @@ -3,10 +3,11 @@ namespace Database\Factories; use App\Models\Budget; +use App\Models\BudgetPeriod; use Illuminate\Database\Eloquent\Factories\Factory; /** - * @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\BudgetPeriod> + * @extends Factory */ class BudgetPeriodFactory extends Factory { diff --git a/database/factories/BudgetTransactionFactory.php b/database/factories/BudgetTransactionFactory.php index d9e34b93..24540838 100644 --- a/database/factories/BudgetTransactionFactory.php +++ b/database/factories/BudgetTransactionFactory.php @@ -3,11 +3,12 @@ namespace Database\Factories; use App\Models\BudgetPeriodAllocation; +use App\Models\BudgetTransaction; use App\Models\Transaction; use Illuminate\Database\Eloquent\Factories\Factory; /** - * @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\BudgetTransaction> + * @extends Factory */ class BudgetTransactionFactory extends Factory { diff --git a/database/factories/CategoryFactory.php b/database/factories/CategoryFactory.php index ca81a41c..e119de76 100644 --- a/database/factories/CategoryFactory.php +++ b/database/factories/CategoryFactory.php @@ -4,11 +4,12 @@ namespace Database\Factories; use App\Enums\CategoryCashflowDirection; use App\Enums\CategoryType; +use App\Models\Category; use App\Models\User; use Illuminate\Database\Eloquent\Factories\Factory; /** - * @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Category> + * @extends Factory */ class CategoryFactory extends Factory { diff --git a/database/factories/ExchangeRateFactory.php b/database/factories/ExchangeRateFactory.php index b681251d..da05fabe 100644 --- a/database/factories/ExchangeRateFactory.php +++ b/database/factories/ExchangeRateFactory.php @@ -2,10 +2,11 @@ namespace Database\Factories; +use App\Models\ExchangeRate; use Illuminate\Database\Eloquent\Factories\Factory; /** - * @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\ExchangeRate> + * @extends Factory */ class ExchangeRateFactory extends Factory { diff --git a/database/factories/LabelFactory.php b/database/factories/LabelFactory.php index 08656762..9974de54 100644 --- a/database/factories/LabelFactory.php +++ b/database/factories/LabelFactory.php @@ -2,11 +2,12 @@ namespace Database\Factories; +use App\Models\Label; use App\Models\User; use Illuminate\Database\Eloquent\Factories\Factory; /** - * @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Label> + * @extends Factory