From 7ddacff946e52d59a92a7b1e862b64a9601b4276 Mon Sep 17 00:00:00 2001 From: Lukas Frey Date: Mon, 19 Feb 2024 09:30:11 +0100 Subject: [PATCH] refactor: Complete rewrite of the plugin. Simplified approach and more customizable. --- README.md | 163 +- composer.json | 7 +- composer.lock | 2273 ++++++++++------- src/Actions/NestedCreateAction.php | 27 + src/Actions/NestedDeleteAction.php | 39 + src/Actions/NestedEditAction.php | 22 + src/Actions/NestedForceDeleteAction.php | 37 + src/Actions/NestedViewAction.php | 22 + src/Ancestor.php | 76 +- src/Concerns/HasAncestor.php | 18 - src/Concerns/HasBreadcrumbTitleAttribute.php | 13 - src/Concerns/NestedPage.php | 46 + src/Concerns/NestedRelationManager.php | 14 + src/Concerns/NestedResource.php | 58 + src/NestedResourcesPlugin.php | 2 +- src/NestedResourcesServiceProvider.php | 2 +- src/Pages/CreateRelatedRecord.php | 329 +++ src/Pages/NestedCreateRecord.php | 50 - src/Pages/NestedEditRecord.php | 89 - src/Pages/NestedListRecords.php | 72 - src/Pages/NestedPage.php | 28 - src/Pages/NestedViewRecord.php | 29 - .../NestedRelationManager.php | 57 - src/Resources/NestedResource.php | 185 -- src/helpers.php | 22 - 25 files changed, 2105 insertions(+), 1575 deletions(-) create mode 100644 src/Actions/NestedCreateAction.php create mode 100644 src/Actions/NestedDeleteAction.php create mode 100644 src/Actions/NestedEditAction.php create mode 100644 src/Actions/NestedForceDeleteAction.php create mode 100644 src/Actions/NestedViewAction.php delete mode 100644 src/Concerns/HasAncestor.php delete mode 100644 src/Concerns/HasBreadcrumbTitleAttribute.php create mode 100644 src/Concerns/NestedPage.php create mode 100644 src/Concerns/NestedRelationManager.php create mode 100644 src/Concerns/NestedResource.php create mode 100644 src/Pages/CreateRelatedRecord.php delete mode 100644 src/Pages/NestedCreateRecord.php delete mode 100644 src/Pages/NestedEditRecord.php delete mode 100644 src/Pages/NestedListRecords.php delete mode 100644 src/Pages/NestedPage.php delete mode 100644 src/Pages/NestedViewRecord.php delete mode 100644 src/RelationManagers/NestedRelationManager.php delete mode 100644 src/Resources/NestedResource.php delete mode 100644 src/helpers.php diff --git a/README.md b/README.md index 4a81995..c7c9636 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,9 @@ Filament Nested Resources allows you to create nested resources of any depth. This is useful for resources which are too complex for relation manager, yet don't make sense as a standalone resource. +### Beta is here, with a much simpler and customizable implementation! +#### Warning: The beta and alpha versions are not compatible, as the beta is a complete rewrite of the package. Upgrading is easy though and described below. + ## Showcase ![Screenshot 1](https://github.com/GuavaCZ/filament-nested-resources/raw/alpha/docs/images/screenshot_01.png) @@ -33,23 +36,13 @@ In the examples: ArtistResource > AlbumResource > SongResource Artist would be the root resource, the other would be child resources. -### TL;DR -Replace all extends of `Resource`, `RelationManager`, `Page` classes with their corresponding `Nested` variants. - -So instead of extending `Resource`, extend `NestedResource`, instead of extending `EditRecord`, extend `NestedEditRecord` and so on. - -Where applicable (in child resources), implement `getAncestor` to define the parent of the nested resource. +### Quick start -Optionally remove `index` page for child nested resources. +In order to set up Nested Resources, you need to do these steps: -### Detailed usage - -In order to make to set up Nested Resources, you need to do these steps: - -1. Extend `NestedResource` on your root resource and all child resources you want to nest under your root resource. -2. On your child `NestedResources`, implement the `getAncestor()` method and return an instance of the `Ancestor` config. -3. On your **child** `NestedResource` pages, extend the corresponding `Nested[Context]Record`. So instead of `EditRecord`, extend `NestedEditRecord` and so on. -4. Create a `RelationManager` to bind the Resources together. Extend `NestedRelationManager` instead of `RelationManager`. +1. On the resources (root and all child resources) you want to nest, add the `NestedResource` trait. You will be required to implement the `getAncestor` method. For the root resource, return `null`, for all child resources implement it according to the documentation below. +2. On every page of the resources from the 1st step, add the `NestedPage` trait. +3. Create a `RelationManager` ([Filament documentation](https://filamentphp.com/docs/3.x/panels/resources/relation-managers#creating-a-relation-manager)) or a `RelationPage` ([Filament documentation](https://filamentphp.com/docs/3.x/panels/resources/relation-managers#relation-pages)) to bind the Resources together. Add the `NestedRelationManager` trait to either of them. Let's imagine the scenario from the Showcase screenshots, where we have this schema: 1. Artist Model. @@ -59,30 +52,55 @@ Let's imagine the scenario from the Showcase screenshots, where we have this sch First we create `ArtistResource`: ```php -use Guava\Filament\NestedResources\Resources\NestedResource; +use Filament\Resources\Resource; +use Guava\FilamentNestedResources\Concerns\NestedResource; -class ArtistResource extends NestedResource +class ArtistResource extends Resource { - // + use NestedResource; + // If using Relation Manager: public static function getRelations(): array { return [ AlbumsRelationManager::class, ]; } + + public static function getPages(): array + { + return [ + 'index' => Pages\ListArtists::route('/'), + 'create' => Pages\CreateArtist::route('/create'), + 'edit' => Pages\EditArtist::route('/{record}/edit'), + 'view' => Pages\ViewArtist::route('/{record}'), + + // In case of relation page. + // Make sure the name corresponds to the name of your actual relationship on the model. + 'albums' => Pages\ManageArtistAlbums::route('/{record}/albums'), + + // Needed to create child records + // The name should be '{relationshipName}.create': + 'albums.create' => Pages\CreateArtistAlbum::route('/{record}/albums/create'), + ]; + } + + public static function getAncestor(): ?Ancestor + { + return null; + } } ``` Next, we create the `AlbumResource`: ```php -use Guava\Filament\NestedResources\Resources\NestedResource; -use Guava\Filament\NestedResources\Ancestor; +use Filament\Resources\Resource; +use Guava\FilamentNestedResources\Concerns\NestedResource; -class AlbumResource extends NestedResource +class AlbumResource extends Resource { - // + use NestedResource; public static function getRelations(): array { @@ -93,80 +111,125 @@ class AlbumResource extends NestedResource public static function getAncestor() : ?Ancestor { - // This is just a simple configuration with a few helper methods + // Configure the ancestor (parent) relationship here return Ancestor::make( ArtistResource::class, // Parent Resource Class - // Optionally you can pass a relationship name, if it's non-standard. The plugin will try to guess it otherwise - // e.g. the 'morphable' method of a morphTo relationship + 'albums', // Relationship name + 'artist', // Inverse relationship name ); } } ``` -For each page for our `AlbumResource`, we extend the corresponding NestedPage: +In every page of our `ArtistResource` and `AlbumResource`, we add the `NestedPage` trait: ```php -use Guava\Filament\NestedResources\Pages\NestedCreateRecord; +use Filament\Resources\Pages\CreateRecord; +use Guava\FilamentNestedResources\Concerns\NestedPage; -class CreateAlbum extends NestedCreateRecord +class CreateArtist extends CreateRecord { + use NestedPage; + // } ``` ```php -use Guava\Filament\NestedResources\Pages\NestedEditRecord; +use Filament\Resources\Pages\EditRecord; +use Guava\FilamentNestedResources\Concerns\NestedPage; -class EditAlbum extends NestedEditRecord +class EditArtist extends EditRecord { + use NestedPage; + // } ``` ```php -use Guava\Filament\NestedResources\Pages\NestedListRecords; +use Filament\Resources\Pages\ListRecords; +use Guava\FilamentNestedResources\Concerns\NestedPage; -class ListAlbums extends NestedListRecords +class ListArtists extends ListRecords { + use NestedPage; + // } ``` -And finally we create the `AlbumsRelationManager`. We just need to extend the `NestedRelationManager` class here: +Now let`s create a new page which will be used to create child records. Let's create `CreateArtistAlbum` page inside `ArtistResource/Pages`: ```php -use Guava\Filament\NestedResources\RelationManagers\NestedRelationManager; +use Guava\FilamentNestedResources\Pages\CreateRelatedRecord; +use Guava\FilamentNestedResources\Concerns\NestedPage; -class AlbumsRelationManager extends NestedRelationManager +class CreateArtistAlbum extends CreateRelatedRecord { + use NestedPage; + // } ``` +Don\`t forget to register the page in the `getPages` method. -Optionally, we recommend deleting the `index` page from your child `NestedResources` (in this case AlbumResource): +And finally we create either the `AlbumsRelationManager` or if you prefer to use a Relation Page then create a `ManageArtistAlbums` page. We just need to add the `NestedRelationManager` trait here. +For RelationManager: ```php -public static function getPages(): array - { - return [ - 'create' => Pages\CreateAlbum::route('/create'), - 'edit' => Pages\EditAlbum::route('/{record}/edit'), - ]; - } +use Filament\Resources\RelationManagers\RelationManager; +use Guava\FilamentNestedResources\Concerns\NestedRelationManager; + +class AlbumsRelationManager extends Relationmanager +{ + use NestedRelationManager; + // +} +``` + +For RelationPage: +```php +use Filament\Resources\Pages\ManageRelatedRecords; +use Guava\FilamentNestedResources\Concerns\NestedPage; +use Guava\FilamentNestedResources\Concerns\NestedRelationManager; + +class ManageArtistAlbums extends ManageRelatedRecords +{ + use NestedPage; // Since this is a standalone page, we also need this trait + use NestedRelationManager; + + // +} ``` -The plugin will work either way, but the difference is that the breadcrumb URLs will redirect to different pages based on whether the index page exists or not. +Optionally, we recommend deleting the `index` and `create` pages from your child `NestedResources` (in this case AlbumResource). + +### Customizing the breadcrumbs +Every resource can control their own part of the breadcrumb, which by default consists of an `index` breadcrumb and a `detail` breadcrumb. -If it exists, it will redirect to the index page (which might be a little confusing) and if it does NOT exist, it will redirect to the Parent Resource's Edit page. Since there's a relation manager, you will still have a list of all records. +The `index` breadcrumb typically redirects to the index page. -### Customizing the breadcrumb -By default, the breadcrumbs will display the ID of the record(s). When `recordTitleAttribute` is set, the breadcrumbs will display that attribute instead. +The `detail` breadcrumb typically redirects to the detail (edit or view) and by default, will display the route key (ID if not configured otherwise) of the record. -To customize only the breadcrumb attribute, you can override the `breadcrumbTitleAttribute` on your `NestedResource`: +You can override the label via the `getBreadcrumbRecordLabel` method of a `NestedResource`: -So for example to display the `name` of each record in the breadcrumb: ```php -protected static ?string $breadcrumbTitleAttribute = 'name'; +public static function getBreadcrumbRecordLabel(Model $record) +{ + return $record->first_name . ' ' . $record->last_name; +} +``` + +Or you can override the resource\`s breadcrumb part completely, by overriding the `getBreadcrumbs` method on the resource: + +```php +public static function getBreadcrumbs(Model $record, string $operation): array +{ + return [ + 'my-custom-url' => 'My custom label', +]; +} ``` ## Contributing diff --git a/composer.json b/composer.json index 7f36dd9..3004803 100644 --- a/composer.json +++ b/composer.json @@ -3,11 +3,8 @@ "type": "library", "license": "MIT", "autoload": { - "files": [ - "src/helpers.php" - ], "psr-4": { - "Guava\\Filament\\NestedResources\\": "src/" + "Guava\\FilamentNestedResources\\": "src/" } }, "authors": [ @@ -30,7 +27,7 @@ "extra": { "laravel": { "providers": [ - "Guava\\Filament\\NestedResources\\NestedResourcesServiceProvider" + "Guava\\FilamentNestedResources\\NestedResourcesServiceProvider" ] } } diff --git a/composer.lock b/composer.lock index a6f7201..1114cdd 100644 --- a/composer.lock +++ b/composer.lock @@ -4,30 +4,96 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "cd1189613c7dd94a7d4ddf6a3d08813f", + "content-hash": "2a254a460f7ae12c03750efaa12347f5", "packages": [ + { + "name": "anourvalar/eloquent-serialize", + "version": "1.2.20", + "source": { + "type": "git", + "url": "https://github.com/AnourValar/eloquent-serialize.git", + "reference": "f8408e92768ff295990e3a1edb7e47950e008c63" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/AnourValar/eloquent-serialize/zipball/f8408e92768ff295990e3a1edb7e47950e008c63", + "reference": "f8408e92768ff295990e3a1edb7e47950e008c63", + "shasum": "" + }, + "require": { + "laravel/framework": "^8.0|^9.0|^10.0|^11.0", + "php": "^7.4|^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.26", + "laravel/legacy-factories": "^1.1", + "orchestra/testbench": "^6.0|^7.0|^8.0|^9.0", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.5|^10.5", + "psalm/plugin-laravel": "^2.8", + "squizlabs/php_codesniffer": "^3.7" + }, + "type": "library", + "extra": { + "laravel": { + "aliases": { + "EloquentSerialize": "AnourValar\\EloquentSerialize\\Facades\\EloquentSerializeFacade" + } + } + }, + "autoload": { + "psr-4": { + "AnourValar\\EloquentSerialize\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Laravel Query Builder (Eloquent) serialization", + "homepage": "https://github.com/AnourValar/eloquent-serialize", + "keywords": [ + "anourvalar", + "builder", + "copy", + "eloquent", + "job", + "laravel", + "query", + "querybuilder", + "queue", + "serializable", + "serialization", + "serialize" + ], + "support": { + "issues": "https://github.com/AnourValar/eloquent-serialize/issues", + "source": "https://github.com/AnourValar/eloquent-serialize/tree/1.2.20" + }, + "time": "2024-03-08T14:48:54+00:00" + }, { "name": "blade-ui-kit/blade-heroicons", - "version": "2.1.0", + "version": "2.3.0", "source": { "type": "git", "url": "https://github.com/blade-ui-kit/blade-heroicons.git", - "reference": "f756c807b0d04afd2caf7079bac26492da9cc6d4" + "reference": "a265dbcf2a098121aad05752d0bba9f59022e4ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/blade-ui-kit/blade-heroicons/zipball/f756c807b0d04afd2caf7079bac26492da9cc6d4", - "reference": "f756c807b0d04afd2caf7079bac26492da9cc6d4", + "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": { @@ -61,47 +127,47 @@ ], "support": { "issues": "https://github.com/blade-ui-kit/blade-heroicons/issues", - "source": "https://github.com/blade-ui-kit/blade-heroicons/tree/2.1.0" + "source": "https://github.com/blade-ui-kit/blade-heroicons/tree/2.3.0" }, "funding": [ { - "url": "https://github.com/caneco", + "url": "https://github.com/sponsors/driesvints", "type": "github" }, { - "url": "https://github.com/driesvints", - "type": "github" + "url": "https://www.paypal.com/paypalme/driesvints", + "type": "paypal" } ], - "time": "2023-01-11T08:38:22+00:00" + "time": "2024-02-07T16:33:46+00:00" }, { "name": "blade-ui-kit/blade-icons", - "version": "1.5.2", + "version": "1.6.0", "source": { "type": "git", "url": "https://github.com/blade-ui-kit/blade-icons.git", - "reference": "4d6b6b2548b1994a777211a985e18691701891e4" + "reference": "89660d93f9897d231e9113ba203cd17f4c5efade" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/blade-ui-kit/blade-icons/zipball/4d6b6b2548b1994a777211a985e18691701891e4", - "reference": "4d6b6b2548b1994a777211a985e18691701891e4", + "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" @@ -148,9 +214,13 @@ { "url": "https://github.com/sponsors/driesvints", "type": "github" + }, + { + "url": "https://www.paypal.com/paypalme/driesvints", + "type": "paypal" } ], - "time": "2023-06-09T15:47:26+00:00" + "time": "2024-02-07T16:09:20+00:00" }, { "name": "brick/math", @@ -207,6 +277,75 @@ ], "time": "2023-01-15T23:15:59+00:00" }, + { + "name": "carbonphp/carbon-doctrine-types", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/CarbonPHP/carbon-doctrine-types.git", + "reference": "99f76ffa36cce3b70a4a6abce41dba15ca2e84cb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/99f76ffa36cce3b70a4a6abce41dba15ca2e84cb", + "reference": "99f76ffa36cce3b70a4a6abce41dba15ca2e84cb", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0" + }, + "conflict": { + "doctrine/dbal": "<3.7.0 || >=4.0.0" + }, + "require-dev": { + "doctrine/dbal": "^3.7.0", + "nesbot/carbon": "^2.71.0 || ^3.0.0", + "phpunit/phpunit": "^10.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Carbon\\Doctrine\\": "src/Carbon/Doctrine/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "KyleKatarn", + "email": "kylekatarnls@gmail.com" + } + ], + "description": "Types to use Carbon in Doctrine", + "keywords": [ + "carbon", + "date", + "datetime", + "doctrine", + "time" + ], + "support": { + "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues", + "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/2.1.0" + }, + "funding": [ + { + "url": "https://github.com/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", + "type": "tidelift" + } + ], + "time": "2023-12-11T17:09:12+00:00" + }, { "name": "danharrin/date-format-converter", "version": "v0.3.0", @@ -260,25 +399,26 @@ }, { "name": "danharrin/livewire-rate-limiting", - "version": "v1.1.0", + "version": "v1.3.0", "source": { "type": "git", "url": "https://github.com/danharrin/livewire-rate-limiting.git", - "reference": "a55996683cabf2e93893280d602191243b3b80b8" + "reference": "bf16003f0d977b5a41071526d697eec94ac41735" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/danharrin/livewire-rate-limiting/zipball/a55996683cabf2e93893280d602191243b3b80b8", - "reference": "a55996683cabf2e93893280d602191243b3b80b8", + "url": "https://api.github.com/repos/danharrin/livewire-rate-limiting/zipball/bf16003f0d977b5a41071526d697eec94ac41735", + "reference": "bf16003f0d977b5a41071526d697eec94ac41735", "shasum": "" }, "require": { - "illuminate/support": "^9.0|^10.0", + "illuminate/support": "^9.0|^10.0|^11.0", "php": "^8.0" }, "require-dev": { - "livewire/livewire": "^2.3", - "orchestra/testbench": "^7.0|^8.0", + "livewire/livewire": "^3.0", + "livewire/volt": "^1.3", + "orchestra/testbench": "^7.0|^8.0|^9.0", "phpunit/phpunit": "^9.0|^10.0" }, "type": "library", @@ -309,7 +449,7 @@ "type": "github" } ], - "time": "2023-03-12T12:17:29+00:00" + "time": "2024-01-21T14:53:34+00:00" }, { "name": "dflydev/dot-access-data", @@ -481,16 +621,16 @@ }, { "name": "doctrine/dbal", - "version": "3.7.0", + "version": "3.8.3", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "00d03067f07482f025d41ab55e4ba0db5eca2cdf" + "reference": "db922ba9436b7b18a23d1653a0b41ff2369ca41c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/00d03067f07482f025d41ab55e4ba0db5eca2cdf", - "reference": "00d03067f07482f025d41ab55e4ba0db5eca2cdf", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/db922ba9436b7b18a23d1653a0b41ff2369ca41c", + "reference": "db922ba9436b7b18a23d1653a0b41ff2369ca41c", "shasum": "" }, "require": { @@ -506,14 +646,14 @@ "doctrine/coding-standard": "12.0.0", "fig/log-test": "^1", "jetbrains/phpstorm-stubs": "2023.1", - "phpstan/phpstan": "1.10.35", + "phpstan/phpstan": "1.10.58", "phpstan/phpstan-strict-rules": "^1.5", - "phpunit/phpunit": "9.6.13", + "phpunit/phpunit": "9.6.16", "psalm/plugin-phpunit": "0.18.4", "slevomat/coding-standard": "8.13.1", - "squizlabs/php_codesniffer": "3.7.2", - "symfony/cache": "^5.4|^6.0", - "symfony/console": "^4.4|^5.4|^6.0", + "squizlabs/php_codesniffer": "3.9.0", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/console": "^4.4|^5.4|^6.0|^7.0", "vimeo/psalm": "4.30.0" }, "suggest": { @@ -574,7 +714,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.7.0" + "source": "https://github.com/doctrine/dbal/tree/3.8.3" }, "funding": [ { @@ -590,20 +730,20 @@ "type": "tidelift" } ], - "time": "2023-09-26T20:56:55+00:00" + "time": "2024-03-03T15:55:06+00:00" }, { "name": "doctrine/deprecations", - "version": "v1.1.1", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3" + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", - "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", "shasum": "" }, "require": { @@ -635,9 +775,9 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/v1.1.1" + "source": "https://github.com/doctrine/deprecations/tree/1.1.3" }, - "time": "2023-06-03T09:27:29+00:00" + "time": "2024-01-30T19:34:25+00:00" }, { "name": "doctrine/event-manager", @@ -732,16 +872,16 @@ }, { "name": "doctrine/inflector", - "version": "2.0.8", + "version": "2.0.10", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff" + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/f9301a5b2fb1216b2b08f02ba04dc45423db6bff", - "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc", + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc", "shasum": "" }, "require": { @@ -803,7 +943,7 @@ ], "support": { "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/2.0.8" + "source": "https://github.com/doctrine/inflector/tree/2.0.10" }, "funding": [ { @@ -819,31 +959,31 @@ "type": "tidelift" } ], - "time": "2023-06-16T13:40:37+00:00" + "time": "2024-02-18T20:23:39+00:00" }, { "name": "doctrine/lexer", - "version": "3.0.0", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "84a527db05647743d50373e0ec53a152f2cde568" + "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/84a527db05647743d50373e0ec53a152f2cde568", - "reference": "84a527db05647743d50373e0ec53a152f2cde568", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", + "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", "shasum": "" }, "require": { "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^10", - "phpstan/phpstan": "^1.9", - "phpunit/phpunit": "^9.5", + "doctrine/coding-standard": "^12", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^10.5", "psalm/plugin-phpunit": "^0.18.3", - "vimeo/psalm": "^5.0" + "vimeo/psalm": "^5.21" }, "type": "library", "autoload": { @@ -880,7 +1020,7 @@ ], "support": { "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/3.0.0" + "source": "https://github.com/doctrine/lexer/tree/3.0.1" }, "funding": [ { @@ -896,7 +1036,7 @@ "type": "tidelift" } ], - "time": "2022-12-15T16:57:16+00:00" + "time": "2024-02-05T11:56:58+00:00" }, { "name": "dragonmantank/cron-expression", @@ -961,16 +1101,16 @@ }, { "name": "egulias/email-validator", - "version": "4.0.1", + "version": "4.0.2", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "3a85486b709bc384dae8eb78fb2eec649bdb64ff" + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/3a85486b709bc384dae8eb78fb2eec649bdb64ff", - "reference": "3a85486b709bc384dae8eb78fb2eec649bdb64ff", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ebaaf5be6c0286928352e054f2d5125608e5405e", + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e", "shasum": "" }, "require": { @@ -979,8 +1119,8 @@ "symfony/polyfill-intl-idn": "^1.26" }, "require-dev": { - "phpunit/phpunit": "^9.5.27", - "vimeo/psalm": "^4.30" + "phpunit/phpunit": "^10.2", + "vimeo/psalm": "^5.12" }, "suggest": { "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" @@ -1016,7 +1156,7 @@ ], "support": { "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/4.0.1" + "source": "https://github.com/egulias/EmailValidator/tree/4.0.2" }, "funding": [ { @@ -1024,30 +1164,33 @@ "type": "github" } ], - "time": "2023-01-14T14:17:03+00:00" + "time": "2023-10-06T06:47:41+00:00" }, { "name": "filament/actions", - "version": "v3.0.62", + "version": "v3.2.50", "source": { "type": "git", "url": "https://github.com/filamentphp/actions.git", - "reference": "bdb469056fe3b8265ce5b7c7f115338783cedb5c" + "reference": "07bb64870f6552e4e979894b6eea1404cad2d0f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/actions/zipball/bdb469056fe3b8265ce5b7c7f115338783cedb5c", - "reference": "bdb469056fe3b8265ce5b7c7f115338783cedb5c", + "url": "https://api.github.com/repos/filamentphp/actions/zipball/07bb64870f6552e4e979894b6eea1404cad2d0f1", + "reference": "07bb64870f6552e4e979894b6eea1404cad2d0f1", "shasum": "" }, "require": { + "anourvalar/eloquent-serialize": "^1.2", "filament/forms": "self.version", "filament/infolists": "self.version", "filament/notifications": "self.version", "filament/support": "self.version", - "illuminate/contracts": "^10.0", - "illuminate/database": "^10.0", - "illuminate/support": "^10.0", + "illuminate/contracts": "^10.45|^11.0", + "illuminate/database": "^10.45|^11.0", + "illuminate/support": "^10.45|^11.0", + "league/csv": "^9.14", + "openspout/openspout": "^4.23", "php": "^8.1", "spatie/laravel-package-tools": "^1.9" }, @@ -1074,20 +1217,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2023-09-25T19:23:47+00:00" + "time": "2024-03-14T14:13:40+00:00" }, { "name": "filament/filament", - "version": "v3.0.62", + "version": "v3.2.50", "source": { "type": "git", "url": "https://github.com/filamentphp/panels.git", - "reference": "d70fc7bf035ec5162c07bd2c71b367d78d86ba5a" + "reference": "39ca57471511129e854d138528cefad335c88b08" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/panels/zipball/d70fc7bf035ec5162c07bd2c71b367d78d86ba5a", - "reference": "d70fc7bf035ec5162c07bd2c71b367d78d86ba5a", + "url": "https://api.github.com/repos/filamentphp/panels/zipball/39ca57471511129e854d138528cefad335c88b08", + "reference": "39ca57471511129e854d138528cefad335c88b08", "shasum": "" }, "require": { @@ -1099,16 +1242,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|^11.0", + "illuminate/console": "^10.45|^11.0", + "illuminate/contracts": "^10.45|^11.0", + "illuminate/cookie": "^10.45|^11.0", + "illuminate/database": "^10.45|^11.0", + "illuminate/http": "^10.45|^11.0", + "illuminate/routing": "^10.45|^11.0", + "illuminate/session": "^10.45|^11.0", + "illuminate/support": "^10.45|^11.0", + "illuminate/view": "^10.45|^11.0", "php": "^8.1", "spatie/laravel-package-tools": "^1.9" }, @@ -1139,33 +1282,33 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2023-09-25T19:23:50+00:00" + "time": "2024-03-14T14:14:03+00:00" }, { "name": "filament/forms", - "version": "v3.0.62", + "version": "v3.2.50", "source": { "type": "git", "url": "https://github.com/filamentphp/forms.git", - "reference": "78bec0ef90965d0da8c61a18b2ca2065aca7070c" + "reference": "21515f37ee2de29f9753302112723a7b73162793" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/forms/zipball/78bec0ef90965d0da8c61a18b2ca2065aca7070c", - "reference": "78bec0ef90965d0da8c61a18b2ca2065aca7070c", + "url": "https://api.github.com/repos/filamentphp/forms/zipball/21515f37ee2de29f9753302112723a7b73162793", + "reference": "21515f37ee2de29f9753302112723a7b73162793", "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|^11.0", + "illuminate/contracts": "^10.45|^11.0", + "illuminate/database": "^10.45|^11.0", + "illuminate/filesystem": "^10.45|^11.0", + "illuminate/support": "^10.45|^11.0", + "illuminate/validation": "^10.45|^11.0", + "illuminate/view": "^10.45|^11.0", "php": "^8.1", "spatie/laravel-package-tools": "^1.9" }, @@ -1195,31 +1338,31 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2023-09-25T19:23:44+00:00" + "time": "2024-03-14T10:54:01+00:00" }, { "name": "filament/infolists", - "version": "v3.0.62", + "version": "v3.2.50", "source": { "type": "git", "url": "https://github.com/filamentphp/infolists.git", - "reference": "fce869f93bbfbcd927222a5cca468c9d943dadbc" + "reference": "72217e2ae055bfea51feb3351e00f269b188796d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/infolists/zipball/fce869f93bbfbcd927222a5cca468c9d943dadbc", - "reference": "fce869f93bbfbcd927222a5cca468c9d943dadbc", + "url": "https://api.github.com/repos/filamentphp/infolists/zipball/72217e2ae055bfea51feb3351e00f269b188796d", + "reference": "72217e2ae055bfea51feb3351e00f269b188796d", "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|^11.0", + "illuminate/contracts": "^10.45|^11.0", + "illuminate/database": "^10.45|^11.0", + "illuminate/filesystem": "^10.45|^11.0", + "illuminate/support": "^10.45|^11.0", + "illuminate/view": "^10.45|^11.0", "php": "^8.1", "spatie/laravel-package-tools": "^1.9" }, @@ -1246,29 +1389,29 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2023-09-25T19:23:47+00:00" + "time": "2024-03-14T10:54:02+00:00" }, { "name": "filament/notifications", - "version": "v3.0.62", + "version": "v3.2.50", "source": { "type": "git", "url": "https://github.com/filamentphp/notifications.git", - "reference": "f9eb47d71e53f3f31af995ce09facb895fe605d4" + "reference": "a25fe75eeebc61d4a6e2bfa88e9e501a5f8020bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/notifications/zipball/f9eb47d71e53f3f31af995ce09facb895fe605d4", - "reference": "f9eb47d71e53f3f31af995ce09facb895fe605d4", + "url": "https://api.github.com/repos/filamentphp/notifications/zipball/a25fe75eeebc61d4a6e2bfa88e9e501a5f8020bd", + "reference": "a25fe75eeebc61d4a6e2bfa88e9e501a5f8020bd", "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|^11.0", + "illuminate/filesystem": "^10.45|^11.0", + "illuminate/notifications": "^10.45|^11.0", + "illuminate/support": "^10.45|^11.0", "php": "^8.1", "spatie/laravel-package-tools": "^1.9" }, @@ -1298,34 +1441,34 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2023-09-25T19:23:46+00:00" + "time": "2024-03-14T10:54:06+00:00" }, { "name": "filament/support", - "version": "v3.0.62", + "version": "v3.2.50", "source": { "type": "git", "url": "https://github.com/filamentphp/support.git", - "reference": "48f4aa87829678bfe50a6e18a81a6428b47b5948" + "reference": "f10144d4758d7873ee8d471530a4455a1105ca53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/support/zipball/48f4aa87829678bfe50a6e18a81a6428b47b5948", - "reference": "48f4aa87829678bfe50a6e18a81a6428b47b5948", + "url": "https://api.github.com/repos/filamentphp/support/zipball/f10144d4758d7873ee8d471530a4455a1105ca53", + "reference": "f10144d4758d7873ee8d471530a4455a1105ca53", "shasum": "" }, "require": { - "blade-ui-kit/blade-heroicons": "^2.0", + "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", - "livewire/livewire": "^3.0", + "illuminate/contracts": "^10.45|^11.0", + "illuminate/support": "^10.45|^11.0", + "illuminate/view": "^10.45|^11.0", + "livewire/livewire": "^3.4.9", "php": "^8.1", - "ryangjchandler/blade-capture-directive": "^0.2|^0.3", + "ryangjchandler/blade-capture-directive": "^0.2|^0.3|^1.0", "spatie/color": "^1.5", - "spatie/invade": "^1.0", + "spatie/invade": "^1.0|^2.0", "spatie/laravel-package-tools": "^1.9", "symfony/html-sanitizer": "^6.1" }, @@ -1355,32 +1498,32 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2023-09-25T19:24:07+00:00" + "time": "2024-03-14T14:14:06+00:00" }, { "name": "filament/tables", - "version": "v3.0.62", + "version": "v3.2.50", "source": { "type": "git", "url": "https://github.com/filamentphp/tables.git", - "reference": "4fd382c363d3b24a9ca3238a83f4bd5ecfdcb475" + "reference": "260fa164f4f5c792da40c0a3fa8bb274b64dbf56" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/tables/zipball/4fd382c363d3b24a9ca3238a83f4bd5ecfdcb475", - "reference": "4fd382c363d3b24a9ca3238a83f4bd5ecfdcb475", + "url": "https://api.github.com/repos/filamentphp/tables/zipball/260fa164f4f5c792da40c0a3fa8bb274b64dbf56", + "reference": "260fa164f4f5c792da40c0a3fa8bb274b64dbf56", "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|^11.0", + "illuminate/contracts": "^10.45|^11.0", + "illuminate/database": "^10.45|^11.0", + "illuminate/filesystem": "^10.45|^11.0", + "illuminate/support": "^10.45|^11.0", + "illuminate/view": "^10.45|^11.0", "kirschbaum-development/eloquent-power-joins": "^3.0", "php": "^8.1", "spatie/laravel-package-tools": "^1.9" @@ -1408,20 +1551,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2023-09-25T12:42:22+00:00" + "time": "2024-03-14T10:54:32+00:00" }, { "name": "filament/widgets", - "version": "v3.0.62", + "version": "v3.2.50", "source": { "type": "git", "url": "https://github.com/filamentphp/widgets.git", - "reference": "d28b6e814412c6927218e9b53264769fa3a7fe91" + "reference": "38a011b9a556a2786028eb80aa135e171569d2af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/widgets/zipball/d28b6e814412c6927218e9b53264769fa3a7fe91", - "reference": "d28b6e814412c6927218e9b53264769fa3a7fe91", + "url": "https://api.github.com/repos/filamentphp/widgets/zipball/38a011b9a556a2786028eb80aa135e171569d2af", + "reference": "38a011b9a556a2786028eb80aa135e171569d2af", "shasum": "" }, "require": { @@ -1452,25 +1595,25 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2023-09-25T12:42:21+00:00" + "time": "2024-03-14T10:54:33+00:00" }, { "name": "fruitcake/php-cors", - "version": "v1.2.0", + "version": "v1.3.0", "source": { "type": "git", "url": "https://github.com/fruitcake/php-cors.git", - "reference": "58571acbaa5f9f462c9c77e911700ac66f446d4e" + "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/58571acbaa5f9f462c9c77e911700ac66f446d4e", - "reference": "58571acbaa5f9f462c9c77e911700ac66f446d4e", + "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/3d158f36e7875e2f040f37bc0573956240a5a38b", + "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b", "shasum": "" }, "require": { "php": "^7.4|^8.0", - "symfony/http-foundation": "^4.4|^5.4|^6" + "symfony/http-foundation": "^4.4|^5.4|^6|^7" }, "require-dev": { "phpstan/phpstan": "^1.4", @@ -1480,7 +1623,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.1-dev" + "dev-master": "1.2-dev" } }, "autoload": { @@ -1511,7 +1654,7 @@ ], "support": { "issues": "https://github.com/fruitcake/php-cors/issues", - "source": "https://github.com/fruitcake/php-cors/tree/v1.2.0" + "source": "https://github.com/fruitcake/php-cors/tree/v1.3.0" }, "funding": [ { @@ -1523,28 +1666,28 @@ "type": "github" } ], - "time": "2022-02-20T15:07:15+00:00" + "time": "2023-10-12T05:21:21+00:00" }, { "name": "graham-campbell/result-type", - "version": "v1.1.1", + "version": "v1.1.2", "source": { "type": "git", "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831" + "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831", - "reference": "672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/fbd48bce38f73f8a4ec8583362e732e4095e5862", + "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862", "shasum": "" }, "require": { "php": "^7.2.5 || ^8.0", - "phpoption/phpoption": "^1.9.1" + "phpoption/phpoption": "^1.9.2" }, "require-dev": { - "phpunit/phpunit": "^8.5.32 || ^9.6.3 || ^10.0.12" + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" }, "type": "library", "autoload": { @@ -1573,7 +1716,7 @@ ], "support": { "issues": "https://github.com/GrahamCampbell/Result-Type/issues", - "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.1" + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.2" }, "funding": [ { @@ -1585,32 +1728,38 @@ "type": "tidelift" } ], - "time": "2023-02-25T20:23:15+00:00" + "time": "2023-11-12T22:16:48+00:00" }, { "name": "guzzlehttp/uri-template", - "version": "v1.0.2", + "version": "v1.0.3", "source": { "type": "git", "url": "https://github.com/guzzle/uri-template.git", - "reference": "61bf437fc2197f587f6857d3ff903a24f1731b5d" + "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/uri-template/zipball/61bf437fc2197f587f6857d3ff903a24f1731b5d", - "reference": "61bf437fc2197f587f6857d3ff903a24f1731b5d", + "url": "https://api.github.com/repos/guzzle/uri-template/zipball/ecea8feef63bd4fef1f037ecb288386999ecc11c", + "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c", "shasum": "" }, "require": { "php": "^7.2.5 || ^8.0", - "symfony/polyfill-php80": "^1.17" + "symfony/polyfill-php80": "^1.24" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", - "phpunit/phpunit": "^8.5.19 || ^9.5.8", + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.36 || ^9.6.15", "uri-template/tests": "1.0.0" }, "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, "autoload": { "psr-4": { "GuzzleHttp\\UriTemplate\\": "src" @@ -1649,7 +1798,7 @@ ], "support": { "issues": "https://github.com/guzzle/uri-template/issues", - "source": "https://github.com/guzzle/uri-template/tree/v1.0.2" + "source": "https://github.com/guzzle/uri-template/tree/v1.0.3" }, "funding": [ { @@ -1665,31 +1814,31 @@ "type": "tidelift" } ], - "time": "2023-08-27T10:19:19+00:00" + "time": "2023-12-03T19:50:20+00:00" }, { "name": "kirschbaum-development/eloquent-power-joins", - "version": "3.2.4", + "version": "3.5.0", "source": { "type": "git", "url": "https://github.com/kirschbaum-development/eloquent-power-joins.git", - "reference": "fadc20d436b0693a34c4b611d07954818e46eb4d" + "reference": "13feb3692ab6c0475b2c05de131d5f5822fb250a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/kirschbaum-development/eloquent-power-joins/zipball/fadc20d436b0693a34c4b611d07954818e46eb4d", - "reference": "fadc20d436b0693a34c4b611d07954818e46eb4d", + "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": { @@ -1725,26 +1874,26 @@ ], "support": { "issues": "https://github.com/kirschbaum-development/eloquent-power-joins/issues", - "source": "https://github.com/kirschbaum-development/eloquent-power-joins/tree/3.2.4" + "source": "https://github.com/kirschbaum-development/eloquent-power-joins/tree/3.5.0" }, - "time": "2023-09-12T17:02:05+00:00" + "time": "2024-02-13T15:40:14+00:00" }, { "name": "laravel/framework", - "version": "v10.25.1", + "version": "v10.48.3", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "cd0a440f43eaaad247d6f6575d3782c156ec913c" + "reference": "5791c052b41c6b593556adc687076bfbdd13c501" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/cd0a440f43eaaad247d6f6575d3782c156ec913c", - "reference": "cd0a440f43eaaad247d6f6575d3782c156ec913c", + "url": "https://api.github.com/repos/laravel/framework/zipball/5791c052b41c6b593556adc687076bfbdd13c501", + "reference": "5791c052b41c6b593556adc687076bfbdd13c501", "shasum": "" }, "require": { - "brick/math": "^0.9.3|^0.10.2|^0.11", + "brick/math": "^0.9.3|^0.10.2|^0.11|^0.12", "composer-runtime-api": "^2.2", "doctrine/inflector": "^2.0.5", "dragonmantank/cron-expression": "^3.3.2", @@ -1773,7 +1922,7 @@ "symfony/console": "^6.2", "symfony/error-handler": "^6.2", "symfony/finder": "^6.2", - "symfony/http-foundation": "^6.2", + "symfony/http-foundation": "^6.4", "symfony/http-kernel": "^6.2", "symfony/mailer": "^6.2", "symfony/mime": "^6.2", @@ -1786,6 +1935,10 @@ "voku/portable-ascii": "^2.0" }, "conflict": { + "carbonphp/carbon-doctrine-types": ">=3.0", + "doctrine/dbal": ">=4.0", + "mockery/mockery": "1.6.8", + "phpunit/phpunit": ">=11.0.0", "tightenco/collect": "<5.5.33" }, "provide": { @@ -1840,13 +1993,15 @@ "league/flysystem-read-only": "^3.3", "league/flysystem-sftp-v3": "^3.0", "mockery/mockery": "^1.5.1", - "orchestra/testbench-core": "^8.12", + "nyholm/psr7": "^1.2", + "orchestra/testbench-core": "^8.18", "pda/pheanstalk": "^4.0", "phpstan/phpstan": "^1.4.7", "phpunit/phpunit": "^10.0.7", "predis/predis": "^2.0.2", "symfony/cache": "^6.2", - "symfony/http-client": "^6.2.4" + "symfony/http-client": "^6.2.4", + "symfony/psr-http-message-bridge": "^2.0" }, "suggest": { "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).", @@ -1895,6 +2050,7 @@ "files": [ "src/Illuminate/Collections/helpers.php", "src/Illuminate/Events/functions.php", + "src/Illuminate/Filesystem/functions.php", "src/Illuminate/Foundation/helpers.php", "src/Illuminate/Support/helpers.php" ], @@ -1927,27 +2083,27 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2023-09-27T01:29:32+00:00" + "time": "2024-03-15T10:17:07+00:00" }, { "name": "laravel/prompts", - "version": "v0.1.9", + "version": "v0.1.16", "source": { "type": "git", "url": "https://github.com/laravel/prompts.git", - "reference": "b603410e7af1040aa2d29e0a2cdca570bb63e827" + "reference": "ca6872ab6aec3ab61db3a61f83a6caf764ec7781" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/prompts/zipball/b603410e7af1040aa2d29e0a2cdca570bb63e827", - "reference": "b603410e7af1040aa2d29e0a2cdca570bb63e827", + "url": "https://api.github.com/repos/laravel/prompts/zipball/ca6872ab6aec3ab61db3a61f83a6caf764ec7781", + "reference": "ca6872ab6aec3ab61db3a61f83a6caf764ec7781", "shasum": "" }, "require": { "ext-mbstring": "*", "illuminate/collections": "^10.0|^11.0", "php": "^8.1", - "symfony/console": "^6.2" + "symfony/console": "^6.2|^7.0" }, "conflict": { "illuminate/console": ">=10.17.0 <10.25.0", @@ -1956,7 +2112,7 @@ "require-dev": { "mockery/mockery": "^1.5", "pestphp/pest": "^2.3", - "phpstan/phpstan": "^1.10", + "phpstan/phpstan": "^1.11", "phpstan/phpstan-mockery": "^1.1" }, "suggest": { @@ -1982,22 +2138,22 @@ ], "support": { "issues": "https://github.com/laravel/prompts/issues", - "source": "https://github.com/laravel/prompts/tree/v0.1.9" + "source": "https://github.com/laravel/prompts/tree/v0.1.16" }, - "time": "2023-09-26T13:14:20+00:00" + "time": "2024-02-21T19:25:27+00:00" }, { "name": "laravel/serializable-closure", - "version": "v1.3.1", + "version": "v1.3.3", "source": { "type": "git", "url": "https://github.com/laravel/serializable-closure.git", - "reference": "e5a3057a5591e1cfe8183034b0203921abe2c902" + "reference": "3dbf8a8e914634c48d389c1234552666b3d43754" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/e5a3057a5591e1cfe8183034b0203921abe2c902", - "reference": "e5a3057a5591e1cfe8183034b0203921abe2c902", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/3dbf8a8e914634c48d389c1234552666b3d43754", + "reference": "3dbf8a8e914634c48d389c1234552666b3d43754", "shasum": "" }, "require": { @@ -2044,20 +2200,20 @@ "issues": "https://github.com/laravel/serializable-closure/issues", "source": "https://github.com/laravel/serializable-closure" }, - "time": "2023-07-14T13:56:28+00:00" + "time": "2023-11-08T14:08:06+00:00" }, { "name": "league/commonmark", - "version": "2.4.1", + "version": "2.4.2", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "3669d6d5f7a47a93c08ddff335e6d945481a1dd5" + "reference": "91c24291965bd6d7c46c46a12ba7492f83b1cadf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/3669d6d5f7a47a93c08ddff335e6d945481a1dd5", - "reference": "3669d6d5f7a47a93c08ddff335e6d945481a1dd5", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/91c24291965bd6d7c46c46a12ba7492f83b1cadf", + "reference": "91c24291965bd6d7c46c46a12ba7492f83b1cadf", "shasum": "" }, "require": { @@ -2070,7 +2226,7 @@ }, "require-dev": { "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", + "commonmark/cmark": "0.30.3", "commonmark/commonmark.js": "0.30.0", "composer/package-versions-deprecated": "^1.8", "embed/embed": "^4.4", @@ -2080,10 +2236,10 @@ "michelf/php-markdown": "^1.4 || ^2.0", "nyholm/psr7": "^1.5", "phpstan/phpstan": "^1.8.2", - "phpunit/phpunit": "^9.5.21", + "phpunit/phpunit": "^9.5.21 || ^10.5.9 || ^11.0.0", "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3 | ^6.0", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", + "symfony/finder": "^5.3 | ^6.0 || ^7.0", + "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 || ^7.0", "unleashedtech/php-coding-standard": "^3.1.1", "vimeo/psalm": "^4.24.0 || ^5.0.0" }, @@ -2150,7 +2306,7 @@ "type": "tidelift" } ], - "time": "2023-08-30T16:55:00+00:00" + "time": "2024-02-02T11:59:32+00:00" }, { "name": "league/config", @@ -2234,18 +2390,107 @@ ], "time": "2022-12-11T20:36:23+00:00" }, + { + "name": "league/csv", + "version": "9.15.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/csv.git", + "reference": "fa7e2441c0bc9b2360f4314fd6c954f7ff40d435" + }, + "dist": { + "type": "zip", + "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.4", + "ext-dom": "*", + "ext-xdebug": "*", + "friendsofphp/php-cs-fixer": "^v3.22.0", + "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", + "ext-iconv": "Needed to ease transcoding CSV using iconv stream filters" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.x-dev" + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "League\\Csv\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://github.com/nyamsprod/", + "role": "Developer" + } + ], + "description": "CSV data manipulation made easy in PHP", + "homepage": "https://csv.thephpleague.com", + "keywords": [ + "convert", + "csv", + "export", + "filter", + "import", + "read", + "transform", + "write" + ], + "support": { + "docs": "https://csv.thephpleague.com", + "issues": "https://github.com/thephpleague/csv/issues", + "rss": "https://github.com/thephpleague/csv/releases.atom", + "source": "https://github.com/thephpleague/csv" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2024-02-20T20:00:00+00:00" + }, { "name": "league/flysystem", - "version": "3.16.0", + "version": "3.25.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "4fdf372ca6b63c6e281b1c01a624349ccb757729" + "reference": "4c44347133618cccd9b3df1729647a1577b4ad99" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/4fdf372ca6b63c6e281b1c01a624349ccb757729", - "reference": "4fdf372ca6b63c6e281b1c01a624349ccb757729", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/4c44347133618cccd9b3df1729647a1577b4ad99", + "reference": "4c44347133618cccd9b3df1729647a1577b4ad99", "shasum": "" }, "require": { @@ -2263,9 +2508,9 @@ "symfony/http-client": "<5.2" }, "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.1", - "aws/aws-sdk-php": "^3.220.0", + "async-aws/s3": "^1.5 || ^2.0", + "async-aws/simple-s3": "^1.1 || ^2.0", + "aws/aws-sdk-php": "^3.295.10", "composer/semver": "^3.0", "ext-fileinfo": "*", "ext-ftp": "*", @@ -2273,10 +2518,10 @@ "friendsofphp/php-cs-fixer": "^3.5", "google/cloud-storage": "^1.23", "microsoft/azure-storage-blob": "^1.1", - "phpseclib/phpseclib": "^3.0.14", - "phpstan/phpstan": "^0.12.26", + "phpseclib/phpseclib": "^3.0.36", + "phpstan/phpstan": "^1.10", "phpunit/phpunit": "^9.5.11|^10.0", - "sabre/dav": "^4.3.1" + "sabre/dav": "^4.6.0" }, "type": "library", "autoload": { @@ -2310,7 +2555,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/3.16.0" + "source": "https://github.com/thephpleague/flysystem/tree/3.25.0" }, "funding": [ { @@ -2322,20 +2567,20 @@ "type": "github" } ], - "time": "2023-09-07T19:22:17+00:00" + "time": "2024-03-09T17:06:45+00:00" }, { "name": "league/flysystem-local", - "version": "3.16.0", + "version": "3.23.1", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem-local.git", - "reference": "ec7383f25642e6fd4bb0c9554fc2311245391781" + "reference": "b884d2bf9b53bb4804a56d2df4902bb51e253f00" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/ec7383f25642e6fd4bb0c9554fc2311245391781", - "reference": "ec7383f25642e6fd4bb0c9554fc2311245391781", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/b884d2bf9b53bb4804a56d2df4902bb51e253f00", + "reference": "b884d2bf9b53bb4804a56d2df4902bb51e253f00", "shasum": "" }, "require": { @@ -2370,7 +2615,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem-local/issues", - "source": "https://github.com/thephpleague/flysystem-local/tree/3.16.0" + "source": "https://github.com/thephpleague/flysystem-local/tree/3.23.1" }, "funding": [ { @@ -2382,20 +2627,20 @@ "type": "github" } ], - "time": "2023-08-30T10:23:59+00:00" + "time": "2024-01-26T18:25:23+00:00" }, { "name": "league/mime-type-detection", - "version": "1.13.0", + "version": "1.15.0", "source": { "type": "git", "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "a6dfb1194a2946fcdc1f38219445234f65b35c96" + "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/a6dfb1194a2946fcdc1f38219445234f65b35c96", - "reference": "a6dfb1194a2946fcdc1f38219445234f65b35c96", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301", + "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301", "shasum": "" }, "require": { @@ -2426,7 +2671,7 @@ "description": "Mime-type detection for Flysystem", "support": { "issues": "https://github.com/thephpleague/mime-type-detection/issues", - "source": "https://github.com/thephpleague/mime-type-detection/tree/1.13.0" + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.15.0" }, "funding": [ { @@ -2438,20 +2683,20 @@ "type": "tidelift" } ], - "time": "2023-08-05T12:09:49+00:00" + "time": "2024-01-28T23:22:08+00:00" }, { "name": "league/uri", - "version": "7.3.0", + "version": "7.4.0", "source": { "type": "git", "url": "https://github.com/thephpleague/uri.git", - "reference": "36743c3961bb82bf93da91917b6bced0358a8d45" + "reference": "bf414ba956d902f5d98bf9385fcf63954f09dce5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/uri/zipball/36743c3961bb82bf93da91917b6bced0358a8d45", - "reference": "36743c3961bb82bf93da91917b6bced0358a8d45", + "url": "https://api.github.com/repos/thephpleague/uri/zipball/bf414ba956d902f5d98bf9385fcf63954f09dce5", + "reference": "bf414ba956d902f5d98bf9385fcf63954f09dce5", "shasum": "" }, "require": { @@ -2520,7 +2765,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/tree/7.3.0" + "source": "https://github.com/thephpleague/uri/tree/7.4.0" }, "funding": [ { @@ -2528,20 +2773,20 @@ "type": "github" } ], - "time": "2023-09-09T17:21:43+00:00" + "time": "2023-12-01T06:24:25+00:00" }, { "name": "league/uri-interfaces", - "version": "7.3.0", + "version": "7.4.0", "source": { "type": "git", "url": "https://github.com/thephpleague/uri-interfaces.git", - "reference": "c409b60ed2245ff94c965a8c798a60166db53361" + "reference": "bd8c487ec236930f7bbc42b8d374fa882fbba0f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/c409b60ed2245ff94c965a8c798a60166db53361", - "reference": "c409b60ed2245ff94c965a8c798a60166db53361", + "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/bd8c487ec236930f7bbc42b8d374fa882fbba0f3", + "reference": "bd8c487ec236930f7bbc42b8d374fa882fbba0f3", "shasum": "" }, "require": { @@ -2604,7 +2849,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-interfaces/tree/7.3.0" + "source": "https://github.com/thephpleague/uri-interfaces/tree/7.4.0" }, "funding": [ { @@ -2612,39 +2857,40 @@ "type": "github" } ], - "time": "2023-09-09T17:21:43+00:00" + "time": "2023-11-24T15:40:42+00:00" }, { "name": "livewire/livewire", - "version": "v3.0.5", + "version": "v3.4.9", "source": { "type": "git", "url": "https://github.com/livewire/livewire.git", - "reference": "37f11583c61a75d51b2146c2fe38f506ad36014b" + "reference": "c65b3f0798ab2c9338213ede3588c3cdf4e6fcc0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/livewire/livewire/zipball/37f11583c61a75d51b2146c2fe38f506ad36014b", - "reference": "37f11583c61a75d51b2146c2fe38f506ad36014b", + "url": "https://api.github.com/repos/livewire/livewire/zipball/c65b3f0798ab2c9338213ede3588c3cdf4e6fcc0", + "reference": "c65b3f0798ab2c9338213ede3588c3cdf4e6fcc0", "shasum": "" }, "require": { - "illuminate/database": "^10.0", - "illuminate/support": "^10.0", - "illuminate/validation": "^10.0", + "illuminate/database": "^10.0|^11.0", + "illuminate/routing": "^10.0|^11.0", + "illuminate/support": "^10.0|^11.0", + "illuminate/validation": "^10.0|^11.0", "league/mime-type-detection": "^1.9", "php": "^8.1", - "symfony/http-kernel": "^5.0|^6.0" + "symfony/http-kernel": "^6.2|^7.0" }, "require-dev": { "calebporzio/sushi": "^2.1", - "laravel/framework": "^10.0", + "laravel/framework": "^10.0|^11.0", "laravel/prompts": "^0.1.6", "mockery/mockery": "^1.3.1", - "orchestra/testbench": "^7.0|^8.0", - "orchestra/testbench-dusk": "^7.0|^8.0", - "phpunit/phpunit": "^9.0", - "psy/psysh": "@stable" + "orchestra/testbench": "8.20.0|^9.0", + "orchestra/testbench-dusk": "8.20.0|^9.0", + "phpunit/phpunit": "^10.4", + "psy/psysh": "^0.11.22|^0.12" }, "type": "library", "extra": { @@ -2678,7 +2924,7 @@ "description": "A front-end framework for Laravel.", "support": { "issues": "https://github.com/livewire/livewire/issues", - "source": "https://github.com/livewire/livewire/tree/v3.0.5" + "source": "https://github.com/livewire/livewire/tree/v3.4.9" }, "funding": [ { @@ -2686,7 +2932,7 @@ "type": "github" } ], - "time": "2023-09-16T11:51:32+00:00" + "time": "2024-03-14T14:03:32+00:00" }, { "name": "masterminds/html5", @@ -2757,16 +3003,16 @@ }, { "name": "monolog/monolog", - "version": "3.4.0", + "version": "3.5.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "e2392369686d420ca32df3803de28b5d6f76867d" + "reference": "c915e2634718dbc8a4a15c61b0e62e7a44e14448" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/e2392369686d420ca32df3803de28b5d6f76867d", - "reference": "e2392369686d420ca32df3803de28b5d6f76867d", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c915e2634718dbc8a4a15c61b0e62e7a44e14448", + "reference": "c915e2634718dbc8a4a15c61b0e62e7a44e14448", "shasum": "" }, "require": { @@ -2842,7 +3088,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/3.4.0" + "source": "https://github.com/Seldaek/monolog/tree/3.5.0" }, "funding": [ { @@ -2854,23 +3100,24 @@ "type": "tidelift" } ], - "time": "2023-06-21T08:46:11+00:00" + "time": "2023-10-27T15:32:31+00:00" }, { "name": "nesbot/carbon", - "version": "2.71.0", + "version": "2.72.3", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "98276233188583f2ff845a0f992a235472d9466a" + "reference": "0c6fd108360c562f6e4fd1dedb8233b423e91c83" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/98276233188583f2ff845a0f992a235472d9466a", - "reference": "98276233188583f2ff845a0f992a235472d9466a", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/0c6fd108360c562f6e4fd1dedb8233b423e91c83", + "reference": "0c6fd108360c562f6e4fd1dedb8233b423e91c83", "shasum": "" }, "require": { + "carbonphp/carbon-doctrine-types": "*", "ext-json": "*", "php": "^7.1.8 || ^8.0", "psr/clock": "^1.0", @@ -2882,8 +3129,8 @@ "psr/clock-implementation": "1.0" }, "require-dev": { - "doctrine/dbal": "^2.0 || ^3.1.4", - "doctrine/orm": "^2.7", + "doctrine/dbal": "^2.0 || ^3.1.4 || ^4.0", + "doctrine/orm": "^2.7 || ^3.0", "friendsofphp/php-cs-fixer": "^3.0", "kylekatarnls/multi-tester": "^2.0", "ondrejmirtes/better-reflection": "*", @@ -2960,35 +3207,35 @@ "type": "tidelift" } ], - "time": "2023-09-25T11:31:05+00:00" + "time": "2024-01-25T10:35:09+00:00" }, { "name": "nette/schema", - "version": "v1.2.4", + "version": "v1.3.0", "source": { "type": "git", "url": "https://github.com/nette/schema.git", - "reference": "c9ff517a53903b3d4e29ec547fb20feecb05b8ab" + "reference": "a6d3a6d1f545f01ef38e60f375d1cf1f4de98188" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/c9ff517a53903b3d4e29ec547fb20feecb05b8ab", - "reference": "c9ff517a53903b3d4e29ec547fb20feecb05b8ab", + "url": "https://api.github.com/repos/nette/schema/zipball/a6d3a6d1f545f01ef38e60f375d1cf1f4de98188", + "reference": "a6d3a6d1f545f01ef38e60f375d1cf1f4de98188", "shasum": "" }, "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": "7.1 - 8.3" + "nette/utils": "^4.0", + "php": "8.1 - 8.3" }, "require-dev": { - "nette/tester": "^2.3 || ^2.4", + "nette/tester": "^2.4", "phpstan/phpstan-nette": "^1.0", - "tracy/tracy": "^2.7" + "tracy/tracy": "^2.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2-dev" + "dev-master": "1.3-dev" } }, "autoload": { @@ -3020,22 +3267,22 @@ ], "support": { "issues": "https://github.com/nette/schema/issues", - "source": "https://github.com/nette/schema/tree/v1.2.4" + "source": "https://github.com/nette/schema/tree/v1.3.0" }, - "time": "2023-08-05T18:56:25+00:00" + "time": "2023-12-11T11:54:22+00:00" }, { "name": "nette/utils", - "version": "v4.0.2", + "version": "v4.0.4", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "cead6637226456b35e1175cc53797dd585d85545" + "reference": "d3ad0aa3b9f934602cb3e3902ebccf10be34d218" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/cead6637226456b35e1175cc53797dd585d85545", - "reference": "cead6637226456b35e1175cc53797dd585d85545", + "url": "https://api.github.com/repos/nette/utils/zipball/d3ad0aa3b9f934602cb3e3902ebccf10be34d218", + "reference": "d3ad0aa3b9f934602cb3e3902ebccf10be34d218", "shasum": "" }, "require": { @@ -3106,9 +3353,9 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.0.2" + "source": "https://github.com/nette/utils/tree/v4.0.4" }, - "time": "2023-09-19T11:58:07+00:00" + "time": "2024-01-17T16:50:36+00:00" }, { "name": "nunomaduro/termwind", @@ -3196,18 +3443,111 @@ ], "time": "2023-02-08T01:06:31+00:00" }, + { + "name": "openspout/openspout", + "version": "v4.23.0", + "source": { + "type": "git", + "url": "https://github.com/openspout/openspout.git", + "reference": "28f6a0e45acc3377f34c26cc3866e21f0447e0c8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/openspout/openspout/zipball/28f6a0e45acc3377f34c26cc3866e21f0447e0c8", + "reference": "28f6a0e45acc3377f34c26cc3866e21f0447e0c8", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-fileinfo": "*", + "ext-filter": "*", + "ext-libxml": "*", + "ext-xmlreader": "*", + "ext-zip": "*", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" + }, + "require-dev": { + "ext-zlib": "*", + "friendsofphp/php-cs-fixer": "^3.46.0", + "infection/infection": "^0.27.9", + "phpbench/phpbench": "^1.2.15", + "phpstan/phpstan": "^1.10.55", + "phpstan/phpstan-phpunit": "^1.3.15", + "phpstan/phpstan-strict-rules": "^1.5.2", + "phpunit/phpunit": "^10.5.5" + }, + "suggest": { + "ext-iconv": "To handle non UTF-8 CSV files (if \"php-mbstring\" is not already installed or is too limited)", + "ext-mbstring": "To handle non UTF-8 CSV files (if \"iconv\" is not already installed)" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.3.x-dev" + } + }, + "autoload": { + "psr-4": { + "OpenSpout\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Adrien Loison", + "email": "adrien@box.com" + } + ], + "description": "PHP Library to read and write spreadsheet files (CSV, XLSX and ODS), in a fast and scalable way", + "homepage": "https://github.com/openspout/openspout", + "keywords": [ + "OOXML", + "csv", + "excel", + "memory", + "odf", + "ods", + "office", + "open", + "php", + "read", + "scale", + "spreadsheet", + "stream", + "write", + "xlsx" + ], + "support": { + "issues": "https://github.com/openspout/openspout/issues", + "source": "https://github.com/openspout/openspout/tree/v4.23.0" + }, + "funding": [ + { + "url": "https://paypal.me/filippotessarotto", + "type": "custom" + }, + { + "url": "https://github.com/Slamdunk", + "type": "github" + } + ], + "time": "2024-01-09T09:30:37+00:00" + }, { "name": "phpoption/phpoption", - "version": "1.9.1", + "version": "1.9.2", "source": { "type": "git", "url": "https://github.com/schmittjoh/php-option.git", - "reference": "dd3a383e599f49777d8b628dadbb90cae435b87e" + "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/dd3a383e599f49777d8b628dadbb90cae435b87e", - "reference": "dd3a383e599f49777d8b628dadbb90cae435b87e", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/80735db690fe4fc5c76dfa7f9b770634285fa820", + "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820", "shasum": "" }, "require": { @@ -3215,7 +3555,7 @@ }, "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.32 || ^9.6.3 || ^10.0.12" + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" }, "type": "library", "extra": { @@ -3257,7 +3597,7 @@ ], "support": { "issues": "https://github.com/schmittjoh/php-option/issues", - "source": "https://github.com/schmittjoh/php-option/tree/1.9.1" + "source": "https://github.com/schmittjoh/php-option/tree/1.9.2" }, "funding": [ { @@ -3269,7 +3609,7 @@ "type": "tidelift" } ], - "time": "2023-02-25T19:38:58+00:00" + "time": "2023-11-12T21:59:55+00:00" }, { "name": "psr/cache", @@ -3771,16 +4111,16 @@ }, { "name": "ramsey/uuid", - "version": "4.7.4", + "version": "4.7.5", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "60a4c63ab724854332900504274f6150ff26d286" + "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/60a4c63ab724854332900504274f6150ff26d286", - "reference": "60a4c63ab724854332900504274f6150ff26d286", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e", + "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e", "shasum": "" }, "require": { @@ -3847,7 +4187,7 @@ ], "support": { "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.7.4" + "source": "https://github.com/ramsey/uuid/tree/4.7.5" }, "funding": [ { @@ -3859,37 +4199,37 @@ "type": "tidelift" } ], - "time": "2023-04-15T23:01:58+00:00" + "time": "2023-11-08T05:53:05+00:00" }, { "name": "ryangjchandler/blade-capture-directive", - "version": "v0.3.0", + "version": "v1.0.0", "source": { "type": "git", "url": "https://github.com/ryangjchandler/blade-capture-directive.git", - "reference": "62fd2ecb50b938a46025093bcb64fcaddd531f89" + "reference": "cb6f58663d97f17bece176295240b740835e14f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ryangjchandler/blade-capture-directive/zipball/62fd2ecb50b938a46025093bcb64fcaddd531f89", - "reference": "62fd2ecb50b938a46025093bcb64fcaddd531f89", + "url": "https://api.github.com/repos/ryangjchandler/blade-capture-directive/zipball/cb6f58663d97f17bece176295240b740835e14f1", + "reference": "cb6f58663d97f17bece176295240b740835e14f1", "shasum": "" }, "require": { - "illuminate/contracts": "^9.0|^10.0", - "php": "^8.0", + "illuminate/contracts": "^10.0|^11.0", + "php": "^8.1", "spatie/laravel-package-tools": "^1.9.2" }, "require-dev": { - "nunomaduro/collision": "^6.0|^7.0", + "nunomaduro/collision": "^7.0|^8.0", "nunomaduro/larastan": "^2.0", - "orchestra/testbench": "^7.22|^8.0", - "pestphp/pest": "^1.21", - "pestphp/pest-plugin-laravel": "^1.1", + "orchestra/testbench": "^8.0|^9.0", + "pestphp/pest": "^2.0", + "pestphp/pest-plugin-laravel": "^2.0", "phpstan/extension-installer": "^1.1", "phpstan/phpstan-deprecation-rules": "^1.0", "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^9.5", + "phpunit/phpunit": "^10.0", "spatie/laravel-ray": "^1.26" }, "type": "library", @@ -3929,7 +4269,7 @@ ], "support": { "issues": "https://github.com/ryangjchandler/blade-capture-directive/issues", - "source": "https://github.com/ryangjchandler/blade-capture-directive/tree/v0.3.0" + "source": "https://github.com/ryangjchandler/blade-capture-directive/tree/v1.0.0" }, "funding": [ { @@ -3937,7 +4277,7 @@ "type": "github" } ], - "time": "2023-02-14T16:54:54+00:00" + "time": "2024-02-26T18:08:49+00:00" }, { "name": "spatie/color", @@ -4000,16 +4340,16 @@ }, { "name": "spatie/invade", - "version": "1.1.1", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/spatie/invade.git", - "reference": "d0a9c895a96152549d478a7e3420e19039eef038" + "reference": "7b20a25486de69198e402da20dc924d8bcc8024a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/invade/zipball/d0a9c895a96152549d478a7e3420e19039eef038", - "reference": "d0a9c895a96152549d478a7e3420e19039eef038", + "url": "https://api.github.com/repos/spatie/invade/zipball/7b20a25486de69198e402da20dc924d8bcc8024a", + "reference": "7b20a25486de69198e402da20dc924d8bcc8024a", "shasum": "" }, "require": { @@ -4021,13 +4361,6 @@ "spatie/ray": "^1.28" }, "type": "library", - "extra": { - "phpstan": { - "includes": [ - "phpstan-extension.neon" - ] - } - }, "autoload": { "files": [ "src/functions.php" @@ -4054,7 +4387,7 @@ "spatie" ], "support": { - "source": "https://github.com/spatie/invade/tree/1.1.1" + "source": "https://github.com/spatie/invade/tree/2.0.0" }, "funding": [ { @@ -4062,24 +4395,24 @@ "type": "github" } ], - "time": "2022-07-05T09:31:00+00:00" + "time": "2023-07-19T18:55:36+00:00" }, { "name": "spatie/laravel-package-tools", - "version": "1.16.1", + "version": "1.16.3", "source": { "type": "git", "url": "https://github.com/spatie/laravel-package-tools.git", - "reference": "cc7c991555a37f9fa6b814aa03af73f88026a83d" + "reference": "59db18c2e20d49a0b6d447bb1c654f6c123beb9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/cc7c991555a37f9fa6b814aa03af73f88026a83d", - "reference": "cc7c991555a37f9fa6b814aa03af73f88026a83d", + "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/59db18c2e20d49a0b6d447bb1c654f6c123beb9e", + "reference": "59db18c2e20d49a0b6d447bb1c654f6c123beb9e", "shasum": "" }, "require": { - "illuminate/contracts": "^9.28|^10.0", + "illuminate/contracts": "^9.28|^10.0|^11.0", "php": "^8.0" }, "require-dev": { @@ -4114,7 +4447,7 @@ ], "support": { "issues": "https://github.com/spatie/laravel-package-tools/issues", - "source": "https://github.com/spatie/laravel-package-tools/tree/1.16.1" + "source": "https://github.com/spatie/laravel-package-tools/tree/1.16.3" }, "funding": [ { @@ -4122,20 +4455,20 @@ "type": "github" } ], - "time": "2023-08-23T09:04:39+00:00" + "time": "2024-03-07T07:35:57+00:00" }, { "name": "symfony/console", - "version": "v6.3.4", + "version": "v6.4.4", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "eca495f2ee845130855ddf1cf18460c38966c8b6" + "reference": "0d9e4eb5ad413075624378f474c4167ea202de78" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/eca495f2ee845130855ddf1cf18460c38966c8b6", - "reference": "eca495f2ee845130855ddf1cf18460c38966c8b6", + "url": "https://api.github.com/repos/symfony/console/zipball/0d9e4eb5ad413075624378f474c4167ea202de78", + "reference": "0d9e4eb5ad413075624378f474c4167ea202de78", "shasum": "" }, "require": { @@ -4143,7 +4476,7 @@ "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^5.4|^6.0" + "symfony/string": "^5.4|^6.0|^7.0" }, "conflict": { "symfony/dependency-injection": "<5.4", @@ -4157,12 +4490,16 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/lock": "^5.4|^6.0|^7.0", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -4196,7 +4533,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.3.4" + "source": "https://github.com/symfony/console/tree/v6.4.4" }, "funding": [ { @@ -4212,24 +4549,24 @@ "type": "tidelift" } ], - "time": "2023-08-16T10:10:12+00:00" + "time": "2024-02-22T20:27:10+00:00" }, { "name": "symfony/css-selector", - "version": "v6.3.2", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "883d961421ab1709877c10ac99451632a3d6fa57" + "reference": "ec60a4edf94e63b0556b6a0888548bb400a3a3be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/883d961421ab1709877c10ac99451632a3d6fa57", - "reference": "883d961421ab1709877c10ac99451632a3d6fa57", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/ec60a4edf94e63b0556b6a0888548bb400a3a3be", + "reference": "ec60a4edf94e63b0556b6a0888548bb400a3a3be", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "type": "library", "autoload": { @@ -4261,7 +4598,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v6.3.2" + "source": "https://github.com/symfony/css-selector/tree/v7.0.3" }, "funding": [ { @@ -4277,11 +4614,11 @@ "type": "tidelift" } ], - "time": "2023-07-12T16:00:22+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.3.0", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", @@ -4328,7 +4665,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.3.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.4.0" }, "funding": [ { @@ -4348,30 +4685,31 @@ }, { "name": "symfony/error-handler", - "version": "v6.3.2", + "version": "v6.4.4", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "85fd65ed295c4078367c784e8a5a6cee30348b7a" + "reference": "c725219bdf2afc59423c32793d5019d2a904e13a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/85fd65ed295c4078367c784e8a5a6cee30348b7a", - "reference": "85fd65ed295c4078367c784e8a5a6cee30348b7a", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/c725219bdf2afc59423c32793d5019d2a904e13a", + "reference": "c725219bdf2afc59423c32793d5019d2a904e13a", "shasum": "" }, "require": { "php": ">=8.1", "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "conflict": { - "symfony/deprecation-contracts": "<2.5" + "symfony/deprecation-contracts": "<2.5", + "symfony/http-kernel": "<6.4" }, "require-dev": { "symfony/deprecation-contracts": "^2.5|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" + "symfony/http-kernel": "^6.4|^7.0", + "symfony/serializer": "^5.4|^6.0|^7.0" }, "bin": [ "Resources/bin/patch-type-declarations" @@ -4402,7 +4740,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.3.2" + "source": "https://github.com/symfony/error-handler/tree/v6.4.4" }, "funding": [ { @@ -4418,28 +4756,28 @@ "type": "tidelift" } ], - "time": "2023-07-16T17:05:46+00:00" + "time": "2024-02-22T20:27:10+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v6.3.2", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e" + "reference": "834c28d533dd0636f910909d01b9ff45cc094b5e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/adb01fe097a4ee930db9258a3cc906b5beb5cf2e", - "reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/834c28d533dd0636f910909d01b9ff45cc094b5e", + "reference": "834c28d533dd0636f910909d01b9ff45cc094b5e", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/event-dispatcher-contracts": "^2.5|^3" }, "conflict": { - "symfony/dependency-injection": "<5.4", + "symfony/dependency-injection": "<6.4", "symfony/service-contracts": "<2.5" }, "provide": { @@ -4448,13 +4786,13 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/error-handler": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", "symfony/service-contracts": "^2.5|^3", - "symfony/stopwatch": "^5.4|^6.0" + "symfony/stopwatch": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -4482,7 +4820,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.3.2" + "source": "https://github.com/symfony/event-dispatcher/tree/v7.0.3" }, "funding": [ { @@ -4498,11 +4836,11 @@ "type": "tidelift" } ], - "time": "2023-07-06T06:56:43+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.3.0", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", @@ -4558,7 +4896,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.3.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.0" }, "funding": [ { @@ -4578,23 +4916,23 @@ }, { "name": "symfony/finder", - "version": "v6.3.3", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "9915db259f67d21eefee768c1abcf1cc61b1fc9e" + "reference": "11d736e97f116ac375a81f96e662911a34cd50ce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/9915db259f67d21eefee768c1abcf1cc61b1fc9e", - "reference": "9915db259f67d21eefee768c1abcf1cc61b1fc9e", + "url": "https://api.github.com/repos/symfony/finder/zipball/11d736e97f116ac375a81f96e662911a34cd50ce", + "reference": "11d736e97f116ac375a81f96e662911a34cd50ce", "shasum": "" }, "require": { "php": ">=8.1" }, "require-dev": { - "symfony/filesystem": "^6.0" + "symfony/filesystem": "^6.0|^7.0" }, "type": "library", "autoload": { @@ -4622,7 +4960,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.3.3" + "source": "https://github.com/symfony/finder/tree/v6.4.0" }, "funding": [ { @@ -4638,20 +4976,20 @@ "type": "tidelift" } ], - "time": "2023-07-31T08:31:44+00:00" + "time": "2023-10-31T17:30:12+00:00" }, { "name": "symfony/html-sanitizer", - "version": "v6.3.4", + "version": "v6.4.4", "source": { "type": "git", "url": "https://github.com/symfony/html-sanitizer.git", - "reference": "947492c7351d6b01a7b38e515c98fb1107dc357d" + "reference": "83e1dc8b49345e078cfa21bd4c563dfa99c5ed63" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/html-sanitizer/zipball/947492c7351d6b01a7b38e515c98fb1107dc357d", - "reference": "947492c7351d6b01a7b38e515c98fb1107dc357d", + "url": "https://api.github.com/repos/symfony/html-sanitizer/zipball/83e1dc8b49345e078cfa21bd4c563dfa99c5ed63", + "reference": "83e1dc8b49345e078cfa21bd4c563dfa99c5ed63", "shasum": "" }, "require": { @@ -4691,7 +5029,7 @@ "sanitizer" ], "support": { - "source": "https://github.com/symfony/html-sanitizer/tree/v6.3.4" + "source": "https://github.com/symfony/html-sanitizer/tree/v6.4.4" }, "funding": [ { @@ -4707,20 +5045,20 @@ "type": "tidelift" } ], - "time": "2023-08-23T13:34:34+00:00" + "time": "2024-02-13T16:25:19+00:00" }, { "name": "symfony/http-foundation", - "version": "v6.3.4", + "version": "v6.4.4", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "cac1556fdfdf6719668181974104e6fcfa60e844" + "reference": "ebc713bc6e6f4b53f46539fc158be85dfcd77304" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/cac1556fdfdf6719668181974104e6fcfa60e844", - "reference": "cac1556fdfdf6719668181974104e6fcfa60e844", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ebc713bc6e6f4b53f46539fc158be85dfcd77304", + "reference": "ebc713bc6e6f4b53f46539fc158be85dfcd77304", "shasum": "" }, "require": { @@ -4730,17 +5068,17 @@ "symfony/polyfill-php83": "^1.27" }, "conflict": { - "symfony/cache": "<6.2" + "symfony/cache": "<6.3" }, "require-dev": { - "doctrine/dbal": "^2.13.1|^3.0", + "doctrine/dbal": "^2.13.1|^3|^4", "predis/predis": "^1.1|^2.0", - "symfony/cache": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4", - "symfony/mime": "^5.4|^6.0", - "symfony/rate-limiter": "^5.2|^6.0" + "symfony/cache": "^6.3|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4|^7.0", + "symfony/mime": "^5.4|^6.0|^7.0", + "symfony/rate-limiter": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -4768,7 +5106,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.3.4" + "source": "https://github.com/symfony/http-foundation/tree/v6.4.4" }, "funding": [ { @@ -4784,29 +5122,29 @@ "type": "tidelift" } ], - "time": "2023-08-22T08:20:46+00:00" + "time": "2024-02-08T15:01:18+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.3.4", + "version": "v6.4.5", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "36abb425b4af863ae1fe54d8a8b8b4c76a2bccdb" + "reference": "f6947cb939d8efee137797382cb4db1af653ef75" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/36abb425b4af863ae1fe54d8a8b8b4c76a2bccdb", - "reference": "36abb425b4af863ae1fe54d8a8b8b4c76a2bccdb", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/f6947cb939d8efee137797382cb4db1af653ef75", + "reference": "f6947cb939d8efee137797382cb4db1af653ef75", "shasum": "" }, "require": { "php": ">=8.1", "psr/log": "^1|^2|^3", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/error-handler": "^6.3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^6.3.4", + "symfony/error-handler": "^6.4|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", "symfony/polyfill-ctype": "^1.8" }, "conflict": { @@ -4814,7 +5152,7 @@ "symfony/cache": "<5.4", "symfony/config": "<6.1", "symfony/console": "<5.4", - "symfony/dependency-injection": "<6.3.4", + "symfony/dependency-injection": "<6.4", "symfony/doctrine-bridge": "<5.4", "symfony/form": "<5.4", "symfony/http-client": "<5.4", @@ -4824,7 +5162,7 @@ "symfony/translation": "<5.4", "symfony/translation-contracts": "<2.5", "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", + "symfony/validator": "<6.4", "symfony/var-dumper": "<6.3", "twig/twig": "<2.13" }, @@ -4833,26 +5171,26 @@ }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/clock": "^6.2", - "symfony/config": "^6.1", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^6.3.4", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", + "symfony/browser-kit": "^5.4|^6.0|^7.0", + "symfony/clock": "^6.2|^7.0", + "symfony/config": "^6.1|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/css-selector": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/dom-crawler": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", "symfony/http-client-contracts": "^2.5|^3", - "symfony/process": "^5.4|^6.0", - "symfony/property-access": "^5.4.5|^6.0.5", - "symfony/routing": "^5.4|^6.0", - "symfony/serializer": "^6.3", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", + "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.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", - "symfony/uid": "^5.4|^6.0", - "symfony/validator": "^6.3", - "symfony/var-exporter": "^6.2", + "symfony/uid": "^5.4|^6.0|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/var-exporter": "^6.2|^7.0", "twig/twig": "^2.13|^3.0.4" }, "type": "library", @@ -4881,7 +5219,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.3.4" + "source": "https://github.com/symfony/http-kernel/tree/v6.4.5" }, "funding": [ { @@ -4897,20 +5235,20 @@ "type": "tidelift" } ], - "time": "2023-08-26T13:54:49+00:00" + "time": "2024-03-04T21:00:47+00:00" }, { "name": "symfony/mailer", - "version": "v6.3.0", + "version": "v6.4.4", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "7b03d9be1dea29bfec0a6c7b603f5072a4c97435" + "reference": "791c5d31a8204cf3db0c66faab70282307f4376b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/7b03d9be1dea29bfec0a6c7b603f5072a4c97435", - "reference": "7b03d9be1dea29bfec0a6c7b603f5072a4c97435", + "url": "https://api.github.com/repos/symfony/mailer/zipball/791c5d31a8204cf3db0c66faab70282307f4376b", + "reference": "791c5d31a8204cf3db0c66faab70282307f4376b", "shasum": "" }, "require": { @@ -4918,8 +5256,8 @@ "php": ">=8.1", "psr/event-dispatcher": "^1", "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^6.2", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/mime": "^6.2|^7.0", "symfony/service-contracts": "^2.5|^3" }, "conflict": { @@ -4930,10 +5268,10 @@ "symfony/twig-bridge": "<6.2.1" }, "require-dev": { - "symfony/console": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/messenger": "^6.2", - "symfony/twig-bridge": "^6.2" + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/messenger": "^6.2|^7.0", + "symfony/twig-bridge": "^6.2|^7.0" }, "type": "library", "autoload": { @@ -4961,7 +5299,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v6.3.0" + "source": "https://github.com/symfony/mailer/tree/v6.4.4" }, "funding": [ { @@ -4977,20 +5315,20 @@ "type": "tidelift" } ], - "time": "2023-05-29T12:49:39+00:00" + "time": "2024-02-03T21:33:47+00:00" }, { "name": "symfony/mime", - "version": "v6.3.3", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "9a0cbd52baa5ba5a5b1f0cacc59466f194730f98" + "reference": "5017e0a9398c77090b7694be46f20eb796262a34" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/9a0cbd52baa5ba5a5b1f0cacc59466f194730f98", - "reference": "9a0cbd52baa5ba5a5b1f0cacc59466f194730f98", + "url": "https://api.github.com/repos/symfony/mime/zipball/5017e0a9398c77090b7694be46f20eb796262a34", + "reference": "5017e0a9398c77090b7694be46f20eb796262a34", "shasum": "" }, "require": { @@ -5004,16 +5342,16 @@ "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", "symfony/mailer": "<5.4", - "symfony/serializer": "<6.2.13|>=6.3,<6.3.2" + "symfony/serializer": "<6.3.2" }, "require-dev": { "egulias/email-validator": "^2.1.10|^3.1|^4", "league/html-to-markdown": "^5.0", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "~6.2.13|^6.3.2" + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/property-access": "^5.4|^6.0|^7.0", + "symfony/property-info": "^5.4|^6.0|^7.0", + "symfony/serializer": "^6.3.2|^7.0" }, "type": "library", "autoload": { @@ -5045,7 +5383,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.3.3" + "source": "https://github.com/symfony/mime/tree/v6.4.3" }, "funding": [ { @@ -5061,20 +5399,20 @@ "type": "tidelift" } ], - "time": "2023-07-31T07:08:24+00:00" + "time": "2024-01-30T08:32:12+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" + "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", - "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4", + "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4", "shasum": "" }, "require": { @@ -5088,9 +5426,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5127,7 +5462,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0" }, "funding": [ { @@ -5143,20 +5478,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "875e90aeea2777b6f135677f618529449334a612" + "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612", - "reference": "875e90aeea2777b6f135677f618529449334a612", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/32a9da87d7b3245e09ac426c83d334ae9f06f80f", + "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f", "shasum": "" }, "require": { @@ -5167,9 +5502,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5208,7 +5540,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.29.0" }, "funding": [ { @@ -5224,20 +5556,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "ecaafce9f77234a6a449d29e49267ba10499116d" + "reference": "a287ed7475f85bf6f61890146edbc932c0fff919" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/ecaafce9f77234a6a449d29e49267ba10499116d", - "reference": "ecaafce9f77234a6a449d29e49267ba10499116d", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/a287ed7475f85bf6f61890146edbc932c0fff919", + "reference": "a287ed7475f85bf6f61890146edbc932c0fff919", "shasum": "" }, "require": { @@ -5250,9 +5582,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5295,7 +5624,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.29.0" }, "funding": [ { @@ -5311,20 +5640,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:30:37+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92" + "reference": "bc45c394692b948b4d383a08d7753968bed9a83d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", - "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/bc45c394692b948b4d383a08d7753968bed9a83d", + "reference": "bc45c394692b948b4d383a08d7753968bed9a83d", "shasum": "" }, "require": { @@ -5335,9 +5664,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5379,7 +5705,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.29.0" }, "funding": [ { @@ -5395,20 +5721,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "42292d99c55abe617799667f454222c54c60e229" + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", - "reference": "42292d99c55abe617799667f454222c54c60e229", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec", + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec", "shasum": "" }, "require": { @@ -5422,9 +5748,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5462,7 +5785,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0" }, "funding": [ { @@ -5478,20 +5801,20 @@ "type": "tidelift" } ], - "time": "2023-07-28T09:04:16+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179" + "reference": "861391a8da9a04cbad2d232ddd9e4893220d6e25" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/70f4aebd92afca2f865444d30a4d2151c13c3179", - "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/861391a8da9a04cbad2d232ddd9e4893220d6e25", + "reference": "861391a8da9a04cbad2d232ddd9e4893220d6e25", "shasum": "" }, "require": { @@ -5499,9 +5822,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5538,7 +5858,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-php72/tree/v1.29.0" }, "funding": [ { @@ -5554,20 +5874,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5" + "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5", - "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", + "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", "shasum": "" }, "require": { @@ -5575,9 +5895,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5621,7 +5938,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0" }, "funding": [ { @@ -5637,20 +5954,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-php83", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php83.git", - "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11" + "reference": "86fcae159633351e5fd145d1c47de6c528f8caff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11", - "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/86fcae159633351e5fd145d1c47de6c528f8caff", + "reference": "86fcae159633351e5fd145d1c47de6c528f8caff", "shasum": "" }, "require": { @@ -5659,9 +5976,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5701,7 +6015,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php83/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-php83/tree/v1.29.0" }, "funding": [ { @@ -5717,20 +6031,20 @@ "type": "tidelift" } ], - "time": "2023-08-16T06:22:46+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-uuid", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-uuid.git", - "reference": "9c44518a5aff8da565c8a55dbe85d2769e6f630e" + "reference": "3abdd21b0ceaa3000ee950097bc3cf9efc137853" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/9c44518a5aff8da565c8a55dbe85d2769e6f630e", - "reference": "9c44518a5aff8da565c8a55dbe85d2769e6f630e", + "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/3abdd21b0ceaa3000ee950097bc3cf9efc137853", + "reference": "3abdd21b0ceaa3000ee950097bc3cf9efc137853", "shasum": "" }, "require": { @@ -5744,9 +6058,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5783,7 +6094,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/polyfill-uuid/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.29.0" }, "funding": [ { @@ -5799,20 +6110,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/process", - "version": "v6.3.4", + "version": "v6.4.4", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "0b5c29118f2e980d455d2e34a5659f4579847c54" + "reference": "710e27879e9be3395de2b98da3f52a946039f297" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/0b5c29118f2e980d455d2e34a5659f4579847c54", - "reference": "0b5c29118f2e980d455d2e34a5659f4579847c54", + "url": "https://api.github.com/repos/symfony/process/zipball/710e27879e9be3395de2b98da3f52a946039f297", + "reference": "710e27879e9be3395de2b98da3f52a946039f297", "shasum": "" }, "require": { @@ -5844,7 +6155,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.3.4" + "source": "https://github.com/symfony/process/tree/v6.4.4" }, "funding": [ { @@ -5860,20 +6171,20 @@ "type": "tidelift" } ], - "time": "2023-08-07T10:39:22+00:00" + "time": "2024-02-20T12:31:00+00:00" }, { "name": "symfony/routing", - "version": "v6.3.3", + "version": "v6.4.5", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "e7243039ab663822ff134fbc46099b5fdfa16f6a" + "reference": "7fe30068e207d9c31c0138501ab40358eb2d49a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/e7243039ab663822ff134fbc46099b5fdfa16f6a", - "reference": "e7243039ab663822ff134fbc46099b5fdfa16f6a", + "url": "https://api.github.com/repos/symfony/routing/zipball/7fe30068e207d9c31c0138501ab40358eb2d49a4", + "reference": "7fe30068e207d9c31c0138501ab40358eb2d49a4", "shasum": "" }, "require": { @@ -5889,11 +6200,11 @@ "require-dev": { "doctrine/annotations": "^1.12|^2", "psr/log": "^1|^2|^3", - "symfony/config": "^6.2", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" + "symfony/config": "^6.2|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/yaml": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -5927,7 +6238,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.3.3" + "source": "https://github.com/symfony/routing/tree/v6.4.5" }, "funding": [ { @@ -5943,25 +6254,25 @@ "type": "tidelift" } ], - "time": "2023-07-31T07:08:24+00:00" + "time": "2024-02-27T12:33:30+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.3.0", + "version": "v3.4.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4" + "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", - "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/fe07cbc8d837f60caf7018068e350cc5163681a0", + "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0", "shasum": "" }, "require": { "php": ">=8.1", - "psr/container": "^2.0" + "psr/container": "^1.1|^2.0" }, "conflict": { "ext-psr": "<1.1|>=2" @@ -6009,7 +6320,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.3.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.4.1" }, "funding": [ { @@ -6025,24 +6336,24 @@ "type": "tidelift" } ], - "time": "2023-05-23T14:45:45+00:00" + "time": "2023-12-26T14:02:43+00:00" }, { "name": "symfony/string", - "version": "v6.3.2", + "version": "v7.0.4", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "53d1a83225002635bca3482fcbf963001313fb68" + "reference": "f5832521b998b0bec40bee688ad5de98d4cf111b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/53d1a83225002635bca3482fcbf963001313fb68", - "reference": "53d1a83225002635bca3482fcbf963001313fb68", + "url": "https://api.github.com/repos/symfony/string/zipball/f5832521b998b0bec40bee688ad5de98d4cf111b", + "reference": "f5832521b998b0bec40bee688ad5de98d4cf111b", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-intl-grapheme": "~1.0", "symfony/polyfill-intl-normalizer": "~1.0", @@ -6052,11 +6363,11 @@ "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/intl": "^6.2", + "symfony/error-handler": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", "symfony/translation-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^5.4|^6.0" + "symfony/var-exporter": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -6095,7 +6406,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.3.2" + "source": "https://github.com/symfony/string/tree/v7.0.4" }, "funding": [ { @@ -6111,20 +6422,20 @@ "type": "tidelift" } ], - "time": "2023-07-05T08:41:27+00:00" + "time": "2024-02-01T13:17:36+00:00" }, { "name": "symfony/translation", - "version": "v6.3.3", + "version": "v6.4.4", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd" + "reference": "bce6a5a78e94566641b2594d17e48b0da3184a8e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd", - "reference": "3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd", + "url": "https://api.github.com/repos/symfony/translation/zipball/bce6a5a78e94566641b2594d17e48b0da3184a8e", + "reference": "bce6a5a78e94566641b2594d17e48b0da3184a8e", "shasum": "" }, "require": { @@ -6147,19 +6458,19 @@ "symfony/translation-implementation": "2.3|3.0" }, "require-dev": { - "nikic/php-parser": "^4.13", + "nikic/php-parser": "^4.18|^5.0", "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", "symfony/http-client-contracts": "^2.5|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/intl": "^5.4|^6.0|^7.0", "symfony/polyfill-intl-icu": "^1.21", - "symfony/routing": "^5.4|^6.0", + "symfony/routing": "^5.4|^6.0|^7.0", "symfony/service-contracts": "^2.5|^3", - "symfony/yaml": "^5.4|^6.0" + "symfony/yaml": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -6190,7 +6501,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.3.3" + "source": "https://github.com/symfony/translation/tree/v6.4.4" }, "funding": [ { @@ -6206,20 +6517,20 @@ "type": "tidelift" } ], - "time": "2023-07-31T07:08:24+00:00" + "time": "2024-02-20T13:16:58+00:00" }, { "name": "symfony/translation-contracts", - "version": "v3.3.0", + "version": "v3.4.1", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "02c24deb352fb0d79db5486c0c79905a85e37e86" + "reference": "06450585bf65e978026bda220cdebca3f867fde7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/02c24deb352fb0d79db5486c0c79905a85e37e86", - "reference": "02c24deb352fb0d79db5486c0c79905a85e37e86", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/06450585bf65e978026bda220cdebca3f867fde7", + "reference": "06450585bf65e978026bda220cdebca3f867fde7", "shasum": "" }, "require": { @@ -6268,7 +6579,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.3.0" + "source": "https://github.com/symfony/translation-contracts/tree/v3.4.1" }, "funding": [ { @@ -6284,20 +6595,20 @@ "type": "tidelift" } ], - "time": "2023-05-30T17:17:10+00:00" + "time": "2023-12-26T14:02:43+00:00" }, { "name": "symfony/uid", - "version": "v6.3.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/uid.git", - "reference": "01b0f20b1351d997711c56f1638f7a8c3061e384" + "reference": "1d31267211cc3a2fff32bcfc7c1818dac41b6fc0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/01b0f20b1351d997711c56f1638f7a8c3061e384", - "reference": "01b0f20b1351d997711c56f1638f7a8c3061e384", + "url": "https://api.github.com/repos/symfony/uid/zipball/1d31267211cc3a2fff32bcfc7c1818dac41b6fc0", + "reference": "1d31267211cc3a2fff32bcfc7c1818dac41b6fc0", "shasum": "" }, "require": { @@ -6305,7 +6616,7 @@ "symfony/polyfill-uuid": "^1.15" }, "require-dev": { - "symfony/console": "^5.4|^6.0" + "symfony/console": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -6342,7 +6653,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/uid/tree/v6.3.0" + "source": "https://github.com/symfony/uid/tree/v6.4.3" }, "funding": [ { @@ -6358,20 +6669,20 @@ "type": "tidelift" } ], - "time": "2023-04-08T07:25:02+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.3.4", + "version": "v6.4.4", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "2027be14f8ae8eae999ceadebcda5b4909b81d45" + "reference": "b439823f04c98b84d4366c79507e9da6230944b1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/2027be14f8ae8eae999ceadebcda5b4909b81d45", - "reference": "2027be14f8ae8eae999ceadebcda5b4909b81d45", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/b439823f04c98b84d4366c79507e9da6230944b1", + "reference": "b439823f04c98b84d4366c79507e9da6230944b1", "shasum": "" }, "require": { @@ -6384,10 +6695,11 @@ }, "require-dev": { "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/error-handler": "^6.3|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/uid": "^5.4|^6.0|^7.0", "twig/twig": "^2.13|^3.0.4" }, "bin": [ @@ -6426,7 +6738,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.3.4" + "source": "https://github.com/symfony/var-dumper/tree/v6.4.4" }, "funding": [ { @@ -6442,27 +6754,27 @@ "type": "tidelift" } ], - "time": "2023-08-24T14:51:05+00:00" + "time": "2024-02-15T11:23:52+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.6", + "version": "v2.2.7", "source": { "type": "git", "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "c42125b83a4fa63b187fdf29f9c93cb7733da30c" + "reference": "83ee6f38df0a63106a9e4536e3060458b74ccedb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/c42125b83a4fa63b187fdf29f9c93cb7733da30c", - "reference": "c42125b83a4fa63b187fdf29f9c93cb7733da30c", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/83ee6f38df0a63106a9e4536e3060458b74ccedb", + "reference": "83ee6f38df0a63106a9e4536e3060458b74ccedb", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" + "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0" }, "require-dev": { "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" @@ -6493,37 +6805,37 @@ "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", "support": { "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.6" + "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.2.7" }, - "time": "2023-01-03T09:29:04+00:00" + "time": "2023-12-08T13:03:43+00:00" }, { "name": "vlucas/phpdotenv", - "version": "v5.5.0", + "version": "v5.6.0", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7" + "reference": "2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", - "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4", + "reference": "2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4", "shasum": "" }, "require": { "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" + "graham-campbell/result-type": "^1.1.2", + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.2", + "symfony/polyfill-ctype": "^1.24", + "symfony/polyfill-mbstring": "^1.24", + "symfony/polyfill-php80": "^1.24" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", + "bamarni/composer-bin-plugin": "^1.8.2", "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.30 || ^9.5.25" + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" }, "suggest": { "ext-filter": "Required to use the boolean validator." @@ -6535,7 +6847,7 @@ "forward-command": true }, "branch-alias": { - "dev-master": "5.5-dev" + "dev-master": "5.6-dev" } }, "autoload": { @@ -6567,7 +6879,7 @@ ], "support": { "issues": "https://github.com/vlucas/phpdotenv/issues", - "source": "https://github.com/vlucas/phpdotenv/tree/v5.5.0" + "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.0" }, "funding": [ { @@ -6579,7 +6891,7 @@ "type": "tidelift" } ], - "time": "2022-10-16T01:01:54+00:00" + "time": "2023-11-12T22:43:29+00:00" }, { "name": "voku/portable-ascii", @@ -6798,16 +7110,16 @@ }, { "name": "fakerphp/faker", - "version": "v1.23.0", + "version": "v1.23.1", "source": { "type": "git", "url": "https://github.com/FakerPHP/Faker.git", - "reference": "e3daa170d00fde61ea7719ef47bb09bb8f1d9b01" + "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/e3daa170d00fde61ea7719ef47bb09bb8f1d9b01", - "reference": "e3daa170d00fde61ea7719ef47bb09bb8f1d9b01", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/bfb4fe148adbf78eff521199619b93a52ae3554b", + "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b", "shasum": "" }, "require": { @@ -6833,11 +7145,6 @@ "ext-mbstring": "Required for multibyte Unicode string functionality." }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.21-dev" - } - }, "autoload": { "psr-4": { "Faker\\": "src/Faker/" @@ -6860,22 +7167,22 @@ ], "support": { "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.23.0" + "source": "https://github.com/FakerPHP/Faker/tree/v1.23.1" }, - "time": "2023-06-12T08:44:38+00:00" + "time": "2024-01-02T13:46:09+00:00" }, { "name": "guzzlehttp/psr7", - "version": "2.6.1", + "version": "2.6.2", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "be45764272e8873c72dbe3d2edcfdfcc3bc9f727" + "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/be45764272e8873c72dbe3d2edcfdfcc3bc9f727", - "reference": "be45764272e8873c72dbe3d2edcfdfcc3bc9f727", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/45b30f99ac27b5ca93cb4831afe16285f57b8221", + "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221", "shasum": "" }, "require": { @@ -6889,9 +7196,9 @@ "psr/http-message-implementation": "1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", + "bamarni/composer-bin-plugin": "^1.8.2", "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.29 || ^9.5.23" + "phpunit/phpunit": "^8.5.36 || ^9.6.15" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" @@ -6962,7 +7269,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.6.1" + "source": "https://github.com/guzzle/psr7/tree/2.6.2" }, "funding": [ { @@ -6978,7 +7285,7 @@ "type": "tidelift" } ], - "time": "2023-08-27T10:13:57+00:00" + "time": "2023-12-03T20:05:35+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -7033,16 +7340,16 @@ }, { "name": "laravel/pint", - "version": "v1.13.2", + "version": "v1.14.0", "source": { "type": "git", "url": "https://github.com/laravel/pint.git", - "reference": "bbb13460d7f8c5c0cd9a58109beedd79cd7331ff" + "reference": "6b127276e3f263f7bb17d5077e9e0269e61b2a0e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/pint/zipball/bbb13460d7f8c5c0cd9a58109beedd79cd7331ff", - "reference": "bbb13460d7f8c5c0cd9a58109beedd79cd7331ff", + "url": "https://api.github.com/repos/laravel/pint/zipball/6b127276e3f263f7bb17d5077e9e0269e61b2a0e", + "reference": "6b127276e3f263f7bb17d5077e9e0269e61b2a0e", "shasum": "" }, "require": { @@ -7053,13 +7360,13 @@ "php": "^8.1.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^3.26.1", - "illuminate/view": "^10.23.1", - "laravel-zero/framework": "^10.1.2", - "mockery/mockery": "^1.6.6", - "nunomaduro/larastan": "^2.6.4", + "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.18.2" + "pestphp/pest": "^2.33.6" }, "bin": [ "builds/pint" @@ -7095,29 +7402,29 @@ "issues": "https://github.com/laravel/pint/issues", "source": "https://github.com/laravel/pint" }, - "time": "2023-09-19T15:55:02+00:00" + "time": "2024-02-20T17:38:05+00:00" }, { "name": "laravel/tinker", - "version": "v2.8.2", + "version": "v2.9.0", "source": { "type": "git", "url": "https://github.com/laravel/tinker.git", - "reference": "b936d415b252b499e8c3b1f795cd4fc20f57e1f3" + "reference": "502e0fe3f0415d06d5db1f83a472f0f3b754bafe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/b936d415b252b499e8c3b1f795cd4fc20f57e1f3", - "reference": "b936d415b252b499e8c3b1f795cd4fc20f57e1f3", + "url": "https://api.github.com/repos/laravel/tinker/zipball/502e0fe3f0415d06d5db1f83a472f0f3b754bafe", + "reference": "502e0fe3f0415d06d5db1f83a472f0f3b754bafe", "shasum": "" }, "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0|^10.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0", + "illuminate/console": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", + "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", "php": "^7.2.5|^8.0", - "psy/psysh": "^0.10.4|^0.11.1", - "symfony/var-dumper": "^4.3.4|^5.0|^6.0" + "psy/psysh": "^0.11.1|^0.12.0", + "symfony/var-dumper": "^4.3.4|^5.0|^6.0|^7.0" }, "require-dev": { "mockery/mockery": "~1.3.3|^1.4.2", @@ -7125,13 +7432,10 @@ "phpunit/phpunit": "^8.5.8|^9.3.3" }, "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0|^10.0)." + "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0|^10.0|^11.0)." }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - }, "laravel": { "providers": [ "Laravel\\Tinker\\TinkerServiceProvider" @@ -7162,22 +7466,22 @@ ], "support": { "issues": "https://github.com/laravel/tinker/issues", - "source": "https://github.com/laravel/tinker/tree/v2.8.2" + "source": "https://github.com/laravel/tinker/tree/v2.9.0" }, - "time": "2023-08-15T14:27:00+00:00" + "time": "2024-01-04T16:10:04+00:00" }, { "name": "mockery/mockery", - "version": "1.6.6", + "version": "1.6.9", "source": { "type": "git", "url": "https://github.com/mockery/mockery.git", - "reference": "b8e0bb7d8c604046539c1115994632c74dcb361e" + "reference": "0cc058854b3195ba21dc6b1f7b1f60f4ef3a9c06" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/b8e0bb7d8c604046539c1115994632c74dcb361e", - "reference": "b8e0bb7d8c604046539c1115994632c74dcb361e", + "url": "https://api.github.com/repos/mockery/mockery/zipball/0cc058854b3195ba21dc6b1f7b1f60f4ef3a9c06", + "reference": "0cc058854b3195ba21dc6b1f7b1f60f4ef3a9c06", "shasum": "" }, "require": { @@ -7190,9 +7494,7 @@ }, "require-dev": { "phpunit/phpunit": "^8.5 || ^9.6.10", - "psalm/plugin-phpunit": "^0.18.4", - "symplify/easy-coding-standard": "^11.5.0", - "vimeo/psalm": "^4.30" + "symplify/easy-coding-standard": "^12.0.8" }, "type": "library", "autoload": { @@ -7249,7 +7551,7 @@ "security": "https://github.com/mockery/mockery/security/advisories", "source": "https://github.com/mockery/mockery" }, - "time": "2023-08-09T00:03:52+00:00" + "time": "2023-12-10T02:24:34+00:00" }, { "name": "myclabs/deep-copy", @@ -7312,25 +7614,27 @@ }, { "name": "nikic/php-parser", - "version": "v4.17.1", + "version": "v5.0.2", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d" + "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", - "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/139676794dc1e9231bf7bcd123cfc0c99182cb13", + "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13", "shasum": "" }, "require": { + "ext-ctype": "*", + "ext-json": "*", "ext-tokenizer": "*", - "php": ">=7.0" + "php": ">=7.4" }, "require-dev": { "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" }, "bin": [ "bin/php-parse" @@ -7338,7 +7642,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.9-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -7362,36 +7666,39 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.0.2" }, - "time": "2023-08-13T19:53:39+00:00" + "time": "2024-03-05T20:51:40+00:00" }, { "name": "orchestra/canvas", - "version": "v8.10.1", + "version": "v8.11.7", "source": { "type": "git", "url": "https://github.com/orchestral/canvas.git", - "reference": "eef3eb34e263cc462c0eb284ba002f2829b04e2a" + "reference": "e4a0157f522222725f1559bde0da1091a91542fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/orchestral/canvas/zipball/eef3eb34e263cc462c0eb284ba002f2829b04e2a", - "reference": "eef3eb34e263cc462c0eb284ba002f2829b04e2a", + "url": "https://api.github.com/repos/orchestral/canvas/zipball/e4a0157f522222725f1559bde0da1091a91542fb", + "reference": "e4a0157f522222725f1559bde0da1091a91542fb", "shasum": "" }, "require": { "composer-runtime-api": "^2.2", "composer/semver": "^3.0", - "illuminate/database": "^10.23", - "illuminate/support": "^10.23", - "orchestra/canvas-core": "^8.8", - "orchestra/testbench-core": "^8.11", + "illuminate/console": "^10.39", + "illuminate/database": "^10.39", + "illuminate/filesystem": "^10.39", + "illuminate/support": "^10.39", + "orchestra/canvas-core": "^8.10.2", + "orchestra/testbench-core": "^8.19", "php": "^8.1", + "symfony/polyfill-php83": "^1.28", "symfony/yaml": "^6.2" }, "require-dev": { - "laravel/framework": "^10.23", + "laravel/framework": "^10.39", "laravel/pint": "^1.6", "mockery/mockery": "^1.5.1", "phpstan/phpstan": "^1.10.5", @@ -7434,42 +7741,41 @@ "description": "Code Generators for Laravel Applications and Packages", "support": { "issues": "https://github.com/orchestral/canvas/issues", - "source": "https://github.com/orchestral/canvas/tree/v8.10.1" + "source": "https://github.com/orchestral/canvas/tree/v8.11.7" }, - "time": "2023-09-25T08:37:12+00:00" + "time": "2024-02-07T10:29:23+00:00" }, { "name": "orchestra/canvas-core", - "version": "v8.8.0", + "version": "v8.10.2", "source": { "type": "git", "url": "https://github.com/orchestral/canvas-core.git", - "reference": "d44ffd6895685a6535949c7cce2650a67dd7d364" + "reference": "3af8fb6b1ebd85903ba5d0e6df1c81aedacfedfc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/orchestral/canvas-core/zipball/d44ffd6895685a6535949c7cce2650a67dd7d364", - "reference": "d44ffd6895685a6535949c7cce2650a67dd7d364", + "url": "https://api.github.com/repos/orchestral/canvas-core/zipball/3af8fb6b1ebd85903ba5d0e6df1c81aedacfedfc", + "reference": "3af8fb6b1ebd85903ba5d0e6df1c81aedacfedfc", "shasum": "" }, "require": { "composer-runtime-api": "^2.2", "composer/semver": "^3.0", - "illuminate/console": "^10.17", - "illuminate/filesystem": "^10.17", - "php": "^8.1" + "illuminate/console": "^10.38.1", + "illuminate/filesystem": "^10.38.1", + "php": "^8.1", + "symfony/polyfill-php83": "^1.28" }, "conflict": { - "orchestra/canvas": "<8.9.0", + "orchestra/canvas": "<8.11.0", "orchestra/testbench-core": "<8.2.0" }, "require-dev": { - "fakerphp/faker": "^1.21", - "laravel/framework": "^10.17", + "laravel/framework": "^10.38.1", "laravel/pint": "^1.6", "mockery/mockery": "^1.5.1", - "orchestra/testbench-core": "^8.11", - "orchestra/workbench": "^0.3", + "orchestra/testbench-core": "^8.19", "phpstan/phpstan": "^1.10.6", "phpunit/phpunit": "^10.1", "symfony/yaml": "^6.2" @@ -7507,34 +7813,33 @@ "description": "Code Generators Builder for Laravel Applications and Packages", "support": { "issues": "https://github.com/orchestral/canvas/issues", - "source": "https://github.com/orchestral/canvas-core/tree/v8.8.0" + "source": "https://github.com/orchestral/canvas-core/tree/v8.10.2" }, - "time": "2023-09-19T04:26:25+00:00" + "time": "2023-12-28T01:27:59+00:00" }, { "name": "orchestra/testbench", - "version": "v8.12.1", + "version": "v8.22.0", "source": { "type": "git", "url": "https://github.com/orchestral/testbench.git", - "reference": "9bae3c28789295db875eee0d3395c4ba23f1e5ae" + "reference": "77e857d3f57c892dbe76e71d4212f5f03a66887f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/orchestral/testbench/zipball/9bae3c28789295db875eee0d3395c4ba23f1e5ae", - "reference": "9bae3c28789295db875eee0d3395c4ba23f1e5ae", + "url": "https://api.github.com/repos/orchestral/testbench/zipball/77e857d3f57c892dbe76e71d4212f5f03a66887f", + "reference": "77e857d3f57c892dbe76e71d4212f5f03a66887f", "shasum": "" }, "require": { "composer-runtime-api": "^2.2", "fakerphp/faker": "^1.21", - "laravel/framework": ">=10.23.1 <10.26.0", + "laravel/framework": "^10.40", "mockery/mockery": "^1.5.1", - "orchestra/testbench-core": ">=8.12.0 <8.13.0", - "orchestra/workbench": "^0.4.0", + "orchestra/testbench-core": "^8.23", + "orchestra/workbench": "^1.4 || ^8.4", "php": "^8.1", "phpunit/phpunit": "^9.6 || ^10.1", - "spatie/laravel-ray": "^1.32.4", "symfony/process": "^6.2", "symfony/yaml": "^6.2", "vlucas/phpdotenv": "^5.4.1" @@ -7563,31 +7868,40 @@ ], "support": { "issues": "https://github.com/orchestral/testbench/issues", - "source": "https://github.com/orchestral/testbench/tree/v8.12.1" + "source": "https://github.com/orchestral/testbench/tree/v8.22.0" }, - "time": "2023-09-25T14:33:44+00:00" + "time": "2024-03-13T06:52:48+00:00" }, { "name": "orchestra/testbench-core", - "version": "v8.12.1", + "version": "v8.23.0", "source": { "type": "git", "url": "https://github.com/orchestral/testbench-core.git", - "reference": "9a7b63f9cd10dd15cf7c9d4aad2ccaa688465a1f" + "reference": "35936ff29b42439fda75dbb635cc57e113f17c98" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/orchestral/testbench-core/zipball/9a7b63f9cd10dd15cf7c9d4aad2ccaa688465a1f", - "reference": "9a7b63f9cd10dd15cf7c9d4aad2ccaa688465a1f", + "url": "https://api.github.com/repos/orchestral/testbench-core/zipball/35936ff29b42439fda75dbb635cc57e113f17c98", + "reference": "35936ff29b42439fda75dbb635cc57e113f17c98", "shasum": "" }, "require": { "composer-runtime-api": "^2.2", - "php": "^8.1" + "php": "^8.1", + "symfony/polyfill-php83": "^1.28" + }, + "conflict": { + "brianium/paratest": "<6.4.0 || >=7.0.0 <7.1.4 || >=8.0.0", + "laravel/framework": "<10.48.2 || >=11.0.0", + "nunomaduro/collision": "<6.4.0 || >=7.0.0 <7.4.0 || >=8.0.0", + "orchestra/testbench-dusk": "<8.21.0 || >=9.0.0", + "orchestra/workbench": "<1.0.0", + "phpunit/phpunit": "<9.6.0 || >=10.6.0" }, "require-dev": { "fakerphp/faker": "^1.21", - "laravel/framework": "^10.23", + "laravel/framework": "^10.48.2", "laravel/pint": "^1.6", "mockery/mockery": "^1.5.1", "phpstan/phpstan": "^1.10.7", @@ -7598,16 +7912,18 @@ "vlucas/phpdotenv": "^5.4.1" }, "suggest": { - "brianium/paratest": "Allow using parallel tresting (^6.4 || ^7.1.4).", + "brianium/paratest": "Allow using parallel testing (^6.4 || ^7.1.4).", + "ext-pcntl": "Required to use all features of the console signal trapping.", "fakerphp/faker": "Allow using Faker for testing (^1.21).", - "laravel/framework": "Required for testing (^10.23).", + "laravel/framework": "Required for testing (^10.48.2).", "mockery/mockery": "Allow using Mockery for testing (^1.5.1).", "nunomaduro/collision": "Allow using Laravel style tests output and parallel testing (^6.4 || ^7.4).", "orchestra/testbench-browser-kit": "Allow using legacy Laravel BrowserKit for testing (^8.0).", "orchestra/testbench-dusk": "Allow using Laravel Dusk for testing (^8.0).", "phpunit/phpunit": "Allow using PHPUnit for testing (^9.6 || ^10.1).", - "symfony/yaml": "Required for CLI Commander (^6.2).", - "vlucas/phpdotenv": "Required for CLI Commander (^5.4.1)." + "symfony/process": "Required to use Orchestra\\Testbench\\remote function (^6.2).", + "symfony/yaml": "Required for Testbench CLI (^6.2).", + "vlucas/phpdotenv": "Required for Testbench CLI (^5.4.1)." }, "bin": [ "testbench" @@ -7615,7 +7931,7 @@ "type": "library", "autoload": { "files": [ - "src/helpers.php" + "src/functions.php" ], "psr-4": { "Orchestra\\Testbench\\": "src/" @@ -7646,45 +7962,48 @@ "issues": "https://github.com/orchestral/testbench/issues", "source": "https://github.com/orchestral/testbench-core" }, - "time": "2023-09-26T12:50:24+00:00" + "time": "2024-03-13T04:02:37+00:00" }, { "name": "orchestra/workbench", - "version": "v0.4.1", + "version": "v8.4.0", "source": { "type": "git", "url": "https://github.com/orchestral/workbench.git", - "reference": "21acf1015ac48e36cb468bffd161115689958782" + "reference": "7db7009377fd1afe25c783e9092af911cd04b3a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/orchestral/workbench/zipball/21acf1015ac48e36cb468bffd161115689958782", - "reference": "21acf1015ac48e36cb468bffd161115689958782", + "url": "https://api.github.com/repos/orchestral/workbench/zipball/7db7009377fd1afe25c783e9092af911cd04b3a9", + "reference": "7db7009377fd1afe25c783e9092af911cd04b3a9", "shasum": "" }, "require": { "composer-runtime-api": "^2.2", - "illuminate/console": "^9.52.15 || ^10.23.0", - "illuminate/support": "^9.52.15 || ^10.23.0", + "fakerphp/faker": "^1.21", + "laravel/framework": "^10.38.1", "laravel/tinker": "^2.8.2", - "orchestra/canvas": "^7.10.0 || ^8.9.0", - "orchestra/testbench-core": "^7.32.0 || ^8.12.0", - "php": "^8.0" + "orchestra/canvas": "^8.11.4", + "orchestra/testbench-core": "^8.22", + "php": "^8.1", + "spatie/laravel-ray": "^1.32.4", + "symfony/polyfill-php83": "^1.28", + "symfony/yaml": "^6.2" }, "require-dev": { - "fakerphp/faker": "^1.21", - "laravel/framework": "^9.52.15 || ^10.23.0", "laravel/pint": "^1.4", "mockery/mockery": "^1.5.1", "phpstan/phpstan": "^1.10.7", - "phpunit/phpunit": "^9.6", - "spatie/laravel-ray": "^1.32.4", - "symfony/yaml": "^6.0.9" + "phpunit/phpunit": "^10.1", + "symfony/process": "^6.2" + }, + "suggest": { + "ext-pcntl": "Required to use all features of the console signal trapping." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "0.4.x-dev" + "dev-master": "0.5.x-dev" } }, "autoload": { @@ -7711,26 +8030,27 @@ ], "support": { "issues": "https://github.com/orchestral/workbench/issues", - "source": "https://github.com/orchestral/workbench/tree/v0.4.1" + "source": "https://github.com/orchestral/workbench/tree/v8.4.0" }, - "time": "2023-09-26T13:04:34+00:00" + "time": "2024-03-13T06:02:29+00:00" }, { "name": "phar-io/manifest", - "version": "2.0.3", + "version": "2.0.4", "source": { "type": "git", "url": "https://github.com/phar-io/manifest.git", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53" + "reference": "54750ef60c58e43759730615a392c31c80e23176" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", + "reference": "54750ef60c58e43759730615a392c31c80e23176", "shasum": "" }, "require": { "ext-dom": "*", + "ext-libxml": "*", "ext-phar": "*", "ext-xmlwriter": "*", "phar-io/version": "^3.0.1", @@ -7771,9 +8091,15 @@ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", "support": { "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/2.0.3" + "source": "https://github.com/phar-io/manifest/tree/2.0.4" }, - "time": "2021-07-20T11:28:43+00:00" + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:33:53+00:00" }, { "name": "phar-io/version", @@ -7826,25 +8152,87 @@ }, "time": "2022-02-21T01:04:05+00:00" }, + { + "name": "phpstan/phpstan", + "version": "1.10.62", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpstan.git", + "reference": "cd5c8a1660ed3540b211407c77abf4af193a6af9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/cd5c8a1660ed3540b211407c77abf4af193a6af9", + "reference": "cd5c8a1660ed3540b211407c77abf4af193a6af9", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0" + }, + "conflict": { + "phpstan/phpstan-shim": "*" + }, + "bin": [ + "phpstan", + "phpstan.phar" + ], + "type": "library", + "autoload": { + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPStan - PHP Static Analysis Tool", + "keywords": [ + "dev", + "static analysis" + ], + "support": { + "docs": "https://phpstan.org/user-guide/getting-started", + "forum": "https://github.com/phpstan/phpstan/discussions", + "issues": "https://github.com/phpstan/phpstan/issues", + "security": "https://github.com/phpstan/phpstan/security/policy", + "source": "https://github.com/phpstan/phpstan-src" + }, + "funding": [ + { + "url": "https://github.com/ondrejmirtes", + "type": "github" + }, + { + "url": "https://github.com/phpstan", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", + "type": "tidelift" + } + ], + "time": "2024-03-13T12:27:20+00:00" + }, { "name": "phpunit/php-code-coverage", - "version": "10.1.6", + "version": "10.1.14", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "56f33548fe522c8d82da7ff3824b42829d324364" + "reference": "e3f51450ebffe8e0efdf7346ae966a656f7d5e5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/56f33548fe522c8d82da7ff3824b42829d324364", - "reference": "56f33548fe522c8d82da7ff3824b42829d324364", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/e3f51450ebffe8e0efdf7346ae966a656f7d5e5b", + "reference": "e3f51450ebffe8e0efdf7346ae966a656f7d5e5b", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.15", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=8.1", "phpunit/php-file-iterator": "^4.0", "phpunit/php-text-template": "^3.0", @@ -7894,7 +8282,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.6" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.14" }, "funding": [ { @@ -7902,7 +8290,7 @@ "type": "github" } ], - "time": "2023-09-19T04:59:03+00:00" + "time": "2024-03-12T15:33:41+00:00" }, { "name": "phpunit/php-file-iterator", @@ -8149,16 +8537,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.3.5", + "version": "10.5.13", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "747c3b2038f1139e3dcd9886a3f5a948648b7503" + "reference": "20a63fc1c6db29b15da3bd02d4b6cf59900088a7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/747c3b2038f1139e3dcd9886a3f5a948648b7503", - "reference": "747c3b2038f1139e3dcd9886a3f5a948648b7503", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/20a63fc1c6db29b15da3bd02d4b6cf59900088a7", + "reference": "20a63fc1c6db29b15da3bd02d4b6cf59900088a7", "shasum": "" }, "require": { @@ -8198,7 +8586,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "10.3-dev" + "dev-main": "10.5-dev" } }, "autoload": { @@ -8230,7 +8618,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.3.5" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.13" }, "funding": [ { @@ -8246,7 +8634,7 @@ "type": "tidelift" } ], - "time": "2023-09-19T05:42:37+00:00" + "time": "2024-03-12T15:37:41+00:00" }, { "name": "pimple/pimple", @@ -8303,25 +8691,25 @@ }, { "name": "psy/psysh", - "version": "v0.11.21", + "version": "v0.12.1", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "bcb22101107f3bf770523b65630c9d547f60c540" + "reference": "39621c73e0754328252f032c6997b983afc50431" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/bcb22101107f3bf770523b65630c9d547f60c540", - "reference": "bcb22101107f3bf770523b65630c9d547f60c540", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/39621c73e0754328252f032c6997b983afc50431", + "reference": "39621c73e0754328252f032c6997b983afc50431", "shasum": "" }, "require": { "ext-json": "*", "ext-tokenizer": "*", - "nikic/php-parser": "^4.0 || ^3.1", - "php": "^8.0 || ^7.0.8", - "symfony/console": "^6.0 || ^5.0 || ^4.0 || ^3.4", - "symfony/var-dumper": "^6.0 || ^5.0 || ^4.0 || ^3.4" + "nikic/php-parser": "^5.0 || ^4.0", + "php": "^8.0 || ^7.4", + "symfony/console": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4", + "symfony/var-dumper": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4" }, "conflict": { "symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4" @@ -8332,8 +8720,7 @@ "suggest": { "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", "ext-pdo-sqlite": "The doc command requires SQLite to work.", - "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.", - "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history." + "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well." }, "bin": [ "bin/psysh" @@ -8341,7 +8728,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "0.11.x-dev" + "dev-main": "0.12.x-dev" }, "bamarni-bin": { "bin-links": false, @@ -8377,9 +8764,9 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.11.21" + "source": "https://github.com/bobthecow/psysh/tree/v0.12.1" }, - "time": "2023-09-17T21:15:54+00:00" + "time": "2024-03-15T03:22:57+00:00" }, { "name": "ralouphie/getallheaders", @@ -8425,18 +8812,74 @@ }, "time": "2019-03-08T08:55:37+00:00" }, + { + "name": "rector/rector", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/rectorphp/rector.git", + "reference": "c59507a9090b465d65e1aceed91e5b81986e375b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/c59507a9090b465d65e1aceed91e5b81986e375b", + "reference": "c59507a9090b465d65e1aceed91e5b81986e375b", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0", + "phpstan/phpstan": "^1.10.57" + }, + "conflict": { + "rector/rector-doctrine": "*", + "rector/rector-downgrade-php": "*", + "rector/rector-phpunit": "*", + "rector/rector-symfony": "*" + }, + "bin": [ + "bin/rector" + ], + "type": "library", + "autoload": { + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Instant Upgrade and Automated Refactoring of any PHP code", + "keywords": [ + "automation", + "dev", + "migration", + "refactoring" + ], + "support": { + "issues": "https://github.com/rectorphp/rector/issues", + "source": "https://github.com/rectorphp/rector/tree/1.0.3" + }, + "funding": [ + { + "url": "https://github.com/tomasvotruba", + "type": "github" + } + ], + "time": "2024-03-14T15:04:18+00:00" + }, { "name": "sebastian/cli-parser", - "version": "2.0.0", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae" + "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/efdc130dbbbb8ef0b545a994fd811725c5282cae", - "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/c34583b87e7b7a8055bf6c450c2c77ce32a24084", + "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084", "shasum": "" }, "require": { @@ -8471,7 +8914,8 @@ "homepage": "https://github.com/sebastianbergmann/cli-parser", "support": { "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.0" + "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.1" }, "funding": [ { @@ -8479,7 +8923,7 @@ "type": "github" } ], - "time": "2023-02-03T06:58:15+00:00" + "time": "2024-03-02T07:12:49+00:00" }, { "name": "sebastian/code-unit", @@ -8671,20 +9115,20 @@ }, { "name": "sebastian/complexity", - "version": "3.0.1", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "c70b73893e10757af9c6a48929fa6a333b56a97a" + "reference": "68ff824baeae169ec9f2137158ee529584553799" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/c70b73893e10757af9c6a48929fa6a333b56a97a", - "reference": "c70b73893e10757af9c6a48929fa6a333b56a97a", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799", + "reference": "68ff824baeae169ec9f2137158ee529584553799", "shasum": "" }, "require": { - "nikic/php-parser": "^4.10", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=8.1" }, "require-dev": { @@ -8693,7 +9137,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-main": "3.2-dev" } }, "autoload": { @@ -8717,7 +9161,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", "security": "https://github.com/sebastianbergmann/complexity/security/policy", - "source": "https://github.com/sebastianbergmann/complexity/tree/3.0.1" + "source": "https://github.com/sebastianbergmann/complexity/tree/3.2.0" }, "funding": [ { @@ -8725,20 +9169,20 @@ "type": "github" } ], - "time": "2023-08-31T09:55:53+00:00" + "time": "2023-12-21T08:37:17+00:00" }, { "name": "sebastian/diff", - "version": "5.0.3", + "version": "5.1.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b" + "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/912dc2fbe3e3c1e7873313cc801b100b6c68c87b", - "reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/c41e007b4b62af48218231d6c2275e4c9b975b2e", + "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e", "shasum": "" }, "require": { @@ -8746,12 +9190,12 @@ }, "require-dev": { "phpunit/phpunit": "^10.0", - "symfony/process": "^4.2 || ^5" + "symfony/process": "^6.4" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -8784,7 +9228,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", "security": "https://github.com/sebastianbergmann/diff/security/policy", - "source": "https://github.com/sebastianbergmann/diff/tree/5.0.3" + "source": "https://github.com/sebastianbergmann/diff/tree/5.1.1" }, "funding": [ { @@ -8792,7 +9236,7 @@ "type": "github" } ], - "time": "2023-05-01T07:48:21+00:00" + "time": "2024-03-02T07:15:17+00:00" }, { "name": "sebastian/environment", @@ -8860,16 +9304,16 @@ }, { "name": "sebastian/exporter", - "version": "5.1.1", + "version": "5.1.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc" + "reference": "955288482d97c19a372d3f31006ab3f37da47adf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/64f51654862e0f5e318db7e9dcc2292c63cdbddc", - "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/955288482d97c19a372d3f31006ab3f37da47adf", + "reference": "955288482d97c19a372d3f31006ab3f37da47adf", "shasum": "" }, "require": { @@ -8926,7 +9370,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", "security": "https://github.com/sebastianbergmann/exporter/security/policy", - "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.1" + "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.2" }, "funding": [ { @@ -8934,20 +9378,20 @@ "type": "github" } ], - "time": "2023-09-24T13:22:09+00:00" + "time": "2024-03-02T07:17:12+00:00" }, { "name": "sebastian/global-state", - "version": "6.0.1", + "version": "6.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4" + "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/7ea9ead78f6d380d2a667864c132c2f7b83055e4", - "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", + "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", "shasum": "" }, "require": { @@ -8981,14 +9425,14 @@ } ], "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", + "homepage": "https://www.github.com/sebastianbergmann/global-state", "keywords": [ "global state" ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", "security": "https://github.com/sebastianbergmann/global-state/security/policy", - "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.1" + "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.2" }, "funding": [ { @@ -8996,24 +9440,24 @@ "type": "github" } ], - "time": "2023-07-19T07:19:23+00:00" + "time": "2024-03-02T07:19:19+00:00" }, { "name": "sebastian/lines-of-code", - "version": "2.0.1", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "649e40d279e243d985aa8fb6e74dd5bb28dc185d" + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/649e40d279e243d985aa8fb6e74dd5bb28dc185d", - "reference": "649e40d279e243d985aa8fb6e74dd5bb28dc185d", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/856e7f6a75a84e339195d48c556f23be2ebf75d0", + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0", "shasum": "" }, "require": { - "nikic/php-parser": "^4.10", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=8.1" }, "require-dev": { @@ -9046,7 +9490,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.1" + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.2" }, "funding": [ { @@ -9054,7 +9498,7 @@ "type": "github" } ], - "time": "2023-08-31T09:25:50+00:00" + "time": "2023-12-21T08:38:20+00:00" }, { "name": "sebastian/object-enumerator", @@ -9404,38 +9848,40 @@ }, { "name": "spatie/laravel-ray", - "version": "1.33.0", + "version": "1.35.1", "source": { "type": "git", "url": "https://github.com/spatie/laravel-ray.git", - "reference": "5028ae44a09451b26eb44490e3471998650788e3" + "reference": "f504d3787d88c7e5de7a4290658f7ad9b1352f22" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ray/zipball/5028ae44a09451b26eb44490e3471998650788e3", - "reference": "5028ae44a09451b26eb44490e3471998650788e3", + "url": "https://api.github.com/repos/spatie/laravel-ray/zipball/f504d3787d88c7e5de7a4290658f7ad9b1352f22", + "reference": "f504d3787d88c7e5de7a4290658f7ad9b1352f22", "shasum": "" }, "require": { "ext-json": "*", - "illuminate/contracts": "^7.20|^8.19|^9.0|^10.0", - "illuminate/database": "^7.20|^8.19|^9.0|^10.0", - "illuminate/queue": "^7.20|^8.19|^9.0|^10.0", - "illuminate/support": "^7.20|^8.19|^9.0|^10.0", + "illuminate/contracts": "^7.20|^8.19|^9.0|^10.0|^11.0", + "illuminate/database": "^7.20|^8.19|^9.0|^10.0|^11.0", + "illuminate/queue": "^7.20|^8.19|^9.0|^10.0|^11.0", + "illuminate/support": "^7.20|^8.19|^9.0|^10.0|^11.0", "php": "^7.4|^8.0", + "rector/rector": "^0.19.2|^1.0", "spatie/backtrace": "^1.0", - "spatie/ray": "^1.37", - "symfony/stopwatch": "4.2|^5.1|^6.0", + "spatie/ray": "^1.41.1", + "symfony/stopwatch": "4.2|^5.1|^6.0|^7.0", "zbateson/mail-mime-parser": "^1.3.1|^2.0" }, "require-dev": { "guzzlehttp/guzzle": "^7.3", - "laravel/framework": "^7.20|^8.19|^9.0|^10.0", - "orchestra/testbench-core": "^5.0|^6.0|^7.0|^8.0", - "pestphp/pest": "^1.22", - "phpstan/phpstan": "^0.12.93", - "phpunit/phpunit": "^9.3", - "spatie/pest-plugin-snapshots": "^1.1" + "laravel/framework": "^7.20|^8.19|^9.0|^10.0|^11.0", + "orchestra/testbench-core": "^5.0|^6.0|^7.0|^8.0|^9.0", + "pestphp/pest": "^1.22|^2.0", + "phpstan/phpstan": "^1.10.57", + "phpunit/phpunit": "^9.3|^10.1", + "spatie/pest-plugin-snapshots": "^1.1|^2.0", + "symfony/var-dumper": "^4.2|^5.1|^6.0|^7.0.3" }, "type": "library", "extra": { @@ -9473,7 +9919,7 @@ ], "support": { "issues": "https://github.com/spatie/laravel-ray/issues", - "source": "https://github.com/spatie/laravel-ray/tree/1.33.0" + "source": "https://github.com/spatie/laravel-ray/tree/1.35.1" }, "funding": [ { @@ -9485,7 +9931,7 @@ "type": "other" } ], - "time": "2023-09-04T10:16:53+00:00" + "time": "2024-02-13T14:19:41+00:00" }, { "name": "spatie/macroable", @@ -9539,16 +9985,16 @@ }, { "name": "spatie/ray", - "version": "1.39.0", + "version": "1.41.1", "source": { "type": "git", "url": "https://github.com/spatie/ray.git", - "reference": "7ab6bd01dc6a8ecdd836b3182d40a04308ae0c75" + "reference": "051a0facb1d2462fafef87ff77eb74d6f2d12944" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/ray/zipball/7ab6bd01dc6a8ecdd836b3182d40a04308ae0c75", - "reference": "7ab6bd01dc6a8ecdd836b3182d40a04308ae0c75", + "url": "https://api.github.com/repos/spatie/ray/zipball/051a0facb1d2462fafef87ff77eb74d6f2d12944", + "reference": "051a0facb1d2462fafef87ff77eb74d6f2d12944", "shasum": "" }, "require": { @@ -9558,8 +10004,8 @@ "ramsey/uuid": "^3.0|^4.1", "spatie/backtrace": "^1.1", "spatie/macroable": "^1.0|^2.0", - "symfony/stopwatch": "^4.0|^5.1|^6.0", - "symfony/var-dumper": "^4.2|^5.1|^6.0" + "symfony/stopwatch": "^4.0|^5.1|^6.0|^7.0", + "symfony/var-dumper": "^4.2|^5.1|^6.0|^7.0" }, "require-dev": { "illuminate/support": "6.x|^8.18|^9.0", @@ -9567,9 +10013,13 @@ "pestphp/pest": "^1.22", "phpstan/phpstan": "^1.10", "phpunit/phpunit": "^9.5", + "rector/rector": "^0.19.2", "spatie/phpunit-snapshot-assertions": "^4.2", "spatie/test-time": "^1.2" }, + "bin": [ + "bin/remove-ray.sh" + ], "type": "library", "autoload": { "files": [ @@ -9599,7 +10049,7 @@ ], "support": { "issues": "https://github.com/spatie/ray/issues", - "source": "https://github.com/spatie/ray/tree/1.39.0" + "source": "https://github.com/spatie/ray/tree/1.41.1" }, "funding": [ { @@ -9611,20 +10061,20 @@ "type": "other" } ], - "time": "2023-09-18T10:36:07+00:00" + "time": "2024-01-25T10:15:50+00:00" }, { "name": "symfony/polyfill-iconv", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-iconv.git", - "reference": "6de50471469b8c9afc38164452ab2b6170ee71c1" + "reference": "cd4226d140ecd3d0f13d32ed0a4a095ffe871d2f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/6de50471469b8c9afc38164452ab2b6170ee71c1", - "reference": "6de50471469b8c9afc38164452ab2b6170ee71c1", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/cd4226d140ecd3d0f13d32ed0a4a095ffe871d2f", + "reference": "cd4226d140ecd3d0f13d32ed0a4a095ffe871d2f", "shasum": "" }, "require": { @@ -9638,9 +10088,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -9678,7 +10125,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-iconv/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-iconv/tree/v1.29.0" }, "funding": [ { @@ -9694,24 +10141,24 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/stopwatch", - "version": "v6.3.0", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2" + "reference": "983900d6fddf2b0cbaacacbbad07610854bd8112" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2", - "reference": "fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/983900d6fddf2b0cbaacacbbad07610854bd8112", + "reference": "983900d6fddf2b0cbaacacbbad07610854bd8112", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/service-contracts": "^2.5|^3" }, "type": "library", @@ -9740,7 +10187,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v6.3.0" + "source": "https://github.com/symfony/stopwatch/tree/v7.0.3" }, "funding": [ { @@ -9756,20 +10203,20 @@ "type": "tidelift" } ], - "time": "2023-02-16T10:14:28+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/yaml", - "version": "v6.3.3", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "e23292e8c07c85b971b44c1c4b87af52133e2add" + "reference": "d75715985f0f94f978e3a8fa42533e10db921b90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/e23292e8c07c85b971b44c1c4b87af52133e2add", - "reference": "e23292e8c07c85b971b44c1c4b87af52133e2add", + "url": "https://api.github.com/repos/symfony/yaml/zipball/d75715985f0f94f978e3a8fa42533e10db921b90", + "reference": "d75715985f0f94f978e3a8fa42533e10db921b90", "shasum": "" }, "require": { @@ -9781,7 +10228,7 @@ "symfony/console": "<5.4" }, "require-dev": { - "symfony/console": "^5.4|^6.0" + "symfony/console": "^5.4|^6.0|^7.0" }, "bin": [ "Resources/bin/yaml-lint" @@ -9812,7 +10259,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.3.3" + "source": "https://github.com/symfony/yaml/tree/v6.4.3" }, "funding": [ { @@ -9828,20 +10275,20 @@ "type": "tidelift" } ], - "time": "2023-07-31T07:08:24+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "theseer/tokenizer", - "version": "1.2.1", + "version": "1.2.3", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", "shasum": "" }, "require": { @@ -9870,7 +10317,7 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" + "source": "https://github.com/theseer/tokenizer/tree/1.2.3" }, "funding": [ { @@ -9878,7 +10325,7 @@ "type": "github" } ], - "time": "2021-07-28T10:34:58+00:00" + "time": "2024-03-03T12:36:25+00:00" }, { "name": "zbateson/mail-mime-parser", @@ -10095,5 +10542,5 @@ "prefer-lowest": false, "platform": [], "platform-dev": [], - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.6.0" } diff --git a/src/Actions/NestedCreateAction.php b/src/Actions/NestedCreateAction.php new file mode 100644 index 0000000..3b1c73b --- /dev/null +++ b/src/Actions/NestedCreateAction.php @@ -0,0 +1,27 @@ +getRelationship()->getRelated()); + /** @var Ancestor $ancestor */ + $ancestor = $resource::getAncestor(); + + if (! $ancestor->getResource()::hasPage("{$ancestor->getRelationshipName()}.create")) { + throw new \Exception("{$ancestor->getResource()} does not have a nested create page. Please make sure to create it and that it is called '{$ancestor->getRelationshipName()}.create'. Check the documentation for more information."); + } + + parent::configureCreateAction($action->url( + fn () => $ancestor->getResource()::getUrl("{$ancestor->getRelationshipName()}.create", [ + 'record' => $this->getOwnerRecord(), + ]) + )); + } +} diff --git a/src/Actions/NestedDeleteAction.php b/src/Actions/NestedDeleteAction.php new file mode 100644 index 0000000..a181e60 --- /dev/null +++ b/src/Actions/NestedDeleteAction.php @@ -0,0 +1,39 @@ +getResource(); + $related = $ancestor->getRelatedRecord($this->record); + $operation = $this->getResourcePageName(); + + $action->successRedirectUrl( + match (true) { + $ancestorResource::hasPage($ancestor->getRelationshipName()) => $ancestorResource::getUrl($ancestor->getRelationshipName(), ['record' => $related]), + $ancestorResource::hasPage($operation) => $ancestorResource::getUrl($operation, [ + 'record' => $related, + ]), + $ancestorResource::hasPage('view') => $ancestorResource::getUrl('view', [ + 'record' => $related, + ]), + $ancestorResource::hasPage('edit') => $ancestorResource::getUrl('edit', [ + 'record' => $related, + ]), + }, + ); + } + } + } +} \ No newline at end of file diff --git a/src/Actions/NestedEditAction.php b/src/Actions/NestedEditAction.php new file mode 100644 index 0000000..22cfd66 --- /dev/null +++ b/src/Actions/NestedEditAction.php @@ -0,0 +1,22 @@ +url( + fn (Model $record) => Filament::getModelResource($record)::getUrl( + 'edit', + ['record' => $record], + ) + ); + } +} diff --git a/src/Actions/NestedForceDeleteAction.php b/src/Actions/NestedForceDeleteAction.php new file mode 100644 index 0000000..55e9122 --- /dev/null +++ b/src/Actions/NestedForceDeleteAction.php @@ -0,0 +1,37 @@ +getResource(); + $related = $ancestor->getRelatedRecord($this->record); + $operation = $this->getResourcePageName(); + + $action->successRedirectUrl( + match (true) { + $ancestorResource::hasPage($ancestor->getRelationshipName()) => $ancestorResource::getUrl($ancestor->getRelationshipName(), ['record' => $related]), + $ancestorResource::hasPage($operation) => $ancestorResource::getUrl($operation, [ + 'record' => $related, + ]), + $ancestorResource::hasPage('view') => $ancestorResource::getUrl('view', [ + 'record' => $related, + ]), + $ancestorResource::hasPage('edit') => $ancestorResource::getUrl('edit', [ + 'record' => $related, + ]), + }, + ); + } + } + } +} diff --git a/src/Actions/NestedViewAction.php b/src/Actions/NestedViewAction.php new file mode 100644 index 0000000..3d6ca4f --- /dev/null +++ b/src/Actions/NestedViewAction.php @@ -0,0 +1,22 @@ +url( + fn (Model $record) => Filament::getModelResource($record)::getUrl( + 'view', + ['record' => $record], + ) + ); + } +} diff --git a/src/Ancestor.php b/src/Ancestor.php index 9c7a71d..f81d024 100644 --- a/src/Ancestor.php +++ b/src/Ancestor.php @@ -1,15 +1,17 @@ resource; } - public function getRelationship(): string + public function getRelationshipName(): string { - if (! $this->relationship) { - return $this->getResource()::getModelLabel(); - } - - return $this->relationship; + return $this->relationshipName; } - public function getRouteParameterName(): string + public function getInverseRelationshipName(): ?string { - return get_resource_route_parameter($this->getResource()); + return $this->inverseRelationshipName; } - public function getRouteParameters(Model $record): array + public function getRelationship(Model $record) { - $ancestor = $this; - $related = $record; - - $parameters = []; - do { - $recordRouteKeyName = $ancestor->getResource()::getRecordRouteKeyName() ?? 'id'; - // For 'create' actions, a model is not yet created, so the owner record is being sent. - // In this case, the ancestor relation and received model are offset by one level and this - // will re-sync the depth again. - if ($ancestor->getResource()::getModel() === $related::class) { - $parameters[$ancestor->getRouteParameterName()] = $related->{$recordRouteKeyName}; - - continue; - } + if (method_exists($record, $this->getRelationshipName())) { + return $record->{$this->getRelationshipName()}(); + } - $related = $ancestor->getRelatedModel($related); - $parameters[$ancestor->getRouteParameterName()] = $related->{$recordRouteKeyName}; - } while ($ancestor = $ancestor->getResource()::getAncestor()); + if (method_exists($record, Str::plural($this->getRelationshipName()))) { + return $record->{Str::plural($this->getRelationshipName())}(); + } - return $parameters; + return null; } - public function getNormalizedRouteParameters(Model $record): array + public function getInverseRelationship(Model $record): ?Relation { - return array_values( - array_reverse( - $this->getRouteParameters($record) - ) - ); + if (method_exists($record, $this->getInverseRelationshipName())) { + return $record->{$this->getInverseRelationshipName()}(); + } + + return null; } - public function getRelatedModel(Model $record): Model + public function getRelatedRecord(Model $record): ?Model { - return $record->{$this->getRelationship()}()->withoutGlobalScopes([ - SoftDeletingScope::class, - ])->first(); + $relationship = $this->getInverseRelationship($record); + + if ($relationship->exists()) { + return $relationship->first(); + } + + return null; } - public static function make(string $resource, string $relationship = null) + public static function make(string $resource, string $relationshipName, string $inverseRelationshipName) { return app(static::class, [ 'resource' => $resource, - 'relationship' => $relationship, + 'relationshipName' => $relationshipName, + 'inverseRelationshipName' => $inverseRelationshipName, ]); } } diff --git a/src/Concerns/HasAncestor.php b/src/Concerns/HasAncestor.php deleted file mode 100644 index e5edf7d..0000000 --- a/src/Concerns/HasAncestor.php +++ /dev/null @@ -1,18 +0,0 @@ -record; + $resource = static::getResource(); + + if (! $record) { + $record = $this->getOwnerRecord(); + } + + $breadcrumbs = $resource::getBreadcrumbs($record, static::getResourcePageName()); + + while ($ancestor = $resource::getAncestor()) { + + $record = $ancestor->getRelatedRecord($record); + if (! $record) { + break; + } + + $resource = $resource::getAncestor()->getResource(); + $breadcrumbs = $resource::getBreadcrumbs($record, static::getResourcePageName()) + $breadcrumbs; + } + + return $breadcrumbs + ['#' => $this->getBreadcrumb()]; + } +} diff --git a/src/Concerns/NestedRelationManager.php b/src/Concerns/NestedRelationManager.php new file mode 100644 index 0000000..f183599 --- /dev/null +++ b/src/Concerns/NestedRelationManager.php @@ -0,0 +1,14 @@ + $resource::getUrl('index'), + default => null, + }; + + $detailUrl = match (true) { + $resource::hasPage($operation) => $resource::getUrl($operation, [ + 'record' => $record, + ]), + + $resource::hasPage('view') => $resource::getUrl('view', [ + 'record' => $record, + ]), + + $resource::hasPage('edit') => $resource::getUrl('edit', [ + 'record' => $record, + ]), + }; + + $indexUrl ??= "$detailUrl#list"; + + return [ + $indexUrl => $resource::getBreadcrumb(), + $detailUrl => static::getBreadcrumbRecordLabel($record), + ]; + } + + public static function getBreadcrumbRecordLabel(Model $record) + { + return $record->getRouteKey(); + } + + public static function shouldRegisterNavigation(): bool + { + if ($ancestor = static::getAncestor()) { + return $ancestor->getResource() === static::class; + } + + return parent::shouldRegisterNavigation(); + } +} diff --git a/src/NestedResourcesPlugin.php b/src/NestedResourcesPlugin.php index 524e75f..1d37142 100644 --- a/src/NestedResourcesPlugin.php +++ b/src/NestedResourcesPlugin.php @@ -1,6 +1,6 @@ | null + */ + public ?array $data = []; + + protected static bool $canCreateAnother = true; + + public function mount(int | string $record): void + { + $this->ownerRecord = $this->resolveRecord($record); + $this->record = null; + + $this->authorizeAccess(); + + $this->fillForm(); + + $this->previousUrl = url()->previous(); + } + + public function getRelation(): Relation + { + $relationship = static::getRelationship(); + + return $this->getOwnerRecord()->{$relationship}(); + } + + public static function getRelationship(): string + { + return static::$relationship; + } + + public function mountCanAuthorizeAccess(): void + { + abort_unless(static::canAccess(['record' => $this->getOwnerRecord()]), 403); + } + + public function getOwnerRecord(): Model + { + return $this->ownerRecord; + } + + public function getRecord(): Model + { + return $this->record ?? $this->ownerRecord; + } + + protected function authorizeAccess(): void + { + // TODO: maybe need to switch resource to other resource + abort_unless(static::getResource()::canCreate(), 403); + } + + protected function fillForm(): void + { + $this->callHook('beforeFill'); + + $this->form->fill(); + + $this->callHook('afterFill'); + } + + public function create(bool $another = false): void + { + $this->authorizeAccess(); + + try { + $this->callHook('beforeValidate'); + + $data = $this->form->getState(); + + $this->callHook('afterValidate'); + + $data = $this->mutateFormDataBeforeCreate($data); + + $this->callHook('beforeCreate'); + + $this->record = $this->handleRecordCreation($data); + + $this->form->model($this->getRecord())->saveRelationships(); + + $this->callHook('afterCreate'); + } catch (Halt $exception) { + return; + } + + $this->rememberData(); + + $this->getCreatedNotification()?->send(); + + if ($another) { + // Ensure that the form record is anonymized so that relationships aren't loaded. + $this->form->model($this->getRecord()::class); + $this->record = null; + + $this->fillForm(); + + return; + } + + $redirectUrl = $this->getRedirectUrl(); + + $this->redirect($redirectUrl, navigate: FilamentView::hasSpaMode() && is_app_url($redirectUrl)); + } + + protected function getCreatedNotification(): ?Notification + { + $title = $this->getCreatedNotificationTitle(); + + if (blank($title)) { + return null; + } + + return Notification::make() + ->success() + ->title($title) + ; + } + + protected function getCreatedNotificationTitle(): ?string + { + return $this->getCreatedNotificationMessage() ?? __('filament-panels::resources/pages/create-record.notifications.created.title'); + } + + /** + * @deprecated Use `getCreatedNotificationTitle()` instead. + */ + protected function getCreatedNotificationMessage(): ?string + { + return null; + } + + public function createAnother(): void + { + $this->create(another: true); + } + + /** + * @param array $data + */ + protected function handleRecordCreation(array $data): Model + { + $record = new ($this->getRelation()->getRelated())($data); + + if ( + static::getResource()::isScopedToTenant() && + ($tenant = Filament::getTenant()) + ) { + return $this->associateRecordWithTenant($record, $tenant); + } + + if ($owner = $this->getOwnerRecord()) { + $record = $this->associateRecordWithParent($record, $owner); + } + $record->save(); + + return $record; + } + + protected function associateRecordWithParent(Model $record, Model $owner) + { + /** @var HasMany $relationship */ + if (($relationship = $this->getRelation()) instanceof HasMany) { + $record->{$relationship->getForeignKeyName()} = $owner->getKey(); + // $record->{$relationship-()} = $owner->getKey(); + } + + return $record; + } + + protected function associateRecordWithTenant(Model $record, Model $tenant): Model + { + $relationship = static::getResource()::getTenantRelationship($tenant); + + if ($relationship instanceof HasManyThrough) { + $record->save(); + + return $record; + } + + return $relationship->save($record); + } + + /** + * @param array $data + * @return array + */ + protected function mutateFormDataBeforeCreate(array $data): array + { + return $data; + } + + /** + * @return array + */ + protected function getFormActions(): array + { + return [ + $this->getCreateFormAction(), + ...(static::canCreateAnother() ? [$this->getCreateAnotherFormAction()] : []), + $this->getCancelFormAction(), + ]; + } + + protected function getCreateFormAction(): Action + { + return Action::make('create') + ->label(__('filament-panels::resources/pages/create-record.form.actions.create.label')) + ->submit('create') + ->keyBindings(['mod+s']) + ; + } + + protected function getSubmitFormAction(): Action + { + return $this->getCreateFormAction(); + } + + protected function getCreateAnotherFormAction(): Action + { + return Action::make('createAnother') + ->label(__('filament-panels::resources/pages/create-record.form.actions.create_another.label')) + ->action('createAnother') + ->keyBindings(['mod+shift+s']) + ->color('gray') + ; + } + + protected function getCancelFormAction(): Action + { + return Action::make('cancel') + ->label(__('filament-panels::resources/pages/create-record.form.actions.cancel.label')) + ->url($this->previousUrl ?? static::getResource()::getUrl()) + ->color('gray') + ; + } + + public function form(Form $form): Form + { + return $form; + } + + /** + * @return array + */ + protected function getForms(): array + { + $resource = Filament::getModelResource($this->getRelation()->getRelated()); + + return [ + 'form' => $this->form($resource::form( + $this->makeForm() + ->operation('create') + ->model($this->getRelation()->getRelated()::class) + ->statePath($this->getFormStatePath()) + ->columns($this->hasInlineLabels() ? 1 : 2) + ->inlineLabel($this->hasInlineLabels()), + )), + ]; + } + + public function getFormStatePath(): ?string + { + return 'data'; + } + + public static function canCreateAnother(): bool + { + return static::$canCreateAnother; + } + + public static function disableCreateAnother(): void + { + static::$canCreateAnother = false; + } + + protected function getRedirectUrl(): string + { + $resource = Filament::getModelResource($this->getRecord()); + + if ($resource::hasPage('view') && $resource::canView($this->getRecord())) { + return $resource::getUrl('view', ['record' => $this->getRecord(), ...$this->getRedirectUrlParameters()]); + } + + if ($resource::hasPage('edit') && $resource::canEdit($this->getRecord())) { + return $resource::getUrl('edit', ['record' => $this->getRecord(), ...$this->getRedirectUrlParameters()]); + } + + return $resource::getUrl('index'); + } + + protected function getRedirectUrlParameters(): array + { + return []; + } +} diff --git a/src/Pages/NestedCreateRecord.php b/src/Pages/NestedCreateRecord.php deleted file mode 100644 index 08aebed..0000000 --- a/src/Pages/NestedCreateRecord.php +++ /dev/null @@ -1,50 +0,0 @@ -getAncestorRecord(); - dd($ancestor); - - return parent::mutateFormDataBeforeCreate([ - ...$data, - ...$ancestor, - ]); - } - - protected function getAncestorRecord(): array - { - $id = Arr::last($this->getRouteParameterIds()); - $ancestor = static::getResource()::getAncestor(); - $recordRouteKeyName = $ancestor->getResource()::getRecordRouteKeyName() ?? 'id'; - $record = $ancestor->getResource()::getModel()::firstWhere($recordRouteKeyName, $id); - $fake = new (static::getModel())(); - /** @var BelongsTo $relation */ - $relation = $fake->{$ancestor->getRelationship()}(); - - if ($relation instanceof MorphTo) { - return [$relation->getForeignKeyName() => $record->id, $relation->getMorphType() => get_class($record)]; - } - - return [$relation->getForeignKeyName() => $record->id]; - } - - protected function getRedirectUrlParameters(): array - { - /** @var Ancestor $ancestor */ - $ancestor = $this::getResource()::getAncestor(); - - return $ancestor->getNormalizedRouteParameters($this->getRecord()); - } -} diff --git a/src/Pages/NestedEditRecord.php b/src/Pages/NestedEditRecord.php deleted file mode 100644 index 87160aa..0000000 --- a/src/Pages/NestedEditRecord.php +++ /dev/null @@ -1,89 +0,0 @@ -getResource(); - - $action - ->authorize($resource::canDelete($this->getRecord())) - ->successRedirectUrl( - $resource::hasPage('index') - ? $resource::getUrl('index', [ - ...$ancestor->getNormalizedRouteParameters($this->getRecord()), - ]) - : $ancestorResource::getUrl('edit', [ - ...$ancestor->getNormalizedRouteParameters($this->getRecord()), - ]) - ) - ; - } - - protected function configureForceDeleteAction(ForceDeleteAction $action): void - { - - $resource = static::getResource(); - $ancestor = $resource::getAncestor(); - - if (! $ancestor) { - parent::configureForceDeleteAction($action); - - return; - } - - $ancestorResource = $ancestor->getResource(); - - $action - ->authorize($resource::canForceDelete($this->getRecord())) - ->successRedirectUrl( - $resource::hasPage('index') - ? $resource::getUrl('index', [ - ...$ancestor->getNormalizedRouteParameters($this->getRecord()), - ]) - : $ancestorResource::getUrl('edit', [ - ...$ancestor->getNormalizedRouteParameters($this->getRecord()), - ]) - ) - ; - } - - protected function configureViewAction(ViewAction $action): void - { - $resource = static::getResource(); - - $action - ->authorize($resource::canView($this->getRecord())) - ->infolist(fn (Infolist $infolist): Infolist => static::getResource()::infolist($infolist->columns(2))) - ->form(fn (Form $form): Form => static::getResource()::form($form)) - ; - - if ($resource::hasPage('view')) { - $action->url(fn (): string => static::getResource()::getUrl('view', [ - ...static::getResource()::getAncestor()->getNormalizedRouteParameters($this->getRecord()), - 'record' => $this->getRecord(), - ])); - } - } -} diff --git a/src/Pages/NestedListRecords.php b/src/Pages/NestedListRecords.php deleted file mode 100644 index e5ac732..0000000 --- a/src/Pages/NestedListRecords.php +++ /dev/null @@ -1,72 +0,0 @@ -when( - static::getResource()::hasPage('edit'), - fn (Table $table) => $table->recordUrl(fn (Model $record) => static::getResource()::getUrl('edit', [ - ...static::getResource()::getAncestor()->getNormalizedRouteParameters($record), - 'record' => $record, - ])), - fn (Table $table) => $table->recordUrl(null) - ) - ; - } - - protected function configureViewAction(Tables\Actions\ViewAction | EditAction $action): void - { - parent::configureViewAction($action); - $action - ->when( - static::getResource()::hasPage('view'), - fn (Tables\Actions\ViewAction $action) => $action - ->url(fn ($record) => static::getResource()::getUrl('view', [ - ...static::getResource()::getAncestor()->getNormalizedRouteParameters($record), - 'record' => $record, - ])) - ) - ; - } - - protected function configureCreateAction(Tables\Actions\CreateAction | CreateAction $action): void - { - parent::configureCreateAction($action); - $action - ->when( - static::getResource()::hasPage('create'), - fn (CreateAction $action) => $action - ->url(static::getResource()::getUrl('create', $this->getRouteParameterIds())), - fn (CreateAction $action) => $action->hidden() - ) - ; - } - - protected function configureEditAction(Tables\Actions\EditAction | EditAction $action): void - { - parent::configureEditAction($action); - $action - ->when( - static::getResource()::hasPage('edit'), - fn (Tables\Actions\EditAction $action) => $action - ->url(fn ($record) => static::getResource()::getUrl('edit', [ - ...static::getResource()::getAncestor()->getNormalizedRouteParameters($record), - 'record' => $record, - ])) - ) - ; - } -} diff --git a/src/Pages/NestedPage.php b/src/Pages/NestedPage.php deleted file mode 100644 index 6955a3e..0000000 --- a/src/Pages/NestedPage.php +++ /dev/null @@ -1,28 +0,0 @@ -routeParameterIds = func_get_args(); - } - - public function getRouteParameterIds(): array - { - return $this->routeParameterIds; - } - - public function getBreadcrumbs(): array - { - return static::getResource()::getBreadcrumbs($this); - } - - // protected function resolveRoutePathRecords(array $arguments) { - // - // } - -} diff --git a/src/Pages/NestedViewRecord.php b/src/Pages/NestedViewRecord.php deleted file mode 100644 index c1b8adf..0000000 --- a/src/Pages/NestedViewRecord.php +++ /dev/null @@ -1,29 +0,0 @@ -authorize($resource::canEdit($this->getRecord())) - ->form(fn (Form $form): Form => static::getResource()::form($form)) - ; - - if ($resource::hasPage('edit')) { - $action->url(fn (): string => static::getResource()::getUrl('edit', [ - ...static::getResource()::getAncestor()->getNormalizedRouteParameters($this->getRecord()), - 'record' => $this->getRecord(), - ])); - } - } -} diff --git a/src/RelationManagers/NestedRelationManager.php b/src/RelationManagers/NestedRelationManager.php deleted file mode 100644 index e53bbc2..0000000 --- a/src/RelationManagers/NestedRelationManager.php +++ /dev/null @@ -1,57 +0,0 @@ -getRelationship()->getRelated()); - } - - protected function configureViewAction(Tables\Actions\ViewAction $action): void - { - parent::configureViewAction( - $action - ->when( - static::getResource()::hasPage('view'), - fn (Tables\Actions\ViewAction $action) => $action->url(fn (Model $record) => static::getResource()::getUrl('view', [ - ...static::getResource()::getAncestor()->getNormalizedRouteParameters($this->getOwnerRecord()), - 'record' => $record, - ])) - ) - ); - } - - protected function configureCreateAction(Tables\Actions\CreateAction $action): void - { - parent::configureCreateAction( - $action - ->when( - static::getResource()::hasPage('create'), - fn (Tables\Actions\CreateAction $action) => $action->url(static::getResource()::getUrl('create', [ - ...static::getResource()::getAncestor()->getNormalizedRouteParameters($this->getOwnerRecord()), - ])) - ) - ); - } - - protected function configureEditAction(Tables\Actions\EditAction $action): void - { - parent::configureEditAction( - $action - ->when( - static::getResource()::hasPage('edit'), - fn (Tables\Actions\EditAction $action) => $action->url(fn (Model $record) => static::getResource()::getUrl('edit', [ - ...static::getResource()::getAncestor()->getNormalizedRouteParameters($record), - 'record' => $record, - ])) - ) - ); - } -} diff --git a/src/Resources/NestedResource.php b/src/Resources/NestedResource.php deleted file mode 100644 index 60e73b2..0000000 --- a/src/Resources/NestedResource.php +++ /dev/null @@ -1,185 +0,0 @@ -getResource(); - $parameter = $ancestor->getRouteParameterName(); - - return $resource::getSlug() . '/{' . $parameter . '?}/' . parent::getSlug(); - } - - return parent::getSlug(); - } - - public static function shouldRegisterNavigation(): bool - { - if (static::hasAncestor()) { - return false; - } - - return parent::shouldRegisterNavigation(); - } - - public static function getBreadcrumbs(Page $page, Model $record = null): array - { - $resource = static::class; - - $breadcrumb = $page->getBreadcrumb(); - /** @var Ancestor $ancestor */ - $ancestor = $resource::getAncestor(); - - // If no record passed - if (! ($page instanceof ListRecords)) { - $record ??= $page->getRecord(); - } - - // If page has no record (such as create pages) - $id = Arr::last($page->getRouteParameterIds()); - if ($ancestor) { - $recordRouteKeyName = $ancestor->getResource()::getRecordRouteKeyName() ?? 'id'; - $relatedRecord = $record ? $ancestor->getRelatedModel($record) : $ancestor->getResource()::getModel()::firstWhere($recordRouteKeyName, $id); - } - - if ($ancestor) { - $index = $resource::hasPage('index') - ? [ - $resource::getUrl('index', [ - ...$ancestor->getNormalizedRouteParameters($record ?? $relatedRecord), - ]) => $resource::getBreadcrumb(), - ] - : [ - $ancestor->getResource()::getUrl('edit', [ - ...$ancestor->getNormalizedRouteParameters($record ?? $relatedRecord), - ]) . '#relation-manager' => $resource::getBreadcrumb(), - ]; - - } else { - $index = [$resource::getUrl('index') => $resource::getBreadcrumb()]; - } - - $breadcrumbs = []; - - if ($ancestor) { - $breadcrumbs = [ - ...$ancestor->getResource()::getBreadcrumbs($page, $relatedRecord), - ...$breadcrumbs, - ]; - } - - $breadcrumbs = [ - ...$breadcrumbs, - ...$index, - ]; - - if ($page::getResource() === $resource) { - $breadcrumbs = [ - ...$breadcrumbs, - ...(filled($breadcrumb) ? [$breadcrumb] : []), - ]; - } else { - - $pageTypes = match (true) { - $page instanceof ViewRecord => ['view', 'edit'], - default => ['edit', 'view'], - }; - - foreach ($pageTypes as $pageType) { - if ($resource::hasPage($pageType) && $resource::can($pageType, $record)) { - $recordBreadcrumb = [$resource::getUrl($pageType, [ - ...$ancestor ? $ancestor->getNormalizedRouteParameters($record) : [], - 'record' => $record, - ]) => $record->{$resource::getBreadcrumbTitleAttribute()}]; - - break; - } - } - - $breadcrumbs = [ - ...$breadcrumbs, - ...$recordBreadcrumb, - ]; - } - - return $breadcrumbs; - } - - public static function getGlobalSearchResultUrl(Model $record): ?string - { - if (static::hasPage('edit') && static::canEdit($record)) { - return static::getUrl( - 'edit', - collect([ - 'record' => $record->id, - ]) - ->when( - $ancestor = static::getAncestor(), - fn (Collection $collection) => $collection->mergeRecursive(...$ancestor->getNormalizedRouteParameters($record)) - ) - ->toArray() - ); - } - - if (static::hasPage('view') && static::canView($record)) { - return static::getUrl( - 'view', - collect([ - 'record' => $record->id, - ]) - ->when( - $ancestor = static::getAncestor(), - fn (Collection $collection) => $collection->merge($ancestor->getNormalizedRouteParameters($record)) - ) - ->toArray() - ); - } - - return parent::getGlobalSearchResultUrl($record); - } - - public static function getRouteBaseName(string $panel = null): string - { - return preg_replace('/.\{[^}]*\}/', '', parent::getRouteBaseName($panel)); - } - - public static function routes(Panel $panel): void - { - $slug = static::getSlug(); - - Route::name( - (string) str($slug) - ->replace('/', '.') - ->replaceMatches('/.\{[^}]*\}/', '') - ->append('.'), - ) - ->prefix($slug) - ->middleware(static::getRouteMiddleware($panel)) - ->withoutMiddleware(static::getWithoutRouteMiddleware($panel)) - ->group(function () use ($panel) { - foreach (static::getPages() as $name => $page) { - $page->registerRoute($panel)?->name($name); - } - }) - ; - } -} diff --git a/src/helpers.php b/src/helpers.php deleted file mode 100644 index cd9a0ac..0000000 --- a/src/helpers.php +++ /dev/null @@ -1,22 +0,0 @@ -camel() . 'Record'; - } -} - -if (! function_exists('Guava\Filament\NestedResources\get_resource_route_parameter')) { - function get_resource_route_parameter(string | Resource $resource): string - { - return get_model_route_parameter($resource::getModel()); - } -}