diff --git a/.github/workflows/frontend.yml b/.github/workflows/frontend.yml index 47193754a..4e5354640 100644 --- a/.github/workflows/frontend.yml +++ b/.github/workflows/frontend.yml @@ -87,7 +87,7 @@ jobs: if: steps.git-diff.outputs.diff env: APP_URL: "http://127.0.0.1:8000" - run: php artisan dusk + run: php artisan pest:dusk - name: Upload Screenshots if: failure() uses: actions/upload-artifact@v3 diff --git a/.github/workflows/laravel.yml b/.github/workflows/laravel.yml index 59ec2dcc7..5019cdf8f 100644 --- a/.github/workflows/laravel.yml +++ b/.github/workflows/laravel.yml @@ -58,7 +58,7 @@ jobs: if: steps.git-diff.outputs.diff run: | sudo systemctl start mysql.service - mysqladmin create accessibilityexchange --user="root" --password="root" + mysqladmin create tae-test --user="root" --password="root" - name: Copy .env if: steps.git-diff.outputs.diff run: php -r "file_exists('.env') || copy('.env.example', '.env');" @@ -73,21 +73,23 @@ jobs: - name: Run tests if: steps.git-diff.outputs.diff && matrix.php == '8.2' env: + DB_DATABASE: tae-test DB_PASSWORD: root DB_HOST: localhost run: | php artisan migrate php artisan storage:link - php artisan test --parallel --coverage-clover coverage.xml + php artisan test - name: Run tests with coverage if: steps.git-diff.outputs.diff && matrix.php == '8.1' env: + DB_DATABASE: tae-test DB_PASSWORD: root DB_HOST: localhost run: | php artisan migrate php artisan storage:link - php artisan test --parallel --coverage-clover coverage.xml + php artisan test --coverage-clover coverage.xml - name: Save code coverage to artifact uses: actions/upload-artifact@v3 if: steps.git-diff.outputs.diff && matrix.php == '8.1' diff --git a/README.md b/README.md index 16288c95e..221d6a673 100644 --- a/README.md +++ b/README.md @@ -18,22 +18,22 @@ at [OCAD University](https://ocadu.ca). ## Technical Details -The platform is built as a progressive web application using the [Laravel 9](https://laravel.com/docs/9.x) framework. +The platform is built as a progressive web application using the [Laravel 10](https://laravel.com/docs/10.x) framework. ## Installation -For general deployment information, please see the Laravel 9.x [deployment documentation](https://laravel.com/docs/9.x/deployment). +For general deployment information, please see the Laravel 10.x [deployment documentation](https://laravel.com/docs/10.x/deployment). The platform requires the following: -- [PHP](https://www.php.net/supported-versions.php) >= 8.1 with [required extensions](https://laravel.com/docs/9.x/deployment#server-requirements) +- [PHP](https://www.php.net/supported-versions.php) >= 8.1 with [required extensions](https://laravel.com/docs/10.x/deployment#server-requirements) - [MySQL](https://dev.mysql.com/downloads/) >= 5.7 - [Composer](https://getcomposer.org) >= 2.0 - [Node](https://nodejs.org) >= 18 Optionally you may wish to install [NVM](https://github.com/nvm-sh/nvm) to make node version management easier. -The deployment process should follow all the recommended [optimization processes](https://laravel.com/docs/9.x/deployment#optimization). +The deployment process should follow all the recommended [optimization processes](https://laravel.com/docs/10.x/deployment#optimization). ## Development environments @@ -55,12 +55,10 @@ php artisan migrate ## Development -Local development uses either the [Laravel Sail](https://laravel.com/docs/9.x/sail) Docker environment or [Laravel Valet](https://laravel.com/docs/9.x/valet). +Local development uses [Laravel Herd](https://herd.laravel.com/docs/1/getting-started/about-herd). -### Local development setup using Laravel Sail - -1. Install [Docker Desktop](https://www.docker.com/products/docker-desktop). -2. Add an alias to your shell [as described here](https://laravel.com/docs/9.x/sail#configuring-a-bash-alias). +1. Install [Herd](https://herd.laravel.com). +2. Install [Xdebug](https://herd.laravel.com/docs/1/advanced-usage/xdebug) or [PCOV](https://herd.laravel.com/docs/1/advanced-usage/additional-extensions) for code coverage. 3. Fork and clone the project repository (easiest with the [Github CLI](https://cli.github.com/)): ```bash @@ -74,99 +72,13 @@ Local development uses either the [Laravel Sail](https://laravel.com/docs/9.x/sa cp .env.example .env ``` - Then, change the `APP_ENV` value to `local`: - - ```dotenv - APP_ENV=local - ``` - -5. Generate an encryption key for [CipherSweet](https://github.com/spatie/laravel-ciphersweet): - - ```bash - openssl rand -hex 32 - ``` - - Add it to your `.env` file: - - ```dotenv - CIPHERSWEET_KEY="" - ``` - -6. Start the development environment by running the following command from within the project directory: - - ```bash - sail up -d - ``` - -7. Install Composer and NPM dependencies: - - ```bash - sail composer install - sail npm install - ``` - -8. Generate an application key: - - ```bash - sail artisan key:generate - ``` - -9. Run the required database migrations: - - ```bash - sail artisan migrate - ``` - -10. Download the application fonts: - - ```bash - sail artisan google-fonts:fetch - ``` - -For comprehensive instructions, consult the [Laravel documentation](https://laravel.com/docs/9.x). Here's an overview -of how some key tasks can be carried out using Sail: - -- [Composer](https://getcomposer.org) commands may be executed by using `sail composer `. -- [NPM](https://docs.npmjs.com/cli) commands may be executed by using `sail npm `. -- [Artisan](https://laravel.com/docs/9.x/artisan) commands may be executed by using `sail artisan `. - -### Local development setup using Laravel Valet - -1. Install [Homebrew](https://brew.sh). -2. Install PHP 8.1 via Homebrew: - - ```bash - brew install php@8.1 - ``` - -3. Install [Composer](https://getcomposer.org/). -4. Install Valet: - - ```bash - composer global require laravel/valet - valet install - ``` - -5. Fork and clone the project repository (easiest with the [Github CLI](https://cli.github.com/)): - - ```bash - gh repo fork accessibility-exchange/platform --clone - cd platform - ``` - -6. Create a `.env` file from the included example file: - - ```bash - cp .env.example .env - ``` - Then, change the `APP_ENV` value to `local`: ```dotenv APP_ENV=local ``` -8. Generate an encryption key for [CipherSweet](https://github.com/spatie/laravel-ciphersweet): +5. Generate an encryption key for [CipherSweet](https://github.com/spatie/laravel-ciphersweet): ```bash openssl rand -hex 32 @@ -178,7 +90,7 @@ of how some key tasks can be carried out using Sail: CIPHERSWEET_KEY="" ``` -9. Install Composer and NPM dependencies: +6. Install Composer and NPM dependencies: ```bash # install composer dependencies @@ -192,41 +104,42 @@ of how some key tasks can be carried out using Sail: npm ci ``` -10. Generate an application key: +7. Generate an application key: ```bash php artisan key:generate ``` -11. Create a database: +8. Create a database for development and one for running tests: ```bash mysql -uroot -e "create database accessibilityexchange;" + mysql -uroot -e "create database tae-test;" ``` -12. Run the required database migrations: +9. Run the required database migrations: ```bash php artisan migrate ``` -13. Download the application fonts: +10. Download the application fonts: ```bash php artisan google-fonts:fetch ``` -14. Tell Valet to serve the application: +11. Tell Herd to serve the application: ```bash - valet link + herd link ``` -15. Install [Mailhog](https://github.com/mailhog/MailHog) so that you can access transactional email from the platform: +12. Install [Mailpit](https://github.com/axllent/mailpit) so that you can access transactional email from the platform: ```bash - brew install mailhog - brew services start mailhog + brew install mailpit + brew services start mailpit ``` Then, make sure that your `.env` file contains the following values: @@ -237,19 +150,19 @@ of how some key tasks can be carried out using Sail: MAIL_PORT=1025 ``` - You will now be able to access mail that the platform sends by visiting http://127.0.0.1:8025 or http://localhost:8025. For more information and additional configuration options, [read this blog post](https://ryangjchandler.co.uk/posts/setup-mailhog-with-laravel-valet). + You will now be able to access mail that the platform sends by visiting http://127.0.0.1:8025 or http://localhost:8025. For more information and additional configuration options, [read the Mailpit documentation](https://github.com/axllent/mailpit). -For comprehensive instructions, consult the [Laravel documentation](https://laravel.com/docs/9.x). Here's an overview +For comprehensive instructions, consult the [Laravel documentation](https://laravel.com/docs/10.x). Here's an overview of how some key tasks can be carried out using Valet: - [Composer](https://getcomposer.org) commands may be executed by using `composer `. - [NVM](https://github.com/nvm-sh/nvm) commands may be executed by using `nvm `. - [NPM](https://docs.npmjs.com/cli) commands may be executed by using `npm `. -- [Artisan](https://laravel.com/docs/9.x/artisan) commands may be executed by using `php artisan `. +- [Artisan](https://laravel.com/docs/10.x/artisan) commands may be executed by using `php artisan `. ### Running tests -The project uses [Pest](http://pestphp.com) for testing. For more information about testing Laravel, [read the documentation](https://laravel.com/docs/9.x/testing). +The project uses [Pest](http://pestphp.com) for testing. For more information about testing Laravel, [read the documentation](https://laravel.com/docs/10.x/testing). ### Development workflow @@ -259,19 +172,17 @@ The project uses [Pest](http://pestphp.com) for testing. For more information ab that have been prototyped and gone through one or more co-design sessions. - Feature development must take place in a fork, in a branch based on the `dev` branch. Feature branches must be named according to the format `feat/`. -- Before opening a pull request, developers should run `composer format && composer analyze && composer test-coverage` to ensure that their code is properly formatted, does not cause static analysis errors, and passes tests. Depending on the code coverage, more tests may need to be written to ensure that code coverage does not drop. - - May need to enabled the XDEBUG coverage mode before running tests, for example `XDEBUG_MODE=coverage composer test-coverage`. - - May also want to run the tests in parallel to improve speed, for example `php artisan test --parallel` or `XDEBUG_MODE=coverage php artisan test --coverage --parallel` +- Before opening a pull request, developers should run `composer format && composer analyze && php artisan test --coverage` to ensure that their code is properly formatted, does not cause static analysis errors, and passes tests. Depending on the code coverage, more tests may need to be written to ensure that code coverage does not drop. - Once a feature is ready to merge into `dev`, the merge must be performed using a [squash commit](https://docs.github.com/en/github/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/about-pull-request-merges#squash-and-merge-your-pull-request-commits). -- The [`production`](https://github.com/accessibility-exchange/platform/tree/production) branch contains refined features that - are considered production-ready. +- The [`production`](https://github.com/accessibility-exchange/platform/tree/production) branch contains refined + features that are considered production-ready. - Prereleases must be tagged from the `dev` branch. - Releases must be tagged from the `production` branch. ### Working with markdown -In other Laravel applications you may see methods such as [`Str::markdown()`](https://laravel.com/docs/9.x/helpers#method-str-markdown) -and [`Str::inlineMarkdown()`](https://laravel.com/docs/9.x/helpers#method-str-inline-markdown) used. In general we attempt +In other Laravel applications you may see methods such as [`Str::markdown()`](https://laravel.com/docs/10.x/helpers#method-str-markdown) +and [`Str::inlineMarkdown()`](https://laravel.com/docs/10.x/helpers#method-str-inline-markdown) used. In general we attempt to avoid using these methods and instead favour using the provided `safe_markdown()` and `safe_inlineMarkdown` helpers. These methods will escape HTML used in a markdown string, strip unsafe links, and escape replacements. They are also tied into the localization system, and will populate their strings into the string packages, just as `__()` would. @@ -294,10 +205,10 @@ If you need to unescape a replacement you can use a `!` at the start of the plac There are some cases where you may still wish to use the `Str` markdown helpers, such as when handling admin input (e.g. resource collection information). In these special cases, make sure to call the Laravel markdown helpers with the -`SAFE_MARKDOWN_OPTIONS` argument to escape HTML and remove unsafe links. +`config('markdown')` argument to escape HTML and remove unsafe links. ```php -{!! Str::markdown('Hello **World**', SAFE_MARKDOWN_OPTIONS) !!} +{!! Str::markdown('Hello **World**', config('markdown')) !!} {{--

<em>Hello World</em>

--}} ``` @@ -309,7 +220,7 @@ blade templates. ## Supported application environments -The application environment is set by specifying the `APP_ENV` environment variable. See [Environment Configuration](https://laravel.com/docs/9.x/configuration#environment-configuration) docs for more information. +The application environment is set by specifying the `APP_ENV` environment variable. See [Environment Configuration](https://laravel.com/docs/10.x/configuration#environment-configuration) docs for more information. | `APP_ENV` | Description | | --- | ---- | @@ -318,7 +229,7 @@ The application environment is set by specifying the `APP_ENV` environment varia | staging | For deploys from the "staging" branch. Used to test changes in a production like environment before going live. | | production | For deploys from the "production" branch. The live production released code. | -Amongst other things, the application environment can be used to prevent tasks from running or requiring confirmation before running, e.g. in production running `php artisan migrate:fresh` requires confirmation. It can also be used to limit output in blade templates using the `@env()` or `@production` directives (See: [Environment Directives](https://laravel.com/docs/9.x/blade#environment-directives) docs) +Amongst other things, the application environment can be used to prevent tasks from running or requiring confirmation before running, e.g. in production running `php artisan migrate:fresh` requires confirmation. It can also be used to limit output in blade templates using the `@env()` or `@production` directives (See: [Environment Directives](https://laravel.com/docs/10.x/blade#environment-directives) docs) ## Custom Artisan Commands diff --git a/app/Console/Commands/SeederBackupData.php b/app/Console/Commands/SeederBackupData.php index e52dd4e25..4a2f78f2f 100644 --- a/app/Console/Commands/SeederBackupData.php +++ b/app/Console/Commands/SeederBackupData.php @@ -72,7 +72,7 @@ public function handle() return 0; - // restores backups + // restores backups } elseif ($options['restore']) { if (in_array(config('app.env'), ['testing', 'production']) === true) { printf("This command cannot run on environment %s\r\n", config('app.env')); @@ -111,7 +111,7 @@ public function handle() return 0; } - // default --all is to backup all tables + // default --all is to backup all tables } elseif ($options['all']) { foreach ($available_tables as $table) { printf("Backing up table seeder: %s for environment: %s\r\n", $table, $environment); @@ -120,7 +120,7 @@ public function handle() return 0; - // if table is set the default will be to backup the table + // if table is set the default will be to backup the table } elseif (count($options['table']) > 0) { foreach ($options['table'] as $table) { if (in_array($table, $available_tables)) { diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 8c9b576b9..4e59bd21d 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -13,6 +13,7 @@ use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Gate; use Illuminate\Support\Facades\URL; + use function localized_route; class UserController extends Controller diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index c5c12e50f..eaea37fb7 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -16,7 +16,7 @@ class Kernel extends HttpKernel protected $middleware = [ // \App\Http\Middleware\TrustHosts::class, \App\Http\Middleware\TrustProxies::class, - \Fruitcake\Cors\HandleCors::class, + \Illuminate\Http\Middleware\HandleCors::class, \App\Http\Middleware\PreventRequestsDuringMaintenance::class, \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, \App\Http\Middleware\TrimStrings::class, diff --git a/app/Http/Livewire/AddEngagementConnector.php b/app/Http/Livewire/AddEngagementConnector.php index a239c0148..ef530127b 100644 --- a/app/Http/Livewire/AddEngagementConnector.php +++ b/app/Http/Livewire/AddEngagementConnector.php @@ -34,7 +34,7 @@ class AddEngagementConnector extends Component public string $organization = ''; - public function __invoke(Container $container, Route $route, ?Engagement $engagement = null) + public function __invoke(Container $container, Route $route, Engagement $engagement = null) { return parent::__invoke($container, $route); } diff --git a/app/Http/Livewire/CollectionResources.php b/app/Http/Livewire/CollectionResources.php index b67f53978..f83d1c44d 100644 --- a/app/Http/Livewire/CollectionResources.php +++ b/app/Http/Livewire/CollectionResources.php @@ -37,7 +37,7 @@ class CollectionResources extends Component protected $queryString = ['searchQuery' => ['except' => '', 'as' => 'search']]; - public function __invoke(Container $container, Route $route, ?ResourceCollection $resourceCollection = null) + public function __invoke(Container $container, Route $route, ResourceCollection $resourceCollection = null) { return parent::__invoke($container, $route); } diff --git a/app/Http/Livewire/ManageEngagementConnector.php b/app/Http/Livewire/ManageEngagementConnector.php index 05cdb0605..ca187e569 100644 --- a/app/Http/Livewire/ManageEngagementConnector.php +++ b/app/Http/Livewire/ManageEngagementConnector.php @@ -32,7 +32,7 @@ class ManageEngagementConnector extends Component 'seeking_community_connector' => 'nullable|boolean', ]; - public function __invoke(Container $container, Route $route, ?Engagement $engagement = null) + public function __invoke(Container $container, Route $route, Engagement $engagement = null) { return parent::__invoke($container, $route); } diff --git a/app/Models/Course.php b/app/Models/Course.php index f5c81ded2..6cfef17da 100644 --- a/app/Models/Course.php +++ b/app/Models/Course.php @@ -17,8 +17,8 @@ class Course extends Model { use GeneratesMultilingualSlugs; use HasFactory; - use HasTranslations; use HasTranslatableSlug; + use HasTranslations; protected $fillable = [ 'title', diff --git a/app/Models/Engagement.php b/app/Models/Engagement.php index a196cc849..96993e040 100644 --- a/app/Models/Engagement.php +++ b/app/Models/Engagement.php @@ -34,8 +34,8 @@ class Engagement extends Model { use HasFactory; - use HasSchemalessAttributes; use HasRelationships; + use HasSchemalessAttributes; use HasStatus; use HasTranslations; diff --git a/app/Models/Individual.php b/app/Models/Individual.php index 104dea022..d8426e2eb 100644 --- a/app/Models/Individual.php +++ b/app/Models/Individual.php @@ -47,18 +47,18 @@ */ class Individual extends Model implements CipherSweetEncrypted { - use UsesCipherSweet; use HasDisplayRegion; use HasFactory; + use HasMergedRelationships; use HasMultimodalTranslations; use HasMultipageEditingAndPublishing; + use HasRelationships; use HasSchemalessAttributes; - use HasMergedRelationships; use HasSlug; use HasStatus; use HasTranslations; use Notifiable; - use HasRelationships; + use UsesCipherSweet; protected $fillable = [ 'published_at', diff --git a/app/Models/Interpretation.php b/app/Models/Interpretation.php index d42414762..001d61d19 100644 --- a/app/Models/Interpretation.php +++ b/app/Models/Interpretation.php @@ -54,7 +54,7 @@ public static function boot(): void }); } - public function getContextURL(?string $locale = null): ?string + public function getContextURL(string $locale = null): ?string { if ($this->route_has_params) { return null; diff --git a/app/Models/Invitation.php b/app/Models/Invitation.php index 64ed42a93..bedbc8fae 100644 --- a/app/Models/Invitation.php +++ b/app/Models/Invitation.php @@ -29,7 +29,7 @@ public function email(): Attribute ); } - public function accept(?string $type = null): void + public function accept(string $type = null): void { if ($type) { if ($type === 'individual') { diff --git a/app/Models/MatchingStrategy.php b/app/Models/MatchingStrategy.php index 0ddd8e747..7236431bb 100644 --- a/app/Models/MatchingStrategy.php +++ b/app/Models/MatchingStrategy.php @@ -188,7 +188,7 @@ public function detachClusters(array $clusters) /** * Synchronize associations with identities from a single identity cluster. */ - public function syncRelatedIdentities(IdentityCluster $cluster, int|array $identities, ?string $weight = null, bool $detaching = true): void + public function syncRelatedIdentities(IdentityCluster $cluster, int|array $identities, string $weight = null, bool $detaching = true): void { if (! is_array($identities)) { $identities = [$identities]; @@ -206,7 +206,7 @@ public function syncRelatedIdentities(IdentityCluster $cluster, int|array $ident } } - public function syncMutuallyExclusiveIdentities(IdentityCluster $cluster, int|array $identities, array $mutuallyExclusiveClusters, bool $detachLanguages = true, ?string $weight = null, bool $detaching = true): void + public function syncMutuallyExclusiveIdentities(IdentityCluster $cluster, int|array $identities, array $mutuallyExclusiveClusters, bool $detachLanguages = true, string $weight = null, bool $detaching = true): void { if (! is_array($identities)) { $identities = [$identities]; diff --git a/app/Models/Module.php b/app/Models/Module.php index 0786bbd8c..d844383b4 100644 --- a/app/Models/Module.php +++ b/app/Models/Module.php @@ -15,8 +15,8 @@ class Module extends Model { use GeneratesMultilingualSlugs; use HasFactory; - use HasTranslations; use HasTranslatableSlug; + use HasTranslations; protected $fillable = [ 'title', diff --git a/app/Models/Organization.php b/app/Models/Organization.php index 523b82e09..775b42886 100644 --- a/app/Models/Organization.php +++ b/app/Models/Organization.php @@ -51,15 +51,15 @@ class Organization extends Model use GeneratesMultilingualSlugs; use HasDisplayRegion; use HasFactory; - use HasSchemalessAttributes; use HasMembers; use HasMergedRelationships; use HasMultimodalTranslations; use HasMultipageEditingAndPublishing; use HasRelationships; + use HasSchemalessAttributes; use HasStatus; - use HasTranslations; use HasTranslatableSlug; + use HasTranslations; use Notifiable; use QueryKit; diff --git a/app/Models/RegulatedOrganization.php b/app/Models/RegulatedOrganization.php index bdd36c4e4..d7856d4f0 100644 --- a/app/Models/RegulatedOrganization.php +++ b/app/Models/RegulatedOrganization.php @@ -41,13 +41,13 @@ class RegulatedOrganization extends Model use GeneratesMultilingualSlugs; use HasDisplayRegion; use HasFactory; - use HasMultipageEditingAndPublishing; - use HasStatus; - use HasTranslations; - use HasTranslatableSlug; use HasInvitations; use HasMembers; use HasMultimodalTranslations; + use HasMultipageEditingAndPublishing; + use HasStatus; + use HasTranslatableSlug; + use HasTranslations; use Notifiable; protected $attributes = [ diff --git a/app/Models/Resource.php b/app/Models/Resource.php index 4ca574e45..63c403a13 100644 --- a/app/Models/Resource.php +++ b/app/Models/Resource.php @@ -19,8 +19,8 @@ class Resource extends Model { use GeneratesMultilingualSlugs; use HasFactory; - use HasTranslations; use HasTranslatableSlug; + use HasTranslations; protected $fillable = [ 'title', diff --git a/app/Models/ResourceCollection.php b/app/Models/ResourceCollection.php index 9d083872a..817463f7b 100644 --- a/app/Models/ResourceCollection.php +++ b/app/Models/ResourceCollection.php @@ -14,8 +14,8 @@ class ResourceCollection extends Model { use GeneratesMultilingualSlugs; use HasFactory; - use HasTranslations; use HasTranslatableSlug; + use HasTranslations; protected $fillable = [ 'title', diff --git a/app/Models/User.php b/app/Models/User.php index eab625edd..75fdf7ba1 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -41,12 +41,12 @@ class User extends Authenticatable implements CipherSweetEncrypted, FilamentUser { use CascadesDeletes; use HasFactory; + use HasMergedRelationships; use HasStatus; use Notifiable; + use SchemalessAttributesTrait; use TwoFactorAuthenticatable; use UsesCipherSweet; - use SchemalessAttributesTrait; - use HasMergedRelationships; protected $attributes = [ 'preferred_contact_method' => 'email', @@ -172,7 +172,7 @@ public function canManageSettings(): bool return $this->isAdministrator(); } - public function teamInvitation(): Invitation|null + public function teamInvitation(): ?Invitation { return Invitation::where('email', $this->email)->whereIn('invitationable_type', ['App\Models\Organization', 'App\Models\RegulatedOrganization'])->first() ?? null; } diff --git a/app/Policies/EngagementPolicy.php b/app/Policies/EngagementPolicy.php index 86ffc3791..f20484ce8 100644 --- a/app/Policies/EngagementPolicy.php +++ b/app/Policies/EngagementPolicy.php @@ -13,7 +13,7 @@ class EngagementPolicy use HandlesAuthorization; use UserCanViewPublishedContent; - public function before(User $user, string $ability): null|Response + public function before(User $user, string $ability): ?Response { if ($user->checkStatus('suspended') && $ability !== 'view') { return Response::deny(__('Your account has been suspended. Because of that, you do not have access to this page. Please contact us if you need further assistance.')); diff --git a/app/Policies/IndividualPolicy.php b/app/Policies/IndividualPolicy.php index df8c2f5a3..eae142529 100644 --- a/app/Policies/IndividualPolicy.php +++ b/app/Policies/IndividualPolicy.php @@ -10,9 +10,9 @@ class IndividualPolicy { - use UserCanViewPublishedContent, HandlesAuthorization; + use HandlesAuthorization, UserCanViewPublishedContent; - public function before(User $user, string $ability): null|Response + public function before(User $user, string $ability): ?Response { if ($user->checkStatus('suspended') && $ability !== 'view') { return Response::deny(__('Your account has been suspended. Because of that, you do not have access to this page. Please contact us if you need further assistance.')); diff --git a/app/Policies/MatchingStrategyPolicy.php b/app/Policies/MatchingStrategyPolicy.php index 7c9ebf721..6fc0d1b83 100644 --- a/app/Policies/MatchingStrategyPolicy.php +++ b/app/Policies/MatchingStrategyPolicy.php @@ -10,7 +10,7 @@ class MatchingStrategyPolicy { use HandlesAuthorization; - public function before(User $user): null|bool + public function before(User $user): ?bool { return $user->isAdministrator() ? true : null; } diff --git a/app/Policies/OrganizationPolicy.php b/app/Policies/OrganizationPolicy.php index 3d749c319..ce9c2b107 100644 --- a/app/Policies/OrganizationPolicy.php +++ b/app/Policies/OrganizationPolicy.php @@ -13,7 +13,7 @@ class OrganizationPolicy use HandlesAuthorization; use UserCanViewPublishedContent; - public function before(User $user, string $ability): null|Response + public function before(User $user, string $ability): ?Response { if ($user->checkStatus('suspended') && $ability !== 'view') { return Response::deny(__('Your account has been suspended. Because of that, you do not have access to this page. Please contact us if you need further assistance.')); diff --git a/app/Policies/ProjectPolicy.php b/app/Policies/ProjectPolicy.php index 671727866..7c76e2d8b 100644 --- a/app/Policies/ProjectPolicy.php +++ b/app/Policies/ProjectPolicy.php @@ -13,7 +13,7 @@ class ProjectPolicy use HandlesAuthorization; use UserCanViewPublishedContent; - public function before(User $user, string $ability): null|Response + public function before(User $user, string $ability): ?Response { if ($user->checkStatus('suspended') && $ability !== 'view') { return Response::deny(__('Your account has been suspended. Because of that, you do not have access to this page. Please contact us if you need further assistance.')); diff --git a/app/Policies/RegulatedOrganizationPolicy.php b/app/Policies/RegulatedOrganizationPolicy.php index dec12da13..be27c9157 100644 --- a/app/Policies/RegulatedOrganizationPolicy.php +++ b/app/Policies/RegulatedOrganizationPolicy.php @@ -13,7 +13,7 @@ class RegulatedOrganizationPolicy use HandlesAuthorization; use UserCanViewPublishedContent; - public function before(User $user, string $ability): null|Response + public function before(User $user, string $ability): ?Response { if ($user->checkStatus('suspended') && $ability !== 'view') { return Response::deny(__('Your account has been suspended. Because of that, you do not have access to this page. Please contact us if you need further assistance.')); diff --git a/app/Policies/ResourceCollectionPolicy.php b/app/Policies/ResourceCollectionPolicy.php index c1a095585..ddb621b8f 100644 --- a/app/Policies/ResourceCollectionPolicy.php +++ b/app/Policies/ResourceCollectionPolicy.php @@ -11,7 +11,7 @@ class ResourceCollectionPolicy { use HandlesAuthorization; - public function before(User $user): null|bool + public function before(User $user): ?bool { return $user->isAdministrator() ? true : null; } diff --git a/app/Policies/ResourcePolicy.php b/app/Policies/ResourcePolicy.php index b50ad0f4b..979031722 100644 --- a/app/Policies/ResourcePolicy.php +++ b/app/Policies/ResourcePolicy.php @@ -10,7 +10,7 @@ class ResourcePolicy { use HandlesAuthorization; - public function before(User $user): null|bool + public function before(User $user): ?bool { return $user->isAdministrator() ? true : null; } diff --git a/app/Policies/UserPolicy.php b/app/Policies/UserPolicy.php index 4026f2333..e7f7fd215 100644 --- a/app/Policies/UserPolicy.php +++ b/app/Policies/UserPolicy.php @@ -10,7 +10,7 @@ class UserPolicy { use HandlesAuthorization; - public function before(User $user, string $ability): null|Response + public function before(User $user, string $ability): ?Response { if ($user->checkStatus('suspended')) { return Response::deny(__('Your account has been suspended. Because of that, you do not have access to this page. Please contact us if you need further assistance.')); diff --git a/app/Rules/UniqueUserEmail.php b/app/Rules/UniqueUserEmail.php index ed2d2affa..78a6d4b2f 100644 --- a/app/Rules/UniqueUserEmail.php +++ b/app/Rules/UniqueUserEmail.php @@ -13,8 +13,8 @@ class UniqueUserEmail implements InvokableRule public $idColumn; // Can use the $id and $idColumn to define a model to ignore. Similar to how Laravel's unique validation rule works - // see: https://laravel.com/docs/9.x/validation#rule-unique - public function __construct(mixed $id = null, ?string $idColumn = null) + // see: https://laravel.com/docs/10.x/validation#rule-unique + public function __construct(mixed $id = null, string $idColumn = null) { $this->id = $id; $this->idColumn = $idColumn ?? 'id'; diff --git a/app/View/Components/AppLayout.php b/app/View/Components/AppLayout.php index 230cf7b37..507f2d4a4 100644 --- a/app/View/Components/AppLayout.php +++ b/app/View/Components/AppLayout.php @@ -13,7 +13,7 @@ class AppLayout extends Component public ?string $pageWidth; - public function __construct(string $bodyClass = 'page', string $headerClass = 'stack', ?string $pageWidth = null) + public function __construct(string $bodyClass = 'page', string $headerClass = 'stack', string $pageWidth = null) { $this->bodyClass = $bodyClass; $this->headerClass = $headerClass; diff --git a/app/View/Components/Banner.php b/app/View/Components/Banner.php index 76c1010f3..283b2df92 100644 --- a/app/View/Components/Banner.php +++ b/app/View/Components/Banner.php @@ -11,7 +11,7 @@ class Banner extends Component public ?string $icon; - public function __construct(string $type = 'info', ?string $icon = null) + public function __construct(string $type = 'info', string $icon = null) { $this->type = $type; diff --git a/app/View/Components/Interpretation.php b/app/View/Components/Interpretation.php index 91dce7503..0932ae846 100644 --- a/app/View/Components/Interpretation.php +++ b/app/View/Components/Interpretation.php @@ -30,7 +30,7 @@ class Interpretation extends Component * * @return void */ - public function __construct(string $name, ?string $namespace = null) + public function __construct(string $name, string $namespace = null) { $this->name = $name; $this->namespace = $namespace; diff --git a/app/View/Components/TranslationPicker.php b/app/View/Components/TranslationPicker.php index 93775c9fd..4e1150ae8 100644 --- a/app/View/Components/TranslationPicker.php +++ b/app/View/Components/TranslationPicker.php @@ -12,7 +12,7 @@ class TranslationPicker extends Component public array $availableLanguages; - public function __construct(?array $languages = null, ?array $availableLanguages = null) + public function __construct(array $languages = null, array $availableLanguages = null) { $this->languages = $languages ?? get_supported_locales(false); $this->availableLanguages = $availableLanguages ?? Options::forArray(get_available_languages(true, false))->nullable(__('Choose a language…'))->toArray(); diff --git a/app/helpers.php b/app/helpers.php index 9a75c423f..5fb0c6d14 100644 --- a/app/helpers.php +++ b/app/helpers.php @@ -207,7 +207,7 @@ function to_written_languages(array $codes): array * @param bool $capitalize Whether the returned language exonym should be capitalized. * @return null|string The localized name of the locale, if found. */ - function get_language_exonym(string $code, ?string $locale = null, bool $capitalize = true, bool $acronym = false): null|string + function get_language_exonym(string $code, string $locale = null, bool $capitalize = true, bool $acronym = false): ?string { $locale ??= locale(); @@ -236,7 +236,7 @@ function get_language_exonym(string $code, ?string $locale = null, bool $capital /** * Normalize a URL by adding a scheme if one isn't already present. */ - function normalize_url(string|null $url, string $scheme = 'https://'): string|null + function normalize_url(?string $url, string $scheme = 'https://'): ?string { if (! blank($url)) { $result = is_null(parse_url($url, PHP_URL_SCHEME)) ? $scheme.$url : $url; @@ -258,11 +258,6 @@ function context_from_model(mixed $model): string } } -define('SAFE_MARKDOWN_OPTIONS', [ - 'html_input' => 'escape', - 'allow_unsafe_links' => false, -]); - if (! function_exists('safe_link_replacement')) { function safe_link_replacement(string $string): string { @@ -313,19 +308,19 @@ function html_replacements(string $string, array $replacements = []): string } if (! function_exists('safe_markdown')) { - function safe_markdown(string $string, array $replacements = [], ?string $locale = null, bool $inline = false): HtmlString + function safe_markdown(string $string, array $replacements = [], string $locale = null, bool $inline = false): HtmlString { $markdownFuncName = $inline ? 'inlineMarkdown' : 'markdown'; $localized = __($string, [], $locale); - $html = Str::$markdownFuncName($localized, SAFE_MARKDOWN_OPTIONS); + $html = Str::$markdownFuncName($localized, config('markdown')); return new HtmlString(html_replacements($html, $replacements)); } } if (! function_exists('safe_inlineMarkdown')) { - function safe_inlineMarkdown(string $string, array $replacements = [], ?string $locale = null): HtmlString + function safe_inlineMarkdown(string $string, array $replacements = [], string $locale = null): HtmlString { return safe_markdown($string, $replacements, $locale, true); } diff --git a/composer.json b/composer.json index dafd544c0..2cb09daed 100644 --- a/composer.json +++ b/composer.json @@ -14,35 +14,36 @@ "blade-ui-kit/blade-heroicons": "^1.3", "blade-ui-kit/blade-icons": "^1.2", "codeat3/blade-forkawesome": "^1.8", - "codezero/laravel-unique-translation": "^3.5", - "doctrine/dbal": "^3.3", + "codezero/laravel-unique-translation": "^4.0", + "doctrine/dbal": "^3.0", "elhebert/laravel-sri": "^3.1", "filament/filament": "^2.16", "filament/spatie-laravel-settings-plugin": "^2.0", - "fluid-project/hearth": "^3.0", - "fruitcake/laravel-cors": "^3.0", + "fluid-project/hearth": "^4.0", "guzzlehttp/guzzle": "^7.5", "hedronium/spaceless-blade": "^3.0", - "laravel/framework": "^9.10", + "laravel/framework": "^10.0", "laravel/tinker": "^2.7", - "laravel/vonage-notification-channel": "^3.0", + "laravel/vonage-notification-channel": "^3.3", "league/flysystem-aws-s3-v3": "^3.0", "livewire/livewire": "^2.10", - "makeabledk/laravel-eloquent-status": "^2.0", + "makeabledk/laravel-eloquent-status": "^3.0", "propaganistas/laravel-phone": "^5.0", - "ralphjsmit/livewire-urls": "^1.1", - "spatie/laravel-backup": "^8.1", - "spatie/laravel-ciphersweet": "^1.0.2", - "spatie/laravel-collection-macros": "^7.11", + "ralphjsmit/livewire-urls": "^1.3", + "spatie/laravel-backup": "^8.3", + "spatie/laravel-ciphersweet": "^1.4", + "spatie/laravel-collection-macros": "^7.12", "spatie/laravel-cookie-consent": "^3.2", "spatie/laravel-db-snapshots": "^2.2", - "spatie/laravel-ignition": "^1.3", + "spatie/laravel-ignition": "^2.0", "spatie/laravel-login-link": "^1.1", "spatie/laravel-options": "^1.0", "spatie/laravel-schemaless-attributes": "^2.3", "spatie/laravel-translatable": "^6.0", - "staudenmeir/eloquent-has-many-deep": "^1.15", - "staudenmeir/laravel-merged-relations": "^1.5", + "staudenmeir/eloquent-has-many-deep": "^1.18", + "staudenmeir/eloquent-has-many-deep-contracts": "^1.1", + "staudenmeir/laravel-merged-relations": "^1.6", + "staudenmeir/laravel-migration-views": "^1.7", "symfony/http-foundation": "~6.2.8", "theiconic/name-parser": "^1.2", "umpirsky/language-list": "^1.1", @@ -57,15 +58,16 @@ "laravel/pint": "^1.13", "laravel/sail": "^1.13", "mockery/mockery": "^1.5", - "nunomaduro/collision": "^6.1", - "nunomaduro/larastan": "^2.1", - "pestphp/pest": "^1.21", - "pestphp/pest-plugin-faker": "^1.0", - "pestphp/pest-plugin-laravel": "^1.2", - "pestphp/pest-plugin-livewire": "^1.0", - "pestphp/pest-plugin-parallel": "^1.2", - "phpunit/phpunit": "^9.5", - "spatie/laravel-ray": "^1.29" + "nunomaduro/collision": "^7.0", + "nunomaduro/larastan": "dev-master", + "pestphp/pest": "^2.0", + "pestphp/pest-plugin-faker": "^2.0", + "pestphp/pest-plugin-laravel": "^2.2", + "pestphp/pest-plugin-livewire": "^2.1", + "phpunit/phpunit": "^10.0", + "plannr/laravel-fast-refresh-database": "^1.1", + "spatie/laravel-ray": "^1.29", + "spatie/x-ray": "^1.1" }, "config": { "optimize-autoloader": true, @@ -114,14 +116,23 @@ "@php artisan ide-helper:meta", "@php artisan filament:upgrade" ], - "analyze": "vendor/bin/phpstan analyse", + "analyze": [ + "vendor/bin/phpstan analyse", + "vendor/bin/x-ray app --compact --verbose" + ], "format": "vendor/bin/pint", "localize": [ "@php artisan localize en,fr --remove-missing", "cp -r resources/lang/fr/* resources/lang/lsq", "cp resources/lang/fr.json resources/lang/lsq.json" ], - "test": "php artisan test", - "test-coverage": "php artisan test --coverage" + "test": [ + "Composer\\Config::disableProcessTimeout", + "@php artisan test" + ], + "test-coverage": [ + "Composer\\Config::disableProcessTimeout", + "@php artisan test --coverage" + ] } } diff --git a/composer.lock b/composer.lock index 89e8211f1..62b655e1a 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "5ec18888b36fd8b874a8d05a96843802", + "content-hash": "cecbb5bcabc332cfcd1680ed30c65d2e", "packages": [ { "name": "akaunting/laravel-money", @@ -293,16 +293,16 @@ }, { "name": "bacon/bacon-qr-code", - "version": "2.0.7", + "version": "2.0.8", "source": { "type": "git", "url": "https://github.com/Bacon/BaconQrCode.git", - "reference": "d70c840f68657ce49094b8d91f9ee0cc07fbf66c" + "reference": "8674e51bb65af933a5ffaf1c308a660387c35c22" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Bacon/BaconQrCode/zipball/d70c840f68657ce49094b8d91f9ee0cc07fbf66c", - "reference": "d70c840f68657ce49094b8d91f9ee0cc07fbf66c", + "url": "https://api.github.com/repos/Bacon/BaconQrCode/zipball/8674e51bb65af933a5ffaf1c308a660387c35c22", + "reference": "8674e51bb65af933a5ffaf1c308a660387c35c22", "shasum": "" }, "require": { @@ -341,9 +341,9 @@ "homepage": "https://github.com/Bacon/BaconQrCode", "support": { "issues": "https://github.com/Bacon/BaconQrCode/issues", - "source": "https://github.com/Bacon/BaconQrCode/tree/2.0.7" + "source": "https://github.com/Bacon/BaconQrCode/tree/2.0.8" }, - "time": "2022-03-14T02:02:36+00:00" + "time": "2022-12-07T17:46:57+00:00" }, { "name": "blade-ui-kit/blade-heroicons", @@ -548,20 +548,20 @@ }, { "name": "chinleung/laravel-locales", - "version": "v2.0.0", + "version": "v2.0.1", "source": { "type": "git", "url": "https://github.com/chinleung/laravel-locales.git", - "reference": "a00a7e943a298d4d997a78968ca17b64ed42f438" + "reference": "3e3a8958a7ce8169db4fba7f19d3c60fac33d85b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/chinleung/laravel-locales/zipball/a00a7e943a298d4d997a78968ca17b64ed42f438", - "reference": "a00a7e943a298d4d997a78968ca17b64ed42f438", + "url": "https://api.github.com/repos/chinleung/laravel-locales/zipball/3e3a8958a7ce8169db4fba7f19d3c60fac33d85b", + "reference": "3e3a8958a7ce8169db4fba7f19d3c60fac33d85b", "shasum": "" }, "require": { - "illuminate/support": "^9.0", + "illuminate/support": "^9.0|^10.0", "php": "^8.0|^8.1" }, "require-dev": { @@ -603,32 +603,32 @@ ], "support": { "issues": "https://github.com/chinleung/laravel-locales/issues", - "source": "https://github.com/chinleung/laravel-locales/tree/v2.0.0" + "source": "https://github.com/chinleung/laravel-locales/tree/v2.0.1" }, - "time": "2022-02-14T19:09:21+00:00" + "time": "2023-02-20T16:25:16+00:00" }, { "name": "chinleung/laravel-multilingual-routes", - "version": "v3.0.1", + "version": "v4.0.0", "source": { "type": "git", "url": "https://github.com/chinleung/laravel-multilingual-routes.git", - "reference": "2ab5b0ac53026aa3e095c208f0d9a86c39fc366e" + "reference": "fd30408e9690191e8b043b4f391b166ca55ba827" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/chinleung/laravel-multilingual-routes/zipball/2ab5b0ac53026aa3e095c208f0d9a86c39fc366e", - "reference": "2ab5b0ac53026aa3e095c208f0d9a86c39fc366e", + "url": "https://api.github.com/repos/chinleung/laravel-multilingual-routes/zipball/fd30408e9690191e8b043b4f391b166ca55ba827", + "reference": "fd30408e9690191e8b043b4f391b166ca55ba827", "shasum": "" }, "require": { "chinleung/laravel-locales": "^2.0", - "illuminate/support": "^9.0", - "php": "^8.0|^8.1" + "illuminate/support": "^10.0", + "php": "^8.1" }, "require-dev": { - "orchestra/testbench": "^7.0", - "phpunit/phpunit": "^9.0" + "orchestra/testbench": "^8.0", + "phpunit/phpunit": "^9.5.10" }, "type": "library", "extra": { @@ -665,9 +665,9 @@ ], "support": { "issues": "https://github.com/chinleung/laravel-multilingual-routes/issues", - "source": "https://github.com/chinleung/laravel-multilingual-routes/tree/v3.0.1" + "source": "https://github.com/chinleung/laravel-multilingual-routes/tree/v4.0.0" }, - "time": "2022-05-18T14:50:56+00:00" + "time": "2023-02-20T16:30:34+00:00" }, { "name": "codeat3/blade-forkawesome", @@ -742,25 +742,25 @@ }, { "name": "codezero/laravel-unique-translation", - "version": "3.5.0", + "version": "4.1.2", "source": { "type": "git", "url": "https://github.com/codezero-be/laravel-unique-translation.git", - "reference": "9e381f44c18ec4603948707f900f232819f2fe96" + "reference": "eadaa83dbbcacb85522d36024b9f2aee5d617f1c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/codezero-be/laravel-unique-translation/zipball/9e381f44c18ec4603948707f900f232819f2fe96", - "reference": "9e381f44c18ec4603948707f900f232819f2fe96", + "url": "https://api.github.com/repos/codezero-be/laravel-unique-translation/zipball/eadaa83dbbcacb85522d36024b9f2aee5d617f1c", + "reference": "eadaa83dbbcacb85522d36024b9f2aee5d617f1c", "shasum": "" }, "require": { "php": "^7.2|^8.0" }, "require-dev": { - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", + "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0|^8.0", "phpunit/phpunit": "^8.0|^9.0", - "spatie/laravel-translatable": "^4.4|^5.0" + "spatie/laravel-translatable": "^4.4|^5.0|^6.0" }, "type": "library", "extra": { @@ -801,7 +801,7 @@ ], "support": { "issues": "https://github.com/codezero-be/laravel-unique-translation/issues", - "source": "https://github.com/codezero-be/laravel-unique-translation/tree/3.5.0" + "source": "https://github.com/codezero-be/laravel-unique-translation/tree/4.1.2" }, "funding": [ { @@ -813,25 +813,25 @@ "type": "ko_fi" } ], - "time": "2022-02-03T12:28:11+00:00" + "time": "2023-02-04T16:39:52+00:00" }, { "name": "commerceguys/addressing", - "version": "v1.4.1", + "version": "v2.0.1", "source": { "type": "git", "url": "https://github.com/commerceguys/addressing.git", - "reference": "8b1bcd45971733e8f4224e539cb92838f18c4d06" + "reference": "54c70e7fb6146acbcceb5c937dd6cf9d13563bbe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/commerceguys/addressing/zipball/8b1bcd45971733e8f4224e539cb92838f18c4d06", - "reference": "8b1bcd45971733e8f4224e539cb92838f18c4d06", + "url": "https://api.github.com/repos/commerceguys/addressing/zipball/54c70e7fb6146acbcceb5c937dd6cf9d13563bbe", + "reference": "54c70e7fb6146acbcceb5c937dd6cf9d13563bbe", "shasum": "" }, "require": { - "doctrine/collections": "^1.2", - "php": ">=7.3" + "doctrine/collections": "^1.6 || ^2.0", + "php": ">=8.0" }, "require-dev": { "ext-json": "*", @@ -846,7 +846,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" } }, "autoload": { @@ -875,35 +875,35 @@ ], "support": { "issues": "https://github.com/commerceguys/addressing/issues", - "source": "https://github.com/commerceguys/addressing/tree/v1.4.1" + "source": "https://github.com/commerceguys/addressing/tree/v2.0.1" }, - "time": "2022-08-09T11:42:51+00:00" + "time": "2023-07-02T19:55:38+00:00" }, { "name": "commerceguys/intl", - "version": "v1.1.1", + "version": "v2.0.4", "source": { "type": "git", "url": "https://github.com/commerceguys/intl.git", - "reference": "cab3b55dbf8c1753fe54457404082c777a8c154f" + "reference": "f78fe7f9bdb239d1f4cf441f61c6f950b03720bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/commerceguys/intl/zipball/cab3b55dbf8c1753fe54457404082c777a8c154f", - "reference": "cab3b55dbf8c1753fe54457404082c777a8c154f", + "url": "https://api.github.com/repos/commerceguys/intl/zipball/f78fe7f9bdb239d1f4cf441f61c6f950b03720bb", + "reference": "f78fe7f9bdb239d1f4cf441f61c6f950b03720bb", "shasum": "" }, "require": { - "php": ">=7.1.3" + "php": ">=8.0" }, "require-dev": { "mikey179/vfsstream": "1.*", - "phpunit/phpunit": "^7.5" + "phpunit/phpunit": "^10" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.x-dev" } }, "autoload": { @@ -918,87 +918,17 @@ "authors": [ { "name": "Bojan Zivanovic" - } - ], - "description": "Internationalization library powered by CLDR data.", - "support": { - "issues": "https://github.com/commerceguys/intl/issues", - "source": "https://github.com/commerceguys/intl/tree/v1.1.1" - }, - "time": "2021-10-30T18:07:14+00:00" - }, - { - "name": "composer/package-versions-deprecated", - "version": "1.11.99.5", - "source": { - "type": "git", - "url": "https://github.com/composer/package-versions-deprecated.git", - "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/b4f54f74ef3453349c24a845d22392cd31e65f1d", - "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.1.0 || ^2.0", - "php": "^7 || ^8" - }, - "replace": { - "ocramius/package-versions": "1.11.99" - }, - "require-dev": { - "composer/composer": "^1.9.3 || ^2.0@dev", - "ext-zip": "^1.13", - "phpunit/phpunit": "^6.5 || ^7" - }, - "type": "composer-plugin", - "extra": { - "class": "PackageVersions\\Installer", - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "PackageVersions\\": "src/PackageVersions" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" }, { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be" + "name": "Jonathan Sacksick" } ], - "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", + "description": "Internationalization library powered by CLDR data.", "support": { - "issues": "https://github.com/composer/package-versions-deprecated/issues", - "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.5" + "issues": "https://github.com/commerceguys/intl/issues", + "source": "https://github.com/commerceguys/intl/tree/v2.0.4" }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2022-01-17T14:14:24+00:00" + "time": "2023-04-17T12:17:15+00:00" }, { "name": "danharrin/date-format-converter", @@ -1106,21 +1036,24 @@ }, { "name": "dasprid/enum", - "version": "1.0.3", + "version": "1.0.5", "source": { "type": "git", "url": "https://github.com/DASPRiD/Enum.git", - "reference": "5abf82f213618696dda8e3bf6f64dd042d8542b2" + "reference": "6faf451159fb8ba4126b925ed2d78acfce0dc016" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/DASPRiD/Enum/zipball/5abf82f213618696dda8e3bf6f64dd042d8542b2", - "reference": "5abf82f213618696dda8e3bf6f64dd042d8542b2", + "url": "https://api.github.com/repos/DASPRiD/Enum/zipball/6faf451159fb8ba4126b925ed2d78acfce0dc016", + "reference": "6faf451159fb8ba4126b925ed2d78acfce0dc016", "shasum": "" }, + "require": { + "php": ">=7.1 <9.0" + }, "require-dev": { "phpunit/phpunit": "^7 | ^8 | ^9", - "squizlabs/php_codesniffer": "^3.4" + "squizlabs/php_codesniffer": "*" }, "type": "library", "autoload": { @@ -1147,9 +1080,9 @@ ], "support": { "issues": "https://github.com/DASPRiD/Enum/issues", - "source": "https://github.com/DASPRiD/Enum/tree/1.0.3" + "source": "https://github.com/DASPRiD/Enum/tree/1.0.5" }, - "time": "2020-10-02T16:03:48+00:00" + "time": "2023-08-25T16:18:39+00:00" }, { "name": "dflydev/dot-access-data", @@ -1321,32 +1254,34 @@ }, { "name": "doctrine/collections", - "version": "1.7.2", + "version": "2.1.4", "source": { "type": "git", "url": "https://github.com/doctrine/collections.git", - "reference": "3fe77330f5591108bbf1315da7377a7e704ed8a0" + "reference": "72328a11443a0de79967104ad36ba7b30bded134" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/collections/zipball/3fe77330f5591108bbf1315da7377a7e704ed8a0", - "reference": "3fe77330f5591108bbf1315da7377a7e704ed8a0", + "url": "https://api.github.com/repos/doctrine/collections/zipball/72328a11443a0de79967104ad36ba7b30bded134", + "reference": "72328a11443a0de79967104ad36ba7b30bded134", "shasum": "" }, "require": { - "doctrine/deprecations": "^0.5.3 || ^1", - "php": "^7.1.3 || ^8.0" + "doctrine/deprecations": "^1", + "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^9.0 || ^10.0", - "phpstan/phpstan": "^1.4.8", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.1.5", - "vimeo/psalm": "^4.22" + "doctrine/coding-standard": "^12", + "ext-json": "*", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^9.5", + "vimeo/psalm": "^5.11" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\Collections\\": "lib/Doctrine/Common/Collections" + "Doctrine\\Common\\Collections\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1385,9 +1320,23 @@ ], "support": { "issues": "https://github.com/doctrine/collections/issues", - "source": "https://github.com/doctrine/collections/tree/1.7.2" + "source": "https://github.com/doctrine/collections/tree/2.1.4" }, - "time": "2022-08-27T16:08:58+00:00" + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcollections", + "type": "tidelift" + } + ], + "time": "2023-10-03T09:22:33+00:00" }, { "name": "doctrine/dbal", @@ -1871,16 +1820,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": { @@ -1889,8 +1838,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" @@ -1926,7 +1875,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": [ { @@ -1934,7 +1883,7 @@ "type": "github" } ], - "time": "2023-01-14T14:17:03+00:00" + "time": "2023-10-06T06:47:41+00:00" }, { "name": "elhebert/laravel-sri", @@ -2325,30 +2274,29 @@ }, { "name": "fluid-project/hearth", - "version": "3.0.0", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/fluid-project/hearth.git", - "reference": "fb0d95f7e423e03022a25e7d907c3793f20092b3" + "reference": "c44b573aded834336d29abcacc704845ec19f69d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fluid-project/hearth/zipball/fb0d95f7e423e03022a25e7d907c3793f20092b3", - "reference": "fb0d95f7e423e03022a25e7d907c3793f20092b3", + "url": "https://api.github.com/repos/fluid-project/hearth/zipball/c44b573aded834336d29abcacc704845ec19f69d", + "reference": "c44b573aded834336d29abcacc704845ec19f69d", "shasum": "" }, "require": { "chinleung/laravel-locales": "^2.0", - "chinleung/laravel-multilingual-routes": "^3.0", - "codezero/laravel-unique-translation": "^3.5", - "commerceguys/addressing": "^1.2", - "commerceguys/intl": "^1.1", - "illuminate/contracts": "^9.20", + "chinleung/laravel-multilingual-routes": "^4.0", + "codezero/laravel-unique-translation": "^4.0", + "commerceguys/addressing": "^2.0", + "commerceguys/intl": "^2.0", "laravel/fortify": "^1.10", - "laravel/framework": "^9.21", + "laravel/framework": "^10.0", "livewire/livewire": "^2.10", - "php": "^8.0|^8.1", - "shiftonelabs/laravel-cascade-deletes": "^1.0", + "php": "^8.1", + "shiftonelabs/laravel-cascade-deletes": "^2.0", "spatie/laravel-flash": "^1.9", "spatie/laravel-google-fonts": "^1.1", "spatie/laravel-package-tools": "^1.11", @@ -2356,12 +2304,11 @@ "spatie/laravel-translatable": "^6.0" }, "require-dev": { - "brianium/paratest": "^6.2", - "laravel/pint": "^1.1.0", - "nunomaduro/collision": "^6.0", - "nunomaduro/larastan": "^2.0", - "orchestra/testbench": "^7.0", - "phpunit/phpunit": "^9.5", + "laravel/pint": "^1.1", + "nunomaduro/collision": "^7.9", + "nunomaduro/larastan": "^2.6", + "orchestra/testbench": "^8.0", + "pestphp/pest": "^2.21", "spatie/laravel-ray": "^1.26" }, "suggest": { @@ -2406,88 +2353,9 @@ ], "support": { "issues": "https://github.com/fluid-project/hearth/issues", - "source": "https://github.com/fluid-project/hearth/tree/v3.0.0" - }, - "time": "2022-08-30T16:50:00+00:00" - }, - { - "name": "fruitcake/laravel-cors", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "7c036ec08972d8d5d9db637e772af6887828faf5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/7c036ec08972d8d5d9db637e772af6887828faf5", - "reference": "7c036ec08972d8d5d9db637e772af6887828faf5", - "shasum": "" - }, - "require": { - "fruitcake/php-cors": "^1.2", - "illuminate/contracts": "^6|^7|^8|^9", - "illuminate/support": "^6|^7|^8|^9", - "php": "^7.4|^8.0" - }, - "require-dev": { - "laravel/framework": "^6|^7.24|^8", - "orchestra/testbench-dusk": "^4|^5|^6|^7", - "phpunit/phpunit": "^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - }, - "laravel": { - "providers": [ - "Fruitcake\\Cors\\CorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v3.0.0" + "source": "https://github.com/fluid-project/hearth/tree/v4.0.0" }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "time": "2022-02-23T14:53:22+00:00" + "time": "2023-10-06T13:44:00+00:00" }, { "name": "fruitcake/php-cors", @@ -2750,22 +2618,22 @@ }, { "name": "guzzlehttp/guzzle", - "version": "7.7.0", + "version": "7.8.0", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "fb7566caccf22d74d1ab270de3551f72a58399f5" + "reference": "1110f66a6530a40fe7aea0378fe608ee2b2248f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/fb7566caccf22d74d1ab270de3551f72a58399f5", - "reference": "fb7566caccf22d74d1ab270de3551f72a58399f5", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/1110f66a6530a40fe7aea0378fe608ee2b2248f9", + "reference": "1110f66a6530a40fe7aea0378fe608ee2b2248f9", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.5.3 || ^2.0", - "guzzlehttp/psr7": "^1.9.1 || ^2.4.5", + "guzzlehttp/promises": "^1.5.3 || ^2.0.1", + "guzzlehttp/psr7": "^1.9.1 || ^2.5.1", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" @@ -2856,7 +2724,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.7.0" + "source": "https://github.com/guzzle/guzzle/tree/7.8.0" }, "funding": [ { @@ -2872,7 +2740,7 @@ "type": "tidelift" } ], - "time": "2023-05-21T14:04:53+00:00" + "time": "2023-08-27T10:20:53+00:00" }, { "name": "guzzlehttp/promises", @@ -3205,29 +3073,26 @@ }, { "name": "laminas/laminas-diactoros", - "version": "2.25.2", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-diactoros.git", - "reference": "9f3f4bf5b99c9538b6f1dbcc20f6fec357914f9e" + "reference": "aca73646e658dce3f079f6b8648c651e193e331e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-diactoros/zipball/9f3f4bf5b99c9538b6f1dbcc20f6fec357914f9e", - "reference": "9f3f4bf5b99c9538b6f1dbcc20f6fec357914f9e", + "url": "https://api.github.com/repos/laminas/laminas-diactoros/zipball/aca73646e658dce3f079f6b8648c651e193e331e", + "reference": "aca73646e658dce3f079f6b8648c651e193e331e", "shasum": "" }, "require": { - "php": "~8.0.0 || ~8.1.0 || ~8.2.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.1" - }, - "conflict": { - "zendframework/zend-diactoros": "*" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", + "psr/http-factory": "^1.0.2", + "psr/http-message": "^1.1 || ^2.0" }, "provide": { - "psr/http-factory-implementation": "1.0", - "psr/http-message-implementation": "1.0" + "psr/http-factory-implementation": "^1.1 || ^2.0", + "psr/http-message-implementation": "^1.1 || ^2.0" }, "require-dev": { "ext-curl": "*", @@ -3235,11 +3100,11 @@ "ext-gd": "*", "ext-libxml": "*", "http-interop/http-factory-tests": "^0.9.0", - "laminas/laminas-coding-standard": "^2.5", - "php-http/psr7-integration-tests": "^1.2", + "laminas/laminas-coding-standard": "~2.5.0", + "php-http/psr7-integration-tests": "^1.3", "phpunit/phpunit": "^9.5.28", "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.6" + "vimeo/psalm": "^5.9" }, "type": "library", "extra": { @@ -3254,18 +3119,9 @@ "src/functions/marshal_headers_from_sapi.php", "src/functions/marshal_method_from_sapi.php", "src/functions/marshal_protocol_version_from_sapi.php", - "src/functions/marshal_uri_from_sapi.php", "src/functions/normalize_server.php", "src/functions/normalize_uploaded_files.php", - "src/functions/parse_cookie_header.php", - "src/functions/create_uploaded_file.legacy.php", - "src/functions/marshal_headers_from_sapi.legacy.php", - "src/functions/marshal_method_from_sapi.legacy.php", - "src/functions/marshal_protocol_version_from_sapi.legacy.php", - "src/functions/marshal_uri_from_sapi.legacy.php", - "src/functions/normalize_server.legacy.php", - "src/functions/normalize_uploaded_files.legacy.php", - "src/functions/parse_cookie_header.legacy.php" + "src/functions/parse_cookie_header.php" ], "psr-4": { "Laminas\\Diactoros\\": "src/" @@ -3298,32 +3154,33 @@ "type": "community_bridge" } ], - "time": "2023-04-17T15:44:17+00:00" + "time": "2023-09-03T13:11:37+00:00" }, { "name": "laravel/fortify", - "version": "v1.13.3", + "version": "v1.18.0", "source": { "type": "git", "url": "https://github.com/laravel/fortify.git", - "reference": "cde06120605b8bb038142b03425c67fc97d047d1" + "reference": "5af43d5cc10b70da20ddebdbe62e0dadd69c18e3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/fortify/zipball/cde06120605b8bb038142b03425c67fc97d047d1", - "reference": "cde06120605b8bb038142b03425c67fc97d047d1", + "url": "https://api.github.com/repos/laravel/fortify/zipball/5af43d5cc10b70da20ddebdbe62e0dadd69c18e3", + "reference": "5af43d5cc10b70da20ddebdbe62e0dadd69c18e3", "shasum": "" }, "require": { "bacon/bacon-qr-code": "^2.0", "ext-json": "*", - "illuminate/support": "^8.82|^9.0", + "illuminate/support": "^8.82|^9.0|^10.0", "php": "^7.3|^8.0", "pragmarx/google2fa": "^7.0|^8.0" }, "require-dev": { "mockery/mockery": "^1.0", - "orchestra/testbench": "^6.0|^7.0", + "orchestra/testbench": "^6.0|^7.0|^8.0", + "phpstan/phpstan": "^1.10", "phpunit/phpunit": "^9.3" }, "type": "library", @@ -3361,24 +3218,25 @@ "issues": "https://github.com/laravel/fortify/issues", "source": "https://github.com/laravel/fortify" }, - "time": "2022-08-15T15:08:17+00:00" + "time": "2023-09-12T11:19:24+00:00" }, { "name": "laravel/framework", - "version": "v9.52.15", + "version": "v10.26.2", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "e3350e87a52346af9cc655a3012d2175d2d05ad7" + "reference": "6e5440f7c518f26b4495e5d7e4796ec239e26df9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/e3350e87a52346af9cc655a3012d2175d2d05ad7", - "reference": "e3350e87a52346af9cc655a3012d2175d2d05ad7", + "url": "https://api.github.com/repos/laravel/framework/zipball/6e5440f7c518f26b4495e5d7e4796ec239e26df9", + "reference": "6e5440f7c518f26b4495e5d7e4796ec239e26df9", "shasum": "" }, "require": { "brick/math": "^0.9.3|^0.10.2|^0.11", + "composer-runtime-api": "^2.2", "doctrine/inflector": "^2.0.5", "dragonmantank/cron-expression": "^3.3.2", "egulias/email-validator": "^3.2.1|^4.0", @@ -3391,28 +3249,29 @@ "ext-tokenizer": "*", "fruitcake/php-cors": "^1.2", "guzzlehttp/uri-template": "^1.0", - "laravel/serializable-closure": "^1.2.2", + "laravel/prompts": "^0.1.9", + "laravel/serializable-closure": "^1.3", "league/commonmark": "^2.2.1", "league/flysystem": "^3.8.0", - "monolog/monolog": "^2.0", - "nesbot/carbon": "^2.62.1", + "monolog/monolog": "^3.0", + "nesbot/carbon": "^2.67", "nunomaduro/termwind": "^1.13", - "php": "^8.0.2", + "php": "^8.1", "psr/container": "^1.1.1|^2.0.1", "psr/log": "^1.0|^2.0|^3.0", "psr/simple-cache": "^1.0|^2.0|^3.0", "ramsey/uuid": "^4.7", - "symfony/console": "^6.0.9", - "symfony/error-handler": "^6.0", - "symfony/finder": "^6.0", - "symfony/http-foundation": "^6.0", - "symfony/http-kernel": "^6.0", - "symfony/mailer": "^6.0", - "symfony/mime": "^6.0", - "symfony/process": "^6.0", - "symfony/routing": "^6.0", - "symfony/uid": "^6.0", - "symfony/var-dumper": "^6.0", + "symfony/console": "^6.2", + "symfony/error-handler": "^6.2", + "symfony/finder": "^6.2", + "symfony/http-foundation": "^6.2", + "symfony/http-kernel": "^6.2", + "symfony/mailer": "^6.2", + "symfony/mime": "^6.2", + "symfony/process": "^6.2", + "symfony/routing": "^6.2", + "symfony/uid": "^6.2", + "symfony/var-dumper": "^6.2", "tijsverkoyen/css-to-inline-styles": "^2.2.5", "vlucas/phpdotenv": "^5.4.1", "voku/portable-ascii": "^2.0" @@ -3448,6 +3307,7 @@ "illuminate/notifications": "self.version", "illuminate/pagination": "self.version", "illuminate/pipeline": "self.version", + "illuminate/process": "self.version", "illuminate/queue": "self.version", "illuminate/redis": "self.version", "illuminate/routing": "self.version", @@ -3461,7 +3321,7 @@ "require-dev": { "ably/ably-php": "^1.0", "aws/aws-sdk-php": "^3.235.5", - "doctrine/dbal": "^2.13.3|^3.1.4", + "doctrine/dbal": "^3.5.1", "ext-gmp": "*", "fakerphp/faker": "^1.21", "guzzlehttp/guzzle": "^7.5", @@ -3471,20 +3331,19 @@ "league/flysystem-read-only": "^3.3", "league/flysystem-sftp-v3": "^3.0", "mockery/mockery": "^1.5.1", - "orchestra/testbench-core": "^7.24", + "orchestra/testbench-core": "^8.12", "pda/pheanstalk": "^4.0", - "phpstan/phpdoc-parser": "^1.15", "phpstan/phpstan": "^1.4.7", - "phpunit/phpunit": "^9.5.8", - "predis/predis": "^1.1.9|^2.0.2", - "symfony/cache": "^6.0", - "symfony/http-client": "^6.0" + "phpunit/phpunit": "^10.0.7", + "predis/predis": "^2.0.2", + "symfony/cache": "^6.2", + "symfony/http-client": "^6.2.4" }, "suggest": { "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).", "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage, and SES mail driver (^3.235.5).", "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", + "doctrine/dbal": "Required to rename columns and drop SQLite columns (^3.5.1).", "ext-apcu": "Required to use the APC cache driver.", "ext-fileinfo": "Required to use the Filesystem class.", "ext-ftp": "Required to use the Flysystem FTP driver.", @@ -3506,21 +3365,21 @@ "mockery/mockery": "Required to use mocking (^1.5.1).", "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).", "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", - "phpunit/phpunit": "Required to use assertions and run tests (^9.5.8).", - "predis/predis": "Required to use the predis connector (^1.1.9|^2.0.2).", + "phpunit/phpunit": "Required to use assertions and run tests (^9.5.8|^10.0.7).", + "predis/predis": "Required to use the predis connector (^2.0.2).", "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^6.0|^7.0).", - "symfony/cache": "Required to PSR-6 cache bridge (^6.0).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).", + "symfony/cache": "Required to PSR-6 cache bridge (^6.2).", + "symfony/filesystem": "Required to enable support for relative symbolic links (^6.2).", + "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.2).", + "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.2).", + "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.2).", "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "9.x-dev" + "dev-master": "10.x-dev" } }, "autoload": { @@ -3559,7 +3418,64 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2023-08-08T14:28:40+00:00" + "time": "2023-10-03T14:24:20+00:00" + }, + { + "name": "laravel/prompts", + "version": "v0.1.11", + "source": { + "type": "git", + "url": "https://github.com/laravel/prompts.git", + "reference": "cce65a90e64712909ea1adc033e1d88de8455ffd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/prompts/zipball/cce65a90e64712909ea1adc033e1d88de8455ffd", + "reference": "cce65a90e64712909ea1adc033e1d88de8455ffd", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "illuminate/collections": "^10.0|^11.0", + "php": "^8.1", + "symfony/console": "^6.2" + }, + "conflict": { + "illuminate/console": ">=10.17.0 <10.25.0", + "laravel/framework": ">=10.17.0 <10.25.0" + }, + "require-dev": { + "mockery/mockery": "^1.5", + "pestphp/pest": "^2.3", + "phpstan/phpstan": "^1.10", + "phpstan/phpstan-mockery": "^1.1" + }, + "suggest": { + "ext-pcntl": "Required for the spinner to be animated." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "0.1.x-dev" + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Laravel\\Prompts\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "support": { + "issues": "https://github.com/laravel/prompts/issues", + "source": "https://github.com/laravel/prompts/tree/v0.1.11" + }, + "time": "2023-10-03T01:07:35+00:00" }, { "name": "laravel/serializable-closure", @@ -3691,29 +3607,32 @@ }, { "name": "laravel/vonage-notification-channel", - "version": "v3.0.0", + "version": "3.x-dev", "source": { "type": "git", "url": "https://github.com/laravel/vonage-notification-channel.git", - "reference": "c1245b19bfa3c6f7a45ef103c6bbc3437b76040a" + "reference": "b0c2e16d3b4b392c9fea98c9b4545e45d25c7a26" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/vonage-notification-channel/zipball/c1245b19bfa3c6f7a45ef103c6bbc3437b76040a", - "reference": "c1245b19bfa3c6f7a45ef103c6bbc3437b76040a", + "url": "https://api.github.com/repos/laravel/vonage-notification-channel/zipball/b0c2e16d3b4b392c9fea98c9b4545e45d25c7a26", + "reference": "b0c2e16d3b4b392c9fea98c9b4545e45d25c7a26", "shasum": "" }, "require": { - "illuminate/notifications": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", + "illuminate/notifications": "^8.0|^9.0|^10.0", + "illuminate/support": "^8.0|^9.0|^10.0", "php": "^8.0", - "vonage/client-core": "^3.0" + "vonage/client-core": "^4.0.4" }, "require-dev": { "guzzlehttp/guzzle": "^7.2", "mockery/mockery": "^1.0", - "orchestra/testbench": "^6.0|^7.0" + "orchestra/testbench": "^6.0|^7.0|^8.0", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.0" }, + "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -3752,37 +3671,40 @@ ], "support": { "issues": "https://github.com/laravel/vonage-notification-channel/issues", - "source": "https://github.com/laravel/vonage-notification-channel/tree/v3.0.0" + "source": "https://github.com/laravel/vonage-notification-channel/tree/3.x" }, - "time": "2022-02-08T14:43:08+00:00" + "time": "2023-09-21T15:15:51+00:00" }, { "name": "lcobucci/clock", - "version": "2.2.0", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/lcobucci/clock.git", - "reference": "fb533e093fd61321bfcbac08b131ce805fe183d3" + "reference": "039ef98c6b57b101d10bd11d8fdfda12cbd996dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/lcobucci/clock/zipball/fb533e093fd61321bfcbac08b131ce805fe183d3", - "reference": "fb533e093fd61321bfcbac08b131ce805fe183d3", + "url": "https://api.github.com/repos/lcobucci/clock/zipball/039ef98c6b57b101d10bd11d8fdfda12cbd996dc", + "reference": "039ef98c6b57b101d10bd11d8fdfda12cbd996dc", "shasum": "" }, "require": { - "php": "^8.0", - "stella-maris/clock": "^0.1.4" + "php": "~8.1.0 || ~8.2.0", + "psr/clock": "^1.0" + }, + "provide": { + "psr/clock-implementation": "1.0" }, "require-dev": { "infection/infection": "^0.26", - "lcobucci/coding-standard": "^8.0", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-deprecation-rules": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^9.5" + "lcobucci/coding-standard": "^9.0", + "phpstan/extension-installer": "^1.2", + "phpstan/phpstan": "^1.9.4", + "phpstan/phpstan-deprecation-rules": "^1.1.1", + "phpstan/phpstan-phpunit": "^1.3.2", + "phpstan/phpstan-strict-rules": "^1.4.4", + "phpunit/phpunit": "^9.5.27" }, "type": "library", "autoload": { @@ -3803,7 +3725,7 @@ "description": "Yet another clock abstraction", "support": { "issues": "https://github.com/lcobucci/clock/issues", - "source": "https://github.com/lcobucci/clock/tree/2.2.0" + "source": "https://github.com/lcobucci/clock/tree/3.0.0" }, "funding": [ { @@ -3815,20 +3737,20 @@ "type": "patreon" } ], - "time": "2022-04-19T19:34:17+00:00" + "time": "2022-12-19T15:00:24+00:00" }, { "name": "lcobucci/jwt", - "version": "4.2.1", + "version": "4.3.0", "source": { "type": "git", "url": "https://github.com/lcobucci/jwt.git", - "reference": "72ac6d807ee51a70ad376ee03a2387e8646e10f3" + "reference": "4d7de2fe0d51a96418c0d04004986e410e87f6b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/lcobucci/jwt/zipball/72ac6d807ee51a70ad376ee03a2387e8646e10f3", - "reference": "72ac6d807ee51a70ad376ee03a2387e8646e10f3", + "url": "https://api.github.com/repos/lcobucci/jwt/zipball/4d7de2fe0d51a96418c0d04004986e410e87f6b4", + "reference": "4d7de2fe0d51a96418c0d04004986e410e87f6b4", "shasum": "" }, "require": { @@ -3837,7 +3759,7 @@ "ext-mbstring": "*", "ext-openssl": "*", "ext-sodium": "*", - "lcobucci/clock": "^2.0", + "lcobucci/clock": "^2.0 || ^3.0", "php": "^7.4 || ^8.0" }, "require-dev": { @@ -3877,7 +3799,7 @@ ], "support": { "issues": "https://github.com/lcobucci/jwt/issues", - "source": "https://github.com/lcobucci/jwt/tree/4.2.1" + "source": "https://github.com/lcobucci/jwt/tree/4.3.0" }, "funding": [ { @@ -3889,7 +3811,7 @@ "type": "patreon" } ], - "time": "2022-08-19T23:14:07+00:00" + "time": "2023-01-02T13:28:00+00:00" }, { "name": "league/commonmark", @@ -4081,16 +4003,16 @@ }, { "name": "league/flysystem", - "version": "3.16.0", + "version": "3.17.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "4fdf372ca6b63c6e281b1c01a624349ccb757729" + "reference": "bd4c9b26849d82364119c68429541f1631fba94b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/4fdf372ca6b63c6e281b1c01a624349ccb757729", - "reference": "4fdf372ca6b63c6e281b1c01a624349ccb757729", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/bd4c9b26849d82364119c68429541f1631fba94b", + "reference": "bd4c9b26849d82364119c68429541f1631fba94b", "shasum": "" }, "require": { @@ -4108,8 +4030,8 @@ "symfony/http-client": "<5.2" }, "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.1", + "async-aws/s3": "^1.5 || ^2.0", + "async-aws/simple-s3": "^1.1 || ^2.0", "aws/aws-sdk-php": "^3.220.0", "composer/semver": "^3.0", "ext-fileinfo": "*", @@ -4155,7 +4077,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.17.0" }, "funding": [ { @@ -4167,7 +4089,7 @@ "type": "github" } ], - "time": "2023-09-07T19:22:17+00:00" + "time": "2023-10-05T20:15:05+00:00" }, { "name": "league/flysystem-aws-s3-v3", @@ -4496,25 +4418,25 @@ }, { "name": "makeabledk/laravel-eloquent-status", - "version": "v2.0.0", + "version": "v3.0.0", "source": { "type": "git", "url": "https://github.com/makeabledk/laravel-eloquent-status.git", - "reference": "4f13b70ea70e9ebbe7a85d86f397a6fed99b729f" + "reference": "9ce8d69190171eac2381fa99ccd8dac4571bd3ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/makeabledk/laravel-eloquent-status/zipball/4f13b70ea70e9ebbe7a85d86f397a6fed99b729f", - "reference": "4f13b70ea70e9ebbe7a85d86f397a6fed99b729f", + "url": "https://api.github.com/repos/makeabledk/laravel-eloquent-status/zipball/9ce8d69190171eac2381fa99ccd8dac4571bd3ac", + "reference": "9ce8d69190171eac2381fa99ccd8dac4571bd3ac", "shasum": "" }, "require": { - "illuminate/support": "^8.80|^9.0", - "makeabledk/laravel-querykit": "^3.0", - "php": "^8.0" + "illuminate/support": "^9.0|^10.0", + "makeabledk/laravel-querykit": "^3.0|^4.0", + "php": "^8.1" }, "require-dev": { - "laravel/laravel": "^8.0|^9.0", + "laravel/laravel": "^9.0|^10.0", "phpunit/phpunit": "^9.0" }, "type": "library", @@ -4529,31 +4451,31 @@ ], "support": { "issues": "https://github.com/makeabledk/laravel-eloquent-status/issues", - "source": "https://github.com/makeabledk/laravel-eloquent-status/tree/v2.0.0" + "source": "https://github.com/makeabledk/laravel-eloquent-status/tree/v3.0.0" }, - "time": "2022-01-27T08:29:52+00:00" + "time": "2023-03-28T14:59:00+00:00" }, { "name": "makeabledk/laravel-querykit", - "version": "v3.0.0", + "version": "v4.0.0", "source": { "type": "git", "url": "https://github.com/makeabledk/laravel-query-kit.git", - "reference": "35e377d85017e6f37e694b4430ee0aec086515df" + "reference": "8f38a074dab336a9e61a5db761e1516cd24102aa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/makeabledk/laravel-query-kit/zipball/35e377d85017e6f37e694b4430ee0aec086515df", - "reference": "35e377d85017e6f37e694b4430ee0aec086515df", + "url": "https://api.github.com/repos/makeabledk/laravel-query-kit/zipball/8f38a074dab336a9e61a5db761e1516cd24102aa", + "reference": "8f38a074dab336a9e61a5db761e1516cd24102aa", "shasum": "" }, "require": { - "illuminate/support": "^8.80|^9.0", - "php": "^8.0" + "illuminate/support": "^9.0|^10.0", + "php": "^8.1" }, "require-dev": { - "orchestra/testbench": "^6.0", - "phpunit/phpunit": "^9.0" + "orchestra/testbench": "^7.0|^8.0", + "phpunit/phpunit": "^9.0|^10.0" }, "type": "library", "extra": { @@ -4574,9 +4496,9 @@ ], "support": { "issues": "https://github.com/makeabledk/laravel-query-kit/issues", - "source": "https://github.com/makeabledk/laravel-query-kit/tree/v3.0.1" + "source": "https://github.com/makeabledk/laravel-query-kit/tree/v4.0.0" }, - "time": "2022-01-26T12:42:00+00:00" + "time": "2023-03-28T14:49:00+00:00" }, { "name": "masterminds/html5", @@ -4647,42 +4569,41 @@ }, { "name": "monolog/monolog", - "version": "2.9.1", + "version": "3.4.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "f259e2b15fb95494c83f52d3caad003bbf5ffaa1" + "reference": "e2392369686d420ca32df3803de28b5d6f76867d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f259e2b15fb95494c83f52d3caad003bbf5ffaa1", - "reference": "f259e2b15fb95494c83f52d3caad003bbf5ffaa1", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/e2392369686d420ca32df3803de28b5d6f76867d", + "reference": "e2392369686d420ca32df3803de28b5d6f76867d", "shasum": "" }, "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" + "php": ">=8.1", + "psr/log": "^2.0 || ^3.0" }, "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" + "psr/log-implementation": "3.0.0" }, "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", + "aws/aws-sdk-php": "^3.0", "doctrine/couchdb": "~1.0@dev", "elasticsearch/elasticsearch": "^7 || ^8", "ext-json": "*", - "graylog2/gelf-php": "^1.4.2 || ^2@dev", - "guzzlehttp/guzzle": "^7.4", + "graylog2/gelf-php": "^1.4.2 || ^2.0", + "guzzlehttp/guzzle": "^7.4.5", "guzzlehttp/psr7": "^2.2", "mongodb/mongodb": "^1.8", "php-amqplib/php-amqplib": "~2.4 || ^3", - "phpspec/prophecy": "^1.15", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5.14", - "predis/predis": "^1.1 || ^2.0", - "rollbar/rollbar": "^1.3 || ^2 || ^3", + "phpstan/phpstan": "^1.9", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-strict-rules": "^1.4", + "phpunit/phpunit": "^10.1", + "predis/predis": "^1.1 || ^2", "ruflin/elastica": "^7", - "swiftmailer/swiftmailer": "^5.3|^6.0", "symfony/mailer": "^5.4 || ^6", "symfony/mime": "^5.4 || ^6" }, @@ -4705,7 +4626,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.x-dev" + "dev-main": "3.x-dev" } }, "autoload": { @@ -4733,7 +4654,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/2.9.1" + "source": "https://github.com/Seldaek/monolog/tree/3.4.0" }, "funding": [ { @@ -4745,7 +4666,7 @@ "type": "tidelift" } ], - "time": "2023-02-06T13:44:46+00:00" + "time": "2023-06-21T08:46:11+00:00" }, { "name": "mtdowling/jmespath.php", @@ -4916,16 +4837,16 @@ }, { "name": "nette/schema", - "version": "v1.2.4", + "version": "v1.2.5", "source": { "type": "git", "url": "https://github.com/nette/schema.git", - "reference": "c9ff517a53903b3d4e29ec547fb20feecb05b8ab" + "reference": "0462f0166e823aad657c9224d0f849ecac1ba10a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/c9ff517a53903b3d4e29ec547fb20feecb05b8ab", - "reference": "c9ff517a53903b3d4e29ec547fb20feecb05b8ab", + "url": "https://api.github.com/repos/nette/schema/zipball/0462f0166e823aad657c9224d0f849ecac1ba10a", + "reference": "0462f0166e823aad657c9224d0f849ecac1ba10a", "shasum": "" }, "require": { @@ -4972,9 +4893,9 @@ ], "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.2.5" }, - "time": "2023-08-05T18:56:25+00:00" + "time": "2023-10-05T20:37:59+00:00" }, { "name": "nette/utils", @@ -5206,23 +5127,23 @@ }, { "name": "paragonie/ciphersweet", - "version": "v4.0.1", + "version": "v4.5.0", "source": { "type": "git", "url": "https://github.com/paragonie/ciphersweet.git", - "reference": "eec596e7e4ebdfc039b34cf36581c65cb5bc0c6e" + "reference": "575dda1f56eba8565cc03017158e7d935abc87d5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/ciphersweet/zipball/eec596e7e4ebdfc039b34cf36581c65cb5bc0c6e", - "reference": "eec596e7e4ebdfc039b34cf36581c65cb5bc0c6e", + "url": "https://api.github.com/repos/paragonie/ciphersweet/zipball/575dda1f56eba8565cc03017158e7d935abc87d5", + "reference": "575dda1f56eba8565cc03017158e7d935abc87d5", "shasum": "" }, "require": { "ext-json": "*", "ext-openssl": "*", "paragonie/constant_time_encoding": "^2", - "paragonie/sodium_compat": ">= 1.17 <2", + "paragonie/sodium_compat": ">= 1.20 <2", "php": "^8.1" }, "require-dev": { @@ -5245,22 +5166,25 @@ "email": "security@paragonie.com" } ], - "description": "Searchable field-level encryption library for CRM software", + "description": "Searchable field-level encryption library for relational databases", "keywords": [ "FIPS 140-2", + "SQL encryption", "crm", "cryptography", + "database encryption", "encrypt", "encryption", "field-level encryption", "libsodium", + "queryable encryption", "searchable encryption" ], "support": { "issues": "https://github.com/paragonie/ciphersweet/issues", - "source": "https://github.com/paragonie/ciphersweet/tree/v4.0.1" + "source": "https://github.com/paragonie/ciphersweet/tree/v4.5.0" }, - "time": "2022-06-02T15:23:04+00:00" + "time": "2023-07-28T19:36:31+00:00" }, { "name": "paragonie/constant_time_encoding", @@ -5381,16 +5305,16 @@ }, { "name": "paragonie/sodium_compat", - "version": "v1.17.1", + "version": "v1.20.0", "source": { "type": "git", "url": "https://github.com/paragonie/sodium_compat.git", - "reference": "ac994053faac18d386328c91c7900f930acadf1e" + "reference": "e592a3e06d1fa0d43988c7c7d9948ca836f644b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/ac994053faac18d386328c91c7900f930acadf1e", - "reference": "ac994053faac18d386328c91c7900f930acadf1e", + "url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/e592a3e06d1fa0d43988c7c7d9948ca836f644b6", + "reference": "e592a3e06d1fa0d43988c7c7d9948ca836f644b6", "shasum": "" }, "require": { @@ -5461,9 +5385,9 @@ ], "support": { "issues": "https://github.com/paragonie/sodium_compat/issues", - "source": "https://github.com/paragonie/sodium_compat/tree/v1.17.1" + "source": "https://github.com/paragonie/sodium_compat/tree/v1.20.0" }, - "time": "2022-03-23T19:32:04+00:00" + "time": "2023-04-30T00:54:53+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -6024,16 +5948,16 @@ }, { "name": "psr/http-client", - "version": "1.0.2", + "version": "1.0.3", "source": { "type": "git", "url": "https://github.com/php-fig/http-client.git", - "reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31" + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/0955afe48220520692d2d09f7ab7e0f93ffd6a31", - "reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", "shasum": "" }, "require": { @@ -6070,9 +5994,9 @@ "psr-18" ], "support": { - "source": "https://github.com/php-fig/http-client/tree/1.0.2" + "source": "https://github.com/php-fig/http-client" }, - "time": "2023-04-10T20:12:12+00:00" + "time": "2023-09-23T14:17:50+00:00" }, { "name": "psr/http-factory", @@ -6405,31 +6329,32 @@ }, { "name": "ralphjsmit/livewire-urls", - "version": "1.1.3", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/ralphjsmit/livewire-urls.git", - "reference": "a0c780c8c9f94d39e0dd123b6fc46c5d2f8032dc" + "reference": "53cb46b4e3350a2f4d6f3d05f2bffe8d04d701c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ralphjsmit/livewire-urls/zipball/a0c780c8c9f94d39e0dd123b6fc46c5d2f8032dc", - "reference": "a0c780c8c9f94d39e0dd123b6fc46c5d2f8032dc", + "url": "https://api.github.com/repos/ralphjsmit/livewire-urls/zipball/53cb46b4e3350a2f4d6f3d05f2bffe8d04d701c9", + "reference": "53cb46b4e3350a2f4d6f3d05f2bffe8d04d701c9", "shasum": "" }, "require": { - "illuminate/contracts": "^8.83|^9.0", - "livewire/livewire": "^2.10", + "illuminate/contracts": "^8.83|^9.0|^10.0", + "livewire/livewire": "^2.10|^3.0@beta", "php": "^8.0", "spatie/laravel-package-tools": "^1.9.2" }, "require-dev": { "friendsofphp/php-cs-fixer": "^3.8", - "nunomaduro/collision": "^5.0|^6.0", - "orchestra/testbench": "^6.0|^7.0", + "nesbot/carbon": "^2.66", + "nunomaduro/collision": "^5.0|^6.0|^7.0", + "orchestra/testbench": "^6.0|^7.0|^8.0", "pestphp/pest": "^1.21", "pestphp/pest-plugin-laravel": "^1.1", - "phpunit/phpunit": "^9.5", + "phpunit/phpunit": "^9.5|^10.0", "spatie/laravel-ray": "^1.26" }, "type": "library", @@ -6468,9 +6393,9 @@ ], "support": { "issues": "https://github.com/ralphjsmit/livewire-urls/issues", - "source": "https://github.com/ralphjsmit/livewire-urls/tree/1.1.3" + "source": "https://github.com/ralphjsmit/livewire-urls/tree/1.3.0" }, - "time": "2022-11-19T15:27:09+00:00" + "time": "2023-08-19T13:25:27+00:00" }, { "name": "ramsey/collection", @@ -6733,28 +6658,28 @@ }, { "name": "shiftonelabs/laravel-cascade-deletes", - "version": "1.0.1", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/shiftonelabs/laravel-cascade-deletes.git", - "reference": "af256e3796f997b5f66d34c7ec25c2a1c560e36f" + "reference": "c4a42f92b9359cbfb2c79f44922453eed892186d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/shiftonelabs/laravel-cascade-deletes/zipball/af256e3796f997b5f66d34c7ec25c2a1c560e36f", - "reference": "af256e3796f997b5f66d34c7ec25c2a1c560e36f", + "url": "https://api.github.com/repos/shiftonelabs/laravel-cascade-deletes/zipball/c4a42f92b9359cbfb2c79f44922453eed892186d", + "reference": "c4a42f92b9359cbfb2c79f44922453eed892186d", "shasum": "" }, "require": { - "illuminate/database": ">=4.1", - "illuminate/events": ">=4.1", - "php": ">=5.5.0" + "illuminate/database": ">=9.0", + "illuminate/events": ">=9.0", + "php": ">=8.0.2" }, "require-dev": { - "mockery/mockery": "~0.9", - "phpunit/phpunit": "~4.0", + "mockery/mockery": "~1.3", + "phpunit/phpunit": "~9.3 || ~10.0", "shiftonelabs/codesniffer-standard": "0.*", - "squizlabs/php_codesniffer": "2.*" + "squizlabs/php_codesniffer": "3.*" }, "type": "library", "autoload": { @@ -6786,7 +6711,7 @@ "issues": "https://github.com/shiftonelabs/laravel-cascade-deletes/issues", "source": "https://github.com/shiftonelabs/laravel-cascade-deletes" }, - "time": "2020-04-02T07:31:25+00:00" + "time": "2023-03-27T16:01:17+00:00" }, { "name": "spatie/backtrace", @@ -6915,16 +6840,16 @@ }, { "name": "spatie/flare-client-php", - "version": "1.4.1", + "version": "1.4.2", "source": { "type": "git", "url": "https://github.com/spatie/flare-client-php.git", - "reference": "943894c6a6b00501365ac0b91ae0dce56f2226fa" + "reference": "5f2c6a7a0d2c1d90c12559dc7828fd942911a544" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/943894c6a6b00501365ac0b91ae0dce56f2226fa", - "reference": "943894c6a6b00501365ac0b91ae0dce56f2226fa", + "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/5f2c6a7a0d2c1d90c12559dc7828fd942911a544", + "reference": "5f2c6a7a0d2c1d90c12559dc7828fd942911a544", "shasum": "" }, "require": { @@ -6973,7 +6898,7 @@ ], "support": { "issues": "https://github.com/spatie/flare-client-php/issues", - "source": "https://github.com/spatie/flare-client-php/tree/1.4.1" + "source": "https://github.com/spatie/flare-client-php/tree/1.4.2" }, "funding": [ { @@ -6981,20 +6906,20 @@ "type": "github" } ], - "time": "2023-07-06T09:29:49+00:00" + "time": "2023-07-28T08:07:24+00:00" }, { "name": "spatie/ignition", - "version": "1.9.0", + "version": "1.11.2", "source": { "type": "git", "url": "https://github.com/spatie/ignition.git", - "reference": "de24ff1e01814d5043bd6eb4ab36a5a852a04973" + "reference": "48b23411ca4bfbc75c75dfc638b6b36159c375aa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/de24ff1e01814d5043bd6eb4ab36a5a852a04973", - "reference": "de24ff1e01814d5043bd6eb4ab36a5a852a04973", + "url": "https://api.github.com/repos/spatie/ignition/zipball/48b23411ca4bfbc75c75dfc638b6b36159c375aa", + "reference": "48b23411ca4bfbc75c75dfc638b6b36159c375aa", "shasum": "" }, "require": { @@ -7064,7 +6989,7 @@ "type": "github" } ], - "time": "2023-06-28T13:24:59+00:00" + "time": "2023-09-19T15:29:52+00:00" }, { "name": "spatie/invade", @@ -7134,28 +7059,28 @@ }, { "name": "spatie/laravel-backup", - "version": "8.1.5", + "version": "8.3.4", "source": { "type": "git", "url": "https://github.com/spatie/laravel-backup.git", - "reference": "cf367fbe50ff3b1ae9a79638cc5ef66f3cc9c7fa" + "reference": "c79ec56ddc96da769e4438bd45de6227b1be368f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-backup/zipball/cf367fbe50ff3b1ae9a79638cc5ef66f3cc9c7fa", - "reference": "cf367fbe50ff3b1ae9a79638cc5ef66f3cc9c7fa", + "url": "https://api.github.com/repos/spatie/laravel-backup/zipball/c79ec56ddc96da769e4438bd45de6227b1be368f", + "reference": "c79ec56ddc96da769e4438bd45de6227b1be368f", "shasum": "" }, "require": { "ext-zip": "^1.14.0", - "illuminate/console": "^9.0", - "illuminate/contracts": "^9.0", - "illuminate/events": "^9.0", - "illuminate/filesystem": "^9.0", - "illuminate/notifications": "^9.0", - "illuminate/support": "^9.0", + "illuminate/console": "^10.10.0", + "illuminate/contracts": "^10.10.0", + "illuminate/events": "^10.10.0", + "illuminate/filesystem": "^10.10.0", + "illuminate/notifications": "^10.10.0", + "illuminate/support": "^10.10.0", "league/flysystem": "^3.0", - "php": "^8.0", + "php": "^8.1", "spatie/db-dumper": "^3.0", "spatie/laravel-package-tools": "^1.6.2", "spatie/laravel-signal-aware-command": "^1.2", @@ -7166,11 +7091,11 @@ "require-dev": { "composer-runtime-api": "^2.0", "ext-pcntl": "*", - "laravel/slack-notification-channel": "^2.4", + "laravel/slack-notification-channel": "^2.5", "league/flysystem-aws-s3-v3": "^2.0|^3.0", "mockery/mockery": "^1.4", "nunomaduro/larastan": "^2.1", - "orchestra/testbench": "^7.0", + "orchestra/testbench": "^8.0", "pestphp/pest": "^1.20", "phpstan/extension-installer": "^1.1", "phpstan/phpstan-deprecation-rules": "^1.0", @@ -7217,7 +7142,7 @@ ], "support": { "issues": "https://github.com/spatie/laravel-backup/issues", - "source": "https://github.com/spatie/laravel-backup/tree/8.1.5" + "source": "https://github.com/spatie/laravel-backup/tree/8.3.4" }, "funding": [ { @@ -7229,24 +7154,24 @@ "type": "other" } ], - "time": "2022-10-19T13:01:58+00:00" + "time": "2023-09-18T11:25:57+00:00" }, { "name": "spatie/laravel-ciphersweet", - "version": "1.0.3", + "version": "1.4.1", "source": { "type": "git", "url": "https://github.com/spatie/laravel-ciphersweet.git", - "reference": "bbede3a7c5a682280171fbaa22e3b2abf90f3c36" + "reference": "82f9252743a69cc557b581f6f3627b63fef2e309" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ciphersweet/zipball/bbede3a7c5a682280171fbaa22e3b2abf90f3c36", - "reference": "bbede3a7c5a682280171fbaa22e3b2abf90f3c36", + "url": "https://api.github.com/repos/spatie/laravel-ciphersweet/zipball/82f9252743a69cc557b581f6f3627b63fef2e309", + "reference": "82f9252743a69cc557b581f6f3627b63fef2e309", "shasum": "" }, "require": { - "illuminate/contracts": "^9.19", + "illuminate/contracts": "^9.19|^10.0", "paragonie/ciphersweet": "^4.0.1", "php": "^8.1", "spatie/laravel-package-tools": "^1.12.0" @@ -7255,7 +7180,7 @@ "friendsofphp/php-cs-fixer": "^3.8", "nunomaduro/collision": "^6.0", "nunomaduro/larastan": "^2.0.1", - "orchestra/testbench": "^7.0", + "orchestra/testbench": "^7.0|^8.0", "pestphp/pest": "^1.21", "pestphp/pest-plugin-laravel": "^1.1", "phpstan/extension-installer": "^1.1", @@ -7299,33 +7224,33 @@ "spatie" ], "support": { - "source": "https://github.com/spatie/laravel-ciphersweet/tree/1.0.3" + "source": "https://github.com/spatie/laravel-ciphersweet/tree/1.4.1" }, - "time": "2022-07-26T07:22:02+00:00" + "time": "2023-08-14T11:02:35+00:00" }, { "name": "spatie/laravel-collection-macros", - "version": "7.12.0", + "version": "7.12.5", "source": { "type": "git", "url": "https://github.com/spatie/laravel-collection-macros.git", - "reference": "fa4ddfb0458d4f1d4b6e365d3c9f11a834fcf436" + "reference": "c95233e712298fa4b79baeeda77952ca1a533150" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-collection-macros/zipball/fa4ddfb0458d4f1d4b6e365d3c9f11a834fcf436", - "reference": "fa4ddfb0458d4f1d4b6e365d3c9f11a834fcf436", + "url": "https://api.github.com/repos/spatie/laravel-collection-macros/zipball/c95233e712298fa4b79baeeda77952ca1a533150", + "reference": "c95233e712298fa4b79baeeda77952ca1a533150", "shasum": "" }, "require": { - "illuminate/support": "^8.71|^9.0", + "illuminate/support": "^8.71|^9.0|^10.0", "php": "^8.0" }, "require-dev": { - "amphp/parallel": "^0.2.5", - "amphp/parallel-functions": "^0.1.3", + "amphp/parallel": "^1.4.1", + "amphp/parallel-functions": "^1.1.0", "mockery/mockery": "^1.4.2", - "orchestra/testbench": "^6.23|^7.0", + "orchestra/testbench": "^6.23|^7.0|^8.0", "phpunit/phpunit": "^9.4.4", "spatie/laravel-ray": "^1.29", "symfony/stopwatch": "^5.2|^6.0" @@ -7371,8 +7296,7 @@ "spatie" ], "support": { - "issues": "https://github.com/spatie/laravel-collection-macros/issues", - "source": "https://github.com/spatie/laravel-collection-macros/tree/7.12.0" + "source": "https://github.com/spatie/laravel-collection-macros/tree/7.12.5" }, "funding": [ { @@ -7380,7 +7304,7 @@ "type": "github" } ], - "time": "2022-08-05T21:39:44+00:00" + "time": "2023-05-11T14:36:36+00:00" }, { "name": "spatie/laravel-cookie-consent", @@ -7536,24 +7460,24 @@ }, { "name": "spatie/laravel-flash", - "version": "1.9.0", + "version": "1.9.1", "source": { "type": "git", "url": "https://github.com/spatie/laravel-flash.git", - "reference": "4bdb9b46b1b4604a2a67e2c6be915557905c31ff" + "reference": "f0417044fd5c6be9082fe42fe793e5ccaadf29df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-flash/zipball/4bdb9b46b1b4604a2a67e2c6be915557905c31ff", - "reference": "4bdb9b46b1b4604a2a67e2c6be915557905c31ff", + "url": "https://api.github.com/repos/spatie/laravel-flash/zipball/f0417044fd5c6be9082fe42fe793e5ccaadf29df", + "reference": "f0417044fd5c6be9082fe42fe793e5ccaadf29df", "shasum": "" }, "require": { - "illuminate/session": "^8.0|^9.0", + "illuminate/session": "^8.0|^9.0|^10.0", "php": "^7.4|^8.0" }, "require-dev": { - "orchestra/testbench": "^6.23|^7.0", + "orchestra/testbench": "^6.23|^7.0|^8.0", "phpunit/phpunit": "^9.4" }, "type": "library", @@ -7585,7 +7509,7 @@ ], "support": { "issues": "https://github.com/spatie/laravel-flash/issues", - "source": "https://github.com/spatie/laravel-flash/tree/1.9.0" + "source": "https://github.com/spatie/laravel-flash/tree/1.9.1" }, "funding": [ { @@ -7593,34 +7517,35 @@ "type": "custom" } ], - "time": "2022-01-12T08:17:47+00:00" + "time": "2023-01-23T14:53:09+00:00" }, { "name": "spatie/laravel-google-fonts", - "version": "1.2.0", + "version": "1.2.3", "source": { "type": "git", "url": "https://github.com/spatie/laravel-google-fonts.git", - "reference": "c079eab6d1bc6fbadbb80590eb9324b114850c0a" + "reference": "8cc6efb698b7a1324229bc55d5ece8944835d43b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-google-fonts/zipball/c079eab6d1bc6fbadbb80590eb9324b114850c0a", - "reference": "c079eab6d1bc6fbadbb80590eb9324b114850c0a", + "url": "https://api.github.com/repos/spatie/laravel-google-fonts/zipball/8cc6efb698b7a1324229bc55d5ece8944835d43b", + "reference": "8cc6efb698b7a1324229bc55d5ece8944835d43b", "shasum": "" }, "require": { - "guzzlehttp/guzzle": "^7.3", - "illuminate/contracts": "^8.37|^9.0", + "guzzlehttp/guzzle": "^7.3|^7.2", + "illuminate/contracts": "^8.37|^9.0|^10.0", "php": "^8.0", "spatie/laravel-package-tools": "^1.7.0" }, "require-dev": { "brianium/paratest": "^6.3", "nunomaduro/collision": "^5.4|^6.0", - "orchestra/testbench": "^6.17|^7.0", - "phpunit/phpunit": "^9.5", + "orchestra/testbench": "^6.17|^7.0|^8.0", + "pestphp/pest": "^1.22", "spatie/laravel-ray": "^1.17", + "spatie/pest-plugin-snapshots": "^1.1", "spatie/phpunit-snapshot-assertions": "^4.2" }, "type": "library", @@ -7665,7 +7590,7 @@ "spatie" ], "support": { - "source": "https://github.com/spatie/laravel-google-fonts/tree/1.2.0" + "source": "https://github.com/spatie/laravel-google-fonts/tree/1.2.3" }, "funding": [ { @@ -7673,45 +7598,47 @@ "type": "github" } ], - "time": "2022-02-28T14:22:39+00:00" + "time": "2023-01-24T23:50:49+00:00" }, { "name": "spatie/laravel-ignition", - "version": "1.6.4", + "version": "2.3.0", "source": { "type": "git", "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "1a2b4bd3d48c72526c0ba417687e5c56b5cf49bc" + "reference": "4ed813d16edb5a1ab0d7f4b1d116c37ee8cdf3c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/1a2b4bd3d48c72526c0ba417687e5c56b5cf49bc", - "reference": "1a2b4bd3d48c72526c0ba417687e5c56b5cf49bc", + "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/4ed813d16edb5a1ab0d7f4b1d116c37ee8cdf3c0", + "reference": "4ed813d16edb5a1ab0d7f4b1d116c37ee8cdf3c0", "shasum": "" }, "require": { "ext-curl": "*", "ext-json": "*", "ext-mbstring": "*", - "illuminate/support": "^8.77|^9.27", - "monolog/monolog": "^2.3", - "php": "^8.0", - "spatie/flare-client-php": "^1.0.1", - "spatie/ignition": "^1.4.1", - "symfony/console": "^5.0|^6.0", - "symfony/var-dumper": "^5.0|^6.0" + "illuminate/support": "^10.0", + "php": "^8.1", + "spatie/flare-client-php": "^1.3.5", + "spatie/ignition": "^1.9", + "symfony/console": "^6.2.3", + "symfony/var-dumper": "^6.2.3" }, "require-dev": { - "filp/whoops": "^2.14", - "livewire/livewire": "^2.8|dev-develop", - "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^1.0", - "orchestra/testbench": "^6.23|^7.0", - "pestphp/pest": "^1.20", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "spatie/laravel-ray": "^1.27" + "livewire/livewire": "^2.11", + "mockery/mockery": "^1.5.1", + "openai-php/client": "^0.3.4", + "orchestra/testbench": "^8.0", + "pestphp/pest": "^1.22.3", + "phpstan/extension-installer": "^1.2", + "phpstan/phpstan-deprecation-rules": "^1.1.1", + "phpstan/phpstan-phpunit": "^1.3.3", + "vlucas/phpdotenv": "^5.5" + }, + "suggest": { + "openai-php/client": "Require get solutions from OpenAI", + "psr/simple-cache-implementation": "Needed to cache solutions from OpenAI" }, "type": "library", "extra": { @@ -7763,7 +7690,7 @@ "type": "github" } ], - "time": "2023-01-03T19:28:04+00:00" + "time": "2023-08-23T06:24:34+00:00" }, { "name": "spatie/laravel-login-link", @@ -8128,20 +8055,20 @@ }, { "name": "spatie/laravel-signal-aware-command", - "version": "1.2.0", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/spatie/laravel-signal-aware-command.git", - "reference": "d15a5b69bf715fc557b7034b4abd5a1472ae7ec8" + "reference": "46cda09a85aef3fd47fb73ddc7081f963e255571" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-signal-aware-command/zipball/d15a5b69bf715fc557b7034b4abd5a1472ae7ec8", - "reference": "d15a5b69bf715fc557b7034b4abd5a1472ae7ec8", + "url": "https://api.github.com/repos/spatie/laravel-signal-aware-command/zipball/46cda09a85aef3fd47fb73ddc7081f963e255571", + "reference": "46cda09a85aef3fd47fb73ddc7081f963e255571", "shasum": "" }, "require": { - "illuminate/contracts": "^8.35|^9.0", + "illuminate/contracts": "^8.35|^9.0|^10.0", "php": "^8.0", "spatie/laravel-package-tools": "^1.4.3" }, @@ -8149,7 +8076,8 @@ "brianium/paratest": "^6.2", "ext-pcntl": "*", "nunomaduro/collision": "^5.3|^6.0", - "orchestra/testbench": "^6.16|^7.0", + "orchestra/testbench": "^6.16|^7.0|^8.0", + "pestphp/pest-plugin-laravel": "^1.3", "phpunit/phpunit": "^9.5", "spatie/laravel-ray": "^1.17" }, @@ -8189,7 +8117,7 @@ ], "support": { "issues": "https://github.com/spatie/laravel-signal-aware-command/issues", - "source": "https://github.com/spatie/laravel-signal-aware-command/tree/1.2.0" + "source": "https://github.com/spatie/laravel-signal-aware-command/tree/1.3.0" }, "funding": [ { @@ -8197,29 +8125,29 @@ "type": "github" } ], - "time": "2022-01-12T19:42:44+00:00" + "time": "2023-01-14T21:10:59+00:00" }, { "name": "spatie/laravel-sluggable", - "version": "3.4.0", + "version": "3.5.0", "source": { "type": "git", "url": "https://github.com/spatie/laravel-sluggable.git", - "reference": "e3b102ef0f0a0bfbba1eca5961a8e33207c76028" + "reference": "041af2533fe2206715e9a4a9cad2cab6cb796655" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-sluggable/zipball/e3b102ef0f0a0bfbba1eca5961a8e33207c76028", - "reference": "e3b102ef0f0a0bfbba1eca5961a8e33207c76028", + "url": "https://api.github.com/repos/spatie/laravel-sluggable/zipball/041af2533fe2206715e9a4a9cad2cab6cb796655", + "reference": "041af2533fe2206715e9a4a9cad2cab6cb796655", "shasum": "" }, "require": { - "illuminate/database": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", + "illuminate/database": "^8.0|^9.0|^10.0", + "illuminate/support": "^8.0|^9.0|^10.0", "php": "^8.0" }, "require-dev": { - "orchestra/testbench": "^6.23|^7.0", + "orchestra/testbench": "^6.23|^7.0|^8.0", "pestphp/pest": "^1.20", "spatie/laravel-translatable": "^5.0|^6.0" }, @@ -8248,8 +8176,7 @@ "spatie" ], "support": { - "issues": "https://github.com/spatie/laravel-sluggable/issues", - "source": "https://github.com/spatie/laravel-sluggable/tree/3.4.0" + "source": "https://github.com/spatie/laravel-sluggable/tree/3.5.0" }, "funding": [ { @@ -8257,7 +8184,7 @@ "type": "github" } ], - "time": "2022-03-28T11:21:33+00:00" + "time": "2023-05-29T09:42:35+00:00" }, { "name": "spatie/laravel-translatable", @@ -8343,16 +8270,16 @@ }, { "name": "spatie/temporary-directory", - "version": "2.1.2", + "version": "2.2.0", "source": { "type": "git", "url": "https://github.com/spatie/temporary-directory.git", - "reference": "0c804873f6b4042aa8836839dca683c7d0f71831" + "reference": "efc258c9f4da28f0c7661765b8393e4ccee3d19c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/temporary-directory/zipball/0c804873f6b4042aa8836839dca683c7d0f71831", - "reference": "0c804873f6b4042aa8836839dca683c7d0f71831", + "url": "https://api.github.com/repos/spatie/temporary-directory/zipball/efc258c9f4da28f0c7661765b8393e4ccee3d19c", + "reference": "efc258c9f4da28f0c7661765b8393e4ccee3d19c", "shasum": "" }, "require": { @@ -8388,7 +8315,7 @@ ], "support": { "issues": "https://github.com/spatie/temporary-directory/issues", - "source": "https://github.com/spatie/temporary-directory/tree/2.1.2" + "source": "https://github.com/spatie/temporary-directory/tree/2.2.0" }, "funding": [ { @@ -8400,36 +8327,38 @@ "type": "github" } ], - "time": "2023-04-28T07:47:42+00:00" + "time": "2023-09-25T07:13:36+00:00" }, { "name": "staudenmeir/eloquent-has-many-deep", - "version": "v1.17.2", + "version": "v1.18.3", "source": { "type": "git", "url": "https://github.com/staudenmeir/eloquent-has-many-deep.git", - "reference": "018dfa29be19839085854edf28ada2f028449f35" + "reference": "04cdf25eac68bd02c3aa382ddbf437585bd76708" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/staudenmeir/eloquent-has-many-deep/zipball/018dfa29be19839085854edf28ada2f028449f35", - "reference": "018dfa29be19839085854edf28ada2f028449f35", + "url": "https://api.github.com/repos/staudenmeir/eloquent-has-many-deep/zipball/04cdf25eac68bd02c3aa382ddbf437585bd76708", + "reference": "04cdf25eac68bd02c3aa382ddbf437585bd76708", "shasum": "" }, "require": { - "illuminate/database": "^9.0", - "php": "^8.0.2", - "staudenmeir/eloquent-has-many-deep-contracts": "^1.0" + "illuminate/database": "^10.0", + "php": "^8.1", + "staudenmeir/eloquent-has-many-deep-contracts": "^1.1" }, "require-dev": { - "awobaz/compoships": "^2.1", - "illuminate/pagination": "^9.0", - "korridor/laravel-has-many-merged": "^0.0.3", - "nesbot/carbon": "^2.62.1", - "phpunit/phpunit": "^9.5", - "staudenmeir/eloquent-eager-limit": "^1.7", - "staudenmeir/eloquent-json-relations": "^1.7", - "staudenmeir/laravel-adjacency-list": "^1.12" + "awobaz/compoships": "^2.2", + "barryvdh/laravel-ide-helper": "^2.13", + "illuminate/pagination": "^10.0", + "korridor/laravel-has-many-merged": "^1.0", + "mockery/mockery": "^1.6", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^10.1", + "staudenmeir/eloquent-eager-limit": "^1.8", + "staudenmeir/eloquent-json-relations": "^1.8.2", + "staudenmeir/laravel-adjacency-list": "^1.13.7" }, "type": "library", "autoload": { @@ -8450,7 +8379,7 @@ "description": "Laravel Eloquent HasManyThrough relationships with unlimited levels", "support": { "issues": "https://github.com/staudenmeir/eloquent-has-many-deep/issues", - "source": "https://github.com/staudenmeir/eloquent-has-many-deep/tree/v1.17.2" + "source": "https://github.com/staudenmeir/eloquent-has-many-deep/tree/v1.18.3" }, "funding": [ { @@ -8458,25 +8387,25 @@ "type": "custom" } ], - "time": "2023-06-20T05:57:25+00:00" + "time": "2023-08-20T17:00:39+00:00" }, { "name": "staudenmeir/eloquent-has-many-deep-contracts", - "version": "v1.0", + "version": "v1.1", "source": { "type": "git", "url": "https://github.com/staudenmeir/eloquent-has-many-deep-contracts.git", - "reference": "f9589acaaf25f55f38c6dd9d6c1caa6ff62addf6" + "reference": "c39317b839d6123be126b9980e4a3d38310f5939" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/staudenmeir/eloquent-has-many-deep-contracts/zipball/f9589acaaf25f55f38c6dd9d6c1caa6ff62addf6", - "reference": "f9589acaaf25f55f38c6dd9d6c1caa6ff62addf6", + "url": "https://api.github.com/repos/staudenmeir/eloquent-has-many-deep-contracts/zipball/c39317b839d6123be126b9980e4a3d38310f5939", + "reference": "c39317b839d6123be126b9980e4a3d38310f5939", "shasum": "" }, "require": { - "illuminate/database": "^9.0", - "php": "^8.0.2" + "illuminate/database": "^10.0", + "php": "^8.1" }, "type": "library", "autoload": { @@ -8497,33 +8426,33 @@ "description": "Contracts for staudenmeir/eloquent-has-many-deep", "support": { "issues": "https://github.com/staudenmeir/eloquent-has-many-deep-contracts/issues", - "source": "https://github.com/staudenmeir/eloquent-has-many-deep-contracts/tree/v1.0" + "source": "https://github.com/staudenmeir/eloquent-has-many-deep-contracts/tree/v1.1" }, - "time": "2022-09-12T18:34:56+00:00" + "time": "2023-01-18T12:43:26+00:00" }, { "name": "staudenmeir/laravel-merged-relations", - "version": "v1.5.3", + "version": "v1.6.1", "source": { "type": "git", "url": "https://github.com/staudenmeir/laravel-merged-relations.git", - "reference": "dc186050806f8961fa9dcb1c7d41d4e50d958271" + "reference": "439640a72c5ad0673dc232603edce224edc5183a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/staudenmeir/laravel-merged-relations/zipball/dc186050806f8961fa9dcb1c7d41d4e50d958271", - "reference": "dc186050806f8961fa9dcb1c7d41d4e50d958271", + "url": "https://api.github.com/repos/staudenmeir/laravel-merged-relations/zipball/439640a72c5ad0673dc232603edce224edc5183a", + "reference": "439640a72c5ad0673dc232603edce224edc5183a", "shasum": "" }, "require": { - "illuminate/database": "^9.0", - "php": "^8.0.2", - "staudenmeir/laravel-migration-views": "^1.6" + "illuminate/database": "^10.0", + "php": "^8.1", + "staudenmeir/laravel-migration-views": "^1.7" }, "require-dev": { - "nesbot/carbon": "^2.62.1", - "orchestra/testbench": "^7.0", - "staudenmeir/eloquent-has-many-deep": "^1.17" + "orchestra/testbench": "^8.0", + "phpunit/phpunit": "^10.0", + "staudenmeir/eloquent-has-many-deep": "^1.18" }, "type": "library", "extra": { @@ -8551,30 +8480,30 @@ "description": "Merged Laravel Eloquent relationships", "support": { "issues": "https://github.com/staudenmeir/laravel-merged-relations/issues", - "source": "https://github.com/staudenmeir/laravel-merged-relations/tree/v1.5.3" + "source": "https://github.com/staudenmeir/laravel-merged-relations/tree/v1.6.1" }, - "time": "2023-07-01T08:26:54+00:00" + "time": "2023-07-01T08:29:25+00:00" }, { "name": "staudenmeir/laravel-migration-views", - "version": "v1.6.2", + "version": "v1.7", "source": { "type": "git", "url": "https://github.com/staudenmeir/laravel-migration-views.git", - "reference": "79bda6b8fbdff7159edc56bb88e533f8cfef2fd7" + "reference": "1024ed9143e0cb935115509d03a3703b8a17f953" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/staudenmeir/laravel-migration-views/zipball/79bda6b8fbdff7159edc56bb88e533f8cfef2fd7", - "reference": "79bda6b8fbdff7159edc56bb88e533f8cfef2fd7", + "url": "https://api.github.com/repos/staudenmeir/laravel-migration-views/zipball/1024ed9143e0cb935115509d03a3703b8a17f953", + "reference": "1024ed9143e0cb935115509d03a3703b8a17f953", "shasum": "" }, "require": { - "illuminate/database": "^9.0", - "php": "^8.0.2" + "illuminate/database": "^10.0", + "php": "^8.1" }, "require-dev": { - "orchestra/testbench": "^7.0" + "orchestra/testbench": "^8.0" }, "type": "library", "extra": { @@ -8602,52 +8531,9 @@ "description": "Laravel database migrations with SQL views", "support": { "issues": "https://github.com/staudenmeir/laravel-migration-views/issues", - "source": "https://github.com/staudenmeir/laravel-migration-views/tree/v1.6.2" - }, - "time": "2022-05-15T10:08:23+00:00" - }, - { - "name": "stella-maris/clock", - "version": "0.1.5", - "source": { - "type": "git", - "url": "git@gitlab.com:stella-maris/clock.git", - "reference": "447879c53ca0b2a762cdbfba5e76ccf4deca9158" - }, - "dist": { - "type": "zip", - "url": "https://gitlab.com/api/v4/projects/stella-maris%2Fclock/repository/archive.zip?sha=447879c53ca0b2a762cdbfba5e76ccf4deca9158", - "reference": "447879c53ca0b2a762cdbfba5e76ccf4deca9158", - "shasum": "" - }, - "require": { - "php": "^7.0|^8.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "StellaMaris\\Clock\\": "src" - } + "source": "https://github.com/staudenmeir/laravel-migration-views/tree/v1.7" }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Andreas Heigl", - "role": "Maintainer" - } - ], - "description": "A pre-release of the proposed PSR-20 Clock-Interface", - "homepage": "https://gitlab.com/stella-maris/clock", - "keywords": [ - "clock", - "datetime", - "point in time", - "psr20" - ], - "time": "2022-08-05T07:21:25+00:00" + "time": "2023-01-18T12:58:23+00:00" }, { "name": "symfony/console", @@ -11177,25 +11063,23 @@ }, { "name": "vonage/client-core", - "version": "3.1.3", + "version": "4.3.2", "source": { "type": "git", "url": "git@github.com:Vonage/vonage-php-sdk-core.git", - "reference": "52d68cb50b6ec41b453df396495a48a9a2e12eda" + "reference": "a7db15d14754ce21b0006452e16dd907577c1e4b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Vonage/vonage-php-sdk-core/zipball/52d68cb50b6ec41b453df396495a48a9a2e12eda", - "reference": "52d68cb50b6ec41b453df396495a48a9a2e12eda", + "url": "https://api.github.com/repos/Vonage/vonage-php-sdk-core/zipball/a7db15d14754ce21b0006452e16dd907577c1e4b", + "reference": "a7db15d14754ce21b0006452e16dd907577c1e4b", "shasum": "" }, "require": { - "composer/package-versions-deprecated": "^1.11", - "ext-json": "*", "ext-mbstring": "*", - "laminas/laminas-diactoros": "^2.4", + "laminas/laminas-diactoros": "^3.0", "lcobucci/jwt": "^3.4|^4.0", - "php": "~7.4 || ~8.0 || ~8.1", + "php": "~8.0 || ~8.1 || ~8.2", "psr/container": "^1.0 | ^2.0", "psr/http-client-implementation": "^1.0", "psr/log": "^1.1|^2.0|^3.0", @@ -11204,11 +11088,11 @@ "require-dev": { "guzzlehttp/guzzle": ">=6", "helmich/phpunit-json-assert": "^3.3", - "php": "~7.4 || ~8.0 || ~8.1", "php-http/mock-client": "^1.4", "phpspec/prophecy-phpunit": "^2.0", - "phpstan/phpstan": "^0.12", + "phpstan/phpstan": "^1.10", "phpunit/phpunit": "^8.5|^9.4", + "rector/rector": "^0.14.8", "roave/security-advisories": "dev-latest", "softcreatr/jsonpath": "^0.7 || ^0.8", "squizlabs/php_codesniffer": "^3.5" @@ -11231,27 +11115,27 @@ } ], "description": "PHP Client for using Vonage's API.", - "homepage": "https://developer.nexmo.com", + "homepage": "https://developer.vonage.com", "support": { "docs": "https://developer.vonage.com", "email": "devrel@vonage.com", "issues": "https://github.com/Vonage/vonage-php-sdk-core/issues", "source": "https://github.com/Vonage/vonage-php-sdk-core" }, - "time": "2022-08-30T10:09:24+00:00" + "time": "2023-10-02T09:26:26+00:00" }, { "name": "vonage/nexmo-bridge", - "version": "0.1.1", + "version": "0.1.2", "source": { "type": "git", "url": "https://github.com/Nexmo/vonage-php-nexmo-bridge.git", - "reference": "36490dcc5915f12abeaa233c6098e0dce14bbb0a" + "reference": "e9f63cd468b7e0edd73d0c90d0406d6b961f9eb7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Nexmo/vonage-php-nexmo-bridge/zipball/36490dcc5915f12abeaa233c6098e0dce14bbb0a", - "reference": "36490dcc5915f12abeaa233c6098e0dce14bbb0a", + "url": "https://api.github.com/repos/Nexmo/vonage-php-nexmo-bridge/zipball/e9f63cd468b7e0edd73d0c90d0406d6b961f9eb7", + "reference": "e9f63cd468b7e0edd73d0c90d0406d6b961f9eb7", "shasum": "" }, "require": { @@ -11284,9 +11168,9 @@ "description": "Provides a bridge for using the Vonage PHP SDK with the older Nexmo namespace", "support": { "issues": "https://github.com/Nexmo/vonage-php-nexmo-bridge/issues", - "source": "https://github.com/Nexmo/vonage-php-nexmo-bridge/tree/0.1.1" + "source": "https://github.com/Nexmo/vonage-php-nexmo-bridge/tree/0.1.2" }, - "time": "2022-01-18T13:39:33+00:00" + "time": "2023-02-14T15:54:06+00:00" }, { "name": "webmozart/assert", @@ -11731,16 +11615,16 @@ }, { "name": "brianium/paratest", - "version": "v6.9.0", + "version": "v7.2.9", "source": { "type": "git", "url": "https://github.com/paratestphp/paratest.git", - "reference": "6f90dcaf14077a64c966936584b301dd4d01a440" + "reference": "1f9e41c0779be4540654d92a9314016713f5e62c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paratestphp/paratest/zipball/6f90dcaf14077a64c966936584b301dd4d01a440", - "reference": "6f90dcaf14077a64c966936584b301dd4d01a440", + "url": "https://api.github.com/repos/paratestphp/paratest/zipball/1f9e41c0779be4540654d92a9314016713f5e62c", + "reference": "1f9e41c0779be4540654d92a9314016713f5e62c", "shasum": "" }, "require": { @@ -11748,25 +11632,28 @@ "ext-pcre": "*", "ext-reflection": "*", "ext-simplexml": "*", - "fidry/cpu-core-counter": "^0.4.1 || ^0.5.1", + "fidry/cpu-core-counter": "^0.5.1", "jean85/pretty-package-versions": "^2.0.5", - "php": "^7.3 || ^8.0", - "phpunit/php-code-coverage": "^9.2.24", - "phpunit/php-file-iterator": "^3.0.6", - "phpunit/php-timer": "^5.0.3", - "phpunit/phpunit": "^9.6.3", - "sebastian/environment": "^5.1.4", - "symfony/console": "^5.4.16 || ^6.2.5", - "symfony/process": "^5.4.11 || ^6.2.5" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0", + "phpunit/php-code-coverage": "^10.1.7", + "phpunit/php-file-iterator": "^4.1.0", + "phpunit/php-timer": "^6.0", + "phpunit/phpunit": "^10.4.0", + "sebastian/environment": "^6.0.1", + "symfony/console": "^6.3.4", + "symfony/process": "^6.3.4" }, "require-dev": { - "doctrine/coding-standard": "^10.0.0", + "doctrine/coding-standard": "^12.0.0", "ext-pcov": "*", "ext-posix": "*", - "infection/infection": "^0.26.19", - "squizlabs/php_codesniffer": "^3.7.1", - "symfony/filesystem": "^5.4.13 || ^6.2.5", - "vimeo/psalm": "^5.6" + "infection/infection": "^0.27.3", + "phpstan/phpstan": "^1.10.37", + "phpstan/phpstan-deprecation-rules": "^1.1.4", + "phpstan/phpstan-phpunit": "^1.3.14", + "phpstan/phpstan-strict-rules": "^1.5.1", + "squizlabs/php_codesniffer": "^3.7.2", + "symfony/filesystem": "^6.3.1" }, "bin": [ "bin/paratest", @@ -11807,7 +11694,7 @@ ], "support": { "issues": "https://github.com/paratestphp/paratest/issues", - "source": "https://github.com/paratestphp/paratest/tree/v6.9.0" + "source": "https://github.com/paratestphp/paratest/tree/v7.2.9" }, "funding": [ { @@ -11819,7 +11706,7 @@ "type": "paypal" } ], - "time": "2023-02-07T10:03:32+00:00" + "time": "2023-10-06T07:53:04+00:00" }, { "name": "composer/class-map-generator", @@ -11965,76 +11852,6 @@ ], "time": "2022-11-17T09:50:14+00:00" }, - { - "name": "doctrine/instantiator", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", - "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", - "shasum": "" - }, - "require": { - "php": "^8.1" - }, - "require-dev": { - "doctrine/coding-standard": "^11", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^1.2", - "phpstan/phpstan": "^1.9.4", - "phpstan/phpstan-phpunit": "^1.3", - "phpunit/phpunit": "^9.5.27", - "vimeo/psalm": "^5.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/2.0.0" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2022-12-30T00:23:10+00:00" - }, { "name": "fakerphp/faker", "version": "v1.23.0", @@ -12166,16 +11983,16 @@ }, { "name": "filp/whoops", - "version": "2.15.2", + "version": "2.15.3", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "aac9304c5ed61bf7b1b7a6064bf9806ab842ce73" + "reference": "c83e88a30524f9360b11f585f71e6b17313b7187" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/aac9304c5ed61bf7b1b7a6064bf9806ab842ce73", - "reference": "aac9304c5ed61bf7b1b7a6064bf9806ab842ce73", + "url": "https://api.github.com/repos/filp/whoops/zipball/c83e88a30524f9360b11f585f71e6b17313b7187", + "reference": "c83e88a30524f9360b11f585f71e6b17313b7187", "shasum": "" }, "require": { @@ -12225,7 +12042,7 @@ ], "support": { "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.15.2" + "source": "https://github.com/filp/whoops/tree/2.15.3" }, "funding": [ { @@ -12233,7 +12050,7 @@ "type": "github" } ], - "time": "2023-04-12T12:00:00+00:00" + "time": "2023-07-13T12:00:00+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -12764,38 +12581,40 @@ }, { "name": "nunomaduro/collision", - "version": "v6.4.0", + "version": "v7.9.0", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "f05978827b9343cba381ca05b8c7deee346b6015" + "reference": "296d0cf9fe462837ac0da8a568b56fc026b132da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/f05978827b9343cba381ca05b8c7deee346b6015", - "reference": "f05978827b9343cba381ca05b8c7deee346b6015", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/296d0cf9fe462837ac0da8a568b56fc026b132da", + "reference": "296d0cf9fe462837ac0da8a568b56fc026b132da", "shasum": "" }, "require": { - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" + "filp/whoops": "^2.15.3", + "nunomaduro/termwind": "^1.15.1", + "php": "^8.1.0", + "symfony/console": "^6.3.4" }, "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.26.1", - "laravel/pint": "^1.1.1", - "nunomaduro/larastan": "^1.0.3", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.7", - "phpunit/phpunit": "^9.5.23", - "spatie/ignition": "^1.4.1" + "brianium/paratest": "^7.2.7", + "laravel/framework": "^10.23.1", + "laravel/pint": "^1.13.1", + "laravel/sail": "^1.25.0", + "laravel/sanctum": "^3.3.1", + "laravel/tinker": "^2.8.2", + "nunomaduro/larastan": "^2.6.4", + "orchestra/testbench-core": "^8.11.0", + "pestphp/pest": "^2.19.1", + "phpunit/phpunit": "^10.3.5", + "sebastian/environment": "^6.0.1", + "spatie/laravel-ignition": "^2.3.0" }, "type": "library", "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, "laravel": { "providers": [ "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" @@ -12803,6 +12622,9 @@ } }, "autoload": { + "files": [ + "./src/Adapters/Phpunit/Autoload.php" + ], "psr-4": { "NunoMaduro\\Collision\\": "src/" } @@ -12848,31 +12670,31 @@ "type": "patreon" } ], - "time": "2023-01-03T12:54:54+00:00" + "time": "2023-09-19T10:45:09+00:00" }, { "name": "nunomaduro/larastan", - "version": "v2.6.1", + "version": "dev-master", "source": { "type": "git", "url": "https://github.com/nunomaduro/larastan.git", - "reference": "7823bc1fdbd8e72fd1e9cd8d746e7e104bccf02c" + "reference": "4d38097f14cad5549990c139e1409141b94b6201" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/larastan/zipball/7823bc1fdbd8e72fd1e9cd8d746e7e104bccf02c", - "reference": "7823bc1fdbd8e72fd1e9cd8d746e7e104bccf02c", + "url": "https://api.github.com/repos/nunomaduro/larastan/zipball/4d38097f14cad5549990c139e1409141b94b6201", + "reference": "4d38097f14cad5549990c139e1409141b94b6201", "shasum": "" }, "require": { "ext-json": "*", - "illuminate/console": "^9.47.0 || ^10.0.0", - "illuminate/container": "^9.47.0 || ^10.0.0", - "illuminate/contracts": "^9.47.0 || ^10.0.0", - "illuminate/database": "^9.47.0 || ^10.0.0", - "illuminate/http": "^9.47.0 || ^10.0.0", - "illuminate/pipeline": "^9.47.0 || ^10.0.0", - "illuminate/support": "^9.47.0 || ^10.0.0", + "illuminate/console": "^9.47.0 || ^10.0.0 || ^11.0.0", + "illuminate/container": "^9.47.0 || ^10.0.0 || ^11.0.0", + "illuminate/contracts": "^9.47.0 || ^10.0.0 || ^11.0.0", + "illuminate/database": "^9.47.0 || ^10.0.0 || ^11.0.0", + "illuminate/http": "^9.47.0 || ^10.0.0 || ^11.0.0", + "illuminate/pipeline": "^9.47.0 || ^10.0.0 || ^11.0.0", + "illuminate/support": "^9.47.0 || ^10.0.0 || ^11.0.0", "php": "^8.0.2", "phpmyadmin/sql-parser": "^5.6.0", "phpstan/phpstan": "~1.10.6" @@ -12885,6 +12707,7 @@ "suggest": { "orchestra/testbench": "Using Larastan for analysing a package needs Testbench" }, + "default-branch": true, "type": "phpstan-extension", "extra": { "branch-alias": { @@ -12924,7 +12747,7 @@ ], "support": { "issues": "https://github.com/nunomaduro/larastan/issues", - "source": "https://github.com/nunomaduro/larastan/tree/v2.6.1" + "source": "https://github.com/nunomaduro/larastan/tree/master" }, "funding": [ { @@ -12944,54 +12767,191 @@ "type": "patreon" } ], - "time": "2023-06-04T20:55:57+00:00" + "time": "2023-10-05T17:12:51+00:00" + }, + { + "name": "permafrost-dev/code-snippets", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/permafrost-dev/code-snippets.git", + "reference": "639827ba7118a6b5521c861a265358ce5bd2b0c5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/permafrost-dev/code-snippets/zipball/639827ba7118a6b5521c861a265358ce5bd2b0c5", + "reference": "639827ba7118a6b5521c861a265358ce5bd2b0c5", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.5", + "spatie/phpunit-snapshot-assertions": "^4.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Permafrost\\CodeSnippets\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Patrick Organ", + "email": "patrick@permafrost.dev", + "role": "Developer" + } + ], + "description": "Easily work with code snippets in PHP", + "homepage": "https://github.com/permafrost-dev/code-snippets", + "keywords": [ + "code", + "code-snippets", + "permafrost", + "snippets" + ], + "support": { + "issues": "https://github.com/permafrost-dev/code-snippets/issues", + "source": "https://github.com/permafrost-dev/code-snippets/tree/1.2.0" + }, + "funding": [ + { + "url": "https://permafrost.dev/open-source", + "type": "custom" + }, + { + "url": "https://github.com/permafrost-dev", + "type": "github" + } + ], + "time": "2021-07-27T05:15:06+00:00" + }, + { + "name": "permafrost-dev/php-code-search", + "version": "1.10.5", + "source": { + "type": "git", + "url": "https://github.com/permafrost-dev/php-code-search.git", + "reference": "8bd830ebbb179d7d88f9c414751d9be8bc54ffed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/permafrost-dev/php-code-search/zipball/8bd830ebbb179d7d88f9c414751d9be8bc54ffed", + "reference": "8bd830ebbb179d7d88f9c414751d9be8bc54ffed", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.10", + "permafrost-dev/code-snippets": "^1.2.0", + "php": "^7.3|^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.5", + "spatie/phpunit-snapshot-assertions": "^4.2" + }, + "type": "library", + "autoload": { + "files": [ + "src/Support/helpers.php" + ], + "psr-4": { + "Permafrost\\PhpCodeSearch\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Patrick Organ", + "email": "patrick@permafrost.dev", + "homepage": "https://permafrost.dev", + "role": "Developer" + } + ], + "description": "Search PHP code for function & method calls, variable assignments, and more", + "homepage": "https://github.com/permafrost-dev/php-code-search", + "keywords": [ + "code", + "permafrost", + "php", + "search", + "sourcecode" + ], + "support": { + "issues": "https://github.com/permafrost-dev/php-code-search/issues", + "source": "https://github.com/permafrost-dev/php-code-search/tree/1.10.5" + }, + "funding": [ + { + "url": "https://github.com/sponsors/permafrost-dev", + "type": "github" + } + ], + "time": "2021-08-18T00:23:11+00:00" }, { "name": "pestphp/pest", - "version": "v1.23.0", + "version": "v2.21.0", "source": { "type": "git", "url": "https://github.com/pestphp/pest.git", - "reference": "061c9de301531e500a8157b476a5899361e60068" + "reference": "2ffafd445d42c8b7b7e1874bde1c29945767a49d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest/zipball/061c9de301531e500a8157b476a5899361e60068", - "reference": "061c9de301531e500a8157b476a5899361e60068", + "url": "https://api.github.com/repos/pestphp/pest/zipball/2ffafd445d42c8b7b7e1874bde1c29945767a49d", + "reference": "2ffafd445d42c8b7b7e1874bde1c29945767a49d", "shasum": "" }, "require": { - "nunomaduro/collision": "^5.11.0|^6.4.0", - "pestphp/pest-plugin": "^1.1.0", - "php": "^7.3 || ^8.0", - "phpunit/phpunit": "^9.6.7" + "brianium/paratest": "^7.2.9", + "nunomaduro/collision": "^7.9.0", + "nunomaduro/termwind": "^1.15.1", + "pestphp/pest-plugin": "^2.1.1", + "pestphp/pest-plugin-arch": "^2.3.3", + "php": "^8.1.0", + "phpunit/phpunit": "^10.4.0" + }, + "conflict": { + "phpunit/phpunit": ">10.4.0", + "sebastian/exporter": "<5.1.0", + "webmozart/assert": "<1.11.0" }, "require-dev": { - "illuminate/console": "^8.83.27", - "illuminate/support": "^8.83.27", - "laravel/dusk": "^6.25.2", - "pestphp/pest-dev-tools": "^1.0.0", - "pestphp/pest-plugin-parallel": "^1.2.1" + "pestphp/pest-dev-tools": "^2.16.0", + "pestphp/pest-plugin-type-coverage": "^2.4.0", + "symfony/process": "^6.3.4" }, "bin": [ "bin/pest" ], "type": "library", "extra": { - "branch-alias": { - "dev-1.x": "1.x-dev" - }, "pest": { "plugins": [ + "Pest\\Plugins\\Bail", + "Pest\\Plugins\\Cache", "Pest\\Plugins\\Coverage", "Pest\\Plugins\\Init", + "Pest\\Plugins\\Environment", + "Pest\\Plugins\\Help", + "Pest\\Plugins\\Memory", + "Pest\\Plugins\\Only", + "Pest\\Plugins\\Printer", + "Pest\\Plugins\\ProcessIsolation", + "Pest\\Plugins\\Profile", + "Pest\\Plugins\\Retry", + "Pest\\Plugins\\Snapshot", + "Pest\\Plugins\\Verbose", "Pest\\Plugins\\Version", - "Pest\\Plugins\\Environment" - ] - }, - "laravel": { - "providers": [ - "Pest\\Laravel\\PestServiceProvider" + "Pest\\Plugins\\Parallel" ] } }, @@ -13014,7 +12974,7 @@ "email": "enunomaduro@gmail.com" } ], - "description": "An elegant PHP Testing Framework.", + "description": "The elegant PHP Testing Framework.", "keywords": [ "framework", "pest", @@ -13025,7 +12985,7 @@ ], "support": { "issues": "https://github.com/pestphp/pest/issues", - "source": "https://github.com/pestphp/pest/tree/v1.23.0" + "source": "https://github.com/pestphp/pest/tree/v2.21.0" }, "funding": [ { @@ -13037,39 +12997,37 @@ "type": "github" } ], - "time": "2023-04-19T20:10:22+00:00" + "time": "2023-10-06T12:33:39+00:00" }, { "name": "pestphp/pest-plugin", - "version": "v1.1.0", + "version": "v2.1.1", "source": { "type": "git", "url": "https://github.com/pestphp/pest-plugin.git", - "reference": "606c5f79c6a339b49838ffbee0151ca519efe378" + "reference": "e05d2859e08c2567ee38ce8b005d044e72648c0b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest-plugin/zipball/606c5f79c6a339b49838ffbee0151ca519efe378", - "reference": "606c5f79c6a339b49838ffbee0151ca519efe378", + "url": "https://api.github.com/repos/pestphp/pest-plugin/zipball/e05d2859e08c2567ee38ce8b005d044e72648c0b", + "reference": "e05d2859e08c2567ee38ce8b005d044e72648c0b", "shasum": "" }, "require": { - "composer-plugin-api": "^1.1.0 || ^2.0.0", - "php": "^7.3 || ^8.0" + "composer-plugin-api": "^2.0.0", + "composer-runtime-api": "^2.2.2", + "php": "^8.1" }, "conflict": { - "pestphp/pest": "<1.0" + "pestphp/pest": "<2.2.3" }, "require-dev": { - "composer/composer": "^2.4.2", - "pestphp/pest": "^1.22.1", - "pestphp/pest-dev-tools": "^1.0.0" + "composer/composer": "^2.5.8", + "pestphp/pest": "^2.16.0", + "pestphp/pest-dev-tools": "^2.16.0" }, "type": "composer-plugin", "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - }, "class": "Pest\\Plugin\\Manager" }, "autoload": { @@ -13093,7 +13051,7 @@ "unit" ], "support": { - "source": "https://github.com/pestphp/pest-plugin/tree/v1.1.0" + "source": "https://github.com/pestphp/pest-plugin/tree/v2.1.1" }, "funding": [ { @@ -13109,51 +13067,49 @@ "type": "patreon" } ], - "time": "2022-09-18T13:18:17+00:00" + "time": "2023-08-22T08:40:06+00:00" }, { - "name": "pestphp/pest-plugin-faker", - "version": "v1.0.0", + "name": "pestphp/pest-plugin-arch", + "version": "v2.3.3", "source": { "type": "git", - "url": "https://github.com/pestphp/pest-plugin-faker.git", - "reference": "9d93419f1f47ffd856ee544317b2f9144a129044" + "url": "https://github.com/pestphp/pest-plugin-arch.git", + "reference": "b758990e83f89daba3c45672398579cf8692213f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest-plugin-faker/zipball/9d93419f1f47ffd856ee544317b2f9144a129044", - "reference": "9d93419f1f47ffd856ee544317b2f9144a129044", + "url": "https://api.github.com/repos/pestphp/pest-plugin-arch/zipball/b758990e83f89daba3c45672398579cf8692213f", + "reference": "b758990e83f89daba3c45672398579cf8692213f", "shasum": "" }, "require": { - "fakerphp/faker": "^1.9.1", - "pestphp/pest": "^1.0", - "php": "^7.3 || ^8.0" + "nunomaduro/collision": "^7.8.1", + "pestphp/pest-plugin": "^2.0.1", + "php": "^8.1", + "ta-tikoma/phpunit-architecture-test": "^0.7.4" }, "require-dev": { - "pestphp/pest-dev-tools": "dev-master" + "pestphp/pest": "^2.16.0", + "pestphp/pest-dev-tools": "^2.16.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, "autoload": { "files": [ - "src/Faker.php" + "src/Autoload.php" ], "psr-4": { - "Pest\\Faker\\": "src/" + "Pest\\Arch\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "The Pest Faker Plugin", + "description": "The Arch plugin for Pest PHP.", "keywords": [ - "faker", + "arch", + "architecture", "framework", "pest", "php", @@ -13163,76 +13119,72 @@ "unit" ], "support": { - "source": "https://github.com/pestphp/pest-plugin-faker/tree/v1.0.0" + "source": "https://github.com/pestphp/pest-plugin-arch/tree/v2.3.3" }, "funding": [ { - "url": "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66BYDWAT92N6L", + "url": "https://www.paypal.com/paypalme/enunomaduro", "type": "custom" }, { "url": "https://github.com/nunomaduro", "type": "github" - }, - { - "url": "https://www.patreon.com/nunomaduro", - "type": "patreon" } ], - "time": "2021-01-03T15:42:35+00:00" + "time": "2023-08-21T16:06:30+00:00" }, { - "name": "pestphp/pest-plugin-laravel", - "version": "v1.4.0", + "name": "pestphp/pest-plugin-faker", + "version": "v2.0.0", "source": { "type": "git", - "url": "https://github.com/pestphp/pest-plugin-laravel.git", - "reference": "61935be0deae1732a3ead780fbd9277aa93e2f6d" + "url": "https://github.com/pestphp/pest-plugin-faker.git", + "reference": "39fa2bd69d95024783ccf40ff48e3680aea1ba4a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest-plugin-laravel/zipball/61935be0deae1732a3ead780fbd9277aa93e2f6d", - "reference": "61935be0deae1732a3ead780fbd9277aa93e2f6d", + "url": "https://api.github.com/repos/pestphp/pest-plugin-faker/zipball/39fa2bd69d95024783ccf40ff48e3680aea1ba4a", + "reference": "39fa2bd69d95024783ccf40ff48e3680aea1ba4a", "shasum": "" }, "require": { - "laravel/framework": "^7.30.6 || ^8.83.27 || ^9.47.0 || ^10.0.0", - "pestphp/pest": "^1.22.1", - "php": "^7.3 || ^8.0" + "fakerphp/faker": "^1.21.0", + "pestphp/pest": "^2.0.0", + "php": "^8.1" }, "require-dev": { - "orchestra/testbench": "^5.20.0 || ^6.25.0 || ^7.7.0 || ^8.0", - "pestphp/pest-dev-tools": "^1.0.0" + "pestphp/pest-dev-tools": "^2.5.0" }, "type": "library", "autoload": { "files": [ - "src/Autoload.php" + "src/Faker.php" ], "psr-4": { - "Pest\\Laravel\\": "src/" + "Pest\\Faker\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "The Pest Laravel Plugin", + "description": "The Pest Faker Plugin", "keywords": [ + "faker", "framework", - "laravel", "pest", "php", + "plugin", "test", "testing", "unit" ], "support": { - "source": "https://github.com/pestphp/pest-plugin-laravel/tree/v1.4.0" + "source": "https://github.com/pestphp/pest-plugin-faker/tree/v2.0.0" }, "funding": [ { - "url": "https://www.paypal.com/paypalme/enunomaduro", + "url": "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66BYDWAT92N6L", "type": "custom" }, { @@ -13244,35 +13196,38 @@ "type": "patreon" } ], - "time": "2023-01-13T16:54:07+00:00" + "time": "2023-03-20T10:06:05+00:00" }, { - "name": "pestphp/pest-plugin-livewire", - "version": "v1.0.0", + "name": "pestphp/pest-plugin-laravel", + "version": "v2.2.0", "source": { "type": "git", - "url": "https://github.com/pestphp/pest-plugin-livewire.git", - "reference": "30e259e57c18dd40402e7fd29d46344a6cb9ff03" + "url": "https://github.com/pestphp/pest-plugin-laravel.git", + "reference": "77a2838c1d3b09d147211e76a48987ba9a758279" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest-plugin-livewire/zipball/30e259e57c18dd40402e7fd29d46344a6cb9ff03", - "reference": "30e259e57c18dd40402e7fd29d46344a6cb9ff03", + "url": "https://api.github.com/repos/pestphp/pest-plugin-laravel/zipball/77a2838c1d3b09d147211e76a48987ba9a758279", + "reference": "77a2838c1d3b09d147211e76a48987ba9a758279", "shasum": "" }, "require": { - "livewire/livewire": "^1.2|^2.0", - "pestphp/pest": "^1.0", - "php": "^7.3|^8.0" + "laravel/framework": "^10.18.0|^11.0", + "pestphp/pest": "^2.13.0", + "php": "^8.1.0" }, "require-dev": { - "orchestra/testbench": "^6.4", - "pestphp/pest-dev-tools": "dev-master" + "laravel/dusk": "^7.9.3", + "orchestra/testbench": "^8.6.3", + "pestphp/pest-dev-tools": "^2.14.0" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.x-dev" + "laravel": { + "providers": [ + "Pest\\Laravel\\PestServiceProvider" + ] } }, "autoload": { @@ -13280,101 +13235,78 @@ "src/Autoload.php" ], "psr-4": { - "Pest\\Livewire\\": "src/" + "Pest\\Laravel\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "The Pest Livewire Plugin", + "description": "The Pest Laravel Plugin", "keywords": [ "framework", - "livewire", + "laravel", "pest", "php", - "plugin", "test", "testing", "unit" ], "support": { - "source": "https://github.com/pestphp/pest-plugin-livewire/tree/v1.0.0" + "source": "https://github.com/pestphp/pest-plugin-laravel/tree/v2.2.0" }, "funding": [ { - "url": "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66BYDWAT92N6L", + "url": "https://www.paypal.com/paypalme/enunomaduro", "type": "custom" }, { "url": "https://github.com/nunomaduro", "type": "github" - }, - { - "url": "https://www.patreon.com/nunomaduro", - "type": "patreon" } ], - "time": "2021-01-03T15:37:46+00:00" + "time": "2023-08-10T15:37:09+00:00" }, { - "name": "pestphp/pest-plugin-parallel", - "version": "v1.2.1", + "name": "pestphp/pest-plugin-livewire", + "version": "v2.1.0", "source": { "type": "git", - "url": "https://github.com/pestphp/pest-plugin-parallel.git", - "reference": "842592eba2439ba6477f6d6c7ee4a4e7bccdcd10" + "url": "https://github.com/pestphp/pest-plugin-livewire.git", + "reference": "e72a2f850f727dfdb6bfa6e2ee6ff478ccc93f97" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest-plugin-parallel/zipball/842592eba2439ba6477f6d6c7ee4a4e7bccdcd10", - "reference": "842592eba2439ba6477f6d6c7ee4a4e7bccdcd10", + "url": "https://api.github.com/repos/pestphp/pest-plugin-livewire/zipball/e72a2f850f727dfdb6bfa6e2ee6ff478ccc93f97", + "reference": "e72a2f850f727dfdb6bfa6e2ee6ff478ccc93f97", "shasum": "" }, "require": { - "brianium/paratest": "^6.8.1", - "pestphp/pest-plugin": "^1.1.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "laravel/framework": "<8.55", - "nunomaduro/collision": "<5.8", - "pestphp/pest": "<1.16" + "livewire/livewire": "^2.12.3|^3.0", + "pestphp/pest": "^2.9.1", + "php": "^8.1" }, "require-dev": { - "pestphp/pest": "^1.22.3", - "pestphp/pest-dev-tools": "^1.0.0" + "orchestra/testbench": "^8.5.10", + "pestphp/pest-dev-tools": "^2.12.0" }, "type": "library", - "extra": { - "pest": { - "plugins": [ - "Pest\\Parallel\\Plugin" - ] - } - }, "autoload": { "files": [ - "src/Autoload.php", - "build/RunnerWorker.php", - "build/BaseRunner.php" + "src/Autoload.php" ], "psr-4": { - "Pest\\Parallel\\": "src/" - }, - "exclude-from-classmap": [ - "ParaTest\\Runners\\PHPUnit\\Worker\\RunnerWorker", - "ParaTest\\Runners\\PHPUnit\\BaseRunner" - ] + "Pest\\Livewire\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "The Pest Parallel Plugin", + "description": "The Pest Livewire Plugin", "keywords": [ "framework", - "parallel", + "livewire", "pest", "php", "plugin", @@ -13383,39 +13315,23 @@ "unit" ], "support": { - "source": "https://github.com/pestphp/pest-plugin-parallel/tree/v1.2.1" + "source": "https://github.com/pestphp/pest-plugin-livewire/tree/v2.1.0" }, "funding": [ { "url": "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66BYDWAT92N6L", "type": "custom" }, - { - "url": "https://github.com/lukeraymonddowning", - "type": "github" - }, { "url": "https://github.com/nunomaduro", "type": "github" }, - { - "url": "https://github.com/octoper", - "type": "github" - }, - { - "url": "https://github.com/olivernybroe", - "type": "github" - }, - { - "url": "https://github.com/owenvoke", - "type": "github" - }, { "url": "https://www.patreon.com/nunomaduro", "type": "patreon" } ], - "time": "2023-02-03T13:01:17+00:00" + "time": "2023-07-20T16:28:21+00:00" }, { "name": "phar-io/manifest", @@ -13593,6 +13509,63 @@ }, "time": "2022-05-03T12:16:34+00:00" }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "5.3.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.3", + "webmozart/assert": "^1.9.1" + }, + "require-dev": { + "mockery/mockery": "~1.3.2", + "psalm/phar": "^4.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "account@ijaap.nl" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" + }, + "time": "2021-10-19T17:43:47+00:00" + }, { "name": "phpmyadmin/sql-parser", "version": "5.8.0", @@ -13744,16 +13717,16 @@ }, { "name": "phpunit/php-code-coverage", - "version": "9.2.26", + "version": "10.1.7", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "443bc6912c9bd5b409254a40f4b0f4ced7c80ea1" + "reference": "355324ca4980b8916c18b9db29f3ef484078f26e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/443bc6912c9bd5b409254a40f4b0f4ced7c80ea1", - "reference": "443bc6912c9bd5b409254a40f4b0f4ced7c80ea1", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/355324ca4980b8916c18b9db29f3ef484078f26e", + "reference": "355324ca4980b8916c18b9db29f3ef484078f26e", "shasum": "" }, "require": { @@ -13761,18 +13734,18 @@ "ext-libxml": "*", "ext-xmlwriter": "*", "nikic/php-parser": "^4.15", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", + "php": ">=8.1", + "phpunit/php-file-iterator": "^4.0", + "phpunit/php-text-template": "^3.0", + "sebastian/code-unit-reverse-lookup": "^3.0", + "sebastian/complexity": "^3.0", + "sebastian/environment": "^6.0", + "sebastian/lines-of-code": "^2.0", + "sebastian/version": "^4.0", "theseer/tokenizer": "^1.2.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.1" }, "suggest": { "ext-pcov": "PHP extension that provides line coverage", @@ -13781,7 +13754,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.2-dev" + "dev-main": "10.1-dev" } }, "autoload": { @@ -13809,7 +13782,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.26" + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.7" }, "funding": [ { @@ -13817,32 +13791,32 @@ "type": "github" } ], - "time": "2023-03-06T12:58:08+00:00" + "time": "2023-10-04T15:34:17+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "3.0.6", + "version": "4.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c", + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -13869,7 +13843,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" + "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0" }, "funding": [ { @@ -13877,28 +13852,28 @@ "type": "github" } ], - "time": "2021-12-02T12:48:52+00:00" + "time": "2023-08-31T06:24:48+00:00" }, { "name": "phpunit/php-invoker", - "version": "3.1.1", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "suggest": { "ext-pcntl": "*" @@ -13906,7 +13881,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -13932,7 +13907,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0" }, "funding": [ { @@ -13940,32 +13915,32 @@ "type": "github" } ], - "time": "2020-09-28T05:58:55+00:00" + "time": "2023-02-03T06:56:09+00:00" }, { "name": "phpunit/php-text-template", - "version": "2.0.4", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -13991,7 +13966,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1" }, "funding": [ { @@ -13999,32 +13975,32 @@ "type": "github" } ], - "time": "2020-10-26T05:33:50+00:00" + "time": "2023-08-31T14:07:24+00:00" }, { "name": "phpunit/php-timer", - "version": "5.0.3", + "version": "6.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d", + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -14050,7 +14026,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" + "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0" }, "funding": [ { @@ -14058,24 +14034,23 @@ "type": "github" } ], - "time": "2020-10-26T13:16:10+00:00" + "time": "2023-02-03T06:57:52+00:00" }, { "name": "phpunit/phpunit", - "version": "9.6.8", + "version": "10.4.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "17d621b3aff84d0c8b62539e269e87d8d5baa76e" + "reference": "9784e877e3700de37475545bdbdce8383ff53d25" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/17d621b3aff84d0c8b62539e269e87d8d5baa76e", - "reference": "17d621b3aff84d0c8b62539e269e87d8d5baa76e", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9784e877e3700de37475545bdbdce8383ff53d25", + "reference": "9784e877e3700de37475545bdbdce8383ff53d25", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.3.1 || ^2", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", @@ -14085,27 +14060,26 @@ "myclabs/deep-copy": "^1.10.1", "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", - "php": ">=7.3", - "phpunit/php-code-coverage": "^9.2.13", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.8", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.5", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^3.2", - "sebastian/version": "^3.0.2" + "php": ">=8.1", + "phpunit/php-code-coverage": "^10.1.5", + "phpunit/php-file-iterator": "^4.0", + "phpunit/php-invoker": "^4.0", + "phpunit/php-text-template": "^3.0", + "phpunit/php-timer": "^6.0", + "sebastian/cli-parser": "^2.0", + "sebastian/code-unit": "^2.0", + "sebastian/comparator": "^5.0", + "sebastian/diff": "^5.0", + "sebastian/environment": "^6.0", + "sebastian/exporter": "^5.1", + "sebastian/global-state": "^6.0.1", + "sebastian/object-enumerator": "^5.0", + "sebastian/recursion-context": "^5.0", + "sebastian/type": "^4.0", + "sebastian/version": "^4.0" }, "suggest": { - "ext-soap": "To be able to generate mocks based on WSDL files", - "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" + "ext-soap": "To be able to generate mocks based on WSDL files" }, "bin": [ "phpunit" @@ -14113,7 +14087,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.6-dev" + "dev-main": "10.4-dev" } }, "autoload": { @@ -14145,7 +14119,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.8" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.4.0" }, "funding": [ { @@ -14161,7 +14135,7 @@ "type": "tidelift" } ], - "time": "2023-05-11T05:14:45+00:00" + "time": "2023-10-06T03:41:22+00:00" }, { "name": "pimple/pimple", @@ -14216,30 +14190,77 @@ }, "time": "2021-10-28T11:13:42+00:00" }, + { + "name": "plannr/laravel-fast-refresh-database", + "version": "v1.1.1", + "source": { + "type": "git", + "url": "https://github.com/PlannrCrm/laravel-fast-refresh-database.git", + "reference": "f5055bd4406ea896be77530e9c0e61c47ea2d42d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PlannrCrm/laravel-fast-refresh-database/zipball/f5055bd4406ea896be77530e9c0e61c47ea2d42d", + "reference": "f5055bd4406ea896be77530e9c0e61c47ea2d42d", + "shasum": "" + }, + "require": { + "php": "^8.1", + "symfony/process": "^5.0|^6.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.13", + "orchestra/testbench": "^7.17", + "pestphp/pest": "^1.22", + "symfony/var-dumper": "^6.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Plannr\\Laravel\\FastRefreshDatabase\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Sam Carré", + "email": "29132017+Sammyjo20@users.noreply.github.com" + } + ], + "description": "Refresh your database faster than you've ever seen before 🚀", + "support": { + "issues": "https://github.com/PlannrCrm/laravel-fast-refresh-database/issues", + "source": "https://github.com/PlannrCrm/laravel-fast-refresh-database/tree/v1.1.1" + }, + "time": "2023-09-19T12:18:50+00:00" + }, { "name": "sebastian/cli-parser", - "version": "1.0.1", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" + "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/efdc130dbbbb8ef0b545a994fd811725c5282cae", + "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-main": "2.0-dev" } }, "autoload": { @@ -14262,7 +14283,7 @@ "homepage": "https://github.com/sebastianbergmann/cli-parser", "support": { "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" + "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.0" }, "funding": [ { @@ -14270,32 +14291,32 @@ "type": "github" } ], - "time": "2020-09-28T06:08:49+00:00" + "time": "2023-02-03T06:58:15+00:00" }, { "name": "sebastian/code-unit", - "version": "1.0.8", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/a81fee9eef0b7a76af11d121767abc44c104e503", + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-main": "2.0-dev" } }, "autoload": { @@ -14318,7 +14339,7 @@ "homepage": "https://github.com/sebastianbergmann/code-unit", "support": { "issues": "https://github.com/sebastianbergmann/code-unit/issues", - "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" + "source": "https://github.com/sebastianbergmann/code-unit/tree/2.0.0" }, "funding": [ { @@ -14326,32 +14347,32 @@ "type": "github" } ], - "time": "2020-10-26T13:08:54+00:00" + "time": "2023-02-03T06:58:43+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -14373,7 +14394,7 @@ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", "support": { "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/3.0.0" }, "funding": [ { @@ -14381,34 +14402,36 @@ "type": "github" } ], - "time": "2020-09-28T05:30:19+00:00" + "time": "2023-02-03T06:59:15+00:00" }, { "name": "sebastian/comparator", - "version": "4.0.8", + "version": "5.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a" + "reference": "2db5010a484d53ebf536087a70b4a5423c102372" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2db5010a484d53ebf536087a70b4a5423c102372", + "reference": "2db5010a484d53ebf536087a70b4a5423c102372", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" + "ext-dom": "*", + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/diff": "^5.0", + "sebastian/exporter": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -14447,7 +14470,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" + "security": "https://github.com/sebastianbergmann/comparator/security/policy", + "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.1" }, "funding": [ { @@ -14455,33 +14479,33 @@ "type": "github" } ], - "time": "2022-09-14T12:41:17+00:00" + "time": "2023-08-14T13:18:12+00:00" }, { "name": "sebastian/complexity", - "version": "2.0.2", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + "reference": "68cfb347a44871f01e33ab0ef8215966432f6957" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68cfb347a44871f01e33ab0ef8215966432f6957", + "reference": "68cfb347a44871f01e33ab0ef8215966432f6957", "shasum": "" }, "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" + "nikic/php-parser": "^4.10", + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.1-dev" } }, "autoload": { @@ -14504,7 +14528,8 @@ "homepage": "https://github.com/sebastianbergmann/complexity", "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/3.1.0" }, "funding": [ { @@ -14512,33 +14537,33 @@ "type": "github" } ], - "time": "2020-10-26T15:52:27+00:00" + "time": "2023-09-28T11:50:59+00:00" }, { "name": "sebastian/diff", - "version": "4.0.5", + "version": "5.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131" + "reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/74be17022044ebaaecfdf0c5cd504fc9cd5a7131", - "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/912dc2fbe3e3c1e7873313cc801b100b6c68c87b", + "reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3", + "phpunit/phpunit": "^10.0", "symfony/process": "^4.2 || ^5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -14570,7 +14595,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.5" + "security": "https://github.com/sebastianbergmann/diff/security/policy", + "source": "https://github.com/sebastianbergmann/diff/tree/5.0.3" }, "funding": [ { @@ -14578,27 +14604,27 @@ "type": "github" } ], - "time": "2023-05-07T05:35:17+00:00" + "time": "2023-05-01T07:48:21+00:00" }, { "name": "sebastian/environment", - "version": "5.1.5", + "version": "6.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed" + "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", - "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/43c751b41d74f96cbbd4e07b7aec9675651e2951", + "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "suggest": { "ext-posix": "*" @@ -14606,7 +14632,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.1-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -14625,7 +14651,7 @@ } ], "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", + "homepage": "https://github.com/sebastianbergmann/environment", "keywords": [ "Xdebug", "environment", @@ -14633,7 +14659,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5" + "security": "https://github.com/sebastianbergmann/environment/security/policy", + "source": "https://github.com/sebastianbergmann/environment/tree/6.0.1" }, "funding": [ { @@ -14641,34 +14668,34 @@ "type": "github" } ], - "time": "2023-02-03T06:03:51+00:00" + "time": "2023-04-11T05:39:26+00:00" }, { "name": "sebastian/exporter", - "version": "4.0.5", + "version": "5.1.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d" + "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", - "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/64f51654862e0f5e318db7e9dcc2292c63cdbddc", + "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/recursion-context": "^5.0" }, "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -14710,7 +14737,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5" + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.1" }, "funding": [ { @@ -14718,38 +14746,35 @@ "type": "github" } ], - "time": "2022-09-14T06:03:37+00:00" + "time": "2023-09-24T13:22:09+00:00" }, { "name": "sebastian/global-state", - "version": "5.0.5", + "version": "6.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" + "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", - "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/7ea9ead78f6d380d2a667864c132c2f7b83055e4", + "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" + "php": ">=8.1", + "sebastian/object-reflector": "^3.0", + "sebastian/recursion-context": "^5.0" }, "require-dev": { "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -14774,7 +14799,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" + "security": "https://github.com/sebastianbergmann/global-state/security/policy", + "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.1" }, "funding": [ { @@ -14782,33 +14808,33 @@ "type": "github" } ], - "time": "2022-02-14T08:28:10+00:00" + "time": "2023-07-19T07:19:23+00:00" }, { "name": "sebastian/lines-of-code", - "version": "1.0.3", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + "reference": "649e40d279e243d985aa8fb6e74dd5bb28dc185d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/649e40d279e243d985aa8fb6e74dd5bb28dc185d", + "reference": "649e40d279e243d985aa8fb6e74dd5bb28dc185d", "shasum": "" }, "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" + "nikic/php-parser": "^4.10", + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-main": "2.0-dev" } }, "autoload": { @@ -14831,7 +14857,8 @@ "homepage": "https://github.com/sebastianbergmann/lines-of-code", "support": { "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.1" }, "funding": [ { @@ -14839,34 +14866,34 @@ "type": "github" } ], - "time": "2020-11-28T06:42:11+00:00" + "time": "2023-08-31T09:25:50+00:00" }, { "name": "sebastian/object-enumerator", - "version": "4.0.4", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/202d0e344a580d7f7d04b3fafce6933e59dae906", + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" + "php": ">=8.1", + "sebastian/object-reflector": "^3.0", + "sebastian/recursion-context": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -14888,7 +14915,7 @@ "homepage": "https://github.com/sebastianbergmann/object-enumerator/", "support": { "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/5.0.0" }, "funding": [ { @@ -14896,32 +14923,32 @@ "type": "github" } ], - "time": "2020-10-26T13:12:34+00:00" + "time": "2023-02-03T07:08:32+00:00" }, { "name": "sebastian/object-reflector", - "version": "2.0.4", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/24ed13d98130f0e7122df55d06c5c4942a577957", + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -14943,7 +14970,7 @@ "homepage": "https://github.com/sebastianbergmann/object-reflector/", "support": { "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" + "source": "https://github.com/sebastianbergmann/object-reflector/tree/3.0.0" }, "funding": [ { @@ -14951,32 +14978,32 @@ "type": "github" } ], - "time": "2020-10-26T13:14:26+00:00" + "time": "2023-02-03T07:06:18+00:00" }, { "name": "sebastian/recursion-context", - "version": "4.0.5", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" + "reference": "05909fb5bc7df4c52992396d0116aed689f93712" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", - "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/05909fb5bc7df4c52992396d0116aed689f93712", + "reference": "05909fb5bc7df4c52992396d0116aed689f93712", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -15006,62 +15033,7 @@ "homepage": "https://github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T06:07:39+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.0" }, "funding": [ { @@ -15069,32 +15041,32 @@ "type": "github" } ], - "time": "2020-09-28T06:45:17+00:00" + "time": "2023-02-03T07:05:40+00:00" }, { "name": "sebastian/type", - "version": "3.2.1", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7" + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", - "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf", + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.5" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -15117,7 +15089,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/3.2.1" + "source": "https://github.com/sebastianbergmann/type/tree/4.0.0" }, "funding": [ { @@ -15125,29 +15097,29 @@ "type": "github" } ], - "time": "2023-02-03T06:13:03+00:00" + "time": "2023-02-03T07:10:45+00:00" }, { "name": "sebastian/version", - "version": "3.0.2", + "version": "4.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17", + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -15170,7 +15142,7 @@ "homepage": "https://github.com/sebastianbergmann/version", "support": { "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" + "source": "https://github.com/sebastianbergmann/version/tree/4.0.1" }, "funding": [ { @@ -15178,7 +15150,7 @@ "type": "github" } ], - "time": "2020-09-28T06:39:44+00:00" + "time": "2023-02-07T11:34:05+00:00" }, { "name": "spatie/laravel-ray", @@ -15391,6 +15363,78 @@ ], "time": "2023-09-18T10:36:07+00:00" }, + { + "name": "spatie/x-ray", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/spatie/x-ray.git", + "reference": "249f03073665fb793262e64deac9a9aadae04683" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/x-ray/zipball/249f03073665fb793262e64deac9a9aadae04683", + "reference": "249f03073665fb793262e64deac9a9aadae04683", + "shasum": "" + }, + "require": { + "permafrost-dev/code-snippets": "^1.2.0", + "permafrost-dev/php-code-search": "^1.10.5", + "php": "^8.0", + "symfony/console": "^5.3|^6.0", + "symfony/finder": "^5.3|^6.0", + "symfony/yaml": "^5.3|^6.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.92", + "phpunit/phpunit": "^9.5", + "spatie/phpunit-snapshot-assertions": "^4.2" + }, + "bin": [ + "bin/x-ray" + ], + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\XRay\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Patrick Organ", + "email": "patrick@permafrost.dev", + "homepage": "https://permafrost.dev", + "role": "Developer" + } + ], + "description": "Quickly scan source code for calls to Ray", + "homepage": "https://github.com/spatie/x-ray", + "keywords": [ + "permafrost", + "ray", + "search", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/x-ray/issues", + "source": "https://github.com/spatie/x-ray/tree/1.1.1" + }, + "funding": [ + { + "url": "https://github.com/sponsors/permafrost-dev", + "type": "github" + }, + { + "url": "https://github.com/sponsors/spatie", + "type": "github" + } + ], + "time": "2022-04-15T23:47:26+00:00" + }, { "name": "symfony/polyfill-iconv", "version": "v1.28.0", @@ -15608,6 +15652,65 @@ ], "time": "2023-07-31T07:08:24+00:00" }, + { + "name": "ta-tikoma/phpunit-architecture-test", + "version": "0.7.4", + "source": { + "type": "git", + "url": "https://github.com/ta-tikoma/phpunit-architecture-test.git", + "reference": "abe1f8a5f4635e7cbe0a8a37d6b8d20c687af0f2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ta-tikoma/phpunit-architecture-test/zipball/abe1f8a5f4635e7cbe0a8a37d6b8d20c687af0f2", + "reference": "abe1f8a5f4635e7cbe0a8a37d6b8d20c687af0f2", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.15.4", + "php": "^8.1.0", + "phpdocumentor/reflection-docblock": "^5.3.0", + "phpunit/phpunit": "^10.1.1", + "symfony/finder": "^6.2.7" + }, + "require-dev": { + "laravel/pint": "^1.9.0", + "phpstan/phpstan": "^1.10.13" + }, + "type": "library", + "autoload": { + "psr-4": { + "PHPUnit\\Architecture\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ni Shi", + "email": "futik0ma011@gmail.com" + }, + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Methods for testing application architecture", + "keywords": [ + "architecture", + "phpunit", + "stucture", + "test", + "testing" + ], + "support": { + "issues": "https://github.com/ta-tikoma/phpunit-architecture-test/issues", + "source": "https://github.com/ta-tikoma/phpunit-architecture-test/tree/0.7.4" + }, + "time": "2023-08-03T06:50:14+00:00" + }, { "name": "theseer/tokenizer", "version": "1.2.1", @@ -15869,7 +15972,8 @@ "aliases": [], "minimum-stability": "dev", "stability-flags": { - "amirami/localizator": 15 + "amirami/localizator": 15, + "nunomaduro/larastan": 20 }, "prefer-stable": true, "prefer-lowest": false, diff --git a/config/markdown.php b/config/markdown.php new file mode 100644 index 000000000..5e35d6408 --- /dev/null +++ b/config/markdown.php @@ -0,0 +1,6 @@ + 'escape', + 'allow_unsafe_links' => false, +]; diff --git a/database/seeders/IdentitySeeder.php b/database/seeders/IdentitySeeder.php index ac79df77d..b47a28f9d 100644 --- a/database/seeders/IdentitySeeder.php +++ b/database/seeders/IdentitySeeder.php @@ -36,7 +36,8 @@ public function run() ]); } } else { - echo "Seeder file wasn't found, using default values\r\n"; + $this->command->info(__(":seeder seed file wasn't found, using default values.", ['seeder' => class_basename($this)])); + $identities = [ [ 'name' => __('Children (under 15)'), diff --git a/database/seeders/ResourceCollectionSeeder.php b/database/seeders/ResourceCollectionSeeder.php index a11b00039..e33ae9a09 100644 --- a/database/seeders/ResourceCollectionSeeder.php +++ b/database/seeders/ResourceCollectionSeeder.php @@ -44,7 +44,7 @@ public function run() ]); } } else { - echo "Seeder file wasn't found, using default values\r\n"; + $this->command->info(__(":seeder seed file wasn't found, using default values.", ['seeder' => class_basename($this)])); $resourceCollections = [ [ 'title' => 'The Accessible Canada Act', diff --git a/database/seeders/ResourceSeeder.php b/database/seeders/ResourceSeeder.php index 9dc6a9dc5..0a82a66f8 100644 --- a/database/seeders/ResourceSeeder.php +++ b/database/seeders/ResourceSeeder.php @@ -67,7 +67,7 @@ public function run() ]); } } else { - echo "Seeder file wasn't found, using default values\r\n"; + $this->command->info("Seeder file wasn't found, using default values."); $resources = [ [ 'title' => ['en' => 'The Accessible Canada Act, Accessibility Regulations and Standards'], diff --git a/database/seeders/TopicSeeder.php b/database/seeders/TopicSeeder.php index 553e3f011..538a22906 100644 --- a/database/seeders/TopicSeeder.php +++ b/database/seeders/TopicSeeder.php @@ -39,7 +39,7 @@ public function run() ]); } } else { - echo "Seeder file wasn't found, using default values\r\n"; + $this->command->info("Seeder file wasn't found, using default values."); $topics = [ __('Accessible consultation'), __('Intersectional outreach'), diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 2166df6f5..0650c3e05 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -1,34 +1,34 @@ - - - - ./tests/Unit - - - ./tests/Feature - - - - - ./app - - - ./app/strings.php - - - - - - - - - - - - - + + + + ./tests/Unit + + + ./tests/Feature + + + + + + + + + + + + + + + + + + + + ./app + + + ./app/strings.php + + diff --git a/resources/lang/en.json b/resources/lang/en.json index def438ebb..5aa6e2ced 100644 --- a/resources/lang/en.json +++ b/resources/lang/en.json @@ -92,6 +92,7 @@ ":projectable has approved an estimate for their project **:project**.": ":projectable has approved an estimate for their project **:project**.", ":projectable has requested an estimate for their project **:project**.": ":projectable has requested an estimate for their project **:project**.", ":role Invitation": ":role Invitation", + ":seeder seed file wasn't found, using default values.": ":seeder seed file wasn't found, using default values.", ":service": ":service", ":signLanguage (with :locale)": ":signLanguage (with :locale)", ":title results": ":title results", @@ -1669,10 +1670,6 @@ "using the matching service to match the regulated organization with a group of people who meet the criteria.": "using the matching service to match the regulated organization with a group of people who meet the criteria.", "Verify your email": "Verify your email", "Video": "Video", - "Video for community organizations.": "Video for community organizations.", - "Video for individuals.": "Video for individuals.", - "Video for regulated organizations.": "Video for regulated organizations.", - "Video for training participants.": "Video for training participants.", "Video recording": "Video recording", "View": "View", "View page": "View page", diff --git a/resources/lang/fr.json b/resources/lang/fr.json index 9f90ac3fc..2a33cac5b 100644 --- a/resources/lang/fr.json +++ b/resources/lang/fr.json @@ -92,6 +92,7 @@ ":projectable has approved an estimate for their project **:project**.": ":projectable a approuvé un devis pour son projet **:project**.", ":projectable has requested an estimate for their project **:project**.": ":projectable a demandé un devis pour son projet **:project**.", ":role Invitation": "Invitation à devenir :role", + ":seeder seed file wasn't found, using default values.": "", ":service": ":service", ":signLanguage (with :locale)": ":signLanguage (avec :locale)", ":title results": ":title results", @@ -1669,10 +1670,6 @@ "using the matching service to match the regulated organization with a group of people who meet the criteria.": "en utilisant le service de jumelage afin de mettre en relation l'organisme réglementé avec un groupe de personnes qui répondent à ses critères.", "Verify your email": "Vérifiez votre adresse courriel", "Video": "Vidéo", - "Video for community organizations.": "Vidéo pour les organisations communautaires.", - "Video for individuals.": "Vidéo pour les individus.", - "Video for regulated organizations.": "Vidéo pour les organisations réglementées.", - "Video for training participants.": "Video for training participants.", "Video recording": "Enregistrement vidéo", "View": "Afficher", "View page": "Voir la page", diff --git a/resources/lang/lsq.json b/resources/lang/lsq.json index 9f90ac3fc..2a33cac5b 100644 --- a/resources/lang/lsq.json +++ b/resources/lang/lsq.json @@ -92,6 +92,7 @@ ":projectable has approved an estimate for their project **:project**.": ":projectable a approuvé un devis pour son projet **:project**.", ":projectable has requested an estimate for their project **:project**.": ":projectable a demandé un devis pour son projet **:project**.", ":role Invitation": "Invitation à devenir :role", + ":seeder seed file wasn't found, using default values.": "", ":service": ":service", ":signLanguage (with :locale)": ":signLanguage (avec :locale)", ":title results": ":title results", @@ -1669,10 +1670,6 @@ "using the matching service to match the regulated organization with a group of people who meet the criteria.": "en utilisant le service de jumelage afin de mettre en relation l'organisme réglementé avec un groupe de personnes qui répondent à ses critères.", "Verify your email": "Vérifiez votre adresse courriel", "Video": "Vidéo", - "Video for community organizations.": "Vidéo pour les organisations communautaires.", - "Video for individuals.": "Vidéo pour les individus.", - "Video for regulated organizations.": "Vidéo pour les organisations réglementées.", - "Video for training participants.": "Video for training participants.", "Video recording": "Enregistrement vidéo", "View": "Afficher", "View page": "Voir la page", diff --git a/resources/views/components/card/course.blade.php b/resources/views/components/card/course.blade.php index 96ef442e4..c79c732c8 100644 --- a/resources/views/components/card/course.blade.php +++ b/resources/views/components/card/course.blade.php @@ -8,6 +8,6 @@

{{ __('Training') }}

@if ($model->introduction) - {!! Str::markdown($model->introduction, SAFE_MARKDOWN_OPTIONS) !!} + {!! Str::markdown($model->introduction, config('markdown')) !!} @endif diff --git a/resources/views/components/card/resource-collection.blade.php b/resources/views/components/card/resource-collection.blade.php index 468694840..985117ddd 100644 --- a/resources/views/components/card/resource-collection.blade.php +++ b/resources/views/components/card/resource-collection.blade.php @@ -8,6 +8,6 @@

{{ __('Collection') }}

@isset($model->description) - {!! Str::markdown($model->description, SAFE_MARKDOWN_OPTIONS) !!} + {!! Str::markdown($model->description, config('markdown')) !!} @endisset diff --git a/resources/views/components/card/resource.blade.php b/resources/views/components/card/resource.blade.php index ab386bbfd..82ed8e4d1 100644 --- a/resources/views/components/card/resource.blade.php +++ b/resources/views/components/card/resource.blade.php @@ -17,6 +17,6 @@ {{ implode(', ', Arr::map(array_keys($model->getTranslations('url')), fn($code) => get_language_exonym($code, null, true, true))) }}

@if ($model->summary) - {!! Str::markdown($model->summary, SAFE_MARKDOWN_OPTIONS) !!} + {!! Str::markdown($model->summary, config('markdown')) !!} @endif diff --git a/resources/views/courses/show.blade.php b/resources/views/courses/show.blade.php index e4f70498d..f4d9061e4 100644 --- a/resources/views/courses/show.blade.php +++ b/resources/views/courses/show.blade.php @@ -46,7 +46,7 @@ @endif @if ($course->introduction) - {!! Str::markdown($course->introduction, SAFE_MARKDOWN_OPTIONS) !!} + {!! Str::markdown($course->introduction, config('markdown')) !!} @endif
diff --git a/resources/views/livewire/collection-resources.blade.php b/resources/views/livewire/collection-resources.blade.php index 40e1e4948..fde50158a 100644 --- a/resources/views/livewire/collection-resources.blade.php +++ b/resources/views/livewire/collection-resources.blade.php @@ -3,7 +3,7 @@ -
+
@@ -13,7 +13,7 @@ @if ($resourceCollection->description) - {!! Str::markdown($resourceCollection->description, SAFE_MARKDOWN_OPTIONS) !!} + {!! Str::markdown($resourceCollection->description, config('markdown')) !!} @endif
diff --git a/resources/views/resources/show.blade.php b/resources/views/resources/show.blade.php index a8ca11601..8ba79fef8 100644 --- a/resources/views/resources/show.blade.php +++ b/resources/views/resources/show.blade.php @@ -67,7 +67,7 @@ @if ($resource->summary)

{{ __('Summary') }}

- {!! Str::markdown($resource->summary, SAFE_MARKDOWN_OPTIONS) !!} + {!! Str::markdown($resource->summary, config('markdown')) !!} @endif

{{ __('Links to resource') }}

@@ -87,7 +87,7 @@ @endcan
@if ($resource->resourceCollections->count()) -
+

{{ __('Collections this resource appears in') }}

diff --git a/tests/Browser/HomeTest.php b/tests/Browser/HomeTest.php index 7ee692a42..0594bdffb 100644 --- a/tests/Browser/HomeTest.php +++ b/tests/Browser/HomeTest.php @@ -1,22 +1,10 @@ browse(function (Browser $browser) { - $browser->visit('/en/') - ->assertSee('The Accessibility Exchange'); - }); - } -} +test('basic example', function () { + $this->browse(function (Browser $browser) { + $browser->visit('/en/') + ->assertSee('The Accessibility Exchange'); + }); +}); diff --git a/tests/Datasets/UpdateEngagementRequestValidationErrors.php b/tests/Datasets/UpdateEngagementRequestValidationErrors.php index 202b1b01d..44bf07d51 100644 --- a/tests/Datasets/UpdateEngagementRequestValidationErrors.php +++ b/tests/Datasets/UpdateEngagementRequestValidationErrors.php @@ -173,7 +173,7 @@ 'weekday_availabilities.saturday' => __('validation.required', ['attribute' => __('availability for Saturday')]), 'weekday_availabilities.sunday' => __('validation.required', ['attribute' => __('availability for Sunday')]), ], - [ + fn () => [ 'format' => EngagementFormat::Interviews->value, 'meetingType' => MeetingType::InPerson->value, ], @@ -197,7 +197,7 @@ 'weekday_availabilities.saturday' => __('validation.in', ['attribute' => __('availability for Saturday')]), 'weekday_availabilities.sunday' => __('validation.in', ['attribute' => __('availability for Sunday')]), ], - [ + fn () => [ 'format' => EngagementFormat::Interviews->value, 'meetingType' => MeetingType::InPerson->value, ], diff --git a/tests/Feature/AuthenticationTest.php b/tests/Feature/AuthenticationTest.php index 729db160b..b714a6eab 100644 --- a/tests/Feature/AuthenticationTest.php +++ b/tests/Feature/AuthenticationTest.php @@ -2,60 +2,57 @@ use App\Models\User; -test('login screen can be rendered', function () { - $response = $this->get(localized_route('login')); +use function Pest\Laravel\actingAs; +use function Pest\Laravel\assertAuthenticatedAs; +use function Pest\Laravel\assertGuest; +use function Pest\Laravel\get; +use function Pest\Laravel\post; + +beforeEach(function () { + $this->user = User::factory()->create(); + $this->mixedCaseEmailUser = User::factory()->create(['email' => 'John.Smith@example.com']); +}); - $response->assertOk(); +test('login screen can be rendered', function () { + get(localized_route('login'))->assertOk(); }); test('users can authenticate using the login screen', function () { - $user = User::factory()->create(); - - $response = $this->post(localized_route('login-store'), [ - 'email' => $user->email, + post(localized_route('login-store'), [ + 'email' => $this->user->email, 'password' => 'password', - ]); + ]) + ->assertRedirect(localized_route('dashboard')); - $this->assertAuthenticatedAs($user); - $response->assertRedirect(localized_route('dashboard')); + assertAuthenticatedAs($this->user); Auth::logout(); - $mixedCaseEmailUser = User::factory()->create(['email' => 'John.Smith@example.com']); - - $response = $this->post(localized_route('login-store'), [ - 'email' => 'John.Smith@example.com', + post(localized_route('login-store'), [ + 'email' => $this->mixedCaseEmailUser->email, 'password' => 'password', - ]); + ])->assertRedirect(localized_route('dashboard')); - $this->assertAuthenticatedAs($mixedCaseEmailUser); - $response->assertRedirect(localized_route('dashboard')); + assertAuthenticatedAs($this->mixedCaseEmailUser); }); test('users can sign out', function () { - $user = User::factory()->create(); - - $response = $this->actingAs($user)->post(localized_route('logout')); - - $this->assertGuest(); + actingAs($this->user)->post(localized_route('logout')); + assertGuest(); }); test('users can quickly exit', function () { - $user = User::factory()->create(); + actingAs($this->user)->post(localized_route('exit')) + ->assertRedirect('https://weather.com'); - $response = $this->actingAs($user)->post(localized_route('exit')); - - $this->assertGuest(); - $response->assertRedirect('https://weather.com'); + assertGuest(); }); test('users can not authenticate with invalid password', function () { - $user = User::factory()->create(); - - $this->post(localized_route('login-store'), [ - 'email' => $user->email, + post(localized_route('login-store'), [ + 'email' => $this->user->email, 'password' => 'wrong-password', ]); - $this->assertGuest(); + assertGuest(); }); diff --git a/tests/Feature/CollaborationPreferencesTest.php b/tests/Feature/CollaborationPreferencesTest.php index 503045adc..4e43df994 100644 --- a/tests/Feature/CollaborationPreferencesTest.php +++ b/tests/Feature/CollaborationPreferencesTest.php @@ -4,9 +4,6 @@ use App\Models\Organization; use App\Models\RegulatedOrganization; use App\Models\User; -use Illuminate\Foundation\Testing\RefreshDatabase; - -uses(RefreshDatabase::class); test('individual user can access collaboration preferences', function () { $user = User::factory()->create([ diff --git a/tests/Feature/DashboardTest.php b/tests/Feature/DashboardTest.php index 111485579..273222e80 100644 --- a/tests/Feature/DashboardTest.php +++ b/tests/Feature/DashboardTest.php @@ -3,9 +3,6 @@ use App\Models\Organization; use App\Models\RegulatedOrganization; use App\Models\User; -use Illuminate\Foundation\Testing\RefreshDatabase; - -uses(RefreshDatabase::class); test('individual user can access dashboard', function () { $user = User::factory()->create([ diff --git a/tests/Feature/EmailVerificationTest.php b/tests/Feature/EmailVerificationTest.php index 6fae8804f..335143da6 100644 --- a/tests/Feature/EmailVerificationTest.php +++ b/tests/Feature/EmailVerificationTest.php @@ -32,7 +32,7 @@ $response = $this->actingAs($user)->get($verificationUrl); Event::assertDispatched(Verified::class); - $this->assertTrue($user->fresh()->hasVerifiedEmail()); + expect($user->fresh()->hasVerifiedEmail())->toBeTrue(); $response->assertRedirect(localized_route('dashboard', ['verified' => 1])); }); @@ -50,5 +50,5 @@ $this->actingAs($user)->get($verificationUrl); - $this->assertFalse($user->fresh()->hasVerifiedEmail()); + expect($user->fresh()->hasVerifiedEmail())->toBeFalse(); }); diff --git a/tests/Feature/EngagementContractorsAndParticipantsTest.php b/tests/Feature/EngagementContractorsAndParticipantsTest.php index 44b9643ec..c94823548 100644 --- a/tests/Feature/EngagementContractorsAndParticipantsTest.php +++ b/tests/Feature/EngagementContractorsAndParticipantsTest.php @@ -782,10 +782,12 @@ $response->assertOk(); $response->assertSeeText('Save and back to confirm access needs', false); + $audioDescriptions = AccessSupport::where('name->en', 'Audio description for visuals')->first(); + // update access needs settings $response = $this->actingAs($this->participantUser) ->from(localized_route('settings.edit-access-needs')) - ->put(localized_route('settings.update-access-needs'), ['return_to_engagement' => $this->engagement->id, 'meeting_access_needs' => [7]]); // 7 corresponds to "Audio descriptions for visuals" + ->put(localized_route('settings.update-access-needs'), ['return_to_engagement' => $this->engagement->id, 'meeting_access_needs' => [$audioDescriptions->id]]); $response->assertSessionHasNoErrors(); $response->assertRedirect(localized_route('engagements.confirm-access-needs', $this->engagement)); diff --git a/tests/Feature/EngagementTest.php b/tests/Feature/EngagementTest.php index 733fd027d..09e08f6a1 100644 --- a/tests/Feature/EngagementTest.php +++ b/tests/Feature/EngagementTest.php @@ -402,7 +402,7 @@ $response->assertForbidden(); }); -test('update engagement request validation errors', function ($state, $errors, $modifiers = []) { +test('update engagement request validation errors', function (array $state, array $errors, array $modifiers = []) { $user = User::factory()->create(['context' => UserContext::RegulatedOrganization->value]); $regulatedOrganization = RegulatedOrganization::factory() ->hasAttached($user, ['role' => 'admin']) @@ -445,7 +445,7 @@ $response->assertSessionHasErrors($errors); })->with('updateEngagementRequestValidationErrors'); -test('update engagement selection criteria request validation errors', function ($state, $errors, $without = []) { +test('update engagement selection criteria request validation errors', function (array $state, array $errors, array $without = []) { $user = User::factory()->create(['context' => UserContext::RegulatedOrganization->value]); $regulatedOrganization = RegulatedOrganization::factory() ->hasAttached($user, ['role' => 'admin']) diff --git a/tests/Feature/IdentityTest.php b/tests/Feature/IdentityTest.php index 755942fc5..bd254b386 100644 --- a/tests/Feature/IdentityTest.php +++ b/tests/Feature/IdentityTest.php @@ -6,9 +6,10 @@ use App\Models\Identity; use App\Models\User; use Database\Seeders\IdentitySeeder; -use function Pest\Livewire\livewire; use Spatie\LaravelOptions\Options; +use function Pest\Livewire\livewire; + beforeEach(function () { $this->seed(IdentitySeeder::class); }); diff --git a/tests/Feature/IndividualTest.php b/tests/Feature/IndividualTest.php index 01c406701..ab96ddccd 100644 --- a/tests/Feature/IndividualTest.php +++ b/tests/Feature/IndividualTest.php @@ -129,7 +129,7 @@ expect(flash()->message)->toBe($expected['message']($individual)); })->with('individualRoleChange'); -test('save roles request validation errors', function ($data, $errors) { +test('save roles request validation errors', function (array $data, array $errors) { $individual = Individual::factory() ->for(User::factory()) ->create(['roles' => null]); @@ -216,7 +216,7 @@ $response->assertSessionHasNoErrors(); $individual = $individual->fresh(); - $this->assertTrue($individual->checkStatus('published')); + expect($individual->checkStatus('published'))->toBeTrue(); $response = $this->actingAs($user)->followingRedirects()->put(localized_route('individuals.update', $individual), [ 'name' => $user->name, @@ -242,7 +242,7 @@ ]); $response->assertSessionHasNoErrors(); $individual = $individual->fresh(); - $this->assertFalse($individual->checkStatus('published')); + expect($individual->checkStatus('published'))->toBeFalse(); $response = $this->actingAs($user)->put(localized_route('individuals.update', $individual), [ 'name' => $user->name, @@ -706,7 +706,7 @@ $response->assertForbidden(); }); -test('update individual request validation errors', function ($state, $errors, $without = []) { +test('update individual request validation errors', function ($state, array $errors, $without = []) { $roles = [ IndividualRole::CommunityConnector, IndividualRole::ConsultationParticipant, @@ -885,7 +885,7 @@ $individual = $individual->fresh(); - $this->assertTrue($individual->checkStatus('published')); + expect($individual->checkStatus('published'))->toBeTrue(); }); test('individual pages can be unpublished', function () { @@ -900,7 +900,7 @@ $individual = $individual->fresh(); - $this->assertTrue($individual->checkStatus('draft')); + expect($individual->checkStatus('draft'))->toBeTrue(); }); test('individual pages cannot be published by other users', function () { @@ -917,7 +917,7 @@ $response->assertForbidden(); $individual = $individual->fresh(); - $this->assertTrue($individual->checkStatus('draft')); + expect($individual->checkStatus('draft'))->toBeTrue(); }); test('individual isPublishable()', function ($expected, $data, $userData, $connections = []) { diff --git a/tests/Feature/InterpretationTest.php b/tests/Feature/InterpretationTest.php index eb39063f0..205df3c3d 100644 --- a/tests/Feature/InterpretationTest.php +++ b/tests/Feature/InterpretationTest.php @@ -3,11 +3,9 @@ use App\Filament\Resources\InterpretationResource; use App\Models\Interpretation; use App\Models\User; -use Illuminate\Foundation\Testing\RefreshDatabase; use Illuminate\Support\Str; -use function Pest\Livewire\livewire; -uses(RefreshDatabase::class); +use function Pest\Livewire\livewire; test('namespace generated from route', function () { $interpretation = Interpretation::factory()->create([ diff --git a/tests/Feature/InvitationTest.php b/tests/Feature/InvitationTest.php index f2ca08798..531b2691f 100644 --- a/tests/Feature/InvitationTest.php +++ b/tests/Feature/InvitationTest.php @@ -6,10 +6,9 @@ use App\Models\Invitation; use App\Models\RegulatedOrganization; use App\Models\User; -use Illuminate\Foundation\Testing\RefreshDatabase; use Illuminate\Support\Facades\Mail; -uses(RefreshDatabase::class); +use function Pest\Laravel\{actingAs}; test('create invitation', function () { Mail::fake(); @@ -38,7 +37,7 @@ $response->assertRedirect(localized_route('settings.edit-roles-and-permissions')); }); -test('create invitation validation errors', function ($data, $errors) { +test('create invitation validation errors', function ($data, array $errors) { Mail::fake(); $user = User::factory()->create([ @@ -63,9 +62,9 @@ 'invitationable_type' => get_class($regulatedOrganization), ], $data); - $response = $this->actingAs($user)->post(localized_route('invitations.create'), $postData); - - $response->assertSessionHasErrors($errors); + actingAs($user) + ->post(localized_route('invitations.create'), $postData) + ->assertSessionHasErrors($errors); Mail::assertNothingOutgoing(); })->with('storeInvitationRequestValidationErrors'); @@ -86,7 +85,7 @@ expect(flash()->class)->toBe('success'); expect(flash()->message)->toBe(__('invitation.accept_invitation_succeeded', ['invitationable' => $regulatedOrganization->name])); - $this->assertTrue($regulatedOrganization->fresh()->hasUserWithEmail($user->email)); + expect($regulatedOrganization->fresh()->hasUserWithEmail($user->email))->toBeTrue(); $response->assertRedirect(localized_route('dashboard')); }); diff --git a/tests/Feature/Livewire/AddEngagementConnectorTest.php b/tests/Feature/Livewire/AddEngagementConnectorTest.php index 61bd9d30d..3c344c048 100644 --- a/tests/Feature/Livewire/AddEngagementConnectorTest.php +++ b/tests/Feature/Livewire/AddEngagementConnectorTest.php @@ -12,6 +12,8 @@ use App\Notifications\OrganizationalContractorInvited; use Spatie\LaravelOptions\Options; +use function Pest\Livewire\livewire; + test('unregistered individual can be invited to be an engagement’s community connector', function () { $engagement = Engagement::factory()->create(['recruitment' => 'connector']); @@ -29,7 +31,7 @@ $this->actingAs($user); - $this->livewire(AddEngagementConnector::class, [ + livewire(AddEngagementConnector::class, [ 'engagement' => $engagement, 'who' => 'individual', 'email' => 'connector@example.com', @@ -72,7 +74,7 @@ $this->actingAs($user); - $this->livewire(AddEngagementConnector::class, [ + livewire(AddEngagementConnector::class, [ 'engagement' => $engagement, 'who' => 'individual', 'email' => $individualUser->email, @@ -84,7 +86,7 @@ $individual->update(['roles' => ['connector']]); $individual = $individual->fresh(); - $this->livewire(AddEngagementConnector::class, [ + livewire(AddEngagementConnector::class, [ 'engagement' => $engagement, 'who' => 'individual', 'email' => $individualUser->email, @@ -148,7 +150,7 @@ $this->actingAs($user); - $this->livewire(AddEngagementConnector::class, [ + livewire(AddEngagementConnector::class, [ 'engagement' => $engagement, 'who' => 'organization', ]) @@ -168,7 +170,7 @@ 'email' => $organization->contact_person_email, ]); - $this->livewire(AddEngagementConnector::class, [ + livewire(AddEngagementConnector::class, [ 'engagement' => $engagement, 'who' => 'organization', 'organization' => $organization->id, @@ -181,7 +183,7 @@ $consultantInvitation->delete(); - $this->livewire(AddEngagementConnector::class, [ + livewire(AddEngagementConnector::class, [ 'engagement' => $engagement, 'who' => 'organization', 'organization' => $organization->id, @@ -288,7 +290,7 @@ $engagement = Engagement::factory()->create(['recruitment' => 'connector']); $this->actingAs($fro->users->first()); - $this->livewire(AddEngagementConnector::class, [ + livewire(AddEngagementConnector::class, [ 'engagement' => $engagement, 'who' => 'organization', ]) diff --git a/tests/Feature/Livewire/AllProjectsTest.php b/tests/Feature/Livewire/AllProjectsTest.php index c67fb41ca..b8e0b80a9 100644 --- a/tests/Feature/Livewire/AllProjectsTest.php +++ b/tests/Feature/Livewire/AllProjectsTest.php @@ -15,10 +15,12 @@ use Database\Seeders\ImpactSeeder; use Database\Seeders\SectorSeeder; +use function Pest\Livewire\livewire; + test('test searchQuery property change', function () { $sampleProjectName = 'Sample Project'; Project::factory()->create(['name->en' => $sampleProjectName]); - $allProjects = $this->livewire(AllProjects::class, ['searchQuery' => '']) + $allProjects = livewire(AllProjects::class, ['searchQuery' => '']) ->assertSee($sampleProjectName) ->set('searchQuery', 'Test') ->assertDontSee($sampleProjectName) @@ -48,7 +50,7 @@ 'end_date' => Carbon::now()->subDays(5), ]); - $allProjects = $this->livewire(AllProjects::class, ['statuses' => []]); + $allProjects = livewire(AllProjects::class, ['statuses' => []]); $allProjects->assertSee($upComingProjectName); $allProjects->assertSee($inProgressProjectName); $allProjects->assertSee($completedProjectName); @@ -107,7 +109,7 @@ 'project_id' => $projectSeekingOrganizations->id, ]); - $allProjects = $this->livewire(AllProjects::class, ['seekings' => []]); + $allProjects = livewire(AllProjects::class, ['seekings' => []]); $allProjects->assertSee($projectSeekingParticipantsName); $allProjects->assertSee($projectSeekingConnectorsName); $allProjects->assertSee($projectSeekingOrganizationsName); @@ -150,7 +152,7 @@ 'projectable_type' => 'App\Models\RegulatedOrganization', ]); - $allProjects = $this->livewire(AllProjects::class, ['initiators' => []]); + $allProjects = livewire(AllProjects::class, ['initiators' => []]); $allProjects->assertSee($communityOrganizationProjectName); $allProjects->assertSee($regulatedOrganizationProjectName); @@ -194,7 +196,7 @@ ]); $matchingStrategySeekingCognitiveDisabilityExperience->identities()->attach($disabilityTypeCognitive->id); - $allProjects = $this->livewire(AllProjects::class, ['seekingGroups' => []]); + $allProjects = livewire(AllProjects::class, ['seekingGroups' => []]); $allProjects->assertSee($projectSeekingDeafExperienceName); $allProjects->assertSee($projectSeekingCognitiveDisabilityExperienceName); @@ -250,7 +252,7 @@ 'meeting_types' => 'phone', ]); - $allProjects = $this->livewire(AllProjects::class, ['meetingTypes' => []]); + $allProjects = livewire(AllProjects::class, ['meetingTypes' => []]); $allProjects->assertSee($inpersonInterviewProjectName); $allProjects->assertSee($virtualWorkshopProjectName); $allProjects->assertSee($phoneFocusGroupProjectName); @@ -289,7 +291,7 @@ ]); $volunteerEngagement = Engagement::factory()->create(['project_id' => $volunteerProject->id, 'paid' => false]); - $allProjects = $this->livewire(AllProjects::class, ['compensations' => []]); + $allProjects = livewire(AllProjects::class, ['compensations' => []]); $allProjects->assertSee($paidProjectName); $allProjects->assertSee($volunteerProjectName); @@ -326,7 +328,7 @@ 'projectable_id' => $parliamentaryOrganization->id, ]); - $allProjects = $this->livewire(AllProjects::class, ['sectors' => []]); + $allProjects = livewire(AllProjects::class, ['sectors' => []]); $allProjects->assertSee($regulatedPrivateProjectName); $allProjects->assertSee($parliamentaryProjectName); @@ -359,7 +361,7 @@ ]); $communicationImpactProject->impacts()->attach($communicationImpact->id); - $allProjects = $this->livewire(AllProjects::class, ['impacts' => []]); + $allProjects = livewire(AllProjects::class, ['impacts' => []]); $allProjects->assertSee($employmentImpactProjectName); $allProjects->assertSee($communicationImpactProjectName); @@ -389,7 +391,7 @@ ]); $connectorEngagement = Engagement::factory()->create(['project_id' => $connectorProject->id, 'recruitment' => 'connector']); - $allProjects = $this->livewire(AllProjects::class, ['recruitmentMethods' => []]); + $allProjects = livewire(AllProjects::class, ['recruitmentMethods' => []]); $allProjects->assertSee($openCallProjectName); $allProjects->assertSee($connectorProjectName); @@ -430,7 +432,7 @@ ], ]); - $allProjects = $this->livewire(AllProjects::class, ['locations' => []]); + $allProjects = livewire(AllProjects::class, ['locations' => []]); $allProjects->assertSee($regionSpecificProjectName); $allProjects->assertSee($locationSpecificProjectName); @@ -463,7 +465,7 @@ ]); $openCallEngagement = Engagement::factory()->create(['project_id' => $openCallProject->id, 'recruitment' => 'open-call']); - $allProjects = $this->livewire(AllProjects::class, ['statuses' => ['upcoming'], 'recruitmentMethods' => ['connector']]); + $allProjects = livewire(AllProjects::class, ['statuses' => ['upcoming'], 'recruitmentMethods' => ['connector']]); $allProjects->assertSee($upComingProjectName); $allProjects->assertDontSee($openCallProjectName); diff --git a/tests/Feature/Livewire/EmailResultsTest.php b/tests/Feature/Livewire/EmailResultsTest.php index c705a819b..ada99b99b 100644 --- a/tests/Feature/Livewire/EmailResultsTest.php +++ b/tests/Feature/Livewire/EmailResultsTest.php @@ -7,11 +7,13 @@ use App\Models\User; use Illuminate\Support\Facades\Mail; +use function Pest\Livewire\livewire; + test('user can send their succeed test results to themselves', function () { $quiz = Quiz::factory()->for(Course::factory()->create())->create(); $user = User::factory()->create(); $this->actingAs($user); - $emailResults = $this->livewire(EmailResults::class, ['quiz' => $quiz]); + $emailResults = livewire(EmailResults::class, ['quiz' => $quiz]); Mail::fake(); $emailResults->emit('send'); Mail::assertSent(QuizResults::class); diff --git a/tests/Feature/Livewire/EstimateApproverTest.php b/tests/Feature/Livewire/EstimateApproverTest.php index 2ec811851..22a0dcb15 100644 --- a/tests/Feature/Livewire/EstimateApproverTest.php +++ b/tests/Feature/Livewire/EstimateApproverTest.php @@ -5,13 +5,15 @@ use App\Models\User; use App\Notifications\EstimateApproved; +use function Pest\Livewire\livewire; + test('unauthorized user cannot approve an estimate', function () { $project = Project::factory()->create(); $user = User::factory()->create(); $this->actingAs($user); - $this->livewire(EstimateApprover::class, ['model' => $project]) + livewire(EstimateApprover::class, ['model' => $project]) ->call('updateStatus') ->assertForbidden(); @@ -31,7 +33,7 @@ $this->actingAs($user); - $this->livewire(EstimateApprover::class, ['model' => $project]) + livewire(EstimateApprover::class, ['model' => $project]) ->call('updateStatus'); expect($project->fresh()->estimate_approved_at)->toBeTruthy(); diff --git a/tests/Feature/Livewire/EstimateRequesterTest.php b/tests/Feature/Livewire/EstimateRequesterTest.php index c31190fdf..ebce709b9 100644 --- a/tests/Feature/Livewire/EstimateRequesterTest.php +++ b/tests/Feature/Livewire/EstimateRequesterTest.php @@ -5,13 +5,15 @@ use App\Models\User; use App\Notifications\EstimateRequested; +use function Pest\Livewire\livewire; + test('unauthorized user cannot request an estimate', function () { $project = Project::factory()->create(); $user = User::factory()->create(); $this->actingAs($user); - $this->livewire(EstimateRequester::class, ['model' => $project]) + livewire(EstimateRequester::class, ['model' => $project]) ->call('updateStatus') ->assertForbidden(); @@ -31,7 +33,7 @@ $this->actingAs($user); - $this->livewire(EstimateRequester::class, ['model' => $project]) + livewire(EstimateRequester::class, ['model' => $project]) ->call('updateStatus'); expect($project->fresh()->estimate_requested_at)->toBeTruthy(); diff --git a/tests/Feature/Livewire/EstimatesAndAgreementsTest.php b/tests/Feature/Livewire/EstimatesAndAgreementsTest.php index 8255b04a2..4ede046c7 100644 --- a/tests/Feature/Livewire/EstimatesAndAgreementsTest.php +++ b/tests/Feature/Livewire/EstimatesAndAgreementsTest.php @@ -6,6 +6,7 @@ use App\Models\User; use App\Notifications\AgreementReceived; use App\Notifications\EstimateReturned; + use function Pest\Livewire\livewire; test('estimates and agreements appear in expected order', function () { diff --git a/tests/Feature/Livewire/ExperiencesTest.php b/tests/Feature/Livewire/ExperiencesTest.php index 295eddb37..05e91ef31 100644 --- a/tests/Feature/Livewire/ExperiencesTest.php +++ b/tests/Feature/Livewire/ExperiencesTest.php @@ -2,14 +2,16 @@ use App\Http\Livewire\Experiences; +use function Pest\Livewire\livewire; + test('experiences can be added', function () { - $this->livewire(Experiences::class, ['experiences' => []]) + livewire(Experiences::class, ['experiences' => []]) ->call('addExperience') ->assertSet('experiences', [['title' => '', 'organization' => '', 'start_year' => '', 'end_year' => '', 'current' => false]]); }); test('group can have no more than 20 experiences', function () { - $this->livewire(Experiences::class, ['experiences' => [ + livewire(Experiences::class, ['experiences' => [ ['title' => 'Some job', 'organization' => 'Some place', 'start_year' => '2020', 'end_year' => '2022', 'current' => false], ['title' => 'Some job', 'organization' => 'Some place', 'start_year' => '2020', 'end_year' => '2022', 'current' => false], ['title' => 'Some job', 'organization' => 'Some place', 'start_year' => '2020', 'end_year' => '2022', 'current' => false], @@ -36,7 +38,7 @@ }); test('experiences can be removed', function () { - $this->livewire(Experiences::class, ['experiences' => [ + livewire(Experiences::class, ['experiences' => [ ['title' => 'Some job', 'organization' => 'Some place', 'start_year' => '2020', 'end_year' => '2022', 'current' => false], ]]) ->call('removeExperience', 0) diff --git a/tests/Feature/Livewire/LanguagePickerTest.php b/tests/Feature/Livewire/LanguagePickerTest.php index 8262cf56b..9da2de348 100644 --- a/tests/Feature/Livewire/LanguagePickerTest.php +++ b/tests/Feature/Livewire/LanguagePickerTest.php @@ -3,20 +3,22 @@ use App\Http\Livewire\LanguagePicker; use Spatie\LaravelOptions\Options; +use function Pest\Livewire\livewire; + test('language can be added', function () { - $this->livewire(LanguagePicker::class, ['languages' => ['en'], 'availableLanguages' => Options::forArray(['en', 'fr', 'es', 'de', 'pt'])->toArray()]) + livewire(LanguagePicker::class, ['languages' => ['en'], 'availableLanguages' => Options::forArray(['en', 'fr', 'es', 'de', 'pt'])->toArray()]) ->call('addLanguage') ->assertSet('languages', ['en', '']); }); test('no more than five languages can be added', function () { - $this->livewire(LanguagePicker::class, ['languages' => ['en', 'fr', 'es', 'de', 'pt'], 'availableLanguages' => Options::forArray(['en', 'fr', 'es', 'de', 'pt'])->toArray()]) + livewire(LanguagePicker::class, ['languages' => ['en', 'fr', 'es', 'de', 'pt'], 'availableLanguages' => Options::forArray(['en', 'fr', 'es', 'de', 'pt'])->toArray()]) ->call('addLanguage') ->assertCount('languages', 5); }); test('language can be removed', function () { - $this->livewire(LanguagePicker::class, ['languages' => ['en'], 'availableLanguages' => Options::forArray(['en', 'fr', 'es', 'de', 'pt'])->toArray()]) + livewire(LanguagePicker::class, ['languages' => ['en'], 'availableLanguages' => Options::forArray(['en', 'fr', 'es', 'de', 'pt'])->toArray()]) ->call('removeLanguage', 0) ->assertSet('languages', []); }); diff --git a/tests/Feature/Livewire/LocationsTest.php b/tests/Feature/Livewire/LocationsTest.php index 0d095f239..4633a4b52 100644 --- a/tests/Feature/Livewire/LocationsTest.php +++ b/tests/Feature/Livewire/LocationsTest.php @@ -2,10 +2,12 @@ use App\Enums\ProvinceOrTerritory; use App\Http\Livewire\Locations; -use function Pest\Faker\faker; + +use function Pest\Faker\fake; +use function Pest\Livewire\livewire; test('locations can be added', function () { - $this->livewire(Locations::class, ['locations' => []]) + livewire(Locations::class, ['locations' => []]) ->call('addLocation') ->assertSet('locations', [['region' => '', 'locality' => '']]); }); @@ -15,18 +17,18 @@ for ($i = 0; $i < 10; $i++) { $locations[] = [ - 'region' => faker()->randomElement(array_column(ProvinceOrTerritory::cases(), 'value')), - 'locality' => faker()->city, + 'region' => fake()->randomElement(array_column(ProvinceOrTerritory::cases(), 'value')), + 'locality' => fake()->city, ]; } - $this->livewire(Locations::class, ['locations' => $locations]) + livewire(Locations::class, ['locations' => $locations]) ->call('addLocation') ->assertCount('locations', 10); }); test('location can be removed', function () { - $this->livewire(Locations::class, ['locations' => [['region' => 'NS', 'locality' => 'Halifax']]]) + livewire(Locations::class, ['locations' => [['region' => 'NS', 'locality' => 'Halifax']]]) ->call('removeLocation', 0) ->assertSet('locations', []); }); diff --git a/tests/Feature/Livewire/ManageAccountsTest.php b/tests/Feature/Livewire/ManageAccountsTest.php index 3997286f5..1d84a81dd 100644 --- a/tests/Feature/Livewire/ManageAccountsTest.php +++ b/tests/Feature/Livewire/ManageAccountsTest.php @@ -9,6 +9,7 @@ use App\Notifications\AccountApproved; use App\Notifications\AccountSuspended; use App\Notifications\AccountUnsuspended; + use function Pest\Livewire\livewire; beforeEach(function () { diff --git a/tests/Feature/Livewire/ManageEngagementConnectorTest.php b/tests/Feature/Livewire/ManageEngagementConnectorTest.php index a45d4146d..99bac57e2 100644 --- a/tests/Feature/Livewire/ManageEngagementConnectorTest.php +++ b/tests/Feature/Livewire/ManageEngagementConnectorTest.php @@ -6,6 +6,8 @@ use App\Models\Organization; use App\Models\User; +use function Pest\Livewire\livewire; + test('engagement consultant management page can be rendered and connector can be sought', function () { $engagement = Engagement::factory()->create(['recruitment' => 'connector']); @@ -21,7 +23,7 @@ $response = $this->actingAs($user)->get(localized_route('engagements.manage-connector', $engagement)); $response->assertOk(); - $this->livewire(ManageEngagementConnector::class, ['engagement' => $engagement]) + livewire(ManageEngagementConnector::class, ['engagement' => $engagement]) ->assertSet('project', $engagement->project) ->assertSet('seeking_community_connector', false) ->set('seeking_community_connector', true) @@ -58,7 +60,7 @@ $this->actingAs($regulatedOrganizationUser); - $this->livewire(ManageEngagementConnector::class, [ + livewire(ManageEngagementConnector::class, [ 'engagement' => $engagement, ]) ->assertSee($individual->name) @@ -86,7 +88,7 @@ $engagement->connector()->associate($individual); - $this->livewire(ManageEngagementConnector::class, [ + livewire(ManageEngagementConnector::class, [ 'engagement' => $engagement, ]) ->assertSee($individual->name) @@ -112,7 +114,7 @@ $engagement->organizationalConnector()->associate($organization); - $this->livewire(ManageEngagementConnector::class, [ + livewire(ManageEngagementConnector::class, [ 'engagement' => $engagement, ]) ->assertSee($organization->name) diff --git a/tests/Feature/Livewire/ModuleContentTest.php b/tests/Feature/Livewire/ModuleContentTest.php index 5d72da9a9..50aca1427 100644 --- a/tests/Feature/Livewire/ModuleContentTest.php +++ b/tests/Feature/Livewire/ModuleContentTest.php @@ -6,15 +6,17 @@ use App\Models\User; use Illuminate\Support\Facades\DB; +use function Pest\Livewire\livewire; + test('ModuleContent mounts with status about module for the user', function () { $user = User::factory()->create(); $this->actingAs($user); $module = Module::factory()->for(Course::factory()->create())->create(); - $moduleContent = $this->livewire(ModuleContent::class, ['module' => $module]); - $this->assertEquals($moduleContent->user, $user); - $this->assertEquals($moduleContent->module, $module); - $this->assertEquals($moduleContent->startedContentAt, null); - $this->assertEquals($moduleContent->finishedContentAt, null); + $moduleContent = livewire(ModuleContent::class, ['module' => $module]); + expect($user)->toEqual($moduleContent->user); + expect($module)->toEqual($moduleContent->module); + expect(null)->toEqual($moduleContent->startedContentAt); + expect(null)->toEqual($moduleContent->finishedContentAt); }); test('On player start, intermediate table values are set', function () { @@ -22,7 +24,7 @@ $user = User::factory()->create(); $this->actingAs($user); $module = Module::factory()->for($course)->create(); - $moduleContent = $this->livewire(ModuleContent::class, ['module' => $module]); + $moduleContent = livewire(ModuleContent::class, ['module' => $module]); $this->assertDatabaseMissing('course_user', [ 'user_id' => $user->id, @@ -32,7 +34,7 @@ 'user_id' => $user->id, 'module_id' => $module->id, ]); - $this->assertNull(DB::table('module_user')->where('user_id', $user->id)->first()->started_content_at ?? null); + expect(DB::table('module_user')->where('user_id', $user->id)->first()->started_content_at ?? null)->toBeNull(); $moduleContent->emit('onPlayerStart'); $this->assertDatabaseHas('course_user', [ 'user_id' => $user->id, @@ -49,18 +51,18 @@ $user = User::factory()->create(); $this->actingAs($user); $module = Module::factory()->for($course)->create(); - $moduleContent = $this->livewire(ModuleContent::class, ['module' => $module]); + $moduleContent = livewire(ModuleContent::class, ['module' => $module]); $moduleContent->emit('onPlayerStart'); $this->assertDatabaseCount('course_user', 1); $this->assertDatabaseCount('module_user', 1); - $this->assertNull(DB::table('module_user')->where([['module_id', $module->id], ['user_id', $user->id]])->first()->finished_content_at); + expect(DB::table('module_user')->where([['module_id', $module->id], ['user_id', $user->id]])->first()->finished_content_at)->toBeNull(); $moduleContent->emit('onPlayerEnd'); $this->assertDatabaseCount('course_user', 1); $this->assertDatabaseCount('module_user', 1); - $this->assertNotNull(DB::table('module_user')->where([['module_id', $module->id], ['user_id', $user->id]])->first()->finished_content_at); + expect(DB::table('module_user')->where([['module_id', $module->id], ['user_id', $user->id]])->first()->finished_content_at)->not->toBeNull(); }); test('Users have to complete all the modules in a course to finish a course', function () { @@ -69,12 +71,12 @@ $this->actingAs($user); $firstModule = Module::factory()->for($course)->create(); $secondModule = Module::factory()->for($course)->create(); - $moduleContent = $this->livewire(ModuleContent::class, ['module' => $firstModule]); + $moduleContent = livewire(ModuleContent::class, ['module' => $firstModule]); $moduleContent->emit('onPlayerStart'); $moduleContent->emit('onPlayerEnd'); - $moduleContent = $this->livewire(ModuleContent::class, ['module' => $secondModule]); + $moduleContent = livewire(ModuleContent::class, ['module' => $secondModule]); $moduleContent->emit('onPlayerStart'); $moduleContent->emit('onPlayerEnd'); - $this->assertTrue($course->isFinished($user)); + expect($course->isFinished($user))->toBeTrue(); }); diff --git a/tests/Feature/Livewire/PromptTest.php b/tests/Feature/Livewire/PromptTest.php index 8b7b38c13..61e531701 100644 --- a/tests/Feature/Livewire/PromptTest.php +++ b/tests/Feature/Livewire/PromptTest.php @@ -1,13 +1,9 @@ $user, 'modelPath' => $modelPath, 'heading' => $heading, @@ -52,7 +48,7 @@ $actionUrl = 'http://example.com'; $level = 4; - $component = Livewire::test(Prompt::class, [ + $component = livewire(Prompt::class, [ 'model' => $user, 'modelPath' => $modelPath, 'level' => $level, @@ -76,7 +72,7 @@ $actionLabel = 'Complete action'; $actionUrl = 'http://example.com'; - $component = Livewire::test(Prompt::class, [ + $component = livewire(Prompt::class, [ 'model' => $user, 'modelPath' => $modelPath, 'heading' => $heading, diff --git a/tests/Feature/Livewire/ResourcesTest.php b/tests/Feature/Livewire/ResourcesTest.php index ad38cf75d..b3529d4af 100644 --- a/tests/Feature/Livewire/ResourcesTest.php +++ b/tests/Feature/Livewire/ResourcesTest.php @@ -13,6 +13,8 @@ use Database\Seeders\SectorSeeder; use Database\Seeders\TopicSeeder; +use function Pest\Livewire\livewire; + beforeEach(function () { $this->seed(ContentTypeSeeder::class); $this->seed(ImpactSeeder::class); @@ -46,7 +48,7 @@ }); test('test searchQuery property change', function () { - $allResources = $this->livewire(AllResources::class, ['searchQuery' => '']) + $allResources = livewire(AllResources::class, ['searchQuery' => '']) ->assertSee($this->sampleResource->title) ->set('searchQuery', 'Test') ->assertDontSee($this->sampleResource->title) @@ -57,7 +59,7 @@ ->set('searchQuery', 'EXAMPLE') ->assertSee($this->sampleResource->title); - $collectionResources = $this->livewire(CollectionResources::class, ['resourceCollection' => $this->resourceCollection, 'searchQuery' => '']) + $collectionResources = livewire(CollectionResources::class, ['resourceCollection' => $this->resourceCollection, 'searchQuery' => '']) ->assertSee($this->sampleResource->title) ->set('searchQuery', 'Test') ->assertDontSee($this->sampleResource->title) @@ -70,7 +72,7 @@ }); test('test sectors property change', function () { - $allResources = $this->livewire(AllResources::class, ['sectors' => []]) + $allResources = livewire(AllResources::class, ['sectors' => []]) ->assertSee($this->sampleResource->title) ->assertSee($this->otherResource->title) ->set('sectors', [$this->sector->id]) @@ -80,7 +82,7 @@ ->assertSee($this->sampleResource->title) ->assertSee($this->otherResource->title); - $collectionResources = $this->livewire(CollectionResources::class, ['resourceCollection' => $this->resourceCollection, 'sectors' => []]) + $collectionResources = livewire(CollectionResources::class, ['resourceCollection' => $this->resourceCollection, 'sectors' => []]) ->assertSee($this->sampleResource->title) ->assertSee($this->otherResource->title) ->set('sectors', [$this->sector->id]) @@ -92,14 +94,14 @@ }); test('test impacts property change', function () { - $allResources = $this->livewire(AllResources::class, ['impacts' => []]) + $allResources = livewire(AllResources::class, ['impacts' => []]) ->assertSee($this->sampleResource->title) ->assertSee($this->otherResource->title) ->set('impacts', [$this->impact->id]) ->assertSee($this->sampleResource->title) ->assertDontSee($this->otherResource->title); - $collectionResources = $this->livewire(CollectionResources::class, ['resourceCollection' => $this->resourceCollection, 'impacts' => []]) + $collectionResources = livewire(CollectionResources::class, ['resourceCollection' => $this->resourceCollection, 'impacts' => []]) ->assertSee($this->sampleResource->title) ->assertSee($this->otherResource->title) ->set('impacts', [$this->impact->id]) @@ -108,14 +110,14 @@ }); test('test topics property change', function () { - $allResources = $this->livewire(AllResources::class, ['topics' => []]) + $allResources = livewire(AllResources::class, ['topics' => []]) ->assertSee($this->sampleResource->title) ->assertSee($this->otherResource->title) ->set('topics', [$this->topic->id]) ->assertSee($this->sampleResource->title) ->assertDontSee($this->otherResource->title); - $collectionResources = $this->livewire(CollectionResources::class, ['resourceCollection' => $this->resourceCollection, 'topics' => []]) + $collectionResources = livewire(CollectionResources::class, ['resourceCollection' => $this->resourceCollection, 'topics' => []]) ->assertSee($this->sampleResource->title) ->assertSee($this->otherResource->title) ->set('topics', [$this->topic->id]) @@ -124,14 +126,14 @@ }); test('test contentTypes property change', function () { - $allResources = $this->livewire(AllResources::class, ['contentTypes' => []]) + $allResources = livewire(AllResources::class, ['contentTypes' => []]) ->assertSee($this->sampleResource->title) ->assertSee($this->otherResource->title) ->set('contentTypes', [$this->contentType->id]) ->assertSee($this->sampleResource->title) ->assertDontSee($this->otherResource->title); - $collectionResources = $this->livewire(CollectionResources::class, ['resourceCollection' => $this->resourceCollection, 'contentTypes' => []]) + $collectionResources = livewire(CollectionResources::class, ['resourceCollection' => $this->resourceCollection, 'contentTypes' => []]) ->assertSee($this->sampleResource->title) ->assertSee($this->otherResource->title) ->set('contentTypes', [$this->contentType->id]) @@ -140,14 +142,14 @@ }); test('test phases property change', function () { - $allResources = $this->livewire(AllResources::class, ['phases' => []]) + $allResources = livewire(AllResources::class, ['phases' => []]) ->assertSee($this->sampleResource->title) ->assertSee($this->otherResource->title) ->set('phases', ['design']) ->assertSee($this->sampleResource->title) ->assertDontSee($this->otherResource->title); - $collectionResources = $this->livewire(CollectionResources::class, ['resourceCollection' => $this->resourceCollection, 'phases' => []]) + $collectionResources = livewire(CollectionResources::class, ['resourceCollection' => $this->resourceCollection, 'phases' => []]) ->assertSee($this->sampleResource->title) ->assertSee($this->otherResource->title) ->set('phases', ['design']) @@ -156,14 +158,14 @@ }); test('test languages property change', function () { - $allResources = $this->livewire(AllResources::class, ['languages' => []]) + $allResources = livewire(AllResources::class, ['languages' => []]) ->assertSee($this->sampleResource->title) ->assertSee($this->otherResource->title) ->set('languages', ['asl']) ->assertSee($this->sampleResource->title) ->assertDontSee($this->otherResource->title); - $collectionResources = $this->livewire(CollectionResources::class, ['resourceCollection' => $this->resourceCollection, 'languages' => []]) + $collectionResources = livewire(CollectionResources::class, ['resourceCollection' => $this->resourceCollection, 'languages' => []]) ->assertSee($this->sampleResource->title) ->assertSee($this->otherResource->title) ->set('languages', ['asl']) diff --git a/tests/Feature/Livewire/TeamTrainingsTest.php b/tests/Feature/Livewire/TeamTrainingsTest.php index 7ba244360..a1530dbd9 100644 --- a/tests/Feature/Livewire/TeamTrainingsTest.php +++ b/tests/Feature/Livewire/TeamTrainingsTest.php @@ -2,14 +2,16 @@ use App\Http\Livewire\TeamTrainings; +use function Pest\Livewire\livewire; + test('training can be added', function () { - $this->livewire(TeamTrainings::class, ['trainings' => [['name' => 'Basic First Aid', 'date' => '2022-04-05', 'trainer_name' => 'Example Training Ltd.', 'trainer_url' => 'https://example.com']]]) + livewire(TeamTrainings::class, ['trainings' => [['name' => 'Basic First Aid', 'date' => '2022-04-05', 'trainer_name' => 'Example Training Ltd.', 'trainer_url' => 'https://example.com']]]) ->call('addTraining') ->assertSet('trainings', [['name' => 'Basic First Aid', 'date' => '2022-04-05', 'trainer_name' => 'Example Training Ltd.', 'trainer_url' => 'https://example.com'], ['name' => '', 'date' => '', 'trainer_name' => '', 'trainer_url' => '']]); }); test('no more than five trainings can be added', function () { - $this->livewire(TeamTrainings::class, ['trainings' => [ + livewire(TeamTrainings::class, ['trainings' => [ ['name' => 'Basic First Aid', 'date' => '2022-04-05', 'trainer_name' => 'Example Training Ltd.', 'trainer_url' => 'https://example.com'], ['name' => 'Basic First Aid', 'date' => '2022-04-05', 'trainer_name' => 'Example Training Ltd.', 'trainer_url' => 'https://example.com'], ['name' => 'Basic First Aid', 'date' => '2022-04-05', 'trainer_name' => 'Example Training Ltd.', 'trainer_url' => 'https://example.com'], @@ -21,7 +23,7 @@ }); test('training can be removed', function () { - $this->livewire(TeamTrainings::class, ['trainings' => [['name' => 'Basic First Aid', 'date' => '2022-04-05', 'trainer_name' => 'Example Training Ltd.', 'trainer_url' => 'https://example.com']]]) + livewire(TeamTrainings::class, ['trainings' => [['name' => 'Basic First Aid', 'date' => '2022-04-05', 'trainer_name' => 'Example Training Ltd.', 'trainer_url' => 'https://example.com']]]) ->call('removeTraining', 0) ->assertSet('trainings', []); }); diff --git a/tests/Feature/Livewire/ThemeSwitcherTest.php b/tests/Feature/Livewire/ThemeSwitcherTest.php index c799cc0e7..cab86e850 100644 --- a/tests/Feature/Livewire/ThemeSwitcherTest.php +++ b/tests/Feature/Livewire/ThemeSwitcherTest.php @@ -3,11 +3,13 @@ use App\Http\Livewire\ThemeSwitcher; use App\Models\User; +use function Pest\Livewire\livewire; + test('setting theme updates current user preference', function () { $user = User::factory()->create(); $this->actingAs($user); - $this->livewire(ThemeSwitcher::class) + livewire(ThemeSwitcher::class) ->call('setTheme', 'dark') ->assertSet('theme', 'dark'); diff --git a/tests/Feature/Livewire/WebLinksTest.php b/tests/Feature/Livewire/WebLinksTest.php index 3288a4b35..35d0748fd 100644 --- a/tests/Feature/Livewire/WebLinksTest.php +++ b/tests/Feature/Livewire/WebLinksTest.php @@ -2,8 +2,10 @@ use App\Http\Livewire\WebLinks; +use function Pest\Livewire\livewire; + test('link can be added', function () { - $this->livewire(WebLinks::class, ['links' => []]) + livewire(WebLinks::class, ['links' => []]) ->assertSee(__('Add link')) ->assertDontSee(__('Add another link')) ->call('addLink') @@ -13,7 +15,7 @@ }); test('no more than five links can be added', function () { - $this->livewire(WebLinks::class, ['links' => [ + livewire(WebLinks::class, ['links' => [ ['title' => 'My blog 1', 'url' => 'https://my1st.blog'], ['title' => 'My blog 2', 'url' => 'https://my2nd.blog'], ['title' => 'My blog 3', 'url' => 'https://my3rd.blog'], @@ -26,7 +28,7 @@ }); test('link can be removed', function () { - $this->livewire(WebLinks::class, ['links' => [['title' => 'My blog', 'url' => 'https://my.blog']]]) + livewire(WebLinks::class, ['links' => [['title' => 'My blog', 'url' => 'https://my.blog']]]) ->call('removeLink', 0) ->assertSet('links', []); }); diff --git a/tests/Feature/MatchingStrategyTest.php b/tests/Feature/MatchingStrategyTest.php index f1b088ac6..fa49c8b29 100644 --- a/tests/Feature/MatchingStrategyTest.php +++ b/tests/Feature/MatchingStrategyTest.php @@ -122,7 +122,7 @@ expect($matchingStrategy->location_type)->toBe($expected); })->with('matchingStrategyLocationType'); -test('matching strategy location summary accessor', function ($data, $expected) { +test('matching strategy location summary accessor', function ($data, array $expected) { $matchingStrategy = MatchingStrategy::factory()->create($data); // location_summary is sorted, but not re-indexed. array_values used to re-index // because the toEqual check compares keys and values, and wouldn't consider the sort @@ -130,7 +130,7 @@ expect(array_values($matchingStrategy->location_summary))->toEqual($expected); })->with('matchingStrategyLocationSummary'); -test('matching strategy disability and deaf group summary accessor', function ($data, $attachIdentity, $expected = []) { +test('matching strategy disability and deaf group summary accessor', function ($data, $attachIdentity, array $expected = []) { $matchingStrategy = MatchingStrategy::factory()->create($data); if ($attachIdentity) { $identity = Identity::whereJsonContains('clusters', IdentityCluster::DisabilityAndDeaf)->first(); @@ -140,7 +140,7 @@ expect(array_values($matchingStrategy->disability_and_deaf_group_summary))->toEqual($expected); })->with('matchingStrategyDisabilityAndDeafGroupSummary'); -test('matching strategy other identities summary accessor', function ($data, $identities, $expected = null) { +test('matching strategy other identities summary accessor', function ($data, array $identities, array $expected = null) { $this->seed(LanguageSeeder::class); $matchingStrategy = MatchingStrategy::factory()->create($data); $expectedIdentities = []; diff --git a/tests/Feature/MeetingTest.php b/tests/Feature/MeetingTest.php index 8360bbdfa..4fd79ccc6 100644 --- a/tests/Feature/MeetingTest.php +++ b/tests/Feature/MeetingTest.php @@ -136,7 +136,7 @@ expect($engagement->display_meeting_types)->toContain('Virtual – web conference'); }); -test('Meeting request validation errors', function ($state, $errors, $modifiers = []) { +test('Meeting request validation errors', function ($state, array $errors, $modifiers = []) { $user = User::factory()->create(['context' => UserContext::RegulatedOrganization->value]); $regulatedOrganization = RegulatedOrganization::factory() ->hasAttached($user, ['role' => 'admin']) diff --git a/tests/Feature/NotificationListTest.php b/tests/Feature/NotificationListTest.php index 9b4a709e9..3032e1d3f 100644 --- a/tests/Feature/NotificationListTest.php +++ b/tests/Feature/NotificationListTest.php @@ -134,7 +134,7 @@ expect($organization->isNotifying($nullUser))->toBeFalse(); }); -test('add notificationable validation errors', function ($data, $errors = null) { +test('add notificationable validation errors', function ($data, array $errors = null) { $user = User::factory()->create(); $organization = Organization::factory()->create(['name' => ['en' => 'Umbrella Corporation'], 'published_at' => now()]); @@ -157,7 +157,7 @@ } })->with('addNotificaitonableRequestValidationErrors'); -test('remove notificationable validation errors', function ($data, $errors) { +test('remove notificationable validation errors', function ($data, array $errors) { $user = User::factory()->create(); $organization = Organization::factory()->create(['name' => ['en' => 'Umbrella Corporation'], 'published_at' => now()]); diff --git a/tests/Feature/NotificationsTest.php b/tests/Feature/NotificationsTest.php index fc1e46986..c87094ab4 100644 --- a/tests/Feature/NotificationsTest.php +++ b/tests/Feature/NotificationsTest.php @@ -9,6 +9,7 @@ use App\Models\User; use App\Notifications\AgreementReceived; use App\Notifications\OrganizationalContractorInvited; + use function Pest\Livewire\livewire; test('organization users see merged notifications for their organizations and projects', function () { diff --git a/tests/Feature/OrganizationTest.php b/tests/Feature/OrganizationTest.php index 7345d4a78..86d7e5a22 100644 --- a/tests/Feature/OrganizationTest.php +++ b/tests/Feature/OrganizationTest.php @@ -18,14 +18,12 @@ use Database\Seeders\SectorSeeder; use Hearth\Models\Invitation; use Hearth\Models\Membership; -use Illuminate\Foundation\Testing\RefreshDatabase; use Illuminate\Support\Facades\App; use Illuminate\Support\Facades\URL; -use function Pest\Faker\faker; use Spatie\Translatable\Exceptions\AttributeIsNotTranslatable; use Tests\RequestFactories\UpdateOrganizationRequestFactory; -uses(RefreshDatabase::class); +use function Pest\Faker\fake; test('users can create organizations', function () { $user = User::factory()->create(['context' => 'organization', 'locale' => 'asl']); @@ -108,7 +106,7 @@ $organization = Organization::factory() ->hasAttached($user, ['role' => 'admin']) ->create([ - 'contact_person_name' => faker()->name, + 'contact_person_name' => fake()->name, 'staff_lived_experience' => 'yes', 'preferred_contact_method' => 'email', 'about' => 'test about', @@ -396,11 +394,11 @@ $response = $this->actingAs($user)->get(localized_route('organizations.edit', ['organization' => $organization, 'step' => 4])); $response->assertOk(); - $name = faker()->name; + $name = fake()->name; $response = $this->actingAs($user)->put(localized_route('organizations.update-contact-information', $organization->fresh()), [ 'contact_person_name' => $name, - 'contact_person_email' => Str::slug($name).'@'.faker()->safeEmailDomain, + 'contact_person_email' => Str::slug($name).'@'.fake()->safeEmailDomain, 'preferred_contact_method' => 'email', 'contact_person_vrs' => true, 'save' => 1, @@ -410,7 +408,7 @@ $response = $this->actingAs($user)->put(localized_route('organizations.update-contact-information', $organization->fresh()), [ 'contact_person_name' => $name, - 'contact_person_email' => Str::slug($name).'@'.faker()->safeEmailDomain, + 'contact_person_email' => Str::slug($name).'@'.fake()->safeEmailDomain, 'contact_person_phone' => '19024444444', 'contact_person_vrs' => true, 'preferred_contact_method' => 'email', @@ -429,7 +427,7 @@ expect($organization->routeNotificationForMail(new \Illuminate\Notifications\Notification()))->toEqual([$organization->contact_person_email => $organization->contact_person_name]); $response = $this->actingAs($user)->put(localized_route('organizations.update-contact-information', $organization->fresh()), [ 'contact_person_name' => $name, - 'contact_person_email' => Str::slug($name).'@'.faker()->safeEmailDomain, + 'contact_person_email' => Str::slug($name).'@'.fake()->safeEmailDomain, 'contact_person_phone' => '19024444444', 'preferred_contact_method' => 'email', 'save' => 1, @@ -549,7 +547,7 @@ $organization->refresh(); - $this->assertTrue($organization->checkStatus('published')); + expect($organization->checkStatus('published'))->toBeTrue(); }); test('organization pages can be unpublished', function () { @@ -586,7 +584,7 @@ $organization->refresh(); - $this->assertTrue($organization->checkStatus('draft')); + expect($organization->checkStatus('draft'))->toBeTrue(); }); test('organization pages cannot be published by other users', function () { @@ -619,7 +617,7 @@ $response->assertForbidden(); $organization->refresh(); - $this->assertTrue($organization->checkStatus('draft')); + expect($organization->checkStatus('draft'))->toBeTrue(); }); test('organization isPublishable()', function ($expected, $data, $connections = []) { @@ -660,16 +658,16 @@ $organization->setTranslation('name', 'en', 'Name in English'); $organization->setTranslation('name', 'fr', 'Name in French'); - $this->assertEquals('Name in English', $organization->name); + expect($organization->name)->toEqual('Name in English'); App::setLocale('fr'); - $this->assertEquals('Name in French', $organization->name); + expect($organization->name)->toEqual('Name in French'); - $this->assertEquals('Name in English', $organization->getTranslation('name', 'en')); - $this->assertEquals('Name in French', $organization->getTranslation('name', 'fr')); + expect($organization->getTranslation('name', 'en'))->toEqual('Name in English'); + expect($organization->getTranslation('name', 'fr'))->toEqual('Name in French'); $translations = ['en' => 'Name in English', 'fr' => 'Name in French']; - $this->assertEquals($translations, $organization->getTranslations('name')); + expect($organization->getTranslations('name'))->toEqual($translations); $this->expectException(AttributeIsNotTranslatable::class); $organization->setTranslation('locality', 'en', 'Locality in English'); @@ -877,7 +875,7 @@ $response = $this->actingAs($user)->get($acceptUrl); - $this->assertTrue($organization->fresh()->hasUserWithEmail($user->email)); + expect($organization->fresh()->hasUserWithEmail($user->email))->toBeTrue(); $response->assertRedirect(localized_route('dashboard')); }); @@ -897,7 +895,7 @@ $response = $this->from(localized_route('dashboard'))->actingAs($user)->get($acceptUrl); - $this->assertFalse($other_organization->fresh()->hasUserWithEmail($user->email)); + expect($other_organization->fresh()->hasUserWithEmail($user->email))->toBeFalse(); $response->assertSessionHasErrors(); $response->assertRedirect(localized_route('dashboard')); }); @@ -918,7 +916,7 @@ $response = $this->from(localized_route('dashboard'))->actingAs($other_user)->get($acceptUrl); - $this->assertFalse($organization->fresh()->hasUserWithEmail($user->email)); + expect($organization->fresh()->hasUserWithEmail($user->email))->toBeFalse(); $response->assertForbidden(); }); diff --git a/tests/Feature/ProjectTest.php b/tests/Feature/ProjectTest.php index 4870f04ad..c5e41d70e 100644 --- a/tests/Feature/ProjectTest.php +++ b/tests/Feature/ProjectTest.php @@ -17,7 +17,8 @@ use Database\Seeders\IdentitySeeder; use Database\Seeders\ImpactSeeder; use Database\Seeders\SectorSeeder; -use function Pest\Faker\faker; + +use function Pest\Faker\fake; test('users with organization or regulated organization admin role can create projects', function () { $user = User::factory()->create(['context' => UserContext::RegulatedOrganization->value]); @@ -56,7 +57,7 @@ $response->assertSessionHasNoErrors(); - $this->assertEquals('Test Project', $project->name); + expect($project->name)->toEqual('Test Project'); $response->assertRedirect($url); @@ -111,7 +112,7 @@ $response->assertSessionHasNoErrors(); - $this->assertEquals('Test Project 2', $project->name); + expect($project->name)->toEqual('Test Project 2'); $response->assertRedirect($url); @@ -183,7 +184,7 @@ $response->assertSessionHasNoErrors(); $response->assertRedirect(localized_route('projects.show', $project)); - $this->assertTrue($project->checkStatus('published')); + expect($project->checkStatus('published'))->toBeTrue(); $response = $this->actingAs($user)->from(localized_route('projects.show', $project))->put(localized_route('projects.update-publication-status', $project), [ 'unpublish' => true, @@ -200,7 +201,7 @@ $project = $project->fresh(); - $this->assertTrue($project->checkStatus('draft')); + expect($project->checkStatus('draft'))->toBeTrue(); $response = $this->actingAs($adminUser)->get(localized_route('projects.show', $project)); $response->assertSee('Draft'); @@ -392,8 +393,8 @@ test('notifications can be routed for projects', function () { $project = Project::factory()->create([ - 'contact_person_name' => faker()->name(), - 'contact_person_email' => faker()->email(), + 'contact_person_name' => fake()->name(), + 'contact_person_email' => fake()->email(), 'contact_person_phone' => '19024445678', 'preferred_contact_method' => 'email', ]); @@ -447,7 +448,7 @@ $response->assertRedirect(localized_route('projects.edit', ['project' => $project, 'step' => 1])); $project = $project->fresh(); - $this->assertEquals(count($project->impacts), 1); + expect(1)->toEqual(count($project->impacts)); $response = $this->actingAs($user)->put(localized_route('projects.update', $project), [ 'name' => ['en' => $project->name], @@ -675,10 +676,10 @@ expect($org_future_project->status)->toEqual('Upcoming'); expect($indeterminate_project)->started->toBeFalse(); - $this->assertEquals(5, count($organization->projects)); - $this->assertEquals(2, count($organization->completedProjects)); - $this->assertEquals(1, count($organization->inProgressProjects)); - $this->assertEquals(1, count($organization->upcomingProjects)); + expect($organization->projects)->toHaveCount(5); + expect($organization->completedProjects)->toHaveCount(2); + expect($organization->inProgressProjects)->toHaveCount(1); + expect($organization->upcomingProjects)->toHaveCount(1); $regulatedOrganization = RegulatedOrganization::factory()->create(); $regulated_org_past_project = Project::factory()->create([ @@ -700,10 +701,10 @@ 'start_date' => Carbon::now()->addMonths(1)->format('Y-m-d'), ]); - $this->assertEquals(4, count($regulatedOrganization->projects)); - $this->assertEquals(2, count($regulatedOrganization->completedProjects)); - $this->assertEquals(1, count($regulatedOrganization->inProgressProjects)); - $this->assertEquals(1, count($regulatedOrganization->upcomingProjects)); + expect($regulatedOrganization->projects)->toHaveCount(4); + expect($regulatedOrganization->completedProjects)->toHaveCount(2); + expect($regulatedOrganization->inProgressProjects)->toHaveCount(1); + expect($regulatedOrganization->upcomingProjects)->toHaveCount(1); }); test('projects reflect consultant origin', function () { @@ -717,9 +718,9 @@ 'individual_consultant_id' => $individual->id, ]); - $this->assertEquals('external', $project_with_external_consultant->consultant_origin); - $this->assertEquals('platform', $project_with_platform_consultant->consultant_origin); - $this->assertEquals($individual->id, $project_with_platform_consultant->consultant->id); + expect($project_with_external_consultant->consultant_origin)->toEqual('external'); + expect($project_with_platform_consultant->consultant_origin)->toEqual('platform'); + expect($project_with_platform_consultant->consultant->id)->toEqual($individual->id); }); test('projects reflect team experience', function () { @@ -727,7 +728,7 @@ 'team_has_disability_or_deaf_lived_experience' => true, ]); - $this->assertEquals('Our team has people with lived and living experiences of disability or being Deaf.', $project->teamExperience()); + expect($project->teamExperience())->toEqual('Our team has people with lived and living experiences of disability or being Deaf.'); $project->update([ 'team_has_disability_or_deaf_lived_experience' => false, @@ -735,7 +736,7 @@ $project = $project->fresh(); - $this->assertEquals('Our team does not have people with lived and living experiences of disability or being Deaf.', $project->teamExperience()); + expect($project->teamExperience())->toEqual('Our team does not have people with lived and living experiences of disability or being Deaf.'); }); test('project retrieves team trainings properly', function () { diff --git a/tests/Feature/QuizTest.php b/tests/Feature/QuizTest.php index e37422fa6..1db8213d1 100644 --- a/tests/Feature/QuizTest.php +++ b/tests/Feature/QuizTest.php @@ -52,7 +52,7 @@ $quiz->questions()->attach($thirdQuestionWithoutOrder); $orderedQuestions = $quiz->getQuestionsInOrder(); - expect(count($orderedQuestions))->toBe(3); + expect($orderedQuestions)->toHaveCount(3); expect($orderedQuestions[0]->id)->toBe($firstQuestionWithOrder->id); expect($orderedQuestions[1]->id)->toBe($secondQuestionWithOrder->id); expect($orderedQuestions[2]->id)->toBe($thirdQuestionWithoutOrder->id); @@ -136,7 +136,7 @@ 'user_id' => $user->id, 'course_id' => $course->id, ]); - $this->assertNotNull(DB::table('course_user')->where([['course_id', $course->id], ['user_id', $user->id]])->first()->received_certificate_at); + expect(DB::table('course_user')->where([['course_id', $course->id], ['user_id', $user->id]])->first()->received_certificate_at)->not->toBeNull(); $this->followRedirects($response)->assertSee(__('You have now completed this course.')); }); diff --git a/tests/Feature/RegulatedOrganizationTest.php b/tests/Feature/RegulatedOrganizationTest.php index 01276a707..5bf08bf71 100644 --- a/tests/Feature/RegulatedOrganizationTest.php +++ b/tests/Feature/RegulatedOrganizationTest.php @@ -8,12 +8,10 @@ use App\Models\User; use Database\Seeders\SectorSeeder; use Hearth\Models\Membership; -use Illuminate\Foundation\Testing\RefreshDatabase; use Illuminate\Support\Facades\URL; -use function Pest\Faker\faker; use Tests\RequestFactories\UpdateRegulatedOrganizationRequestFactory; -uses(RefreshDatabase::class); +use function Pest\Faker\fake; test('users can create regulated organizations', function () { $individualUser = User::factory()->create(); @@ -46,8 +44,8 @@ $regulatedOrganization = RegulatedOrganization::where('name->en', 'Government Agency')->first(); - $this->assertTrue($user->isMemberOf($regulatedOrganization)); - $this->assertEquals(1, count($user->memberships)); + expect($user->isMemberOf($regulatedOrganization))->toBeTrue(); + expect($user->memberships)->toHaveCount(1); $response = $this->actingAs($user)->get(localized_route('regulated-organizations.show-language-selection', $regulatedOrganization)); @@ -70,7 +68,7 @@ $user = $user->fresh(); - $this->assertEquals($user->regulatedOrganization->id, $regulatedOrganization->id); + expect($regulatedOrganization->id)->toEqual($user->regulatedOrganization->id); }); test('users with admin role can edit regulated organizations', function () { @@ -225,7 +223,7 @@ $regulatedOrganization = $regulatedOrganization->fresh(); - $this->assertTrue($regulatedOrganization->checkStatus('published')); + expect($regulatedOrganization->checkStatus('published'))->toBeTrue(); }); test('regulated organizations can be unpublished', function () { @@ -251,7 +249,7 @@ $regulatedOrganization = $regulatedOrganization->fresh(); - $this->assertTrue($regulatedOrganization->checkStatus('draft')); + expect($regulatedOrganization->checkStatus('draft'))->toBeTrue(); }); test('regulated organization isPublishable()', function ($expected, $data, $connections = []) { @@ -472,7 +470,7 @@ $response = $this->actingAs($user)->get($acceptUrl); - $this->assertTrue($regulatedOrganization->fresh()->hasUserWithEmail($user->email)); + expect($regulatedOrganization->fresh()->hasUserWithEmail($user->email))->toBeTrue(); $response->assertRedirect(localized_route('dashboard')); }); @@ -511,7 +509,7 @@ $response = $this->from(localized_route('dashboard'))->actingAs($other_user)->get($acceptUrl); - $this->assertFalse($regulatedOrganization->fresh()->hasUserWithEmail($user->email)); + expect($regulatedOrganization->fresh()->hasUserWithEmail($user->email))->toBeFalse(); $response->assertForbidden(); }); @@ -521,7 +519,7 @@ $invitation = Invitation::factory()->create([ 'invitationable_id' => $regulatedOrganization->id, 'invitationable_type' => get_class($regulatedOrganization), - 'email' => faker()->email, + 'email' => fake()->email, ]); $declineUrl = route('invitations.decline', ['invitation' => $invitation]); @@ -824,8 +822,8 @@ test('notifications can be routed for regulated organizations', function () { $regulatedOrganization = RegulatedOrganization::factory()->create([ - 'contact_person_name' => faker()->name(), - 'contact_person_email' => faker()->email(), + 'contact_person_name' => fake()->name(), + 'contact_person_email' => fake()->email(), 'contact_person_phone' => '19024445678', 'preferred_contact_method' => 'email', ]); diff --git a/tests/Feature/ResourceCollectionTest.php b/tests/Feature/ResourceCollectionTest.php index b627036ae..857e90ea4 100644 --- a/tests/Feature/ResourceCollectionTest.php +++ b/tests/Feature/ResourceCollectionTest.php @@ -1,16 +1,15 @@ create(); @@ -23,19 +22,19 @@ $resourceCollection->setTranslation('description', 'en', $descriptionTranslations['en']); $resourceCollection->setTranslation('description', 'fr', $descriptionTranslations['fr']); - $this->assertEquals($titleTranslations['en'], $resourceCollection->title); - $this->assertEquals($descriptionTranslations['en'], $resourceCollection->description); + expect($resourceCollection->title)->toEqual($titleTranslations['en']); + expect($resourceCollection->description)->toEqual($descriptionTranslations['en']); App::setLocale('fr'); - $this->assertEquals($titleTranslations['fr'], $resourceCollection->title); - $this->assertEquals($descriptionTranslations['fr'], $resourceCollection->description); + expect($resourceCollection->title)->toEqual($titleTranslations['fr']); + expect($resourceCollection->description)->toEqual($descriptionTranslations['fr']); - $this->assertEquals($titleTranslations['en'], $resourceCollection->getTranslation('title', 'en')); - $this->assertEquals($descriptionTranslations['en'], $resourceCollection->getTranslation('description', 'en')); - $this->assertEquals($titleTranslations['fr'], $resourceCollection->getTranslation('title', 'fr')); - $this->assertEquals($descriptionTranslations['fr'], $resourceCollection->getTranslation('description', 'fr')); + expect($resourceCollection->getTranslation('title', 'en'))->toEqual($titleTranslations['en']); + expect($resourceCollection->getTranslation('description', 'en'))->toEqual($descriptionTranslations['en']); + expect($resourceCollection->getTranslation('title', 'fr'))->toEqual($titleTranslations['fr']); + expect($resourceCollection->getTranslation('description', 'fr'))->toEqual($descriptionTranslations['fr']); - $this->assertEquals($titleTranslations, $resourceCollection->getTranslations('title')); - $this->assertEquals($descriptionTranslations, $resourceCollection->getTranslations('description')); + expect($resourceCollection->getTranslations('title'))->toEqual($titleTranslations); + expect($resourceCollection->getTranslations('description'))->toEqual($descriptionTranslations); $this->expectException(AttributeIsNotTranslatable::class); $resourceCollection->setTranslation('user_id', 'en', 'user_id in English'); diff --git a/tests/Feature/ResourceTest.php b/tests/Feature/ResourceTest.php index abbe382bf..eb6aeeb7a 100644 --- a/tests/Feature/ResourceTest.php +++ b/tests/Feature/ResourceTest.php @@ -16,25 +16,26 @@ use Database\Seeders\SectorSeeder; use Database\Seeders\TopicSeeder; use Illuminate\Support\Facades\App; -use function Pest\Livewire\livewire; use Spatie\Translatable\Exceptions\AttributeIsNotTranslatable; +use function Pest\Livewire\livewire; + test('resources can be translated', function () { $resource = Resource::factory()->create(); $resource->setTranslation('title', 'en', 'title in English'); $resource->setTranslation('title', 'fr', 'title in French'); - $this->assertEquals('title in English', $resource->title); + expect($resource->title)->toEqual('title in English'); App::setLocale('fr'); - $this->assertEquals('title in French', $resource->title); + expect($resource->title)->toEqual('title in French'); - $this->assertEquals('title in English', $resource->getTranslation('title', 'en')); - $this->assertEquals('title in French', $resource->getTranslation('title', 'fr')); + expect($resource->getTranslation('title', 'en'))->toEqual('title in English'); + expect($resource->getTranslation('title', 'fr'))->toEqual('title in French'); $translations = ['en' => 'title in English', 'fr' => 'title in French']; - $this->assertEquals($translations, $resource->getTranslations('title')); + expect($resource->getTranslations('title'))->toEqual($translations); $this->expectException(AttributeIsNotTranslatable::class); $resource->setTranslation('user_id', 'en', 'user_id in English'); diff --git a/tests/Feature/ScheduleTest.php b/tests/Feature/ScheduleTest.php new file mode 100644 index 000000000..f9dfc5f0a --- /dev/null +++ b/tests/Feature/ScheduleTest.php @@ -0,0 +1,19 @@ +events = Arr::mapWithKeys(collect(app()->make(Schedule::class)->events())->pluck('expression', 'command')->toArray(), function (string $item, string $key) { + return [explode(" 'artisan' ", $key)[1] => $item]; + }); +}); + +test('database seed backups are in the schedule', function () { + expect($this->events)->toHaveKey('db:seed:backup --all'); + expect($this->events['db:seed:backup --all'])->toEqual('0 0 * * *'); +}); + +test('notification removals are in the schedule', function () { + expect($this->events)->toHaveKey('notifications:remove:old --days=30'); + expect($this->events['notifications:remove:old --days=30'])->toEqual('0 0 * * *'); +}); diff --git a/tests/Feature/TopicTest.php b/tests/Feature/TopicTest.php index 6f35f1836..b469b75fd 100644 --- a/tests/Feature/TopicTest.php +++ b/tests/Feature/TopicTest.php @@ -4,6 +4,7 @@ use App\Filament\Resources\TopicResource\Pages\ListTopics; use App\Models\Topic; use App\Models\User; + use function Pest\Livewire\livewire; test('only administrative users can access topic admin pages', function () { diff --git a/tests/Feature/TranslationTest.php b/tests/Feature/TranslationTest.php index 6bf2156b0..daeb7617d 100644 --- a/tests/Feature/TranslationTest.php +++ b/tests/Feature/TranslationTest.php @@ -21,7 +21,7 @@ expect(flash()->message)->toBe(__('Language :language added.', ['language' => get_language_exonym('asl')])); }); -test('add translation validation errors', function ($data, $errors = null) { +test('add translation validation errors', function ($data, array $errors = null) { $individual = Individual::factory()->create([ 'name' => 'Tester', 'roles' => ['consultant'], @@ -62,7 +62,7 @@ expect(flash()->message)->toBe(__('Language :language removed.', ['language' => get_language_exonym('fr')])); }); -test('destroy translation validation errors', function ($data, $errors = null) { +test('destroy translation validation errors', function ($data, array $errors = null) { $individual = Individual::factory()->create([ 'name' => 'Tester', 'roles' => ['consultant'], diff --git a/tests/Feature/TwoFactorAuthenticationTest.php b/tests/Feature/TwoFactorAuthenticationTest.php index daeadac51..3db720dd5 100644 --- a/tests/Feature/TwoFactorAuthenticationTest.php +++ b/tests/Feature/TwoFactorAuthenticationTest.php @@ -15,7 +15,7 @@ $response->assertRedirect(localized_route('password.confirm')); - $this->assertFalse($user->twoFactorAuthEnabled()); + expect($user->twoFactorAuthEnabled())->toBeFalse(); }); test('users_who_have_confirmed_password_can_enable_two_factor_authentication', function () { @@ -29,7 +29,7 @@ $this->post(route('two-factor.enable')); - $this->assertTrue($user->twoFactorAuthEnabled()); + expect($user->twoFactorAuthEnabled())->toBeTrue(); }); test('users_can_authenticate_with_two_factor_code', function () { diff --git a/tests/Feature/UserSettingsTest.php b/tests/Feature/UserSettingsTest.php index 1aa8e9dda..f1eb9952b 100644 --- a/tests/Feature/UserSettingsTest.php +++ b/tests/Feature/UserSettingsTest.php @@ -469,8 +469,8 @@ $response->assertSee('Please verify your email address by clicking on the link we emailed to you.'); $user = $user->fresh(); - $this->assertEquals($user->email, 'me@example.net'); - $this->assertNull($user->email_verified_at); + expect('me@example.net')->toEqual($user->email); + expect($user->email_verified_at)->toBeNull(); }); test('password can be updated', function () { diff --git a/tests/Feature/UserTest.php b/tests/Feature/UserTest.php index 425f8ce89..d37f1b186 100644 --- a/tests/Feature/UserTest.php +++ b/tests/Feature/UserTest.php @@ -247,7 +247,8 @@ $adminUser = User::factory()->create(['context' => 'administrator']); $users = User::all()->pluck('id')->toArray(); - $administrators = User::whereAdministrator()->pluck('id')->toArray(); + /** @see https://github.com/spatie/laravel-ciphersweet/discussions/51 */ + $administrators = User::whereAdministrator()->get()->pluck('id')->toArray(); foreach ([$user->id, $adminUser->id] as $id) { expect($users)->toContain($id); diff --git a/tests/Feature/View/Components/InterpretationTest.php b/tests/Feature/View/Components/InterpretationTest.php index 40ed1272d..a2f3029f7 100644 --- a/tests/Feature/View/Components/InterpretationTest.php +++ b/tests/Feature/View/Components/InterpretationTest.php @@ -2,11 +2,8 @@ use App\Models\Interpretation; use App\Models\User; -use Illuminate\Foundation\Testing\RefreshDatabase; use Illuminate\Support\Str; -uses(RefreshDatabase::class); - test('new Interpretation instance', function () { $user = User::factory()->create(); diff --git a/tests/Pest.php b/tests/Pest.php index ec95aa788..6708de8d0 100644 --- a/tests/Pest.php +++ b/tests/Pest.php @@ -1,8 +1,9 @@ in(__DIR__); +uses(DuskTestCase::class)->in('Browser'); +uses(TestCase::class, CreatesApplication::class, FastRefreshDatabase::class)->in('Feature'); +uses(TestCase::class, CreatesApplication::class, FastRefreshDatabase::class)->in('Unit'); + +uses()->compact(); /* |-------------------------------------------------------------------------- @@ -27,7 +32,3 @@ | to assert different things. Of course, you may extend the Expectation API at any time. | */ - -expect()->extend('toBeOne', function () { - return $this->toBe(1); -}); diff --git a/tests/RequestFactories/StoreEngagementRequestFactory.php b/tests/RequestFactories/StoreEngagementRequestFactory.php index 6027c8fa6..61cd190b3 100644 --- a/tests/RequestFactories/StoreEngagementRequestFactory.php +++ b/tests/RequestFactories/StoreEngagementRequestFactory.php @@ -3,16 +3,17 @@ namespace Tests\RequestFactories; use App\Models\Project; -use function Pest\Faker\faker; use Worksome\RequestFactories\RequestFactory; +use function Pest\Faker\fake; + class StoreEngagementRequestFactory extends RequestFactory { public function definition(): array { return [ 'project_id' => Project::factory(), - 'name' => ['en' => 'Workshop '.faker()->randomNumber(5)], + 'name' => ['en' => 'Workshop '.fake()->randomNumber(5)], 'who' => 'individuals', 'ideal_participants' => 25, 'minimum_participants' => 15,