diff --git a/.gitattributes b/.gitattributes index ec3577d888a..1eddc24b69c 100644 --- a/.gitattributes +++ b/.gitattributes @@ -3,4 +3,5 @@ /.github export-ignore /.gitignore export-ignore /phpunit.xml.dist export-ignore +/testbench.yaml export-ignore /tests export-ignore diff --git a/.github/workflows/phpstan.yml b/.github/workflows/phpstan.yml index 25c7ec8450c..6f5212700b8 100644 --- a/.github/workflows/phpstan.yml +++ b/.github/workflows/phpstan.yml @@ -11,11 +11,16 @@ jobs: fail-fast: false matrix: php: [8.3, 8.2, 8.1] - laravel: [10.*] + laravel: [11.*, 10.*] dependency-version: [prefer-stable] include: + - laravel: 11.* + testbench: 9.* - laravel: 10.* testbench: 8.* + exclude: + - laravel: 11.* + php: 8.1 name: P${{ matrix.php }} - L${{ matrix.laravel }} - ${{ matrix.dependency-version }} steps: - uses: actions/checkout@v3 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index db503007d9b..b5277c534f1 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -11,11 +11,16 @@ jobs: fail-fast: false matrix: php: [8.3, 8.2, 8.1] - laravel: [10.*] + laravel: [11.*, 10.*] dependency-version: [prefer-stable] include: + - laravel: 11.* + testbench: 9.* - laravel: 10.* testbench: 8.* + exclude: + - laravel: 11.* + php: 8.1 name: P${{ matrix.php }} - L${{ matrix.laravel }} - ${{ matrix.dependency-version }} steps: - uses: actions/checkout@v3 diff --git a/composer.json b/composer.json index 7b9558b5fd9..4787fd5745d 100644 --- a/composer.json +++ b/composer.json @@ -10,22 +10,19 @@ "require-dev": { "anourvalar/eloquent-serialize": "^1.2", "danharrin/livewire-rate-limiting": "^0.3|^1.0", - "doctrine/dbal": "^3.2", "filament/support": "*", "kirschbaum-development/eloquent-power-joins": "^3.0", "larastan/larastan": "^2.2", - "laravel/cashier": "^14.2", "laravel/pint": "^1.0", "league/csv": "^9.14", "league/flysystem-aws-s3-v3": "^3.0", - "nunomaduro/termwind": "^1.0", + "nunomaduro/termwind": "^1.0|^2.0", "openspout/openspout": "^4.23", - "orchestra/testbench": "^8.0", + "orchestra/testbench": "^8.20|^9.0", "pestphp/pest": "^2.0", "pestphp/pest-plugin-laravel": "^2.0", "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "v1.10.54", - "rector/rector": "^0.17", + "phpstan/phpstan": "^1.10", "spatie/laravel-medialibrary": "^10.0|^11.0", "spatie/laravel-ray": "^1.29", "spatie/laravel-tags": "^4.2", diff --git a/composer.lock b/composer.lock index b9b21d41244..da82a276254 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": "ac16bcf5c85ddf6f1e358ff5467d1194", + "content-hash": "fbd0ec72b100f3ca5b1e0ed24df60817", "packages": [], "packages-dev": [ { @@ -523,26 +523,26 @@ }, { "name": "carbonphp/carbon-doctrine-types", - "version": "2.1.0", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/CarbonPHP/carbon-doctrine-types.git", - "reference": "99f76ffa36cce3b70a4a6abce41dba15ca2e84cb" + "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/99f76ffa36cce3b70a4a6abce41dba15ca2e84cb", - "reference": "99f76ffa36cce3b70a4a6abce41dba15ca2e84cb", + "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/18ba5ddfec8976260ead6e866180bd5d2f71aa1d", + "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d", "shasum": "" }, "require": { - "php": "^7.4 || ^8.0" + "php": "^8.1" }, "conflict": { - "doctrine/dbal": "<3.7.0 || >=4.0.0" + "doctrine/dbal": "<4.0.0 || >=5.0.0" }, "require-dev": { - "doctrine/dbal": "^3.7.0", + "doctrine/dbal": "^4.0.0", "nesbot/carbon": "^2.71.0 || ^3.0.0", "phpunit/phpunit": "^10.3" }, @@ -572,7 +572,7 @@ ], "support": { "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues", - "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/2.1.0" + "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/3.2.0" }, "funding": [ { @@ -588,7 +588,7 @@ "type": "tidelift" } ], - "time": "2023-12-11T17:09:12+00:00" + "time": "2024-02-09T16:56:22+00:00" }, { "name": "composer/semver", @@ -800,212 +800,6 @@ }, "time": "2022-10-27T11:44:00+00:00" }, - { - "name": "doctrine/cache", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/cache.git", - "reference": "1ca8f21980e770095a31456042471a57bc4c68fb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/1ca8f21980e770095a31456042471a57bc4c68fb", - "reference": "1ca8f21980e770095a31456042471a57bc4c68fb", - "shasum": "" - }, - "require": { - "php": "~7.1 || ^8.0" - }, - "conflict": { - "doctrine/common": ">2.2,<2.4" - }, - "require-dev": { - "cache/integration-tests": "dev-master", - "doctrine/coding-standard": "^9", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "psr/cache": "^1.0 || ^2.0 || ^3.0", - "symfony/cache": "^4.4 || ^5.4 || ^6", - "symfony/var-exporter": "^4.4 || ^5.4 || ^6" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.", - "homepage": "https://www.doctrine-project.org/projects/cache.html", - "keywords": [ - "abstraction", - "apcu", - "cache", - "caching", - "couchdb", - "memcached", - "php", - "redis", - "xcache" - ], - "support": { - "issues": "https://github.com/doctrine/cache/issues", - "source": "https://github.com/doctrine/cache/tree/2.2.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%2Fcache", - "type": "tidelift" - } - ], - "time": "2022-05-20T20:07:39+00:00" - }, - { - "name": "doctrine/dbal", - "version": "3.8.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/dbal.git", - "reference": "a19a1d05ca211f41089dffcc387733a6875196cb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/a19a1d05ca211f41089dffcc387733a6875196cb", - "reference": "a19a1d05ca211f41089dffcc387733a6875196cb", - "shasum": "" - }, - "require": { - "composer-runtime-api": "^2", - "doctrine/cache": "^1.11|^2.0", - "doctrine/deprecations": "^0.5.3|^1", - "doctrine/event-manager": "^1|^2", - "php": "^7.4 || ^8.0", - "psr/cache": "^1|^2|^3", - "psr/log": "^1|^2|^3" - }, - "require-dev": { - "doctrine/coding-standard": "12.0.0", - "fig/log-test": "^1", - "jetbrains/phpstorm-stubs": "2023.1", - "phpstan/phpstan": "1.10.57", - "phpstan/phpstan-strict-rules": "^1.5", - "phpunit/phpunit": "9.6.16", - "psalm/plugin-phpunit": "0.18.4", - "slevomat/coding-standard": "8.13.1", - "squizlabs/php_codesniffer": "3.8.1", - "symfony/cache": "^5.4|^6.0|^7.0", - "symfony/console": "^4.4|^5.4|^6.0|^7.0", - "vimeo/psalm": "4.30.0" - }, - "suggest": { - "symfony/console": "For helpful console commands such as SQL execution and import of files." - }, - "bin": [ - "bin/doctrine-dbal" - ], - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\DBAL\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - } - ], - "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.", - "homepage": "https://www.doctrine-project.org/projects/dbal.html", - "keywords": [ - "abstraction", - "database", - "db2", - "dbal", - "mariadb", - "mssql", - "mysql", - "oci8", - "oracle", - "pdo", - "pgsql", - "postgresql", - "queryobject", - "sasql", - "sql", - "sqlite", - "sqlserver", - "sqlsrv" - ], - "support": { - "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.8.2" - }, - "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%2Fdbal", - "type": "tidelift" - } - ], - "time": "2024-02-12T18:36:36+00:00" - }, { "name": "doctrine/deprecations", "version": "1.1.3", @@ -1053,97 +847,6 @@ }, "time": "2024-01-30T19:34:25+00:00" }, - { - "name": "doctrine/event-manager", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/event-manager.git", - "reference": "750671534e0241a7c50ea5b43f67e23eb5c96f32" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/750671534e0241a7c50ea5b43f67e23eb5c96f32", - "reference": "750671534e0241a7c50ea5b43f67e23eb5c96f32", - "shasum": "" - }, - "require": { - "php": "^8.1" - }, - "conflict": { - "doctrine/common": "<2.9" - }, - "require-dev": { - "doctrine/coding-standard": "^10", - "phpstan/phpstan": "^1.8.8", - "phpunit/phpunit": "^9.5", - "vimeo/psalm": "^4.28" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - }, - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.", - "homepage": "https://www.doctrine-project.org/projects/event-manager.html", - "keywords": [ - "event", - "event dispatcher", - "event manager", - "event system", - "events" - ], - "support": { - "issues": "https://github.com/doctrine/event-manager/issues", - "source": "https://github.com/doctrine/event-manager/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%2Fevent-manager", - "type": "tidelift" - } - ], - "time": "2022-10-12T20:59:15+00:00" - }, { "name": "doctrine/inflector", "version": "2.0.10", @@ -1570,18 +1273,17 @@ "dist": { "type": "path", "url": "packages/support", - "reference": "099ac9c8ddf7d2d6fdb9ccd8ed7d43782645bd4f" + "reference": "230cfe00edecd7ff97ededcedd3db4770508da1e" }, "require": { "blade-ui-kit/blade-heroicons": "^2.2.1", - "doctrine/dbal": "^3.2", "ext-intl": "*", - "illuminate/contracts": "^10.45", - "illuminate/support": "^10.45", - "illuminate/view": "^10.45", + "illuminate/contracts": "^10.45|^11.0", + "illuminate/support": "^10.45|^11.0", + "illuminate/view": "^10.45|^11.0", "livewire/livewire": "^3.2.3", "php": "^8.1", - "ryangjchandler/blade-capture-directive": "^0.2|^0.3", + "ryangjchandler/blade-capture-directive": "^0.2|^0.3|^1.0", "spatie/color": "^1.5", "spatie/invade": "^1.0|^2.0", "spatie/laravel-package-tools": "^1.9", @@ -2405,16 +2107,16 @@ }, { "name": "larastan/larastan", - "version": "v2.9.0", + "version": "v2.9.1", "source": { "type": "git", "url": "https://github.com/larastan/larastan.git", - "reference": "35fa9cbe1895e76215bbe74571a344f2705fbe01" + "reference": "467113c58d110ad617cf9e07ff49b0948d1c03cc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/larastan/larastan/zipball/35fa9cbe1895e76215bbe74571a344f2705fbe01", - "reference": "35fa9cbe1895e76215bbe74571a344f2705fbe01", + "url": "https://api.github.com/repos/larastan/larastan/zipball/467113c58d110ad617cf9e07ff49b0948d1c03cc", + "reference": "467113c58d110ad617cf9e07ff49b0948d1c03cc", "shasum": "" }, "require": { @@ -2482,7 +2184,7 @@ ], "support": { "issues": "https://github.com/larastan/larastan/issues", - "source": "https://github.com/larastan/larastan/tree/v2.9.0" + "source": "https://github.com/larastan/larastan/tree/v2.9.1" }, "funding": [ { @@ -2502,107 +2204,20 @@ "type": "patreon" } ], - "time": "2024-02-13T11:49:22+00:00" - }, - { - "name": "laravel/cashier", - "version": "v14.14.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/cashier-stripe.git", - "reference": "46d8139cc4c4a53c70a56cbc8605c4503a429f4c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/cashier-stripe/zipball/46d8139cc4c4a53c70a56cbc8605c4503a429f4c", - "reference": "46d8139cc4c4a53c70a56cbc8605c4503a429f4c", - "shasum": "" - }, - "require": { - "ext-json": "*", - "illuminate/console": "^9.21|^10.0", - "illuminate/contracts": "^9.21|^10.0", - "illuminate/database": "^9.21|^10.0", - "illuminate/http": "^9.21|^10.0", - "illuminate/log": "^9.21|^10.0", - "illuminate/notifications": "^9.21|^10.0", - "illuminate/pagination": "^9.21|^10.0", - "illuminate/routing": "^9.21|^10.0", - "illuminate/support": "^9.21|^10.0", - "illuminate/view": "^9.21|^10.0", - "moneyphp/money": "^4.0", - "nesbot/carbon": "^2.0", - "php": "^8.0", - "stripe/stripe-php": "^7.39|^8.0|^9.0|^10.0", - "symfony/http-kernel": "^6.0", - "symfony/polyfill-intl-icu": "^1.22.1" - }, - "require-dev": { - "dompdf/dompdf": "^2.0", - "mockery/mockery": "^1.0", - "orchestra/testbench": "^7.0|^8.0", - "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^9.0" - }, - "suggest": { - "dompdf/dompdf": "Required when generating and downloading invoice PDF's using Dompdf (^1.0.1|^2.0).", - "ext-intl": "Allows for more locales besides the default \"en\" when formatting money values." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "14.x-dev" - }, - "laravel": { - "providers": [ - "Laravel\\Cashier\\CashierServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Laravel\\Cashier\\": "src/", - "Laravel\\Cashier\\Database\\Factories\\": "database/factories/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - }, - { - "name": "Dries Vints", - "email": "dries@laravel.com" - } - ], - "description": "Laravel Cashier provides an expressive, fluent interface to Stripe's subscription billing services.", - "keywords": [ - "billing", - "laravel", - "stripe" - ], - "support": { - "issues": "https://github.com/laravel/cashier/issues", - "source": "https://github.com/laravel/cashier" - }, - "time": "2023-11-21T15:08:38+00:00" + "time": "2024-02-26T14:10:20+00:00" }, { "name": "laravel/framework", - "version": "v10.45.1", + "version": "dev-master", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "dcf5d1d722b84ad38a5e053289130b6962f830bd" + "reference": "39561b1dab03c45debdddadf71523570626aeaaa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/dcf5d1d722b84ad38a5e053289130b6962f830bd", - "reference": "dcf5d1d722b84ad38a5e053289130b6962f830bd", + "url": "https://api.github.com/repos/laravel/framework/zipball/39561b1dab03c45debdddadf71523570626aeaaa", + "reference": "39561b1dab03c45debdddadf71523570626aeaaa", "shasum": "" }, "require": { @@ -2618,39 +2233,38 @@ "ext-openssl": "*", "ext-session": "*", "ext-tokenizer": "*", - "fruitcake/php-cors": "^1.2", + "fruitcake/php-cors": "^1.3", + "guzzlehttp/guzzle": "^7.8", "guzzlehttp/uri-template": "^1.0", - "laravel/prompts": "^0.1.9", + "laravel/prompts": "^0.1.15", "laravel/serializable-closure": "^1.3", "league/commonmark": "^2.2.1", "league/flysystem": "^3.8.0", "monolog/monolog": "^3.0", - "nesbot/carbon": "^2.67", - "nunomaduro/termwind": "^1.13", - "php": "^8.1", + "nesbot/carbon": "^2.72.2|^3.0", + "nunomaduro/termwind": "^2.0", + "php": "^8.2", "psr/container": "^1.1.1|^2.0.1", "psr/log": "^1.0|^2.0|^3.0", "psr/simple-cache": "^1.0|^2.0|^3.0", "ramsey/uuid": "^4.7", - "symfony/console": "^6.2", - "symfony/error-handler": "^6.2", - "symfony/finder": "^6.2", - "symfony/http-foundation": "^6.4", - "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", + "symfony/console": "^7.0", + "symfony/error-handler": "^7.0", + "symfony/finder": "^7.0", + "symfony/http-foundation": "^7.0", + "symfony/http-kernel": "^7.0", + "symfony/mailer": "^7.0", + "symfony/mime": "^7.0", + "symfony/polyfill-php83": "^1.28", + "symfony/process": "^7.0", + "symfony/routing": "^7.0", + "symfony/uid": "^7.0", + "symfony/var-dumper": "^7.0", "tijsverkoyen/css-to-inline-styles": "^2.2.5", "vlucas/phpdotenv": "^5.4.1", "voku/portable-ascii": "^2.0" }, "conflict": { - "carbonphp/carbon-doctrine-types": ">=3.0", - "doctrine/dbal": ">=4.0", - "phpunit/phpunit": ">=11.0.0", "tightenco/collect": "<5.5.33" }, "provide": { @@ -2690,36 +2304,35 @@ "illuminate/testing": "self.version", "illuminate/translation": "self.version", "illuminate/validation": "self.version", - "illuminate/view": "self.version" + "illuminate/view": "self.version", + "spatie/once": "*" }, "require-dev": { "ably/ably-php": "^1.0", "aws/aws-sdk-php": "^3.235.5", - "doctrine/dbal": "^3.5.1", "ext-gmp": "*", - "fakerphp/faker": "^1.21", - "guzzlehttp/guzzle": "^7.5", + "fakerphp/faker": "^1.23", "league/flysystem-aws-s3-v3": "^3.0", "league/flysystem-ftp": "^3.0", "league/flysystem-path-prefixing": "^3.3", "league/flysystem-read-only": "^3.3", "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.5.1", + "mockery/mockery": "^1.6", "nyholm/psr7": "^1.2", - "orchestra/testbench-core": "^8.18", - "pda/pheanstalk": "^4.0", + "orchestra/testbench-core": "^9.0", + "pda/pheanstalk": "^5.0", "phpstan/phpstan": "^1.4.7", - "phpunit/phpunit": "^10.0.7", + "phpunit/phpunit": "^10.5|^11.0", "predis/predis": "^2.0.2", - "symfony/cache": "^6.2", - "symfony/http-client": "^6.2.4", - "symfony/psr-http-message-bridge": "^2.0" + "resend/resend-php": "^0.10.0", + "symfony/cache": "^7.0", + "symfony/http-client": "^7.0", + "symfony/psr-http-message-bridge": "^7.0" }, "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 (^3.5.1).", + "brianium/paratest": "Required to run tests in parallel (^7.0|^8.0).", "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.", @@ -2731,31 +2344,31 @@ "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0).", "fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).", "filp/whoops": "Required for friendly error pages in development (^2.14.3).", - "guzzlehttp/guzzle": "Required to use the HTTP Client and the ping methods on schedules (^7.5).", "laravel/tinker": "Required to use the tinker console command (^2.0).", "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^3.0).", "league/flysystem-ftp": "Required to use the Flysystem FTP driver (^3.0).", "league/flysystem-path-prefixing": "Required to use the scoped driver (^3.3).", "league/flysystem-read-only": "Required to use read-only disks (^3.3)", "league/flysystem-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.5.1).", + "mockery/mockery": "Required to use mocking (^1.6).", "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|^10.0.7).", + "pda/pheanstalk": "Required to use the beanstalk queue driver (^5.0).", + "phpunit/phpunit": "Required to use assertions and run tests (^10.5|^11.0).", "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.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)." + "resend/resend-php": "Required to enable support for the Resend mail transport (^0.10.0).", + "symfony/cache": "Required to PSR-6 cache bridge (^7.0).", + "symfony/filesystem": "Required to enable support for relative symbolic links (^7.0).", + "symfony/http-client": "Required to enable support for the Symfony API mail transports (^7.0).", + "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^7.0).", + "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^7.0).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^7.0)." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "10.x-dev" + "dev-master": "11.x-dev" } }, "autoload": { @@ -2795,7 +2408,7 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2024-02-21T14:07:36+00:00" + "time": "2024-02-26T10:36:42+00:00" }, { "name": "laravel/pint", @@ -4074,94 +3687,6 @@ }, "time": "2023-12-10T02:24:34+00:00" }, - { - "name": "moneyphp/money", - "version": "v4.5.0", - "source": { - "type": "git", - "url": "https://github.com/moneyphp/money.git", - "reference": "a1daa7daf159b4044e3d0c34c41fe2be5860e850" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/moneyphp/money/zipball/a1daa7daf159b4044e3d0c34c41fe2be5860e850", - "reference": "a1daa7daf159b4044e3d0c34c41fe2be5860e850", - "shasum": "" - }, - "require": { - "ext-bcmath": "*", - "ext-filter": "*", - "ext-json": "*", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0" - }, - "require-dev": { - "cache/taggable-cache": "^1.1.0", - "doctrine/coding-standard": "^12.0", - "doctrine/instantiator": "^1.5.0 || ^2.0", - "ext-gmp": "*", - "ext-intl": "*", - "florianv/exchanger": "^2.8.1", - "florianv/swap": "^4.3.0", - "moneyphp/crypto-currencies": "^1.1.0", - "moneyphp/iso-currencies": "^3.4", - "php-http/message": "^1.16.0", - "php-http/mock-client": "^1.6.0", - "phpbench/phpbench": "^1.2.5", - "phpunit/phpunit": "^10.5.9", - "psalm/plugin-phpunit": "^0.18.4", - "psr/cache": "^1.0.1 || ^2.0 || ^3.0", - "vimeo/psalm": "~5.20.0" - }, - "suggest": { - "ext-gmp": "Calculate without integer limits", - "ext-intl": "Format Money objects with intl", - "florianv/exchanger": "Exchange rates library for PHP", - "florianv/swap": "Exchange rates library for PHP", - "psr/cache-implementation": "Used for Currency caching" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Money\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mathias Verraes", - "email": "mathias@verraes.net", - "homepage": "http://verraes.net" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - }, - { - "name": "Frederik Bosch", - "email": "f.bosch@genkgo.nl" - } - ], - "description": "PHP implementation of Fowler's Money pattern", - "homepage": "http://moneyphp.org", - "keywords": [ - "Value Object", - "money", - "vo" - ], - "support": { - "issues": "https://github.com/moneyphp/money/issues", - "source": "https://github.com/moneyphp/money/tree/v4.5.0" - }, - "time": "2024-02-15T19:47:21+00:00" - }, { "name": "monolog/monolog", "version": "3.5.0", @@ -4703,40 +4228,38 @@ }, { "name": "nunomaduro/collision", - "version": "v7.10.0", + "version": "v8.1.0", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "49ec67fa7b002712da8526678abd651c09f375b2" + "reference": "0d655ffbf3edf9b366e0eea5ab9c7871e0ab3357" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/49ec67fa7b002712da8526678abd651c09f375b2", - "reference": "49ec67fa7b002712da8526678abd651c09f375b2", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/0d655ffbf3edf9b366e0eea5ab9c7871e0ab3357", + "reference": "0d655ffbf3edf9b366e0eea5ab9c7871e0ab3357", "shasum": "" }, "require": { - "filp/whoops": "^2.15.3", - "nunomaduro/termwind": "^1.15.1", - "php": "^8.1.0", - "symfony/console": "^6.3.4" + "filp/whoops": "^2.15.4", + "nunomaduro/termwind": "^2.0.0", + "php": "^8.2.0", + "symfony/console": "^7.0.2" }, "conflict": { - "laravel/framework": ">=11.0.0" + "laravel/framework": "<11.0.0 || >=12.0.0", + "phpunit/phpunit": "<10.5.1 || >=12.0.0" }, "require-dev": { - "brianium/paratest": "^7.3.0", - "laravel/framework": "^10.28.0", - "laravel/pint": "^1.13.3", - "laravel/sail": "^1.25.0", - "laravel/sanctum": "^3.3.1", - "laravel/tinker": "^2.8.2", - "nunomaduro/larastan": "^2.6.4", - "orchestra/testbench-core": "^8.13.0", - "pestphp/pest": "^2.23.2", - "phpunit/phpunit": "^10.4.1", - "sebastian/environment": "^6.0.1", - "spatie/laravel-ignition": "^2.3.1" + "larastan/larastan": "^2.8.1", + "laravel/framework": "^11.0.0", + "laravel/pint": "^1.13.8", + "laravel/sail": "^1.27.0", + "laravel/sanctum": "^4.0.0", + "laravel/tinker": "^2.9.0", + "orchestra/testbench-core": "^9.0.0", + "pestphp/pest": "^2.31.0 || ^3.0.0", + "sebastian/environment": "^6.0.1 || ^7.0.0" }, "type": "library", "extra": { @@ -4744,6 +4267,9 @@ "providers": [ "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" ] + }, + "branch-alias": { + "dev-8.x": "8.x-dev" } }, "autoload": { @@ -4795,37 +4321,36 @@ "type": "patreon" } ], - "time": "2023-10-11T15:45:01+00:00" + "time": "2024-01-12T13:38:24+00:00" }, { "name": "nunomaduro/termwind", - "version": "v1.15.1", + "version": "v2.0.0", "source": { "type": "git", "url": "https://github.com/nunomaduro/termwind.git", - "reference": "8ab0b32c8caa4a2e09700ea32925441385e4a5dc" + "reference": "e534f661e09b712e51971e2cf0f662f83116d5ad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/8ab0b32c8caa4a2e09700ea32925441385e4a5dc", - "reference": "8ab0b32c8caa4a2e09700ea32925441385e4a5dc", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/e534f661e09b712e51971e2cf0f662f83116d5ad", + "reference": "e534f661e09b712e51971e2cf0f662f83116d5ad", "shasum": "" }, "require": { "ext-mbstring": "*", - "php": "^8.0", - "symfony/console": "^5.3.0|^6.0.0" - }, - "require-dev": { - "ergebnis/phpstan-rules": "^1.0.", - "illuminate/console": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "laravel/pint": "^1.0.0", - "pestphp/pest": "^1.21.0", - "pestphp/pest-plugin-mock": "^1.0", - "phpstan/phpstan": "^1.4.6", - "phpstan/phpstan-strict-rules": "^1.1.0", - "symfony/var-dumper": "^5.2.7|^6.0.0", + "php": "^8.2", + "symfony/console": "^7.0.1" + }, + "require-dev": { + "ergebnis/phpstan-rules": "^2.1.0", + "illuminate/console": "^11.0.0", + "laravel/pint": "^1.13.7", + "mockery/mockery": "^1.6.6", + "pestphp/pest": "^2.28.0", + "phpstan/phpstan": "^1.10.48", + "phpstan/phpstan-strict-rules": "^1.5.2", + "symfony/var-dumper": "^7.0.0", "thecodingmachine/phpstan-strict-rules": "^1.0.0" }, "type": "library", @@ -4834,6 +4359,9 @@ "providers": [ "Termwind\\Laravel\\TermwindServiceProvider" ] + }, + "branch-alias": { + "dev-2.x": "2.x-dev" } }, "autoload": { @@ -4865,7 +4393,7 @@ ], "support": { "issues": "https://github.com/nunomaduro/termwind/issues", - "source": "https://github.com/nunomaduro/termwind/tree/v1.15.1" + "source": "https://github.com/nunomaduro/termwind/tree/v2.0.0" }, "funding": [ { @@ -4881,7 +4409,7 @@ "type": "github" } ], - "time": "2023-02-08T01:06:31+00:00" + "time": "2023-12-08T16:23:40+00:00" }, { "name": "openspout/openspout", @@ -4978,39 +4506,40 @@ }, { "name": "orchestra/canvas", - "version": "v8.11.7", + "version": "9.x-dev", "source": { "type": "git", "url": "https://github.com/orchestral/canvas.git", - "reference": "e4a0157f522222725f1559bde0da1091a91542fb" + "reference": "44047cc3342101f6abcc508b9d7a68e2864600bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/orchestral/canvas/zipball/e4a0157f522222725f1559bde0da1091a91542fb", - "reference": "e4a0157f522222725f1559bde0da1091a91542fb", + "url": "https://api.github.com/repos/orchestral/canvas/zipball/44047cc3342101f6abcc508b9d7a68e2864600bc", + "reference": "44047cc3342101f6abcc508b9d7a68e2864600bc", "shasum": "" }, "require": { "composer-runtime-api": "^2.2", "composer/semver": "^3.0", - "illuminate/console": "^10.39", - "illuminate/database": "^10.39", - "illuminate/filesystem": "^10.39", - "illuminate/support": "^10.39", - "orchestra/canvas-core": "^8.10.2", - "orchestra/testbench-core": "^8.19", - "php": "^8.1", + "illuminate/console": "^11.0", + "illuminate/database": "^11.0", + "illuminate/filesystem": "^11.0", + "illuminate/support": "^11.0", + "orchestra/canvas-core": "^9.0", + "orchestra/testbench-core": "^9.0", + "php": "^8.2", "symfony/polyfill-php83": "^1.28", - "symfony/yaml": "^6.2" + "symfony/yaml": "^7.0" }, "require-dev": { - "laravel/framework": "^10.39", + "laravel/framework": "^11.0", "laravel/pint": "^1.6", - "mockery/mockery": "^1.5.1", - "phpstan/phpstan": "^1.10.5", - "phpunit/phpunit": "^10.1", - "spatie/laravel-ray": "^1.32.4" + "mockery/mockery": "^1.6", + "phpstan/phpstan": "^1.10.6", + "phpunit/phpunit": "^10.5", + "spatie/laravel-ray": "^1.35" }, + "default-branch": true, "bin": [ "canvas" ], @@ -5047,45 +4576,42 @@ "description": "Code Generators for Laravel Applications and Packages", "support": { "issues": "https://github.com/orchestral/canvas/issues", - "source": "https://github.com/orchestral/canvas/tree/v8.11.7" + "source": "https://github.com/orchestral/canvas/tree/9.x" }, - "time": "2024-02-07T10:29:23+00:00" + "time": "2024-02-15T23:33:32+00:00" }, { "name": "orchestra/canvas-core", - "version": "v8.10.2", + "version": "9.x-dev", "source": { "type": "git", "url": "https://github.com/orchestral/canvas-core.git", - "reference": "3af8fb6b1ebd85903ba5d0e6df1c81aedacfedfc" + "reference": "b90e4bb4a4b4d4354269ab11a8dfde0ffb697774" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/orchestral/canvas-core/zipball/3af8fb6b1ebd85903ba5d0e6df1c81aedacfedfc", - "reference": "3af8fb6b1ebd85903ba5d0e6df1c81aedacfedfc", + "url": "https://api.github.com/repos/orchestral/canvas-core/zipball/b90e4bb4a4b4d4354269ab11a8dfde0ffb697774", + "reference": "b90e4bb4a4b4d4354269ab11a8dfde0ffb697774", "shasum": "" }, "require": { "composer-runtime-api": "^2.2", "composer/semver": "^3.0", - "illuminate/console": "^10.38.1", - "illuminate/filesystem": "^10.38.1", - "php": "^8.1", + "illuminate/console": "^11.0", + "illuminate/filesystem": "^11.0", + "php": "^8.2", "symfony/polyfill-php83": "^1.28" }, - "conflict": { - "orchestra/canvas": "<8.11.0", - "orchestra/testbench-core": "<8.2.0" - }, "require-dev": { - "laravel/framework": "^10.38.1", + "laravel/framework": "^11.0", "laravel/pint": "^1.6", "mockery/mockery": "^1.5.1", - "orchestra/testbench-core": "^8.19", + "orchestra/testbench-core": "^9.0", "phpstan/phpstan": "^1.10.6", "phpunit/phpunit": "^10.1", - "symfony/yaml": "^6.2" + "symfony/yaml": "^7.0" }, + "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -5119,37 +4645,38 @@ "description": "Code Generators Builder for Laravel Applications and Packages", "support": { "issues": "https://github.com/orchestral/canvas/issues", - "source": "https://github.com/orchestral/canvas-core/tree/v8.10.2" + "source": "https://github.com/orchestral/canvas-core/tree/9.x" }, - "time": "2023-12-28T01:27:59+00:00" + "time": "2024-01-08T05:31:27+00:00" }, { "name": "orchestra/testbench", - "version": "v8.21.1", + "version": "9.x-dev", "source": { "type": "git", "url": "https://github.com/orchestral/testbench.git", - "reference": "c22a81802a68e746e032edf65cbb68af28a52670" + "reference": "c1a5b1f059c7a6fb14436355c9b42aff87469962" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/orchestral/testbench/zipball/c22a81802a68e746e032edf65cbb68af28a52670", - "reference": "c22a81802a68e746e032edf65cbb68af28a52670", + "url": "https://api.github.com/repos/orchestral/testbench/zipball/c1a5b1f059c7a6fb14436355c9b42aff87469962", + "reference": "c1a5b1f059c7a6fb14436355c9b42aff87469962", "shasum": "" }, "require": { "composer-runtime-api": "^2.2", - "fakerphp/faker": "^1.21", - "laravel/framework": "^10.40", - "mockery/mockery": "^1.5.1", - "orchestra/testbench-core": "^8.21.1", - "orchestra/workbench": "^1.2 || ^8.2", - "php": "^8.1", - "phpunit/phpunit": "^9.6 || ^10.1", - "symfony/process": "^6.2", - "symfony/yaml": "^6.2", + "fakerphp/faker": "^1.23", + "laravel/framework": "^11.0", + "mockery/mockery": "^1.6", + "orchestra/testbench-core": "^9.0", + "orchestra/workbench": "^9.0", + "php": "^8.2", + "phpunit/phpunit": "^10.5 || ^11.0.1", + "symfony/process": "^7.0", + "symfony/yaml": "^7.0", "vlucas/phpdotenv": "^5.4.1" }, + "default-branch": true, "type": "library", "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5174,63 +4701,61 @@ ], "support": { "issues": "https://github.com/orchestral/testbench/issues", - "source": "https://github.com/orchestral/testbench/tree/v8.21.1" + "source": "https://github.com/orchestral/testbench/tree/9.x" }, - "time": "2024-01-22T03:22:22+00:00" + "time": "2024-02-15T00:56:50+00:00" }, { "name": "orchestra/testbench-core", - "version": "v8.22.1", + "version": "9.x-dev", "source": { "type": "git", "url": "https://github.com/orchestral/testbench-core.git", - "reference": "b0006c092694828f4b0fa409a369b798e5e26f8d" + "reference": "7649de01d6574827e30b08a130f3589e7e61b986" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/orchestral/testbench-core/zipball/b0006c092694828f4b0fa409a369b798e5e26f8d", - "reference": "b0006c092694828f4b0fa409a369b798e5e26f8d", + "url": "https://api.github.com/repos/orchestral/testbench-core/zipball/7649de01d6574827e30b08a130f3589e7e61b986", + "reference": "7649de01d6574827e30b08a130f3589e7e61b986", "shasum": "" }, "require": { "composer-runtime-api": "^2.2", - "php": "^8.1", + "php": "^8.2", "symfony/polyfill-php83": "^1.28" }, "conflict": { - "brianium/paratest": "<6.4.0 || >=7.0.0 <7.1.4 || >=8.0.0", - "laravel/framework": "<10.40 || >=11.0.0", - "nunomaduro/collision": "<6.4.0 || >=7.0.0 <7.4.0 || >=8.0.0", - "orchestra/testbench-dusk": "<8.21.0 || >=9.0.0", - "orchestra/workbench": "<1.0.0", - "phpunit/phpunit": "<9.6.0 || >=10.6.0" + "brianium/paratest": "<7.3.0 || >=8.0.0", + "laravel/framework": "<11.0.0 || >=12.0.0", + "nunomaduro/collision": "<8.0.0 || >=9.0.0", + "phpunit/phpunit": "<10.5.0 || 11.0.0 || >=11.1.0" }, "require-dev": { - "fakerphp/faker": "^1.21", - "laravel/framework": "^10.40", + "fakerphp/faker": "^1.23", + "laravel/framework": "^11.0", "laravel/pint": "^1.6", - "mockery/mockery": "^1.5.1", - "phpstan/phpstan": "^1.10.7", - "phpunit/phpunit": "^10.1", - "spatie/laravel-ray": "^1.32.4", - "symfony/process": "^6.2", - "symfony/yaml": "^6.2", + "mockery/mockery": "^1.6", + "phpstan/phpstan": "^1.10.50", + "phpunit/phpunit": "^10.5 || ^11.0.1", + "spatie/laravel-ray": "^1.35", + "symfony/process": "^7.0", + "symfony/yaml": "^7.0", "vlucas/phpdotenv": "^5.4.1" }, "suggest": { - "brianium/paratest": "Allow using parallel testing (^6.4 || ^7.1.4).", + "brianium/paratest": "Allow using parallel tresting (^7.3).", "ext-pcntl": "Required to use all features of the console signal trapping.", - "fakerphp/faker": "Allow using Faker for testing (^1.21).", - "laravel/framework": "Required for testing (^10.40).", - "mockery/mockery": "Allow using Mockery for testing (^1.5.1).", - "nunomaduro/collision": "Allow using Laravel style tests output and parallel testing (^6.4 || ^7.4).", - "orchestra/testbench-browser-kit": "Allow using legacy Laravel BrowserKit for testing (^8.0).", - "orchestra/testbench-dusk": "Allow using Laravel Dusk for testing (^8.0).", - "phpunit/phpunit": "Allow using PHPUnit for testing (^9.6 || ^10.1).", - "symfony/process": "Required to use Orchestra\\Testbench\\remote function (^6.2).", - "symfony/yaml": "Required for Testbench CLI (^6.2).", + "fakerphp/faker": "Allow using Faker for testing (^1.23).", + "laravel/framework": "Required for testing (^11.0).", + "mockery/mockery": "Allow using Mockery for testing (^1.6).", + "nunomaduro/collision": "Allow using Laravel style tests output and parallel testing (^8.0).", + "orchestra/testbench-dusk": "Allow using Laravel Dusk for testing (^9.0).", + "phpunit/phpunit": "Allow using PHPUnit for testing (^10.5).", + "symfony/process": "Required to use Orchestra\\Testbench\\remote function (^7.0).", + "symfony/yaml": "Required for Testbench CLI (^7.0).", "vlucas/phpdotenv": "Required for Testbench CLI (^5.4.1)." }, + "default-branch": true, "bin": [ "testbench" ], @@ -5268,50 +4793,46 @@ "issues": "https://github.com/orchestral/testbench/issues", "source": "https://github.com/orchestral/testbench-core" }, - "time": "2024-02-21T23:33:22+00:00" + "time": "2024-02-24T03:20:47+00:00" }, { "name": "orchestra/workbench", - "version": "v8.2.1", + "version": "9.x-dev", "source": { "type": "git", "url": "https://github.com/orchestral/workbench.git", - "reference": "e8e6e4dcf6fb26ea1924c3581e49aa347691a8ea" + "reference": "8ad0b5cfcd5abd3c06b3b928cd25e1f4ef5b4502" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/orchestral/workbench/zipball/e8e6e4dcf6fb26ea1924c3581e49aa347691a8ea", - "reference": "e8e6e4dcf6fb26ea1924c3581e49aa347691a8ea", + "url": "https://api.github.com/repos/orchestral/workbench/zipball/8ad0b5cfcd5abd3c06b3b928cd25e1f4ef5b4502", + "reference": "8ad0b5cfcd5abd3c06b3b928cd25e1f4ef5b4502", "shasum": "" }, "require": { "composer-runtime-api": "^2.2", - "fakerphp/faker": "^1.21", - "laravel/framework": "^10.38.1", - "laravel/tinker": "^2.8.2", - "orchestra/canvas": "^8.11.4", - "orchestra/testbench-core": "^8.17", + "fakerphp/faker": "^1.23", + "laravel/framework": "^11.0", + "laravel/tinker": "^2.9", + "orchestra/canvas": "^9.0", + "orchestra/testbench-core": "^9.0", "php": "^8.1", - "spatie/laravel-ray": "^1.32.4", + "spatie/laravel-ray": "^1.35", "symfony/polyfill-php83": "^1.28", - "symfony/yaml": "^6.2" + "symfony/yaml": "^7.0" }, "require-dev": { - "laravel/pint": "^1.4", - "mockery/mockery": "^1.5.1", - "phpstan/phpstan": "^1.10.7", - "phpunit/phpunit": "^10.1", - "symfony/process": "^6.2" + "laravel/pint": "^1.6", + "mockery/mockery": "^1.6", + "phpstan/phpstan": "^1.10.50", + "phpunit/phpunit": "^10.5 || ^11.0", + "symfony/process": "^7.0" }, "suggest": { "ext-pcntl": "Required to use all features of the console signal trapping." }, + "default-branch": true, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.5.x-dev" - } - }, "autoload": { "psr-4": { "Orchestra\\Workbench\\": "src/" @@ -5336,9 +4857,9 @@ ], "support": { "issues": "https://github.com/orchestral/workbench/issues", - "source": "https://github.com/orchestral/workbench/tree/v8.2.1" + "source": "https://github.com/orchestral/workbench/tree/9.x" }, - "time": "2023-12-28T15:15:44+00:00" + "time": "2024-02-18T13:21:53+00:00" }, { "name": "pestphp/pest", @@ -6198,16 +5719,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.10.54", + "version": "1.10.59", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "3e25f279dada0adc14ffd7bad09af2e2fc3523bb" + "reference": "e607609388d3a6d418a50a49f7940e8086798281" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/3e25f279dada0adc14ffd7bad09af2e2fc3523bb", - "reference": "3e25f279dada0adc14ffd7bad09af2e2fc3523bb", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e607609388d3a6d418a50a49f7940e8086798281", + "reference": "e607609388d3a6d418a50a49f7940e8086798281", "shasum": "" }, "require": { @@ -6256,7 +5777,7 @@ "type": "tidelift" } ], - "time": "2024-01-05T15:50:47+00:00" + "time": "2024-02-20T13:59:13+00:00" }, { "name": "phpunit/php-code-coverage", @@ -6695,70 +6216,21 @@ "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/container": "^1.1 || ^2.0" - }, - "require-dev": { - "symfony/phpunit-bridge": "^5.4@dev" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Pimple": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Pimple, a simple Dependency Injection Container", - "homepage": "https://pimple.symfony.com", - "keywords": [ - "container", - "dependency injection" - ], - "support": { - "source": "https://github.com/silexphp/Pimple/tree/v3.5.0" - }, - "time": "2021-10-28T11:13:42+00:00" - }, - { - "name": "psr/cache", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/cache.git", - "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", - "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", - "shasum": "" - }, - "require": { - "php": ">=8.0.0" + "php": ">=7.2.5", + "psr/container": "^1.1 || ^2.0" + }, + "require-dev": { + "symfony/phpunit-bridge": "^5.4@dev" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "3.4.x-dev" } }, "autoload": { - "psr-4": { - "Psr\\Cache\\": "src/" + "psr-0": { + "Pimple": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -6767,20 +6239,20 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], - "description": "Common interface for caching libraries", + "description": "Pimple, a simple Dependency Injection Container", + "homepage": "https://pimple.symfony.com", "keywords": [ - "cache", - "psr", - "psr-6" + "container", + "dependency injection" ], "support": { - "source": "https://github.com/php-fig/cache/tree/3.0.0" + "source": "https://github.com/silexphp/Pimple/tree/v3.5.0" }, - "time": "2021-02-03T23:26:27+00:00" + "time": "2021-10-28T11:13:42+00:00" }, { "name": "psr/clock", @@ -7500,21 +6972,21 @@ }, { "name": "rector/rector", - "version": "0.17.13", + "version": "1.0.1", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "e2003ba7c5bda06d7bb419cf4be8dae5f8672132" + "reference": "258b775511e62a7188f8ce114d44acaf244d9a7d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/e2003ba7c5bda06d7bb419cf4be8dae5f8672132", - "reference": "e2003ba7c5bda06d7bb419cf4be8dae5f8672132", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/258b775511e62a7188f8ce114d44acaf244d9a7d", + "reference": "258b775511e62a7188f8ce114d44acaf244d9a7d", "shasum": "" }, "require": { "php": "^7.2|^8.0", - "phpstan/phpstan": "^1.10.26" + "phpstan/phpstan": "^1.10.57" }, "conflict": { "rector/rector-doctrine": "*", @@ -7544,7 +7016,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/0.17.13" + "source": "https://github.com/rectorphp/rector/tree/1.0.1" }, "funding": [ { @@ -7552,37 +7024,37 @@ "type": "github" } ], - "time": "2023-08-14T16:33:29+00:00" + "time": "2024-02-16T07:53:23+00:00" }, { "name": "ryangjchandler/blade-capture-directive", - "version": "v0.3.0", + "version": "v1.0.0", "source": { "type": "git", "url": "https://github.com/ryangjchandler/blade-capture-directive.git", - "reference": "62fd2ecb50b938a46025093bcb64fcaddd531f89" + "reference": "cb6f58663d97f17bece176295240b740835e14f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ryangjchandler/blade-capture-directive/zipball/62fd2ecb50b938a46025093bcb64fcaddd531f89", - "reference": "62fd2ecb50b938a46025093bcb64fcaddd531f89", + "url": "https://api.github.com/repos/ryangjchandler/blade-capture-directive/zipball/cb6f58663d97f17bece176295240b740835e14f1", + "reference": "cb6f58663d97f17bece176295240b740835e14f1", "shasum": "" }, "require": { - "illuminate/contracts": "^9.0|^10.0", - "php": "^8.0", + "illuminate/contracts": "^10.0|^11.0", + "php": "^8.1", "spatie/laravel-package-tools": "^1.9.2" }, "require-dev": { - "nunomaduro/collision": "^6.0|^7.0", + "nunomaduro/collision": "^7.0|^8.0", "nunomaduro/larastan": "^2.0", - "orchestra/testbench": "^7.22|^8.0", - "pestphp/pest": "^1.21", - "pestphp/pest-plugin-laravel": "^1.1", + "orchestra/testbench": "^8.0|^9.0", + "pestphp/pest": "^2.0", + "pestphp/pest-plugin-laravel": "^2.0", "phpstan/extension-installer": "^1.1", "phpstan/phpstan-deprecation-rules": "^1.0", "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^9.5", + "phpunit/phpunit": "^10.0", "spatie/laravel-ray": "^1.26" }, "type": "library", @@ -7622,7 +7094,7 @@ ], "support": { "issues": "https://github.com/ryangjchandler/blade-capture-directive/issues", - "source": "https://github.com/ryangjchandler/blade-capture-directive/tree/v0.3.0" + "source": "https://github.com/ryangjchandler/blade-capture-directive/tree/v1.0.0" }, "funding": [ { @@ -7630,7 +7102,7 @@ "type": "github" } ], - "time": "2023-02-14T16:54:54+00:00" + "time": "2024-02-26T18:08:49+00:00" }, { "name": "sebastian/cli-parser", @@ -8670,28 +8142,28 @@ }, { "name": "spatie/eloquent-sortable", - "version": "4.1.1", + "version": "4.2.0", "source": { "type": "git", "url": "https://github.com/spatie/eloquent-sortable.git", - "reference": "7614a20c417b53e025b17eac8e84bc3d65962428" + "reference": "d7940cc59af939b27422a8e7a4020ac8c5d93a77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/eloquent-sortable/zipball/7614a20c417b53e025b17eac8e84bc3d65962428", - "reference": "7614a20c417b53e025b17eac8e84bc3d65962428", + "url": "https://api.github.com/repos/spatie/eloquent-sortable/zipball/d7940cc59af939b27422a8e7a4020ac8c5d93a77", + "reference": "d7940cc59af939b27422a8e7a4020ac8c5d93a77", "shasum": "" }, "require": { - "illuminate/database": "^9.0|^10.0", - "illuminate/support": "^9.0|^10.0", - "nesbot/carbon": "^2.63", + "illuminate/database": "^9.31|^10.0|^11.0", + "illuminate/support": "^9.31|^10.0|^11.0", + "nesbot/carbon": "^2.63|^3.0", "php": "^8.1", "spatie/laravel-package-tools": "^1.9" }, "require-dev": { - "orchestra/testbench": "^7.0|^8.0", - "phpunit/phpunit": "^9.5" + "orchestra/testbench": "^7.0|^8.0|^9.0", + "phpunit/phpunit": "^9.5|^10.0" }, "type": "library", "extra": { @@ -8728,7 +8200,7 @@ ], "support": { "issues": "https://github.com/spatie/eloquent-sortable/issues", - "source": "https://github.com/spatie/eloquent-sortable/tree/4.1.1" + "source": "https://github.com/spatie/eloquent-sortable/tree/4.2.0" }, "funding": [ { @@ -8740,20 +8212,20 @@ "type": "github" } ], - "time": "2024-01-22T08:45:25+00:00" + "time": "2024-02-26T11:54:22+00:00" }, { "name": "spatie/image", - "version": "3.3.5", + "version": "3.3.6", "source": { "type": "git", "url": "https://github.com/spatie/image.git", - "reference": "e74f161b1e28e97752a70ef456f5ae7bad2277c1" + "reference": "bca8c2f8a826c9b9cf3368864e15785f91be5ff1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/image/zipball/e74f161b1e28e97752a70ef456f5ae7bad2277c1", - "reference": "e74f161b1e28e97752a70ef456f5ae7bad2277c1", + "url": "https://api.github.com/repos/spatie/image/zipball/bca8c2f8a826c9b9cf3368864e15785f91be5ff1", + "reference": "bca8c2f8a826c9b9cf3368864e15785f91be5ff1", "shasum": "" }, "require": { @@ -8800,7 +8272,7 @@ "spatie" ], "support": { - "source": "https://github.com/spatie/image/tree/3.3.5" + "source": "https://github.com/spatie/image/tree/3.3.6" }, "funding": [ { @@ -8812,7 +8284,7 @@ "type": "github" } ], - "time": "2024-02-16T10:03:53+00:00" + "time": "2024-02-26T13:32:58+00:00" }, { "name": "spatie/image-optimizer", @@ -9098,38 +8570,40 @@ }, { "name": "spatie/laravel-ray", - "version": "1.33.1", + "version": "1.35.1", "source": { "type": "git", "url": "https://github.com/spatie/laravel-ray.git", - "reference": "b9574cec543b932d99e68247eaeb37876c71c8eb" + "reference": "f504d3787d88c7e5de7a4290658f7ad9b1352f22" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ray/zipball/b9574cec543b932d99e68247eaeb37876c71c8eb", - "reference": "b9574cec543b932d99e68247eaeb37876c71c8eb", + "url": "https://api.github.com/repos/spatie/laravel-ray/zipball/f504d3787d88c7e5de7a4290658f7ad9b1352f22", + "reference": "f504d3787d88c7e5de7a4290658f7ad9b1352f22", "shasum": "" }, "require": { "ext-json": "*", - "illuminate/contracts": "^7.20|^8.19|^9.0|^10.0", - "illuminate/database": "^7.20|^8.19|^9.0|^10.0", - "illuminate/queue": "^7.20|^8.19|^9.0|^10.0", - "illuminate/support": "^7.20|^8.19|^9.0|^10.0", + "illuminate/contracts": "^7.20|^8.19|^9.0|^10.0|^11.0", + "illuminate/database": "^7.20|^8.19|^9.0|^10.0|^11.0", + "illuminate/queue": "^7.20|^8.19|^9.0|^10.0|^11.0", + "illuminate/support": "^7.20|^8.19|^9.0|^10.0|^11.0", "php": "^7.4|^8.0", + "rector/rector": "^0.19.2|^1.0", "spatie/backtrace": "^1.0", - "spatie/ray": "^1.37", + "spatie/ray": "^1.41.1", "symfony/stopwatch": "4.2|^5.1|^6.0|^7.0", "zbateson/mail-mime-parser": "^1.3.1|^2.0" }, "require-dev": { "guzzlehttp/guzzle": "^7.3", - "laravel/framework": "^7.20|^8.19|^9.0|^10.0", - "orchestra/testbench-core": "^5.0|^6.0|^7.0|^8.0", - "pestphp/pest": "^1.22", - "phpstan/phpstan": "^0.12.93", - "phpunit/phpunit": "^9.3", - "spatie/pest-plugin-snapshots": "^1.1" + "laravel/framework": "^7.20|^8.19|^9.0|^10.0|^11.0", + "orchestra/testbench-core": "^5.0|^6.0|^7.0|^8.0|^9.0", + "pestphp/pest": "^1.22|^2.0", + "phpstan/phpstan": "^1.10.57", + "phpunit/phpunit": "^9.3|^10.1", + "spatie/pest-plugin-snapshots": "^1.1|^2.0", + "symfony/var-dumper": "^4.2|^5.1|^6.0|^7.0.3" }, "type": "library", "extra": { @@ -9167,7 +8641,7 @@ ], "support": { "issues": "https://github.com/spatie/laravel-ray/issues", - "source": "https://github.com/spatie/laravel-ray/tree/1.33.1" + "source": "https://github.com/spatie/laravel-ray/tree/1.35.1" }, "funding": [ { @@ -9179,7 +8653,7 @@ "type": "other" } ], - "time": "2024-01-04T21:36:17+00:00" + "time": "2024-02-13T14:19:41+00:00" }, { "name": "spatie/laravel-tags", @@ -9253,16 +8727,16 @@ }, { "name": "spatie/laravel-translatable", - "version": "6.6.0", + "version": "6.6.1", "source": { "type": "git", "url": "https://github.com/spatie/laravel-translatable.git", - "reference": "11f0b548dd43b846a5bdca1431de173ac77ed349" + "reference": "1437edfc264788ba20138f865ffd6e76dc3d0672" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-translatable/zipball/11f0b548dd43b846a5bdca1431de173ac77ed349", - "reference": "11f0b548dd43b846a5bdca1431de173ac77ed349", + "url": "https://api.github.com/repos/spatie/laravel-translatable/zipball/1437edfc264788ba20138f865ffd6e76dc3d0672", + "reference": "1437edfc264788ba20138f865ffd6e76dc3d0672", "shasum": "" }, "require": { @@ -9323,7 +8797,7 @@ ], "support": { "issues": "https://github.com/spatie/laravel-translatable/issues", - "source": "https://github.com/spatie/laravel-translatable/tree/6.6.0" + "source": "https://github.com/spatie/laravel-translatable/tree/6.6.1" }, "funding": [ { @@ -9331,7 +8805,7 @@ "type": "github" } ], - "time": "2024-02-23T13:52:34+00:00" + "time": "2024-02-26T08:37:34+00:00" }, { "name": "spatie/macroable", @@ -9526,30 +9000,33 @@ }, { "name": "staudenmeir/belongs-to-through", - "version": "v2.15.1", + "version": "dev-l11", "source": { "type": "git", "url": "https://github.com/staudenmeir/belongs-to-through.git", - "reference": "002b2eab60c03a41c0be709710300d22776b07a5" + "reference": "b637ea8c4ca4113df36d140b0b083c01cfffe33e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/staudenmeir/belongs-to-through/zipball/002b2eab60c03a41c0be709710300d22776b07a5", - "reference": "002b2eab60c03a41c0be709710300d22776b07a5", + "url": "https://api.github.com/repos/staudenmeir/belongs-to-through/zipball/b637ea8c4ca4113df36d140b0b083c01cfffe33e", + "reference": "b637ea8c4ca4113df36d140b0b083c01cfffe33e", "shasum": "" }, "require": { - "illuminate/database": "^10.0", - "php": "^8.1" + "illuminate/database": "^11.0", + "php": "^8.2" }, "require-dev": { - "barryvdh/laravel-ide-helper": "^2.13", - "orchestra/testbench": "^8.17", + "barryvdh/laravel-ide-helper": "^3.0", + "orchestra/testbench": "^9.0", "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^10.1" + "phpunit/phpunit": "^10.5" }, "type": "library", "extra": { + "branch-alias": { + "dev-l11": "2.16.x-dev" + }, "laravel": { "providers": [ "Staudenmeir\\BelongsToThrough\\IdeHelperServiceProvider" @@ -9579,7 +9056,7 @@ "description": "Laravel Eloquent BelongsToThrough relationships", "support": { "issues": "https://github.com/staudenmeir/belongs-to-through/issues", - "source": "https://github.com/staudenmeir/belongs-to-through/tree/v2.15.1" + "source": "https://github.com/staudenmeir/belongs-to-through/tree/l11" }, "funding": [ { @@ -9587,42 +9064,42 @@ "type": "custom" } ], - "time": "2023-12-19T11:58:06+00:00" + "time": "2024-02-17T13:20:12+00:00" }, { "name": "staudenmeir/eloquent-has-many-deep", - "version": "v1.19.3", + "version": "dev-l11", "source": { "type": "git", "url": "https://github.com/staudenmeir/eloquent-has-many-deep.git", - "reference": "35e6a2f18a6605cbeda69573080c4ba008501971" + "reference": "c9cfb11a068b4a754da84dbd342d606fb7f6533c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/staudenmeir/eloquent-has-many-deep/zipball/35e6a2f18a6605cbeda69573080c4ba008501971", - "reference": "35e6a2f18a6605cbeda69573080c4ba008501971", + "url": "https://api.github.com/repos/staudenmeir/eloquent-has-many-deep/zipball/c9cfb11a068b4a754da84dbd342d606fb7f6533c", + "reference": "c9cfb11a068b4a754da84dbd342d606fb7f6533c", "shasum": "" }, "require": { - "illuminate/database": "^10.0", - "php": "^8.1", - "staudenmeir/eloquent-has-many-deep-contracts": "^1.1" + "illuminate/database": "^11.0", + "php": "^8.2", + "staudenmeir/eloquent-has-many-deep-contracts": "^1.2" }, "require-dev": { - "awobaz/compoships": "^2.2", - "barryvdh/laravel-ide-helper": "^2.13", - "illuminate/pagination": "^10.0", - "korridor/laravel-has-many-merged": "^1.0", + "barryvdh/laravel-ide-helper": "^3.0", + "illuminate/pagination": "^11.0", "mockery/mockery": "^1.6", - "orchestra/testbench": "^8.13", + "orchestra/testbench": "^9.0", "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" + "phpunit/phpunit": "^10.5", + "staudenmeir/eloquent-json-relations": "^1.11", + "staudenmeir/laravel-adjacency-list": "^1.20" }, "type": "library", "extra": { + "branch-alias": { + "dev-l11": "1.20.x-dev" + }, "laravel": { "providers": [ "Staudenmeir\\EloquentHasManyDeep\\IdeHelperServiceProvider" @@ -9647,7 +9124,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.19.3" + "source": "https://github.com/staudenmeir/eloquent-has-many-deep/tree/l11" }, "funding": [ { @@ -9655,25 +9132,25 @@ "type": "custom" } ], - "time": "2024-02-07T21:23:00+00:00" + "time": "2024-02-17T13:24:29+00:00" }, { "name": "staudenmeir/eloquent-has-many-deep-contracts", - "version": "v1.1", + "version": "v1.2", "source": { "type": "git", "url": "https://github.com/staudenmeir/eloquent-has-many-deep-contracts.git", - "reference": "c39317b839d6123be126b9980e4a3d38310f5939" + "reference": "bcbe1a921caad7201b324e297eddb696d4bd8647" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/staudenmeir/eloquent-has-many-deep-contracts/zipball/c39317b839d6123be126b9980e4a3d38310f5939", - "reference": "c39317b839d6123be126b9980e4a3d38310f5939", + "url": "https://api.github.com/repos/staudenmeir/eloquent-has-many-deep-contracts/zipball/bcbe1a921caad7201b324e297eddb696d4bd8647", + "reference": "bcbe1a921caad7201b324e297eddb696d4bd8647", "shasum": "" }, "require": { - "illuminate/database": "^10.0", - "php": "^8.1" + "illuminate/database": "^11.0", + "php": "^8.2" }, "type": "library", "autoload": { @@ -9694,114 +9171,52 @@ "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.1" - }, - "time": "2023-01-18T12:43:26+00:00" - }, - { - "name": "stripe/stripe-php", - "version": "v10.21.0", - "source": { - "type": "git", - "url": "https://github.com/stripe/stripe-php.git", - "reference": "b4ab319731958077227fad1874a3671458c5d593" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/stripe/stripe-php/zipball/b4ab319731958077227fad1874a3671458c5d593", - "reference": "b4ab319731958077227fad1874a3671458c5d593", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "php": ">=5.6.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "3.5.0", - "php-coveralls/php-coveralls": "^2.5", - "phpstan/phpstan": "^1.2", - "phpunit/phpunit": "^5.7 || ^9.0", - "squizlabs/php_codesniffer": "^3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "psr-4": { - "Stripe\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Stripe and contributors", - "homepage": "https://github.com/stripe/stripe-php/contributors" - } - ], - "description": "Stripe PHP Library", - "homepage": "https://stripe.com/", - "keywords": [ - "api", - "payment processing", - "stripe" - ], - "support": { - "issues": "https://github.com/stripe/stripe-php/issues", - "source": "https://github.com/stripe/stripe-php/tree/v10.21.0" + "source": "https://github.com/staudenmeir/eloquent-has-many-deep-contracts/tree/v1.2" }, - "time": "2023-08-11T00:23:24+00:00" + "time": "2024-01-18T01:20:44+00:00" }, { "name": "symfony/console", - "version": "v6.4.3", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "2aaf83b4de5b9d43b93e4aec6f2f8b676f7c567e" + "reference": "c5010d50f1ee4b25cfa0201d9915cf1b14071456" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/2aaf83b4de5b9d43b93e4aec6f2f8b676f7c567e", - "reference": "2aaf83b4de5b9d43b93e4aec6f2f8b676f7c567e", + "url": "https://api.github.com/repos/symfony/console/zipball/c5010d50f1ee4b25cfa0201d9915cf1b14071456", + "reference": "c5010d50f1ee4b25cfa0201d9915cf1b14071456", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", + "php": ">=8.2", "symfony/polyfill-mbstring": "~1.0", "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^5.4|^6.0|^7.0" + "symfony/string": "^6.4|^7.0" }, "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" + "symfony/dependency-injection": "<6.4", + "symfony/dotenv": "<6.4", + "symfony/event-dispatcher": "<6.4", + "symfony/lock": "<6.4", + "symfony/process": "<6.4" }, "provide": { "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", "symfony/http-foundation": "^6.4|^7.0", "symfony/http-kernel": "^6.4|^7.0", - "symfony/lock": "^5.4|^6.0|^7.0", - "symfony/messenger": "^5.4|^6.0|^7.0", - "symfony/process": "^5.4|^6.0|^7.0", - "symfony/stopwatch": "^5.4|^6.0|^7.0", - "symfony/var-dumper": "^5.4|^6.0|^7.0" + "symfony/lock": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/stopwatch": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -9835,7 +9250,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.3" + "source": "https://github.com/symfony/console/tree/v7.0.3" }, "funding": [ { @@ -9851,7 +9266,7 @@ "type": "tidelift" } ], - "time": "2024-01-23T14:51:35+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/css-selector", @@ -9987,22 +9402,22 @@ }, { "name": "symfony/error-handler", - "version": "v6.4.3", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "6dc3c76a278b77f01d864a6005d640822c6f26a6" + "reference": "9441608b79577176b6d8e44012cc3d20b4b45242" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/6dc3c76a278b77f01d864a6005d640822c6f26a6", - "reference": "6dc3c76a278b77f01d864a6005d640822c6f26a6", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/9441608b79577176b6d8e44012cc3d20b4b45242", + "reference": "9441608b79577176b6d8e44012cc3d20b4b45242", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0|^7.0" + "symfony/var-dumper": "^6.4|^7.0" }, "conflict": { "symfony/deprecation-contracts": "<2.5", @@ -10011,7 +9426,7 @@ "require-dev": { "symfony/deprecation-contracts": "^2.5|^3", "symfony/http-kernel": "^6.4|^7.0", - "symfony/serializer": "^5.4|^6.0|^7.0" + "symfony/serializer": "^6.4|^7.0" }, "bin": [ "Resources/bin/patch-type-declarations" @@ -10042,7 +9457,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.4.3" + "source": "https://github.com/symfony/error-handler/tree/v7.0.3" }, "funding": [ { @@ -10058,7 +9473,7 @@ "type": "tidelift" } ], - "time": "2024-01-29T15:40:36+00:00" + "time": "2024-01-29T15:41:16+00:00" }, { "name": "symfony/event-dispatcher", @@ -10218,23 +9633,23 @@ }, { "name": "symfony/finder", - "version": "v6.4.0", + "version": "v7.0.0", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "11d736e97f116ac375a81f96e662911a34cd50ce" + "reference": "6e5688d69f7cfc4ed4a511e96007e06c2d34ce56" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/11d736e97f116ac375a81f96e662911a34cd50ce", - "reference": "11d736e97f116ac375a81f96e662911a34cd50ce", + "url": "https://api.github.com/repos/symfony/finder/zipball/6e5688d69f7cfc4ed4a511e96007e06c2d34ce56", + "reference": "6e5688d69f7cfc4ed4a511e96007e06c2d34ce56", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "require-dev": { - "symfony/filesystem": "^6.0|^7.0" + "symfony/filesystem": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -10262,7 +9677,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.4.0" + "source": "https://github.com/symfony/finder/tree/v7.0.0" }, "funding": [ { @@ -10278,7 +9693,7 @@ "type": "tidelift" } ], - "time": "2023-10-31T17:30:12+00:00" + "time": "2023-10-31T17:59:56+00:00" }, { "name": "symfony/html-sanitizer", @@ -10351,36 +9766,36 @@ }, { "name": "symfony/http-foundation", - "version": "v6.4.3", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "5677bdf7cade4619cb17fc9e1e7b31ec392244a9" + "reference": "f24e2568376e98978022fd09ce45e2dd049e67c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/5677bdf7cade4619cb17fc9e1e7b31ec392244a9", - "reference": "5677bdf7cade4619cb17fc9e1e7b31ec392244a9", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/f24e2568376e98978022fd09ce45e2dd049e67c8", + "reference": "f24e2568376e98978022fd09ce45e2dd049e67c8", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", + "php": ">=8.2", "symfony/polyfill-mbstring": "~1.1", "symfony/polyfill-php83": "^1.27" }, "conflict": { - "symfony/cache": "<6.3" + "doctrine/dbal": "<3.6", + "symfony/cache": "<6.4" }, "require-dev": { - "doctrine/dbal": "^2.13.1|^3|^4", + "doctrine/dbal": "^3.6|^4", "predis/predis": "^1.1|^2.0", - "symfony/cache": "^6.3|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4|^7.0", - "symfony/mime": "^5.4|^6.0|^7.0", - "symfony/rate-limiter": "^5.4|^6.0|^7.0" + "symfony/cache": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/mime": "^6.4|^7.0", + "symfony/rate-limiter": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -10408,7 +9823,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.4.3" + "source": "https://github.com/symfony/http-foundation/tree/v7.0.3" }, "funding": [ { @@ -10424,76 +9839,75 @@ "type": "tidelift" } ], - "time": "2024-01-23T14:51:35+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.4.3", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "9c6ec4e543044f7568a53a76ab1484ecd30637a2" + "reference": "6352029d6667e8ac5b54aae95afe10b2706b31ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9c6ec4e543044f7568a53a76ab1484ecd30637a2", - "reference": "9c6ec4e543044f7568a53a76ab1484ecd30637a2", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/6352029d6667e8ac5b54aae95afe10b2706b31ac", + "reference": "6352029d6667e8ac5b54aae95afe10b2706b31ac", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "psr/log": "^1|^2|^3", - "symfony/deprecation-contracts": "^2.5|^3", "symfony/error-handler": "^6.4|^7.0", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", "symfony/http-foundation": "^6.4|^7.0", "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<6.1", - "symfony/console": "<5.4", + "symfony/browser-kit": "<6.4", + "symfony/cache": "<6.4", + "symfony/config": "<6.4", + "symfony/console": "<6.4", "symfony/dependency-injection": "<6.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", + "symfony/doctrine-bridge": "<6.4", + "symfony/form": "<6.4", + "symfony/http-client": "<6.4", "symfony/http-client-contracts": "<2.5", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", + "symfony/mailer": "<6.4", + "symfony/messenger": "<6.4", + "symfony/translation": "<6.4", "symfony/translation-contracts": "<2.5", - "symfony/twig-bridge": "<5.4", + "symfony/twig-bridge": "<6.4", "symfony/validator": "<6.4", - "symfony/var-dumper": "<6.3", - "twig/twig": "<2.13" + "symfony/var-dumper": "<6.4", + "twig/twig": "<3.0.4" }, "provide": { "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0|^7.0", - "symfony/clock": "^6.2|^7.0", - "symfony/config": "^6.1|^7.0", - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/css-selector": "^5.4|^6.0|^7.0", + "symfony/browser-kit": "^6.4|^7.0", + "symfony/clock": "^6.4|^7.0", + "symfony/config": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/css-selector": "^6.4|^7.0", "symfony/dependency-injection": "^6.4|^7.0", - "symfony/dom-crawler": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/dom-crawler": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/finder": "^6.4|^7.0", "symfony/http-client-contracts": "^2.5|^3", - "symfony/process": "^5.4|^6.0|^7.0", - "symfony/property-access": "^5.4.5|^6.0.5|^7.0", - "symfony/routing": "^5.4|^6.0|^7.0", - "symfony/serializer": "^6.3|^7.0", - "symfony/stopwatch": "^5.4|^6.0|^7.0", - "symfony/translation": "^5.4|^6.0|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/property-access": "^6.4|^7.0", + "symfony/routing": "^6.4|^7.0", + "symfony/serializer": "^6.4|^7.0", + "symfony/stopwatch": "^6.4|^7.0", + "symfony/translation": "^6.4|^7.0", "symfony/translation-contracts": "^2.5|^3", - "symfony/uid": "^5.4|^6.0|^7.0", + "symfony/uid": "^6.4|^7.0", "symfony/validator": "^6.4|^7.0", - "symfony/var-exporter": "^6.2|^7.0", - "twig/twig": "^2.13|^3.0.4" + "symfony/var-exporter": "^6.4|^7.0", + "twig/twig": "^3.0.4" }, "type": "library", "autoload": { @@ -10521,7 +9935,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.4.3" + "source": "https://github.com/symfony/http-kernel/tree/v7.0.3" }, "funding": [ { @@ -10537,43 +9951,43 @@ "type": "tidelift" } ], - "time": "2024-01-31T07:21:29+00:00" + "time": "2024-01-31T07:32:56+00:00" }, { "name": "symfony/mailer", - "version": "v6.4.3", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "74412c62f88a85a41b61f0b71ab0afcaad6f03ee" + "reference": "2f71c0f6d62d28784783fdc5477e19dd57065d78" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/74412c62f88a85a41b61f0b71ab0afcaad6f03ee", - "reference": "74412c62f88a85a41b61f0b71ab0afcaad6f03ee", + "url": "https://api.github.com/repos/symfony/mailer/zipball/2f71c0f6d62d28784783fdc5477e19dd57065d78", + "reference": "2f71c0f6d62d28784783fdc5477e19dd57065d78", "shasum": "" }, "require": { "egulias/email-validator": "^2.1.10|^3|^4", - "php": ">=8.1", + "php": ">=8.2", "psr/event-dispatcher": "^1", "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", - "symfony/mime": "^6.2|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/mime": "^6.4|^7.0", "symfony/service-contracts": "^2.5|^3" }, "conflict": { "symfony/http-client-contracts": "<2.5", - "symfony/http-kernel": "<5.4", - "symfony/messenger": "<6.2", - "symfony/mime": "<6.2", - "symfony/twig-bridge": "<6.2.1" + "symfony/http-kernel": "<6.4", + "symfony/messenger": "<6.4", + "symfony/mime": "<6.4", + "symfony/twig-bridge": "<6.4" }, "require-dev": { - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/http-client": "^5.4|^6.0|^7.0", - "symfony/messenger": "^6.2|^7.0", - "symfony/twig-bridge": "^6.2|^7.0" + "symfony/console": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/twig-bridge": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -10601,7 +10015,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v6.4.3" + "source": "https://github.com/symfony/mailer/tree/v7.0.3" }, "funding": [ { @@ -10617,25 +10031,24 @@ "type": "tidelift" } ], - "time": "2024-01-29T15:01:07+00:00" + "time": "2024-01-29T15:41:16+00:00" }, { "name": "symfony/mime", - "version": "v6.4.3", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "5017e0a9398c77090b7694be46f20eb796262a34" + "reference": "c1ffe24ba6fdc3e3f0f3fcb93519103b326a3716" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/5017e0a9398c77090b7694be46f20eb796262a34", - "reference": "5017e0a9398c77090b7694be46f20eb796262a34", + "url": "https://api.github.com/repos/symfony/mime/zipball/c1ffe24ba6fdc3e3f0f3fcb93519103b326a3716", + "reference": "c1ffe24ba6fdc3e3f0f3fcb93519103b326a3716", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", + "php": ">=8.2", "symfony/polyfill-intl-idn": "^1.10", "symfony/polyfill-mbstring": "^1.0" }, @@ -10643,17 +10056,17 @@ "egulias/email-validator": "~3.0.0", "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "symfony/mailer": "<5.4", - "symfony/serializer": "<6.3.2" + "symfony/mailer": "<6.4", + "symfony/serializer": "<6.4" }, "require-dev": { "egulias/email-validator": "^2.1.10|^3.1|^4", "league/html-to-markdown": "^5.0", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/property-access": "^5.4|^6.0|^7.0", - "symfony/property-info": "^5.4|^6.0|^7.0", - "symfony/serializer": "^6.3.2|^7.0" + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/property-access": "^6.4|^7.0", + "symfony/property-info": "^6.4|^7.0", + "symfony/serializer": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -10685,7 +10098,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.4.3" + "source": "https://github.com/symfony/mime/tree/v7.0.3" }, "funding": [ { @@ -10701,7 +10114,7 @@ "type": "tidelift" } ], - "time": "2024-01-30T08:32:12+00:00" + "time": "2024-01-30T08:34:29+00:00" }, { "name": "symfony/polyfill-ctype", @@ -10940,90 +10353,6 @@ ], "time": "2024-01-29T20:11:03+00:00" }, - { - "name": "symfony/polyfill-intl-icu", - "version": "v1.29.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-icu.git", - "reference": "07094a28851a49107f3ab4f9120ca2975a64b6e1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/07094a28851a49107f3ab4f9120ca2975a64b6e1", - "reference": "07094a28851a49107f3ab4f9120ca2975a64b6e1", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance and support of other locales than \"en\"" - }, - "type": "library", - "extra": { - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Icu\\": "" - }, - "classmap": [ - "Resources/stubs" - ], - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's ICU-related data and classes", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "icu", - "intl", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.29.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-01-29T20:12:16+00:00" - }, { "name": "symfony/polyfill-intl-idn", "version": "v1.29.0", @@ -11580,20 +10909,20 @@ }, { "name": "symfony/process", - "version": "v6.4.3", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "31642b0818bfcff85930344ef93193f8c607e0a3" + "reference": "937a195147e0c27b2759ade834169ed006d0bc74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/31642b0818bfcff85930344ef93193f8c607e0a3", - "reference": "31642b0818bfcff85930344ef93193f8c607e0a3", + "url": "https://api.github.com/repos/symfony/process/zipball/937a195147e0c27b2759ade834169ed006d0bc74", + "reference": "937a195147e0c27b2759ade834169ed006d0bc74", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "type": "library", "autoload": { @@ -11621,7 +10950,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.4.3" + "source": "https://github.com/symfony/process/tree/v7.0.3" }, "funding": [ { @@ -11637,40 +10966,38 @@ "type": "tidelift" } ], - "time": "2024-01-23T14:51:35+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/routing", - "version": "v6.4.3", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "3b2957ad54902f0f544df83e3d58b38d7e8e5842" + "reference": "858b26756ffc35a11238b269b484ee3a393a74d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/3b2957ad54902f0f544df83e3d58b38d7e8e5842", - "reference": "3b2957ad54902f0f544df83e3d58b38d7e8e5842", + "url": "https://api.github.com/repos/symfony/routing/zipball/858b26756ffc35a11238b269b484ee3a393a74d3", + "reference": "858b26756ffc35a11238b269b484ee3a393a74d3", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<6.2", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" + "symfony/config": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/yaml": "<6.4" }, "require-dev": { - "doctrine/annotations": "^1.12|^2", "psr/log": "^1|^2|^3", - "symfony/config": "^6.2|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/http-foundation": "^5.4|^6.0|^7.0", - "symfony/yaml": "^5.4|^6.0|^7.0" + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/yaml": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -11704,7 +11031,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.4.3" + "source": "https://github.com/symfony/routing/tree/v7.0.3" }, "funding": [ { @@ -11720,7 +11047,7 @@ "type": "tidelift" } ], - "time": "2024-01-30T13:55:02+00:00" + "time": "2024-01-30T13:55:15+00:00" }, { "name": "symfony/service-contracts", @@ -12127,24 +11454,24 @@ }, { "name": "symfony/uid", - "version": "v6.4.3", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/uid.git", - "reference": "1d31267211cc3a2fff32bcfc7c1818dac41b6fc0" + "reference": "87cedaf3fabd7b733859d4d77aa4ca598259054b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/1d31267211cc3a2fff32bcfc7c1818dac41b6fc0", - "reference": "1d31267211cc3a2fff32bcfc7c1818dac41b6fc0", + "url": "https://api.github.com/repos/symfony/uid/zipball/87cedaf3fabd7b733859d4d77aa4ca598259054b", + "reference": "87cedaf3fabd7b733859d4d77aa4ca598259054b", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/polyfill-uuid": "^1.15" }, "require-dev": { - "symfony/console": "^5.4|^6.0|^7.0" + "symfony/console": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -12181,7 +11508,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/uid/tree/v6.4.3" + "source": "https://github.com/symfony/uid/tree/v7.0.3" }, "funding": [ { @@ -12197,38 +11524,36 @@ "type": "tidelift" } ], - "time": "2024-01-23T14:51:35+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.4.3", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "0435a08f69125535336177c29d56af3abc1f69da" + "reference": "a7a061abbf6fe3d4a79032cbc5149a4d65a10234" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/0435a08f69125535336177c29d56af3abc1f69da", - "reference": "0435a08f69125535336177c29d56af3abc1f69da", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/a7a061abbf6fe3d4a79032cbc5149a4d65a10234", + "reference": "a7a061abbf6fe3d4a79032cbc5149a4d65a10234", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", + "php": ">=8.2", "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/console": "<5.4" + "symfony/console": "<6.4" }, "require-dev": { "ext-iconv": "*", - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/error-handler": "^6.3|^7.0", - "symfony/http-kernel": "^5.4|^6.0|^7.0", - "symfony/process": "^5.4|^6.0|^7.0", - "symfony/uid": "^5.4|^6.0|^7.0", - "twig/twig": "^2.13|^3.0.4" + "symfony/console": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/uid": "^6.4|^7.0", + "twig/twig": "^3.0.4" }, "bin": [ "Resources/bin/var-dump-server" @@ -12266,7 +11591,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.4.3" + "source": "https://github.com/symfony/var-dumper/tree/v7.0.3" }, "funding": [ { @@ -12282,32 +11607,31 @@ "type": "tidelift" } ], - "time": "2024-01-23T14:53:30+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/yaml", - "version": "v6.4.3", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "d75715985f0f94f978e3a8fa42533e10db921b90" + "reference": "2d4fca631c00700597e9442a0b2451ce234513d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/d75715985f0f94f978e3a8fa42533e10db921b90", - "reference": "d75715985f0f94f978e3a8fa42533e10db921b90", + "url": "https://api.github.com/repos/symfony/yaml/zipball/2d4fca631c00700597e9442a0b2451ce234513d3", + "reference": "2d4fca631c00700597e9442a0b2451ce234513d3", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", + "php": ">=8.2", "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/console": "<5.4" + "symfony/console": "<6.4" }, "require-dev": { - "symfony/console": "^5.4|^6.0|^7.0" + "symfony/console": "^6.4|^7.0" }, "bin": [ "Resources/bin/yaml-lint" @@ -12338,7 +11662,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.4.3" + "source": "https://github.com/symfony/yaml/tree/v7.0.3" }, "funding": [ { @@ -12354,7 +11678,7 @@ "type": "tidelift" } ], - "time": "2024-01-23T14:51:35+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symplify/monorepo-builder", diff --git a/packages/actions/composer.json b/packages/actions/composer.json index 1d63bf645bd..fc480843bb7 100644 --- a/packages/actions/composer.json +++ b/packages/actions/composer.json @@ -14,9 +14,9 @@ "filament/infolists": "self.version", "filament/notifications": "self.version", "filament/support": "self.version", - "illuminate/contracts": "^10.45", - "illuminate/database": "^10.45", - "illuminate/support": "^10.45", + "illuminate/contracts": "^10.45|^11.0", + "illuminate/database": "^10.45|^11.0", + "illuminate/support": "^10.45|^11.0", "league/csv": "^9.14", "openspout/openspout": "^4.23", "spatie/laravel-package-tools": "^1.9" diff --git a/packages/actions/docs/07-prebuilt-actions/08-import.md b/packages/actions/docs/07-prebuilt-actions/08-import.md index 4290a2622b6..d8df338138a 100644 --- a/packages/actions/docs/07-prebuilt-actions/08-import.md +++ b/packages/actions/docs/07-prebuilt-actions/08-import.md @@ -67,8 +67,6 @@ If you'd like to save time, Filament can automatically generate the [columns](#d php artisan make:filament-importer Product --generate ``` -> If your table contains ENUM columns, the `doctrine/dbal` package we use is unable to scan your table and will crash. Hence, Filament is unable to generate the columns for your importer if it contains an ENUM column. Read more about this issue [here](https://github.com/doctrine/dbal/issues/3819#issuecomment-573419808). - ## Defining importer columns To define the columns that can be imported, you need to override the `getColumns()` method on your importer class, returning an array of `ImportColumn` objects: diff --git a/packages/actions/docs/07-prebuilt-actions/09-export.md b/packages/actions/docs/07-prebuilt-actions/09-export.md index 6a3f80c4f92..3e2c2171cd9 100644 --- a/packages/actions/docs/07-prebuilt-actions/09-export.md +++ b/packages/actions/docs/07-prebuilt-actions/09-export.md @@ -82,8 +82,6 @@ If you'd like to save time, Filament can automatically generate the [columns](#d php artisan make:filament-exporter Product --generate ``` -> If your table contains ENUM columns, the `doctrine/dbal` package we use is unable to scan your table and will crash. Hence, Filament is unable to generate the columns for your exporter if it contains an ENUM column. Read more about this issue [here](https://github.com/doctrine/dbal/issues/3819#issuecomment-573419808). - ## Defining exporter columns To define the columns that can be exported, you need to override the `getColumns()` method on your exporter class, returning an array of `ExportColumn` objects: diff --git a/packages/actions/src/Commands/Concerns/CanGenerateExporterColumns.php b/packages/actions/src/Commands/Concerns/CanGenerateExporterColumns.php index abb6a4a7544..b4eed679c58 100644 --- a/packages/actions/src/Commands/Concerns/CanGenerateExporterColumns.php +++ b/packages/actions/src/Commands/Concerns/CanGenerateExporterColumns.php @@ -14,17 +14,12 @@ protected function getExporterColumns(string $model): string return '//'; } + $schema = $this->getModelSchema($model); $table = $this->getModelTable($model); - if (blank($table)) { - return '//'; - } - $columns = []; - foreach ($table->getColumns() as $column) { - $columnName = $column->getName(); - + foreach ($schema->getColumnListing($table) as $columnName) { if (str($columnName)->endsWith([ '_token', ])) { @@ -38,10 +33,10 @@ protected function getExporterColumns(string $model): string } if (str($columnName)->endsWith('_id')) { - $guessedRelationshipName = $this->guessBelongsToRelationshipName($column, $model); + $guessedRelationshipName = $this->guessBelongsToRelationshipName($columnName, $model); if (filled($guessedRelationshipName)) { - $guessedRelationshipTitleColumnName = $this->guessBelongsToRelationshipTitleColumnName($column, app($model)->{$guessedRelationshipName}()->getModel()::class); + $guessedRelationshipTitleColumnName = $this->guessBelongsToRelationshipTitleColumnName($columnName, app($model)->{$guessedRelationshipName}()->getModel()::class); $columnName = "{$guessedRelationshipName}.{$guessedRelationshipTitleColumnName}"; } diff --git a/packages/actions/src/Commands/Concerns/CanGenerateImporterColumns.php b/packages/actions/src/Commands/Concerns/CanGenerateImporterColumns.php index be0560fc651..c3b6f4c6bbb 100644 --- a/packages/actions/src/Commands/Concerns/CanGenerateImporterColumns.php +++ b/packages/actions/src/Commands/Concerns/CanGenerateImporterColumns.php @@ -2,7 +2,6 @@ namespace Filament\Actions\Commands\Concerns; -use Doctrine\DBAL\Types; use Illuminate\Support\Str; trait CanGenerateImporterColumns @@ -15,20 +14,17 @@ protected function getImporterColumns(string $model): string return '//'; } + $schema = $this->getModelSchema($model); $table = $this->getModelTable($model); - if (blank($table)) { - return '//'; - } - $columns = []; - foreach ($table->getColumns() as $column) { - if ($column->getAutoincrement()) { + foreach ($schema->getColumns($table) as $column) { + if ($column['auto_increment']) { continue; } - $columnName = $column->getName(); + $columnName = $column['name']; if (str($columnName)->is([ app($model)->getKeyName(), @@ -50,7 +46,7 @@ protected function getImporterColumns(string $model): string $columnData['label'] = [Str::upper($columnName)]; } - if ($column->getNotnull()) { + if (! $column['nullable']) { $columnData['rules'][0][] = 'required'; $columnData['requiredMapping'] = []; } @@ -59,44 +55,39 @@ protected function getImporterColumns(string $model): string $columnData['rules'][0][] = 'email'; } + $type = $this->parseColumnType($column); + if ( str($columnName)->endsWith('_id') && - filled($guessedRelationshipName = $this->guessBelongsToRelationshipName($column, $model)) + filled($guessedRelationshipName = $this->guessBelongsToRelationshipName($columnName, $model)) ) { $columnName = $guessedRelationshipName; $columnData['relationship'] = []; - } elseif (in_array($column->getType()::class, [ - Types\BooleanType::class, + } elseif (in_array($type['name'], [ + 'boolean', ])) { $columnData['rules'][0][] = 'boolean'; $columnData['boolean'] = []; - } elseif (in_array($column->getType()::class, [ - Types\DateImmutableType::class, - Types\DateType::class, + } elseif (in_array($type['name'], [ + 'date', ])) { $columnData['rules'][0][] = 'date'; - } elseif (in_array($column->getType()::class, [ - Types\DateTimeImmutableType::class, - Types\DateTimeType::class, - Types\DateTimeTzImmutableType::class, - Types\DateTimeTzType::class, + } elseif (in_array($type['name'], [ + 'datetime', + 'timestamp', ])) { $columnData['rules'][0][] = 'datetime'; - } elseif (in_array($column->getType()::class, [ - Types\IntegerType::class, - Types\SmallIntType::class, - Types\BigIntType::class, - ])) { - $columnData['rules'][0][] = 'integer'; - $columnData['numeric'] = []; - } elseif (in_array($column->getType()::class, [ - Types\DecimalType::class, - Types\FloatType::class, + } elseif (in_array($type['name'], [ + 'integer', + 'decimal', + 'float', + 'double', + 'money', ])) { $columnData['rules'][0][] = 'integer'; $columnData['numeric'] = []; - } elseif ($length = $column->getLength()) { - $columnData['rules'][0][] = "max:{$length}"; + } elseif (isset($type['length'])) { + $columnData['rules'][0][] = "max:{$type['length']}"; } // Move rules to the end of the column definition. diff --git a/packages/forms/composer.json b/packages/forms/composer.json index c941db8cc59..ca05cc61d29 100644 --- a/packages/forms/composer.json +++ b/packages/forms/composer.json @@ -12,13 +12,13 @@ "danharrin/date-format-converter": "^0.3", "filament/actions": "self.version", "filament/support": "self.version", - "illuminate/console": "^10.45", - "illuminate/contracts": "^10.45", - "illuminate/database": "^10.45", - "illuminate/filesystem": "^10.45", - "illuminate/support": "^10.45", - "illuminate/validation": "^10.45", - "illuminate/view": "^10.45", + "illuminate/console": "^10.45|^11.0", + "illuminate/contracts": "^10.45|^11.0", + "illuminate/database": "^10.45|^11.0", + "illuminate/filesystem": "^10.45|^11.0", + "illuminate/support": "^10.45|^11.0", + "illuminate/validation": "^10.45|^11.0", + "illuminate/view": "^10.45|^11.0", "spatie/laravel-package-tools": "^1.9" }, "autoload": { diff --git a/packages/forms/docs/08-adding-a-form-to-a-livewire-component.md b/packages/forms/docs/08-adding-a-form-to-a-livewire-component.md index e819e152494..6d3a9cb0e2a 100644 --- a/packages/forms/docs/08-adding-a-form-to-a-livewire-component.md +++ b/packages/forms/docs/08-adding-a-form-to-a-livewire-component.md @@ -329,5 +329,3 @@ Filament is also able to guess which form fields you want in the schema, based o ```bash php artisan make:livewire-form Products/CreateProduct --generate ``` - -> If your table contains ENUM columns, the `doctrine/dbal` package we use is unable to scan your table and will crash. Hence, Filament is unable to generate the schema for your table if it contains an ENUM column. Read more about this issue [here](https://github.com/doctrine/dbal/issues/3819#issuecomment-573419808). diff --git a/packages/forms/src/Commands/Concerns/CanGenerateForms.php b/packages/forms/src/Commands/Concerns/CanGenerateForms.php index 0e63c788488..e888f2eb406 100644 --- a/packages/forms/src/Commands/Concerns/CanGenerateForms.php +++ b/packages/forms/src/Commands/Concerns/CanGenerateForms.php @@ -2,7 +2,6 @@ namespace Filament\Forms\Commands\Concerns; -use Doctrine\DBAL\Types; use Filament\Forms; use Illuminate\Support\Str; @@ -16,20 +15,17 @@ protected function getResourceFormSchema(string $model): string return '//'; } + $schema = $this->getModelSchema($model); $table = $this->getModelTable($model); - if (blank($table)) { - return '//'; - } - $components = []; - foreach ($table->getColumns() as $column) { - if ($column->getAutoincrement()) { + foreach ($schema->getColumns($table) as $column) { + if ($column['auto_increment']) { continue; } - $columnName = $column->getName(); + $columnName = $column['name']; if (str($columnName)->is([ app($model)->getKeyName(), @@ -41,22 +37,24 @@ protected function getResourceFormSchema(string $model): string continue; } + $type = $this->parseColumnType($column); + $componentData = []; $componentData['type'] = match (true) { - $column->getType()::class === Types\BooleanType::class => Forms\Components\Toggle::class, - in_array($column->getType()::class, [Types\DateImmutableType::class, Types\DateType::class]) => Forms\Components\DatePicker::class, - in_array($column->getType()::class, [Types\DateTimeImmutableType::class, Types\DateTimeType::class, Types\DateTimeTzImmutableType::class, Types\DateTimeTzType::class]) => Forms\Components\DateTimePicker::class, - $column->getType()::class === Types\TextType::class => Forms\Components\Textarea::class, + $type['name'] === 'boolean' => Forms\Components\Toggle::class, + $type['name'] === 'date' => Forms\Components\DatePicker::class, + in_array($type['name'], ['datetime', 'timestamp']) => Forms\Components\DateTimePicker::class, + $type['name'] === 'text' => Forms\Components\Textarea::class, $columnName === 'image', str($columnName)->startsWith('image_'), str($columnName)->contains('_image_'), str($columnName)->endsWith('_image') => Forms\Components\FileUpload::class, default => Forms\Components\TextInput::class, }; if (str($columnName)->endsWith('_id')) { - $guessedRelationshipName = $this->guessBelongsToRelationshipName($column, $model); + $guessedRelationshipName = $this->guessBelongsToRelationshipName($columnName, $model); if (filled($guessedRelationshipName)) { - $guessedRelationshipTitleColumnName = $this->guessBelongsToRelationshipTitleColumnName($column, app($model)->{$guessedRelationshipName}()->getModel()::class); + $guessedRelationshipTitleColumnName = $this->guessBelongsToRelationshipTitleColumnName($columnName, app($model)->{$guessedRelationshipName}()->getModel()::class); $componentData['type'] = Forms\Components\Select::class; $componentData['relationship'] = [$guessedRelationshipName, $guessedRelationshipTitleColumnName]; @@ -89,40 +87,40 @@ protected function getResourceFormSchema(string $model): string $componentData['image'] = []; } - if ($column->getNotnull()) { + if (! $column['nullable']) { $componentData['required'] = []; } - if (in_array($column->getType()::class, [ - Types\BigIntType::class, - Types\DecimalType::class, - Types\FloatType::class, - Types\IntegerType::class, - Types\SmallIntType::class, + if (in_array($type['name'], [ + 'integer', + 'decimal', + 'float', + 'double', + 'money', ])) { if ($componentData['type'] === Forms\Components\TextInput::class) { $componentData['numeric'] = []; } - if (filled($column->getDefault())) { - $componentData['default'] = [$column->getDefault()]; + if (filled($column['default'])) { + $componentData['default'] = [$this->parseDefaultExpression($column, $model)]; } if (in_array($columnName, [ 'cost', 'money', 'price', - ])) { + ]) || $type['name'] === 'money') { $componentData['prefix'] = ['$']; } } elseif (in_array($componentData['type'], [ Forms\Components\TextInput::class, Forms\Components\Textarea::class, - ]) && ($length = $column->getLength())) { - $componentData['maxLength'] = [$length]; + ]) && isset($type['length'])) { + $componentData['maxLength'] = [$type['length']]; - if (filled($column->getDefault())) { - $componentData['default'] = [$column->getDefault()]; + if (filled($column['default'])) { + $componentData['default'] = [$this->parseDefaultExpression($column, $model)]; } } diff --git a/packages/infolists/composer.json b/packages/infolists/composer.json index e59e82ccdef..96ae289a567 100644 --- a/packages/infolists/composer.json +++ b/packages/infolists/composer.json @@ -11,12 +11,12 @@ "php": "^8.1", "filament/actions": "self.version", "filament/support": "self.version", - "illuminate/console": "^10.45", - "illuminate/contracts": "^10.45", - "illuminate/database": "^10.45", - "illuminate/filesystem": "^10.45", - "illuminate/support": "^10.45", - "illuminate/view": "^10.45", + "illuminate/console": "^10.45|^11.0", + "illuminate/contracts": "^10.45|^11.0", + "illuminate/database": "^10.45|^11.0", + "illuminate/filesystem": "^10.45|^11.0", + "illuminate/support": "^10.45|^11.0", + "illuminate/view": "^10.45|^11.0", "spatie/laravel-package-tools": "^1.9" }, "autoload": { diff --git a/packages/notifications/composer.json b/packages/notifications/composer.json index 23582b14c2f..030b2b72b34 100644 --- a/packages/notifications/composer.json +++ b/packages/notifications/composer.json @@ -11,10 +11,10 @@ "php": "^8.1", "filament/actions": "self.version", "filament/support": "self.version", - "illuminate/contracts": "^10.45", - "illuminate/filesystem": "^10.45", - "illuminate/notifications": "^10.45", - "illuminate/support": "^10.45", + "illuminate/contracts": "^10.45|^11.0", + "illuminate/filesystem": "^10.45|^11.0", + "illuminate/notifications": "^10.45|^11.0", + "illuminate/support": "^10.45|^11.0", "spatie/laravel-package-tools": "^1.9" }, "autoload": { diff --git a/packages/panels/composer.json b/packages/panels/composer.json index 761c06d1e22..3c4652cfbce 100644 --- a/packages/panels/composer.json +++ b/packages/panels/composer.json @@ -17,16 +17,16 @@ "filament/support": "self.version", "filament/tables": "self.version", "filament/widgets": "self.version", - "illuminate/auth": "^10.45", - "illuminate/console": "^10.45", - "illuminate/contracts": "^10.45", - "illuminate/cookie": "^10.45", - "illuminate/database": "^10.45", - "illuminate/http": "^10.45", - "illuminate/routing": "^10.45", - "illuminate/session": "^10.45", - "illuminate/support": "^10.45", - "illuminate/view": "^10.45", + "illuminate/auth": "^10.45|^11.0", + "illuminate/console": "^10.45|^11.0", + "illuminate/contracts": "^10.45|^11.0", + "illuminate/cookie": "^10.45|^11.0", + "illuminate/database": "^10.45|^11.0", + "illuminate/http": "^10.45|^11.0", + "illuminate/routing": "^10.45|^11.0", + "illuminate/session": "^10.45|^11.0", + "illuminate/support": "^10.45|^11.0", + "illuminate/view": "^10.45|^11.0", "spatie/laravel-package-tools": "^1.9" }, "autoload": { diff --git a/packages/panels/docs/01-installation.md b/packages/panels/docs/01-installation.md index eb44671a8cf..6e000a8f080 100644 --- a/packages/panels/docs/01-installation.md +++ b/packages/panels/docs/01-installation.md @@ -27,7 +27,7 @@ php artisan filament:install --panels This will create and register a new [Laravel service provider](https://laravel.com/docs/providers) called `app/Providers/Filament/AdminPanelProvider.php`. -> If you get an error when accessing your panel, check that the service provider was registered in your `config/app.php`. If not, you should manually add it to the `providers` array. +> If you get an error when accessing your panel, check that the service provider was registered in `bootstrap/providers.php` (Laravel 11 and above) or `config/app.php` (Laravel 10 and below). If not, you should manually add it. ## Create a user You can create a new user account with the following command: diff --git a/packages/panels/docs/03-resources/01-getting-started.md b/packages/panels/docs/03-resources/01-getting-started.md index 9e90d29f4b6..15321c9baed 100644 --- a/packages/panels/docs/03-resources/01-getting-started.md +++ b/packages/panels/docs/03-resources/01-getting-started.md @@ -60,8 +60,6 @@ If you'd like to save time, Filament can automatically generate the [form](#reso php artisan make:filament-resource Customer --generate ``` -> If your table contains ENUM columns, the `doctrine/dbal` package we use is unable to scan your table and will crash. Hence, Filament is unable to generate the schema for your resource if it contains an ENUM column. Read more about this issue [here](https://github.com/doctrine/dbal/issues/3819#issuecomment-573419808). - ### Handling soft deletes By default, you will not be able to interact with deleted records in the app. If you'd like to add functionality to restore, force delete and filter trashed records in your resource, use the `--soft-deletes` flag when generating the resource: diff --git a/packages/panels/docs/09-configuration.md b/packages/panels/docs/09-configuration.md index f61102e13ce..782ff1d85ea 100644 --- a/packages/panels/docs/09-configuration.md +++ b/packages/panels/docs/09-configuration.md @@ -30,7 +30,7 @@ php artisan make:filament-panel app This command will create a new panel called "app". A configuration file will be created at `app/Providers/Filament/AppPanelProvider.php`. You can access this panel at `/app`, but you can [customize the path](#changing-the-path) if you don't want that. -Since this configuration file is also a [Laravel service provider](https://laravel.com/docs/providers), it needs to be registered in `config/app.php`. Filament will attempt to do this for you, but if you get an error while trying to access your panel then this process has probably failed. You can manually register the service provider by adding it to the `providers` array. +Since this configuration file is also a [Laravel service provider](https://laravel.com/docs/providers), it needs to be registered in `bootstrap/providers.php` (Laravel 11 and above) or `config/app.php` (Laravel 10 and below). Filament will attempt to do this for you, but if you get an error while trying to access your panel then this process has probably failed. ## Changing the path diff --git a/packages/spatie-laravel-google-fonts-plugin/composer.json b/packages/spatie-laravel-google-fonts-plugin/composer.json index eabbb16a0de..b1d4633bfc0 100644 --- a/packages/spatie-laravel-google-fonts-plugin/composer.json +++ b/packages/spatie-laravel-google-fonts-plugin/composer.json @@ -9,8 +9,8 @@ }, "require": { "php": "^8.1", - "illuminate/contracts": "^10.45", - "illuminate/support": "^10.45", + "illuminate/contracts": "^10.45|^11.0", + "illuminate/support": "^10.45|^11.0", "spatie/laravel-google-fonts": "^1.0" }, "autoload": { diff --git a/packages/spatie-laravel-media-library-plugin/composer.json b/packages/spatie-laravel-media-library-plugin/composer.json index 23085949d6e..037358bcefe 100644 --- a/packages/spatie-laravel-media-library-plugin/composer.json +++ b/packages/spatie-laravel-media-library-plugin/composer.json @@ -9,7 +9,7 @@ }, "require": { "php": "^8.1", - "illuminate/support": "^10.45", + "illuminate/support": "^10.45|^11.0", "spatie/laravel-medialibrary": "^10.0|^11.0" }, "autoload": { diff --git a/packages/spatie-laravel-settings-plugin/composer.json b/packages/spatie-laravel-settings-plugin/composer.json index e775b0da13d..f422d5c66a2 100644 --- a/packages/spatie-laravel-settings-plugin/composer.json +++ b/packages/spatie-laravel-settings-plugin/composer.json @@ -10,9 +10,9 @@ "require": { "php": "^8.1", "filament/filament": "self.version", - "illuminate/console": "^10.45", - "illuminate/filesystem": "^10.45", - "illuminate/support": "^10.45", + "illuminate/console": "^10.45|^11.0", + "illuminate/filesystem": "^10.45|^11.0", + "illuminate/support": "^10.45|^11.0", "spatie/laravel-settings": "^2.2|^3.0" }, "autoload": { diff --git a/packages/spatie-laravel-tags-plugin/composer.json b/packages/spatie-laravel-tags-plugin/composer.json index 582b6469325..77512e07260 100644 --- a/packages/spatie-laravel-tags-plugin/composer.json +++ b/packages/spatie-laravel-tags-plugin/composer.json @@ -9,7 +9,7 @@ }, "require": { "php": "^8.1", - "illuminate/database": "^10.45", + "illuminate/database": "^10.45|^11.0", "spatie/laravel-tags": "^4.0" }, "autoload": { diff --git a/packages/spatie-laravel-translatable-plugin/composer.json b/packages/spatie-laravel-translatable-plugin/composer.json index 6b8d6d3e448..2c55947901d 100644 --- a/packages/spatie-laravel-translatable-plugin/composer.json +++ b/packages/spatie-laravel-translatable-plugin/composer.json @@ -10,7 +10,7 @@ "require": { "php": "^8.1", "filament/support": "self.version", - "illuminate/support": "^10.45", + "illuminate/support": "^10.45|^11.0", "spatie/laravel-translatable": "^6.0" }, "autoload": { diff --git a/packages/support/composer.json b/packages/support/composer.json index ea6097e0cde..e240ad484ac 100644 --- a/packages/support/composer.json +++ b/packages/support/composer.json @@ -10,13 +10,12 @@ "require": { "php": "^8.1", "blade-ui-kit/blade-heroicons": "^2.2.1", - "doctrine/dbal": "^3.2", "ext-intl": "*", - "illuminate/contracts": "^10.45", - "illuminate/support": "^10.45", - "illuminate/view": "^10.45", + "illuminate/contracts": "^10.45|^11.0", + "illuminate/support": "^10.45|^11.0", + "illuminate/view": "^10.45|^11.0", "livewire/livewire": "^3.2.3", - "ryangjchandler/blade-capture-directive": "^0.2|^0.3", + "ryangjchandler/blade-capture-directive": "^0.2|^0.3|^1.0", "spatie/color": "^1.5", "spatie/invade": "^1.0|^2.0", "spatie/laravel-package-tools": "^1.9", diff --git a/packages/support/src/Commands/Concerns/CanGeneratePanels.php b/packages/support/src/Commands/Concerns/CanGeneratePanels.php index af94939e164..d4367fabb6f 100644 --- a/packages/support/src/Commands/Concerns/CanGeneratePanels.php +++ b/packages/support/src/Commands/Concerns/CanGeneratePanels.php @@ -3,6 +3,8 @@ namespace Filament\Support\Commands\Concerns; use Filament\Facades\Filament; +use Illuminate\Support\Facades\App; +use Illuminate\Support\ServiceProvider; use Illuminate\Support\Str; use function Laravel\Prompts\text; @@ -48,18 +50,36 @@ public function generatePanel(?string $id = null, string $default = '', string $ ]); } - $appConfig = file_get_contents(config_path('app.php')); + $isLaravel11OrHigherWithBootstrapProvidersFile = version_compare(App::version(), '11.0', '>=') && + /** @phpstan-ignore-next-line */ + file_exists($bootstrapProvidersPath = App::getBootstrapProvidersPath()); - if (! Str::contains($appConfig, "App\\Providers\\Filament\\{$class}::class")) { - file_put_contents(config_path('app.php'), str_replace( - 'App\\Providers\\RouteServiceProvider::class,', - "App\\Providers\\Filament\\{$class}::class," . PHP_EOL . ' App\\Providers\\RouteServiceProvider::class,', - $appConfig, - )); + if ($isLaravel11OrHigherWithBootstrapProvidersFile) { + /** @phpstan-ignore-next-line */ + ServiceProvider::addProviderToBootstrapFile( + "App\\Providers\\Filament\\{$class}", + /** @phpstan-ignore-next-line */ + $bootstrapProvidersPath, + ); + } else { + $appConfig = file_get_contents(config_path('app.php')); + + if (! Str::contains($appConfig, "App\\Providers\\Filament\\{$class}::class")) { + file_put_contents(config_path('app.php'), str_replace( + 'App\\Providers\\RouteServiceProvider::class,', + "App\\Providers\\Filament\\{$class}::class," . PHP_EOL . ' App\\Providers\\RouteServiceProvider::class,', + $appConfig, + )); + } } $this->components->info("Filament panel [{$path}] created successfully."); - $this->components->warn("We've attempted to register the {$class} in your [config/app.php] file as a service provider. If you get an error while trying to access your panel then this process has probably failed. You can manually register the service provider by adding it to the [providers] array."); + + if ($isLaravel11OrHigherWithBootstrapProvidersFile) { + $this->components->warn("We've attempted to register the {$class} in your [bootstrap/providers.php] file. If you get an error while trying to access your panel then this process has probably failed. You can manually register the service provider by adding it to the array."); + } else { + $this->components->warn("We've attempted to register the {$class} in your [config/app.php] file as a service provider. If you get an error while trying to access your panel then this process has probably failed. You can manually register the service provider by adding it to the [providers] array."); + } return true; } diff --git a/packages/support/src/Commands/Concerns/CanReadModelSchemas.php b/packages/support/src/Commands/Concerns/CanReadModelSchemas.php index c6aefc43cf3..1a149a986b8 100644 --- a/packages/support/src/Commands/Concerns/CanReadModelSchemas.php +++ b/packages/support/src/Commands/Concerns/CanReadModelSchemas.php @@ -2,15 +2,12 @@ namespace Filament\Support\Commands\Concerns; -use Doctrine\DBAL\Schema\AbstractAsset; -use Doctrine\DBAL\Schema\Table; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Support\Facades\Schema; use Illuminate\Support\Str; use ReflectionClass; use ReflectionException; -use Throwable; trait CanReadModelSchemas { @@ -23,29 +20,24 @@ protected function getModel(string $model): ?string return $model; } - protected function getModelTable(string $model): ?Table + protected function getModelSchema(string $model): Schema { - $modelClass = $model; - $model = app($model); - - try { - return $model - ->getConnection() - ->getDoctrineSchemaManager() - ->listTableDetails($model->getTable()); - } catch (Throwable $exception) { - $this->components->warn("Unable to read table schema for model [{$modelClass}]: {$exception->getMessage()}"); + return app($model) + ->getConnection() + ->getSchemaBuilder(); + } - return null; - } + protected function getModelTable(string $model): string + { + return app($model)->getTable(); } - protected function guessBelongsToRelationshipName(AbstractAsset $column, string $model): ?string + protected function guessBelongsToRelationshipName(string $column, string $model): ?string { /** @var Model $modelInstance */ $modelInstance = app($model); $modelInstanceReflection = new ReflectionClass($modelInstance); - $guessedRelationshipName = str($column->getName())->beforeLast('_id'); + $guessedRelationshipName = str($column)->beforeLast('_id'); $hasRelationship = $modelInstanceReflection->hasMethod($guessedRelationshipName); if (! $hasRelationship) { @@ -74,9 +66,9 @@ protected function guessBelongsToRelationshipName(AbstractAsset $column, string return $guessedRelationshipName; } - protected function guessBelongsToRelationshipTableName(AbstractAsset $column): ?string + protected function guessBelongsToRelationshipTableName(string $column): ?string { - $tableName = str($column->getName())->beforeLast('_id'); + $tableName = str($column)->beforeLast('_id'); if (Schema::hasTable(Str::plural($tableName))) { return Str::plural($tableName); @@ -89,15 +81,12 @@ protected function guessBelongsToRelationshipTableName(AbstractAsset $column): ? return $tableName; } - protected function guessBelongsToRelationshipTitleColumnName(AbstractAsset $column, string $model): string + protected function guessBelongsToRelationshipTitleColumnName(string $column, string $model): string { - $schema = $this->getModelTable($model); + $schema = $this->getModelSchema($model); + $table = $this->getModelTable($model); - if ($schema === null) { - return 'id'; - } - - $columns = collect(array_keys($schema->getColumns())); + $columns = collect($schema->getColumnListing($table)); if ($columns->contains('name')) { return 'name'; @@ -107,6 +96,114 @@ protected function guessBelongsToRelationshipTitleColumnName(AbstractAsset $colu return 'title'; } - return $schema->getPrimaryKey()?->getColumns()[0] ?? 'id'; + return collect($schema->getIndexes($table)) + ->firstWhere('primary')['columns'][0] ?? 'id'; + } + + /** + * @param array $column + * @return array + */ + protected function parseColumnType(array $column): array + { + $type = match ($column['type']) { + 'tinyint(1)', 'bit' => 'boolean', + 'varchar(max)', 'nvarchar(max)' => 'text', + default => null, + }; + + $type ??= match ($column['type_name']) { + 'boolean', 'bool' => 'boolean', + 'char', 'bpchar', 'nchar' => 'char', + 'varchar', 'nvarchar' => 'string', + 'integer', 'int', 'int4', 'tinyint', 'smallint', 'int2', 'mediumint', 'bigint', 'int8' => 'integer', + 'decimal', 'numeric' => 'decimal', + 'float', 'real', 'float4' => 'float', + 'double', 'float8' => 'double', + 'money', 'smallmoney' => 'money', + 'date' => 'date', + 'time', 'timetz' => 'time', + 'datetime', 'datetime2', 'smalldatetime', 'datetimeoffset' => 'datetime', + 'timestamp', 'timestamptz' => 'timestamp', + 'text', 'tinytext', 'longtext', 'mediumtext', 'ntext' => 'text', + 'json', 'jsonb' => 'json', + default => $column['type_name'], + }; + + $values = str_contains($column['type'], '(') + ? str_getcsv(Str::between($column['type'], '(', ')'), ',', "'") + : null; + + $values = is_null($values) ? [] : match ($type) { + 'string', 'char', 'binary', 'bit' => ['length' => (int) $values[0]], + default => [], + }; + + return array_merge(['name' => $type], array_filter($values)); + } + + /** + * @param array $column + */ + protected function parseDefaultExpression(array $column, string $model): mixed + { + $default = $column['default']; + + if (blank($default)) { + return null; + } + + $driver = app($model)->getConnection()->getDriverName(); + + if ($driver === 'mysql') { + if ($default === 'NULL' + || preg_match("/^\(.*\)$/", $default) === 1 + || str_ends_with($default, '()') + || str_starts_with(strtolower($default), 'current_timestamp')) { + return null; + } + + if (preg_match("/^'(.*)'$/", $default, $matches) === 1) { + return str_replace("''", "'", $matches[1]); + } + } + + if ($driver === 'pgsql') { + if (str_starts_with($default, 'NULL::')) { + $default = null; + } + + if (preg_match("/^['(](.*)[')]::/", $default, $matches) === 1) { + return str_replace("''", "'", $matches[1]); + } + } + + if ($driver === 'sqlsrv') { + while (preg_match('/^\((.*)\)$/', $default, $matches)) { + $default = $matches[1]; + } + + if ($default === 'NULL' + || str_ends_with($default, '()')) { + return null; + } + + if (preg_match('/^\'(.*)\'$/', $default, $matches) === 1) { + return str_replace("''", "'", $matches[1]); + } + } + + if ($driver === 'sqlite') { + if ($default === 'NULL' + || str_starts_with(strtolower($default), 'current_timestamp')) { + return null; + } + + if (preg_match('/^\'(.*)\'$/s', $default, $matches) === 1) { + return str_replace("''", "'", $matches[1]); + } + } + + return $default; } } diff --git a/packages/tables/.stubs.php b/packages/tables/.stubs.php index 39962f0ea9e..4a104e288d9 100644 --- a/packages/tables/.stubs.php +++ b/packages/tables/.stubs.php @@ -2,8 +2,8 @@ namespace Livewire\Features\SupportTesting { - use Illuminate\Support\Collection; use Closure; + use Illuminate\Support\Collection; class Testable { public function mountTableAction(string | array $name, $record = null): static {} diff --git a/packages/tables/composer.json b/packages/tables/composer.json index 87ef08267e5..d08e99da984 100644 --- a/packages/tables/composer.json +++ b/packages/tables/composer.json @@ -12,12 +12,12 @@ "filament/actions": "self.version", "filament/forms": "self.version", "filament/support": "self.version", - "illuminate/console": "^10.45", - "illuminate/contracts": "^10.45", - "illuminate/database": "^10.45", - "illuminate/filesystem": "^10.45", - "illuminate/support": "^10.45", - "illuminate/view": "^10.45", + "illuminate/console": "^10.45|^11.0", + "illuminate/contracts": "^10.45|^11.0", + "illuminate/database": "^10.45|^11.0", + "illuminate/filesystem": "^10.45|^11.0", + "illuminate/support": "^10.45|^11.0", + "illuminate/view": "^10.45|^11.0", "kirschbaum-development/eloquent-power-joins": "^3.0", "spatie/laravel-package-tools": "^1.9" }, diff --git a/packages/tables/docs/11-adding-a-table-to-a-livewire-component.md b/packages/tables/docs/11-adding-a-table-to-a-livewire-component.md index 75d4e044d6f..8b225d260a1 100644 --- a/packages/tables/docs/11-adding-a-table-to-a-livewire-component.md +++ b/packages/tables/docs/11-adding-a-table-to-a-livewire-component.md @@ -135,5 +135,3 @@ Filament is also able to guess which table columns you want in the table, based ```bash php artisan make:livewire-table Products/ListProducts --generate ``` - -> If your table contains ENUM columns, the `doctrine/dbal` package we use is unable to scan your table and will crash. Hence, Filament is unable to generate the schema for your table if it contains an ENUM column. Read more about this issue [here](https://github.com/doctrine/dbal/issues/3819#issuecomment-573419808). diff --git a/packages/tables/src/Commands/Concerns/CanGenerateTables.php b/packages/tables/src/Commands/Concerns/CanGenerateTables.php index b4ea2f34a5c..113fbf68abd 100644 --- a/packages/tables/src/Commands/Concerns/CanGenerateTables.php +++ b/packages/tables/src/Commands/Concerns/CanGenerateTables.php @@ -2,7 +2,6 @@ namespace Filament\Tables\Commands\Concerns; -use Doctrine\DBAL\Types; use Filament\Tables; use Illuminate\Support\Str; @@ -16,27 +15,26 @@ protected function getResourceTableColumns(string $model): string return '//'; } + $schema = $this->getModelSchema($model); $table = $this->getModelTable($model); - if (blank($table)) { - return '//'; - } - $columns = []; - foreach ($table->getColumns() as $column) { - if ($column->getAutoincrement()) { + foreach ($schema->getColumns($table) as $column) { + if ($column['auto_increment']) { continue; } - if (in_array($column->getType()::class, [ - Types\JsonType::class, - Types\TextType::class, + $type = $this->parseColumnType($column); + + if (in_array($type['name'], [ + 'json', + 'text', ])) { continue; } - $columnName = $column->getName(); + $columnName = $column['name']; if (str($columnName)->endsWith([ '_token', @@ -51,10 +49,10 @@ protected function getResourceTableColumns(string $model): string } if (str($columnName)->endsWith('_id')) { - $guessedRelationshipName = $this->guessBelongsToRelationshipName($column, $model); + $guessedRelationshipName = $this->guessBelongsToRelationshipName($columnName, $model); if (filled($guessedRelationshipName)) { - $guessedRelationshipTitleColumnName = $this->guessBelongsToRelationshipTitleColumnName($column, app($model)->{$guessedRelationshipName}()->getModel()::class); + $guessedRelationshipTitleColumnName = $this->guessBelongsToRelationshipTitleColumnName($columnName, app($model)->{$guessedRelationshipName}()->getModel()::class); $columnName = "{$guessedRelationshipName}.{$guessedRelationshipTitleColumnName}"; } @@ -70,7 +68,7 @@ protected function getResourceTableColumns(string $model): string $columnData['label'] = [Str::upper($columnName)]; } - if ($column->getType() instanceof Types\BooleanType) { + if ($type['name'] === 'boolean') { $columnData['type'] = Tables\Columns\IconColumn::class; $columnData['boolean'] = []; } else { @@ -79,42 +77,40 @@ protected function getResourceTableColumns(string $model): string default => Tables\Columns\TextColumn::class, }; - if (in_array($column->getType()::class, [ - Types\StringType::class, + if (in_array($type['name'], [ + 'string', + 'char', ]) && ($columnData['type'] === Tables\Columns\TextColumn::class)) { $columnData['searchable'] = []; } - if (in_array($column->getType()::class, [ - Types\DateImmutableType::class, - Types\DateType::class, + if (in_array($type['name'], [ + 'date', ])) { $columnData['date'] = []; $columnData['sortable'] = []; } - if (in_array($column->getType()::class, [ - Types\DateTimeImmutableType::class, - Types\DateTimeType::class, - Types\DateTimeTzImmutableType::class, - Types\DateTimeTzType::class, + if (in_array($type['name'], [ + 'datetime', + 'timestamp', ])) { $columnData['dateTime'] = []; $columnData['sortable'] = []; } - if (in_array($column->getType()::class, [ - Types\BigIntType::class, - Types\DecimalType::class, - Types\FloatType::class, - Types\IntegerType::class, - Types\SmallIntType::class, + if (in_array($type['name'], [ + 'integer', + 'decimal', + 'float', + 'double', + 'money', ])) { $columnData[in_array($columnName, [ 'cost', 'money', 'price', - ]) ? 'money' : 'numeric'] = []; + ]) || $type['name'] === 'money' ? 'money' : 'numeric'] = []; $columnData['sortable'] = []; } } diff --git a/packages/upgrade/composer.json b/packages/upgrade/composer.json index 296feb1558b..97e7b91194a 100644 --- a/packages/upgrade/composer.json +++ b/packages/upgrade/composer.json @@ -9,8 +9,8 @@ }, "require": { "php": "^8.1", - "nunomaduro/termwind": "^1.0", - "rector/rector": "^0.17" + "nunomaduro/termwind": "^1.0|^2.0", + "rector/rector": "^0.19" }, "autoload": { "psr-4": { diff --git a/phpstan.neon.dist b/phpstan.neon.dist index 65fc763b030..ce156320a9c 100644 --- a/phpstan.neon.dist +++ b/phpstan.neon.dist @@ -4,6 +4,9 @@ parameters: paths: - packages + excludePaths: + - packages/upgrade/* + ignoreErrors: - '#Unable to resolve the template type TKey in call to function collect#' - '#Unable to resolve the template type TValue in call to function collect#' diff --git a/testbench.yaml b/testbench.yaml new file mode 100644 index 00000000000..c2aa11f93bb --- /dev/null +++ b/testbench.yaml @@ -0,0 +1,5 @@ +migrations: + - tests/database/migrations + +workbench: + install: true diff --git a/tests/database/migrations/create_password_reset_tokens_table.php b/tests/database/migrations/create_password_reset_tokens_table.php deleted file mode 100644 index bce2f339eea..00000000000 --- a/tests/database/migrations/create_password_reset_tokens_table.php +++ /dev/null @@ -1,22 +0,0 @@ -string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); - } - - public function down(): void - { - Schema::dropIfExists('password_reset_tokens'); - } -}; diff --git a/tests/database/migrations/create_users_table.php b/tests/database/migrations/create_users_table.php deleted file mode 100644 index 2bf418036fa..00000000000 --- a/tests/database/migrations/create_users_table.php +++ /dev/null @@ -1,26 +0,0 @@ -id(); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); - } - - public function down(): void - { - Schema::dropIfExists('users'); - } -}; diff --git a/tests/src/TestCase.php b/tests/src/TestCase.php index 05f6e167eeb..8cefc56327c 100644 --- a/tests/src/TestCase.php +++ b/tests/src/TestCase.php @@ -17,12 +17,14 @@ use Filament\Widgets\WidgetsServiceProvider; use Illuminate\Foundation\Testing\LazilyRefreshDatabase; use Livewire\LivewireServiceProvider; +use Orchestra\Testbench\Concerns\WithWorkbench; use Orchestra\Testbench\TestCase as BaseTestCase; use RyanChandler\BladeCaptureDirective\BladeCaptureDirectiveServiceProvider; abstract class TestCase extends BaseTestCase { use LazilyRefreshDatabase; + use WithWorkbench; protected function getPackageProviders($app): array { @@ -49,14 +51,8 @@ protected function getPackageProviders($app): array ]; } - protected function defineDatabaseMigrations(): void + protected function defineEnvironment($app): void { - $this->loadMigrationsFrom(__DIR__ . '/../database/migrations'); - } - - protected function getEnvironmentSetUp($app): void - { - $app['config']->set('auth.passwords.users.table', 'password_reset_tokens'); $app['config']->set('auth.providers.users.model', User::class); $app['config']->set('view.paths', [ ...$app['config']->get('view.paths'), diff --git a/tests/src/Upgrade/RectorTest.php b/tests/src/Upgrade/RectorTest.php index a2d57d98d0a..8c13f74d60d 100644 --- a/tests/src/Upgrade/RectorTest.php +++ b/tests/src/Upgrade/RectorTest.php @@ -1,25 +1,25 @@ doTestFile($filePath); - } - - public static function provideData(): Iterator - { - return self::yieldFilesFromDirectory(__DIR__ . '/Fixture'); - } - - public function provideConfigFilePath(): string - { - return __DIR__ . '/../../../packages/upgrade/src/rector.php'; - } -} +// namespace Filament\Tests\Upgrade; +// +// use Iterator; +// use Rector\Testing\PHPUnit\AbstractRectorTestCase; +// +// class RectorTest extends AbstractRectorTestCase +// { +// /** @dataProvider provideData */ +// public function test(string $filePath): void +// { +// $this->doTestFile($filePath); +// } +// +// public static function provideData(): Iterator +// { +// return self::yieldFilesFromDirectory(__DIR__ . '/Fixture'); +// } +// +// public function provideConfigFilePath(): string +// { +// return __DIR__ . '/../../../packages/upgrade/src/rector.php'; +// } +// }