diff --git a/composer.json b/composer.json
index 0c79182..68518be 100644
--- a/composer.json
+++ b/composer.json
@@ -18,6 +18,7 @@
"minimum-stability": "stable",
"require": {
"php": ">=8.1",
+ "illuminate/console": "^11|^10",
"illuminate/support": "^11|^10",
"guzzlehttp/guzzle": "^7"
},
diff --git a/composer.lock b/composer.lock
index 8f8cc7c..4a939f9 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": "93194d6f446df864607e6d377c5ec3a2",
+ "content-hash": "d1f4e6821e6bd222eaa295d5c99c1994",
"packages": [
{
"name": "brick/math",
@@ -1056,16 +1056,16 @@
},
{
"name": "laravel/framework",
- "version": "v11.32.0",
+ "version": "v11.33.2",
"source": {
"type": "git",
"url": "https://github.com/laravel/framework.git",
- "reference": "bc2aad63f83ee5089be7b21cf29d645ccf31e927"
+ "reference": "6b9832751cf8eed18b3c73df5071f78f0682aa5d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/framework/zipball/bc2aad63f83ee5089be7b21cf29d645ccf31e927",
- "reference": "bc2aad63f83ee5089be7b21cf29d645ccf31e927",
+ "url": "https://api.github.com/repos/laravel/framework/zipball/6b9832751cf8eed18b3c73df5071f78f0682aa5d",
+ "reference": "6b9832751cf8eed18b3c73df5071f78f0682aa5d",
"shasum": ""
},
"require": {
@@ -1085,7 +1085,7 @@
"guzzlehttp/guzzle": "^7.8",
"guzzlehttp/uri-template": "^1.0",
"laravel/prompts": "^0.1.18|^0.2.0|^0.3.0",
- "laravel/serializable-closure": "^1.3",
+ "laravel/serializable-closure": "^1.3|^2.0",
"league/commonmark": "^2.2.1",
"league/flysystem": "^3.8.0",
"monolog/monolog": "^3.0",
@@ -1168,9 +1168,9 @@
"league/flysystem-path-prefixing": "^3.3",
"league/flysystem-read-only": "^3.3",
"league/flysystem-sftp-v3": "^3.0",
- "mockery/mockery": "^1.6",
+ "mockery/mockery": "^1.6.10",
"nyholm/psr7": "^1.2",
- "orchestra/testbench-core": "^9.5",
+ "orchestra/testbench-core": "^9.6",
"pda/pheanstalk": "^5.0",
"phpstan/phpstan": "^1.11.5",
"phpunit/phpunit": "^10.5|^11.0",
@@ -1261,7 +1261,7 @@
"issues": "https://github.com/laravel/framework/issues",
"source": "https://github.com/laravel/framework"
},
- "time": "2024-11-15T17:04:33+00:00"
+ "time": "2024-11-19T22:47:13+00:00"
},
{
"name": "laravel/prompts",
@@ -1324,32 +1324,32 @@
},
{
"name": "laravel/serializable-closure",
- "version": "v1.3.6",
+ "version": "v2.0.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/serializable-closure.git",
- "reference": "f865a58ea3a0107c336b7045104c75243fa59d96"
+ "reference": "0d8d3d8086984996df86596a86dea60398093a81"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/f865a58ea3a0107c336b7045104c75243fa59d96",
- "reference": "f865a58ea3a0107c336b7045104c75243fa59d96",
+ "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/0d8d3d8086984996df86596a86dea60398093a81",
+ "reference": "0d8d3d8086984996df86596a86dea60398093a81",
"shasum": ""
},
"require": {
- "php": "^7.3|^8.0"
+ "php": "^8.1"
},
"require-dev": {
- "illuminate/support": "^8.0|^9.0|^10.0|^11.0",
- "nesbot/carbon": "^2.61|^3.0",
- "pestphp/pest": "^1.21.3",
- "phpstan/phpstan": "^1.8.2",
- "symfony/var-dumper": "^5.4.11|^6.2.0|^7.0.0"
+ "illuminate/support": "^10.0|^11.0",
+ "nesbot/carbon": "^2.67|^3.0",
+ "pestphp/pest": "^2.36",
+ "phpstan/phpstan": "^2.0",
+ "symfony/var-dumper": "^6.2.0|^7.0.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.x-dev"
+ "dev-master": "2.x-dev"
}
},
"autoload": {
@@ -1381,7 +1381,7 @@
"issues": "https://github.com/laravel/serializable-closure/issues",
"source": "https://github.com/laravel/serializable-closure"
},
- "time": "2024-11-11T17:06:04+00:00"
+ "time": "2024-11-19T01:38:44+00:00"
},
{
"name": "league/commonmark",
@@ -2118,31 +2118,31 @@
},
{
"name": "nunomaduro/termwind",
- "version": "v2.2.0",
+ "version": "v2.3.0",
"source": {
"type": "git",
"url": "https://github.com/nunomaduro/termwind.git",
- "reference": "42c84e4e8090766bbd6445d06cd6e57650626ea3"
+ "reference": "52915afe6a1044e8b9cee1bcff836fb63acf9cda"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/42c84e4e8090766bbd6445d06cd6e57650626ea3",
- "reference": "42c84e4e8090766bbd6445d06cd6e57650626ea3",
+ "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/52915afe6a1044e8b9cee1bcff836fb63acf9cda",
+ "reference": "52915afe6a1044e8b9cee1bcff836fb63acf9cda",
"shasum": ""
},
"require": {
"ext-mbstring": "*",
"php": "^8.2",
- "symfony/console": "^7.1.5"
+ "symfony/console": "^7.1.8"
},
"require-dev": {
- "illuminate/console": "^11.28.0",
- "laravel/pint": "^1.18.1",
+ "illuminate/console": "^11.33.2",
+ "laravel/pint": "^1.18.2",
"mockery/mockery": "^1.6.12",
"pestphp/pest": "^2.36.0",
- "phpstan/phpstan": "^1.12.6",
+ "phpstan/phpstan": "^1.12.11",
"phpstan/phpstan-strict-rules": "^1.6.1",
- "symfony/var-dumper": "^7.1.5",
+ "symfony/var-dumper": "^7.1.8",
"thecodingmachine/phpstan-strict-rules": "^1.0.0"
},
"type": "library",
@@ -2185,7 +2185,7 @@
],
"support": {
"issues": "https://github.com/nunomaduro/termwind/issues",
- "source": "https://github.com/nunomaduro/termwind/tree/v2.2.0"
+ "source": "https://github.com/nunomaduro/termwind/tree/v2.3.0"
},
"funding": [
{
@@ -2201,7 +2201,7 @@
"type": "github"
}
],
- "time": "2024-10-15T16:15:16+00:00"
+ "time": "2024-11-21T10:39:51+00:00"
},
{
"name": "phpoption/phpoption",
@@ -5280,16 +5280,16 @@
},
{
"name": "voku/portable-ascii",
- "version": "2.0.1",
+ "version": "2.0.3",
"source": {
"type": "git",
"url": "https://github.com/voku/portable-ascii.git",
- "reference": "b56450eed252f6801410d810c8e1727224ae0743"
+ "reference": "b1d923f88091c6bf09699efcd7c8a1b1bfd7351d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b56450eed252f6801410d810c8e1727224ae0743",
- "reference": "b56450eed252f6801410d810c8e1727224ae0743",
+ "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b1d923f88091c6bf09699efcd7c8a1b1bfd7351d",
+ "reference": "b1d923f88091c6bf09699efcd7c8a1b1bfd7351d",
"shasum": ""
},
"require": {
@@ -5314,7 +5314,7 @@
"authors": [
{
"name": "Lars Moelleken",
- "homepage": "http://www.moelleken.org/"
+ "homepage": "https://www.moelleken.org/"
}
],
"description": "Portable ASCII library - performance optimized (ascii) string functions for php.",
@@ -5326,7 +5326,7 @@
],
"support": {
"issues": "https://github.com/voku/portable-ascii/issues",
- "source": "https://github.com/voku/portable-ascii/tree/2.0.1"
+ "source": "https://github.com/voku/portable-ascii/tree/2.0.3"
},
"funding": [
{
@@ -5350,7 +5350,7 @@
"type": "tidelift"
}
],
- "time": "2022-03-08T17:03:00+00:00"
+ "time": "2024-11-21T01:49:47+00:00"
},
{
"name": "webmozart/assert",
@@ -5495,16 +5495,16 @@
},
{
"name": "fakerphp/faker",
- "version": "v1.24.0",
+ "version": "v1.24.1",
"source": {
"type": "git",
"url": "https://github.com/FakerPHP/Faker.git",
- "reference": "a136842a532bac9ecd8a1c723852b09915d7db50"
+ "reference": "e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/a136842a532bac9ecd8a1c723852b09915d7db50",
- "reference": "a136842a532bac9ecd8a1c723852b09915d7db50",
+ "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5",
+ "reference": "e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5",
"shasum": ""
},
"require": {
@@ -5552,9 +5552,9 @@
],
"support": {
"issues": "https://github.com/FakerPHP/Faker/issues",
- "source": "https://github.com/FakerPHP/Faker/tree/v1.24.0"
+ "source": "https://github.com/FakerPHP/Faker/tree/v1.24.1"
},
- "time": "2024-11-07T15:11:20+00:00"
+ "time": "2024-11-21T13:46:39+00:00"
},
{
"name": "filp/whoops",
@@ -5758,16 +5758,16 @@
},
{
"name": "laravel/pint",
- "version": "v1.18.1",
+ "version": "v1.18.2",
"source": {
"type": "git",
"url": "https://github.com/laravel/pint.git",
- "reference": "35c00c05ec43e6b46d295efc0f4386ceb30d50d9"
+ "reference": "f55daaf7eb6c2f49ddf6702fb42e3091c64d8a64"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/pint/zipball/35c00c05ec43e6b46d295efc0f4386ceb30d50d9",
- "reference": "35c00c05ec43e6b46d295efc0f4386ceb30d50d9",
+ "url": "https://api.github.com/repos/laravel/pint/zipball/f55daaf7eb6c2f49ddf6702fb42e3091c64d8a64",
+ "reference": "f55daaf7eb6c2f49ddf6702fb42e3091c64d8a64",
"shasum": ""
},
"require": {
@@ -5820,7 +5820,7 @@
"issues": "https://github.com/laravel/pint/issues",
"source": "https://github.com/laravel/pint"
},
- "time": "2024-09-24T17:22:50+00:00"
+ "time": "2024-11-20T09:33:46+00:00"
},
{
"name": "laravel/tinker",
@@ -6331,30 +6331,30 @@
},
{
"name": "orchestra/testbench",
- "version": "v9.5.2",
+ "version": "v9.6.1",
"source": {
"type": "git",
"url": "https://github.com/orchestral/testbench.git",
- "reference": "bc404d840ffbb722bf0bbb042251ef83223482f9"
+ "reference": "97cc0e7cd52540ae9149b4a4fc512b198fed0237"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/orchestral/testbench/zipball/bc404d840ffbb722bf0bbb042251ef83223482f9",
- "reference": "bc404d840ffbb722bf0bbb042251ef83223482f9",
+ "url": "https://api.github.com/repos/orchestral/testbench/zipball/97cc0e7cd52540ae9149b4a4fc512b198fed0237",
+ "reference": "97cc0e7cd52540ae9149b4a4fc512b198fed0237",
"shasum": ""
},
"require": {
"composer-runtime-api": "^2.2",
"fakerphp/faker": "^1.23",
- "laravel/framework": "^11.11",
- "mockery/mockery": "^1.6",
- "orchestra/testbench-core": "^9.5.3",
- "orchestra/workbench": "^9.6",
+ "laravel/framework": "^11.33.2",
+ "mockery/mockery": "^1.6.10",
+ "orchestra/testbench-core": "^9.6.2",
+ "orchestra/workbench": "^9.8",
"php": "^8.2",
- "phpunit/phpunit": "^10.5 || ^11.0.1",
- "symfony/process": "^7.0",
- "symfony/yaml": "^7.0",
- "vlucas/phpdotenv": "^5.4.1"
+ "phpunit/phpunit": "^10.5.35 || ^11.3.6",
+ "symfony/process": "^7.0.3",
+ "symfony/yaml": "^7.0.3",
+ "vlucas/phpdotenv": "^5.6.1"
},
"type": "library",
"notification-url": "https://packagist.org/downloads/",
@@ -6380,53 +6380,54 @@
],
"support": {
"issues": "https://github.com/orchestral/testbench/issues",
- "source": "https://github.com/orchestral/testbench/tree/v9.5.2"
+ "source": "https://github.com/orchestral/testbench/tree/v9.6.1"
},
- "time": "2024-10-06T13:07:57+00:00"
+ "time": "2024-11-20T00:28:28+00:00"
},
{
"name": "orchestra/testbench-core",
- "version": "v9.5.6",
+ "version": "v9.6.2",
"source": {
"type": "git",
"url": "https://github.com/orchestral/testbench-core.git",
- "reference": "26860d007c9316a20b1e9986dadb38f3ffb35433"
+ "reference": "a776c94ab989f88e44b3d7f2f9df8e7ccb242974"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/orchestral/testbench-core/zipball/26860d007c9316a20b1e9986dadb38f3ffb35433",
- "reference": "26860d007c9316a20b1e9986dadb38f3ffb35433",
+ "url": "https://api.github.com/repos/orchestral/testbench-core/zipball/a776c94ab989f88e44b3d7f2f9df8e7ccb242974",
+ "reference": "a776c94ab989f88e44b3d7f2f9df8e7ccb242974",
"shasum": ""
},
"require": {
"composer-runtime-api": "^2.2",
"php": "^8.2",
- "symfony/polyfill-php83": "^1.28"
+ "symfony/polyfill-php83": "^1.31",
+ "symfony/polyfill-php84": "^1.31"
},
"conflict": {
"brianium/paratest": "<7.3.0 || >=8.0.0",
- "laravel/framework": "<11.11.0 || >=12.0.0",
- "laravel/serializable-closure": "<1.3.0 || >=2.0.0",
+ "laravel/framework": "<11.33.2 || >=12.0.0",
+ "laravel/serializable-closure": "<1.3.0 || >=3.0.0",
"nunomaduro/collision": "<8.0.0 || >=9.0.0",
- "phpunit/phpunit": "<10.5.0 || 11.0.0 || >=11.5.0"
+ "phpunit/phpunit": "<10.5.35 || >=11.0.0 <11.3.6 || >=11.5.0"
},
"require-dev": {
"fakerphp/faker": "^1.23",
- "laravel/framework": "^11.11",
+ "laravel/framework": "^11.33.2",
"laravel/pint": "^1.17",
- "mockery/mockery": "^1.6",
- "phpstan/phpstan": "^1.11",
- "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"
+ "laravel/serializable-closure": "^1.3 || ^2.0",
+ "mockery/mockery": "^1.6.10",
+ "phpstan/phpstan": "^2.0",
+ "phpunit/phpunit": "^10.5.35 || ^11.3.6",
+ "symfony/process": "^7.0.3",
+ "symfony/yaml": "^7.0.3",
+ "vlucas/phpdotenv": "^5.6.1"
},
"suggest": {
"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.23).",
- "laravel/framework": "Required for testing (^11.11).",
+ "laravel/framework": "Required for testing (^11.33.2).",
"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).",
@@ -6472,33 +6473,32 @@
"issues": "https://github.com/orchestral/testbench/issues",
"source": "https://github.com/orchestral/testbench-core"
},
- "time": "2024-10-30T23:18:34+00:00"
+ "time": "2024-11-20T00:25:28+00:00"
},
{
"name": "orchestra/workbench",
- "version": "v9.7.0",
+ "version": "v9.8.0",
"source": {
"type": "git",
"url": "https://github.com/orchestral/workbench.git",
- "reference": "1744d07bfeee488270039b3b21605f528c3b696d"
+ "reference": "7e098f6c09276f0ed6f774cffe11fad53cf25c3a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/orchestral/workbench/zipball/1744d07bfeee488270039b3b21605f528c3b696d",
- "reference": "1744d07bfeee488270039b3b21605f528c3b696d",
+ "url": "https://api.github.com/repos/orchestral/workbench/zipball/7e098f6c09276f0ed6f774cffe11fad53cf25c3a",
+ "reference": "7e098f6c09276f0ed6f774cffe11fad53cf25c3a",
"shasum": ""
},
"require": {
"composer-runtime-api": "^2.2",
"fakerphp/faker": "^1.23",
- "laravel/framework": "^11.11",
+ "laravel/framework": "^11.31",
"laravel/pail": "^1.2",
"laravel/tinker": "^2.9",
"nunomaduro/collision": "^8.0",
"orchestra/canvas": "^9.1",
- "orchestra/testbench-core": "^9.5.3",
+ "orchestra/testbench-core": "^9.6",
"php": "^8.2",
- "spatie/laravel-ray": "^1.35",
"symfony/polyfill-php83": "^1.31",
"symfony/polyfill-php84": "^1.31",
"symfony/yaml": "^7.0.3"
@@ -6506,7 +6506,7 @@
"require-dev": {
"laravel/pint": "^1.17",
"mockery/mockery": "^1.6.10",
- "phpstan/phpstan": "^1.11",
+ "phpstan/phpstan": "^2.0",
"phpunit/phpunit": "^10.5.35 || ^11.3.6",
"symfony/process": "^7.0.3"
},
@@ -6538,9 +6538,9 @@
],
"support": {
"issues": "https://github.com/orchestral/workbench/issues",
- "source": "https://github.com/orchestral/workbench/tree/v9.7.0"
+ "source": "https://github.com/orchestral/workbench/tree/v9.8.0"
},
- "time": "2024-10-24T06:22:45+00:00"
+ "time": "2024-11-18T23:21:07+00:00"
},
{
"name": "phar-io/manifest",
@@ -6660,192 +6660,6 @@
},
"time": "2022-02-21T01:04:05+00:00"
},
- {
- "name": "php-di/invoker",
- "version": "2.3.4",
- "source": {
- "type": "git",
- "url": "https://github.com/PHP-DI/Invoker.git",
- "reference": "33234b32dafa8eb69202f950a1fc92055ed76a86"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/PHP-DI/Invoker/zipball/33234b32dafa8eb69202f950a1fc92055ed76a86",
- "reference": "33234b32dafa8eb69202f950a1fc92055ed76a86",
- "shasum": ""
- },
- "require": {
- "php": ">=7.3",
- "psr/container": "^1.0|^2.0"
- },
- "require-dev": {
- "athletic/athletic": "~0.1.8",
- "mnapoli/hard-mode": "~0.3.0",
- "phpunit/phpunit": "^9.0"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Invoker\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "Generic and extensible callable invoker",
- "homepage": "https://github.com/PHP-DI/Invoker",
- "keywords": [
- "callable",
- "dependency",
- "dependency-injection",
- "injection",
- "invoke",
- "invoker"
- ],
- "support": {
- "issues": "https://github.com/PHP-DI/Invoker/issues",
- "source": "https://github.com/PHP-DI/Invoker/tree/2.3.4"
- },
- "funding": [
- {
- "url": "https://github.com/mnapoli",
- "type": "github"
- }
- ],
- "time": "2023-09-08T09:24:21+00:00"
- },
- {
- "name": "php-di/php-di",
- "version": "7.0.7",
- "source": {
- "type": "git",
- "url": "https://github.com/PHP-DI/PHP-DI.git",
- "reference": "e87435e3c0e8f22977adc5af0d5cdcc467e15cf1"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/PHP-DI/PHP-DI/zipball/e87435e3c0e8f22977adc5af0d5cdcc467e15cf1",
- "reference": "e87435e3c0e8f22977adc5af0d5cdcc467e15cf1",
- "shasum": ""
- },
- "require": {
- "laravel/serializable-closure": "^1.0",
- "php": ">=8.0",
- "php-di/invoker": "^2.0",
- "psr/container": "^1.1 || ^2.0"
- },
- "provide": {
- "psr/container-implementation": "^1.0"
- },
- "require-dev": {
- "friendsofphp/php-cs-fixer": "^3",
- "friendsofphp/proxy-manager-lts": "^1",
- "mnapoli/phpunit-easymock": "^1.3",
- "phpunit/phpunit": "^9.5",
- "vimeo/psalm": "^4.6"
- },
- "suggest": {
- "friendsofphp/proxy-manager-lts": "Install it if you want to use lazy injection (version ^1)"
- },
- "type": "library",
- "autoload": {
- "files": [
- "src/functions.php"
- ],
- "psr-4": {
- "DI\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "The dependency injection container for humans",
- "homepage": "https://php-di.org/",
- "keywords": [
- "PSR-11",
- "container",
- "container-interop",
- "dependency injection",
- "di",
- "ioc",
- "psr11"
- ],
- "support": {
- "issues": "https://github.com/PHP-DI/PHP-DI/issues",
- "source": "https://github.com/PHP-DI/PHP-DI/tree/7.0.7"
- },
- "funding": [
- {
- "url": "https://github.com/mnapoli",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/php-di/php-di",
- "type": "tidelift"
- }
- ],
- "time": "2024-07-21T15:55:45+00:00"
- },
- {
- "name": "phpstan/phpstan",
- "version": "1.12.11",
- "source": {
- "type": "git",
- "url": "https://github.com/phpstan/phpstan.git",
- "reference": "0d1fc20a962a91be578bcfe7cf939e6e1a2ff733"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpstan/zipball/0d1fc20a962a91be578bcfe7cf939e6e1a2ff733",
- "reference": "0d1fc20a962a91be578bcfe7cf939e6e1a2ff733",
- "shasum": ""
- },
- "require": {
- "php": "^7.2|^8.0"
- },
- "conflict": {
- "phpstan/phpstan-shim": "*"
- },
- "bin": [
- "phpstan",
- "phpstan.phar"
- ],
- "type": "library",
- "autoload": {
- "files": [
- "bootstrap.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "PHPStan - PHP Static Analysis Tool",
- "keywords": [
- "dev",
- "static analysis"
- ],
- "support": {
- "docs": "https://phpstan.org/user-guide/getting-started",
- "forum": "https://github.com/phpstan/phpstan/discussions",
- "issues": "https://github.com/phpstan/phpstan/issues",
- "security": "https://github.com/phpstan/phpstan/security/policy",
- "source": "https://github.com/phpstan/phpstan-src"
- },
- "funding": [
- {
- "url": "https://github.com/ondrejmirtes",
- "type": "github"
- },
- {
- "url": "https://github.com/phpstan",
- "type": "github"
- }
- ],
- "time": "2024-11-17T14:08:01+00:00"
- },
{
"name": "phpunit/php-code-coverage",
"version": "11.0.7",
@@ -7348,65 +7162,6 @@
},
"time": "2024-06-10T01:18:23+00:00"
},
- {
- "name": "rector/rector",
- "version": "1.2.10",
- "source": {
- "type": "git",
- "url": "https://github.com/rectorphp/rector.git",
- "reference": "40f9cf38c05296bd32f444121336a521a293fa61"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/rectorphp/rector/zipball/40f9cf38c05296bd32f444121336a521a293fa61",
- "reference": "40f9cf38c05296bd32f444121336a521a293fa61",
- "shasum": ""
- },
- "require": {
- "php": "^7.2|^8.0",
- "phpstan/phpstan": "^1.12.5"
- },
- "conflict": {
- "rector/rector-doctrine": "*",
- "rector/rector-downgrade-php": "*",
- "rector/rector-phpunit": "*",
- "rector/rector-symfony": "*"
- },
- "suggest": {
- "ext-dom": "To manipulate phpunit.xml via the custom-rule command"
- },
- "bin": [
- "bin/rector"
- ],
- "type": "library",
- "autoload": {
- "files": [
- "bootstrap.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "Instant Upgrade and Automated Refactoring of any PHP code",
- "keywords": [
- "automation",
- "dev",
- "migration",
- "refactoring"
- ],
- "support": {
- "issues": "https://github.com/rectorphp/rector/issues",
- "source": "https://github.com/rectorphp/rector/tree/1.2.10"
- },
- "funding": [
- {
- "url": "https://github.com/tomasvotruba",
- "type": "github"
- }
- ],
- "time": "2024-11-08T13:59:10+00:00"
- },
{
"name": "sebastian/cli-parser",
"version": "3.0.2",
@@ -8331,34 +8086,39 @@
"time": "2024-10-09T05:16:32+00:00"
},
{
- "name": "spatie/backtrace",
- "version": "1.6.2",
+ "name": "symfony/polyfill-php84",
+ "version": "v1.31.0",
"source": {
"type": "git",
- "url": "https://github.com/spatie/backtrace.git",
- "reference": "1a9a145b044677ae3424693f7b06479fc8c137a9"
+ "url": "https://github.com/symfony/polyfill-php84.git",
+ "reference": "e5493eb51311ab0b1cc2243416613f06ed8f18bd"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/spatie/backtrace/zipball/1a9a145b044677ae3424693f7b06479fc8c137a9",
- "reference": "1a9a145b044677ae3424693f7b06479fc8c137a9",
+ "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/e5493eb51311ab0b1cc2243416613f06ed8f18bd",
+ "reference": "e5493eb51311ab0b1cc2243416613f06ed8f18bd",
"shasum": ""
},
"require": {
- "php": "^7.3|^8.0"
- },
- "require-dev": {
- "ext-json": "*",
- "laravel/serializable-closure": "^1.3",
- "phpunit/phpunit": "^9.3",
- "spatie/phpunit-snapshot-assertions": "^4.2",
- "symfony/var-dumper": "^5.1"
+ "php": ">=7.2"
},
"type": "library",
+ "extra": {
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
"autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
"psr-4": {
- "Spatie\\Backtrace\\": "src"
- }
+ "Symfony\\Polyfill\\Php84\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -8366,508 +8126,76 @@
],
"authors": [
{
- "name": "Freek Van de Herten",
- "email": "freek@spatie.be",
- "homepage": "https://spatie.be",
- "role": "Developer"
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
}
],
- "description": "A better backtrace",
- "homepage": "https://github.com/spatie/backtrace",
+ "description": "Symfony polyfill backporting some PHP 8.4+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
"keywords": [
- "Backtrace",
- "spatie"
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
],
"support": {
- "source": "https://github.com/spatie/backtrace/tree/1.6.2"
+ "source": "https://github.com/symfony/polyfill-php84/tree/v1.31.0"
},
"funding": [
{
- "url": "https://github.com/sponsors/spatie",
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
"type": "github"
},
{
- "url": "https://spatie.be/open-source/support-us",
- "type": "other"
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
}
],
- "time": "2024-07-22T08:21:24+00:00"
+ "time": "2024-09-09T12:04:04+00:00"
},
{
- "name": "spatie/laravel-ray",
- "version": "1.37.1",
+ "name": "symfony/yaml",
+ "version": "v7.1.6",
"source": {
"type": "git",
- "url": "https://github.com/spatie/laravel-ray.git",
- "reference": "c2bedfd1172648df2c80aaceb2541d70f1d9a5b9"
+ "url": "https://github.com/symfony/yaml.git",
+ "reference": "3ced3f29e4f0d6bce2170ff26719f1fe9aacc671"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/spatie/laravel-ray/zipball/c2bedfd1172648df2c80aaceb2541d70f1d9a5b9",
- "reference": "c2bedfd1172648df2c80aaceb2541d70f1d9a5b9",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/3ced3f29e4f0d6bce2170ff26719f1fe9aacc671",
+ "reference": "3ced3f29e4f0d6bce2170ff26719f1fe9aacc671",
"shasum": ""
},
"require": {
- "ext-json": "*",
- "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.41.1",
- "symfony/stopwatch": "4.2|^5.1|^6.0|^7.0",
- "zbateson/mail-mime-parser": "^1.3.1|^2.0|^3.0"
+ "php": ">=8.2",
+ "symfony/polyfill-ctype": "^1.8"
+ },
+ "conflict": {
+ "symfony/console": "<6.4"
},
"require-dev": {
- "guzzlehttp/guzzle": "^7.3",
- "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"
+ "symfony/console": "^6.4|^7.0"
},
+ "bin": [
+ "Resources/bin/yaml-lint"
+ ],
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.x-dev"
- },
- "laravel": {
- "providers": [
- "Spatie\\LaravelRay\\RayServiceProvider"
- ]
- }
- },
"autoload": {
"psr-4": {
- "Spatie\\LaravelRay\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Freek Van der Herten",
- "email": "freek@spatie.be",
- "homepage": "https://spatie.be",
- "role": "Developer"
- }
- ],
- "description": "Easily debug Laravel apps",
- "homepage": "https://github.com/spatie/laravel-ray",
- "keywords": [
- "laravel-ray",
- "spatie"
- ],
- "support": {
- "issues": "https://github.com/spatie/laravel-ray/issues",
- "source": "https://github.com/spatie/laravel-ray/tree/1.37.1"
- },
- "funding": [
- {
- "url": "https://github.com/sponsors/spatie",
- "type": "github"
- },
- {
- "url": "https://spatie.be/open-source/support-us",
- "type": "other"
- }
- ],
- "time": "2024-07-12T12:35:17+00:00"
- },
- {
- "name": "spatie/macroable",
- "version": "2.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/spatie/macroable.git",
- "reference": "ec2c320f932e730607aff8052c44183cf3ecb072"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/spatie/macroable/zipball/ec2c320f932e730607aff8052c44183cf3ecb072",
- "reference": "ec2c320f932e730607aff8052c44183cf3ecb072",
- "shasum": ""
- },
- "require": {
- "php": "^8.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^8.0|^9.3"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Spatie\\Macroable\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Freek Van der Herten",
- "email": "freek@spatie.be",
- "homepage": "https://spatie.be",
- "role": "Developer"
- }
- ],
- "description": "A trait to dynamically add methods to a class",
- "homepage": "https://github.com/spatie/macroable",
- "keywords": [
- "macroable",
- "spatie"
- ],
- "support": {
- "issues": "https://github.com/spatie/macroable/issues",
- "source": "https://github.com/spatie/macroable/tree/2.0.0"
- },
- "time": "2021-03-26T22:39:02+00:00"
- },
- {
- "name": "spatie/ray",
- "version": "1.41.2",
- "source": {
- "type": "git",
- "url": "https://github.com/spatie/ray.git",
- "reference": "c44f8cfbf82c69909b505de61d8d3f2d324e93fc"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/spatie/ray/zipball/c44f8cfbf82c69909b505de61d8d3f2d324e93fc",
- "reference": "c44f8cfbf82c69909b505de61d8d3f2d324e93fc",
- "shasum": ""
- },
- "require": {
- "ext-curl": "*",
- "ext-json": "*",
- "php": "^7.3|^8.0",
- "ramsey/uuid": "^3.0|^4.1",
- "spatie/backtrace": "^1.1",
- "spatie/macroable": "^1.0|^2.0",
- "symfony/stopwatch": "^4.0|^5.1|^6.0|^7.0",
- "symfony/var-dumper": "^4.2|^5.1|^6.0|^7.0.3"
- },
- "require-dev": {
- "illuminate/support": "6.x|^8.18|^9.0",
- "nesbot/carbon": "^2.63",
- "pestphp/pest": "^1.22",
- "phpstan/phpstan": "^1.10",
- "phpunit/phpunit": "^9.5",
- "rector/rector": "^0.19.2",
- "spatie/phpunit-snapshot-assertions": "^4.2",
- "spatie/test-time": "^1.2"
- },
- "bin": [
- "bin/remove-ray.sh"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.x-dev"
- }
- },
- "autoload": {
- "files": [
- "src/helpers.php"
- ],
- "psr-4": {
- "Spatie\\Ray\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Freek Van der Herten",
- "email": "freek@spatie.be",
- "homepage": "https://spatie.be",
- "role": "Developer"
- }
- ],
- "description": "Debug with Ray to fix problems faster",
- "homepage": "https://github.com/spatie/ray",
- "keywords": [
- "ray",
- "spatie"
- ],
- "support": {
- "issues": "https://github.com/spatie/ray/issues",
- "source": "https://github.com/spatie/ray/tree/1.41.2"
- },
- "funding": [
- {
- "url": "https://github.com/sponsors/spatie",
- "type": "github"
- },
- {
- "url": "https://spatie.be/open-source/support-us",
- "type": "other"
- }
- ],
- "time": "2024-04-24T14:21:46+00:00"
- },
- {
- "name": "symfony/polyfill-iconv",
- "version": "v1.31.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-iconv.git",
- "reference": "48becf00c920479ca2e910c22a5a39e5d47ca956"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/48becf00c920479ca2e910c22a5a39e5d47ca956",
- "reference": "48becf00c920479ca2e910c22a5a39e5d47ca956",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2"
- },
- "provide": {
- "ext-iconv": "*"
- },
- "suggest": {
- "ext-iconv": "For best performance"
- },
- "type": "library",
- "extra": {
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "autoload": {
- "files": [
- "bootstrap.php"
- ],
- "psr-4": {
- "Symfony\\Polyfill\\Iconv\\": ""
- }
- },
- "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 the Iconv extension",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "iconv",
- "polyfill",
- "portable",
- "shim"
- ],
- "support": {
- "source": "https://github.com/symfony/polyfill-iconv/tree/v1.31.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-09-09T11:45:10+00:00"
- },
- {
- "name": "symfony/polyfill-php84",
- "version": "v1.31.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-php84.git",
- "reference": "e5493eb51311ab0b1cc2243416613f06ed8f18bd"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/e5493eb51311ab0b1cc2243416613f06ed8f18bd",
- "reference": "e5493eb51311ab0b1cc2243416613f06ed8f18bd",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2"
- },
- "type": "library",
- "extra": {
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "autoload": {
- "files": [
- "bootstrap.php"
- ],
- "psr-4": {
- "Symfony\\Polyfill\\Php84\\": ""
- },
- "classmap": [
- "Resources/stubs"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill backporting some PHP 8.4+ features to lower PHP versions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "polyfill",
- "portable",
- "shim"
- ],
- "support": {
- "source": "https://github.com/symfony/polyfill-php84/tree/v1.31.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-09-09T12:04:04+00:00"
- },
- {
- "name": "symfony/stopwatch",
- "version": "v7.1.6",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/stopwatch.git",
- "reference": "8b4a434e6e7faf6adedffb48783a5c75409a1a05"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/stopwatch/zipball/8b4a434e6e7faf6adedffb48783a5c75409a1a05",
- "reference": "8b4a434e6e7faf6adedffb48783a5c75409a1a05",
- "shasum": ""
- },
- "require": {
- "php": ">=8.2",
- "symfony/service-contracts": "^2.5|^3"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Stopwatch\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Provides a way to profile code",
- "homepage": "https://symfony.com",
- "support": {
- "source": "https://github.com/symfony/stopwatch/tree/v7.1.6"
- },
- "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-09-25T14:20:29+00:00"
- },
- {
- "name": "symfony/yaml",
- "version": "v7.1.6",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/yaml.git",
- "reference": "3ced3f29e4f0d6bce2170ff26719f1fe9aacc671"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/3ced3f29e4f0d6bce2170ff26719f1fe9aacc671",
- "reference": "3ced3f29e4f0d6bce2170ff26719f1fe9aacc671",
- "shasum": ""
- },
- "require": {
- "php": ">=8.2",
- "symfony/polyfill-ctype": "^1.8"
- },
- "conflict": {
- "symfony/console": "<6.4"
- },
- "require-dev": {
- "symfony/console": "^6.4|^7.0"
- },
- "bin": [
- "Resources/bin/yaml-lint"
- ],
- "type": "library",
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Yaml\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
+ "Symfony\\Component\\Yaml\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -8953,214 +8281,6 @@
}
],
"time": "2024-03-03T12:36:25+00:00"
- },
- {
- "name": "zbateson/mail-mime-parser",
- "version": "3.0.3",
- "source": {
- "type": "git",
- "url": "https://github.com/zbateson/mail-mime-parser.git",
- "reference": "e0d4423fe27850c9dd301190767dbc421acc2f19"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/zbateson/mail-mime-parser/zipball/e0d4423fe27850c9dd301190767dbc421acc2f19",
- "reference": "e0d4423fe27850c9dd301190767dbc421acc2f19",
- "shasum": ""
- },
- "require": {
- "guzzlehttp/psr7": "^2.5",
- "php": ">=8.0",
- "php-di/php-di": "^6.0|^7.0",
- "psr/log": "^1|^2|^3",
- "zbateson/mb-wrapper": "^2.0",
- "zbateson/stream-decorators": "^2.1"
- },
- "require-dev": {
- "friendsofphp/php-cs-fixer": "*",
- "monolog/monolog": "^2|^3",
- "phpstan/phpstan": "*",
- "phpunit/phpunit": "^9.6"
- },
- "suggest": {
- "ext-iconv": "For best support/performance",
- "ext-mbstring": "For best support/performance"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "ZBateson\\MailMimeParser\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-2-Clause"
- ],
- "authors": [
- {
- "name": "Zaahid Bateson"
- },
- {
- "name": "Contributors",
- "homepage": "https://github.com/zbateson/mail-mime-parser/graphs/contributors"
- }
- ],
- "description": "MIME email message parser",
- "homepage": "https://mail-mime-parser.org",
- "keywords": [
- "MimeMailParser",
- "email",
- "mail",
- "mailparse",
- "mime",
- "mimeparse",
- "parser",
- "php-imap"
- ],
- "support": {
- "docs": "https://mail-mime-parser.org/#usage-guide",
- "issues": "https://github.com/zbateson/mail-mime-parser/issues",
- "source": "https://github.com/zbateson/mail-mime-parser"
- },
- "funding": [
- {
- "url": "https://github.com/zbateson",
- "type": "github"
- }
- ],
- "time": "2024-08-10T18:44:09+00:00"
- },
- {
- "name": "zbateson/mb-wrapper",
- "version": "2.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/zbateson/mb-wrapper.git",
- "reference": "9e4373a153585d12b6c621ac4a6bb143264d4619"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/zbateson/mb-wrapper/zipball/9e4373a153585d12b6c621ac4a6bb143264d4619",
- "reference": "9e4373a153585d12b6c621ac4a6bb143264d4619",
- "shasum": ""
- },
- "require": {
- "php": ">=8.0",
- "symfony/polyfill-iconv": "^1.9",
- "symfony/polyfill-mbstring": "^1.9"
- },
- "require-dev": {
- "friendsofphp/php-cs-fixer": "*",
- "phpstan/phpstan": "*",
- "phpunit/phpunit": "<10.0"
- },
- "suggest": {
- "ext-iconv": "For best support/performance",
- "ext-mbstring": "For best support/performance"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "ZBateson\\MbWrapper\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-2-Clause"
- ],
- "authors": [
- {
- "name": "Zaahid Bateson"
- }
- ],
- "description": "Wrapper for mbstring with fallback to iconv for encoding conversion and string manipulation",
- "keywords": [
- "charset",
- "encoding",
- "http",
- "iconv",
- "mail",
- "mb",
- "mb_convert_encoding",
- "mbstring",
- "mime",
- "multibyte",
- "string"
- ],
- "support": {
- "issues": "https://github.com/zbateson/mb-wrapper/issues",
- "source": "https://github.com/zbateson/mb-wrapper/tree/2.0.0"
- },
- "funding": [
- {
- "url": "https://github.com/zbateson",
- "type": "github"
- }
- ],
- "time": "2024-03-20T01:38:07+00:00"
- },
- {
- "name": "zbateson/stream-decorators",
- "version": "2.1.1",
- "source": {
- "type": "git",
- "url": "https://github.com/zbateson/stream-decorators.git",
- "reference": "32a2a62fb0f26313395c996ebd658d33c3f9c4e5"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/zbateson/stream-decorators/zipball/32a2a62fb0f26313395c996ebd658d33c3f9c4e5",
- "reference": "32a2a62fb0f26313395c996ebd658d33c3f9c4e5",
- "shasum": ""
- },
- "require": {
- "guzzlehttp/psr7": "^2.5",
- "php": ">=8.0",
- "zbateson/mb-wrapper": "^2.0"
- },
- "require-dev": {
- "friendsofphp/php-cs-fixer": "*",
- "phpstan/phpstan": "*",
- "phpunit/phpunit": "^9.6|^10.0"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "ZBateson\\StreamDecorators\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-2-Clause"
- ],
- "authors": [
- {
- "name": "Zaahid Bateson"
- }
- ],
- "description": "PHP psr7 stream decorators for mime message part streams",
- "keywords": [
- "base64",
- "charset",
- "decorators",
- "mail",
- "mime",
- "psr7",
- "quoted-printable",
- "stream",
- "uuencode"
- ],
- "support": {
- "issues": "https://github.com/zbateson/stream-decorators/issues",
- "source": "https://github.com/zbateson/stream-decorators/tree/2.1.1"
- },
- "funding": [
- {
- "url": "https://github.com/zbateson",
- "type": "github"
- }
- ],
- "time": "2024-04-29T21:42:39+00:00"
}
],
"aliases": [],
@@ -9172,5 +8292,5 @@
"php": ">=8.1"
},
"platform-dev": [],
- "plugin-api-version": "2.6.0"
+ "plugin-api-version": "2.3.0"
}
diff --git a/docs/bun.lockb b/docs/bun.lockb
index 6f5f167..9c0e88d 100755
Binary files a/docs/bun.lockb and b/docs/bun.lockb differ
diff --git a/docs/commands/preload.mdx b/docs/commands/preload.mdx
new file mode 100644
index 0000000..05c8bd4
--- /dev/null
+++ b/docs/commands/preload.mdx
@@ -0,0 +1,33 @@
+---
+title: 'Preload command'
+sidebarTitle: 'Preload '
+description: 'Preload all Unicon commands on deployment'
+icon: 'terminal'
+---
+
+Unicon provides the `icons:preload` to preload all icons on deployment.
+
+```bash
+php artisan icons:preload
+```
+
+While Unicon will hapilly fetch icons on-demand, this command will ensure that
+even the first render of an icon will be as fast as possible, because they will
+be pulled from the cache instead of the Iconify API.
+
+## Caveats
+
+This command performs a recursive regex search on all the Blade files in your
+application (excluding `node_modules` and `vendor`). This means that only icons
+that are statically defined will be detected.
+
+| Will be found ✅ | Will not be found ❌ |
+| ------------- | ----------------- |
+| `` | `` |
+| `` | `` |
+
+
+Icons whose name is dynamically defined will have to be fetched on-demand
+the very first time they are rendered, and subsequent renders will be cached
+all the same.
+
\ No newline at end of file
diff --git a/docs/mint.json b/docs/mint.json
index a3bbd4d..c19bd1a 100644
--- a/docs/mint.json
+++ b/docs/mint.json
@@ -56,6 +56,10 @@
"group": "Components",
"pages": ["components/blade-component", "components/helper-function"]
},
+ {
+ "group": "Commands",
+ "pages": ["commands/preload"]
+ },
{
"group": "Reference",
"pages": ["config-reference", "credits"]
diff --git a/src/Commands/IconsPreloadCommand.php b/src/Commands/IconsPreloadCommand.php
new file mode 100644
index 0000000..90c95c1
--- /dev/null
+++ b/src/Commands/IconsPreloadCommand.php
@@ -0,0 +1,115 @@
+info('Looking for icons to preload in your Blade files...');
+
+ $this->findAllBladeFiles()
+ ->flatMap(fn(string $file) => $this->findIconsInFile($file))
+ ->unique()
+ ->sort()
+ ->each(fn(string $icon) => $this->preloadIcon($icon));
+
+ return self::SUCCESS;
+ }
+
+ /**
+ * Find all Blade files in the application
+ *
+ * This method will look for all Blade files in the application and return
+ * them as an array of paths.
+ *
+ * @return Collection
+ */
+ protected function findAllBladeFiles(): Collection
+ {
+ return $this->glob('*.blade.php');
+ }
+
+ /**
+ * Recursive glob
+ *
+ * This method will recursively glob files using the given pattern.
+ */
+ protected function glob(string $pattern, ?string $root = null): Collection
+ {
+ $root ??= base_path();
+
+ $files = collect(glob($root . '/' . $pattern));
+
+ collect(glob($root . '/*', GLOB_ONLYDIR))->each(function ($dir) use (&$files, $pattern) {
+ if (!in_array(basename($dir), ['node_modules', 'vendor'])) {
+ $files = $files->merge($this->glob($pattern, $dir));
+ }
+ });
+
+ return $files;
+ }
+
+ /**
+ * Find all icons in a Blade file
+ *
+ * This method will attempt to find all Unicon icons in a Blade file
+ * by performing a regex search on the file contents. This implementation
+ * only works for icons that have been statitcally defined. Variables in
+ * the name attribute will not be evaluated.
+ */
+ protected function findIconsInFile(string $path): Collection
+ {
+ $contents = file_get_contents($path);
+
+ $componentName = Str::snake(config('unicon.name', 'icon'));
+
+ $hasMatches = preg_match_all(
+ pattern: '/[\s\S]*?)\1/m',
+ subject: $contents,
+ matches: $matches,
+ flags: PREG_SET_ORDER,
+ );
+
+ if (!$hasMatches) {
+ return [];
+ }
+
+ return collect($matches)->map(fn($match) => $match['name']);
+ }
+
+ /**
+ * Preloads an icon
+ */
+ protected function preloadIcon(string $icon): void
+ {
+ $this->info("Preloading {$icon}...");
+ $this->renderer->render($icon);
+ }
+}
diff --git a/src/IconServiceProvider.php b/src/IconServiceProvider.php
index e30f5ec..69e0f4c 100644
--- a/src/IconServiceProvider.php
+++ b/src/IconServiceProvider.php
@@ -13,7 +13,7 @@ class IconServiceProvider extends ServiceProvider
public function register(): void
{
// Merge the default configuration
- $this->mergeConfigFrom(__DIR__.'/../config/unicon.php', 'unicon');
+ $this->mergeConfigFrom(__DIR__ . '/../config/unicon.php', 'unicon');
// Bind the IconRenderer to the container
$this->app->bind(IconRenderer::class, function (Application $app) {
@@ -34,8 +34,12 @@ public function boot(): void
{
if ($this->app->runningInConsole()) {
$this->publishes([
- __DIR__.'/../config/unicon.php' => config_path('unicon.php'),
+ __DIR__ . '/../config/unicon.php' => config_path('unicon.php'),
], 'unicon-config');
+
+ $this->commands([
+ Commands\IconsPreloadCommand::class,
+ ]);
}
}
}