From b92e95efb37de4df8c48fd6634f4ead4adcf6748 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 19 Sep 2023 10:05:13 +1000 Subject: [PATCH] Working on logic for custom designs --- app/Http/Controllers/PreviewController.php | 15 +++ .../PreviewPurchaseOrderController.php | 6 + app/Jobs/Entity/CreateEntityPdf.php | 3 + app/Jobs/Entity/CreateRawPdf.php | 3 + app/Jobs/Vendor/CreatePurchaseOrderPdf.php | 4 + app/Repositories/ActivityRepository.php | 4 + app/Services/Client/Statement.php | 10 +- app/Services/Invoice/GenerateDeliveryNote.php | 5 + .../Designs/Utilities/DesignHelpers.php | 3 +- app/Services/PdfMaker/PdfMaker.php | 16 +-- app/Services/Preview/StubBuilder.php | 4 + app/Utils/PhantomJS/Phantom.php | 2 + composer.lock | 112 +++++++++--------- 13 files changed, 124 insertions(+), 63 deletions(-) diff --git a/app/Http/Controllers/PreviewController.php b/app/Http/Controllers/PreviewController.php index c99a4a400fe8..dad299106c93 100644 --- a/app/Http/Controllers/PreviewController.php +++ b/app/Http/Controllers/PreviewController.php @@ -110,6 +110,10 @@ class PreviewController extends BaseController ]), 'variables' => $html->generateLabelsAndValues(), 'process_markdown' => $entity_obj->client->company->markdown_enabled, + 'options' => [ + 'client' => $entity_obj->client, + 'entity' => $entity_obj, + ] ]; $design = new Design(request()->design['name']); @@ -274,6 +278,9 @@ class PreviewController extends BaseController 'options' => [ 'all_pages_header' => $entity_obj->client->getSetting('all_pages_header'), 'all_pages_footer' => $entity_obj->client->getSetting('all_pages_footer'), + 'client' => $entity_obj->client, + 'entity' => $entity_obj, + 'variables' => $variables, ], 'process_markdown' => $entity_obj->client->company->markdown_enabled, ]; @@ -375,6 +382,10 @@ class PreviewController extends BaseController ]), 'variables' => $html->generateLabelsAndValues(), 'process_markdown' => $invitation->invoice->client->company->markdown_enabled, + 'options' => [ + 'client' => $invitation->invoice->client, + 'entity' => $invitation->invoice, + ] ]; $maker = new PdfMaker($state); @@ -485,6 +496,10 @@ class PreviewController extends BaseController ]), 'variables' => $html->generateLabelsAndValues(), 'process_markdown' => $invoice->client->company->markdown_enabled, + 'options' => [ + 'client' => $invitation->invoice->client, + 'entity' => $invitation->invoice, + ] ]; $maker = new PdfMaker($state); diff --git a/app/Http/Controllers/PreviewPurchaseOrderController.php b/app/Http/Controllers/PreviewPurchaseOrderController.php index 81d823cf254a..660ea5f6e9e6 100644 --- a/app/Http/Controllers/PreviewPurchaseOrderController.php +++ b/app/Http/Controllers/PreviewPurchaseOrderController.php @@ -232,6 +232,12 @@ class PreviewPurchaseOrderController extends BaseController '$product' => $design->design->product, ]), 'variables' => $html->generateLabelsAndValues(), + 'options' => [ + 'client' => null, + 'vendor' => $entity_obj->vendor, + 'entity' => $entity_obj, + 'variables' => $html->generateLabelsAndValues(), + ], 'process_markdown' => $entity_obj->company->markdown_enabled, ]; diff --git a/app/Jobs/Entity/CreateEntityPdf.php b/app/Jobs/Entity/CreateEntityPdf.php index 7ef89d2c3e81..5210cf236192 100644 --- a/app/Jobs/Entity/CreateEntityPdf.php +++ b/app/Jobs/Entity/CreateEntityPdf.php @@ -170,6 +170,9 @@ class CreateEntityPdf implements ShouldQueue 'options' => [ 'all_pages_header' => $this->entity->client->getSetting('all_pages_header'), 'all_pages_footer' => $this->entity->client->getSetting('all_pages_footer'), + 'client' => $this->client, + 'entity' => $this->entity, + 'variables' => $variables, ], 'process_markdown' => $this->entity->client->company->markdown_enabled, ]; diff --git a/app/Jobs/Entity/CreateRawPdf.php b/app/Jobs/Entity/CreateRawPdf.php index 593566577b9b..1be6cd24e114 100644 --- a/app/Jobs/Entity/CreateRawPdf.php +++ b/app/Jobs/Entity/CreateRawPdf.php @@ -157,6 +157,9 @@ class CreateRawPdf implements ShouldQueue 'options' => [ 'all_pages_header' => $this->entity->client->getSetting('all_pages_header'), 'all_pages_footer' => $this->entity->client->getSetting('all_pages_footer'), + 'client' => $this->entity->client, + 'entity' => $this->entity, + 'variables' => $variables, ], 'process_markdown' => $this->entity->client->company->markdown_enabled, ]; diff --git a/app/Jobs/Vendor/CreatePurchaseOrderPdf.php b/app/Jobs/Vendor/CreatePurchaseOrderPdf.php index 5c8432603a08..8238602e2002 100644 --- a/app/Jobs/Vendor/CreatePurchaseOrderPdf.php +++ b/app/Jobs/Vendor/CreatePurchaseOrderPdf.php @@ -154,6 +154,10 @@ class CreatePurchaseOrderPdf implements ShouldQueue 'options' => [ 'all_pages_header' => $this->entity->company->getSetting('all_pages_header'), 'all_pages_footer' => $this->entity->company->getSetting('all_pages_footer'), + 'client' => null, + 'vendor' => $this->vendor, + 'entity' => $this->entity, + 'variables' => $variables, ], 'process_markdown' => $this->entity->company->markdown_enabled, ]; diff --git a/app/Repositories/ActivityRepository.php b/app/Repositories/ActivityRepository.php index 3ea31c3c7b3d..72a9091b8edf 100644 --- a/app/Repositories/ActivityRepository.php +++ b/app/Repositories/ActivityRepository.php @@ -163,6 +163,8 @@ class ActivityRepository extends BaseRepository 'options' => [ 'all_pages_header' => $entity->vendor->getSetting('all_pages_header'), 'all_pages_footer' => $entity->vendor->getSetting('all_pages_footer'), + 'vendor' => $entity->vendor, + 'entity' => $entity, ], 'process_markdown' => $entity->vendor->company->markdown_enabled, ]; @@ -233,6 +235,8 @@ class ActivityRepository extends BaseRepository 'options' => [ 'all_pages_header' => $entity->client->getSetting('all_pages_header'), 'all_pages_footer' => $entity->client->getSetting('all_pages_footer'), + 'client' => $entity->client, + 'entity' => $entity, ], 'process_markdown' => $entity->client->company->markdown_enabled, ]; diff --git a/app/Services/Client/Statement.php b/app/Services/Client/Statement.php index 4fe0ccc36fbe..dae872c774bb 100644 --- a/app/Services/Client/Statement.php +++ b/app/Services/Client/Statement.php @@ -76,7 +76,15 @@ class Statement 'aging' => $this->getAging(), ], \App\Services\PdfMaker\Design::STATEMENT), 'variables' => $variables, - 'options' => [], + 'options' => [ + 'client' => $this->client, + 'entity' => $this->entity, + 'variables' => $variables, + 'invoices' => $this->getInvoices(), + 'payments' => $this->getPayments(), + 'credits' => $this->getCredits(), + 'aging' => $this->getAging(), + ], 'process_markdown' => $this->entity->client->company->markdown_enabled, ]; diff --git a/app/Services/Invoice/GenerateDeliveryNote.php b/app/Services/Invoice/GenerateDeliveryNote.php index 86ba365545c5..681891138811 100644 --- a/app/Services/Invoice/GenerateDeliveryNote.php +++ b/app/Services/Invoice/GenerateDeliveryNote.php @@ -70,6 +70,11 @@ class GenerateDeliveryNote 'contact' => $this->contact, ], 'delivery_note'), 'variables' => $html->generateLabelsAndValues(), + 'options' => [ + 'client' => $this->invoice->client, + 'entity' => $this->invoice, + 'contact' => $this->contact, + ], 'process_markdown' => $this->invoice->client->company->markdown_enabled, ]; diff --git a/app/Services/PdfMaker/Designs/Utilities/DesignHelpers.php b/app/Services/PdfMaker/Designs/Utilities/DesignHelpers.php index 89aa0ea21420..74d9afb3ef8c 100644 --- a/app/Services/PdfMaker/Designs/Utilities/DesignHelpers.php +++ b/app/Services/PdfMaker/Designs/Utilities/DesignHelpers.php @@ -246,7 +246,8 @@ trait DesignHelpers }); "; - $javascript = 'document.addEventListener("DOMContentLoaded",function(){document.querySelectorAll("#product-table > tbody > tr > td, #task-table > tbody > tr > td, #delivery-note-table > tbody > tr > td").forEach(t=>{if(""!==t.innerText){let e=t.getAttribute("data-ref").slice(0,-3);document.querySelector(`th[data-ref="${e}-th"]`).removeAttribute("hidden")}}),document.querySelectorAll("#product-table > tbody > tr > td, #task-table > tbody > tr > td, #delivery-note-table > tbody > tr > td").forEach(t=>{let e=t.getAttribute("data-ref").slice(0,-3);(e=document.querySelector(`th[data-ref="${e}-th"]`)).hasAttribute("hidden")&&""==t.innerText&&t.setAttribute("hidden","true")})},!1);'; + // $javascript = 'document.addEventListener("DOMContentLoaded",function(){document.querySelectorAll("#product-table > tbody > tr > td, #task-table > tbody > tr > td, #delivery-note-table > tbody > tr > td").forEach(t=>{if(""!==t.innerText){let e=t.getAttribute("data-ref").slice(0,-3);document.querySelector(`th[data-ref="${e}-th"]`).removeAttribute("hidden")}}),document.querySelectorAll("#product-table > tbody > tr > td, #task-table > tbody > tr > td, #delivery-note-table > tbody > tr > td").forEach(t=>{let e=t.getAttribute("data-ref").slice(0,-3);(e=document.querySelector(`th[data-ref="${e}-th"]`)).hasAttribute("hidden")&&""==t.innerText&&t.setAttribute("hidden","true")})},!1);'; + $javascript = 'document.addEventListener("DOMContentLoaded",function(){document.querySelectorAll("#custom-table > tbody > tr >td, #product-table > tbody > tr > td, #task-table > tbody > tr > td, #delivery-note-table > tbody > tr > td").forEach(t=>{if(""!==t.innerText){let e=t.getAttribute("data-ref").slice(0,-3);document.querySelector(`th[data-ref="${e}-th"]`).removeAttribute("hidden")}}),document.querySelectorAll("#custom-table > tbody > tr > td, #product-table > tbody > tr > td, #task-table > tbody > tr > td, #delivery-note-table > tbody > tr > td").forEach(t=>{let e=t.getAttribute("data-ref").slice(0,-3);(e=document.querySelector(`th[data-ref="${e}-th"]`)).hasAttribute("hidden")&&""==t.innerText&&t.setAttribute("hidden","true")})},!1);'; // Previously we've been decoding the HTML on the backend and XML parsing isn't good options because it requires, // strict & valid HTML to even output/decode. Decoding is now done on the frontend with this piece of Javascript. diff --git a/app/Services/PdfMaker/PdfMaker.php b/app/Services/PdfMaker/PdfMaker.php index 505327c126c8..ecb00c462291 100644 --- a/app/Services/PdfMaker/PdfMaker.php +++ b/app/Services/PdfMaker/PdfMaker.php @@ -74,19 +74,21 @@ class PdfMaker $this->updateElementProperties($this->data['template']); } - if(isset($this->data['template'])) { - $contents= $this->document->getElementsByTagName('twig'); + if(isset($this->options)) { + $contents= $this->document->getElementsByTagName('ninja'); foreach ($contents as $content) { - - $template = $content->ownerDocument->saveHTML($content); + + $content->removeChild($content->firstChild); + //$template = $content->ownerDocument->saveHTML($content); + $template = $content->ownerDocument->saveHTML($content->removeChild($content->firstChild)); $loader = new \Twig\Loader\FilesystemLoader(storage_path()); $twig = new \Twig\Environment($loader); $template = $twig->createTemplate($template); - $template = $template->render([ - 'invoice' => \App\Models\Invoice::first()->toArray(), - ]); + $template = $template->render($this->options); + + nlog($template); $f = $this->document->createDocumentFragment(); $f->appendXML($template); diff --git a/app/Services/Preview/StubBuilder.php b/app/Services/Preview/StubBuilder.php index 8d3cce3076f9..33568a6f57b1 100644 --- a/app/Services/Preview/StubBuilder.php +++ b/app/Services/Preview/StubBuilder.php @@ -192,6 +192,10 @@ class StubBuilder ]), 'variables' => $html->generateLabelsAndValues(), 'process_markdown' => $this->company->markdown_enabled, + 'options' => [ + 'client' => $this->recipient, + 'entity' => $this->entity, + ], ]; $maker = new PdfMaker($state); diff --git a/app/Utils/PhantomJS/Phantom.php b/app/Utils/PhantomJS/Phantom.php index a9a6d3c31305..d0acd053b570 100644 --- a/app/Utils/PhantomJS/Phantom.php +++ b/app/Utils/PhantomJS/Phantom.php @@ -214,6 +214,8 @@ class Phantom 'options' => [ 'all_pages_header' => $entity_obj->client->getSetting('all_pages_header'), 'all_pages_footer' => $entity_obj->client->getSetting('all_pages_footer'), + 'client' => $entity_obj->client, + 'entity' => $entity_obj, ], 'process_markdown' => $entity_obj->client->company->markdown_enabled, ]; diff --git a/composer.lock b/composer.lock index 774034308467..533b512f7473 100644 --- a/composer.lock +++ b/composer.lock @@ -525,16 +525,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.281.7", + "version": "3.281.9", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "926cea9a41a545ca9801ac304f2a9ffd23ac68c9" + "reference": "9e744fd8925f7908fbc4dcea91bd785aba308587" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/926cea9a41a545ca9801ac304f2a9ffd23ac68c9", - "reference": "926cea9a41a545ca9801ac304f2a9ffd23ac68c9", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/9e744fd8925f7908fbc4dcea91bd785aba308587", + "reference": "9e744fd8925f7908fbc4dcea91bd785aba308587", "shasum": "" }, "require": { @@ -614,9 +614,9 @@ "support": { "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.281.7" + "source": "https://github.com/aws/aws-sdk-php/tree/3.281.9" }, - "time": "2023-09-14T18:05:11+00:00" + "time": "2023-09-18T18:11:01+00:00" }, { "name": "bacon/bacon-qr-code", @@ -2586,16 +2586,16 @@ }, { "name": "google/apiclient-services", - "version": "v0.315.0", + "version": "v0.316.0", "source": { "type": "git", "url": "https://github.com/googleapis/google-api-php-client-services.git", - "reference": "9fe675be642888cded64be861891901f092ab72d" + "reference": "08e3579d94363716cef2bc79643f3d30fdd914b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/googleapis/google-api-php-client-services/zipball/9fe675be642888cded64be861891901f092ab72d", - "reference": "9fe675be642888cded64be861891901f092ab72d", + "url": "https://api.github.com/repos/googleapis/google-api-php-client-services/zipball/08e3579d94363716cef2bc79643f3d30fdd914b5", + "reference": "08e3579d94363716cef2bc79643f3d30fdd914b5", "shasum": "" }, "require": { @@ -2624,9 +2624,9 @@ ], "support": { "issues": "https://github.com/googleapis/google-api-php-client-services/issues", - "source": "https://github.com/googleapis/google-api-php-client-services/tree/v0.315.0" + "source": "https://github.com/googleapis/google-api-php-client-services/tree/v0.316.0" }, - "time": "2023-09-10T01:10:37+00:00" + "time": "2023-09-17T01:06:13+00:00" }, { "name": "google/auth", @@ -3625,16 +3625,16 @@ }, { "name": "imdhemy/google-play-billing", - "version": "1.4.2", + "version": "1.5.0", "source": { "type": "git", "url": "https://github.com/imdhemy/google-play-billing.git", - "reference": "d318db28efafb56ac8954c9f651fbe6ac367d637" + "reference": "a227174a71bc5d7b3e5f9aa4fcad2c4a9a11a8a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/imdhemy/google-play-billing/zipball/d318db28efafb56ac8954c9f651fbe6ac367d637", - "reference": "d318db28efafb56ac8954c9f651fbe6ac367d637", + "url": "https://api.github.com/repos/imdhemy/google-play-billing/zipball/a227174a71bc5d7b3e5f9aa4fcad2c4a9a11a8a4", + "reference": "a227174a71bc5d7b3e5f9aa4fcad2c4a9a11a8a4", "shasum": "" }, "require": { @@ -3670,9 +3670,9 @@ "description": "Google Play Billing", "support": { "issues": "https://github.com/imdhemy/google-play-billing/issues", - "source": "https://github.com/imdhemy/google-play-billing/tree/1.4.2" + "source": "https://github.com/imdhemy/google-play-billing/tree/1.5.0" }, - "time": "2023-07-04T16:00:39+00:00" + "time": "2023-09-17T12:33:33+00:00" }, { "name": "imdhemy/laravel-purchases", @@ -8062,16 +8062,16 @@ }, { "name": "phpseclib/phpseclib", - "version": "3.0.21", + "version": "3.0.23", "source": { "type": "git", "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "4580645d3fc05c189024eb3b834c6c1e4f0f30a1" + "reference": "866cc78fbd82462ffd880e3f65692afe928bed50" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/4580645d3fc05c189024eb3b834c6c1e4f0f30a1", - "reference": "4580645d3fc05c189024eb3b834c6c1e4f0f30a1", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/866cc78fbd82462ffd880e3f65692afe928bed50", + "reference": "866cc78fbd82462ffd880e3f65692afe928bed50", "shasum": "" }, "require": { @@ -8152,7 +8152,7 @@ ], "support": { "issues": "https://github.com/phpseclib/phpseclib/issues", - "source": "https://github.com/phpseclib/phpseclib/tree/3.0.21" + "source": "https://github.com/phpseclib/phpseclib/tree/3.0.23" }, "funding": [ { @@ -8168,20 +8168,20 @@ "type": "tidelift" } ], - "time": "2023-07-09T15:24:48+00:00" + "time": "2023-09-18T17:22:01+00:00" }, { "name": "phpstan/phpdoc-parser", - "version": "1.24.0", + "version": "1.24.1", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "3510b0a6274cc42f7219367cb3abfc123ffa09d6" + "reference": "9f854d275c2dbf84915a5c0ec9a2d17d2cd86b01" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/3510b0a6274cc42f7219367cb3abfc123ffa09d6", - "reference": "3510b0a6274cc42f7219367cb3abfc123ffa09d6", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/9f854d275c2dbf84915a5c0ec9a2d17d2cd86b01", + "reference": "9f854d275c2dbf84915a5c0ec9a2d17d2cd86b01", "shasum": "" }, "require": { @@ -8213,9 +8213,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/1.24.0" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.1" }, - "time": "2023-09-07T20:46:32+00:00" + "time": "2023-09-18T12:18:02+00:00" }, { "name": "pragmarx/google2fa", @@ -8793,16 +8793,16 @@ }, { "name": "psy/psysh", - "version": "v0.11.20", + "version": "v0.11.21", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "0fa27040553d1d280a67a4393194df5228afea5b" + "reference": "bcb22101107f3bf770523b65630c9d547f60c540" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/0fa27040553d1d280a67a4393194df5228afea5b", - "reference": "0fa27040553d1d280a67a4393194df5228afea5b", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/bcb22101107f3bf770523b65630c9d547f60c540", + "reference": "bcb22101107f3bf770523b65630c9d547f60c540", "shasum": "" }, "require": { @@ -8832,6 +8832,10 @@ "extra": { "branch-alias": { "dev-main": "0.11.x-dev" + }, + "bamarni-bin": { + "bin-links": false, + "forward-command": false } }, "autoload": { @@ -8863,9 +8867,9 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.11.20" + "source": "https://github.com/bobthecow/psysh/tree/v0.11.21" }, - "time": "2023-07-31T14:32:22+00:00" + "time": "2023-09-17T21:15:54+00:00" }, { "name": "pusher/pusher-php-server", @@ -15149,16 +15153,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.26.1", + "version": "v3.27.0", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "d023ba6684055f6ea1da1352d8a02baca0426983" + "reference": "e73ccaae1208f017bb7860986eebb3da48bd25d6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/d023ba6684055f6ea1da1352d8a02baca0426983", - "reference": "d023ba6684055f6ea1da1352d8a02baca0426983", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/e73ccaae1208f017bb7860986eebb3da48bd25d6", + "reference": "e73ccaae1208f017bb7860986eebb3da48bd25d6", "shasum": "" }, "require": { @@ -15232,7 +15236,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.26.1" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.27.0" }, "funding": [ { @@ -15240,7 +15244,7 @@ "type": "github" } ], - "time": "2023-09-08T19:09:07+00:00" + "time": "2023-09-17T14:37:54+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -15864,16 +15868,16 @@ }, { "name": "phpmyadmin/sql-parser", - "version": "5.8.0", + "version": "5.8.1", "source": { "type": "git", "url": "https://github.com/phpmyadmin/sql-parser.git", - "reference": "db1b3069b5dbc220d393d67ff911e0ae76732755" + "reference": "b877ee6262a00f0f498da5e01335e8a5dc01d203" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpmyadmin/sql-parser/zipball/db1b3069b5dbc220d393d67ff911e0ae76732755", - "reference": "db1b3069b5dbc220d393d67ff911e0ae76732755", + "url": "https://api.github.com/repos/phpmyadmin/sql-parser/zipball/b877ee6262a00f0f498da5e01335e8a5dc01d203", + "reference": "b877ee6262a00f0f498da5e01335e8a5dc01d203", "shasum": "" }, "require": { @@ -15895,7 +15899,7 @@ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", "psalm/plugin-phpunit": "^0.16.1", "vimeo/psalm": "^4.11", - "zumba/json-serializer": "^3.0" + "zumba/json-serializer": "~3.0.2" }, "suggest": { "ext-mbstring": "For best performance", @@ -15947,7 +15951,7 @@ "type": "other" } ], - "time": "2023-06-05T18:19:38+00:00" + "time": "2023-09-15T18:21:22+00:00" }, { "name": "phpstan/phpstan", @@ -16868,16 +16872,16 @@ }, { "name": "sebastian/exporter", - "version": "5.0.1", + "version": "5.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "32ff03d078fed1279c4ec9a407d08c5e9febb480" + "reference": "c3fa8483f9539b190f7cd4bfc4a07631dd1df344" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/32ff03d078fed1279c4ec9a407d08c5e9febb480", - "reference": "32ff03d078fed1279c4ec9a407d08c5e9febb480", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/c3fa8483f9539b190f7cd4bfc4a07631dd1df344", + "reference": "c3fa8483f9539b190f7cd4bfc4a07631dd1df344", "shasum": "" }, "require": { @@ -16934,7 +16938,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", "security": "https://github.com/sebastianbergmann/exporter/security/policy", - "source": "https://github.com/sebastianbergmann/exporter/tree/5.0.1" + "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.0" }, "funding": [ { @@ -16942,7 +16946,7 @@ "type": "github" } ], - "time": "2023-09-08T04:46:58+00:00" + "time": "2023-09-18T07:15:37+00:00" }, { "name": "sebastian/global-state",