From bf40f792c2d6d149568fadc33ec5442429775c41 Mon Sep 17 00:00:00 2001 From: Tim van Osch Date: Sun, 4 May 2025 02:10:15 +0200 Subject: [PATCH] Feat(Gotenberg): Opt-in alternative pdf generation for modern CSS (#184) * WIP(gotenberg): add pdf generation abstraction and UI * feat(pdf): settings validate(clien+server) & save * fix(gotenberg): Use correct default papersize chore(gotengberg): Remove unused GOTENBERG_MARGINS env from .env * style(gotenberg): fix linter/styling issues * fix(pdf): use pdf config policy * fix: revert accidental capitalization in mail config vue * Update composer, remove whitespace typo * Fix small typos * fix cookie/env issue * Add gotenberg to .dev, move admin menu item up --- .dev/docker-compose.mysql.yml | 5 + .dev/docker-compose.pgsql.yml | 5 + .dev/docker-compose.sqlite.yml | 5 + .env.example | 4 + app/Facades/PDF.php | 16 + .../Settings/PDFConfigurationController.php | 54 + app/Http/Requests/PDFConfigurationRequest.php | 57 + app/Models/Estimate.php | 2 +- app/Models/Invoice.php | 2 +- app/Policies/SettingsPolicy.php | 9 + app/Providers/AppServiceProvider.php | 1 + app/Providers/PDFServiceProvider.php | 13 + .../PDFDrivers/GotenbergPDFDriver.php | 59 + app/Services/PDFService.php | 47 + app/Space/EnvironmentManager.php | 60 +- bootstrap/providers.php | 1 + composer.json | 4 +- composer.lock | 1323 +++++++++-------- config/invoiceshelf.php | 10 + config/pdf.php | 14 + lang/en.json | 13 +- resources/scripts/admin/admin-router.js | 8 + resources/scripts/admin/stores/pdf-driver.js | 70 + .../views/settings/PDFGenerationSetting.vue | 72 + .../settings/pdf-driver/DomPDFDriver.vue | 117 ++ .../settings/pdf-driver/GotenbergDriver.vue | 128 ++ routes/api.php | 10 + 27 files changed, 1512 insertions(+), 597 deletions(-) create mode 100644 app/Facades/PDF.php create mode 100644 app/Http/Controllers/V1/Admin/Settings/PDFConfigurationController.php create mode 100644 app/Http/Requests/PDFConfigurationRequest.php create mode 100644 app/Providers/PDFServiceProvider.php create mode 100644 app/Services/PDFDrivers/GotenbergPDFDriver.php create mode 100644 app/Services/PDFService.php create mode 100644 config/pdf.php create mode 100644 resources/scripts/admin/stores/pdf-driver.js create mode 100644 resources/scripts/admin/views/settings/PDFGenerationSetting.vue create mode 100644 resources/scripts/admin/views/settings/pdf-driver/DomPDFDriver.vue create mode 100644 resources/scripts/admin/views/settings/pdf-driver/GotenbergDriver.vue diff --git a/.dev/docker-compose.mysql.yml b/.dev/docker-compose.mysql.yml index c1d25570..53583ce0 100644 --- a/.dev/docker-compose.mysql.yml +++ b/.dev/docker-compose.mysql.yml @@ -63,6 +63,11 @@ services: networks: - invoiceshelf-dev + pdf: + image: gotenberg/gotenberg:8 + networks: + - invoiceshelf-dev + networks: invoiceshelf-dev: diff --git a/.dev/docker-compose.pgsql.yml b/.dev/docker-compose.pgsql.yml index 2746a726..b8e4439d 100644 --- a/.dev/docker-compose.pgsql.yml +++ b/.dev/docker-compose.pgsql.yml @@ -62,6 +62,11 @@ services: networks: - invoiceshelf-dev + pdf: + image: gotenberg/gotenberg:8 + networks: + - invoiceshelf-dev + networks: invoiceshelf-dev: diff --git a/.dev/docker-compose.sqlite.yml b/.dev/docker-compose.sqlite.yml index d130c80f..9b1bc5ba 100644 --- a/.dev/docker-compose.sqlite.yml +++ b/.dev/docker-compose.sqlite.yml @@ -50,5 +50,10 @@ services: networks: - invoiceshelf-dev + pdf: + image: gotenberg/gotenberg:8 + networks: + - invoiceshelf-dev + networks: invoiceshelf-dev: diff --git a/.env.example b/.env.example index 5e3dfa29..699b6495 100644 --- a/.env.example +++ b/.env.example @@ -54,3 +54,7 @@ TRUSTED_PROXIES="*" CRON_JOB_AUTH_TOKEN="" LOG_STACK=single + +PDF_DRIVER=dompdf +GOTENBERG_HOST= +GOTENBERG_PAPERSIZE= diff --git a/app/Facades/PDF.php b/app/Facades/PDF.php new file mode 100644 index 00000000..b0c769d3 --- /dev/null +++ b/app/Facades/PDF.php @@ -0,0 +1,16 @@ +environmentManager = $environmentManager; + } + + public function getDrivers() + { + $this->authorize('manage pdf config'); + + $drivers = [ + 'dompdf', + 'gotenberg', + ]; + + return response()->json($drivers); + } + + public function getEnvironment() + { + $this->authorize('manage pdf config'); + + $config = [ + 'pdf_driver' => config('pdf.driver'), + 'gotenberg_host' => config('pdf.gotenberg.host'), + 'gotenberg_margins' => config('pdf.gotenberg.margins'), + 'gotenberg_papersize' => config('pdf.gotenberg.papersize'), + ]; + + return response()->json($config); + } + + public function saveEnvironment(PDFConfigurationRequest $request) + { + $this->authorize('manage pdf config'); + $results = $this->environmentManager->savePDFVariables($request); + + return response()->json($results); + } +} diff --git a/app/Http/Requests/PDFConfigurationRequest.php b/app/Http/Requests/PDFConfigurationRequest.php new file mode 100644 index 00000000..19f4dd85 --- /dev/null +++ b/app/Http/Requests/PDFConfigurationRequest.php @@ -0,0 +1,57 @@ +get('pdf_driver')) { + case 'dompdf': + return [ + 'pdf_driver' => [ + 'required', + 'string', + ], + ]; + break; + + case 'gotenberg': + return [ + 'pdf_driver' => [ + 'required', + 'string', + ], + 'gotenberg_host' => [ + 'required', + 'url', + ], + 'gotenberg_papersize' => [ + function ($attribute, $value, $fail) { + ($attribute); // unused + $reg = "/^\d+(pt|px|pc|mm|cm|in) \d+(pt|px|pc|mm|cm|in)$/"; + if (! preg_match($reg, $value)) { + $fail('Invalid papersize, must be in format "210mm 297mm". Accepts: pt,px,pc,mm,cm,in'); + } + }, + ], + ]; + + break; + } + throw new \InvalidArgumentException('Invalid PDFDriver requested'); + } +} diff --git a/app/Models/Estimate.php b/app/Models/Estimate.php index ab2fd66a..53859fdf 100644 --- a/app/Models/Estimate.php +++ b/app/Models/Estimate.php @@ -6,9 +6,9 @@ use App; use App\Mail\SendEstimateMail; use App\Services\SerialNumberFormatter; use App\Space\PdfTemplateUtils; +use App\Facades\PDF; use App\Traits\GeneratesPdfTrait; use App\Traits\HasCustomFieldsTrait; -use Barryvdh\DomPDF\Facade\Pdf as PDF; use Carbon\Carbon; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; diff --git a/app/Models/Invoice.php b/app/Models/Invoice.php index 8f27c010..5f2956b7 100644 --- a/app/Models/Invoice.php +++ b/app/Models/Invoice.php @@ -3,12 +3,12 @@ namespace App\Models; use App; +use App\Facades\PDF; use App\Mail\SendInvoiceMail; use App\Services\SerialNumberFormatter; use App\Space\PdfTemplateUtils; use App\Traits\GeneratesPdfTrait; use App\Traits\HasCustomFieldsTrait; -use Barryvdh\DomPDF\Facade\Pdf as PDF; use Carbon\Carbon; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; diff --git a/app/Policies/SettingsPolicy.php b/app/Policies/SettingsPolicy.php index 6fd3d1a7..cf5fea3e 100644 --- a/app/Policies/SettingsPolicy.php +++ b/app/Policies/SettingsPolicy.php @@ -46,6 +46,15 @@ class SettingsPolicy return false; } + public function managePDFConfig(User $user) + { + if ($user->isOwner()) { + return true; + } + + return false; + } + public function manageSettings(User $user) { if ($user->isOwner()) { diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index a3e2174c..925ccd02 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -127,6 +127,7 @@ class AppServiceProvider extends ServiceProvider Gate::define('manage backups', [SettingsPolicy::class, 'manageBackups']); Gate::define('manage file disk', [SettingsPolicy::class, 'manageFileDisk']); Gate::define('manage email config', [SettingsPolicy::class, 'manageEmailConfig']); + Gate::define('manage pdf config', [SettingsPolicy::class, 'managePDFConfig']); Gate::define('manage notes', [NotePolicy::class, 'manageNotes']); Gate::define('view notes', [NotePolicy::class, 'viewNotes']); diff --git a/app/Providers/PDFServiceProvider.php b/app/Providers/PDFServiceProvider.php new file mode 100644 index 00000000..f9642c9a --- /dev/null +++ b/app/Providers/PDFServiceProvider.php @@ -0,0 +1,13 @@ + PDFService::class, + ]; +} diff --git a/app/Services/PDFDrivers/GotenbergPDFDriver.php b/app/Services/PDFDrivers/GotenbergPDFDriver.php new file mode 100644 index 00000000..bd2024e4 --- /dev/null +++ b/app/Services/PDFDrivers/GotenbergPDFDriver.php @@ -0,0 +1,59 @@ +response = $stream; + } + + public function stream(string $filename = 'document.pdf'): Response + { + $output = $this->response->getBody(); + + return new Response($output, 200, [ + 'Content-Type' => 'application/pdf', + 'Content-Disposition' => 'inline; filename="'.$filename.'"', + ]); + } + + public function output(): string + { + return $this->response->getBody()->getContents(); + } +} + +class GotenbergPDFDriver +{ + public function loadView(string $viewname): GotenbergPDFResponse + { + $papersize = explode(' ', config('pdf.gotenberg.papersize')); + if (count($papersize) != 2) { + throw new \InvalidArgumentException('Invalid Gotenberg Papersize specified'); + } + + $host = config('pdf.gotenberg.host'); + $request = Gotenberg::chromium($host) + ->pdf() + ->margins(0, 0, 0, 0) // Margins can be set using CSS + ->paperSize($papersize[0], $papersize[1]) + ->html( + Stream::string( + 'document.html', + view($viewname)->render(), + ) + ); + $result = Gotenberg::send($request); + + return new GotenbergPDFResponse($result); + } +} diff --git a/app/Services/PDFService.php b/app/Services/PDFService.php new file mode 100644 index 00000000..766f003c --- /dev/null +++ b/app/Services/PDFService.php @@ -0,0 +1,47 @@ + App::make('dompdf.wrapper'), + 'gotenberg' => new GotenbergPDFDriver, + default => throw new \InvalidArgumentException('Invalid PDFDriver requested') + }; + } +} + +class PDFService +{ + public static function loadView(string $template) + { + $driver = config('pdf.driver'); + + return PDFDriverFactory::create($driver)->loadView($template); + } +} diff --git a/app/Space/EnvironmentManager.php b/app/Space/EnvironmentManager.php index f0b3c3d0..05d2cbb5 100755 --- a/app/Space/EnvironmentManager.php +++ b/app/Space/EnvironmentManager.php @@ -6,6 +6,7 @@ use App\Http\Requests\DatabaseEnvironmentRequest; use App\Http\Requests\DiskEnvironmentRequest; use App\Http\Requests\DomainEnvironmentRequest; use App\Http\Requests\MailEnvironmentRequest; +use App\Http\Requests\PDFConfigurationRequest; use Exception; use Illuminate\Support\Facades\Artisan; use Illuminate\Support\Facades\DB; @@ -94,7 +95,6 @@ class EnvironmentManager } return $str; - } /** @@ -225,7 +225,6 @@ class EnvironmentManager try { $this->updateEnv($mailEnv); - } catch (Exception $e) { return [ 'error' => 'mail_variables_save_error', @@ -237,6 +236,60 @@ class EnvironmentManager ]; } + /** + * Save the pdf generation content to the .env file. + * + * @return array + */ + public function savePDFVariables(PDFConfigurationRequest $request) + { + $pdfEnv = $this->getPDFConfiguration($request); + + try { + + $this->updateEnv($pdfEnv); + } catch (Exception $e) { + return [ + 'error' => 'pdf_variables_save_error', + ]; + } + + return [ + 'success' => 'pdf_variables_save_successfully', + ]; + } + + /** + * Returns the pdf configuration + * + * @param PDFConfigurationRequest $request + * @return array + */ + private function getPDFConfiguration($request) + { + $pdfEnv = []; + + $driver = $request->get('pdf_driver'); + + switch ($driver) { + case 'dompdf': + $pdfEnv = [ + 'PDF_DRIVER' => $request->get('pdf_driver'), + ]; + break; + case 'gotenberg': + $pdfEnv = [ + 'PDF_DRIVER' => $request->get('pdf_driver'), + 'GOTENBERG_HOST' => $request->get('gotenberg_host'), + 'GOTENBERG_MARGINS' => $request->get('gotenberg_margins'), + 'GOTENBERG_PAPERSIZE' => $request->get('gotenberg_papersize'), + ]; + break; + } + + return $pdfEnv; + } + /** * Returns the mail configuration * @@ -316,7 +369,6 @@ class EnvironmentManager ]; break; - } return $mailEnv; @@ -334,7 +386,6 @@ class EnvironmentManager try { $this->updateEnv($diskEnv); - } catch (Exception $e) { return [ 'error' => 'disk_variables_save_error', @@ -450,7 +501,6 @@ class EnvironmentManager } $formatted .= $current.$this->delimiter; $previous = $current; - } file_put_contents($this->envPath, trim($formatted)); diff --git a/bootstrap/providers.php b/bootstrap/providers.php index d1d8afb7..f9551ff3 100644 --- a/bootstrap/providers.php +++ b/bootstrap/providers.php @@ -5,4 +5,5 @@ return [ App\Providers\RouteServiceProvider::class, App\Providers\DropboxServiceProvider::class, App\Providers\ViewServiceProvider::class, + App\Providers\PDFServiceProvider::class, ]; diff --git a/composer.json b/composer.json index 4f2d63ac..c383dc75 100644 --- a/composer.json +++ b/composer.json @@ -14,6 +14,7 @@ "doctrine/dbal": "^4.2", "dragonmantank/cron-expression": "^v3.4", "guzzlehttp/guzzle": "^7.9", + "gotenberg/gotenberg-php": "^2.8", "invoiceshelf/modules": "^1.0.0", "jasonmccreary/laravel-test-assertions": "^v2.4", "laravel/framework": "^11.31", @@ -79,7 +80,8 @@ "preferred-install": "dist", "sort-packages": true, "allow-plugins": { - "pestphp/pest-plugin": true + "pestphp/pest-plugin": true, + "php-http/discovery": true } }, "extra": { diff --git a/composer.lock b/composer.lock index 8a9fcd14..b8b6411f 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": "cb8d732cd9af97b716e0f583ef57df0b", + "content-hash": "967a42a1055d9269c15cee62c064bb27", "packages": [ { "name": "aws/aws-crt-php", @@ -62,16 +62,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.336.13", + "version": "3.342.21", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "dcb43c029ca74c52fa03a739341cc77086296a83" + "reference": "f4d501414c553ddeea2efc9c77f72e58bd899823" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/dcb43c029ca74c52fa03a739341cc77086296a83", - "reference": "dcb43c029ca74c52fa03a739341cc77086296a83", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/f4d501414c553ddeea2efc9c77f72e58bd899823", + "reference": "f4d501414c553ddeea2efc9c77f72e58bd899823", "shasum": "" }, "require": { @@ -79,31 +79,30 @@ "ext-json": "*", "ext-pcre": "*", "ext-simplexml": "*", - "guzzlehttp/guzzle": "^6.5.8 || ^7.4.5", - "guzzlehttp/promises": "^1.4.0 || ^2.0", - "guzzlehttp/psr7": "^1.9.1 || ^2.4.5", - "mtdowling/jmespath.php": "^2.6", - "php": ">=7.2.5", - "psr/http-message": "^1.0 || ^2.0" + "guzzlehttp/guzzle": "^7.4.5", + "guzzlehttp/promises": "^2.0", + "guzzlehttp/psr7": "^2.4.5", + "mtdowling/jmespath.php": "^2.8.0", + "php": ">=8.1", + "psr/http-message": "^2.0" }, "require-dev": { "andrewsville/php-token-reflection": "^1.4", "aws/aws-php-sns-message-validator": "~1.0", "behat/behat": "~3.0", - "composer/composer": "^1.10.22", + "composer/composer": "^2.7.8", "dms/phpunit-arraysubset-asserts": "^0.4.0", "doctrine/cache": "~1.4", "ext-dom": "*", "ext-openssl": "*", "ext-pcntl": "*", "ext-sockets": "*", - "nette/neon": "^2.3", - "paragonie/random_compat": ">= 2", "phpunit/phpunit": "^5.6.3 || ^8.5 || ^9.5", - "psr/cache": "^1.0 || ^2.0 || ^3.0", - "psr/simple-cache": "^1.0 || ^2.0 || ^3.0", - "sebastian/comparator": "^1.2.3 || ^4.0", - "yoast/phpunit-polyfills": "^1.0" + "psr/cache": "^2.0 || ^3.0", + "psr/simple-cache": "^2.0 || ^3.0", + "sebastian/comparator": "^1.2.3 || ^4.0 || ^5.0", + "symfony/filesystem": "^v6.4.0 || ^v7.1.0", + "yoast/phpunit-polyfills": "^2.0" }, "suggest": { "aws/aws-php-sns-message-validator": "To validate incoming SNS notifications", @@ -152,34 +151,34 @@ "sdk" ], "support": { - "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", + "forum": "https://github.com/aws/aws-sdk-php/discussions", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.336.13" + "source": "https://github.com/aws/aws-sdk-php/tree/3.342.21" }, - "time": "2025-01-10T19:04:25+00:00" + "time": "2025-04-04T18:20:53+00:00" }, { "name": "barryvdh/laravel-dompdf", - "version": "v3.0.1", + "version": "v3.1.1", "source": { "type": "git", "url": "https://github.com/barryvdh/laravel-dompdf.git", - "reference": "d2b3a158ba6e6c0fbb97208aa37dc764642ce5d5" + "reference": "8e71b99fc53bb8eb77f316c3c452dd74ab7cb25d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-dompdf/zipball/d2b3a158ba6e6c0fbb97208aa37dc764642ce5d5", - "reference": "d2b3a158ba6e6c0fbb97208aa37dc764642ce5d5", + "url": "https://api.github.com/repos/barryvdh/laravel-dompdf/zipball/8e71b99fc53bb8eb77f316c3c452dd74ab7cb25d", + "reference": "8e71b99fc53bb8eb77f316c3c452dd74ab7cb25d", "shasum": "" }, "require": { "dompdf/dompdf": "^3.0", - "illuminate/support": "^9|^10|^11", + "illuminate/support": "^9|^10|^11|^12", "php": "^8.1" }, "require-dev": { - "larastan/larastan": "^2.7.0", - "orchestra/testbench": "^7|^8|^9", + "larastan/larastan": "^2.7|^3.0", + "orchestra/testbench": "^7|^8|^9|^10", "phpro/grumphp": "^2.5", "squizlabs/php_codesniffer": "^3.5" }, @@ -221,7 +220,7 @@ ], "support": { "issues": "https://github.com/barryvdh/laravel-dompdf/issues", - "source": "https://github.com/barryvdh/laravel-dompdf/tree/v3.0.1" + "source": "https://github.com/barryvdh/laravel-dompdf/tree/v3.1.1" }, "funding": [ { @@ -233,20 +232,20 @@ "type": "github" } ], - "time": "2024-10-30T10:10:17+00:00" + "time": "2025-02-13T15:07:54+00:00" }, { "name": "brick/math", - "version": "0.12.1", + "version": "0.12.3", "source": { "type": "git", "url": "https://github.com/brick/math.git", - "reference": "f510c0a40911935b77b86859eb5223d58d660df1" + "reference": "866551da34e9a618e64a819ee1e01c20d8a588ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/f510c0a40911935b77b86859eb5223d58d660df1", - "reference": "f510c0a40911935b77b86859eb5223d58d660df1", + "url": "https://api.github.com/repos/brick/math/zipball/866551da34e9a618e64a819ee1e01c20d8a588ba", + "reference": "866551da34e9a618e64a819ee1e01c20d8a588ba", "shasum": "" }, "require": { @@ -255,7 +254,7 @@ "require-dev": { "php-coveralls/php-coveralls": "^2.2", "phpunit/phpunit": "^10.1", - "vimeo/psalm": "5.16.0" + "vimeo/psalm": "6.8.8" }, "type": "library", "autoload": { @@ -285,7 +284,7 @@ ], "support": { "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.12.1" + "source": "https://github.com/brick/math/tree/0.12.3" }, "funding": [ { @@ -293,7 +292,7 @@ "type": "github" } ], - "time": "2023-11-29T23:19:16+00:00" + "time": "2025-02-28T13:11:00+00:00" }, { "name": "carbonphp/carbon-doctrine-types", @@ -522,16 +521,16 @@ }, { "name": "doctrine/dbal", - "version": "4.2.1", + "version": "4.2.3", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "dadd35300837a3a2184bd47d403333b15d0a9bd0" + "reference": "33d2d7fe1269b2301640c44cf2896ea607b30e3e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/dadd35300837a3a2184bd47d403333b15d0a9bd0", - "reference": "dadd35300837a3a2184bd47d403333b15d0a9bd0", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/33d2d7fe1269b2301640c44cf2896ea607b30e3e", + "reference": "33d2d7fe1269b2301640c44cf2896ea607b30e3e", "shasum": "" }, "require": { @@ -544,16 +543,14 @@ "doctrine/coding-standard": "12.0.0", "fig/log-test": "^1", "jetbrains/phpstorm-stubs": "2023.2", - "phpstan/phpstan": "1.12.6", - "phpstan/phpstan-phpunit": "1.4.0", - "phpstan/phpstan-strict-rules": "^1.6", - "phpunit/phpunit": "10.5.30", - "psalm/plugin-phpunit": "0.19.0", + "phpstan/phpstan": "2.1.1", + "phpstan/phpstan-phpunit": "2.0.3", + "phpstan/phpstan-strict-rules": "^2", + "phpunit/phpunit": "10.5.39", "slevomat/coding-standard": "8.13.1", "squizlabs/php_codesniffer": "3.10.2", "symfony/cache": "^6.3.8|^7.0", - "symfony/console": "^5.4|^6.3|^7.0", - "vimeo/psalm": "5.25.0" + "symfony/console": "^5.4|^6.3|^7.0" }, "suggest": { "symfony/console": "For helpful console commands such as SQL execution and import of files." @@ -610,7 +607,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/4.2.1" + "source": "https://github.com/doctrine/dbal/tree/4.2.3" }, "funding": [ { @@ -626,7 +623,7 @@ "type": "tidelift" } ], - "time": "2024-10-10T18:01:27+00:00" + "time": "2025-03-07T18:29:05+00:00" }, { "name": "doctrine/deprecations", @@ -843,16 +840,16 @@ }, { "name": "dompdf/dompdf", - "version": "v3.0.2", + "version": "v3.1.0", "source": { "type": "git", "url": "https://github.com/dompdf/dompdf.git", - "reference": "baf4084b27c7f4b5b7a221b19a94d11327664eb8" + "reference": "a51bd7a063a65499446919286fb18b518177155a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dompdf/dompdf/zipball/baf4084b27c7f4b5b7a221b19a94d11327664eb8", - "reference": "baf4084b27c7f4b5b7a221b19a94d11327664eb8", + "url": "https://api.github.com/repos/dompdf/dompdf/zipball/a51bd7a063a65499446919286fb18b518177155a", + "reference": "a51bd7a063a65499446919286fb18b518177155a", "shasum": "" }, "require": { @@ -901,9 +898,9 @@ "homepage": "https://github.com/dompdf/dompdf", "support": { "issues": "https://github.com/dompdf/dompdf/issues", - "source": "https://github.com/dompdf/dompdf/tree/v3.0.2" + "source": "https://github.com/dompdf/dompdf/tree/v3.1.0" }, - "time": "2024-12-27T20:27:37+00:00" + "time": "2025-01-15T14:09:04+00:00" }, { "name": "dompdf/php-font-lib", @@ -1063,16 +1060,16 @@ }, { "name": "egulias/email-validator", - "version": "4.0.3", + "version": "4.0.4", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "b115554301161fa21467629f1e1391c1936de517" + "reference": "d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/b115554301161fa21467629f1e1391c1936de517", - "reference": "b115554301161fa21467629f1e1391c1936de517", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa", + "reference": "d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa", "shasum": "" }, "require": { @@ -1118,7 +1115,7 @@ ], "support": { "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/4.0.3" + "source": "https://github.com/egulias/EmailValidator/tree/4.0.4" }, "funding": [ { @@ -1126,7 +1123,7 @@ "type": "github" } ], - "time": "2024-12-27T00:36:43+00:00" + "time": "2025-03-06T22:45:56+00:00" }, { "name": "fruitcake/php-cors", @@ -1199,6 +1196,87 @@ ], "time": "2023-10-12T05:21:21+00:00" }, + { + "name": "gotenberg/gotenberg-php", + "version": "v2.13.0", + "source": { + "type": "git", + "url": "https://github.com/gotenberg/gotenberg-php.git", + "reference": "edb5b91321c60c3da8c87e1d821f844b7e5c0c2c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/gotenberg/gotenberg-php/zipball/edb5b91321c60c3da8c87e1d821f844b7e5c0c2c", + "reference": "edb5b91321c60c3da8c87e1d821f844b7e5c0c2c", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "guzzlehttp/psr7": "^1 || ^2.1", + "php": "^8.1|^8.2|^8.3|^8.4", + "php-http/discovery": "^1.14", + "psr/http-client": "^1.0", + "psr/http-message": "^1.0|^2.0" + }, + "require-dev": { + "doctrine/coding-standard": "^12.0", + "pestphp/pest": "^2.28", + "phpstan/phpstan": "^1.12", + "squizlabs/php_codesniffer": "^3.10" + }, + "type": "library", + "autoload": { + "psr-4": { + "Gotenberg\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Julien Neuhart", + "email": "neuhart.julien@gmail.com", + "homepage": "https://github.com/gulien", + "role": "Developer" + } + ], + "description": "A PHP client for interacting with Gotenberg, a developer-friendly API for converting numerous document formats into PDF files, and more!", + "homepage": "https://github.com/gotenberg/gotenberg-php", + "keywords": [ + "Gotenberg", + "LibreOffice", + "chrome", + "chromium", + "convert", + "csv", + "docx", + "excel", + "html", + "markdown", + "pdf", + "pdftk", + "pptx", + "puppeteer", + "unoconv", + "wkhtmltopdf", + "word", + "xlsx" + ], + "support": { + "issues": "https://github.com/gotenberg/gotenberg-php/issues", + "source": "https://github.com/gotenberg/gotenberg-php/tree/v2.13.0" + }, + "funding": [ + { + "url": "https://github.com/gulien", + "type": "github" + } + ], + "time": "2025-03-17T13:57:01+00:00" + }, { "name": "graham-campbell/guzzle-factory", "version": "v7.0.2", @@ -1266,28 +1344,28 @@ }, { "name": "graham-campbell/manager", - "version": "v5.1.0", + "version": "v5.2.0", "source": { "type": "git", "url": "https://github.com/GrahamCampbell/Laravel-Manager.git", - "reference": "5c9e1e4b8f9ef5fc904545c617b83efa46d1bd09" + "reference": "b6a4172a32b931fe20c5c242251c8c98b2c79e41" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Laravel-Manager/zipball/5c9e1e4b8f9ef5fc904545c617b83efa46d1bd09", - "reference": "5c9e1e4b8f9ef5fc904545c617b83efa46d1bd09", + "url": "https://api.github.com/repos/GrahamCampbell/Laravel-Manager/zipball/b6a4172a32b931fe20c5c242251c8c98b2c79e41", + "reference": "b6a4172a32b931fe20c5c242251c8c98b2c79e41", "shasum": "" }, "require": { - "illuminate/contracts": "^8.75 || ^9.0 || ^10.0 || ^11.0", - "illuminate/support": "^8.75 || ^9.0 || ^10.0 || ^11.0", + "illuminate/contracts": "^8.75 || ^9.0 || ^10.0 || ^11.0 || ^12.0", + "illuminate/support": "^8.75 || ^9.0 || ^10.0 || ^11.0 || ^12.0", "php": "^7.4.15 || ^8.0.2" }, "require-dev": { - "graham-campbell/analyzer": "^4.1", - "graham-campbell/testbench-core": "^4.1", - "mockery/mockery": "^1.6.6", - "phpunit/phpunit": "^9.6.15 || ^10.5.1" + "graham-campbell/analyzer": "^4.2.1 || ^5.0.0", + "graham-campbell/testbench-core": "^4.2.1", + "mockery/mockery": "^1.6.12", + "phpunit/phpunit": "^9.6.22 || ^10.5.45 || ^11.5.10" }, "type": "library", "autoload": { @@ -1320,7 +1398,7 @@ ], "support": { "issues": "https://github.com/GrahamCampbell/Laravel-Manager/issues", - "source": "https://github.com/GrahamCampbell/Laravel-Manager/tree/v5.1.0" + "source": "https://github.com/GrahamCampbell/Laravel-Manager/tree/v5.2.0" }, "funding": [ { @@ -1332,7 +1410,7 @@ "type": "tidelift" } ], - "time": "2023-12-03T23:16:15+00:00" + "time": "2025-03-02T20:18:37+00:00" }, { "name": "graham-campbell/result-type", @@ -1398,16 +1476,16 @@ }, { "name": "guzzlehttp/guzzle", - "version": "7.9.2", + "version": "7.9.3", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "d281ed313b989f213357e3be1a179f02196ac99b" + "reference": "7b2f29fe81dc4da0ca0ea7d42107a0845946ea77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/d281ed313b989f213357e3be1a179f02196ac99b", - "reference": "d281ed313b989f213357e3be1a179f02196ac99b", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/7b2f29fe81dc4da0ca0ea7d42107a0845946ea77", + "reference": "7b2f29fe81dc4da0ca0ea7d42107a0845946ea77", "shasum": "" }, "require": { @@ -1504,7 +1582,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.9.2" + "source": "https://github.com/guzzle/guzzle/tree/7.9.3" }, "funding": [ { @@ -1520,20 +1598,20 @@ "type": "tidelift" } ], - "time": "2024-07-24T11:22:20+00:00" + "time": "2025-03-27T13:37:11+00:00" }, { "name": "guzzlehttp/promises", - "version": "2.0.4", + "version": "2.2.0", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455" + "reference": "7c69f28996b0a6920945dd20b3857e499d9ca96c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/f9c436286ab2892c7db7be8c8da4ef61ccf7b455", - "reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455", + "url": "https://api.github.com/repos/guzzle/promises/zipball/7c69f28996b0a6920945dd20b3857e499d9ca96c", + "reference": "7c69f28996b0a6920945dd20b3857e499d9ca96c", "shasum": "" }, "require": { @@ -1587,7 +1665,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/2.0.4" + "source": "https://github.com/guzzle/promises/tree/2.2.0" }, "funding": [ { @@ -1603,20 +1681,20 @@ "type": "tidelift" } ], - "time": "2024-10-17T10:06:22+00:00" + "time": "2025-03-27T13:27:01+00:00" }, { "name": "guzzlehttp/psr7", - "version": "2.7.0", + "version": "2.7.1", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201" + "reference": "c2270caaabe631b3b44c85f99e5a04bbb8060d16" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/a70f5c95fb43bc83f07c9c948baa0dc1829bf201", - "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/c2270caaabe631b3b44c85f99e5a04bbb8060d16", + "reference": "c2270caaabe631b3b44c85f99e5a04bbb8060d16", "shasum": "" }, "require": { @@ -1703,7 +1781,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.7.0" + "source": "https://github.com/guzzle/psr7/tree/2.7.1" }, "funding": [ { @@ -1719,20 +1797,20 @@ "type": "tidelift" } ], - "time": "2024-07-18T11:15:46+00:00" + "time": "2025-03-27T12:30:47+00:00" }, { "name": "guzzlehttp/uri-template", - "version": "v1.0.3", + "version": "v1.0.4", "source": { "type": "git", "url": "https://github.com/guzzle/uri-template.git", - "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c" + "reference": "30e286560c137526eccd4ce21b2de477ab0676d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/uri-template/zipball/ecea8feef63bd4fef1f037ecb288386999ecc11c", - "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c", + "url": "https://api.github.com/repos/guzzle/uri-template/zipball/30e286560c137526eccd4ce21b2de477ab0676d2", + "reference": "30e286560c137526eccd4ce21b2de477ab0676d2", "shasum": "" }, "require": { @@ -1789,7 +1867,7 @@ ], "support": { "issues": "https://github.com/guzzle/uri-template/issues", - "source": "https://github.com/guzzle/uri-template/tree/v1.0.3" + "source": "https://github.com/guzzle/uri-template/tree/v1.0.4" }, "funding": [ { @@ -1805,7 +1883,7 @@ "type": "tidelift" } ], - "time": "2023-12-03T19:50:20+00:00" + "time": "2025-02-03T10:55:03+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -1995,23 +2073,23 @@ }, { "name": "jasonmccreary/laravel-test-assertions", - "version": "v2.4.1", + "version": "v2.7.2", "source": { "type": "git", "url": "https://github.com/jasonmccreary/laravel-test-assertions.git", - "reference": "e60bc8c737e535e55ac85eacf61718616bf0e2d6" + "reference": "41af87d86af6667f8a4f857f306598255f508d67" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jasonmccreary/laravel-test-assertions/zipball/e60bc8c737e535e55ac85eacf61718616bf0e2d6", - "reference": "e60bc8c737e535e55ac85eacf61718616bf0e2d6", + "url": "https://api.github.com/repos/jasonmccreary/laravel-test-assertions/zipball/41af87d86af6667f8a4f857f306598255f508d67", + "reference": "41af87d86af6667f8a4f857f306598255f508d67", "shasum": "" }, "require": { - "illuminate/testing": "^10.0|^11.0", + "illuminate/testing": "^11.0|^12.0", "mockery/mockery": "^1.4.4", "php": "^8.1", - "phpunit/phpunit": "^10.1|^11.0" + "phpunit/phpunit": "^10.1|^11.0|^12.0" }, "type": "library", "extra": { @@ -2039,22 +2117,22 @@ "description": "A set of helpful assertions when testing Laravel applications.", "support": { "issues": "https://github.com/jasonmccreary/laravel-test-assertions/issues", - "source": "https://github.com/jasonmccreary/laravel-test-assertions/tree/v2.4.1" + "source": "https://github.com/jasonmccreary/laravel-test-assertions/tree/v2.7.2" }, - "time": "2024-06-10T14:00:38+00:00" + "time": "2025-04-04T22:03:29+00:00" }, { "name": "laravel/framework", - "version": "v11.37.0", + "version": "v11.44.2", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "6cb103d2024b087eae207654b3f4b26646119ba5" + "reference": "f85216c82cbd38b66d67ebd20ea762cb3751a4b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/6cb103d2024b087eae207654b3f4b26646119ba5", - "reference": "6cb103d2024b087eae207654b3f4b26646119ba5", + "url": "https://api.github.com/repos/laravel/framework/zipball/f85216c82cbd38b66d67ebd20ea762cb3751a4b4", + "reference": "f85216c82cbd38b66d67ebd20ea762cb3751a4b4", "shasum": "" }, "require": { @@ -2080,7 +2158,7 @@ "league/flysystem-local": "^3.25.1", "league/uri": "^7.5.1", "monolog/monolog": "^3.0", - "nesbot/carbon": "^2.72.2|^3.4", + "nesbot/carbon": "^2.72.6|^3.8.4", "nunomaduro/termwind": "^2.0", "php": "^8.2", "psr/container": "^1.1.1|^2.0.1", @@ -2155,17 +2233,18 @@ "fakerphp/faker": "^1.24", "guzzlehttp/promises": "^2.0.3", "guzzlehttp/psr7": "^2.4", + "laravel/pint": "^1.18", "league/flysystem-aws-s3-v3": "^3.25.1", "league/flysystem-ftp": "^3.25.1", "league/flysystem-path-prefixing": "^3.25.1", "league/flysystem-read-only": "^3.25.1", "league/flysystem-sftp-v3": "^3.25.1", "mockery/mockery": "^1.6.10", - "orchestra/testbench-core": "^9.6", + "orchestra/testbench-core": "^9.11.2", "pda/pheanstalk": "^5.0.6", "php-http/discovery": "^1.15", - "phpstan/phpstan": "^1.11.5", - "phpunit/phpunit": "^10.5.35|^11.3.6", + "phpstan/phpstan": "^2.0", + "phpunit/phpunit": "^10.5.35|^11.3.6|^12.0.1", "predis/predis": "^2.3", "resend/resend-php": "^0.10.0", "symfony/cache": "^7.0.3", @@ -2197,7 +2276,7 @@ "mockery/mockery": "Required to use mocking (^1.6).", "pda/pheanstalk": "Required to use the beanstalk queue driver (^5.0).", "php-http/discovery": "Required to use PSR-7 bridging features (^1.15).", - "phpunit/phpunit": "Required to use assertions and run tests (^10.5|^11.0).", + "phpunit/phpunit": "Required to use assertions and run tests (^10.5.35|^11.3.6|^12.0.1).", "predis/predis": "Required to use the predis connector (^2.3).", "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).", @@ -2255,24 +2334,24 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2025-01-02T20:10:21+00:00" + "time": "2025-03-12T14:34:30+00:00" }, { "name": "laravel/helpers", - "version": "v1.7.1", + "version": "v1.7.2", "source": { "type": "git", "url": "https://github.com/laravel/helpers.git", - "reference": "f28907033d7edf8a0525cfb781ab30ce6d531c35" + "reference": "672d79d5b5f65dc821e57783fa11f22c4d762d70" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/helpers/zipball/f28907033d7edf8a0525cfb781ab30ce6d531c35", - "reference": "f28907033d7edf8a0525cfb781ab30ce6d531c35", + "url": "https://api.github.com/repos/laravel/helpers/zipball/672d79d5b5f65dc821e57783fa11f22c4d762d70", + "reference": "672d79d5b5f65dc821e57783fa11f22c4d762d70", "shasum": "" }, "require": { - "illuminate/support": "~5.8.0|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", + "illuminate/support": "~5.8.0|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", "php": "^7.2.0|^8.0" }, "require-dev": { @@ -2310,22 +2389,22 @@ "laravel" ], "support": { - "source": "https://github.com/laravel/helpers/tree/v1.7.1" + "source": "https://github.com/laravel/helpers/tree/v1.7.2" }, - "time": "2024-11-26T14:56:25+00:00" + "time": "2025-01-24T15:41:25+00:00" }, { "name": "laravel/prompts", - "version": "v0.3.2", + "version": "v0.3.5", "source": { "type": "git", "url": "https://github.com/laravel/prompts.git", - "reference": "0e0535747c6b8d6d10adca8b68293cf4517abb0f" + "reference": "57b8f7efe40333cdb925700891c7d7465325d3b1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/prompts/zipball/0e0535747c6b8d6d10adca8b68293cf4517abb0f", - "reference": "0e0535747c6b8d6d10adca8b68293cf4517abb0f", + "url": "https://api.github.com/repos/laravel/prompts/zipball/57b8f7efe40333cdb925700891c7d7465325d3b1", + "reference": "57b8f7efe40333cdb925700891c7d7465325d3b1", "shasum": "" }, "require": { @@ -2339,7 +2418,7 @@ "laravel/framework": ">=10.17.0 <10.25.0" }, "require-dev": { - "illuminate/collections": "^10.0|^11.0", + "illuminate/collections": "^10.0|^11.0|^12.0", "mockery/mockery": "^1.5", "pestphp/pest": "^2.3|^3.4", "phpstan/phpstan": "^1.11", @@ -2369,38 +2448,38 @@ "description": "Add beautiful and user-friendly forms to your command-line applications.", "support": { "issues": "https://github.com/laravel/prompts/issues", - "source": "https://github.com/laravel/prompts/tree/v0.3.2" + "source": "https://github.com/laravel/prompts/tree/v0.3.5" }, - "time": "2024-11-12T14:59:47+00:00" + "time": "2025-02-11T13:34:40+00:00" }, { "name": "laravel/sanctum", - "version": "v4.0.7", + "version": "v4.0.8", "source": { "type": "git", "url": "https://github.com/laravel/sanctum.git", - "reference": "698064236a46df016e64a7eb059b1414e0b281df" + "reference": "ec1dd9ddb2ab370f79dfe724a101856e0963f43c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/698064236a46df016e64a7eb059b1414e0b281df", - "reference": "698064236a46df016e64a7eb059b1414e0b281df", + "url": "https://api.github.com/repos/laravel/sanctum/zipball/ec1dd9ddb2ab370f79dfe724a101856e0963f43c", + "reference": "ec1dd9ddb2ab370f79dfe724a101856e0963f43c", "shasum": "" }, "require": { "ext-json": "*", - "illuminate/console": "^11.0", - "illuminate/contracts": "^11.0", - "illuminate/database": "^11.0", - "illuminate/support": "^11.0", + "illuminate/console": "^11.0|^12.0", + "illuminate/contracts": "^11.0|^12.0", + "illuminate/database": "^11.0|^12.0", + "illuminate/support": "^11.0|^12.0", "php": "^8.2", "symfony/console": "^7.0" }, "require-dev": { "mockery/mockery": "^1.6", - "orchestra/testbench": "^9.0", + "orchestra/testbench": "^9.0|^10.0", "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^10.5" + "phpunit/phpunit": "^11.3" }, "type": "library", "extra": { @@ -2435,29 +2514,29 @@ "issues": "https://github.com/laravel/sanctum/issues", "source": "https://github.com/laravel/sanctum" }, - "time": "2024-12-11T16:40:21+00:00" + "time": "2025-01-26T19:34:36+00:00" }, { "name": "laravel/serializable-closure", - "version": "v2.0.1", + "version": "v2.0.4", "source": { "type": "git", "url": "https://github.com/laravel/serializable-closure.git", - "reference": "613b2d4998f85564d40497e05e89cb6d9bd1cbe8" + "reference": "b352cf0534aa1ae6b4d825d1e762e35d43f8a841" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/613b2d4998f85564d40497e05e89cb6d9bd1cbe8", - "reference": "613b2d4998f85564d40497e05e89cb6d9bd1cbe8", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/b352cf0534aa1ae6b4d825d1e762e35d43f8a841", + "reference": "b352cf0534aa1ae6b4d825d1e762e35d43f8a841", "shasum": "" }, "require": { "php": "^8.1" }, "require-dev": { - "illuminate/support": "^10.0|^11.0", + "illuminate/support": "^10.0|^11.0|^12.0", "nesbot/carbon": "^2.67|^3.0", - "pestphp/pest": "^2.36", + "pestphp/pest": "^2.36|^3.0", "phpstan/phpstan": "^2.0", "symfony/var-dumper": "^6.2.0|^7.0.0" }, @@ -2496,26 +2575,26 @@ "issues": "https://github.com/laravel/serializable-closure/issues", "source": "https://github.com/laravel/serializable-closure" }, - "time": "2024-12-16T15:26:28+00:00" + "time": "2025-03-19T13:51:03+00:00" }, { "name": "laravel/tinker", - "version": "v2.10.0", + "version": "v2.10.1", "source": { "type": "git", "url": "https://github.com/laravel/tinker.git", - "reference": "ba4d51eb56de7711b3a37d63aa0643e99a339ae5" + "reference": "22177cc71807d38f2810c6204d8f7183d88a57d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/ba4d51eb56de7711b3a37d63aa0643e99a339ae5", - "reference": "ba4d51eb56de7711b3a37d63aa0643e99a339ae5", + "url": "https://api.github.com/repos/laravel/tinker/zipball/22177cc71807d38f2810c6204d8f7183d88a57d3", + "reference": "22177cc71807d38f2810c6204d8f7183d88a57d3", "shasum": "" }, "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", + "illuminate/console": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", "php": "^7.2.5|^8.0", "psy/psysh": "^0.11.1|^0.12.0", "symfony/var-dumper": "^4.3.4|^5.0|^6.0|^7.0" @@ -2523,10 +2602,10 @@ "require-dev": { "mockery/mockery": "~1.3.3|^1.4.2", "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^8.5.8|^9.3.3" + "phpunit/phpunit": "^8.5.8|^9.3.3|^10.0" }, "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0|^10.0|^11.0)." + "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0)." }, "type": "library", "extra": { @@ -2560,35 +2639,35 @@ ], "support": { "issues": "https://github.com/laravel/tinker/issues", - "source": "https://github.com/laravel/tinker/tree/v2.10.0" + "source": "https://github.com/laravel/tinker/tree/v2.10.1" }, - "time": "2024-09-23T13:32:56+00:00" + "time": "2025-01-27T14:24:01+00:00" }, { "name": "laravel/ui", - "version": "v4.6.0", + "version": "v4.6.1", "source": { "type": "git", "url": "https://github.com/laravel/ui.git", - "reference": "a34609b15ae0c0512a0cf47a21695a2729cb7f93" + "reference": "7d6ffa38d79f19c9b3e70a751a9af845e8f41d88" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/ui/zipball/a34609b15ae0c0512a0cf47a21695a2729cb7f93", - "reference": "a34609b15ae0c0512a0cf47a21695a2729cb7f93", + "url": "https://api.github.com/repos/laravel/ui/zipball/7d6ffa38d79f19c9b3e70a751a9af845e8f41d88", + "reference": "7d6ffa38d79f19c9b3e70a751a9af845e8f41d88", "shasum": "" }, "require": { - "illuminate/console": "^9.21|^10.0|^11.0", - "illuminate/filesystem": "^9.21|^10.0|^11.0", - "illuminate/support": "^9.21|^10.0|^11.0", - "illuminate/validation": "^9.21|^10.0|^11.0", + "illuminate/console": "^9.21|^10.0|^11.0|^12.0", + "illuminate/filesystem": "^9.21|^10.0|^11.0|^12.0", + "illuminate/support": "^9.21|^10.0|^11.0|^12.0", + "illuminate/validation": "^9.21|^10.0|^11.0|^12.0", "php": "^8.0", "symfony/console": "^6.0|^7.0" }, "require-dev": { - "orchestra/testbench": "^7.35|^8.15|^9.0", - "phpunit/phpunit": "^9.3|^10.4|^11.0" + "orchestra/testbench": "^7.35|^8.15|^9.0|^10.0", + "phpunit/phpunit": "^9.3|^10.4|^11.5" }, "type": "library", "extra": { @@ -2623,9 +2702,9 @@ "ui" ], "support": { - "source": "https://github.com/laravel/ui/tree/v4.6.0" + "source": "https://github.com/laravel/ui/tree/v4.6.1" }, - "time": "2024-11-21T15:06:41+00:00" + "time": "2025-01-28T15:15:29+00:00" }, { "name": "lavary/laravel-menu", @@ -3291,31 +3370,32 @@ }, { "name": "maennchen/zipstream-php", - "version": "3.1.1", + "version": "3.1.2", "source": { "type": "git", "url": "https://github.com/maennchen/ZipStream-PHP.git", - "reference": "6187e9cc4493da94b9b63eb2315821552015fca9" + "reference": "aeadcf5c412332eb426c0f9b4485f6accba2a99f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/6187e9cc4493da94b9b63eb2315821552015fca9", - "reference": "6187e9cc4493da94b9b63eb2315821552015fca9", + "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/aeadcf5c412332eb426c0f9b4485f6accba2a99f", + "reference": "aeadcf5c412332eb426c0f9b4485f6accba2a99f", "shasum": "" }, "require": { "ext-mbstring": "*", "ext-zlib": "*", - "php-64bit": "^8.1" + "php-64bit": "^8.2" }, "require-dev": { + "brianium/paratest": "^7.7", "ext-zip": "*", "friendsofphp/php-cs-fixer": "^3.16", "guzzlehttp/guzzle": "^7.5", "mikey179/vfsstream": "^1.6", "php-coveralls/php-coveralls": "^2.5", - "phpunit/phpunit": "^10.0", - "vimeo/psalm": "^5.0" + "phpunit/phpunit": "^11.0", + "vimeo/psalm": "^6.0" }, "suggest": { "guzzlehttp/psr7": "^2.4", @@ -3356,7 +3436,7 @@ ], "support": { "issues": "https://github.com/maennchen/ZipStream-PHP/issues", - "source": "https://github.com/maennchen/ZipStream-PHP/tree/3.1.1" + "source": "https://github.com/maennchen/ZipStream-PHP/tree/3.1.2" }, "funding": [ { @@ -3364,7 +3444,7 @@ "type": "github" } ], - "time": "2024-10-10T12:33:01+00:00" + "time": "2025-01-27T12:07:53+00:00" }, { "name": "masterminds/html5", @@ -3518,16 +3598,16 @@ }, { "name": "monolog/monolog", - "version": "3.8.1", + "version": "3.9.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "aef6ee73a77a66e404dd6540934a9ef1b3c855b4" + "reference": "10d85740180ecba7896c87e06a166e0c95a0e3b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/aef6ee73a77a66e404dd6540934a9ef1b3c855b4", - "reference": "aef6ee73a77a66e404dd6540934a9ef1b3c855b4", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/10d85740180ecba7896c87e06a166e0c95a0e3b6", + "reference": "10d85740180ecba7896c87e06a166e0c95a0e3b6", "shasum": "" }, "require": { @@ -3605,7 +3685,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/3.8.1" + "source": "https://github.com/Seldaek/monolog/tree/3.9.0" }, "funding": [ { @@ -3617,7 +3697,7 @@ "type": "tidelift" } ], - "time": "2024-12-05T17:15:07+00:00" + "time": "2025-03-24T10:02:05+00:00" }, { "name": "mtdowling/jmespath.php", @@ -3687,16 +3767,16 @@ }, { "name": "myclabs/deep-copy", - "version": "1.12.1", + "version": "1.13.0", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "123267b2c49fbf30d78a7b2d333f6be754b94845" + "reference": "024473a478be9df5fdaca2c793f2232fe788e414" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/123267b2c49fbf30d78a7b2d333f6be754b94845", - "reference": "123267b2c49fbf30d78a7b2d333f6be754b94845", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/024473a478be9df5fdaca2c793f2232fe788e414", + "reference": "024473a478be9df5fdaca2c793f2232fe788e414", "shasum": "" }, "require": { @@ -3735,7 +3815,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.12.1" + "source": "https://github.com/myclabs/DeepCopy/tree/1.13.0" }, "funding": [ { @@ -3743,20 +3823,20 @@ "type": "tidelift" } ], - "time": "2024-11-08T17:47:46+00:00" + "time": "2025-02-12T12:17:51+00:00" }, { "name": "nesbot/carbon", - "version": "3.8.4", + "version": "3.9.0", "source": { "type": "git", "url": "https://github.com/CarbonPHP/carbon.git", - "reference": "129700ed449b1f02d70272d2ac802357c8c30c58" + "reference": "6d16a8a015166fe54e22c042e0805c5363aef50d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/129700ed449b1f02d70272d2ac802357c8c30c58", - "reference": "129700ed449b1f02d70272d2ac802357c8c30c58", + "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/6d16a8a015166fe54e22c042e0805c5363aef50d", + "reference": "6d16a8a015166fe54e22c042e0805c5363aef50d", "shasum": "" }, "require": { @@ -3832,8 +3912,8 @@ ], "support": { "docs": "https://carbon.nesbot.com/docs", - "issues": "https://github.com/briannesbitt/Carbon/issues", - "source": "https://github.com/briannesbitt/Carbon" + "issues": "https://github.com/CarbonPHP/carbon/issues", + "source": "https://github.com/CarbonPHP/carbon" }, "funding": [ { @@ -3849,7 +3929,7 @@ "type": "tidelift" } ], - "time": "2024-12-27T09:25:35+00:00" + "time": "2025-03-27T12:57:33+00:00" }, { "name": "nette/schema", @@ -3915,16 +3995,16 @@ }, { "name": "nette/utils", - "version": "v4.0.5", + "version": "v4.0.6", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "736c567e257dbe0fcf6ce81b4d6dbe05c6899f96" + "reference": "ce708655043c7050eb050df361c5e313cf708309" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/736c567e257dbe0fcf6ce81b4d6dbe05c6899f96", - "reference": "736c567e257dbe0fcf6ce81b4d6dbe05c6899f96", + "url": "https://api.github.com/repos/nette/utils/zipball/ce708655043c7050eb050df361c5e313cf708309", + "reference": "ce708655043c7050eb050df361c5e313cf708309", "shasum": "" }, "require": { @@ -3995,9 +4075,9 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.0.5" + "source": "https://github.com/nette/utils/tree/v4.0.6" }, - "time": "2024-08-07T15:39:19+00:00" + "time": "2025-03-30T21:06:30+00:00" }, { "name": "nikic/php-parser", @@ -4262,6 +4342,85 @@ }, "time": "2022-02-21T01:04:05+00:00" }, + { + "name": "php-http/discovery", + "version": "1.20.0", + "source": { + "type": "git", + "url": "https://github.com/php-http/discovery.git", + "reference": "82fe4c73ef3363caed49ff8dd1539ba06044910d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/discovery/zipball/82fe4c73ef3363caed49ff8dd1539ba06044910d", + "reference": "82fe4c73ef3363caed49ff8dd1539ba06044910d", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0|^2.0", + "php": "^7.1 || ^8.0" + }, + "conflict": { + "nyholm/psr7": "<1.0", + "zendframework/zend-diactoros": "*" + }, + "provide": { + "php-http/async-client-implementation": "*", + "php-http/client-implementation": "*", + "psr/http-client-implementation": "*", + "psr/http-factory-implementation": "*", + "psr/http-message-implementation": "*" + }, + "require-dev": { + "composer/composer": "^1.0.2|^2.0", + "graham-campbell/phpspec-skip-example-extension": "^5.0", + "php-http/httplug": "^1.0 || ^2.0", + "php-http/message-factory": "^1.0", + "phpspec/phpspec": "^5.1 || ^6.1 || ^7.3", + "sebastian/comparator": "^3.0.5 || ^4.0.8", + "symfony/phpunit-bridge": "^6.4.4 || ^7.0.1" + }, + "type": "composer-plugin", + "extra": { + "class": "Http\\Discovery\\Composer\\Plugin", + "plugin-optional": true + }, + "autoload": { + "psr-4": { + "Http\\Discovery\\": "src/" + }, + "exclude-from-classmap": [ + "src/Composer/Plugin.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + } + ], + "description": "Finds and installs PSR-7, PSR-17, PSR-18 and HTTPlug implementations", + "homepage": "http://php-http.org", + "keywords": [ + "adapter", + "client", + "discovery", + "factory", + "http", + "message", + "psr17", + "psr7" + ], + "support": { + "issues": "https://github.com/php-http/discovery/issues", + "source": "https://github.com/php-http/discovery/tree/1.20.0" + }, + "time": "2024-10-02T11:20:13+00:00" + }, { "name": "phpoption/phpoption", "version": "1.9.3", @@ -4339,23 +4498,23 @@ }, { "name": "phpunit/php-code-coverage", - "version": "11.0.8", + "version": "11.0.9", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "418c59fd080954f8c4aa5631d9502ecda2387118" + "reference": "14d63fbcca18457e49c6f8bebaa91a87e8e188d7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/418c59fd080954f8c4aa5631d9502ecda2387118", - "reference": "418c59fd080954f8c4aa5631d9502ecda2387118", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/14d63fbcca18457e49c6f8bebaa91a87e8e188d7", + "reference": "14d63fbcca18457e49c6f8bebaa91a87e8e188d7", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^5.3.1", + "nikic/php-parser": "^5.4.0", "php": ">=8.2", "phpunit/php-file-iterator": "^5.1.0", "phpunit/php-text-template": "^4.0.1", @@ -4367,7 +4526,7 @@ "theseer/tokenizer": "^1.2.3" }, "require-dev": { - "phpunit/phpunit": "^11.5.0" + "phpunit/phpunit": "^11.5.2" }, "suggest": { "ext-pcov": "PHP extension that provides line coverage", @@ -4405,7 +4564,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/11.0.8" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/11.0.9" }, "funding": [ { @@ -4413,7 +4572,7 @@ "type": "github" } ], - "time": "2024-12-11T12:34:27+00:00" + "time": "2025-02-25T13:26:39+00:00" }, { "name": "phpunit/php-file-iterator", @@ -4662,16 +4821,16 @@ }, { "name": "phpunit/phpunit", - "version": "11.5.1", + "version": "11.5.15", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "2b94d4f2450b9869fa64a46fd8a6a41997aef56a" + "reference": "4b6a4ee654e5e0c5e1f17e2f83c0f4c91dee1f9c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/2b94d4f2450b9869fa64a46fd8a6a41997aef56a", - "reference": "2b94d4f2450b9869fa64a46fd8a6a41997aef56a", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/4b6a4ee654e5e0c5e1f17e2f83c0f4c91dee1f9c", + "reference": "4b6a4ee654e5e0c5e1f17e2f83c0f4c91dee1f9c", "shasum": "" }, "require": { @@ -4681,24 +4840,24 @@ "ext-mbstring": "*", "ext-xml": "*", "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.12.1", + "myclabs/deep-copy": "^1.13.0", "phar-io/manifest": "^2.0.4", "phar-io/version": "^3.2.1", "php": ">=8.2", - "phpunit/php-code-coverage": "^11.0.7", + "phpunit/php-code-coverage": "^11.0.9", "phpunit/php-file-iterator": "^5.1.0", "phpunit/php-invoker": "^5.0.1", "phpunit/php-text-template": "^4.0.1", "phpunit/php-timer": "^7.0.1", "sebastian/cli-parser": "^3.0.2", - "sebastian/code-unit": "^3.0.1", - "sebastian/comparator": "^6.2.1", + "sebastian/code-unit": "^3.0.3", + "sebastian/comparator": "^6.3.1", "sebastian/diff": "^6.0.2", "sebastian/environment": "^7.2.0", "sebastian/exporter": "^6.3.0", "sebastian/global-state": "^7.0.2", "sebastian/object-enumerator": "^6.0.1", - "sebastian/type": "^5.1.0", + "sebastian/type": "^5.1.2", "sebastian/version": "^5.0.2", "staabm/side-effects-detector": "^1.0.5" }, @@ -4743,7 +4902,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.1" + "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.15" }, "funding": [ { @@ -4759,7 +4918,7 @@ "type": "tidelift" } ], - "time": "2024-12-11T10:52:48+00:00" + "time": "2025-03-23T16:02:11+00:00" }, { "name": "predis/predis", @@ -5285,16 +5444,16 @@ }, { "name": "psy/psysh", - "version": "v0.12.7", + "version": "v0.12.8", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "d73fa3c74918ef4522bb8a3bf9cab39161c4b57c" + "reference": "85057ceedee50c49d4f6ecaff73ee96adb3b3625" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/d73fa3c74918ef4522bb8a3bf9cab39161c4b57c", - "reference": "d73fa3c74918ef4522bb8a3bf9cab39161c4b57c", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/85057ceedee50c49d4f6ecaff73ee96adb3b3625", + "reference": "85057ceedee50c49d4f6ecaff73ee96adb3b3625", "shasum": "" }, "require": { @@ -5358,9 +5517,9 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.12.7" + "source": "https://github.com/bobthecow/psysh/tree/v0.12.8" }, - "time": "2024-12-10T01:58:33+00:00" + "time": "2025-03-16T03:05:19+00:00" }, { "name": "ralouphie/getallheaders", @@ -5408,16 +5567,16 @@ }, { "name": "ramsey/collection", - "version": "2.0.0", + "version": "2.1.1", "source": { "type": "git", "url": "https://github.com/ramsey/collection.git", - "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5" + "reference": "344572933ad0181accbf4ba763e85a0306a8c5e2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", - "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", + "url": "https://api.github.com/repos/ramsey/collection/zipball/344572933ad0181accbf4ba763e85a0306a8c5e2", + "reference": "344572933ad0181accbf4ba763e85a0306a8c5e2", "shasum": "" }, "require": { @@ -5425,25 +5584,22 @@ }, "require-dev": { "captainhook/plugin-composer": "^5.3", - "ergebnis/composer-normalize": "^2.28.3", - "fakerphp/faker": "^1.21", + "ergebnis/composer-normalize": "^2.45", + "fakerphp/faker": "^1.24", "hamcrest/hamcrest-php": "^2.0", - "jangregor/phpstan-prophecy": "^1.0", - "mockery/mockery": "^1.5", + "jangregor/phpstan-prophecy": "^2.1", + "mockery/mockery": "^1.6", "php-parallel-lint/php-console-highlighter": "^1.0", - "php-parallel-lint/php-parallel-lint": "^1.3", - "phpcsstandards/phpcsutils": "^1.0.0-rc1", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1.2", - "phpstan/phpstan": "^1.9", - "phpstan/phpstan-mockery": "^1.1", - "phpstan/phpstan-phpunit": "^1.3", - "phpunit/phpunit": "^9.5", - "psalm/plugin-mockery": "^1.1", - "psalm/plugin-phpunit": "^0.18.4", - "ramsey/coding-standard": "^2.0.3", - "ramsey/conventional-commits": "^1.3", - "vimeo/psalm": "^5.4" + "php-parallel-lint/php-parallel-lint": "^1.4", + "phpspec/prophecy-phpunit": "^2.3", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-mockery": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^10.5", + "ramsey/coding-standard": "^2.3", + "ramsey/conventional-commits": "^1.6", + "roave/security-advisories": "dev-latest" }, "type": "library", "extra": { @@ -5481,19 +5637,9 @@ ], "support": { "issues": "https://github.com/ramsey/collection/issues", - "source": "https://github.com/ramsey/collection/tree/2.0.0" + "source": "https://github.com/ramsey/collection/tree/2.1.1" }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2022-12-31T21:50:55+00:00" + "time": "2025-03-22T05:38:12+00:00" }, { "name": "ramsey/uuid", @@ -5589,16 +5735,16 @@ }, { "name": "sabberworm/php-css-parser", - "version": "v8.7.0", + "version": "v8.8.0", "source": { "type": "git", "url": "https://github.com/MyIntervals/PHP-CSS-Parser.git", - "reference": "f414ff953002a9b18e3a116f5e462c56f21237cf" + "reference": "3de493bdddfd1f051249af725c7e0d2c38fed740" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/MyIntervals/PHP-CSS-Parser/zipball/f414ff953002a9b18e3a116f5e462c56f21237cf", - "reference": "f414ff953002a9b18e3a116f5e462c56f21237cf", + "url": "https://api.github.com/repos/MyIntervals/PHP-CSS-Parser/zipball/3de493bdddfd1f051249af725c7e0d2c38fed740", + "reference": "3de493bdddfd1f051249af725c7e0d2c38fed740", "shasum": "" }, "require": { @@ -5606,7 +5752,7 @@ "php": "^5.6.20 || ^7.0.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" }, "require-dev": { - "phpunit/phpunit": "5.7.27 || 6.5.14 || 7.5.20 || 8.5.40" + "phpunit/phpunit": "5.7.27 || 6.5.14 || 7.5.20 || 8.5.41" }, "suggest": { "ext-mbstring": "for parsing UTF-8 CSS" @@ -5648,9 +5794,9 @@ ], "support": { "issues": "https://github.com/MyIntervals/PHP-CSS-Parser/issues", - "source": "https://github.com/MyIntervals/PHP-CSS-Parser/tree/v8.7.0" + "source": "https://github.com/MyIntervals/PHP-CSS-Parser/tree/v8.8.0" }, - "time": "2024-10-27T17:38:32+00:00" + "time": "2025-03-23T17:59:05+00:00" }, { "name": "sebastian/cli-parser", @@ -5711,16 +5857,16 @@ }, { "name": "sebastian/code-unit", - "version": "3.0.2", + "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "ee88b0cdbe74cf8dd3b54940ff17643c0d6543ca" + "reference": "54391c61e4af8078e5b276ab082b6d3c54c9ad64" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/ee88b0cdbe74cf8dd3b54940ff17643c0d6543ca", - "reference": "ee88b0cdbe74cf8dd3b54940ff17643c0d6543ca", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/54391c61e4af8078e5b276ab082b6d3c54c9ad64", + "reference": "54391c61e4af8078e5b276ab082b6d3c54c9ad64", "shasum": "" }, "require": { @@ -5756,7 +5902,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/code-unit/issues", "security": "https://github.com/sebastianbergmann/code-unit/security/policy", - "source": "https://github.com/sebastianbergmann/code-unit/tree/3.0.2" + "source": "https://github.com/sebastianbergmann/code-unit/tree/3.0.3" }, "funding": [ { @@ -5764,7 +5910,7 @@ "type": "github" } ], - "time": "2024-12-12T09:59:06+00:00" + "time": "2025-03-19T07:56:08+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", @@ -5824,16 +5970,16 @@ }, { "name": "sebastian/comparator", - "version": "6.3.0", + "version": "6.3.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "d4e47a769525c4dd38cea90e5dcd435ddbbc7115" + "reference": "24b8fbc2c8e201bb1308e7b05148d6ab393b6959" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/d4e47a769525c4dd38cea90e5dcd435ddbbc7115", - "reference": "d4e47a769525c4dd38cea90e5dcd435ddbbc7115", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/24b8fbc2c8e201bb1308e7b05148d6ab393b6959", + "reference": "24b8fbc2c8e201bb1308e7b05148d6ab393b6959", "shasum": "" }, "require": { @@ -5852,7 +5998,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "6.2-dev" + "dev-main": "6.3-dev" } }, "autoload": { @@ -5892,7 +6038,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", "security": "https://github.com/sebastianbergmann/comparator/security/policy", - "source": "https://github.com/sebastianbergmann/comparator/tree/6.3.0" + "source": "https://github.com/sebastianbergmann/comparator/tree/6.3.1" }, "funding": [ { @@ -5900,7 +6046,7 @@ "type": "github" } ], - "time": "2025-01-06T10:28:19+00:00" + "time": "2025-03-07T06:57:01+00:00" }, { "name": "sebastian/complexity", @@ -6469,16 +6615,16 @@ }, { "name": "sebastian/type", - "version": "5.1.0", + "version": "5.1.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "461b9c5da241511a2a0e8f240814fb23ce5c0aac" + "reference": "a8a7e30534b0eb0c77cd9d07e82de1a114389f5e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/461b9c5da241511a2a0e8f240814fb23ce5c0aac", - "reference": "461b9c5da241511a2a0e8f240814fb23ce5c0aac", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/a8a7e30534b0eb0c77cd9d07e82de1a114389f5e", + "reference": "a8a7e30534b0eb0c77cd9d07e82de1a114389f5e", "shasum": "" }, "require": { @@ -6514,7 +6660,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/type/issues", "security": "https://github.com/sebastianbergmann/type/security/policy", - "source": "https://github.com/sebastianbergmann/type/tree/5.1.0" + "source": "https://github.com/sebastianbergmann/type/tree/5.1.2" }, "funding": [ { @@ -6522,7 +6668,7 @@ "type": "github" } ], - "time": "2024-09-17T13:12:04+00:00" + "time": "2025-03-18T13:35:50+00:00" }, { "name": "sebastian/version", @@ -6656,16 +6802,16 @@ }, { "name": "spatie/db-dumper", - "version": "3.7.1", + "version": "3.8.0", "source": { "type": "git", "url": "https://github.com/spatie/db-dumper.git", - "reference": "55d4d6710e1ab18c1e7ce2b22b8ad4bea2a30016" + "reference": "91e1fd4dc000aefc9753cda2da37069fc996baee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/db-dumper/zipball/55d4d6710e1ab18c1e7ce2b22b8ad4bea2a30016", - "reference": "55d4d6710e1ab18c1e7ce2b22b8ad4bea2a30016", + "url": "https://api.github.com/repos/spatie/db-dumper/zipball/91e1fd4dc000aefc9753cda2da37069fc996baee", + "reference": "91e1fd4dc000aefc9753cda2da37069fc996baee", "shasum": "" }, "require": { @@ -6703,7 +6849,7 @@ "spatie" ], "support": { - "source": "https://github.com/spatie/db-dumper/tree/3.7.1" + "source": "https://github.com/spatie/db-dumper/tree/3.8.0" }, "funding": [ { @@ -6715,7 +6861,7 @@ "type": "github" } ], - "time": "2024-11-18T14:54:31+00:00" + "time": "2025-02-14T15:04:22+00:00" }, { "name": "spatie/dropbox-api", @@ -6861,16 +7007,16 @@ }, { "name": "spatie/image", - "version": "3.7.4", + "version": "3.8.1", "source": { "type": "git", "url": "https://github.com/spatie/image.git", - "reference": "d72d1ae07f91a3c1230e064acd4fd8c334ab237b" + "reference": "80e907bc64fbb7ce87346e97c14534d7dad5d559" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/image/zipball/d72d1ae07f91a3c1230e064acd4fd8c334ab237b", - "reference": "d72d1ae07f91a3c1230e064acd4fd8c334ab237b", + "url": "https://api.github.com/repos/spatie/image/zipball/80e907bc64fbb7ce87346e97c14534d7dad5d559", + "reference": "80e907bc64fbb7ce87346e97c14534d7dad5d559", "shasum": "" }, "require": { @@ -6918,7 +7064,7 @@ "spatie" ], "support": { - "source": "https://github.com/spatie/image/tree/3.7.4" + "source": "https://github.com/spatie/image/tree/3.8.1" }, "funding": [ { @@ -6930,7 +7076,7 @@ "type": "github" } ], - "time": "2024-10-07T09:03:34+00:00" + "time": "2025-03-27T13:01:00+00:00" }, { "name": "spatie/image-optimizer", @@ -7088,16 +7234,16 @@ }, { "name": "spatie/laravel-medialibrary", - "version": "11.11.1", + "version": "11.12.9", "source": { "type": "git", "url": "https://github.com/spatie/laravel-medialibrary.git", - "reference": "1c4950237a5f2876102b36ded89a00bb6ea96c09" + "reference": "2435e90009c36906c33668d26c96c86acdb39af7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-medialibrary/zipball/1c4950237a5f2876102b36ded89a00bb6ea96c09", - "reference": "1c4950237a5f2876102b36ded89a00bb6ea96c09", + "url": "https://api.github.com/repos/spatie/laravel-medialibrary/zipball/2435e90009c36906c33668d26c96c86acdb39af7", + "reference": "2435e90009c36906c33668d26c96c86acdb39af7", "shasum": "" }, "require": { @@ -7105,12 +7251,12 @@ "ext-exif": "*", "ext-fileinfo": "*", "ext-json": "*", - "illuminate/bus": "^10.0|^11.0", - "illuminate/conditionable": "^10.0|^11.0", - "illuminate/console": "^10.0|^11.0", - "illuminate/database": "^10.0|^11.0", - "illuminate/pipeline": "^10.0|^11.0", - "illuminate/support": "^10.0|^11.0", + "illuminate/bus": "^10.2|^11.0|^12.0", + "illuminate/conditionable": "^10.2|^11.0|^12.0", + "illuminate/console": "^10.2|^11.0|^12.0", + "illuminate/database": "^10.2|^11.0|^12.0", + "illuminate/pipeline": "^10.2|^11.0|^12.0", + "illuminate/support": "^10.2|^11.0|^12.0", "maennchen/zipstream-php": "^3.1", "php": "^8.2", "spatie/image": "^3.3.2", @@ -7127,11 +7273,11 @@ "ext-pdo_sqlite": "*", "ext-zip": "*", "guzzlehttp/guzzle": "^7.8.1", - "larastan/larastan": "^2.7", + "larastan/larastan": "^2.7|^3.0", "league/flysystem-aws-s3-v3": "^3.22", "mockery/mockery": "^1.6.7", - "orchestra/testbench": "^7.0|^8.17|^9.0", - "pestphp/pest": "^2.28", + "orchestra/testbench": "^7.0|^8.17|^9.0|^10.0", + "pestphp/pest": "^2.28|^3.5", "phpstan/extension-installer": "^1.3.1", "spatie/laravel-ray": "^1.33", "spatie/pdf-to-image": "^2.2|^3.0", @@ -7181,7 +7327,7 @@ ], "support": { "issues": "https://github.com/spatie/laravel-medialibrary/issues", - "source": "https://github.com/spatie/laravel-medialibrary/tree/11.11.1" + "source": "https://github.com/spatie/laravel-medialibrary/tree/11.12.9" }, "funding": [ { @@ -7193,31 +7339,31 @@ "type": "github" } ], - "time": "2024-12-30T10:16:02+00:00" + "time": "2025-03-31T07:55:00+00:00" }, { "name": "spatie/laravel-package-tools", - "version": "1.18.0", + "version": "1.92.0", "source": { "type": "git", "url": "https://github.com/spatie/laravel-package-tools.git", - "reference": "8332205b90d17164913244f4a8e13ab7e6761d29" + "reference": "dd46cd0ed74015db28822d88ad2e667f4496a6f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/8332205b90d17164913244f4a8e13ab7e6761d29", - "reference": "8332205b90d17164913244f4a8e13ab7e6761d29", + "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/dd46cd0ed74015db28822d88ad2e667f4496a6f6", + "reference": "dd46cd0ed74015db28822d88ad2e667f4496a6f6", "shasum": "" }, "require": { - "illuminate/contracts": "^9.28|^10.0|^11.0", + "illuminate/contracts": "^9.28|^10.0|^11.0|^12.0", "php": "^8.0" }, "require-dev": { "mockery/mockery": "^1.5", - "orchestra/testbench": "^7.7|^8.0|^9.0", - "pestphp/pest": "^1.22|^2", - "phpunit/phpunit": "^9.5.24|^10.5", + "orchestra/testbench": "^7.7|^8.0|^9.0|^10.0", + "pestphp/pest": "^1.23|^2.1|^3.1", + "phpunit/phpunit": "^9.5.24|^10.5|^11.5", "spatie/pest-plugin-test-time": "^1.1|^2.2" }, "type": "library", @@ -7245,7 +7391,7 @@ ], "support": { "issues": "https://github.com/spatie/laravel-package-tools/issues", - "source": "https://github.com/spatie/laravel-package-tools/tree/1.18.0" + "source": "https://github.com/spatie/laravel-package-tools/tree/1.92.0" }, "funding": [ { @@ -7253,24 +7399,24 @@ "type": "github" } ], - "time": "2024-12-30T13:13:39+00:00" + "time": "2025-03-27T08:34:10+00:00" }, { "name": "spatie/laravel-signal-aware-command", - "version": "2.0.0", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/spatie/laravel-signal-aware-command.git", - "reference": "49a5e671c3a3fd992187a777d01385fc6a84759d" + "reference": "8e8a226ed7fb45302294878ef339e75ffa9a878d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-signal-aware-command/zipball/49a5e671c3a3fd992187a777d01385fc6a84759d", - "reference": "49a5e671c3a3fd992187a777d01385fc6a84759d", + "url": "https://api.github.com/repos/spatie/laravel-signal-aware-command/zipball/8e8a226ed7fb45302294878ef339e75ffa9a878d", + "reference": "8e8a226ed7fb45302294878ef339e75ffa9a878d", "shasum": "" }, "require": { - "illuminate/contracts": "^11.0", + "illuminate/contracts": "^11.0|^12.0", "php": "^8.2", "spatie/laravel-package-tools": "^1.4.3", "symfony/console": "^7.0" @@ -7279,8 +7425,8 @@ "brianium/paratest": "^6.2|^7.0", "ext-pcntl": "*", "nunomaduro/collision": "^5.3|^6.0|^7.0|^8.0", - "orchestra/testbench": "^9.0", - "pestphp/pest-plugin-laravel": "^1.3|^2.0", + "orchestra/testbench": "^9.0|^10.0", + "pestphp/pest-plugin-laravel": "^1.3|^2.0|^3.0", "phpunit/phpunit": "^9.5|^10|^11", "spatie/laravel-ray": "^1.17" }, @@ -7320,7 +7466,7 @@ ], "support": { "issues": "https://github.com/spatie/laravel-signal-aware-command/issues", - "source": "https://github.com/spatie/laravel-signal-aware-command/tree/2.0.0" + "source": "https://github.com/spatie/laravel-signal-aware-command/tree/2.1.0" }, "funding": [ { @@ -7328,20 +7474,20 @@ "type": "github" } ], - "time": "2024-02-05T13:37:25+00:00" + "time": "2025-02-14T09:55:51+00:00" }, { "name": "spatie/temporary-directory", - "version": "2.2.1", + "version": "2.3.0", "source": { "type": "git", "url": "https://github.com/spatie/temporary-directory.git", - "reference": "76949fa18f8e1a7f663fd2eaa1d00e0bcea0752a" + "reference": "580eddfe9a0a41a902cac6eeb8f066b42e65a32b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/temporary-directory/zipball/76949fa18f8e1a7f663fd2eaa1d00e0bcea0752a", - "reference": "76949fa18f8e1a7f663fd2eaa1d00e0bcea0752a", + "url": "https://api.github.com/repos/spatie/temporary-directory/zipball/580eddfe9a0a41a902cac6eeb8f066b42e65a32b", + "reference": "580eddfe9a0a41a902cac6eeb8f066b42e65a32b", "shasum": "" }, "require": { @@ -7377,7 +7523,7 @@ ], "support": { "issues": "https://github.com/spatie/temporary-directory/issues", - "source": "https://github.com/spatie/temporary-directory/tree/2.2.1" + "source": "https://github.com/spatie/temporary-directory/tree/2.3.0" }, "funding": [ { @@ -7389,7 +7535,7 @@ "type": "github" } ], - "time": "2023-12-25T11:46:58+00:00" + "time": "2025-01-13T13:04:43+00:00" }, { "name": "staabm/side-effects-detector", @@ -7519,16 +7665,16 @@ }, { "name": "symfony/console", - "version": "v7.2.1", + "version": "v7.2.5", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "fefcc18c0f5d0efe3ab3152f15857298868dc2c3" + "reference": "e51498ea18570c062e7df29d05a7003585b19b88" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/fefcc18c0f5d0efe3ab3152f15857298868dc2c3", - "reference": "fefcc18c0f5d0efe3ab3152f15857298868dc2c3", + "url": "https://api.github.com/repos/symfony/console/zipball/e51498ea18570c062e7df29d05a7003585b19b88", + "reference": "e51498ea18570c062e7df29d05a7003585b19b88", "shasum": "" }, "require": { @@ -7592,7 +7738,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.2.1" + "source": "https://github.com/symfony/console/tree/v7.2.5" }, "funding": [ { @@ -7608,7 +7754,7 @@ "type": "tidelift" } ], - "time": "2024-12-11T03:49:26+00:00" + "time": "2025-03-12T08:11:12+00:00" }, { "name": "symfony/css-selector", @@ -7744,16 +7890,16 @@ }, { "name": "symfony/error-handler", - "version": "v7.2.1", + "version": "v7.2.5", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "6150b89186573046167796fa5f3f76601d5145f8" + "reference": "102be5e6a8e4f4f3eb3149bcbfa33a80d1ee374b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/6150b89186573046167796fa5f3f76601d5145f8", - "reference": "6150b89186573046167796fa5f3f76601d5145f8", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/102be5e6a8e4f4f3eb3149bcbfa33a80d1ee374b", + "reference": "102be5e6a8e4f4f3eb3149bcbfa33a80d1ee374b", "shasum": "" }, "require": { @@ -7799,7 +7945,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/v7.2.1" + "source": "https://github.com/symfony/error-handler/tree/v7.2.5" }, "funding": [ { @@ -7815,7 +7961,7 @@ "type": "tidelift" } ], - "time": "2024-12-07T08:50:44+00:00" + "time": "2025-03-03T07:12:39+00:00" }, { "name": "symfony/event-dispatcher", @@ -8039,16 +8185,16 @@ }, { "name": "symfony/http-foundation", - "version": "v7.2.2", + "version": "v7.2.5", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "62d1a43796ca3fea3f83a8470dfe63a4af3bc588" + "reference": "371272aeb6286f8135e028ca535f8e4d6f114126" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/62d1a43796ca3fea3f83a8470dfe63a4af3bc588", - "reference": "62d1a43796ca3fea3f83a8470dfe63a4af3bc588", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/371272aeb6286f8135e028ca535f8e4d6f114126", + "reference": "371272aeb6286f8135e028ca535f8e4d6f114126", "shasum": "" }, "require": { @@ -8097,7 +8243,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.2.2" + "source": "https://github.com/symfony/http-foundation/tree/v7.2.5" }, "funding": [ { @@ -8113,20 +8259,20 @@ "type": "tidelift" } ], - "time": "2024-12-30T19:00:17+00:00" + "time": "2025-03-25T15:54:33+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.2.2", + "version": "v7.2.5", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "3c432966bd8c7ec7429663105f5a02d7e75b4306" + "reference": "b1fe91bc1fa454a806d3f98db4ba826eb9941a54" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/3c432966bd8c7ec7429663105f5a02d7e75b4306", - "reference": "3c432966bd8c7ec7429663105f5a02d7e75b4306", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/b1fe91bc1fa454a806d3f98db4ba826eb9941a54", + "reference": "b1fe91bc1fa454a806d3f98db4ba826eb9941a54", "shasum": "" }, "require": { @@ -8211,7 +8357,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/v7.2.2" + "source": "https://github.com/symfony/http-kernel/tree/v7.2.5" }, "funding": [ { @@ -8227,20 +8373,20 @@ "type": "tidelift" } ], - "time": "2024-12-31T14:59:40+00:00" + "time": "2025-03-28T13:32:50+00:00" }, { "name": "symfony/mailer", - "version": "v7.2.0", + "version": "v7.2.3", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "e4d358702fb66e4c8a2af08e90e7271a62de39cc" + "reference": "f3871b182c44997cf039f3b462af4a48fb85f9d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/e4d358702fb66e4c8a2af08e90e7271a62de39cc", - "reference": "e4d358702fb66e4c8a2af08e90e7271a62de39cc", + "url": "https://api.github.com/repos/symfony/mailer/zipball/f3871b182c44997cf039f3b462af4a48fb85f9d3", + "reference": "f3871b182c44997cf039f3b462af4a48fb85f9d3", "shasum": "" }, "require": { @@ -8291,7 +8437,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v7.2.0" + "source": "https://github.com/symfony/mailer/tree/v7.2.3" }, "funding": [ { @@ -8307,20 +8453,20 @@ "type": "tidelift" } ], - "time": "2024-11-25T15:21:05+00:00" + "time": "2025-01-27T11:08:17+00:00" }, { "name": "symfony/mime", - "version": "v7.2.1", + "version": "v7.2.4", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "7f9617fcf15cb61be30f8b252695ed5e2bfac283" + "reference": "87ca22046b78c3feaff04b337f33b38510fd686b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/7f9617fcf15cb61be30f8b252695ed5e2bfac283", - "reference": "7f9617fcf15cb61be30f8b252695ed5e2bfac283", + "url": "https://api.github.com/repos/symfony/mime/zipball/87ca22046b78c3feaff04b337f33b38510fd686b", + "reference": "87ca22046b78c3feaff04b337f33b38510fd686b", "shasum": "" }, "require": { @@ -8375,7 +8521,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v7.2.1" + "source": "https://github.com/symfony/mime/tree/v7.2.4" }, "funding": [ { @@ -8391,7 +8537,7 @@ "type": "tidelift" } ], - "time": "2024-12-07T08:50:44+00:00" + "time": "2025-02-19T08:51:20+00:00" }, { "name": "symfony/polyfill-ctype", @@ -9031,16 +9177,16 @@ }, { "name": "symfony/process", - "version": "v7.2.0", + "version": "v7.2.5", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "d34b22ba9390ec19d2dd966c40aa9e8462f27a7e" + "reference": "87b7c93e57df9d8e39a093d32587702380ff045d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/d34b22ba9390ec19d2dd966c40aa9e8462f27a7e", - "reference": "d34b22ba9390ec19d2dd966c40aa9e8462f27a7e", + "url": "https://api.github.com/repos/symfony/process/zipball/87b7c93e57df9d8e39a093d32587702380ff045d", + "reference": "87b7c93e57df9d8e39a093d32587702380ff045d", "shasum": "" }, "require": { @@ -9072,7 +9218,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.2.0" + "source": "https://github.com/symfony/process/tree/v7.2.5" }, "funding": [ { @@ -9088,20 +9234,20 @@ "type": "tidelift" } ], - "time": "2024-11-06T14:24:19+00:00" + "time": "2025-03-13T12:21:46+00:00" }, { "name": "symfony/routing", - "version": "v7.2.0", + "version": "v7.2.3", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "e10a2450fa957af6c448b9b93c9010a4e4c0725e" + "reference": "ee9a67edc6baa33e5fae662f94f91fd262930996" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/e10a2450fa957af6c448b9b93c9010a4e4c0725e", - "reference": "e10a2450fa957af6c448b9b93c9010a4e4c0725e", + "url": "https://api.github.com/repos/symfony/routing/zipball/ee9a67edc6baa33e5fae662f94f91fd262930996", + "reference": "ee9a67edc6baa33e5fae662f94f91fd262930996", "shasum": "" }, "require": { @@ -9153,7 +9299,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v7.2.0" + "source": "https://github.com/symfony/routing/tree/v7.2.3" }, "funding": [ { @@ -9169,7 +9315,7 @@ "type": "tidelift" } ], - "time": "2024-11-25T11:08:51+00:00" + "time": "2025-01-17T10:56:55+00:00" }, { "name": "symfony/service-contracts", @@ -9343,16 +9489,16 @@ }, { "name": "symfony/translation", - "version": "v7.2.2", + "version": "v7.2.4", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "e2674a30132b7cc4d74540d6c2573aa363f05923" + "reference": "283856e6981286cc0d800b53bd5703e8e363f05a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/e2674a30132b7cc4d74540d6c2573aa363f05923", - "reference": "e2674a30132b7cc4d74540d6c2573aa363f05923", + "url": "https://api.github.com/repos/symfony/translation/zipball/283856e6981286cc0d800b53bd5703e8e363f05a", + "reference": "283856e6981286cc0d800b53bd5703e8e363f05a", "shasum": "" }, "require": { @@ -9418,7 +9564,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v7.2.2" + "source": "https://github.com/symfony/translation/tree/v7.2.4" }, "funding": [ { @@ -9434,7 +9580,7 @@ "type": "tidelift" } ], - "time": "2024-12-07T08:18:10+00:00" + "time": "2025-02-13T10:27:23+00:00" }, { "name": "symfony/translation-contracts", @@ -9590,16 +9736,16 @@ }, { "name": "symfony/var-dumper", - "version": "v7.2.0", + "version": "v7.2.3", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "c6a22929407dec8765d6e2b6ff85b800b245879c" + "reference": "82b478c69745d8878eb60f9a049a4d584996f73a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/c6a22929407dec8765d6e2b6ff85b800b245879c", - "reference": "c6a22929407dec8765d6e2b6ff85b800b245879c", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/82b478c69745d8878eb60f9a049a4d584996f73a", + "reference": "82b478c69745d8878eb60f9a049a4d584996f73a", "shasum": "" }, "require": { @@ -9653,7 +9799,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.2.0" + "source": "https://github.com/symfony/var-dumper/tree/v7.2.3" }, "funding": [ { @@ -9669,7 +9815,7 @@ "type": "tidelift" } ], - "time": "2024-11-08T15:48:14+00:00" + "time": "2025-01-17T11:39:41+00:00" }, { "name": "theseer/tokenizer", @@ -10063,36 +10209,36 @@ "packages-dev": [ { "name": "barryvdh/laravel-ide-helper", - "version": "v3.5.3", + "version": "v3.5.5", "source": { "type": "git", "url": "https://github.com/barryvdh/laravel-ide-helper.git", - "reference": "271682a2a6d57691e1c7ff378f44e4ae6ac2aba0" + "reference": "8d441ec99f8612b942b55f5183151d91591b618a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/271682a2a6d57691e1c7ff378f44e4ae6ac2aba0", - "reference": "271682a2a6d57691e1c7ff378f44e4ae6ac2aba0", + "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/8d441ec99f8612b942b55f5183151d91591b618a", + "reference": "8d441ec99f8612b942b55f5183151d91591b618a", "shasum": "" }, "require": { "barryvdh/reflection-docblock": "^2.3", "composer/class-map-generator": "^1.0", "ext-json": "*", - "illuminate/console": "^11.15", - "illuminate/database": "^11.15", - "illuminate/filesystem": "^11.15", - "illuminate/support": "^11.15", + "illuminate/console": "^11.15 || ^12", + "illuminate/database": "^11.15 || ^12", + "illuminate/filesystem": "^11.15 || ^12", + "illuminate/support": "^11.15 || ^12", "php": "^8.2" }, "require-dev": { "ext-pdo_sqlite": "*", "friendsofphp/php-cs-fixer": "^3", - "illuminate/config": "^11.15", - "illuminate/view": "^11.15", + "illuminate/config": "^11.15 || ^12", + "illuminate/view": "^11.15 || ^12", "mockery/mockery": "^1.4", - "orchestra/testbench": "^9.2", - "phpunit/phpunit": "^10.5", + "orchestra/testbench": "^9.2 || ^10", + "phpunit/phpunit": "^10.5 || ^11.5.3", "spatie/phpunit-snapshot-assertions": "^4 || ^5", "vimeo/psalm": "^5.4", "vlucas/phpdotenv": "^5" @@ -10141,7 +10287,7 @@ ], "support": { "issues": "https://github.com/barryvdh/laravel-ide-helper/issues", - "source": "https://github.com/barryvdh/laravel-ide-helper/tree/v3.5.3" + "source": "https://github.com/barryvdh/laravel-ide-helper/tree/v3.5.5" }, "funding": [ { @@ -10153,20 +10299,20 @@ "type": "github" } ], - "time": "2025-01-08T10:01:30+00:00" + "time": "2025-02-11T13:59:46+00:00" }, { "name": "barryvdh/reflection-docblock", - "version": "v2.3.0", + "version": "v2.3.1", "source": { "type": "git", "url": "https://github.com/barryvdh/ReflectionDocBlock.git", - "reference": "818be8de6af4d16ef3ad51ea9234b3d37026ee5f" + "reference": "b6ff9f93603561f50e53b64310495d20b8dff5d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/barryvdh/ReflectionDocBlock/zipball/818be8de6af4d16ef3ad51ea9234b3d37026ee5f", - "reference": "818be8de6af4d16ef3ad51ea9234b3d37026ee5f", + "url": "https://api.github.com/repos/barryvdh/ReflectionDocBlock/zipball/b6ff9f93603561f50e53b64310495d20b8dff5d8", + "reference": "b6ff9f93603561f50e53b64310495d20b8dff5d8", "shasum": "" }, "require": { @@ -10203,28 +10349,28 @@ } ], "support": { - "source": "https://github.com/barryvdh/ReflectionDocBlock/tree/v2.3.0" + "source": "https://github.com/barryvdh/ReflectionDocBlock/tree/v2.3.1" }, - "time": "2024-12-30T10:35:04+00:00" + "time": "2025-01-18T19:26:32+00:00" }, { "name": "beyondcode/laravel-dump-server", - "version": "2.0.0", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/beyondcode/laravel-dump-server.git", - "reference": "e0dff1b2c7caf49d07ca5cb331fc7c5f1e52c715" + "reference": "8e9af58a02a59d6a028167e2afc5b5b1e58eb822" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/beyondcode/laravel-dump-server/zipball/e0dff1b2c7caf49d07ca5cb331fc7c5f1e52c715", - "reference": "e0dff1b2c7caf49d07ca5cb331fc7c5f1e52c715", + "url": "https://api.github.com/repos/beyondcode/laravel-dump-server/zipball/8e9af58a02a59d6a028167e2afc5b5b1e58eb822", + "reference": "8e9af58a02a59d6a028167e2afc5b5b1e58eb822", "shasum": "" }, "require": { - "illuminate/console": "5.6.*|5.7.*|5.8.*|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", - "illuminate/http": "5.6.*|5.7.*|5.8.*|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", - "illuminate/support": "5.6.*|5.7.*|5.8.*|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", + "illuminate/console": "5.6.*|5.7.*|5.8.*|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/http": "5.6.*|5.7.*|5.8.*|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", + "illuminate/support": "5.6.*|5.7.*|5.8.*|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", "php": ">=7.2.5", "symfony/var-dumper": "^5.0|^6.0|^7.0" }, @@ -10271,22 +10417,22 @@ ], "support": { "issues": "https://github.com/beyondcode/laravel-dump-server/issues", - "source": "https://github.com/beyondcode/laravel-dump-server/tree/2.0.0" + "source": "https://github.com/beyondcode/laravel-dump-server/tree/2.1.0" }, - "time": "2024-04-23T12:02:38+00:00" + "time": "2025-02-26T08:27:59+00:00" }, { "name": "brianium/paratest", - "version": "v7.7.0", + "version": "v7.8.3", "source": { "type": "git", "url": "https://github.com/paratestphp/paratest.git", - "reference": "4fb3f73bc5a4c3146bac2850af7dc72435a32daf" + "reference": "a585c346ddf1bec22e51e20b5387607905604a71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paratestphp/paratest/zipball/4fb3f73bc5a4c3146bac2850af7dc72435a32daf", - "reference": "4fb3f73bc5a4c3146bac2850af7dc72435a32daf", + "url": "https://api.github.com/repos/paratestphp/paratest/zipball/a585c346ddf1bec22e51e20b5387607905604a71", + "reference": "a585c346ddf1bec22e51e20b5387607905604a71", "shasum": "" }, "require": { @@ -10297,23 +10443,23 @@ "fidry/cpu-core-counter": "^1.2.0", "jean85/pretty-package-versions": "^2.1.0", "php": "~8.2.0 || ~8.3.0 || ~8.4.0", - "phpunit/php-code-coverage": "^11.0.8", - "phpunit/php-file-iterator": "^5.1.0", - "phpunit/php-timer": "^7.0.1", - "phpunit/phpunit": "^11.5.1", - "sebastian/environment": "^7.2.0", - "symfony/console": "^6.4.14 || ^7.2.1", - "symfony/process": "^6.4.14 || ^7.2.0" + "phpunit/php-code-coverage": "^11.0.9 || ^12.0.4", + "phpunit/php-file-iterator": "^5.1.0 || ^6", + "phpunit/php-timer": "^7.0.1 || ^8", + "phpunit/phpunit": "^11.5.11 || ^12.0.6", + "sebastian/environment": "^7.2.0 || ^8", + "symfony/console": "^6.4.17 || ^7.2.1", + "symfony/process": "^6.4.19 || ^7.2.4" }, "require-dev": { "doctrine/coding-standard": "^12.0.0", "ext-pcov": "*", "ext-posix": "*", - "phpstan/phpstan": "^2.0.3", + "phpstan/phpstan": "^2.1.6", "phpstan/phpstan-deprecation-rules": "^2.0.1", - "phpstan/phpstan-phpunit": "^2.0.1", - "phpstan/phpstan-strict-rules": "^2", - "squizlabs/php_codesniffer": "^3.11.1", + "phpstan/phpstan-phpunit": "^2.0.4", + "phpstan/phpstan-strict-rules": "^2.0.3", + "squizlabs/php_codesniffer": "^3.11.3", "symfony/filesystem": "^6.4.13 || ^7.2.0" }, "bin": [ @@ -10354,7 +10500,7 @@ ], "support": { "issues": "https://github.com/paratestphp/paratest/issues", - "source": "https://github.com/paratestphp/paratest/tree/v7.7.0" + "source": "https://github.com/paratestphp/paratest/tree/v7.8.3" }, "funding": [ { @@ -10366,20 +10512,20 @@ "type": "paypal" } ], - "time": "2024-12-11T14:50:44+00:00" + "time": "2025-03-05T08:29:11+00:00" }, { "name": "composer/class-map-generator", - "version": "1.5.0", + "version": "1.6.1", "source": { "type": "git", "url": "https://github.com/composer/class-map-generator.git", - "reference": "4b0a223cf5be7c9ee7e0ef1bc7db42b4a97c9915" + "reference": "134b705ddb0025d397d8318a75825fe3c9d1da34" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/class-map-generator/zipball/4b0a223cf5be7c9ee7e0ef1bc7db42b4a97c9915", - "reference": "4b0a223cf5be7c9ee7e0ef1bc7db42b4a97c9915", + "url": "https://api.github.com/repos/composer/class-map-generator/zipball/134b705ddb0025d397d8318a75825fe3c9d1da34", + "reference": "134b705ddb0025d397d8318a75825fe3c9d1da34", "shasum": "" }, "require": { @@ -10423,7 +10569,7 @@ ], "support": { "issues": "https://github.com/composer/class-map-generator/issues", - "source": "https://github.com/composer/class-map-generator/tree/1.5.0" + "source": "https://github.com/composer/class-map-generator/tree/1.6.1" }, "funding": [ { @@ -10439,7 +10585,7 @@ "type": "tidelift" } ], - "time": "2024-11-25T16:11:06+00:00" + "time": "2025-03-24T13:50:44+00:00" }, { "name": "composer/pcre", @@ -10646,16 +10792,16 @@ }, { "name": "filp/whoops", - "version": "2.16.0", + "version": "2.18.0", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "befcdc0e5dce67252aa6322d82424be928214fa2" + "reference": "a7de6c3c6c3c022f5cfc337f8ede6a14460cf77e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/befcdc0e5dce67252aa6322d82424be928214fa2", - "reference": "befcdc0e5dce67252aa6322d82424be928214fa2", + "url": "https://api.github.com/repos/filp/whoops/zipball/a7de6c3c6c3c022f5cfc337f8ede6a14460cf77e", + "reference": "a7de6c3c6c3c022f5cfc337f8ede6a14460cf77e", "shasum": "" }, "require": { @@ -10705,7 +10851,7 @@ ], "support": { "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.16.0" + "source": "https://github.com/filp/whoops/tree/2.18.0" }, "funding": [ { @@ -10713,20 +10859,20 @@ "type": "github" } ], - "time": "2024-09-25T12:00:00+00:00" + "time": "2025-03-15T12:00:00+00:00" }, { "name": "jean85/pretty-package-versions", - "version": "2.1.0", + "version": "2.1.1", "source": { "type": "git", "url": "https://github.com/Jean85/pretty-package-versions.git", - "reference": "3c4e5f62ba8d7de1734312e4fff32f67a8daaf10" + "reference": "4d7aa5dab42e2a76d99559706022885de0e18e1a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/3c4e5f62ba8d7de1734312e4fff32f67a8daaf10", - "reference": "3c4e5f62ba8d7de1734312e4fff32f67a8daaf10", + "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/4d7aa5dab42e2a76d99559706022885de0e18e1a", + "reference": "4d7aa5dab42e2a76d99559706022885de0e18e1a", "shasum": "" }, "require": { @@ -10736,8 +10882,9 @@ "require-dev": { "friendsofphp/php-cs-fixer": "^3.2", "jean85/composer-provided-replaced-stub-package": "^1.0", - "phpstan/phpstan": "^1.4", + "phpstan/phpstan": "^2.0", "phpunit/phpunit": "^7.5|^8.5|^9.6", + "rector/rector": "^2.0", "vimeo/psalm": "^4.3 || ^5.0" }, "type": "library", @@ -10770,22 +10917,22 @@ ], "support": { "issues": "https://github.com/Jean85/pretty-package-versions/issues", - "source": "https://github.com/Jean85/pretty-package-versions/tree/2.1.0" + "source": "https://github.com/Jean85/pretty-package-versions/tree/2.1.1" }, - "time": "2024-11-18T16:19:46+00:00" + "time": "2025-03-19T14:43:43+00:00" }, { "name": "laravel/pint", - "version": "v1.19.0", + "version": "v1.21.2", "source": { "type": "git", "url": "https://github.com/laravel/pint.git", - "reference": "8169513746e1bac70c85d6ea1524d9225d4886f0" + "reference": "370772e7d9e9da087678a0edf2b11b6960e40558" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/pint/zipball/8169513746e1bac70c85d6ea1524d9225d4886f0", - "reference": "8169513746e1bac70c85d6ea1524d9225d4886f0", + "url": "https://api.github.com/repos/laravel/pint/zipball/370772e7d9e9da087678a0edf2b11b6960e40558", + "reference": "370772e7d9e9da087678a0edf2b11b6960e40558", "shasum": "" }, "require": { @@ -10793,15 +10940,15 @@ "ext-mbstring": "*", "ext-tokenizer": "*", "ext-xml": "*", - "php": "^8.1.0" + "php": "^8.2.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^3.66.0", - "illuminate/view": "^10.48.25", - "larastan/larastan": "^2.9.12", - "laravel-zero/framework": "^10.48.25", + "friendsofphp/php-cs-fixer": "^3.72.0", + "illuminate/view": "^11.44.2", + "larastan/larastan": "^3.2.0", + "laravel-zero/framework": "^11.36.1", "mockery/mockery": "^1.6.12", - "nunomaduro/termwind": "^1.17.0", + "nunomaduro/termwind": "^2.3", "pestphp/pest": "^2.36.0" }, "bin": [ @@ -10838,32 +10985,32 @@ "issues": "https://github.com/laravel/pint/issues", "source": "https://github.com/laravel/pint" }, - "time": "2024-12-30T16:20:10+00:00" + "time": "2025-03-14T22:31:42+00:00" }, { "name": "laravel/sail", - "version": "v1.39.1", + "version": "v1.41.0", "source": { "type": "git", "url": "https://github.com/laravel/sail.git", - "reference": "1a3c7291bc88de983b66688919a4d298d68ddec7" + "reference": "fe1a4ada0abb5e4bd99eb4e4b0d87906c00cdeec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/1a3c7291bc88de983b66688919a4d298d68ddec7", - "reference": "1a3c7291bc88de983b66688919a4d298d68ddec7", + "url": "https://api.github.com/repos/laravel/sail/zipball/fe1a4ada0abb5e4bd99eb4e4b0d87906c00cdeec", + "reference": "fe1a4ada0abb5e4bd99eb4e4b0d87906c00cdeec", "shasum": "" }, "require": { - "illuminate/console": "^9.52.16|^10.0|^11.0", - "illuminate/contracts": "^9.52.16|^10.0|^11.0", - "illuminate/support": "^9.52.16|^10.0|^11.0", + "illuminate/console": "^9.52.16|^10.0|^11.0|^12.0", + "illuminate/contracts": "^9.52.16|^10.0|^11.0|^12.0", + "illuminate/support": "^9.52.16|^10.0|^11.0|^12.0", "php": "^8.0", "symfony/console": "^6.0|^7.0", "symfony/yaml": "^6.0|^7.0" }, "require-dev": { - "orchestra/testbench": "^7.0|^8.0|^9.0", + "orchestra/testbench": "^7.0|^8.0|^9.0|^10.0", "phpstan/phpstan": "^1.10" }, "bin": [ @@ -10901,42 +11048,43 @@ "issues": "https://github.com/laravel/sail/issues", "source": "https://github.com/laravel/sail" }, - "time": "2024-11-27T15:42:28+00:00" + "time": "2025-01-24T15:45:36+00:00" }, { "name": "nunomaduro/collision", - "version": "v8.5.0", + "version": "v8.8.0", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "f5c101b929c958e849a633283adff296ed5f38f5" + "reference": "4cf9f3b47afff38b139fb79ce54fc71799022ce8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/f5c101b929c958e849a633283adff296ed5f38f5", - "reference": "f5c101b929c958e849a633283adff296ed5f38f5", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/4cf9f3b47afff38b139fb79ce54fc71799022ce8", + "reference": "4cf9f3b47afff38b139fb79ce54fc71799022ce8", "shasum": "" }, "require": { - "filp/whoops": "^2.16.0", - "nunomaduro/termwind": "^2.1.0", + "filp/whoops": "^2.18.0", + "nunomaduro/termwind": "^2.3.0", "php": "^8.2.0", - "symfony/console": "^7.1.5" + "symfony/console": "^7.2.5" }, "conflict": { - "laravel/framework": "<11.0.0 || >=12.0.0", - "phpunit/phpunit": "<10.5.1 || >=12.0.0" + "laravel/framework": "<11.44.2 || >=13.0.0", + "phpunit/phpunit": "<11.5.15 || >=13.0.0" }, "require-dev": { - "larastan/larastan": "^2.9.8", - "laravel/framework": "^11.28.0", - "laravel/pint": "^1.18.1", - "laravel/sail": "^1.36.0", - "laravel/sanctum": "^4.0.3", - "laravel/tinker": "^2.10.0", - "orchestra/testbench-core": "^9.5.3", - "pestphp/pest": "^2.36.0 || ^3.4.0", - "sebastian/environment": "^6.1.0 || ^7.2.0" + "brianium/paratest": "^7.8.3", + "larastan/larastan": "^3.2", + "laravel/framework": "^11.44.2 || ^12.6", + "laravel/pint": "^1.21.2", + "laravel/sail": "^1.41.0", + "laravel/sanctum": "^4.0.8", + "laravel/tinker": "^2.10.1", + "orchestra/testbench-core": "^9.12.0 || ^10.1", + "pestphp/pest": "^3.8.0", + "sebastian/environment": "^7.2.0 || ^8.0" }, "type": "library", "extra": { @@ -10973,6 +11121,7 @@ "cli", "command-line", "console", + "dev", "error", "handling", "laravel", @@ -10998,42 +11147,42 @@ "type": "patreon" } ], - "time": "2024-10-15T16:06:32+00:00" + "time": "2025-04-03T14:33:09+00:00" }, { "name": "pestphp/pest", - "version": "v3.7.1", + "version": "v3.8.1", "source": { "type": "git", "url": "https://github.com/pestphp/pest.git", - "reference": "bf3178473dcaa53b0458f21dfdb271306ea62512" + "reference": "6080f51a0b0830715c48ba0e7458b06907febfe5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest/zipball/bf3178473dcaa53b0458f21dfdb271306ea62512", - "reference": "bf3178473dcaa53b0458f21dfdb271306ea62512", + "url": "https://api.github.com/repos/pestphp/pest/zipball/6080f51a0b0830715c48ba0e7458b06907febfe5", + "reference": "6080f51a0b0830715c48ba0e7458b06907febfe5", "shasum": "" }, "require": { - "brianium/paratest": "^7.7.0", - "nunomaduro/collision": "^8.5.0", + "brianium/paratest": "^7.8.3", + "nunomaduro/collision": "^8.8.0", "nunomaduro/termwind": "^2.3.0", "pestphp/pest-plugin": "^3.0.0", - "pestphp/pest-plugin-arch": "^3.0.0", + "pestphp/pest-plugin-arch": "^3.1.0", "pestphp/pest-plugin-mutate": "^3.0.5", "php": "^8.2.0", - "phpunit/phpunit": "^11.5.1" + "phpunit/phpunit": "^11.5.15" }, "conflict": { "filp/whoops": "<2.16.0", - "phpunit/phpunit": ">11.5.1", + "phpunit/phpunit": ">11.5.15", "sebastian/exporter": "<6.0.0", "webmozart/assert": "<1.11.0" }, "require-dev": { - "pestphp/pest-dev-tools": "^3.3.0", - "pestphp/pest-plugin-type-coverage": "^3.2.0", - "symfony/process": "^7.2.0" + "pestphp/pest-dev-tools": "^3.4.0", + "pestphp/pest-plugin-type-coverage": "^3.5.0", + "symfony/process": "^7.2.5" }, "bin": [ "bin/pest" @@ -11098,7 +11247,7 @@ ], "support": { "issues": "https://github.com/pestphp/pest/issues", - "source": "https://github.com/pestphp/pest/tree/v3.7.1" + "source": "https://github.com/pestphp/pest/tree/v3.8.1" }, "funding": [ { @@ -11110,7 +11259,7 @@ "type": "github" } ], - "time": "2024-12-12T11:52:01+00:00" + "time": "2025-04-03T16:35:58+00:00" }, { "name": "pestphp/pest-plugin", @@ -11184,16 +11333,16 @@ }, { "name": "pestphp/pest-plugin-arch", - "version": "v3.0.0", + "version": "v3.1.0", "source": { "type": "git", "url": "https://github.com/pestphp/pest-plugin-arch.git", - "reference": "0a27e55a270cfe73d8cb70551b91002ee2cb64b0" + "reference": "ebec636b97ee73936ee8485e15a59c3f5a4c21b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest-plugin-arch/zipball/0a27e55a270cfe73d8cb70551b91002ee2cb64b0", - "reference": "0a27e55a270cfe73d8cb70551b91002ee2cb64b0", + "url": "https://api.github.com/repos/pestphp/pest-plugin-arch/zipball/ebec636b97ee73936ee8485e15a59c3f5a4c21b2", + "reference": "ebec636b97ee73936ee8485e15a59c3f5a4c21b2", "shasum": "" }, "require": { @@ -11202,8 +11351,8 @@ "ta-tikoma/phpunit-architecture-test": "^0.8.4" }, "require-dev": { - "pestphp/pest": "^3.0.0", - "pestphp/pest-dev-tools": "^3.0.0" + "pestphp/pest": "^3.7.5", + "pestphp/pest-dev-tools": "^3.4.0" }, "type": "library", "extra": { @@ -11238,7 +11387,7 @@ "unit" ], "support": { - "source": "https://github.com/pestphp/pest-plugin-arch/tree/v3.0.0" + "source": "https://github.com/pestphp/pest-plugin-arch/tree/v3.1.0" }, "funding": [ { @@ -11250,7 +11399,7 @@ "type": "github" } ], - "time": "2024-09-08T23:23:55+00:00" + "time": "2025-03-30T17:28:50+00:00" }, { "name": "pestphp/pest-plugin-faker", @@ -11319,27 +11468,27 @@ }, { "name": "pestphp/pest-plugin-laravel", - "version": "v3.0.0", + "version": "v3.1.0", "source": { "type": "git", "url": "https://github.com/pestphp/pest-plugin-laravel.git", - "reference": "7dd98c0c3b3542970ec21fce80ec5c88916ac469" + "reference": "1c4e994476375c72aa7aebaaa97aa98f5d5378cd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest-plugin-laravel/zipball/7dd98c0c3b3542970ec21fce80ec5c88916ac469", - "reference": "7dd98c0c3b3542970ec21fce80ec5c88916ac469", + "url": "https://api.github.com/repos/pestphp/pest-plugin-laravel/zipball/1c4e994476375c72aa7aebaaa97aa98f5d5378cd", + "reference": "1c4e994476375c72aa7aebaaa97aa98f5d5378cd", "shasum": "" }, "require": { - "laravel/framework": "^11.22.0", - "pestphp/pest": "^3.0.0", + "laravel/framework": "^11.39.1|^12.0.0", + "pestphp/pest": "^3.7.4", "php": "^8.2.0" }, "require-dev": { - "laravel/dusk": "^8.2.5", - "orchestra/testbench": "^9.4.0", - "pestphp/pest-dev-tools": "^3.0.0" + "laravel/dusk": "^8.2.13|dev-develop", + "orchestra/testbench": "^9.9.0|^10.0.0", + "pestphp/pest-dev-tools": "^3.3.0" }, "type": "library", "extra": { @@ -11377,7 +11526,7 @@ "unit" ], "support": { - "source": "https://github.com/pestphp/pest-plugin-laravel/tree/v3.0.0" + "source": "https://github.com/pestphp/pest-plugin-laravel/tree/v3.1.0" }, "funding": [ { @@ -11389,7 +11538,7 @@ "type": "github" } ], - "time": "2024-09-08T23:32:52+00:00" + "time": "2025-01-24T13:22:39+00:00" }, { "name": "pestphp/pest-plugin-mutate", @@ -11640,16 +11789,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "2.0.0", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "c00d78fb6b29658347f9d37ebe104bffadf36299" + "reference": "9b30d6fd026b2c132b3985ce6b23bec09ab3aa68" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/c00d78fb6b29658347f9d37ebe104bffadf36299", - "reference": "c00d78fb6b29658347f9d37ebe104bffadf36299", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/9b30d6fd026b2c132b3985ce6b23bec09ab3aa68", + "reference": "9b30d6fd026b2c132b3985ce6b23bec09ab3aa68", "shasum": "" }, "require": { @@ -11681,9 +11830,9 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/2.0.0" + "source": "https://github.com/phpstan/phpdoc-parser/tree/2.1.0" }, - "time": "2024-10-13T11:29:49+00:00" + "time": "2025-02-19T13:28:12+00:00" }, { "name": "spatie/backtrace", @@ -11750,30 +11899,30 @@ }, { "name": "spatie/error-solutions", - "version": "1.1.2", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/spatie/error-solutions.git", - "reference": "d239a65235a1eb128dfa0a4e4c4ef032ea11b541" + "reference": "e495d7178ca524f2dd0fe6a1d99a1e608e1c9936" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/error-solutions/zipball/d239a65235a1eb128dfa0a4e4c4ef032ea11b541", - "reference": "d239a65235a1eb128dfa0a4e4c4ef032ea11b541", + "url": "https://api.github.com/repos/spatie/error-solutions/zipball/e495d7178ca524f2dd0fe6a1d99a1e608e1c9936", + "reference": "e495d7178ca524f2dd0fe6a1d99a1e608e1c9936", "shasum": "" }, "require": { "php": "^8.0" }, "require-dev": { - "illuminate/broadcasting": "^10.0|^11.0", - "illuminate/cache": "^10.0|^11.0", - "illuminate/support": "^10.0|^11.0", - "livewire/livewire": "^2.11|^3.3.5", + "illuminate/broadcasting": "^10.0|^11.0|^12.0", + "illuminate/cache": "^10.0|^11.0|^12.0", + "illuminate/support": "^10.0|^11.0|^12.0", + "livewire/livewire": "^2.11|^3.5.20", "openai-php/client": "^0.10.1", - "orchestra/testbench": "^7.0|8.22.3|^9.0", - "pestphp/pest": "^2.20", - "phpstan/phpstan": "^1.11", + "orchestra/testbench": "8.22.3|^9.0|^10.0", + "pestphp/pest": "^2.20|^3.0", + "phpstan/phpstan": "^2.1", "psr/simple-cache": "^3.0", "psr/simple-cache-implementation": "^3.0", "spatie/ray": "^1.28", @@ -11812,7 +11961,7 @@ ], "support": { "issues": "https://github.com/spatie/error-solutions/issues", - "source": "https://github.com/spatie/error-solutions/tree/1.1.2" + "source": "https://github.com/spatie/error-solutions/tree/1.1.3" }, "funding": [ { @@ -11820,24 +11969,24 @@ "type": "github" } ], - "time": "2024-12-11T09:51:56+00:00" + "time": "2025-02-14T12:29:50+00:00" }, { "name": "spatie/flare-client-php", - "version": "1.10.0", + "version": "1.10.1", "source": { "type": "git", "url": "https://github.com/spatie/flare-client-php.git", - "reference": "140a42b2c5d59ac4ecf8f5b493386a4f2eb28272" + "reference": "bf1716eb98bd689451b071548ae9e70738dce62f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/140a42b2c5d59ac4ecf8f5b493386a4f2eb28272", - "reference": "140a42b2c5d59ac4ecf8f5b493386a4f2eb28272", + "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/bf1716eb98bd689451b071548ae9e70738dce62f", + "reference": "bf1716eb98bd689451b071548ae9e70738dce62f", "shasum": "" }, "require": { - "illuminate/pipeline": "^8.0|^9.0|^10.0|^11.0", + "illuminate/pipeline": "^8.0|^9.0|^10.0|^11.0|^12.0", "php": "^8.0", "spatie/backtrace": "^1.6.1", "symfony/http-foundation": "^5.2|^6.0|^7.0", @@ -11881,7 +12030,7 @@ ], "support": { "issues": "https://github.com/spatie/flare-client-php/issues", - "source": "https://github.com/spatie/flare-client-php/tree/1.10.0" + "source": "https://github.com/spatie/flare-client-php/tree/1.10.1" }, "funding": [ { @@ -11889,20 +12038,20 @@ "type": "github" } ], - "time": "2024-12-02T14:30:06+00:00" + "time": "2025-02-14T13:42:06+00:00" }, { "name": "spatie/ignition", - "version": "1.15.0", + "version": "1.15.1", "source": { "type": "git", "url": "https://github.com/spatie/ignition.git", - "reference": "e3a68e137371e1eb9edc7f78ffa733f3b98991d2" + "reference": "31f314153020aee5af3537e507fef892ffbf8c85" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/e3a68e137371e1eb9edc7f78ffa733f3b98991d2", - "reference": "e3a68e137371e1eb9edc7f78ffa733f3b98991d2", + "url": "https://api.github.com/repos/spatie/ignition/zipball/31f314153020aee5af3537e507fef892ffbf8c85", + "reference": "31f314153020aee5af3537e507fef892ffbf8c85", "shasum": "" }, "require": { @@ -11915,7 +12064,7 @@ "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "require-dev": { - "illuminate/cache": "^9.52|^10.0|^11.0", + "illuminate/cache": "^9.52|^10.0|^11.0|^12.0", "mockery/mockery": "^1.4", "pestphp/pest": "^1.20|^2.0", "phpstan/extension-installer": "^1.1", @@ -11972,27 +12121,27 @@ "type": "github" } ], - "time": "2024-06-12T14:55:22+00:00" + "time": "2025-02-21T14:31:39+00:00" }, { "name": "spatie/laravel-ignition", - "version": "2.9.0", + "version": "2.9.1", "source": { "type": "git", "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "62042df15314b829d0f26e02108f559018e2aad0" + "reference": "1baee07216d6748ebd3a65ba97381b051838707a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/62042df15314b829d0f26e02108f559018e2aad0", - "reference": "62042df15314b829d0f26e02108f559018e2aad0", + "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/1baee07216d6748ebd3a65ba97381b051838707a", + "reference": "1baee07216d6748ebd3a65ba97381b051838707a", "shasum": "" }, "require": { "ext-curl": "*", "ext-json": "*", "ext-mbstring": "*", - "illuminate/support": "^10.0|^11.0", + "illuminate/support": "^10.0|^11.0|^12.0", "php": "^8.1", "spatie/ignition": "^1.15", "symfony/console": "^6.2.3|^7.0", @@ -12001,12 +12150,12 @@ "require-dev": { "livewire/livewire": "^2.11|^3.3.5", "mockery/mockery": "^1.5.1", - "openai-php/client": "^0.8.1", - "orchestra/testbench": "8.22.3|^9.0", - "pestphp/pest": "^2.34", + "openai-php/client": "^0.8.1|^0.10", + "orchestra/testbench": "8.22.3|^9.0|^10.0", + "pestphp/pest": "^2.34|^3.7", "phpstan/extension-installer": "^1.3.1", - "phpstan/phpstan-deprecation-rules": "^1.1.1", - "phpstan/phpstan-phpunit": "^1.3.16", + "phpstan/phpstan-deprecation-rules": "^1.1.1|^2.0", + "phpstan/phpstan-phpunit": "^1.3.16|^2.0", "vlucas/phpdotenv": "^5.5" }, "suggest": { @@ -12063,20 +12212,20 @@ "type": "github" } ], - "time": "2024-12-02T08:43:31+00:00" + "time": "2025-02-20T13:13:55+00:00" }, { "name": "symfony/yaml", - "version": "v7.2.0", + "version": "v7.2.5", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "099581e99f557e9f16b43c5916c26380b54abb22" + "reference": "4c4b6f4cfcd7e52053f0c8bfad0f7f30fb924912" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/099581e99f557e9f16b43c5916c26380b54abb22", - "reference": "099581e99f557e9f16b43c5916c26380b54abb22", + "url": "https://api.github.com/repos/symfony/yaml/zipball/4c4b6f4cfcd7e52053f0c8bfad0f7f30fb924912", + "reference": "4c4b6f4cfcd7e52053f0c8bfad0f7f30fb924912", "shasum": "" }, "require": { @@ -12119,7 +12268,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v7.2.0" + "source": "https://github.com/symfony/yaml/tree/v7.2.5" }, "funding": [ { @@ -12135,7 +12284,7 @@ "type": "tidelift" } ], - "time": "2024-10-23T06:56:12+00:00" + "time": "2025-03-03T07:12:39+00:00" }, { "name": "ta-tikoma/phpunit-architecture-test", diff --git a/config/invoiceshelf.php b/config/invoiceshelf.php index 8ea6d01c..f831083a 100644 --- a/config/invoiceshelf.php +++ b/config/invoiceshelf.php @@ -156,6 +156,16 @@ return [ 'ability' => '', 'model' => '', ], + [ + 'title' => 'settings.menu_title.pdf_generation', + 'group' => '', + 'name' => 'PDF Generation', + 'link' => '/admin/settings/pdf-generation', + 'icon' => 'DocumentIcon', + 'owner_only' => true, + 'ability' => '', + 'model' => '', + ], [ 'title' => 'settings.roles.title', 'group' => '', diff --git a/config/pdf.php b/config/pdf.php new file mode 100644 index 00000000..b9265d73 --- /dev/null +++ b/config/pdf.php @@ -0,0 +1,14 @@ + env('PDF_DRIVER', 'gotenberg'), + + 'gotenberg' => [ + 'host' => env('GOTENBERG_HOST', 'http://pdf:3000'), + 'papersize' => env('GOTENBERG_PAPERSIZE', '210mm 297mm'), + ], + + 'dompdf' => [], + +]; diff --git a/lang/en.json b/lang/en.json index 37b90e16..92445c8d 100644 --- a/lang/en.json +++ b/lang/en.json @@ -852,7 +852,8 @@ "payment_modes": "Payment Modes", "notes": "Notes", "exchange_rate": "Exchange Rate", - "address_information": "Address Information" + "address_information": "Address Information", + "pdf_generation": "PDF Generation" }, "address_information": { "section_description": " You can update Your Address information using form below." @@ -905,7 +906,15 @@ "pdf": { "title": "PDF Setting", "footer_text": "Footer Text", - "pdf_layout": "PDF Layout" + "pdf_layout": "PDF Layout", + "pdf_configuration": "PDF Generation Settings", + "section_description": "Change the way PDFs are generated", + "driver": "PDF Driver to use", + "papersize": "Papersize", + "papersize_hint": "Papersize in width and height (ex. \"210mm 297mm\")", + "gotenberg_host": "Gotenberg service host", + "pdf_variables_save_successfully": "PDF configuration saved successfully", + "pdf_variables_save_error": "PDF configuration could not be saved" }, "company_info": { "company_info": "Company info", diff --git a/resources/scripts/admin/admin-router.js b/resources/scripts/admin/admin-router.js index d11952e4..6a1c21d2 100644 --- a/resources/scripts/admin/admin-router.js +++ b/resources/scripts/admin/admin-router.js @@ -56,6 +56,8 @@ const UpdateApp = () => import('@/scripts/admin/views/settings/UpdateAppSetting.vue') const RolesSettings = () => import('@/scripts/admin/views/settings/RolesSettings.vue') +const PDFGenerationSettings = () => + import('@/scripts/admin/views/settings/PDFGenerationSetting.vue') // Items const ItemsIndex = () => import('@/scripts/admin/views/items/Index.vue') @@ -327,6 +329,12 @@ export default [ meta: { isOwner: true }, component: UpdateApp, }, + { + path: 'pdf-generation', + name: 'pdf.generation', + meta: { isOwner: true }, + component: PDFGenerationSettings, + }, ], }, diff --git a/resources/scripts/admin/stores/pdf-driver.js b/resources/scripts/admin/stores/pdf-driver.js new file mode 100644 index 00000000..32032484 --- /dev/null +++ b/resources/scripts/admin/stores/pdf-driver.js @@ -0,0 +1,70 @@ +const { defineStore } = window.pinia +import { handleError } from '@/scripts/helpers/error-handling' +import { useNotificationStore } from '@/scripts/stores/notification' +import axios from 'axios' + +export const usePDFDriverStore = (useWindow = false) => { + const defineStoreFunc = useWindow ? window.pinia.defineStore : defineStore + const { global } = window.i18n + + return defineStoreFunc({ + id: 'pdf-driver', + + state: () => ({ + pdfDriverConfig: null, + pdf_driver: 'dompdf', + pdf_drivers: [], + + dompdf: { + pdf_driver: '', + }, + gotenberg: { + pdf_driver: '', + gotenberg_host: '', + gotenberg_papersize: '' + } + }), + + actions: { + async fetchDrivers() { + try { + const response = await axios.get('/api/v1/pdf/drivers') + this.pdf_drivers = response.data + } catch (err) { + handleError(err) + throw err + } + }, + async fetchConfig() { + try { + const response = await axios.get('/api/v1/pdf/config') + this.pdfDriverConfig = response.data + this.pdf_driver = response.data.pdf_driver + } catch (err) { + handleError(err) + throw err + } + }, + async updateConfig(data) { + try { + const response = await axios.post('/api/v1/pdf/config', data) + const notificationStore = useNotificationStore() + if (response.data.success) { + notificationStore.showNotification({ + type: 'success', + message: global.t('settings.pdf.' + response.data.success), + }) + } else { + notificationStore.showNotification({ + type: 'error', + message: global.t('settings.pdf.' + response.data.error), + }) + } + } catch (err) { + handleError(err) + throw err + } + }, + }, + })() +} diff --git a/resources/scripts/admin/views/settings/PDFGenerationSetting.vue b/resources/scripts/admin/views/settings/PDFGenerationSetting.vue new file mode 100644 index 00000000..7ec786ac --- /dev/null +++ b/resources/scripts/admin/views/settings/PDFGenerationSetting.vue @@ -0,0 +1,72 @@ + + + diff --git a/resources/scripts/admin/views/settings/pdf-driver/DomPDFDriver.vue b/resources/scripts/admin/views/settings/pdf-driver/DomPDFDriver.vue new file mode 100644 index 00000000..332311dc --- /dev/null +++ b/resources/scripts/admin/views/settings/pdf-driver/DomPDFDriver.vue @@ -0,0 +1,117 @@ + + + diff --git a/resources/scripts/admin/views/settings/pdf-driver/GotenbergDriver.vue b/resources/scripts/admin/views/settings/pdf-driver/GotenbergDriver.vue new file mode 100644 index 00000000..4c4296d6 --- /dev/null +++ b/resources/scripts/admin/views/settings/pdf-driver/GotenbergDriver.vue @@ -0,0 +1,128 @@ + + + diff --git a/routes/api.php b/routes/api.php index a2e1ae99..1363cefe 100644 --- a/routes/api.php +++ b/routes/api.php @@ -76,6 +76,7 @@ use App\Http\Controllers\V1\Admin\Settings\GetCompanySettingsController; use App\Http\Controllers\V1\Admin\Settings\GetSettingsController; use App\Http\Controllers\V1\Admin\Settings\GetUserSettingsController; use App\Http\Controllers\V1\Admin\Settings\MailConfigurationController; +use App\Http\Controllers\V1\Admin\Settings\PDFConfigurationController; use App\Http\Controllers\V1\Admin\Settings\TaxTypesController; use App\Http\Controllers\V1\Admin\Settings\UpdateCompanySettingsController; use App\Http\Controllers\V1\Admin\Settings\UpdateSettingsController; @@ -397,6 +398,15 @@ Route::prefix('/v1')->group(function () { Route::get('/company/mail/config', GetCompanyMailConfigurationController::class); + // PDF Generation + //---------------------------------- + + Route::get('/pdf/drivers', [PDFConfigurationController::class, 'getDrivers']); + + Route::get('/pdf/config', [PDFConfigurationController::class, 'getEnvironment']); + + Route::post('/pdf/config', [PDFConfigurationController::class, 'saveEnvironment']); + Route::apiResource('notes', NotesController::class); // Tax Types