diff --git a/app/Http/Controllers/Api/V1/TimeEntryController.php b/app/Http/Controllers/Api/V1/TimeEntryController.php index c06bdd34..cd250595 100644 --- a/app/Http/Controllers/Api/V1/TimeEntryController.php +++ b/app/Http/Controllers/Api/V1/TimeEntryController.php @@ -16,6 +16,7 @@ use Illuminate\Auth\Access\AuthorizationException; use Illuminate\Http\JsonResponse; use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\Log; class TimeEntryController extends Controller { @@ -41,22 +42,60 @@ class TimeEntryController extends Controller } $timeEntriesQuery = TimeEntry::query() - ->whereBelongsTo($organization, 'organization'); + ->whereBelongsTo($organization, 'organization') + ->orderBy('start', 'desc'); if ($request->has('before')) { - + $timeEntriesQuery->whereDate('start', '<', $request->input('before')); } if ($request->has('after')) { + $timeEntriesQuery->whereDate('start', '>', $request->input('after')); + } + if ($request->has('active') && (bool) $request->get('active') === true) { + $timeEntriesQuery->whereNull('end'); } if ($request->has('user_id')) { $timeEntriesQuery->where('user_id', $request->input('user_id')); } + $limit = $request->has('limit') ? (int) $request->get('limit', 150) : null; + if ($limit !== null) { + $timeEntriesQuery->limit($limit); + } + $timeEntries = $timeEntriesQuery->get(); + if ($timeEntries->count() === $limit && $request->has('only_full_dates') && (bool) $request->get('only_full_dates') === true) { + $lastDate = null; + /** @var TimeEntry $timeEntry */ + foreach ($timeEntries as $timeEntry) { + if ($lastDate === null || $lastDate->diffInDays($timeEntry->start->startOfDay()) > 0) { + $lastDate = $timeEntry->start->startOfDay(); + } + } + + $timeEntries = $timeEntries->filter(function (TimeEntry $timeEntry) use ($lastDate): bool { + return $timeEntry->end === null || $timeEntry->start->toDateString() !== $lastDate->toDateString(); + }); + // TODO: fix edge case with current time entry that is more than one day running + + if ($timeEntries->count() === 0) { + Log::warning('User has has more than '.$limit.' time entries on one date', [ + 'date' => $lastDate->toDateString(), + 'user_id' => $request->input('user_id'), + 'auth_user_id' => Auth::id(), + 'limit' => $limit, + ]); + $timeEntries = $timeEntriesQuery + ->limit(5000) + ->whereDate('start', '=', $lastDate->toDateString()) + ->get(); + } + } + return new TimeEntryCollection($timeEntries); } @@ -73,8 +112,8 @@ class TimeEntryController extends Controller $this->checkPermission($organization, 'time-entries:create:all'); } - if ($request->get('end') === null && TimeEntry::where('user_id', $request->get('user_id'))->where('end', null)->exists()) { - // TODO: documentation + if ($request->get('end') === null && TimeEntry::query()->where('user_id', $request->get('user_id'))->where('end', null)->exists()) { + // TODO: API documentation throw new TimeEntryStillRunning('User already has an active time entry'); } diff --git a/app/Http/Requests/V1/TimeEntry/TimeEntryIndexRequest.php b/app/Http/Requests/V1/TimeEntry/TimeEntryIndexRequest.php index 7e414b0a..0d3bb8be 100644 --- a/app/Http/Requests/V1/TimeEntry/TimeEntryIndexRequest.php +++ b/app/Http/Requests/V1/TimeEntry/TimeEntryIndexRequest.php @@ -24,6 +24,7 @@ class TimeEntryIndexRequest extends FormRequest public function rules(): array { return [ + // Filter by user ID 'user_id' => [ 'string', 'uuid', @@ -35,16 +36,32 @@ class TimeEntryIndexRequest extends FormRequest }); }), ], + // Filter only time entries that have a start date before (not including) the given date (example: 2021-12-31) 'before' => [ 'nullable', 'string', - 'date_format:Y-m-d', + 'date_format:Y-m-d\TH:i:s\Z', 'before:after', ], + // Filter only time entries that have a start date after (not including) the given date (example: 2021-12-31) 'after' => [ 'nullable', 'string', - 'date_format:Y-m-d', + 'date_format:Y-m-d\TH:i:s\Z', + ], + // Filter only time entries that are active (have no end date, are still running) + 'active' => [ + 'boolean', + ], + // Limit the number of returned time entries + 'limit' => [ + 'integer', + 'min:1', + 'max:500', + ], + // Filter makes sure that only time entries of a whole date are returned + 'only_full_dates' => [ + 'boolean', ], ]; } diff --git a/app/Http/Requests/V1/TimeEntry/TimeEntryStoreRequest.php b/app/Http/Requests/V1/TimeEntry/TimeEntryStoreRequest.php index e88050c9..0cbaeaf9 100644 --- a/app/Http/Requests/V1/TimeEntry/TimeEntryStoreRequest.php +++ b/app/Http/Requests/V1/TimeEntry/TimeEntryStoreRequest.php @@ -26,6 +26,7 @@ class TimeEntryStoreRequest extends FormRequest public function rules(): array { return [ + // ID of the user that the time entry should belong to 'user_id' => [ 'required', 'string', @@ -38,6 +39,7 @@ class TimeEntryStoreRequest extends FormRequest }); }), ], + // ID of the task that the time entry should belong to 'task_id' => [ 'nullable', 'string', diff --git a/app/Http/Requests/V1/TimeEntry/TimeEntryUpdateRequest.php b/app/Http/Requests/V1/TimeEntry/TimeEntryUpdateRequest.php index 4ab7525c..f044ce72 100644 --- a/app/Http/Requests/V1/TimeEntry/TimeEntryUpdateRequest.php +++ b/app/Http/Requests/V1/TimeEntry/TimeEntryUpdateRequest.php @@ -25,6 +25,7 @@ class TimeEntryUpdateRequest extends FormRequest public function rules(): array { return [ + // ID of the task that the time entry should belong to 'task_id' => [ 'nullable', 'string', diff --git a/app/Http/Resources/V1/BaseResource.php b/app/Http/Resources/V1/BaseResource.php new file mode 100644 index 00000000..5ffefb03 --- /dev/null +++ b/app/Http/Resources/V1/BaseResource.php @@ -0,0 +1,16 @@ +toIso8601ZuluString(); + } +} diff --git a/app/Http/Resources/V1/Project/ProjectResource.php b/app/Http/Resources/V1/Project/ProjectResource.php index e6f02182..218ab6c7 100644 --- a/app/Http/Resources/V1/Project/ProjectResource.php +++ b/app/Http/Resources/V1/Project/ProjectResource.php @@ -4,25 +4,31 @@ declare(strict_types=1); namespace App\Http\Resources\V1\Project; +use App\Http\Resources\V1\BaseResource; use App\Models\Project; use Illuminate\Http\Request; -use Illuminate\Http\Resources\Json\JsonResource; /** * @property Project $resource */ -class ProjectResource extends JsonResource +class ProjectResource extends BaseResource { /** * Transform the resource into an array. * - * @return array + * @return array */ public function toArray(Request $request): array { return [ + /** @var string $id ID of project */ 'id' => $this->resource->id, + /** @var string $name Name of project */ 'name' => $this->resource->name, + /** @var string $color Color of project */ + 'color' => $this->resource->color, + /** @var string|null $client_id ID of client */ + 'client_id' => $this->resource->client_id, ]; } } diff --git a/app/Http/Resources/V1/TimeEntry/TimeEntryResource.php b/app/Http/Resources/V1/TimeEntry/TimeEntryResource.php index 3dbfef21..9003dae1 100644 --- a/app/Http/Resources/V1/TimeEntry/TimeEntryResource.php +++ b/app/Http/Resources/V1/TimeEntry/TimeEntryResource.php @@ -4,25 +4,45 @@ declare(strict_types=1); namespace App\Http\Resources\V1\TimeEntry; +use App\Http\Resources\V1\BaseResource; use App\Models\TimeEntry; use Illuminate\Http\Request; -use Illuminate\Http\Resources\Json\JsonResource; /** * @property TimeEntry $resource */ -class TimeEntryResource extends JsonResource +class TimeEntryResource extends BaseResource { /** * Transform the resource into an array. * - * @return array + * @return array> */ public function toArray(Request $request): array { return [ /** @var string $id ID of time entry */ 'id' => $this->resource->id, + /** + * @var string $start Start of time entry (ISO 8601 format, UTC timezone, example: 2024-02-26T17:17:17Z) + */ + 'start' => $this->formatDateTime($this->resource->start), + /** + * @var string|null $end End of time entry (ISO 8601 format, UTC timezone, example: 2024-02-26T17:17:17Z) + */ + 'end' => $this->formatDateTime($this->resource->start), + /** @var int $duration Duration of time entry in seconds */ + 'duration' => $this->resource->getDuration()?->seconds, + /** @var string|null $description Description of time entry */ + 'description' => $this->resource->description, + /** @var string|null $task_id ID of task */ + 'task_id' => $this->resource->task_id, + /** @var string|null $project_id ID of project */ + 'project_id' => $this->resource->project_id, + /** @var string $user_id ID of user */ + 'user_id' => $this->resource->user_id, + /** @var array $tags List of tag IDs */ + 'tags' => $this->resource->tags, ]; } } diff --git a/composer.json b/composer.json index 90109f5c..79487081 100644 --- a/composer.json +++ b/composer.json @@ -5,7 +5,7 @@ "keywords": [], "license": "AGPL-3.0-or-later", "require": { - "php": "8.1.*", + "php": "8.3.*", "dedoc/scramble": "^0.8.5", "filament/filament": "^3.2", "guzzlehttp/guzzle": "^7.2", @@ -13,7 +13,7 @@ "korridor/laravel-model-validation-rules": "^3.0", "laravel/framework": "^10.10", "laravel/jetstream": "^4.2", - "laravel/passport": "*", + "laravel/passport": "^11.10.2", "laravel/tinker": "^2.8", "pxlrbt/filament-environment-indicator": "^2.0", "tightenco/ziggy": "^1.0", @@ -30,7 +30,8 @@ "mockery/mockery": "^1.4.4", "nunomaduro/collision": "^7.0", "phpunit/phpunit": "^10.1", - "spatie/laravel-ignition": "^2.0" + "spatie/laravel-ignition": "^2.0", + "timacdonald/log-fake": "^2.1" }, "autoload": { "psr-4": { diff --git a/composer.lock b/composer.lock index a2685a97..2db656b4 100644 --- a/composer.lock +++ b/composer.lock @@ -4,32 +4,32 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "a5ece6a5dc66b5813bf1d4dd3947c0ee", + "content-hash": "e83929e68d256367652d91e43a79288e", "packages": [ { "name": "anourvalar/eloquent-serialize", - "version": "1.2.17", + "version": "1.2.18", "source": { "type": "git", "url": "https://github.com/AnourValar/eloquent-serialize.git", - "reference": "1fcfdd5f41a0d2e7c8cf1d37e7227357bb827aef" + "reference": "ea37278f305215bb763d8e901cd8fd448462a8af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/AnourValar/eloquent-serialize/zipball/1fcfdd5f41a0d2e7c8cf1d37e7227357bb827aef", - "reference": "1fcfdd5f41a0d2e7c8cf1d37e7227357bb827aef", + "url": "https://api.github.com/repos/AnourValar/eloquent-serialize/zipball/ea37278f305215bb763d8e901cd8fd448462a8af", + "reference": "ea37278f305215bb763d8e901cd8fd448462a8af", "shasum": "" }, "require": { - "laravel/framework": "^6.0|^7.0|^8.0|^9.0|^10.0", + "laravel/framework": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", "php": "^7.1|^8.0" }, "require-dev": { "friendsofphp/php-cs-fixer": "^3.26", "laravel/legacy-factories": "^1.1", - "orchestra/testbench": "~3.6.0|~3.7.0|~3.8.0|^4.0|^5.0|^6.0|^7.0|^8.0", + "orchestra/testbench": "~3.6.0|~3.7.0|~3.8.0|^4.0|^5.0|^6.0|^7.0|^8.0|^9.0", "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^9.5", + "phpunit/phpunit": "^10.5", "psalm/plugin-laravel": "^2.8", "squizlabs/php_codesniffer": "^3.7" }, @@ -68,9 +68,9 @@ ], "support": { "issues": "https://github.com/AnourValar/eloquent-serialize/issues", - "source": "https://github.com/AnourValar/eloquent-serialize/tree/1.2.17" + "source": "https://github.com/AnourValar/eloquent-serialize/tree/1.2.18" }, - "time": "2023-12-06T15:54:01+00:00" + "time": "2024-02-25T11:04:10+00:00" }, { "name": "bacon/bacon-qr-code", @@ -128,26 +128,26 @@ }, { "name": "blade-ui-kit/blade-heroicons", - "version": "2.2.1", + "version": "2.3.0", "source": { "type": "git", "url": "https://github.com/blade-ui-kit/blade-heroicons.git", - "reference": "bcf4be8f6bbde0bb4c23f2e3fb189b88dec1580a" + "reference": "a265dbcf2a098121aad05752d0bba9f59022e4ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/blade-ui-kit/blade-heroicons/zipball/bcf4be8f6bbde0bb4c23f2e3fb189b88dec1580a", - "reference": "bcf4be8f6bbde0bb4c23f2e3fb189b88dec1580a", + "url": "https://api.github.com/repos/blade-ui-kit/blade-heroicons/zipball/a265dbcf2a098121aad05752d0bba9f59022e4ba", + "reference": "a265dbcf2a098121aad05752d0bba9f59022e4ba", "shasum": "" }, "require": { - "blade-ui-kit/blade-icons": "^1.1", - "illuminate/support": "^9.0|^10.0", + "blade-ui-kit/blade-icons": "^1.6", + "illuminate/support": "^9.0|^10.0|^11.0", "php": "^8.0" }, "require-dev": { - "orchestra/testbench": "^7.0|^8.0", - "phpunit/phpunit": "^9.0" + "orchestra/testbench": "^7.0|^8.0|^9.0", + "phpunit/phpunit": "^9.0|^10.5|^11.0" }, "type": "library", "extra": { @@ -181,7 +181,7 @@ ], "support": { "issues": "https://github.com/blade-ui-kit/blade-heroicons/issues", - "source": "https://github.com/blade-ui-kit/blade-heroicons/tree/2.2.1" + "source": "https://github.com/blade-ui-kit/blade-heroicons/tree/2.3.0" }, "funding": [ { @@ -193,35 +193,35 @@ "type": "paypal" } ], - "time": "2023-12-18T20:44:03+00:00" + "time": "2024-02-07T16:33:46+00:00" }, { "name": "blade-ui-kit/blade-icons", - "version": "1.5.3", + "version": "1.6.0", "source": { "type": "git", "url": "https://github.com/blade-ui-kit/blade-icons.git", - "reference": "b5e6603218e2347ac81cb780bc6f71c8c3b31f5b" + "reference": "89660d93f9897d231e9113ba203cd17f4c5efade" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/blade-ui-kit/blade-icons/zipball/b5e6603218e2347ac81cb780bc6f71c8c3b31f5b", - "reference": "b5e6603218e2347ac81cb780bc6f71c8c3b31f5b", + "url": "https://api.github.com/repos/blade-ui-kit/blade-icons/zipball/89660d93f9897d231e9113ba203cd17f4c5efade", + "reference": "89660d93f9897d231e9113ba203cd17f4c5efade", "shasum": "" }, "require": { - "illuminate/contracts": "^8.0|^9.0|^10.0", - "illuminate/filesystem": "^8.0|^9.0|^10.0", - "illuminate/support": "^8.0|^9.0|^10.0", - "illuminate/view": "^8.0|^9.0|^10.0", + "illuminate/contracts": "^8.0|^9.0|^10.0|^11.0", + "illuminate/filesystem": "^8.0|^9.0|^10.0|^11.0", + "illuminate/support": "^8.0|^9.0|^10.0|^11.0", + "illuminate/view": "^8.0|^9.0|^10.0|^11.0", "php": "^7.4|^8.0", - "symfony/console": "^5.3|^6.0", - "symfony/finder": "^5.3|^6.0" + "symfony/console": "^5.3|^6.0|^7.0", + "symfony/finder": "^5.3|^6.0|^7.0" }, "require-dev": { - "mockery/mockery": "^1.3", - "orchestra/testbench": "^6.0|^7.0|^8.0", - "phpunit/phpunit": "^9.0" + "mockery/mockery": "^1.5.1", + "orchestra/testbench": "^6.0|^7.0|^8.0|^9.0", + "phpunit/phpunit": "^9.0|^10.5|^11.0" }, "bin": [ "bin/blade-icons-generate" @@ -274,7 +274,7 @@ "type": "paypal" } ], - "time": "2023-10-18T10:50:13+00:00" + "time": "2024-02-07T16:09:20+00:00" }, { "name": "brick/math", @@ -867,16 +867,16 @@ }, { "name": "doctrine/dbal", - "version": "3.8.0", + "version": "3.8.2", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "d244f2e6e6bf32bff5174e6729b57214923ecec9" + "reference": "a19a1d05ca211f41089dffcc387733a6875196cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/d244f2e6e6bf32bff5174e6729b57214923ecec9", - "reference": "d244f2e6e6bf32bff5174e6729b57214923ecec9", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/a19a1d05ca211f41089dffcc387733a6875196cb", + "reference": "a19a1d05ca211f41089dffcc387733a6875196cb", "shasum": "" }, "require": { @@ -892,9 +892,9 @@ "doctrine/coding-standard": "12.0.0", "fig/log-test": "^1", "jetbrains/phpstorm-stubs": "2023.1", - "phpstan/phpstan": "1.10.56", + "phpstan/phpstan": "1.10.57", "phpstan/phpstan-strict-rules": "^1.5", - "phpunit/phpunit": "9.6.15", + "phpunit/phpunit": "9.6.16", "psalm/plugin-phpunit": "0.18.4", "slevomat/coding-standard": "8.13.1", "squizlabs/php_codesniffer": "3.8.1", @@ -960,7 +960,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.8.0" + "source": "https://github.com/doctrine/dbal/tree/3.8.2" }, "funding": [ { @@ -976,7 +976,7 @@ "type": "tidelift" } ], - "time": "2024-01-25T21:44:02+00:00" + "time": "2024-02-12T18:36:36+00:00" }, { "name": "doctrine/deprecations", @@ -1414,16 +1414,16 @@ }, { "name": "filament/actions", - "version": "v3.2.16", + "version": "v3.2.38", "source": { "type": "git", "url": "https://github.com/filamentphp/actions.git", - "reference": "2ad35bd1aad0c72f62e9c5f877989056a39cf012" + "reference": "3e369b846363b990a12b70eb364a37c16100f3cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/actions/zipball/2ad35bd1aad0c72f62e9c5f877989056a39cf012", - "reference": "2ad35bd1aad0c72f62e9c5f877989056a39cf012", + "url": "https://api.github.com/repos/filamentphp/actions/zipball/3e369b846363b990a12b70eb364a37c16100f3cb", + "reference": "3e369b846363b990a12b70eb364a37c16100f3cb", "shasum": "" }, "require": { @@ -1432,10 +1432,10 @@ "filament/infolists": "self.version", "filament/notifications": "self.version", "filament/support": "self.version", - "illuminate/contracts": "^10.0", - "illuminate/database": "^10.0", - "illuminate/support": "^10.0", - "league/csv": "9.11.0", + "illuminate/contracts": "^10.45", + "illuminate/database": "^10.45", + "illuminate/support": "^10.45", + "league/csv": "^9.14", "openspout/openspout": "^4.23", "php": "^8.1", "spatie/laravel-package-tools": "^1.9" @@ -1463,20 +1463,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2024-01-27T23:30:19+00:00" + "time": "2024-02-23T22:25:58+00:00" }, { "name": "filament/filament", - "version": "v3.2.16", + "version": "v3.2.38", "source": { "type": "git", "url": "https://github.com/filamentphp/panels.git", - "reference": "135ee98a43455a8c436367d8c51660d9a8b75ae4" + "reference": "038ccc8f9f9b7f2599799d35498571bb555b27cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/panels/zipball/135ee98a43455a8c436367d8c51660d9a8b75ae4", - "reference": "135ee98a43455a8c436367d8c51660d9a8b75ae4", + "url": "https://api.github.com/repos/filamentphp/panels/zipball/038ccc8f9f9b7f2599799d35498571bb555b27cb", + "reference": "038ccc8f9f9b7f2599799d35498571bb555b27cb", "shasum": "" }, "require": { @@ -1488,16 +1488,16 @@ "filament/support": "self.version", "filament/tables": "self.version", "filament/widgets": "self.version", - "illuminate/auth": "^10.0", - "illuminate/console": "^10.0", - "illuminate/contracts": "^10.0", - "illuminate/cookie": "^10.0", - "illuminate/database": "^10.0", - "illuminate/http": "^10.0", - "illuminate/routing": "^10.0", - "illuminate/session": "^10.0", - "illuminate/support": "^10.0", - "illuminate/view": "^10.0", + "illuminate/auth": "^10.45", + "illuminate/console": "^10.45", + "illuminate/contracts": "^10.45", + "illuminate/cookie": "^10.45", + "illuminate/database": "^10.45", + "illuminate/http": "^10.45", + "illuminate/routing": "^10.45", + "illuminate/session": "^10.45", + "illuminate/support": "^10.45", + "illuminate/view": "^10.45", "php": "^8.1", "spatie/laravel-package-tools": "^1.9" }, @@ -1528,33 +1528,33 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2024-01-27T23:30:21+00:00" + "time": "2024-02-26T20:23:05+00:00" }, { "name": "filament/forms", - "version": "v3.2.16", + "version": "v3.2.38", "source": { "type": "git", "url": "https://github.com/filamentphp/forms.git", - "reference": "693ac4f2413e132501576cc0ca8f8aad636c362e" + "reference": "dddd0e14ccd91e98168051aac80899069a27e4ad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/forms/zipball/693ac4f2413e132501576cc0ca8f8aad636c362e", - "reference": "693ac4f2413e132501576cc0ca8f8aad636c362e", + "url": "https://api.github.com/repos/filamentphp/forms/zipball/dddd0e14ccd91e98168051aac80899069a27e4ad", + "reference": "dddd0e14ccd91e98168051aac80899069a27e4ad", "shasum": "" }, "require": { "danharrin/date-format-converter": "^0.3", "filament/actions": "self.version", "filament/support": "self.version", - "illuminate/console": "^10.0", - "illuminate/contracts": "^10.0", - "illuminate/database": "^10.0", - "illuminate/filesystem": "^10.0", - "illuminate/support": "^10.0", - "illuminate/validation": "^10.0", - "illuminate/view": "^10.0", + "illuminate/console": "^10.45", + "illuminate/contracts": "^10.45", + "illuminate/database": "^10.45", + "illuminate/filesystem": "^10.45", + "illuminate/support": "^10.45", + "illuminate/validation": "^10.45", + "illuminate/view": "^10.45", "php": "^8.1", "spatie/laravel-package-tools": "^1.9" }, @@ -1584,31 +1584,31 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2024-01-27T23:30:18+00:00" + "time": "2024-02-26T20:23:03+00:00" }, { "name": "filament/infolists", - "version": "v3.2.16", + "version": "v3.2.38", "source": { "type": "git", "url": "https://github.com/filamentphp/infolists.git", - "reference": "4ab39e8985cad7f5907b0c162d38023eb9dd402a" + "reference": "049e214811d0511a3b7649376d82683fd710ea1f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/infolists/zipball/4ab39e8985cad7f5907b0c162d38023eb9dd402a", - "reference": "4ab39e8985cad7f5907b0c162d38023eb9dd402a", + "url": "https://api.github.com/repos/filamentphp/infolists/zipball/049e214811d0511a3b7649376d82683fd710ea1f", + "reference": "049e214811d0511a3b7649376d82683fd710ea1f", "shasum": "" }, "require": { "filament/actions": "self.version", "filament/support": "self.version", - "illuminate/console": "^10.0", - "illuminate/contracts": "^10.0", - "illuminate/database": "^10.0", - "illuminate/filesystem": "^10.0", - "illuminate/support": "^10.0", - "illuminate/view": "^10.0", + "illuminate/console": "^10.45", + "illuminate/contracts": "^10.45", + "illuminate/database": "^10.45", + "illuminate/filesystem": "^10.45", + "illuminate/support": "^10.45", + "illuminate/view": "^10.45", "php": "^8.1", "spatie/laravel-package-tools": "^1.9" }, @@ -1635,29 +1635,29 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2024-01-26T12:42:37+00:00" + "time": "2024-02-26T20:22:57+00:00" }, { "name": "filament/notifications", - "version": "v3.2.16", + "version": "v3.2.38", "source": { "type": "git", "url": "https://github.com/filamentphp/notifications.git", - "reference": "c5f4f51d949fafc52643f2be654a4da92422836c" + "reference": "ae0f5c20df16f5ba28d524f3b2b286753db42cf7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/notifications/zipball/c5f4f51d949fafc52643f2be654a4da92422836c", - "reference": "c5f4f51d949fafc52643f2be654a4da92422836c", + "url": "https://api.github.com/repos/filamentphp/notifications/zipball/ae0f5c20df16f5ba28d524f3b2b286753db42cf7", + "reference": "ae0f5c20df16f5ba28d524f3b2b286753db42cf7", "shasum": "" }, "require": { "filament/actions": "self.version", "filament/support": "self.version", - "illuminate/contracts": "^10.0", - "illuminate/filesystem": "^10.0", - "illuminate/notifications": "^10.0", - "illuminate/support": "^10.0", + "illuminate/contracts": "^10.45", + "illuminate/filesystem": "^10.45", + "illuminate/notifications": "^10.45", + "illuminate/support": "^10.45", "php": "^8.1", "spatie/laravel-package-tools": "^1.9" }, @@ -1687,29 +1687,29 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2024-01-19T14:01:21+00:00" + "time": "2024-02-26T20:23:03+00:00" }, { "name": "filament/support", - "version": "v3.2.16", + "version": "v3.2.38", "source": { "type": "git", "url": "https://github.com/filamentphp/support.git", - "reference": "8df5c195047d2849c49c1d20880951f716f111e0" + "reference": "2d2c788d36fea3c115628fac12d3638d52059cd6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/support/zipball/8df5c195047d2849c49c1d20880951f716f111e0", - "reference": "8df5c195047d2849c49c1d20880951f716f111e0", + "url": "https://api.github.com/repos/filamentphp/support/zipball/2d2c788d36fea3c115628fac12d3638d52059cd6", + "reference": "2d2c788d36fea3c115628fac12d3638d52059cd6", "shasum": "" }, "require": { "blade-ui-kit/blade-heroicons": "^2.2.1", "doctrine/dbal": "^3.2", "ext-intl": "*", - "illuminate/contracts": "^10.0", - "illuminate/support": "^10.0", - "illuminate/view": "^10.0", + "illuminate/contracts": "^10.45", + "illuminate/support": "^10.45", + "illuminate/view": "^10.45", "livewire/livewire": "^3.2.3", "php": "^8.1", "ryangjchandler/blade-capture-directive": "^0.2|^0.3", @@ -1744,32 +1744,32 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2024-01-27T23:30:41+00:00" + "time": "2024-02-26T20:23:16+00:00" }, { "name": "filament/tables", - "version": "v3.2.16", + "version": "v3.2.38", "source": { "type": "git", "url": "https://github.com/filamentphp/tables.git", - "reference": "0b63e4df21b3e6957471ab77ec745cda75e51e85" + "reference": "242a3d6e99bc095b225a145e362e07a3fb92fed1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/tables/zipball/0b63e4df21b3e6957471ab77ec745cda75e51e85", - "reference": "0b63e4df21b3e6957471ab77ec745cda75e51e85", + "url": "https://api.github.com/repos/filamentphp/tables/zipball/242a3d6e99bc095b225a145e362e07a3fb92fed1", + "reference": "242a3d6e99bc095b225a145e362e07a3fb92fed1", "shasum": "" }, "require": { "filament/actions": "self.version", "filament/forms": "self.version", "filament/support": "self.version", - "illuminate/console": "^10.0", - "illuminate/contracts": "^10.0", - "illuminate/database": "^10.0", - "illuminate/filesystem": "^10.0", - "illuminate/support": "^10.0", - "illuminate/view": "^10.0", + "illuminate/console": "^10.45", + "illuminate/contracts": "^10.45", + "illuminate/database": "^10.45", + "illuminate/filesystem": "^10.45", + "illuminate/support": "^10.45", + "illuminate/view": "^10.45", "kirschbaum-development/eloquent-power-joins": "^3.0", "php": "^8.1", "spatie/laravel-package-tools": "^1.9" @@ -1797,20 +1797,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2024-01-27T23:30:50+00:00" + "time": "2024-02-23T22:26:31+00:00" }, { "name": "filament/widgets", - "version": "v3.2.16", + "version": "v3.2.38", "source": { "type": "git", "url": "https://github.com/filamentphp/widgets.git", - "reference": "9fae19f86f50b71b9d47c87305d742ee962af573" + "reference": "3aa945b635745c5731a9728134411d500cf3a30a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/widgets/zipball/9fae19f86f50b71b9d47c87305d742ee962af573", - "reference": "9fae19f86f50b71b9d47c87305d742ee962af573", + "url": "https://api.github.com/repos/filamentphp/widgets/zipball/3aa945b635745c5731a9728134411d500cf3a30a", + "reference": "3aa945b635745c5731a9728134411d500cf3a30a", "shasum": "" }, "require": { @@ -1841,7 +1841,7 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2024-01-15T20:39:18+00:00" + "time": "2024-02-01T11:30:24+00:00" }, { "name": "firebase/php-jwt", @@ -2524,27 +2524,27 @@ }, { "name": "kirschbaum-development/eloquent-power-joins", - "version": "3.4.0", + "version": "3.5.0", "source": { "type": "git", "url": "https://github.com/kirschbaum-development/eloquent-power-joins.git", - "reference": "9238fcb53d777265ee9d8d139810e2cadecde079" + "reference": "13feb3692ab6c0475b2c05de131d5f5822fb250a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/kirschbaum-development/eloquent-power-joins/zipball/9238fcb53d777265ee9d8d139810e2cadecde079", - "reference": "9238fcb53d777265ee9d8d139810e2cadecde079", + "url": "https://api.github.com/repos/kirschbaum-development/eloquent-power-joins/zipball/13feb3692ab6c0475b2c05de131d5f5822fb250a", + "reference": "13feb3692ab6c0475b2c05de131d5f5822fb250a", "shasum": "" }, "require": { - "illuminate/database": "^8.0|^9.0|^10.0", - "illuminate/support": "^8.0|^9.0|^10.0", + "illuminate/database": "^8.0|^9.0|^10.0|^11.0", + "illuminate/support": "^8.0|^9.0|^10.0|^11.0", "php": "^8.0" }, "require-dev": { "laravel/legacy-factories": "^1.0@dev", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0|^8.0", - "phpunit/phpunit": "^8.0|^9.0" + "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0|^8.0|^9.0", + "phpunit/phpunit": "^8.0|^9.0|^10.0" }, "type": "library", "extra": { @@ -2580,9 +2580,9 @@ ], "support": { "issues": "https://github.com/kirschbaum-development/eloquent-power-joins/issues", - "source": "https://github.com/kirschbaum-development/eloquent-power-joins/tree/3.4.0" + "source": "https://github.com/kirschbaum-development/eloquent-power-joins/tree/3.5.0" }, - "time": "2023-12-07T10:44:41+00:00" + "time": "2024-02-13T15:40:14+00:00" }, { "name": "korridor/laravel-model-validation-rules", @@ -2650,16 +2650,16 @@ }, { "name": "laravel/fortify", - "version": "v1.20.0", + "version": "v1.20.1", "source": { "type": "git", "url": "https://github.com/laravel/fortify.git", - "reference": "587a55f906ae4f8448a19019a4b2ee7002d5c001" + "reference": "ab1a76991a32be21448156419ddc7eb4731b0a8b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/fortify/zipball/587a55f906ae4f8448a19019a4b2ee7002d5c001", - "reference": "587a55f906ae4f8448a19019a4b2ee7002d5c001", + "url": "https://api.github.com/repos/laravel/fortify/zipball/ab1a76991a32be21448156419ddc7eb4731b0a8b", + "reference": "ab1a76991a32be21448156419ddc7eb4731b0a8b", "shasum": "" }, "require": { @@ -2710,7 +2710,7 @@ "issues": "https://github.com/laravel/fortify/issues", "source": "https://github.com/laravel/fortify" }, - "time": "2024-01-15T20:07:11+00:00" + "time": "2024-02-08T14:36:46+00:00" }, { "name": "laravel/framework", @@ -2989,16 +2989,16 @@ }, { "name": "laravel/passport", - "version": "v11.10.2", + "version": "v11.10.5", "source": { "type": "git", "url": "https://github.com/laravel/passport.git", - "reference": "27a4f34aaf8b360eb64f53eb9c555ee50d565560" + "reference": "4d81207941d6efc198857847d9e4c17520f28d75" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/passport/zipball/27a4f34aaf8b360eb64f53eb9c555ee50d565560", - "reference": "27a4f34aaf8b360eb64f53eb9c555ee50d565560", + "url": "https://api.github.com/repos/laravel/passport/zipball/4d81207941d6efc198857847d9e4c17520f28d75", + "reference": "4d81207941d6efc198857847d9e4c17520f28d75", "shasum": "" }, "require": { @@ -3063,7 +3063,7 @@ "issues": "https://github.com/laravel/passport/issues", "source": "https://github.com/laravel/passport" }, - "time": "2024-01-17T14:57:00+00:00" + "time": "2024-02-09T16:27:49+00:00" }, { "name": "laravel/prompts", @@ -3575,35 +3575,36 @@ }, { "name": "league/csv", - "version": "9.11.0", + "version": "9.15.0", "source": { "type": "git", "url": "https://github.com/thephpleague/csv.git", - "reference": "33149c4bea4949aa4fa3d03fb11ed28682168b39" + "reference": "fa7e2441c0bc9b2360f4314fd6c954f7ff40d435" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/csv/zipball/33149c4bea4949aa4fa3d03fb11ed28682168b39", - "reference": "33149c4bea4949aa4fa3d03fb11ed28682168b39", + "url": "https://api.github.com/repos/thephpleague/csv/zipball/fa7e2441c0bc9b2360f4314fd6c954f7ff40d435", + "reference": "fa7e2441c0bc9b2360f4314fd6c954f7ff40d435", "shasum": "" }, "require": { + "ext-filter": "*", "ext-json": "*", "ext-mbstring": "*", "php": "^8.1.2" }, "require-dev": { - "doctrine/collections": "^2.1.3", + "doctrine/collections": "^2.1.4", "ext-dom": "*", "ext-xdebug": "*", "friendsofphp/php-cs-fixer": "^v3.22.0", - "phpbench/phpbench": "^1.2.14", - "phpstan/phpstan": "^1.10.26", - "phpstan/phpstan-deprecation-rules": "^1.1.3", - "phpstan/phpstan-phpunit": "^1.3.13", - "phpstan/phpstan-strict-rules": "^1.5.1", - "phpunit/phpunit": "^10.3.1", - "symfony/var-dumper": "^6.3.3" + "phpbench/phpbench": "^1.2.15", + "phpstan/phpstan": "^1.10.57", + "phpstan/phpstan-deprecation-rules": "^1.1.4", + "phpstan/phpstan-phpunit": "^1.3.15", + "phpstan/phpstan-strict-rules": "^1.5.2", + "phpunit/phpunit": "^10.5.9", + "symfony/var-dumper": "^6.4.2" }, "suggest": { "ext-dom": "Required to use the XMLConverter and the HTMLConverter classes", @@ -3659,7 +3660,7 @@ "type": "github" } ], - "time": "2023-09-23T10:09:54+00:00" + "time": "2024-02-20T20:00:00+00:00" }, { "name": "league/event", @@ -4185,16 +4186,16 @@ }, { "name": "livewire/livewire", - "version": "v3.4.2", + "version": "v3.4.6", "source": { "type": "git", "url": "https://github.com/livewire/livewire.git", - "reference": "ab0baed58b774dde8e0ddbab1bbfd5b3d6334a82" + "reference": "7e7d638183b34fb61621455891869f5abfd55a82" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/livewire/livewire/zipball/ab0baed58b774dde8e0ddbab1bbfd5b3d6334a82", - "reference": "ab0baed58b774dde8e0ddbab1bbfd5b3d6334a82", + "url": "https://api.github.com/repos/livewire/livewire/zipball/7e7d638183b34fb61621455891869f5abfd55a82", + "reference": "7e7d638183b34fb61621455891869f5abfd55a82", "shasum": "" }, "require": { @@ -4248,7 +4249,7 @@ "description": "A front-end framework for Laravel.", "support": { "issues": "https://github.com/livewire/livewire/issues", - "source": "https://github.com/livewire/livewire/tree/v3.4.2" + "source": "https://github.com/livewire/livewire/tree/v3.4.6" }, "funding": [ { @@ -4256,7 +4257,7 @@ "type": "github" } ], - "time": "2024-01-26T14:25:51+00:00" + "time": "2024-02-20T14:04:25+00:00" }, { "name": "masterminds/html5", @@ -5252,16 +5253,16 @@ }, { "name": "phpseclib/phpseclib", - "version": "3.0.35", + "version": "3.0.36", "source": { "type": "git", "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "4b1827beabce71953ca479485c0ae9c51287f2fe" + "reference": "c2fb5136162d4be18fdd4da9980696f3aee96d7b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/4b1827beabce71953ca479485c0ae9c51287f2fe", - "reference": "4b1827beabce71953ca479485c0ae9c51287f2fe", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/c2fb5136162d4be18fdd4da9980696f3aee96d7b", + "reference": "c2fb5136162d4be18fdd4da9980696f3aee96d7b", "shasum": "" }, "require": { @@ -5342,7 +5343,7 @@ ], "support": { "issues": "https://github.com/phpseclib/phpseclib/issues", - "source": "https://github.com/phpseclib/phpseclib/tree/3.0.35" + "source": "https://github.com/phpseclib/phpseclib/tree/3.0.36" }, "funding": [ { @@ -5358,20 +5359,20 @@ "type": "tidelift" } ], - "time": "2023-12-29T01:59:53+00:00" + "time": "2024-02-26T05:13:14+00:00" }, { "name": "phpstan/phpdoc-parser", - "version": "1.25.0", + "version": "1.26.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "bd84b629c8de41aa2ae82c067c955e06f1b00240" + "reference": "231e3186624c03d7e7c890ec662b81e6b0405227" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/bd84b629c8de41aa2ae82c067c955e06f1b00240", - "reference": "bd84b629c8de41aa2ae82c067c955e06f1b00240", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/231e3186624c03d7e7c890ec662b81e6b0405227", + "reference": "231e3186624c03d7e7c890ec662b81e6b0405227", "shasum": "" }, "require": { @@ -5403,9 +5404,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/1.25.0" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.26.0" }, - "time": "2024-01-04T17:06:16+00:00" + "time": "2024-02-23T16:05:55+00:00" }, { "name": "pragmarx/google2fa", @@ -6544,16 +6545,16 @@ }, { "name": "symfony/console", - "version": "v6.4.3", + "version": "v6.4.4", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "2aaf83b4de5b9d43b93e4aec6f2f8b676f7c567e" + "reference": "0d9e4eb5ad413075624378f474c4167ea202de78" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/2aaf83b4de5b9d43b93e4aec6f2f8b676f7c567e", - "reference": "2aaf83b4de5b9d43b93e4aec6f2f8b676f7c567e", + "url": "https://api.github.com/repos/symfony/console/zipball/0d9e4eb5ad413075624378f474c4167ea202de78", + "reference": "0d9e4eb5ad413075624378f474c4167ea202de78", "shasum": "" }, "require": { @@ -6618,7 +6619,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.3" + "source": "https://github.com/symfony/console/tree/v6.4.4" }, "funding": [ { @@ -6634,7 +6635,7 @@ "type": "tidelift" } ], - "time": "2024-01-23T14:51:35+00:00" + "time": "2024-02-22T20:27:10+00:00" }, { "name": "symfony/css-selector", @@ -6770,16 +6771,16 @@ }, { "name": "symfony/error-handler", - "version": "v6.4.3", + "version": "v6.4.4", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "6dc3c76a278b77f01d864a6005d640822c6f26a6" + "reference": "c725219bdf2afc59423c32793d5019d2a904e13a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/6dc3c76a278b77f01d864a6005d640822c6f26a6", - "reference": "6dc3c76a278b77f01d864a6005d640822c6f26a6", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/c725219bdf2afc59423c32793d5019d2a904e13a", + "reference": "c725219bdf2afc59423c32793d5019d2a904e13a", "shasum": "" }, "require": { @@ -6825,7 +6826,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/v6.4.3" + "source": "https://github.com/symfony/error-handler/tree/v6.4.4" }, "funding": [ { @@ -6841,7 +6842,7 @@ "type": "tidelift" } ], - "time": "2024-01-29T15:40:36+00:00" + "time": "2024-02-22T20:27:10+00:00" }, { "name": "symfony/event-dispatcher", @@ -7065,16 +7066,16 @@ }, { "name": "symfony/html-sanitizer", - "version": "v6.4.0", + "version": "v6.4.4", "source": { "type": "git", "url": "https://github.com/symfony/html-sanitizer.git", - "reference": "9cc71f272eb62504872c80845074f236e8e43536" + "reference": "83e1dc8b49345e078cfa21bd4c563dfa99c5ed63" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/html-sanitizer/zipball/9cc71f272eb62504872c80845074f236e8e43536", - "reference": "9cc71f272eb62504872c80845074f236e8e43536", + "url": "https://api.github.com/repos/symfony/html-sanitizer/zipball/83e1dc8b49345e078cfa21bd4c563dfa99c5ed63", + "reference": "83e1dc8b49345e078cfa21bd4c563dfa99c5ed63", "shasum": "" }, "require": { @@ -7114,7 +7115,7 @@ "sanitizer" ], "support": { - "source": "https://github.com/symfony/html-sanitizer/tree/v6.4.0" + "source": "https://github.com/symfony/html-sanitizer/tree/v6.4.4" }, "funding": [ { @@ -7130,20 +7131,20 @@ "type": "tidelift" } ], - "time": "2023-10-28T23:12:08+00:00" + "time": "2024-02-13T16:25:19+00:00" }, { "name": "symfony/http-foundation", - "version": "v6.4.3", + "version": "v6.4.4", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "5677bdf7cade4619cb17fc9e1e7b31ec392244a9" + "reference": "ebc713bc6e6f4b53f46539fc158be85dfcd77304" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/5677bdf7cade4619cb17fc9e1e7b31ec392244a9", - "reference": "5677bdf7cade4619cb17fc9e1e7b31ec392244a9", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ebc713bc6e6f4b53f46539fc158be85dfcd77304", + "reference": "ebc713bc6e6f4b53f46539fc158be85dfcd77304", "shasum": "" }, "require": { @@ -7191,7 +7192,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.4.3" + "source": "https://github.com/symfony/http-foundation/tree/v6.4.4" }, "funding": [ { @@ -7207,20 +7208,20 @@ "type": "tidelift" } ], - "time": "2024-01-23T14:51:35+00:00" + "time": "2024-02-08T15:01:18+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.4.3", + "version": "v6.4.4", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "9c6ec4e543044f7568a53a76ab1484ecd30637a2" + "reference": "7a186f64a7f02787c04e8476538624d6aa888e42" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9c6ec4e543044f7568a53a76ab1484ecd30637a2", - "reference": "9c6ec4e543044f7568a53a76ab1484ecd30637a2", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/7a186f64a7f02787c04e8476538624d6aa888e42", + "reference": "7a186f64a7f02787c04e8476538624d6aa888e42", "shasum": "" }, "require": { @@ -7269,7 +7270,7 @@ "symfony/process": "^5.4|^6.0|^7.0", "symfony/property-access": "^5.4.5|^6.0.5|^7.0", "symfony/routing": "^5.4|^6.0|^7.0", - "symfony/serializer": "^6.3|^7.0", + "symfony/serializer": "^6.4.4|^7.0.4", "symfony/stopwatch": "^5.4|^6.0|^7.0", "symfony/translation": "^5.4|^6.0|^7.0", "symfony/translation-contracts": "^2.5|^3", @@ -7304,7 +7305,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/v6.4.3" + "source": "https://github.com/symfony/http-kernel/tree/v6.4.4" }, "funding": [ { @@ -7320,20 +7321,20 @@ "type": "tidelift" } ], - "time": "2024-01-31T07:21:29+00:00" + "time": "2024-02-27T06:32:13+00:00" }, { "name": "symfony/mailer", - "version": "v6.4.3", + "version": "v6.4.4", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "74412c62f88a85a41b61f0b71ab0afcaad6f03ee" + "reference": "791c5d31a8204cf3db0c66faab70282307f4376b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/74412c62f88a85a41b61f0b71ab0afcaad6f03ee", - "reference": "74412c62f88a85a41b61f0b71ab0afcaad6f03ee", + "url": "https://api.github.com/repos/symfony/mailer/zipball/791c5d31a8204cf3db0c66faab70282307f4376b", + "reference": "791c5d31a8204cf3db0c66faab70282307f4376b", "shasum": "" }, "require": { @@ -7384,7 +7385,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v6.4.3" + "source": "https://github.com/symfony/mailer/tree/v6.4.4" }, "funding": [ { @@ -7400,7 +7401,7 @@ "type": "tidelift" } ], - "time": "2024-01-29T15:01:07+00:00" + "time": "2024-02-03T21:33:47+00:00" }, { "name": "symfony/mime", @@ -8199,16 +8200,16 @@ }, { "name": "symfony/process", - "version": "v6.4.3", + "version": "v6.4.4", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "31642b0818bfcff85930344ef93193f8c607e0a3" + "reference": "710e27879e9be3395de2b98da3f52a946039f297" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/31642b0818bfcff85930344ef93193f8c607e0a3", - "reference": "31642b0818bfcff85930344ef93193f8c607e0a3", + "url": "https://api.github.com/repos/symfony/process/zipball/710e27879e9be3395de2b98da3f52a946039f297", + "reference": "710e27879e9be3395de2b98da3f52a946039f297", "shasum": "" }, "require": { @@ -8240,7 +8241,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.4.3" + "source": "https://github.com/symfony/process/tree/v6.4.4" }, "funding": [ { @@ -8256,7 +8257,7 @@ "type": "tidelift" } ], - "time": "2024-01-23T14:51:35+00:00" + "time": "2024-02-20T12:31:00+00:00" }, { "name": "symfony/psr-http-message-bridge", @@ -8514,16 +8515,16 @@ }, { "name": "symfony/string", - "version": "v7.0.3", + "version": "v7.0.4", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "524aac4a280b90a4420d8d6a040718d0586505ac" + "reference": "f5832521b998b0bec40bee688ad5de98d4cf111b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/524aac4a280b90a4420d8d6a040718d0586505ac", - "reference": "524aac4a280b90a4420d8d6a040718d0586505ac", + "url": "https://api.github.com/repos/symfony/string/zipball/f5832521b998b0bec40bee688ad5de98d4cf111b", + "reference": "f5832521b998b0bec40bee688ad5de98d4cf111b", "shasum": "" }, "require": { @@ -8580,7 +8581,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.0.3" + "source": "https://github.com/symfony/string/tree/v7.0.4" }, "funding": [ { @@ -8596,20 +8597,20 @@ "type": "tidelift" } ], - "time": "2024-01-29T15:41:16+00:00" + "time": "2024-02-01T13:17:36+00:00" }, { "name": "symfony/translation", - "version": "v6.4.3", + "version": "v6.4.4", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "637c51191b6b184184bbf98937702bcf554f7d04" + "reference": "bce6a5a78e94566641b2594d17e48b0da3184a8e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/637c51191b6b184184bbf98937702bcf554f7d04", - "reference": "637c51191b6b184184bbf98937702bcf554f7d04", + "url": "https://api.github.com/repos/symfony/translation/zipball/bce6a5a78e94566641b2594d17e48b0da3184a8e", + "reference": "bce6a5a78e94566641b2594d17e48b0da3184a8e", "shasum": "" }, "require": { @@ -8675,7 +8676,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.4.3" + "source": "https://github.com/symfony/translation/tree/v6.4.4" }, "funding": [ { @@ -8691,7 +8692,7 @@ "type": "tidelift" } ], - "time": "2024-01-29T13:11:52+00:00" + "time": "2024-02-20T13:16:58+00:00" }, { "name": "symfony/translation-contracts", @@ -8847,16 +8848,16 @@ }, { "name": "symfony/var-dumper", - "version": "v6.4.3", + "version": "v6.4.4", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "0435a08f69125535336177c29d56af3abc1f69da" + "reference": "b439823f04c98b84d4366c79507e9da6230944b1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/0435a08f69125535336177c29d56af3abc1f69da", - "reference": "0435a08f69125535336177c29d56af3abc1f69da", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/b439823f04c98b84d4366c79507e9da6230944b1", + "reference": "b439823f04c98b84d4366c79507e9da6230944b1", "shasum": "" }, "require": { @@ -8912,7 +8913,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.4.3" + "source": "https://github.com/symfony/var-dumper/tree/v6.4.4" }, "funding": [ { @@ -8928,20 +8929,20 @@ "type": "tidelift" } ], - "time": "2024-01-23T14:53:30+00:00" + "time": "2024-02-15T11:23:52+00:00" }, { "name": "tightenco/ziggy", - "version": "v1.8.1", + "version": "v1.8.2", "source": { "type": "git", "url": "https://github.com/tighten/ziggy.git", - "reference": "22dafc51f3f5ae5ed51f7cb6b566e6b9537f6937" + "reference": "939576ad0f3d3e633a9401c8c377bc7bc873ff35" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tighten/ziggy/zipball/22dafc51f3f5ae5ed51f7cb6b566e6b9537f6937", - "reference": "22dafc51f3f5ae5ed51f7cb6b566e6b9537f6937", + "url": "https://api.github.com/repos/tighten/ziggy/zipball/939576ad0f3d3e633a9401c8c377bc7bc873ff35", + "reference": "939576ad0f3d3e633a9401c8c377bc7bc873ff35", "shasum": "" }, "require": { @@ -8949,8 +8950,8 @@ "laravel/framework": ">=5.4@dev" }, "require-dev": { - "orchestra/testbench": "^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0", - "phpunit/phpunit": "^6.0 || ^7.0 || ^8.0 || ^9.0" + "orchestra/testbench": "^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0", + "phpunit/phpunit": "^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0" }, "type": "library", "extra": { @@ -8993,9 +8994,9 @@ ], "support": { "issues": "https://github.com/tighten/ziggy/issues", - "source": "https://github.com/tighten/ziggy/tree/v1.8.1" + "source": "https://github.com/tighten/ziggy/tree/v1.8.2" }, - "time": "2023-10-12T18:31:26+00:00" + "time": "2024-02-20T19:56:04+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -9335,16 +9336,16 @@ "packages-dev": [ { "name": "brianium/paratest", - "version": "v7.3.1", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/paratestphp/paratest.git", - "reference": "551f46f52a93177d873f3be08a1649ae886b4a30" + "reference": "64fcfd0e28a6b8078a19dbf9127be2ee645b92ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paratestphp/paratest/zipball/551f46f52a93177d873f3be08a1649ae886b4a30", - "reference": "551f46f52a93177d873f3be08a1649ae886b4a30", + "url": "https://api.github.com/repos/paratestphp/paratest/zipball/64fcfd0e28a6b8078a19dbf9127be2ee645b92ec", + "reference": "64fcfd0e28a6b8078a19dbf9127be2ee645b92ec", "shasum": "" }, "require": { @@ -9352,28 +9353,27 @@ "ext-pcre": "*", "ext-reflection": "*", "ext-simplexml": "*", - "fidry/cpu-core-counter": "^0.5.1 || ^1.0.0", + "fidry/cpu-core-counter": "^1.1.0", "jean85/pretty-package-versions": "^2.0.5", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0", - "phpunit/php-code-coverage": "^10.1.7", - "phpunit/php-file-iterator": "^4.1.0", - "phpunit/php-timer": "^6.0", - "phpunit/phpunit": "^10.4.2", - "sebastian/environment": "^6.0.1", - "symfony/console": "^6.3.4 || ^7.0.0", - "symfony/process": "^6.3.4 || ^7.0.0" + "php": "~8.2.0 || ~8.3.0", + "phpunit/php-code-coverage": "^10.1.11 || ^11.0.0", + "phpunit/php-file-iterator": "^4.1.0 || ^5.0.0", + "phpunit/php-timer": "^6.0.0 || ^7.0.0", + "phpunit/phpunit": "^10.5.9 || ^11.0.3", + "sebastian/environment": "^6.0.1 || ^7.0.0", + "symfony/console": "^6.4.3 || ^7.0.3", + "symfony/process": "^6.4.3 || ^7.0.3" }, "require-dev": { "doctrine/coding-standard": "^12.0.0", "ext-pcov": "*", "ext-posix": "*", - "infection/infection": "^0.27.6", - "phpstan/phpstan": "^1.10.40", + "phpstan/phpstan": "^1.10.58", "phpstan/phpstan-deprecation-rules": "^1.1.4", "phpstan/phpstan-phpunit": "^1.3.15", "phpstan/phpstan-strict-rules": "^1.5.2", - "squizlabs/php_codesniffer": "^3.7.2", - "symfony/filesystem": "^6.3.1 || ^7.0.0" + "squizlabs/php_codesniffer": "^3.9.0", + "symfony/filesystem": "^6.4.3 || ^7.0.3" }, "bin": [ "bin/paratest", @@ -9414,7 +9414,7 @@ ], "support": { "issues": "https://github.com/paratestphp/paratest/issues", - "source": "https://github.com/paratestphp/paratest/tree/v7.3.1" + "source": "https://github.com/paratestphp/paratest/tree/v7.4.3" }, "funding": [ { @@ -9426,7 +9426,7 @@ "type": "paypal" } ], - "time": "2023-10-31T09:24:17+00:00" + "time": "2024-02-20T07:24:02+00:00" }, { "name": "fakerphp/faker", @@ -9493,16 +9493,16 @@ }, { "name": "fidry/cpu-core-counter", - "version": "1.0.0", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/theofidry/cpu-core-counter.git", - "reference": "85193c0b0cb5c47894b5eaec906e946f054e7077" + "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/85193c0b0cb5c47894b5eaec906e946f054e7077", - "reference": "85193c0b0cb5c47894b5eaec906e946f054e7077", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/f92996c4d5c1a696a6a970e20f7c4216200fcc42", + "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42", "shasum": "" }, "require": { @@ -9542,7 +9542,7 @@ ], "support": { "issues": "https://github.com/theofidry/cpu-core-counter/issues", - "source": "https://github.com/theofidry/cpu-core-counter/tree/1.0.0" + "source": "https://github.com/theofidry/cpu-core-counter/tree/1.1.0" }, "funding": [ { @@ -9550,7 +9550,7 @@ "type": "github" } ], - "time": "2023-09-17T21:38:23+00:00" + "time": "2024-02-07T09:43:46+00:00" }, { "name": "filp/whoops", @@ -9625,16 +9625,16 @@ }, { "name": "fumeapp/modeltyper", - "version": "v2.2.7", + "version": "v2.2.9", "source": { "type": "git", "url": "https://github.com/fumeapp/modeltyper.git", - "reference": "eeae47953b74aa74a67c7c7d6235418f02a31429" + "reference": "85bf0225f1cd812a5197add81b3b0c406c1f61e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fumeapp/modeltyper/zipball/eeae47953b74aa74a67c7c7d6235418f02a31429", - "reference": "eeae47953b74aa74a67c7c7d6235418f02a31429", + "url": "https://api.github.com/repos/fumeapp/modeltyper/zipball/85bf0225f1cd812a5197add81b3b0c406c1f61e5", + "reference": "85bf0225f1cd812a5197add81b3b0c406c1f61e5", "shasum": "" }, "require": { @@ -9679,9 +9679,9 @@ "description": "Generate TypeScript interfaces from Laravel Models", "support": { "issues": "https://github.com/fumeapp/modeltyper/issues", - "source": "https://github.com/fumeapp/modeltyper/tree/v2.2.7" + "source": "https://github.com/fumeapp/modeltyper/tree/v2.2.9" }, - "time": "2023-12-20T12:55:56+00:00" + "time": "2024-01-28T19:16:12+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -9795,16 +9795,16 @@ }, { "name": "larastan/larastan", - "version": "v2.8.1", + "version": "v2.9.1", "source": { "type": "git", "url": "https://github.com/larastan/larastan.git", - "reference": "b7cc6a29c457a7d4f3de90466392ae9ad3e17022" + "reference": "467113c58d110ad617cf9e07ff49b0948d1c03cc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/larastan/larastan/zipball/b7cc6a29c457a7d4f3de90466392ae9ad3e17022", - "reference": "b7cc6a29c457a7d4f3de90466392ae9ad3e17022", + "url": "https://api.github.com/repos/larastan/larastan/zipball/467113c58d110ad617cf9e07ff49b0948d1c03cc", + "reference": "467113c58d110ad617cf9e07ff49b0948d1c03cc", "shasum": "" }, "require": { @@ -9872,7 +9872,7 @@ ], "support": { "issues": "https://github.com/larastan/larastan/issues", - "source": "https://github.com/larastan/larastan/tree/v2.8.1" + "source": "https://github.com/larastan/larastan/tree/v2.9.1" }, "funding": [ { @@ -9892,20 +9892,20 @@ "type": "patreon" } ], - "time": "2024-01-08T09:11:17+00:00" + "time": "2024-02-26T14:10:20+00:00" }, { "name": "laravel/pint", - "version": "v1.13.10", + "version": "v1.14.0", "source": { "type": "git", "url": "https://github.com/laravel/pint.git", - "reference": "e2b5060885694ca30ac008c05dc9d47f10ed1abf" + "reference": "6b127276e3f263f7bb17d5077e9e0269e61b2a0e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/pint/zipball/e2b5060885694ca30ac008c05dc9d47f10ed1abf", - "reference": "e2b5060885694ca30ac008c05dc9d47f10ed1abf", + "url": "https://api.github.com/repos/laravel/pint/zipball/6b127276e3f263f7bb17d5077e9e0269e61b2a0e", + "reference": "6b127276e3f263f7bb17d5077e9e0269e61b2a0e", "shasum": "" }, "require": { @@ -9916,13 +9916,13 @@ "php": "^8.1.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^3.47.1", - "illuminate/view": "^10.41.0", + "friendsofphp/php-cs-fixer": "^3.49.0", + "illuminate/view": "^10.43.0", "larastan/larastan": "^2.8.1", "laravel-zero/framework": "^10.3.0", "mockery/mockery": "^1.6.7", "nunomaduro/termwind": "^1.15.1", - "pestphp/pest": "^2.31.0" + "pestphp/pest": "^2.33.6" }, "bin": [ "builds/pint" @@ -9958,26 +9958,26 @@ "issues": "https://github.com/laravel/pint/issues", "source": "https://github.com/laravel/pint" }, - "time": "2024-01-22T09:04:15+00:00" + "time": "2024-02-20T17:38:05+00:00" }, { "name": "laravel/sail", - "version": "v1.27.2", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/laravel/sail.git", - "reference": "2276a8d9d6cfdcaad98bf67a34331d100149d5b6" + "reference": "a05861ca9b04558b1ec1f36cff521a271a259b6c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/2276a8d9d6cfdcaad98bf67a34331d100149d5b6", - "reference": "2276a8d9d6cfdcaad98bf67a34331d100149d5b6", + "url": "https://api.github.com/repos/laravel/sail/zipball/a05861ca9b04558b1ec1f36cff521a271a259b6c", + "reference": "a05861ca9b04558b1ec1f36cff521a271a259b6c", "shasum": "" }, "require": { - "illuminate/console": "^9.0|^10.0|^11.0", - "illuminate/contracts": "^9.0|^10.0|^11.0", - "illuminate/support": "^9.0|^10.0|^11.0", + "illuminate/console": "^9.52.16|^10.0|^11.0", + "illuminate/contracts": "^9.52.16|^10.0|^11.0", + "illuminate/support": "^9.52.16|^10.0|^11.0", "php": "^8.0", "symfony/yaml": "^6.0|^7.0" }, @@ -9990,9 +9990,6 @@ ], "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - }, "laravel": { "providers": [ "Laravel\\Sail\\SailServiceProvider" @@ -10023,20 +10020,20 @@ "issues": "https://github.com/laravel/sail/issues", "source": "https://github.com/laravel/sail" }, - "time": "2024-01-21T17:13:42+00:00" + "time": "2024-02-20T15:11:00+00:00" }, { "name": "laravel/telescope", - "version": "v4.17.4", + "version": "v4.17.6", "source": { "type": "git", "url": "https://github.com/laravel/telescope.git", - "reference": "3cbe70e900a9d070491149f2615d5a4a5b51d4c6" + "reference": "2d453dc629b27e8cf39fb1217aba062f8c54e690" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/telescope/zipball/3cbe70e900a9d070491149f2615d5a4a5b51d4c6", - "reference": "3cbe70e900a9d070491149f2615d5a4a5b51d4c6", + "url": "https://api.github.com/repos/laravel/telescope/zipball/2d453dc629b27e8cf39fb1217aba062f8c54e690", + "reference": "2d453dc629b27e8cf39fb1217aba062f8c54e690", "shasum": "" }, "require": { @@ -10092,9 +10089,9 @@ ], "support": { "issues": "https://github.com/laravel/telescope/issues", - "source": "https://github.com/laravel/telescope/tree/v4.17.4" + "source": "https://github.com/laravel/telescope/tree/v4.17.6" }, - "time": "2024-01-22T16:15:52+00:00" + "time": "2024-02-08T15:04:38+00:00" }, { "name": "mockery/mockery", @@ -10535,16 +10532,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.10.57", + "version": "1.10.59", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "1627b1d03446904aaa77593f370c5201d2ecc34e" + "reference": "e607609388d3a6d418a50a49f7940e8086798281" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/1627b1d03446904aaa77593f370c5201d2ecc34e", - "reference": "1627b1d03446904aaa77593f370c5201d2ecc34e", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e607609388d3a6d418a50a49f7940e8086798281", + "reference": "e607609388d3a6d418a50a49f7940e8086798281", "shasum": "" }, "require": { @@ -10593,7 +10590,7 @@ "type": "tidelift" } ], - "time": "2024-01-24T11:51:34+00:00" + "time": "2024-02-20T13:59:13+00:00" }, { "name": "phpunit/php-code-coverage", @@ -10918,16 +10915,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.5.9", + "version": "10.5.11", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "0bd663704f0165c9e76fe4f06ffa6a1ca727fdbe" + "reference": "0d968f6323deb3dbfeba5bfd4929b9415eb7a9a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0bd663704f0165c9e76fe4f06ffa6a1ca727fdbe", - "reference": "0bd663704f0165c9e76fe4f06ffa6a1ca727fdbe", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0d968f6323deb3dbfeba5bfd4929b9415eb7a9a4", + "reference": "0d968f6323deb3dbfeba5bfd4929b9415eb7a9a4", "shasum": "" }, "require": { @@ -10999,7 +10996,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.9" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.11" }, "funding": [ { @@ -11015,7 +11012,7 @@ "type": "tidelift" } ], - "time": "2024-01-22T14:35:40+00:00" + "time": "2024-02-25T14:05:00+00:00" }, { "name": "sebastian/cli-parser", @@ -11996,21 +11993,20 @@ }, { "name": "spatie/flare-client-php", - "version": "1.4.3", + "version": "1.4.4", "source": { "type": "git", "url": "https://github.com/spatie/flare-client-php.git", - "reference": "5db2fdd743c3ede33f2a5367d89ec1a7c9c1d1ec" + "reference": "17082e780752d346c2db12ef5d6bee8e835e399c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/5db2fdd743c3ede33f2a5367d89ec1a7c9c1d1ec", - "reference": "5db2fdd743c3ede33f2a5367d89ec1a7c9c1d1ec", + "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/17082e780752d346c2db12ef5d6bee8e835e399c", + "reference": "17082e780752d346c2db12ef5d6bee8e835e399c", "shasum": "" }, "require": { "illuminate/pipeline": "^8.0|^9.0|^10.0|^11.0", - "nesbot/carbon": "^2.62.1", "php": "^8.0", "spatie/backtrace": "^1.5.2", "symfony/http-foundation": "^5.2|^6.0|^7.0", @@ -12054,7 +12050,7 @@ ], "support": { "issues": "https://github.com/spatie/flare-client-php/issues", - "source": "https://github.com/spatie/flare-client-php/tree/1.4.3" + "source": "https://github.com/spatie/flare-client-php/tree/1.4.4" }, "funding": [ { @@ -12062,7 +12058,7 @@ "type": "github" } ], - "time": "2023-10-17T15:54:07+00:00" + "time": "2024-01-31T14:18:45+00:00" }, { "name": "spatie/ignition", @@ -12149,16 +12145,16 @@ }, { "name": "spatie/laravel-ignition", - "version": "2.4.1", + "version": "2.4.2", "source": { "type": "git", "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "005e1e7b1232f3b22d7e7be3f602693efc7dba67" + "reference": "351504f4570e32908839fc5a2dc53bf77d02f85e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/005e1e7b1232f3b22d7e7be3f602693efc7dba67", - "reference": "005e1e7b1232f3b22d7e7be3f602693efc7dba67", + "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/351504f4570e32908839fc5a2dc53bf77d02f85e", + "reference": "351504f4570e32908839fc5a2dc53bf77d02f85e", "shasum": "" }, "require": { @@ -12237,20 +12233,20 @@ "type": "github" } ], - "time": "2024-01-12T13:14:58+00:00" + "time": "2024-02-09T16:08:40+00:00" }, { "name": "symfony/yaml", - "version": "v7.0.0", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "0055b230c408428b9b5cde7c55659555be5c0278" + "reference": "2d4fca631c00700597e9442a0b2451ce234513d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/0055b230c408428b9b5cde7c55659555be5c0278", - "reference": "0055b230c408428b9b5cde7c55659555be5c0278", + "url": "https://api.github.com/repos/symfony/yaml/zipball/2d4fca631c00700597e9442a0b2451ce234513d3", + "reference": "2d4fca631c00700597e9442a0b2451ce234513d3", "shasum": "" }, "require": { @@ -12292,7 +12288,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v7.0.0" + "source": "https://github.com/symfony/yaml/tree/v7.0.3" }, "funding": [ { @@ -12308,7 +12304,7 @@ "type": "tidelift" } ], - "time": "2023-11-07T10:26:03+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "theseer/tokenizer", @@ -12359,6 +12355,68 @@ } ], "time": "2023-11-20T00:12:19+00:00" + }, + { + "name": "timacdonald/log-fake", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/timacdonald/log-fake.git", + "reference": "70aaade5643e12c69556df307c817f5b2bcca8bf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/timacdonald/log-fake/zipball/70aaade5643e12c69556df307c817f5b2bcca8bf", + "reference": "70aaade5643e12c69556df307c817f5b2bcca8bf", + "shasum": "" + }, + "require": { + "illuminate/collections": "^9.0 || ^10.0", + "illuminate/contracts": "^9.0 || ^10.0", + "illuminate/log": "^9.0 || ^10.0", + "illuminate/support": "^9.0 || ^10.0", + "php": "^8.1", + "phpunit/phpunit": "^9.0 || ^10.0", + "psr/log": "^1.0 || ^2.0 || ^3.0", + "symfony/var-dumper": "^6.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4", + "illuminate/config": "^9.0 || ^10.0", + "illuminate/container": "^9.0 || ^10.0", + "timacdonald/callable-fake": "^1.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "TiMacDonald\\Log\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Tim MacDonald", + "email": "hello@timacdonald.me", + "homepage": "https://timacdonald.me" + } + ], + "description": "A drop in fake logger for testing with the Laravel framework.", + "keywords": [ + "fake", + "laravel", + "log", + "logger", + "testing" + ], + "support": { + "docs": "https://github.com/timacdonald/log-fake/blob/master/readme.md", + "issues": "https://github.com/timacdonald/log-fake/issues", + "source": "https://github.com/timacdonald/log-fake/releases/latest" + }, + "time": "2023-02-17T00:42:43+00:00" } ], "aliases": [], @@ -12367,7 +12425,7 @@ "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": "^8.1" + "php": "8.3.*" }, "platform-dev": [], "plugin-api-version": "2.6.0" diff --git a/database/factories/TimeEntryFactory.php b/database/factories/TimeEntryFactory.php index 1220d1bb..f1a0702c 100644 --- a/database/factories/TimeEntryFactory.php +++ b/database/factories/TimeEntryFactory.php @@ -10,6 +10,7 @@ use App\Models\Tag; use App\Models\Task; use App\Models\TimeEntry; use App\Models\User; +use Carbon\Carbon; use Illuminate\Database\Eloquent\Factories\Factory; /** @@ -49,6 +50,27 @@ class TimeEntryFactory extends Factory }); } + public function startBetween(Carbon $rangeStart, Carbon $rangeEnd): self + { + $start = $this->faker->dateTimeBetween($rangeStart, $rangeEnd); + + return $this->state(function (array $attributes) use ($start): array { + return [ + 'start' => $start, + 'end' => $this->faker->dateTimeBetween($start, 'now'), + ]; + }); + } + + public function active(): self + { + return $this->state(function (array $attributes): array { + return [ + 'end' => null, + ]; + }); + } + public function forUser(User $user): self { return $this->state(function (array $attributes) use ($user) { diff --git a/tests/TestCase.php b/tests/TestCase.php index 53411164..dbbd313d 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -5,8 +5,15 @@ declare(strict_types=1); namespace Tests; use Illuminate\Foundation\Testing\TestCase as BaseTestCase; +use TiMacDonald\Log\LogFake; abstract class TestCase extends BaseTestCase { use CreatesApplication; + + protected function setUp(): void + { + parent::setUp(); + LogFake::bind(); + } }