From 5372c61f08ee4a0a8c3179af6ba9667243e8a548 Mon Sep 17 00:00:00 2001 From: Lukasz Bajsarowicz Date: Fri, 18 Dec 2020 23:20:24 +0100 Subject: [PATCH 001/104] Bug Fix: Add missing return statement --- .../Controller/Adminhtml/Config/EnableAdminUsage.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/AdminAnalytics/Controller/Adminhtml/Config/EnableAdminUsage.php b/app/code/Magento/AdminAnalytics/Controller/Adminhtml/Config/EnableAdminUsage.php index f70dd57aa59d6..6e3270fea605d 100644 --- a/app/code/Magento/AdminAnalytics/Controller/Adminhtml/Config/EnableAdminUsage.php +++ b/app/code/Magento/AdminAnalytics/Controller/Adminhtml/Config/EnableAdminUsage.php @@ -89,7 +89,7 @@ private function markUserNotified(): ResultInterface public function execute() { $this->enableAdminUsage(); - $this->markUserNotified(); + return $this->markUserNotified(); } /** From 504ba5ae7477482c9df047a653a3d666ea0abb02 Mon Sep 17 00:00:00 2001 From: Lukasz Bajsarowicz Date: Tue, 22 Dec 2020 11:15:01 +0100 Subject: [PATCH 002/104] Unit Test: Verify return type --- .../Adminhtml/Config/EnableAdminUsageTest.php | 128 ++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 app/code/Magento/AdminAnalytics/Test/Unit/Controller/Adminhtml/Config/EnableAdminUsageTest.php diff --git a/app/code/Magento/AdminAnalytics/Test/Unit/Controller/Adminhtml/Config/EnableAdminUsageTest.php b/app/code/Magento/AdminAnalytics/Test/Unit/Controller/Adminhtml/Config/EnableAdminUsageTest.php new file mode 100644 index 0000000000000..3a0e894ca3578 --- /dev/null +++ b/app/code/Magento/AdminAnalytics/Test/Unit/Controller/Adminhtml/Config/EnableAdminUsageTest.php @@ -0,0 +1,128 @@ +configMock = $this->getMockBuilder(Config::class) + ->disableOriginalConstructor() + ->onlyMethods(['setDataByPath', 'save']) + ->getMock(); + + $configFactory = $this->getMockBuilder(ConfigFactory::class) + ->disableOriginalConstructor() + ->onlyMethods(['create']) + ->getMock(); + + $configFactory->method('create') + ->willReturn($this->configMock); + + $this->productMetadataMock = $this->getMockBuilder(ProductMetadataInterface::class) + ->onlyMethods(['getVersion']) + ->getMockForAbstractClass(); + + $this->productMetadataMock->method('getVersion') + ->willReturn(self::STUB_PRODUCT_VERSION); + + $this->notificationLoggerMock = $this->getMockBuilder(NotificationLogger::class) + ->disableOriginalConstructor() + ->onlyMethods(['log']) + ->getMock(); + + $this->resultFactoryMock = $this->getMockBuilder(ResultFactory::class) + ->disableOriginalConstructor() + ->onlyMethods(['create']) + ->getMock(); + + $this->resultMock = $this->getMockBuilder(JsonResult::class) + ->disableOriginalConstructor() + ->onlyMethods(['setData']) + ->getMock(); + + $this->resultFactoryMock->method('create') + ->with(ResultFactory::TYPE_JSON) + ->willReturn($this->resultMock); + + $this->controller = $objectManager->getObject(EnableAdminUsage::class, [ + 'configFactory' => $configFactory, + 'productMetadata' => $this->productMetadataMock, + 'notificationLogger' => $this->notificationLoggerMock, + 'resultFactory' => $this->resultFactoryMock + ]); + } + + /** + * If Controller returns `null`, no data is passed to the browser + */ + public function testResponseAfterAdminUsageChange() + { + // Given + $this->resultMock->method('setData')->willReturnSelf(); + + // When + $response = $this->controller->execute(); + + // Then + $this->assertInstanceOf(ResultInterface::class, $response); + } + + public function testResponseWhenExceptionThrown() + { + $this->markTestSkipped('magento/magento2#31356 Exceptions are not handled'); + + $this->configMock->method('setDataByPath') + ->willThrowException( + new \Exception('System Exception') + ); + + // When + $response = $this->controller->execute(); + + // Then + $this->assertInstanceOf(ResultInterface::class, $response); + } +} From 70661a9239ae3bac777ba91d645d8af777479393 Mon Sep 17 00:00:00 2001 From: Lukasz Bajsarowicz Date: Tue, 22 Dec 2020 13:44:57 +0100 Subject: [PATCH 003/104] Add reference to the Dev Experience issue --- .../Unit/Controller/Adminhtml/Config/EnableAdminUsageTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/AdminAnalytics/Test/Unit/Controller/Adminhtml/Config/EnableAdminUsageTest.php b/app/code/Magento/AdminAnalytics/Test/Unit/Controller/Adminhtml/Config/EnableAdminUsageTest.php index 3a0e894ca3578..0a83a1a35dc02 100644 --- a/app/code/Magento/AdminAnalytics/Test/Unit/Controller/Adminhtml/Config/EnableAdminUsageTest.php +++ b/app/code/Magento/AdminAnalytics/Test/Unit/Controller/Adminhtml/Config/EnableAdminUsageTest.php @@ -112,7 +112,7 @@ public function testResponseAfterAdminUsageChange() public function testResponseWhenExceptionThrown() { - $this->markTestSkipped('magento/magento2#31356 Exceptions are not handled'); + $this->markTestSkipped('magento/magento2#31393 Lack of exception handling'); $this->configMock->method('setDataByPath') ->willThrowException( From c2e036823da72f352712bbf76d52d2d13aca516b Mon Sep 17 00:00:00 2001 From: Erfan Date: Fri, 12 Mar 2021 11:33:34 +0800 Subject: [PATCH 004/104] Added attribute crossorigin to head.xsd for linkTypes --- lib/internal/Magento/Framework/View/Layout/etc/head.xsd | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/internal/Magento/Framework/View/Layout/etc/head.xsd b/lib/internal/Magento/Framework/View/Layout/etc/head.xsd index 51acc5789a4f8..14aa4fdc9cb87 100644 --- a/lib/internal/Magento/Framework/View/Layout/etc/head.xsd +++ b/lib/internal/Magento/Framework/View/Layout/etc/head.xsd @@ -20,6 +20,14 @@ + + + + + + + + From 08220a352a58ed2bb1038467a87912a7f3af4652 Mon Sep 17 00:00:00 2001 From: Erfan Date: Wed, 17 Mar 2021 09:38:51 +0800 Subject: [PATCH 005/104] Added attribute integrity to head.xsd for linkTypes As documented here: https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity --- lib/internal/Magento/Framework/View/Layout/etc/head.xsd | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/internal/Magento/Framework/View/Layout/etc/head.xsd b/lib/internal/Magento/Framework/View/Layout/etc/head.xsd index 14aa4fdc9cb87..4ecbf81ee32aa 100644 --- a/lib/internal/Magento/Framework/View/Layout/etc/head.xsd +++ b/lib/internal/Magento/Framework/View/Layout/etc/head.xsd @@ -20,6 +20,7 @@ + From 4966d5fb433184469afadcca87d1aaa857decc66 Mon Sep 17 00:00:00 2001 From: silinmykola Date: Mon, 28 Jun 2021 19:30:18 +0300 Subject: [PATCH 006/104] 33040 add is subscription enabled checking to new action controller --- .../Controller/Subscriber/NewAction.php | 29 ++++++++++--- .../Controller/Subscriber/NewActionTest.php | 43 +++++++++++++++++-- 2 files changed, 63 insertions(+), 9 deletions(-) diff --git a/app/code/Magento/Newsletter/Controller/Subscriber/NewAction.php b/app/code/Magento/Newsletter/Controller/Subscriber/NewAction.php index c27a4db926d06..ddac601fae371 100644 --- a/app/code/Magento/Newsletter/Controller/Subscriber/NewAction.php +++ b/app/code/Magento/Newsletter/Controller/Subscriber/NewAction.php @@ -4,6 +4,8 @@ * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ +declare(strict_types=1); + namespace Magento\Newsletter\Controller\Subscriber; use Magento\Customer\Api\AccountManagementInterface as CustomerAccountManagement; @@ -23,6 +25,7 @@ use Magento\Newsletter\Model\SubscriptionManagerInterface; use Magento\Store\Model\ScopeInterface; use Magento\Store\Model\StoreManagerInterface; +use Magento\Newsletter\Model\Config as NewsletterConfig; use Magento\Newsletter\Model\SubscriberFactory; /** @@ -42,6 +45,11 @@ class NewAction extends SubscriberController implements HttpPostActionInterface */ private $emailValidator; + /** + * @var NewsletterConfig + */ + private $newsletterConfig; + /** * @var SubscriptionManagerInterface */ @@ -57,7 +65,8 @@ class NewAction extends SubscriberController implements HttpPostActionInterface * @param CustomerUrl $customerUrl * @param CustomerAccountManagement $customerAccountManagement * @param SubscriptionManagerInterface $subscriptionManager - * @param EmailValidator $emailValidator + * @param EmailValidator|null $emailValidator + * @param NewsletterConfig|null $newsletterConfig */ public function __construct( Context $context, @@ -67,11 +76,13 @@ public function __construct( CustomerUrl $customerUrl, CustomerAccountManagement $customerAccountManagement, SubscriptionManagerInterface $subscriptionManager, - EmailValidator $emailValidator = null + EmailValidator $emailValidator = null, + NewsletterConfig $newsletterConfig = null ) { $this->customerAccountManagement = $customerAccountManagement; $this->subscriptionManager = $subscriptionManager; $this->emailValidator = $emailValidator ?: ObjectManager::getInstance()->get(EmailValidator::class); + $this->newsletterConfig = $newsletterConfig?: ObjectManager::getInstance()->get(NewsletterConfig::class); parent::__construct( $context, $subscriberFactory, @@ -85,8 +96,9 @@ public function __construct( * Validates that the email address isn't being used by a different account. * * @param string $email - * @throws LocalizedException + * * @return void + * @throws LocalizedException */ protected function validateEmailAvailable($email) { @@ -129,8 +141,9 @@ protected function validateGuestSubscription() * Validates the format of the email address * * @param string $email - * @throws LocalizedException + * * @return void + * @throws LocalizedException */ protected function validateEmailFormat($email) { @@ -146,7 +159,10 @@ protected function validateEmailFormat($email) */ public function execute() { - if ($this->getRequest()->isPost() && $this->getRequest()->getPost('email')) { + if ($this->getRequest()->isPost() + && $this->getRequest()->getPost('email') + && $this->newsletterConfig->isActive() + ) { $email = (string)$this->getRequest()->getPost('email'); try { @@ -183,6 +199,7 @@ public function execute() /** @var Redirect $redirect */ $redirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT); $redirectUrl = $this->_redirect->getRedirectUrl(); + return $redirect->setUrl($redirectUrl); } @@ -190,6 +207,7 @@ public function execute() * Get customer id from session if he is owner of the email * * @param string $email + * * @return int|null */ private function getSessionCustomerId(string $email): ?int @@ -210,6 +228,7 @@ private function getSessionCustomerId(string $email): ?int * Get success message * * @param int $status + * * @return Phrase */ private function getSuccessMessage(int $status): Phrase diff --git a/dev/tests/integration/testsuite/Magento/Newsletter/Controller/Subscriber/NewActionTest.php b/dev/tests/integration/testsuite/Magento/Newsletter/Controller/Subscriber/NewActionTest.php index fc1aad57e57e7..5f66a90421f94 100644 --- a/dev/tests/integration/testsuite/Magento/Newsletter/Controller/Subscriber/NewActionTest.php +++ b/dev/tests/integration/testsuite/Magento/Newsletter/Controller/Subscriber/NewActionTest.php @@ -7,6 +7,8 @@ namespace Magento\Newsletter\Controller\Subscriber; +use Exception; +use Laminas\Stdlib\Parameters; use Magento\Customer\Api\CustomerRepositoryInterface; use Magento\Customer\Model\Session; use Magento\Customer\Model\Url; @@ -14,7 +16,6 @@ use Magento\Newsletter\Model\ResourceModel\Subscriber as SubscriberResource; use Magento\Newsletter\Model\ResourceModel\Subscriber\CollectionFactory; use Magento\TestFramework\TestCase\AbstractController; -use Laminas\Stdlib\Parameters; /** * Class checks subscription behaviour from frontend @@ -24,6 +25,9 @@ */ class NewActionTest extends AbstractController { + /** @var CustomerRepositoryInterface */ + private $customerRepository; + /** @var Session */ private $session; @@ -36,9 +40,6 @@ class NewActionTest extends AbstractController /** @var string|null */ private $subscriberToDelete; - /** @var CustomerRepositoryInterface */ - private $customerRepository; - /** @var Url */ private $customerUrl; @@ -84,6 +85,38 @@ public function testNewAction(string $email, string $expectedMessage): void $this->performAsserts($expectedMessage); } + /** + * @magentoConfigFixture newsletter/general/active 1 + * + * @return void + */ + public function testNewActionWithSubscriptionConfigEnabled(): void + { + $email = 'good_subscription@example.com'; + $this->subscriberToDelete = $email; + $this->prepareRequest($email); + $this->dispatch('newsletter/subscriber/new'); + $subscriberCollection = $this->subscriberCollectionFactory->create(); + $subscriberCollection->addFieldToFilter('subscriber_email', $email)->setPageSize(1); + $this->assertEquals(1, count($subscriberCollection)); + $this->assertEquals($email, $subscriberCollection->getFirstItem()->getEmail()); + } + + /** + * @magentoConfigFixture newsletter/general/active 0 + * + * @return void + */ + public function testNewActionWithSubscriptionConfigDisabled(): void + { + $email = 'bad_subscription@example.com'; + $this->prepareRequest($email); + $this->dispatch('newsletter/subscriber/new'); + $subscriberCollection = $this->subscriberCollectionFactory->create(); + $subscriberCollection->addFieldToFilter('subscriber_email', $email)->setPageSize(1); + $this->assertEquals(0, count($subscriberCollection)); + } + /** * @return array */ @@ -242,7 +275,9 @@ private function performAsserts(string $message): void * Delete subscribers by email * * @param string $email + * * @return void + * @throws Exception */ private function deleteSubscriber(string $email): void { From 00ea64ae697ece232bf3b19466815f18b39067f7 Mon Sep 17 00:00:00 2001 From: Roger Date: Wed, 19 Oct 2022 16:06:54 +0000 Subject: [PATCH 007/104] Issue 36243: hide duplicate pictures when the product color is switched --- .../Magento/Swatches/view/base/web/js/swatch-renderer.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/code/Magento/Swatches/view/base/web/js/swatch-renderer.js b/app/code/Magento/Swatches/view/base/web/js/swatch-renderer.js index 740eb5e07b99b..87b06abd04215 100644 --- a/app/code/Magento/Swatches/view/base/web/js/swatch-renderer.js +++ b/app/code/Magento/Swatches/view/base/web/js/swatch-renderer.js @@ -1304,7 +1304,10 @@ define([ } imagesToUpdate = images.length ? this._setImageType($.extend(true, [], images)) : []; - isInitial = _.isEqual(imagesToUpdate, initialImages); + isInitial = _.isEqual( + imagesToUpdate.map(({thumb, img, full, type, videoUrl}) => ({thumb, img, full, type, videoUrl})), + initialImages.map(({thumb, img, full, type, videoUrl}) => ({thumb, img, full, type, videoUrl})) + ); if (this.options.gallerySwitchStrategy === 'prepend' && !isInitial) { imagesToUpdate = imagesToUpdate.concat(initialImages); From 7b5655e8e7c8d1f7c5a7a82f20a9244d0cbdc2ab Mon Sep 17 00:00:00 2001 From: Pieter Hoste Date: Wed, 23 Nov 2022 22:34:38 +0100 Subject: [PATCH 008/104] Don't cache private content in Varnish, only 200 and 404 responses. Also fixes some whitespace inconsistencies. --- app/code/Magento/PageCache/etc/varnish4.vcl | 24 +++++++++--------- app/code/Magento/PageCache/etc/varnish5.vcl | 28 ++++++++++----------- app/code/Magento/PageCache/etc/varnish6.vcl | 28 ++++++++++----------- 3 files changed, 38 insertions(+), 42 deletions(-) diff --git a/app/code/Magento/PageCache/etc/varnish4.vcl b/app/code/Magento/PageCache/etc/varnish4.vcl index 0f67aae1e6975..7cc1b49bd4a3c 100644 --- a/app/code/Magento/PageCache/etc/varnish4.vcl +++ b/app/code/Magento/PageCache/etc/varnish4.vcl @@ -183,22 +183,22 @@ sub vcl_backend_response { unset beresp.http.set-cookie; } - # If page is not cacheable then bypass varnish for 2 minutes as Hit-For-Pass - if (beresp.ttl <= 0s || - beresp.http.Surrogate-control ~ "no-store" || - (!beresp.http.Surrogate-Control && - beresp.http.Cache-Control ~ "no-cache|no-store") || - beresp.http.Vary == "*") { - # Mark as Hit-For-Pass for the next 2 minutes + # If page is not cacheable then bypass varnish for 2 minutes as Hit-For-Pass + if (beresp.ttl <= 0s || + beresp.http.Surrogate-control ~ "no-store" || + (!beresp.http.Surrogate-Control && + beresp.http.Cache-Control ~ "no-cache|no-store") || + beresp.http.Vary == "*") { + # Mark as Hit-For-Pass for the next 2 minutes set beresp.ttl = 120s; set beresp.uncacheable = true; } - # If the cache key in the Magento response doesn't match the one that was sent in the request, don't cache under the request's key - if (bereq.url ~ "/graphql" && bereq.http.X-Magento-Cache-Id && bereq.http.X-Magento-Cache-Id != beresp.http.X-Magento-Cache-Id) { - set beresp.ttl = 0s; - set beresp.uncacheable = true; - } + # If the cache key in the Magento response doesn't match the one that was sent in the request, don't cache under the request's key + if (bereq.url ~ "/graphql" && bereq.http.X-Magento-Cache-Id && bereq.http.X-Magento-Cache-Id != beresp.http.X-Magento-Cache-Id) { + set beresp.ttl = 0s; + set beresp.uncacheable = true; + } return (deliver); } diff --git a/app/code/Magento/PageCache/etc/varnish5.vcl b/app/code/Magento/PageCache/etc/varnish5.vcl index bd9e5c92f5077..392e45085774e 100644 --- a/app/code/Magento/PageCache/etc/varnish5.vcl +++ b/app/code/Magento/PageCache/etc/varnish5.vcl @@ -168,10 +168,8 @@ sub vcl_backend_response { set beresp.http.X-Magento-Cache-Control = beresp.http.Cache-Control; } - # cache only successfully responses and 404s - if (beresp.status != 200 && - beresp.status != 404 && - beresp.http.Cache-Control ~ "private") { + # cache only successfully responses and 404s that are not marked as private + if ((beresp.status != 200 && beresp.status != 404) || beresp.http.Cache-Control ~ "private") { set beresp.uncacheable = true; set beresp.ttl = 86400s; return (deliver); @@ -182,22 +180,22 @@ sub vcl_backend_response { unset beresp.http.set-cookie; } - # If page is not cacheable then bypass varnish for 2 minutes as Hit-For-Pass - if (beresp.ttl <= 0s || - beresp.http.Surrogate-control ~ "no-store" || - (!beresp.http.Surrogate-Control && - beresp.http.Cache-Control ~ "no-cache|no-store") || - beresp.http.Vary == "*") { + # If page is not cacheable then bypass varnish for 2 minutes as Hit-For-Pass + if (beresp.ttl <= 0s || + beresp.http.Surrogate-control ~ "no-store" || + (!beresp.http.Surrogate-Control && + beresp.http.Cache-Control ~ "no-cache|no-store") || + beresp.http.Vary == "*") { # Mark as Hit-For-Pass for the next 2 minutes set beresp.ttl = 120s; set beresp.uncacheable = true; } - # If the cache key in the Magento response doesn't match the one that was sent in the request, don't cache under the request's key - if (bereq.url ~ "/graphql" && bereq.http.X-Magento-Cache-Id && bereq.http.X-Magento-Cache-Id != beresp.http.X-Magento-Cache-Id) { - set beresp.ttl = 0s; - set beresp.uncacheable = true; - } + # If the cache key in the Magento response doesn't match the one that was sent in the request, don't cache under the request's key + if (bereq.url ~ "/graphql" && bereq.http.X-Magento-Cache-Id && bereq.http.X-Magento-Cache-Id != beresp.http.X-Magento-Cache-Id) { + set beresp.ttl = 0s; + set beresp.uncacheable = true; + } return (deliver); } diff --git a/app/code/Magento/PageCache/etc/varnish6.vcl b/app/code/Magento/PageCache/etc/varnish6.vcl index 16dd9505e834b..3c990b8dac05e 100644 --- a/app/code/Magento/PageCache/etc/varnish6.vcl +++ b/app/code/Magento/PageCache/etc/varnish6.vcl @@ -173,9 +173,7 @@ sub vcl_backend_response { } # cache only successfully responses and 404s that are not marked as private - if (beresp.status != 200 && - beresp.status != 404 && - beresp.http.Cache-Control ~ "private") { + if ((beresp.status != 200 && beresp.status != 404) || beresp.http.Cache-Control ~ "private") { set beresp.uncacheable = true; set beresp.ttl = 86400s; return (deliver); @@ -186,22 +184,22 @@ sub vcl_backend_response { unset beresp.http.set-cookie; } - # If page is not cacheable then bypass varnish for 2 minutes as Hit-For-Pass - if (beresp.ttl <= 0s || - beresp.http.Surrogate-control ~ "no-store" || - (!beresp.http.Surrogate-Control && - beresp.http.Cache-Control ~ "no-cache|no-store") || - beresp.http.Vary == "*") { + # If page is not cacheable then bypass varnish for 2 minutes as Hit-For-Pass + if (beresp.ttl <= 0s || + beresp.http.Surrogate-control ~ "no-store" || + (!beresp.http.Surrogate-Control && + beresp.http.Cache-Control ~ "no-cache|no-store") || + beresp.http.Vary == "*") { # Mark as Hit-For-Pass for the next 2 minutes set beresp.ttl = 120s; set beresp.uncacheable = true; - } + } - # If the cache key in the Magento response doesn't match the one that was sent in the request, don't cache under the request's key - if (bereq.url ~ "/graphql" && bereq.http.X-Magento-Cache-Id && bereq.http.X-Magento-Cache-Id != beresp.http.X-Magento-Cache-Id) { - set beresp.ttl = 0s; - set beresp.uncacheable = true; - } + # If the cache key in the Magento response doesn't match the one that was sent in the request, don't cache under the request's key + if (bereq.url ~ "/graphql" && bereq.http.X-Magento-Cache-Id && bereq.http.X-Magento-Cache-Id != beresp.http.X-Magento-Cache-Id) { + set beresp.ttl = 0s; + set beresp.uncacheable = true; + } return (deliver); } From c490282308f6ce7700a2bba16f2af44805108f59 Mon Sep 17 00:00:00 2001 From: Peter Jaap Blaakmeer Date: Sun, 27 Nov 2022 17:01:36 +0100 Subject: [PATCH 009/104] Add input-file argument to varnish:vcl:generate --- .../Console/Command/GenerateVclCommand.php | 13 ++++++++- .../PageCache/Model/Varnish/VclGenerator.php | 5 ++-- .../Model/Varnish/VclTemplateLocator.php | 28 ++++++++++++++----- .../PageCache/Model/VclGeneratorInterface.php | 3 +- .../Model/VclTemplateLocatorInterface.php | 3 +- 5 files changed, 40 insertions(+), 12 deletions(-) diff --git a/app/code/Magento/PageCache/Console/Command/GenerateVclCommand.php b/app/code/Magento/PageCache/Console/Command/GenerateVclCommand.php index 2d370cae5f55c..60f96a1947c75 100644 --- a/app/code/Magento/PageCache/Console/Command/GenerateVclCommand.php +++ b/app/code/Magento/PageCache/Console/Command/GenerateVclCommand.php @@ -51,6 +51,10 @@ class GenerateVclCommand extends Command */ const GRACE_PERIOD_OPTION = 'grace-period'; + /** + * Input file option name + */ + const INPUT_FILE_OPTION = 'input-file'; /** * Output file option name */ @@ -130,6 +134,7 @@ protected function execute(InputInterface $input, OutputInterface $output) } try { + $inputFile = $input->getOption(self::INPUT_FILE_OPTION); $outputFile = $input->getOption(self::OUTPUT_FILE_OPTION); $varnishVersion = $input->getOption(self::EXPORT_VERSION_OPTION); $vclParameters = array_merge($this->inputToVclParameters($input), [ @@ -137,7 +142,7 @@ protected function execute(InputInterface $input, OutputInterface $output) 'designExceptions' => $this->getDesignExceptions(), ]); $vclGenerator = $this->vclGeneratorFactory->create($vclParameters); - $vcl = $vclGenerator->generateVcl($varnishVersion); + $vcl = $vclGenerator->generateVcl($varnishVersion, $inputFile); if ($outputFile) { $writer = $this->writeFactory->create($outputFile, DriverPool::FILE, 'w+'); @@ -201,6 +206,12 @@ private function getOptionList() 'Grace period in seconds', 300 ), + new InputOption( + self::INPUT_FILE_OPTION, + null, + InputOption::VALUE_REQUIRED, + 'Input file to generate vcl from' + ), new InputOption( self::OUTPUT_FILE_OPTION, null, diff --git a/app/code/Magento/PageCache/Model/Varnish/VclGenerator.php b/app/code/Magento/PageCache/Model/Varnish/VclGenerator.php index 79f15f94f158e..3c54506ac7045 100644 --- a/app/code/Magento/PageCache/Model/Varnish/VclGenerator.php +++ b/app/code/Magento/PageCache/Model/Varnish/VclGenerator.php @@ -84,11 +84,12 @@ public function __construct( * Return generated varnish.vcl configuration file * * @param int $version + * @param string $inputFile * @return string */ - public function generateVcl($version) + public function generateVcl($version, $inputFile = null) { - $template = $this->vclTemplateLocator->getTemplate($version); + $template = $this->vclTemplateLocator->getTemplate($version, $inputFile); return strtr($template, $this->getReplacements()); } diff --git a/app/code/Magento/PageCache/Model/Varnish/VclTemplateLocator.php b/app/code/Magento/PageCache/Model/Varnish/VclTemplateLocator.php index 8ad684198f409..7f7bb41de8932 100644 --- a/app/code/Magento/PageCache/Model/Varnish/VclTemplateLocator.php +++ b/app/code/Magento/PageCache/Model/Varnish/VclTemplateLocator.php @@ -9,6 +9,7 @@ use Magento\Framework\App\Config\ScopeConfigInterface; use Magento\Framework\Module\Dir; use Magento\Framework\Module\Dir\Reader; +use Magento\Framework\Filesystem\DirectoryList; use Magento\Framework\Filesystem\Directory\ReadFactory; use Magento\PageCache\Model\VclTemplateLocatorInterface; use Magento\PageCache\Exception\UnsupportedVarnishVersion; @@ -72,30 +73,43 @@ class VclTemplateLocator implements VclTemplateLocatorInterface */ private $scopeConfig; + /** + * @var DirectoryList + */ + private $directoryList; + /** * VclTemplateLocator constructor. * * @param Reader $reader * @param ReadFactory $readFactory * @param ScopeConfigInterface $scopeConfig + * @param DirectoryList $directoryList */ - public function __construct(Reader $reader, ReadFactory $readFactory, ScopeConfigInterface $scopeConfig) + public function __construct(Reader $reader, ReadFactory $readFactory, ScopeConfigInterface $scopeConfig, DirectoryList $directoryList) { $this->reader = $reader; $this->readFactory = $readFactory; $this->scopeConfig = $scopeConfig; + $this->directoryList = $directoryList; } /** * @inheritdoc */ - public function getTemplate($version) + public function getTemplate($version, $inputFile = null) { - $moduleEtcPath = $this->reader->getModuleDir(Dir::MODULE_ETC_DIR, 'Magento_PageCache'); - $configFilePath = $moduleEtcPath . '/' . $this->scopeConfig->getValue($this->getVclTemplatePath($version)); - $directoryRead = $this->readFactory->create($moduleEtcPath); - $configFilePath = $directoryRead->getRelativePath($configFilePath); - $template = $directoryRead->readFile($configFilePath); + if (is_null($inputFile)) { + $moduleEtcPath = $this->reader->getModuleDir(Dir::MODULE_ETC_DIR, + 'Magento_PageCache'); + $configFilePath = $moduleEtcPath . '/' . $this->scopeConfig->getValue($this->getVclTemplatePath($version)); + $directoryRead = $this->readFactory->create($moduleEtcPath); + $configFilePath = $directoryRead->getRelativePath($configFilePath); + $template = $directoryRead->readFile($configFilePath); + } else { + $reader = $this->readFactory->create($this->directoryList->getRoot()); + $template = $reader->readFile($inputFile); + } return $template; } diff --git a/app/code/Magento/PageCache/Model/VclGeneratorInterface.php b/app/code/Magento/PageCache/Model/VclGeneratorInterface.php index 9781156621cde..a14056074b532 100644 --- a/app/code/Magento/PageCache/Model/VclGeneratorInterface.php +++ b/app/code/Magento/PageCache/Model/VclGeneratorInterface.php @@ -16,8 +16,9 @@ interface VclGeneratorInterface * Return generated varnish.vcl configuration file * * @param int $version + * $param string $inputFile * @return string * @since 100.2.0 */ - public function generateVcl($version); + public function generateVcl($version, $inputFile = null); } diff --git a/app/code/Magento/PageCache/Model/VclTemplateLocatorInterface.php b/app/code/Magento/PageCache/Model/VclTemplateLocatorInterface.php index 0b8fa6e369504..99ba134ee43ed 100644 --- a/app/code/Magento/PageCache/Model/VclTemplateLocatorInterface.php +++ b/app/code/Magento/PageCache/Model/VclTemplateLocatorInterface.php @@ -20,9 +20,10 @@ interface VclTemplateLocatorInterface * Get Varnish Vcl template * * @param int $version + * @param string $inputFile * @return string * @throws UnsupportedVarnishVersion * @since 100.2.0 */ - public function getTemplate($version); + public function getTemplate($version, $inputFile = null); } From 7e802632b1b6fca932f2aec26b2d2ea873adbb6b Mon Sep 17 00:00:00 2001 From: Dan Wallis Date: Mon, 30 Jan 2023 12:27:18 +0000 Subject: [PATCH 010/104] Upgrade phpcodesniffer-composer-installer --- composer.json | 2 +- composer.lock | 33 ++++++++++++++++++--------------- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/composer.json b/composer.json index 0c01c49b1ec77..cb241c3ab07a3 100644 --- a/composer.json +++ b/composer.json @@ -90,7 +90,7 @@ }, "require-dev": { "allure-framework/allure-phpunit": "^2", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7 || ^1.0", "dg/bypass-finals": "^1.4", "friendsofphp/php-cs-fixer": "^3.8", "lusitanian/oauth": "^0.8", diff --git a/composer.lock b/composer.lock index 9f0fe11b93c5f..40b401e9e59b1 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": "f91ab9524a6e074f7d04ce6f536d6f6e", + "content-hash": "0b654fc05893f921af2f523537c211aa", "packages": [ { "name": "aws/aws-crt-php", @@ -9836,35 +9836,38 @@ }, { "name": "dealerdirect/phpcodesniffer-composer-installer", - "version": "v0.7.2", + "version": "v1.0.0", "source": { "type": "git", - "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git", - "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db" + "url": "https://github.com/PHPCSStandards/composer-installer.git", + "reference": "4be43904336affa5c2f70744a348312336afd0da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", - "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", + "url": "https://api.github.com/repos/PHPCSStandards/composer-installer/zipball/4be43904336affa5c2f70744a348312336afd0da", + "reference": "4be43904336affa5c2f70744a348312336afd0da", "shasum": "" }, "require": { "composer-plugin-api": "^1.0 || ^2.0", - "php": ">=5.3", + "php": ">=5.4", "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0" }, "require-dev": { "composer/composer": "*", + "ext-json": "*", + "ext-zip": "*", "php-parallel-lint/php-parallel-lint": "^1.3.1", - "phpcompatibility/php-compatibility": "^9.0" + "phpcompatibility/php-compatibility": "^9.0", + "yoast/phpunit-polyfills": "^1.0" }, "type": "composer-plugin", "extra": { - "class": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" + "class": "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" }, "autoload": { "psr-4": { - "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" + "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -9880,7 +9883,7 @@ }, { "name": "Contributors", - "homepage": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer/graphs/contributors" + "homepage": "https://github.com/PHPCSStandards/composer-installer/graphs/contributors" } ], "description": "PHP_CodeSniffer Standards Composer Installer Plugin", @@ -9904,10 +9907,10 @@ "tests" ], "support": { - "issues": "https://github.com/dealerdirect/phpcodesniffer-composer-installer/issues", - "source": "https://github.com/dealerdirect/phpcodesniffer-composer-installer" + "issues": "https://github.com/PHPCSStandards/composer-installer/issues", + "source": "https://github.com/PHPCSStandards/composer-installer" }, - "time": "2022-02-04T12:51:07+00:00" + "time": "2023-01-05T11:28:13+00:00" }, { "name": "dg/bypass-finals", @@ -13915,5 +13918,5 @@ "lib-libxml": "*" }, "platform-dev": [], - "plugin-api-version": "2.2.0" + "plugin-api-version": "2.3.0" } From 8a74c71c26f58201b2d00fdd24598fa3dba951a8 Mon Sep 17 00:00:00 2001 From: abhattGlo Date: Tue, 28 Mar 2023 17:33:18 +0530 Subject: [PATCH 011/104] Fixed static test failures --- .../Console/Command/GenerateVclCommand.php | 16 ++++++------ .../Model/Varnish/VclTemplateLocator.php | 25 +++++++++++-------- .../PageCache/Model/VclGeneratorInterface.php | 2 +- .../Model/VclTemplateLocatorInterface.php | 2 +- 4 files changed, 25 insertions(+), 20 deletions(-) diff --git a/app/code/Magento/PageCache/Console/Command/GenerateVclCommand.php b/app/code/Magento/PageCache/Console/Command/GenerateVclCommand.php index 60f96a1947c75..d1a464bbb16cb 100644 --- a/app/code/Magento/PageCache/Console/Command/GenerateVclCommand.php +++ b/app/code/Magento/PageCache/Console/Command/GenerateVclCommand.php @@ -29,36 +29,36 @@ class GenerateVclCommand extends Command /** * Access list option name */ - const ACCESS_LIST_OPTION = 'access-list'; + public const ACCESS_LIST_OPTION = 'access-list'; /** * Backend host option name */ - const BACKEND_HOST_OPTION = 'backend-host'; + public const BACKEND_HOST_OPTION = 'backend-host'; /** * Backend port option name */ - const BACKEND_PORT_OPTION = 'backend-port'; + public const BACKEND_PORT_OPTION = 'backend-port'; /** * Varnish version option name */ - const EXPORT_VERSION_OPTION = 'export-version'; + public const EXPORT_VERSION_OPTION = 'export-version'; /** * Grace period option name */ - const GRACE_PERIOD_OPTION = 'grace-period'; + public const GRACE_PERIOD_OPTION = 'grace-period'; /** * Input file option name */ - const INPUT_FILE_OPTION = 'input-file'; + public const INPUT_FILE_OPTION = 'input-file'; /** * Output file option name */ - const OUTPUT_FILE_OPTION = 'output-file'; + public const OUTPUT_FILE_OPTION = 'output-file'; /** * @var \Magento\Framework\Filesystem\Directory\WriteFactory @@ -222,6 +222,8 @@ private function getOptionList() } /** + * Input vcl params + * * @param InputInterface $input * @return array */ diff --git a/app/code/Magento/PageCache/Model/Varnish/VclTemplateLocator.php b/app/code/Magento/PageCache/Model/Varnish/VclTemplateLocator.php index 7f7bb41de8932..12152fb0faa0b 100644 --- a/app/code/Magento/PageCache/Model/Varnish/VclTemplateLocator.php +++ b/app/code/Magento/PageCache/Model/Varnish/VclTemplateLocator.php @@ -22,32 +22,32 @@ class VclTemplateLocator implements VclTemplateLocatorInterface /** * XML path to Varnish 5 config template path */ - const VARNISH_6_CONFIGURATION_PATH = 'system/full_page_cache/varnish6/path'; + public const VARNISH_6_CONFIGURATION_PATH = 'system/full_page_cache/varnish6/path'; /** * XML path to Varnish 5 config template path */ - const VARNISH_5_CONFIGURATION_PATH = 'system/full_page_cache/varnish5/path'; + public const VARNISH_5_CONFIGURATION_PATH = 'system/full_page_cache/varnish5/path'; /** * XML path to Varnish 4 config template path */ - const VARNISH_4_CONFIGURATION_PATH = 'system/full_page_cache/varnish4/path'; + public const VARNISH_4_CONFIGURATION_PATH = 'system/full_page_cache/varnish4/path'; /** * Varnish 4 supported version */ - const VARNISH_SUPPORTED_VERSION_4 = '4'; + public const VARNISH_SUPPORTED_VERSION_4 = '4'; /** * Varnish 5 supported version */ - const VARNISH_SUPPORTED_VERSION_5 = '5'; + public const VARNISH_SUPPORTED_VERSION_5 = '5'; /** * Varnish 6 supported version */ - const VARNISH_SUPPORTED_VERSION_6 = '6'; + public const VARNISH_SUPPORTED_VERSION_6 = '6'; /** * @var array @@ -86,8 +86,12 @@ class VclTemplateLocator implements VclTemplateLocatorInterface * @param ScopeConfigInterface $scopeConfig * @param DirectoryList $directoryList */ - public function __construct(Reader $reader, ReadFactory $readFactory, ScopeConfigInterface $scopeConfig, DirectoryList $directoryList) - { + public function __construct( + Reader $reader, + ReadFactory $readFactory, + ScopeConfigInterface $scopeConfig, + DirectoryList $directoryList + ) { $this->reader = $reader; $this->readFactory = $readFactory; $this->scopeConfig = $scopeConfig; @@ -99,9 +103,8 @@ public function __construct(Reader $reader, ReadFactory $readFactory, ScopeConfi */ public function getTemplate($version, $inputFile = null) { - if (is_null($inputFile)) { - $moduleEtcPath = $this->reader->getModuleDir(Dir::MODULE_ETC_DIR, - 'Magento_PageCache'); + if ($inputFile === null) { + $moduleEtcPath = $this->reader->getModuleDir(Dir::MODULE_ETC_DIR, 'Magento_PageCache'); $configFilePath = $moduleEtcPath . '/' . $this->scopeConfig->getValue($this->getVclTemplatePath($version)); $directoryRead = $this->readFactory->create($moduleEtcPath); $configFilePath = $directoryRead->getRelativePath($configFilePath); diff --git a/app/code/Magento/PageCache/Model/VclGeneratorInterface.php b/app/code/Magento/PageCache/Model/VclGeneratorInterface.php index a14056074b532..c8a4b744eb2a0 100644 --- a/app/code/Magento/PageCache/Model/VclGeneratorInterface.php +++ b/app/code/Magento/PageCache/Model/VclGeneratorInterface.php @@ -16,7 +16,7 @@ interface VclGeneratorInterface * Return generated varnish.vcl configuration file * * @param int $version - * $param string $inputFile + * @param string $inputFile * @return string * @since 100.2.0 */ diff --git a/app/code/Magento/PageCache/Model/VclTemplateLocatorInterface.php b/app/code/Magento/PageCache/Model/VclTemplateLocatorInterface.php index 99ba134ee43ed..3c38f023daa6a 100644 --- a/app/code/Magento/PageCache/Model/VclTemplateLocatorInterface.php +++ b/app/code/Magento/PageCache/Model/VclTemplateLocatorInterface.php @@ -9,7 +9,7 @@ use Magento\PageCache\Exception\UnsupportedVarnishVersion; /** - * Vcl template locator interface + * Vcl template locator * * @api * @since 100.2.0 From cfef7732c4ea3ba5f278694a000f15d3b23599a2 Mon Sep 17 00:00:00 2001 From: engcom-Echo Date: Mon, 3 Apr 2023 15:54:17 +0530 Subject: [PATCH 012/104] #36538: Added Unit Test for Input Option --- .../GenerateVclCommandInputOptionTest.php | 101 ++++++++++++++++++ .../Model/Varnish/VclTemplateLocatorTest.php | 76 +++++++++++++ 2 files changed, 177 insertions(+) create mode 100644 app/code/Magento/PageCache/Test/Unit/Model/Console/Command/GenerateVclCommandInputOptionTest.php create mode 100644 app/code/Magento/PageCache/Test/Unit/Model/Varnish/VclTemplateLocatorTest.php diff --git a/app/code/Magento/PageCache/Test/Unit/Model/Console/Command/GenerateVclCommandInputOptionTest.php b/app/code/Magento/PageCache/Test/Unit/Model/Console/Command/GenerateVclCommandInputOptionTest.php new file mode 100644 index 0000000000000..97fdf6926e27c --- /dev/null +++ b/app/code/Magento/PageCache/Test/Unit/Model/Console/Command/GenerateVclCommandInputOptionTest.php @@ -0,0 +1,101 @@ +vclGeneratorInterfaceFactory = $this->createMock(VclGeneratorInterfaceFactory::class); + $this->vclGenerator = $this->createMock(VclGenerator::class); + $this->vclGenerator->method('generateVcl')->willReturn('test.vcl" file can\'t be read.'); + $this->vclGeneratorInterfaceFactory->method('create')->willReturn($this->vclGenerator); + $this->writeFactoryMock = $this->createMock(WriteFactory::class); + $this->scopeConfigMock = $this->createMock(ScopeConfigInterface::class); + $this->serializer = $this->getMockBuilder(Json::class) + ->onlyMethods(['unserialize']) + ->getMockForAbstractClass(); + + $this->command = new GenerateVclCommand( + $this->vclGeneratorInterfaceFactory, + $this->writeFactoryMock, + $this->scopeConfigMock, + $this->serializer + ); + + } + + public function testConfigure() + { + $this->assertEquals('varnish:vcl:generate', $this->command->getName()); + $this->assertEquals( + 'Generates Varnish VCL and echos it to the command line', + $this->command->getDescription() + ); + } + + public function testInputOption() + { + $options = [ + '--' . GenerateVclCommand::INPUT_FILE_OPTION => 'test.vcl', + '--' . GenerateVclCommand::EXPORT_VERSION_OPTION => 6, + ]; + + $commandTester = new CommandTester($this->command); + $commandTester->execute($options, ['interactive' => false]); + $this->assertStringContainsString( + 'test.vcl" file can\'t be read.', + $commandTester->getDisplay() + ); + } +} diff --git a/app/code/Magento/PageCache/Test/Unit/Model/Varnish/VclTemplateLocatorTest.php b/app/code/Magento/PageCache/Test/Unit/Model/Varnish/VclTemplateLocatorTest.php new file mode 100644 index 0000000000000..0ac1b3c02f8a7 --- /dev/null +++ b/app/code/Magento/PageCache/Test/Unit/Model/Varnish/VclTemplateLocatorTest.php @@ -0,0 +1,76 @@ +readerMock = $this->createMock(Reader::class); + $this->scopeConfigMock = $this->createMock(ScopeConfigInterface::class); + $this->readFactoryMock = $this->createMock(ReadFactory::class); + $this->directoryListMock = $this->createMock(DirectoryList::class); + + $this->vclTemplateLocator = new VclTemplateLocator( + $this->readerMock, + $this->readFactoryMock, + $this->scopeConfigMock, + $this->directoryListMock + ); + } + + public function testGetTemplate() + { + $inputfile = 'test.vcl'; + $version = 6; + $read = $this->createMock(Read::class); + $read + ->method('readFile') + ->with('test.vcl') + ->willReturn('test.vcl" file can\'t be read.'); + $this->readFactoryMock->method('create')->willReturn($read); + + $template = $this->vclTemplateLocator->getTemplate($version, $inputfile); + $this->assertStringContainsString( + 'test.vcl" file can\'t be read.', + $template + ); + } + + +} From 262d4ad4fc5befd10f6e3f3907c12f0097171ba7 Mon Sep 17 00:00:00 2001 From: engcom-Echo Date: Mon, 3 Apr 2023 17:56:57 +0530 Subject: [PATCH 013/104] #36538: Fixed Static Test failures --- .../Console/Command/GenerateVclCommandInputOptionTest.php | 3 +-- .../Test/Unit/Model/Varnish/VclTemplateLocatorTest.php | 7 ++++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/code/Magento/PageCache/Test/Unit/Model/Console/Command/GenerateVclCommandInputOptionTest.php b/app/code/Magento/PageCache/Test/Unit/Model/Console/Command/GenerateVclCommandInputOptionTest.php index 97fdf6926e27c..80611f5c31e02 100644 --- a/app/code/Magento/PageCache/Test/Unit/Model/Console/Command/GenerateVclCommandInputOptionTest.php +++ b/app/code/Magento/PageCache/Test/Unit/Model/Console/Command/GenerateVclCommandInputOptionTest.php @@ -5,7 +5,7 @@ */ declare(strict_types=1); -namespace Magento\Customer\Test\Unit\Console\Command; +namespace Magento\PageCache\Test\Unit\Console\Command; use Magento\Framework\App\Config\ScopeConfigInterface; use Magento\Framework\Filesystem\File\WriteFactory; @@ -72,7 +72,6 @@ protected function setUp(): void $this->scopeConfigMock, $this->serializer ); - } public function testConfigure() diff --git a/app/code/Magento/PageCache/Test/Unit/Model/Varnish/VclTemplateLocatorTest.php b/app/code/Magento/PageCache/Test/Unit/Model/Varnish/VclTemplateLocatorTest.php index 0ac1b3c02f8a7..256b53ae2cbaf 100644 --- a/app/code/Magento/PageCache/Test/Unit/Model/Varnish/VclTemplateLocatorTest.php +++ b/app/code/Magento/PageCache/Test/Unit/Model/Varnish/VclTemplateLocatorTest.php @@ -5,7 +5,7 @@ */ declare(strict_types=1); -namespace Magento\Customer\Test\Unit\Model\Varnish; +namespace Magento\PageCache\Test\Unit\Model\Varnish; use Magento\Framework\App\Config\ScopeConfigInterface; use Magento\Framework\Filesystem\Directory\Read; @@ -37,6 +37,9 @@ class VclTemplateLocatorTest extends TestCase */ private $directoryListMock; + /** + * @var VclTemplateLocator + */ private $vclTemplateLocator; public function setUp(): void @@ -71,6 +74,4 @@ public function testGetTemplate() $template ); } - - } From ab7891aed73e195063571d708ebe909643507e39 Mon Sep 17 00:00:00 2001 From: engcom-Echo Date: Mon, 3 Apr 2023 18:46:06 +0530 Subject: [PATCH 014/104] #36538: Fixed Static Test failures --- .../Console/Command/GenerateVclCommandInputOptionTest.php | 6 ------ 1 file changed, 6 deletions(-) rename app/code/Magento/PageCache/Test/Unit/{Model => }/Console/Command/GenerateVclCommandInputOptionTest.php (95%) diff --git a/app/code/Magento/PageCache/Test/Unit/Model/Console/Command/GenerateVclCommandInputOptionTest.php b/app/code/Magento/PageCache/Test/Unit/Console/Command/GenerateVclCommandInputOptionTest.php similarity index 95% rename from app/code/Magento/PageCache/Test/Unit/Model/Console/Command/GenerateVclCommandInputOptionTest.php rename to app/code/Magento/PageCache/Test/Unit/Console/Command/GenerateVclCommandInputOptionTest.php index 80611f5c31e02..21863df65e6b1 100644 --- a/app/code/Magento/PageCache/Test/Unit/Model/Console/Command/GenerateVclCommandInputOptionTest.php +++ b/app/code/Magento/PageCache/Test/Unit/Console/Command/GenerateVclCommandInputOptionTest.php @@ -10,7 +10,6 @@ use Magento\Framework\App\Config\ScopeConfigInterface; use Magento\Framework\Filesystem\File\WriteFactory; use Magento\Framework\Serialize\Serializer\Json; -use Magento\Framework\TestFramework\Unit\Helper\ObjectManager; use Magento\PageCache\Console\Command\GenerateVclCommand; use Magento\PageCache\Model\Varnish\VclGenerator; use Magento\PageCache\Model\VclGeneratorInterfaceFactory; @@ -24,11 +23,6 @@ class GenerateVclCommandInputOptionTest extends TestCase */ private $command; - /** - * @var ObjectManager - */ - private $objectManager; - /** * @var VclGeneratorInterfaceFactory */ From 1a429227f341d7db038e6a16dfb3597c925b9135 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A0=D0=BE=D1=81=D1=82=D0=B8=D1=81=D0=BB=D0=B0=D0=B2=20?= =?UTF-8?q?=D0=A1=D1=83=D0=BB=D0=B5=D0=B9=D0=BC=D0=B0=D0=BD=D0=BE=D0=B2?= Date: Sun, 28 May 2023 19:43:36 +0300 Subject: [PATCH 015/104] Added logic to correctly add items to wishlist/cart from an [items ordered] section when creating an order from admin --- .../Magento/Sales/Model/AdminOrder/Create.php | 60 ++++++++++++++++--- 1 file changed, 53 insertions(+), 7 deletions(-) diff --git a/app/code/Magento/Sales/Model/AdminOrder/Create.php b/app/code/Magento/Sales/Model/AdminOrder/Create.php index 154ee6e845bc9..bb19e5e7d3a2c 100644 --- a/app/code/Magento/Sales/Model/AdminOrder/Create.php +++ b/app/code/Magento/Sales/Model/AdminOrder/Create.php @@ -816,6 +816,7 @@ public function getCustomerGroupId() * @throws \Magento\Framework\Exception\LocalizedException * @SuppressWarnings(PHPMD.CyclomaticComplexity) * @SuppressWarnings(PHPMD.ExcessiveMethodLength) + * phpcs:disable Generic.Metrics.NestingLevel */ public function moveQuoteItem($item, $moveTo, $qty) { @@ -875,11 +876,15 @@ public function moveQuoteItem($item, $moveTo, $qty) ); } - $cartItem = $cart->addProduct($product, $info); - if (is_string($cartItem)) { - throw new \Magento\Framework\Exception\LocalizedException(__($cartItem)); + $cartItems = $cart->getAllVisibleItems(); + $canBeRestored = (bool)$this->restoreTransferredItems('cart', $cartItems, $product); + if (!$canBeRestored) { + $cartItem = $cart->addProduct($product, $info); + if (is_string($cartItem)) { + throw new \Magento\Framework\Exception\LocalizedException(__($cartItem)); + } + $cartItem->setPrice($item->getProduct()->getPrice()); } - $cartItem->setPrice($item->getProduct()->getPrice()); $this->_needCollectCart = true; $removeItem = true; } @@ -922,7 +927,11 @@ public function moveQuoteItem($item, $moveTo, $qty) )->setStoreId( $this->getSession()->getStoreId() ); - $wishlist->addNewItem($item->getProduct(), $info); + $wishlistItems = $wishlist->getItemCollection()->getItems(); + $canBeRestored = (bool)$this->restoreTransferredItems('wishlist', $wishlistItems, null); + if (!$canBeRestored) { + $wishlist->addNewItem($item->getProduct(), $info); + } $removeItem = true; } break; @@ -969,7 +978,7 @@ public function applySidebarData($data) if ($item) { $this->moveQuoteItem($item, 'order', $qty); $transferredItems = $this->_session->getTransferredItems() ?? []; - $transferredItems['cart'][] = $itemId; + $transferredItems['cart'][$itemId] = $itemId; $this->_session->setTransferredItems($transferredItems) ; } } @@ -985,7 +994,7 @@ public function applySidebarData($data) if ($item->getId()) { $this->addProduct($item->getProduct(), $item->getBuyRequest()->toArray()); $transferredItems = $this->_session->getTransferredItems() ?? []; - $transferredItems['wishlist'][] = $itemId; + $transferredItems['wishlist'][$itemId] = $itemId; $this->_session->setTransferredItems($transferredItems) ; } } @@ -2051,6 +2060,43 @@ private function removeTransferredItems(): void } } + /** + * Restore items that were transferred from their original sources (cart, wishlist, ...) into ordered items + * + * @param string $area + * @param \Magento\Quote\Model\Quote\Item[]|\Magento\Wishlist\Model\Item[] $items + * @param \Magento\Catalog\Model\Product|null $product Product + * @return bool + */ + private function restoreTransferredItems($area, $items, $product = null): bool + { + $transferredItems = $this->_session->getTransferredItems() ?? []; + switch ($area) { + case 'wishlist': + $transferredFromWishlist = array_intersect_key($items, $transferredItems['wishlist']); + if ($transferredFromWishlist) { + $wishlistItemId = array_key_first($transferredFromWishlist); + unset($transferredItems['wishlist'][$wishlistItemId]); + $this->_session->setTransferredItems($transferredItems); + return true; + } + break; + case 'cart': + $cart = $this->getCustomerCart(); + $cartItem = $cart->getItemByProduct($product); + $transferredFromCart = $cartItem ? in_array($cartItem->getId(), $transferredItems['cart']) : false; + if ($transferredFromCart) { + unset($transferredItems['cart'][$cartItem->getItemId()]); + $this->_session->setTransferredItems($transferredItems); + return true; + } + break; + default: + break; + } + return false; + } + /** * Validate quote data before order creation * From fc6bebe4780a1963713ac7e07c0003f95ea730a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A0=D0=BE=D1=81=D1=82=D0=B8=D1=81=D0=BB=D0=B0=D0=B2=20?= =?UTF-8?q?=D0=A1=D1=83=D0=BB=D0=B5=D0=B9=D0=BC=D0=B0=D0=BD=D0=BE=D0=B2?= Date: Mon, 29 May 2023 07:41:01 +0300 Subject: [PATCH 016/104] functionality fixes --- app/code/Magento/Sales/Model/AdminOrder/Create.php | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/app/code/Magento/Sales/Model/AdminOrder/Create.php b/app/code/Magento/Sales/Model/AdminOrder/Create.php index bb19e5e7d3a2c..440e90f1b1dd3 100644 --- a/app/code/Magento/Sales/Model/AdminOrder/Create.php +++ b/app/code/Magento/Sales/Model/AdminOrder/Create.php @@ -877,7 +877,7 @@ public function moveQuoteItem($item, $moveTo, $qty) } $cartItems = $cart->getAllVisibleItems(); - $canBeRestored = (bool)$this->restoreTransferredItems('cart', $cartItems, $product); + $canBeRestored = (bool)$this->restoreTransferredItem('cart', $cartItems, $product); if (!$canBeRestored) { $cartItem = $cart->addProduct($product, $info); if (is_string($cartItem)) { @@ -928,7 +928,7 @@ public function moveQuoteItem($item, $moveTo, $qty) $this->getSession()->getStoreId() ); $wishlistItems = $wishlist->getItemCollection()->getItems(); - $canBeRestored = (bool)$this->restoreTransferredItems('wishlist', $wishlistItems, null); + $canBeRestored = (bool)$this->restoreTransferredItem('wishlist', $wishlistItems, null); if (!$canBeRestored) { $wishlist->addNewItem($item->getProduct(), $info); } @@ -2061,18 +2061,21 @@ private function removeTransferredItems(): void } /** - * Restore items that were transferred from their original sources (cart, wishlist, ...) into ordered items + * Restore items that were transferred from from ordered items to their original sources (cart, wishlist, ...) * * @param string $area * @param \Magento\Quote\Model\Quote\Item[]|\Magento\Wishlist\Model\Item[] $items * @param \Magento\Catalog\Model\Product|null $product Product * @return bool */ - private function restoreTransferredItems($area, $items, $product = null): bool + private function restoreTransferredItem($area, $items, $product = null): bool { $transferredItems = $this->_session->getTransferredItems() ?? []; switch ($area) { case 'wishlist': + if (!isset($transferredItems['wishlist'])) { + return false; + } $transferredFromWishlist = array_intersect_key($items, $transferredItems['wishlist']); if ($transferredFromWishlist) { $wishlistItemId = array_key_first($transferredFromWishlist); From 87497f5ee042522be61ace81fc63f6c01d780503 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A0=D0=BE=D1=81=D1=82=D0=B8=D1=81=D0=BB=D0=B0=D0=B2=20?= =?UTF-8?q?=D0=A1=D1=83=D0=BB=D0=B5=D0=B9=D0=BC=D0=B0=D0=BD=D0=BE=D0=B2?= Date: Mon, 29 May 2023 13:32:34 +0300 Subject: [PATCH 017/104] functionality fixes --- .../Magento/Sales/Model/AdminOrder/Create.php | 31 ++++++++++--------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/app/code/Magento/Sales/Model/AdminOrder/Create.php b/app/code/Magento/Sales/Model/AdminOrder/Create.php index 440e90f1b1dd3..88401979e3762 100644 --- a/app/code/Magento/Sales/Model/AdminOrder/Create.php +++ b/app/code/Magento/Sales/Model/AdminOrder/Create.php @@ -2061,7 +2061,7 @@ private function removeTransferredItems(): void } /** - * Restore items that were transferred from from ordered items to their original sources (cart, wishlist, ...) + * Restore items that were transferred from ordered items to their original sources (cart, wishlist, ...) * * @param string $area * @param \Magento\Quote\Model\Quote\Item[]|\Magento\Wishlist\Model\Item[] $items @@ -2071,32 +2071,33 @@ private function removeTransferredItems(): void private function restoreTransferredItem($area, $items, $product = null): bool { $transferredItems = $this->_session->getTransferredItems() ?? []; + if (!isset($transferredItems[$area])) { + return false; + } + $itemToRestoreId = null; switch ($area) { case 'wishlist': - if (!isset($transferredItems['wishlist'])) { - return false; - } - $transferredFromWishlist = array_intersect_key($items, $transferredItems['wishlist']); - if ($transferredFromWishlist) { - $wishlistItemId = array_key_first($transferredFromWishlist); - unset($transferredItems['wishlist'][$wishlistItemId]); - $this->_session->setTransferredItems($transferredItems); - return true; + $itemToRestore = array_intersect_key($items, $transferredItems['wishlist']); + if ($itemToRestore) { + $itemToRestoreId = array_key_first($itemToRestore); } break; case 'cart': $cart = $this->getCustomerCart(); $cartItem = $cart->getItemByProduct($product); - $transferredFromCart = $cartItem ? in_array($cartItem->getId(), $transferredItems['cart']) : false; - if ($transferredFromCart) { - unset($transferredItems['cart'][$cartItem->getItemId()]); - $this->_session->setTransferredItems($transferredItems); - return true; + $canBeRestored = $cartItem ? in_array($cartItem->getId(), $transferredItems['cart']) : false; + if ($canBeRestored) { + $itemToRestoreId = $cartItem->getItemId(); } break; default: break; } + if ($itemToRestoreId) { + unset($transferredItems[$area][$itemToRestoreId]); + $this->_session->setTransferredItems($transferredItems); + return true; + } return false; } From e425d5604b277d89ff28a2732ac947f7684bf870 Mon Sep 17 00:00:00 2001 From: Melvin Date: Tue, 23 May 2023 14:09:47 +0200 Subject: [PATCH 018/104] Removing non FRC3986 authorized characters, please see https://github.com/magento/magento2/pull/35885 to have the full context --- lib/internal/Magento/Framework/Url/Decoder.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/internal/Magento/Framework/Url/Decoder.php b/lib/internal/Magento/Framework/Url/Decoder.php index 00c112e8f99e6..f051baf06f9c8 100644 --- a/lib/internal/Magento/Framework/Url/Decoder.php +++ b/lib/internal/Magento/Framework/Url/Decoder.php @@ -31,7 +31,7 @@ public function __construct( */ public function decode($url) { - $url = $url !== null ? base64_decode(strtr($url, '-_,', '+/=')) : ''; + $url = $url !== null ? base64_decode(strtr($url, '-_~', '+/=')) : ''; return $this->urlBuilder->sessionUrlVar($url); } } From a6be3229565785bcd6f77a2966459a6ea8905a55 Mon Sep 17 00:00:00 2001 From: Lachlan Turner Date: Fri, 18 Aug 2023 09:02:50 +0930 Subject: [PATCH 019/104] Batch products together during catalog rule indexer calculation to improve performance --- .../Model/Indexer/IndexBuilder.php | 46 +++-- .../Model/Indexer/ReindexRuleProductPrice.php | 115 +++--------- .../Indexer/ReindexRuleProductsPrice.php | 68 +++++++ .../ReindexRuleProductsPriceProcessor.php | 173 ++++++++++++++++++ .../Indexer/RuleProductsSelectBuilder.php | 73 +++++--- .../ReindexRuleProductsPriceProcessorTest.php | 136 ++++++++++++++ .../Indexer/ReindexRuleProductsPriceTest.php | 111 +++++++++++ 7 files changed, 594 insertions(+), 128 deletions(-) create mode 100644 app/code/Magento/CatalogRule/Model/Indexer/ReindexRuleProductsPrice.php create mode 100644 app/code/Magento/CatalogRule/Model/Indexer/ReindexRuleProductsPriceProcessor.php create mode 100644 app/code/Magento/CatalogRule/Test/Unit/Model/Indexer/ReindexRuleProductsPriceProcessorTest.php create mode 100644 app/code/Magento/CatalogRule/Test/Unit/Model/Indexer/ReindexRuleProductsPriceTest.php diff --git a/app/code/Magento/CatalogRule/Model/Indexer/IndexBuilder.php b/app/code/Magento/CatalogRule/Model/Indexer/IndexBuilder.php index 5d1f91f962834..3f2e039d0d6dd 100644 --- a/app/code/Magento/CatalogRule/Model/Indexer/IndexBuilder.php +++ b/app/code/Magento/CatalogRule/Model/Indexer/IndexBuilder.php @@ -6,6 +6,7 @@ namespace Magento\CatalogRule\Model\Indexer; +use Exception; use Magento\Catalog\Model\Product; use Magento\Catalog\Model\ProductFactory; use Magento\Catalog\Model\ResourceModel\Indexer\ActiveTableSwitcher; @@ -28,6 +29,7 @@ use Magento\Store\Model\ScopeInterface; use Magento\Store\Model\StoreManagerInterface; use Psr\Log\LoggerInterface; +use Zend_Db_Statement_Exception; /** * Catalog rule index builder @@ -181,6 +183,16 @@ class IndexBuilder */ private $productCollectionFactory; + /** + * @var ReindexRuleProductsPrice + */ + private $reindexRuleProductsPrice; + + /** + * @var int + */ + private $productBatchSize; + /** * @param RuleCollectionFactory $ruleCollectionFactory * @param PriceCurrencyInterface $priceCurrency @@ -204,6 +216,8 @@ class IndexBuilder * @param TimezoneInterface|null $localeDate * @param ProductCollectionFactory|null $productCollectionFactory * @param IndexerRegistry|null $indexerRegistry + * @param ReindexRuleProductsPrice|null $reindexRuleProductsPrice + * @param int $productBatchSize * @SuppressWarnings(PHPMD.ExcessiveParameterList) * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ @@ -229,7 +243,9 @@ public function __construct( TableSwapper $tableSwapper = null, TimezoneInterface $localeDate = null, ProductCollectionFactory $productCollectionFactory = null, - IndexerRegistry $indexerRegistry = null + IndexerRegistry $indexerRegistry = null, + ReindexRuleProductsPrice $reindexRuleProductsPrice = null, + int $productBatchSize = 1000 ) { $this->resource = $resource; $this->connection = $resource->getConnection(); @@ -242,6 +258,7 @@ public function __construct( $this->dateTime = $dateTime; $this->productFactory = $productFactory; $this->batchCount = $batchCount; + $this->productBatchSize = $productBatchSize; $this->productPriceCalculator = $productPriceCalculator ?? ObjectManager::getInstance()->get( ProductPriceCalculator::class @@ -275,6 +292,8 @@ public function __construct( ObjectManager::getInstance()->get(IndexerRegistry::class); $this->productCollectionFactory = $productCollectionFactory ?? ObjectManager::getInstance()->get(ProductCollectionFactory::class); + $this->reindexRuleProductsPrice = $reindexRuleProductsPrice ?? + ObjectManager::getInstance()->get(ReindexRuleProductsPrice::class); } /** @@ -296,7 +315,7 @@ public function reindexById($id) } $this->reindexRuleGroupWebsite->execute(); - } catch (\Exception $e) { + } catch (Exception $e) { $this->critical($e); throw new LocalizedException( __('Catalog rule indexing failed. See details in exception log.') @@ -315,7 +334,7 @@ public function reindexByIds(array $ids) { try { $this->doReindexByIds($ids); - } catch (\Exception $e) { + } catch (Exception $e) { $this->critical($e); throw new LocalizedException( __("Catalog rule indexing failed. See details in exception log.") @@ -328,6 +347,8 @@ public function reindexByIds(array $ids) * * @param array $ids * @return void + * @throws LocalizedException + * @throws Zend_Db_Statement_Exception */ protected function doReindexByIds($ids) { @@ -340,9 +361,10 @@ protected function doReindexByIds($ids) $this->reindexRuleProduct->execute($rule, $this->batchCount); } - foreach ($ids as $productId) { - $this->cleanProductPriceIndex([$productId]); - $this->reindexRuleProductPrice->execute($this->batchCount, $productId); + // batch products together, using configurable batch size parameter + foreach (array_chunk($ids, $this->productBatchSize) as $productIds) { + $this->cleanProductPriceIndex($productIds); + $this->reindexRuleProductsPrice->execute($this->batchCount, $productIds); } //the case was not handled via indexer dependency decorator or via mview configuration @@ -367,7 +389,7 @@ public function reindexFull() { try { $this->doReindexFull(); - } catch (\Exception $e) { + } catch (Exception $e) { $this->critical($e); throw new LocalizedException( __("Catalog rule indexing failed. See details in exception log.") @@ -441,6 +463,7 @@ protected function cleanByIds($productIds) * @param int $productEntityId * @param array $websiteIds * @return void + * @throws Exception */ private function assignProductToRule(Rule $rule, int $productEntityId, array $websiteIds): void { @@ -502,7 +525,7 @@ private function assignProductToRule(Rule $rule, int $productEntityId, array $we * @param Rule $rule * @param Product $product * @return $this - * @throws \Exception + * @throws Exception * @deprecated 101.1.5 * @see ReindexRuleProduct::execute * @SuppressWarnings(PHPMD.NPathComplexity) @@ -525,6 +548,7 @@ protected function applyRule(Rule $rule, $product) * @param RuleCollection $ruleCollection * @param Product $product * @return void + * @throws LocalizedException */ private function applyRules(RuleCollection $ruleCollection, Product $product): void { @@ -590,7 +614,7 @@ protected function updateRuleProductData(Rule $rule) * Apply all rules * * @param Product|null $product - * @throws \Exception + * @throws Exception * @return $this * @deprecated 101.0.0 * @see ReindexRuleProductPrice::execute @@ -661,7 +685,7 @@ protected function getRuleProductsStmt($websiteId, Product $product = null) * * @param array $arrData * @return $this - * @throws \Exception + * @throws Exception * @deprecated 101.0.0 * @see RuleProductPricesPersistor::execute */ @@ -708,7 +732,7 @@ protected function getProduct($productId) /** * Log critical exception * - * @param \Exception $e + * @param Exception $e * @return void */ protected function critical($e) diff --git a/app/code/Magento/CatalogRule/Model/Indexer/ReindexRuleProductPrice.php b/app/code/Magento/CatalogRule/Model/Indexer/ReindexRuleProductPrice.php index ccc5352567ff0..bfaea400f5dc7 100644 --- a/app/code/Magento/CatalogRule/Model/Indexer/ReindexRuleProductPrice.php +++ b/app/code/Magento/CatalogRule/Model/Indexer/ReindexRuleProductPrice.php @@ -6,9 +6,11 @@ namespace Magento\CatalogRule\Model\Indexer; +use Magento\Framework\App\ObjectManager; +use Magento\Framework\Exception\LocalizedException; use Magento\Framework\Stdlib\DateTime\TimezoneInterface; -use Magento\Store\Model\Store; use Magento\Store\Model\StoreManagerInterface; +use Zend_Db_Statement_Exception; /** * Reindex product prices according rule settings. @@ -45,6 +47,11 @@ class ReindexRuleProductPrice */ private $useWebsiteTimezone; + /** + * @var ReindexRuleProductsPriceProcessor + */ + private $reindexRuleProductsPriceProcessor; + /** * @param StoreManagerInterface $storeManager * @param RuleProductsSelectBuilder $ruleProductsSelectBuilder @@ -52,6 +59,7 @@ class ReindexRuleProductPrice * @param TimezoneInterface $localeDate * @param RuleProductPricesPersistor $pricesPersistor * @param bool $useWebsiteTimezone + * @param ReindexRuleProductsPriceProcessor|null $reindexRuleProductsPriceProcessor */ public function __construct( StoreManagerInterface $storeManager, @@ -59,7 +67,8 @@ public function __construct( ProductPriceCalculator $productPriceCalculator, TimezoneInterface $localeDate, RuleProductPricesPersistor $pricesPersistor, - bool $useWebsiteTimezone = true + bool $useWebsiteTimezone = true, + ReindexRuleProductsPriceProcessor $reindexRuleProductsPriceProcessor = null ) { $this->storeManager = $storeManager; $this->ruleProductsSelectBuilder = $ruleProductsSelectBuilder; @@ -67,6 +76,8 @@ public function __construct( $this->localeDate = $localeDate; $this->pricesPersistor = $pricesPersistor; $this->useWebsiteTimezone = $useWebsiteTimezone; + $this->reindexRuleProductsPriceProcessor = $reindexRuleProductsPriceProcessor ?? + ObjectManager::getInstance()->get(ReindexRuleProductsPriceProcessor::class); } /** @@ -76,6 +87,8 @@ public function __construct( * @param int|null $productId * @param bool $useAdditionalTable * @return bool + * @throws LocalizedException + * @throws Zend_Db_Statement_Exception * @SuppressWarnings(PHPMD.CyclomaticComplexity) */ public function execute(int $batchCount, ?int $productId = null, bool $useAdditionalTable = false) @@ -86,99 +99,15 @@ public function execute(int $batchCount, ?int $productId = null, bool $useAdditi */ foreach ($this->storeManager->getWebsites() as $website) { $productsStmt = $this->ruleProductsSelectBuilder->build($website->getId(), $productId, $useAdditionalTable); - $dayPrices = []; - $stopFlags = []; - $prevKey = null; - - $storeGroup = $this->storeManager->getGroup($website->getDefaultGroupId()); - $dateInterval = $this->useWebsiteTimezone - ? $this->getDateInterval((int)$storeGroup->getDefaultStoreId()) - : $this->getDateInterval(Store::DEFAULT_STORE_ID); - - while ($ruleData = $productsStmt->fetch()) { - $ruleProductId = $ruleData['product_id']; - $productKey = $ruleProductId . - '_' . - $ruleData['website_id'] . - '_' . - $ruleData['customer_group_id']; - - if ($prevKey && $prevKey != $productKey) { - $stopFlags = []; - if (count($dayPrices) > $batchCount) { - $this->pricesPersistor->execute($dayPrices, $useAdditionalTable); - $dayPrices = []; - } - } - - /** - * Build prices for each day - */ - foreach ($dateInterval as $date) { - $time = $date->getTimestamp(); - if (($ruleData['from_time'] == 0 || - $time >= $ruleData['from_time']) && ($ruleData['to_time'] == 0 || - $time <= $ruleData['to_time']) - ) { - $priceKey = $time . '_' . $productKey; - - if (isset($stopFlags[$priceKey])) { - continue; - } - - if (!isset($dayPrices[$priceKey])) { - $dayPrices[$priceKey] = [ - 'rule_date' => $date, - 'website_id' => $ruleData['website_id'], - 'customer_group_id' => $ruleData['customer_group_id'], - 'product_id' => $ruleProductId, - 'rule_price' => $this->productPriceCalculator->calculate($ruleData), - 'latest_start_date' => $ruleData['from_time'], - 'earliest_end_date' => $ruleData['to_time'], - ]; - } else { - $dayPrices[$priceKey]['rule_price'] = $this->productPriceCalculator->calculate( - $ruleData, - $dayPrices[$priceKey] - ); - $dayPrices[$priceKey]['latest_start_date'] = max( - $dayPrices[$priceKey]['latest_start_date'], - $ruleData['from_time'] - ); - $dayPrices[$priceKey]['earliest_end_date'] = min( - $dayPrices[$priceKey]['earliest_end_date'], - $ruleData['to_time'] - ); - } - - if ($ruleData['action_stop']) { - $stopFlags[$priceKey] = true; - } - } - } - - $prevKey = $productKey; - } - $this->pricesPersistor->execute($dayPrices, $useAdditionalTable); + $this->reindexRuleProductsPriceProcessor->execute( + $productsStmt, + $website, + $batchCount, + $useAdditionalTable, + $this->useWebsiteTimezone + ); } return true; } - - /** - * Retrieve date sequence in store time zone - * - * @param int $storeId - * @return \DateTime[] - */ - private function getDateInterval(int $storeId): array - { - $currentDate = $this->localeDate->scopeDate($storeId, null, true); - $previousDate = (clone $currentDate)->modify('-1 day'); - $previousDate->setTime(23, 59, 59); - $nextDate = (clone $currentDate)->modify('+1 day'); - $nextDate->setTime(0, 0, 0); - - return [$previousDate, $currentDate, $nextDate]; - } } diff --git a/app/code/Magento/CatalogRule/Model/Indexer/ReindexRuleProductsPrice.php b/app/code/Magento/CatalogRule/Model/Indexer/ReindexRuleProductsPrice.php new file mode 100644 index 0000000000000..71abe9781f540 --- /dev/null +++ b/app/code/Magento/CatalogRule/Model/Indexer/ReindexRuleProductsPrice.php @@ -0,0 +1,68 @@ +storeManager->getWebsites() as $website) { + $productsStmt = $this->ruleProductsSelectBuilder->buildSelect( + $website->getId(), + $productIds, + $useAdditionalTable + ); + + $this->reindexRuleProductsPriceProcessor->execute( + $productsStmt, + $website, + $batchCount, + $useAdditionalTable, + $this->useWebsiteTimezone + ); + } + + return true; + } +} diff --git a/app/code/Magento/CatalogRule/Model/Indexer/ReindexRuleProductsPriceProcessor.php b/app/code/Magento/CatalogRule/Model/Indexer/ReindexRuleProductsPriceProcessor.php new file mode 100644 index 0000000000000..36751ca841a6e --- /dev/null +++ b/app/code/Magento/CatalogRule/Model/Indexer/ReindexRuleProductsPriceProcessor.php @@ -0,0 +1,173 @@ +storeManager->getGroup($website->getDefaultGroupId()); + $dateInterval = $useWebsiteTimezone + ? $this->getDateInterval((int)$storeGroup->getDefaultStoreId()) + : $this->getDateInterval(Store::DEFAULT_STORE_ID); + + while ($ruleData = $productsStmt->fetch()) { + $ruleProductId = $ruleData['product_id']; + $productKey = $ruleProductId . + '_' . + $ruleData['website_id'] . + '_' . + $ruleData['customer_group_id']; + + if ($prevKey && $prevKey != $productKey) { + $stopFlags = []; + if (count($dayPrices) > $batchCount) { + $this->pricesPersistor->execute($dayPrices, $useAdditionalTable); + $dayPrices = []; + } + } + + /** + * Build prices for each day + */ + foreach ($dateInterval as $date) { + $this->processDate( + $ruleData, + $date, + $productKey, + $ruleProductId, + $dayPrices, + $stopFlags + ); + } + + $prevKey = $productKey; + } + $this->pricesPersistor->execute($dayPrices, $useAdditionalTable); + } + + /** + * Calculate prices for the given date + * + * @param array $ruleData + * @param DateTime $date + * @param string $productKey + * @param string $ruleProductId + * @param array $dayPrices + * @param array $stopFlags + * @return void + */ + private function processDate( + array $ruleData, + DateTime $date, + string $productKey, + string $ruleProductId, + array &$dayPrices, + array &$stopFlags + ): void { + $time = $date->getTimestamp(); + if (($ruleData['from_time'] == 0 || + $time >= $ruleData['from_time']) && ($ruleData['to_time'] == 0 || + $time <= $ruleData['to_time']) + ) { + $priceKey = $time . '_' . $productKey; + + if (isset($stopFlags[$priceKey])) { + return; + } + + if (!isset($dayPrices[$priceKey])) { + $dayPrices[$priceKey] = [ + 'rule_date' => $date, + 'website_id' => $ruleData['website_id'], + 'customer_group_id' => $ruleData['customer_group_id'], + 'product_id' => $ruleProductId, + 'rule_price' => $this->productPriceCalculator->calculate($ruleData), + 'latest_start_date' => $ruleData['from_time'], + 'earliest_end_date' => $ruleData['to_time'], + ]; + } else { + $dayPrices[$priceKey]['rule_price'] = $this->productPriceCalculator->calculate( + $ruleData, + $dayPrices[$priceKey] + ); + $dayPrices[$priceKey]['latest_start_date'] = max( + $dayPrices[$priceKey]['latest_start_date'], + $ruleData['from_time'] + ); + $dayPrices[$priceKey]['earliest_end_date'] = min( + $dayPrices[$priceKey]['earliest_end_date'], + $ruleData['to_time'] + ); + } + + if ($ruleData['action_stop']) { + $stopFlags[$priceKey] = true; + } + } + } + + /** + * Retrieve date sequence in store time zone + * + * @param int $storeId + * @return DateTime[] + */ + private function getDateInterval(int $storeId): array + { + $currentDate = $this->localeDate->scopeDate($storeId, null, true); + $previousDate = (clone $currentDate)->modify('-1 day'); + $previousDate->setTime(23, 59, 59); + $nextDate = (clone $currentDate)->modify('+1 day'); + $nextDate->setTime(0, 0, 0); + + return [$previousDate, $currentDate, $nextDate]; + } +} diff --git a/app/code/Magento/CatalogRule/Model/Indexer/RuleProductsSelectBuilder.php b/app/code/Magento/CatalogRule/Model/Indexer/RuleProductsSelectBuilder.php index e15bf6b3b1faa..058afd164672a 100644 --- a/app/code/Magento/CatalogRule/Model/Indexer/RuleProductsSelectBuilder.php +++ b/app/code/Magento/CatalogRule/Model/Indexer/RuleProductsSelectBuilder.php @@ -6,9 +6,18 @@ namespace Magento\CatalogRule\Model\Indexer; +use Magento\Catalog\Api\Data\ProductInterface; +use Magento\Catalog\Model\Product; use Magento\CatalogRule\Model\Indexer\IndexerTableSwapperInterface as TableSwapper; use Magento\Catalog\Model\ResourceModel\Indexer\ActiveTableSwitcher; +use Magento\Eav\Model\Config; use Magento\Framework\App\ObjectManager; +use Magento\Framework\App\ResourceConnection; +use Magento\Framework\EntityManager\MetadataPool; +use Magento\Store\Model\Group; +use Magento\Store\Model\Store; +use Magento\Store\Model\StoreManagerInterface; +use Zend_Db_Statement_Interface; /** * Build select for rule relation with product. @@ -16,22 +25,22 @@ class RuleProductsSelectBuilder { /** - * @var \Magento\Framework\App\ResourceConnection + * @var ResourceConnection */ private $resource; /** - * @var \Magento\Eav\Model\Config + * @var Config */ private $eavConfig; /** - * @var \Magento\Store\Model\StoreManagerInterface + * @var StoreManagerInterface */ private $storeManager; /** - * @var \Magento\Framework\EntityManager\MetadataPool + * @var MetadataPool */ private $metadataPool; @@ -46,18 +55,18 @@ class RuleProductsSelectBuilder private $tableSwapper; /** - * @param \Magento\Framework\App\ResourceConnection $resource - * @param \Magento\Eav\Model\Config $eavConfig - * @param \Magento\Store\Model\StoreManagerInterface $storeManager - * @param \Magento\Framework\EntityManager\MetadataPool $metadataPool + * @param ResourceConnection $resource + * @param Config $eavConfig + * @param StoreManagerInterface $storeManager + * @param MetadataPool $metadataPool * @param ActiveTableSwitcher $activeTableSwitcher * @param TableSwapper|null $tableSwapper */ public function __construct( - \Magento\Framework\App\ResourceConnection $resource, - \Magento\Eav\Model\Config $eavConfig, - \Magento\Store\Model\StoreManagerInterface $storeManager, - \Magento\Framework\EntityManager\MetadataPool $metadataPool, + ResourceConnection $resource, + Config $eavConfig, + StoreManagerInterface $storeManager, + MetadataPool $metadataPool, ActiveTableSwitcher $activeTableSwitcher, TableSwapper $tableSwapper = null ) { @@ -71,15 +80,18 @@ public function __construct( } /** - * Build select for indexer according passed parameters. + * Build multiple products select for indexer according passed parameters * * @param int $websiteId - * @param int|null $productId + * @param array $productIds * @param bool $useAdditionalTable - * @return \Zend_Db_Statement_Interface + * @return Zend_Db_Statement_Interface */ - public function build(int $websiteId, ?int $productId = null, bool $useAdditionalTable = false) - { + public function buildSelect( + int $websiteId, + array $productIds, + bool $useAdditionalTable = false + ): Zend_Db_Statement_Interface { $connection = $this->resource->getConnection(); $indexTable = $this->resource->getTableName('catalogrule_product'); if ($useAdditionalTable) { @@ -104,19 +116,19 @@ public function build(int $websiteId, ?int $productId = null, bool $useAdditiona ['rp.website_id', 'rp.customer_group_id', 'rp.product_id', 'rp.sort_order', 'rp.rule_id'] ); - if ($productId) { - $select->where('rp.product_id=?', $productId); + if (!empty($productIds)) { + $select->where('rp.product_id IN (?)', $productIds); } /** * Join default price and websites prices to result */ - $priceAttr = $this->eavConfig->getAttribute(\Magento\Catalog\Model\Product::ENTITY, 'price'); + $priceAttr = $this->eavConfig->getAttribute(Product::ENTITY, 'price'); $priceTable = $priceAttr->getBackend()->getTable(); $attributeId = $priceAttr->getId(); $linkField = $this->metadataPool - ->getMetadata(\Magento\Catalog\Api\Data\ProductInterface::class) + ->getMetadata(ProductInterface::class) ->getLinkField(); $select->join( ['e' => $this->resource->getTableName('catalog_product_entity')], @@ -129,16 +141,16 @@ public function build(int $websiteId, ?int $productId = null, bool $useAdditiona $select->join( ['pp_default' => $priceTable], - sprintf($joinCondition, 'pp_default', \Magento\Store\Model\Store::DEFAULT_STORE_ID), + sprintf($joinCondition, 'pp_default', Store::DEFAULT_STORE_ID), [] ); $website = $this->storeManager->getWebsite($websiteId); $defaultGroup = $website->getDefaultGroup(); - if ($defaultGroup instanceof \Magento\Store\Model\Group) { + if ($defaultGroup instanceof Group) { $storeId = $defaultGroup->getDefaultStoreId(); } else { - $storeId = \Magento\Store\Model\Store::DEFAULT_STORE_ID; + $storeId = Store::DEFAULT_STORE_ID; } $select->joinInner( @@ -164,4 +176,17 @@ public function build(int $websiteId, ?int $productId = null, bool $useAdditiona return $connection->query($select); } + + /** + * Build select for indexer according passed parameters. + * + * @param int $websiteId + * @param int|null $productId + * @param bool $useAdditionalTable + * @return Zend_Db_Statement_Interface + */ + public function build(int $websiteId, ?int $productId = null, bool $useAdditionalTable = false) + { + return $this->buildSelect($websiteId, $productId === null ? [] : [$productId], $useAdditionalTable); + } } diff --git a/app/code/Magento/CatalogRule/Test/Unit/Model/Indexer/ReindexRuleProductsPriceProcessorTest.php b/app/code/Magento/CatalogRule/Test/Unit/Model/Indexer/ReindexRuleProductsPriceProcessorTest.php new file mode 100644 index 0000000000000..1e05d1e7537e9 --- /dev/null +++ b/app/code/Magento/CatalogRule/Test/Unit/Model/Indexer/ReindexRuleProductsPriceProcessorTest.php @@ -0,0 +1,136 @@ +storeManagerMock = $this->getMockForAbstractClass(StoreManagerInterface::class); + $this->productPriceCalculatorMock = $this->createMock(ProductPriceCalculator::class); + $this->pricesPersitorMock = $this->createMock(RuleProductPricesPersistor::class); + $this->localeDateMock = $this->getMockForAbstractClass(TimezoneInterface::class); + + $this->model = new ReindexRuleProductsPriceProcessor( + $this->storeManagerMock, + $this->productPriceCalculatorMock, + $this->pricesPersitorMock, + $this->localeDateMock + ); + } + + /** + * @return void + */ + public function testExecute(): void + { + $websiteId = 234; + $defaultGroupId = 11; + $defaultStoreId = 22; + + $websiteMock = $this->getMockForAbstractClass(WebsiteInterface::class); + $websiteMock->expects($this->once()) + ->method('getId') + ->willReturn($websiteId); + $websiteMock->expects($this->once()) + ->method('getDefaultGroupId') + ->willReturn($defaultGroupId); + $this->storeManagerMock->expects($this->once()) + ->method('getWebsites') + ->willReturn([$websiteMock]); + $groupMock = $this->getMockForAbstractClass(GroupInterface::class); + $groupMock->method('getId') + ->willReturn($defaultStoreId); + $groupMock->expects($this->once()) + ->method('getDefaultStoreId') + ->willReturn($defaultStoreId); + $this->storeManagerMock->expects($this->once()) + ->method('getGroup') + ->with($defaultGroupId) + ->willReturn($groupMock); + $this->productPriceCalculatorMock->expects($this->atLeastOnce()) + ->method('calculate'); + $this->pricesPersitorMock->expects($this->atLeastOnce()) + ->method('execute'); + $this->localeDateMock->expects($this->once()) + ->method('scopeDate') + ->with($defaultStoreId, null, true) + ->willReturn(new \DateTime()); + + $statementMock = $this->createMock(\Zend_Db_Statement_Interface::class); + + $ruleData = [ + [ + 'product_id' => 55, + 'website_id' => 234, + 'customer_group_id' => 2, + 'from_time' => mktime(0, 0, 0, (int)date('m'), (int)date('d') - 100), + 'to_time' => mktime(0, 0, 0, (int)date('m'), (int)date('d') + 100), + 'action_stop' => true + ], + [ + 'product_id' => 66, + 'website_id' => 234, + 'customer_group_id' => 2, + 'from_time' => mktime(0, 0, 0, (int)date('m'), (int)date('d') - 100), + 'to_time' => mktime(0, 0, 0, (int)date('m'), (int)date('d') + 100), + 'action_stop' => true + ] + ]; + + $statementMock + ->method('fetch') + ->willReturnOnConsecutiveCalls($ruleData[0], $ruleData[1], false); + + $this->model->execute( + $statementMock, + $websiteMock, + 100, + true, + false + ); + } +} diff --git a/app/code/Magento/CatalogRule/Test/Unit/Model/Indexer/ReindexRuleProductsPriceTest.php b/app/code/Magento/CatalogRule/Test/Unit/Model/Indexer/ReindexRuleProductsPriceTest.php new file mode 100644 index 0000000000000..b17f4611f4e8e --- /dev/null +++ b/app/code/Magento/CatalogRule/Test/Unit/Model/Indexer/ReindexRuleProductsPriceTest.php @@ -0,0 +1,111 @@ +storeManagerMock = $this->getMockForAbstractClass(StoreManagerInterface::class); + $this->ruleProductsSelectBuilderMock = $this->createMock(RuleProductsSelectBuilder::class); + $this->reindexRuleProductsPriceProcessorMock = $this->createMock(ReindexRuleProductsPriceProcessor::class); + + $this->model = new ReindexRuleProductsPrice( + $this->storeManagerMock, + $this->reindexRuleProductsPriceProcessorMock, + $this->ruleProductsSelectBuilderMock, + true, + ); + } + + /** + * @return void + * @throws LocalizedException + * @throws Zend_Db_Statement_Exception + */ + public function testExecute(): void + { + $websiteId = 234; + $productIds = [55, 66]; + + $websiteMock = $this->getMockForAbstractClass(WebsiteInterface::class); + $websiteMock->expects($this->once()) + ->method('getId') + ->willReturn($websiteId); + $this->storeManagerMock->expects($this->once()) + ->method('getWebsites') + ->willReturn([$websiteMock]); + + $statementMock = $this->createMock(\Zend_Db_Statement_Interface::class); + $this->ruleProductsSelectBuilderMock->expects($this->once()) + ->method('buildSelect') + ->with($websiteId, $productIds, true) + ->willReturn($statementMock); + + $ruleData = [ + [ + 'product_id' => 100, + 'website_id' => 1, + 'customer_group_id' => 2, + 'from_time' => mktime(0, 0, 0, (int)date('m'), (int)date('d') - 100), + 'to_time' => mktime(0, 0, 0, (int)date('m'), (int)date('d') + 100), + 'action_stop' => true + ], + [ + 'product_id' => 200, + 'website_id' => 1, + 'customer_group_id' => 2, + 'from_time' => mktime(0, 0, 0, (int)date('m'), (int)date('d') - 100), + 'to_time' => mktime(0, 0, 0, (int)date('m'), (int)date('d') + 100), + 'action_stop' => true + ] + ]; + + $statementMock + ->method('fetch') + ->willReturnOnConsecutiveCalls($ruleData[0], $ruleData[1], false); + + $this->reindexRuleProductsPriceProcessorMock->expects($this->exactly(2)) + ->method('execute'); + + $this->assertTrue($this->model->execute(1, $productIds, true)); + } +} From d4015e8fa15e733c41c9f52b07989565533bd100 Mon Sep 17 00:00:00 2001 From: Lachlan Turner Date: Fri, 18 Aug 2023 09:02:50 +0930 Subject: [PATCH 020/104] Batch products together during catalog rule indexer calculation to improve performance --- .../Model/Indexer/IndexBuilder.php | 46 +++-- .../Model/Indexer/ReindexRuleProductPrice.php | 115 +++--------- .../Indexer/ReindexRuleProductsPrice.php | 68 +++++++ .../ReindexRuleProductsPriceProcessor.php | 173 ++++++++++++++++++ .../Indexer/RuleProductsSelectBuilder.php | 73 +++++--- .../ReindexRuleProductsPriceProcessorTest.php | 136 ++++++++++++++ .../Indexer/ReindexRuleProductsPriceTest.php | 111 +++++++++++ 7 files changed, 594 insertions(+), 128 deletions(-) create mode 100644 app/code/Magento/CatalogRule/Model/Indexer/ReindexRuleProductsPrice.php create mode 100644 app/code/Magento/CatalogRule/Model/Indexer/ReindexRuleProductsPriceProcessor.php create mode 100644 app/code/Magento/CatalogRule/Test/Unit/Model/Indexer/ReindexRuleProductsPriceProcessorTest.php create mode 100644 app/code/Magento/CatalogRule/Test/Unit/Model/Indexer/ReindexRuleProductsPriceTest.php diff --git a/app/code/Magento/CatalogRule/Model/Indexer/IndexBuilder.php b/app/code/Magento/CatalogRule/Model/Indexer/IndexBuilder.php index 5d1f91f962834..3f2e039d0d6dd 100644 --- a/app/code/Magento/CatalogRule/Model/Indexer/IndexBuilder.php +++ b/app/code/Magento/CatalogRule/Model/Indexer/IndexBuilder.php @@ -6,6 +6,7 @@ namespace Magento\CatalogRule\Model\Indexer; +use Exception; use Magento\Catalog\Model\Product; use Magento\Catalog\Model\ProductFactory; use Magento\Catalog\Model\ResourceModel\Indexer\ActiveTableSwitcher; @@ -28,6 +29,7 @@ use Magento\Store\Model\ScopeInterface; use Magento\Store\Model\StoreManagerInterface; use Psr\Log\LoggerInterface; +use Zend_Db_Statement_Exception; /** * Catalog rule index builder @@ -181,6 +183,16 @@ class IndexBuilder */ private $productCollectionFactory; + /** + * @var ReindexRuleProductsPrice + */ + private $reindexRuleProductsPrice; + + /** + * @var int + */ + private $productBatchSize; + /** * @param RuleCollectionFactory $ruleCollectionFactory * @param PriceCurrencyInterface $priceCurrency @@ -204,6 +216,8 @@ class IndexBuilder * @param TimezoneInterface|null $localeDate * @param ProductCollectionFactory|null $productCollectionFactory * @param IndexerRegistry|null $indexerRegistry + * @param ReindexRuleProductsPrice|null $reindexRuleProductsPrice + * @param int $productBatchSize * @SuppressWarnings(PHPMD.ExcessiveParameterList) * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ @@ -229,7 +243,9 @@ public function __construct( TableSwapper $tableSwapper = null, TimezoneInterface $localeDate = null, ProductCollectionFactory $productCollectionFactory = null, - IndexerRegistry $indexerRegistry = null + IndexerRegistry $indexerRegistry = null, + ReindexRuleProductsPrice $reindexRuleProductsPrice = null, + int $productBatchSize = 1000 ) { $this->resource = $resource; $this->connection = $resource->getConnection(); @@ -242,6 +258,7 @@ public function __construct( $this->dateTime = $dateTime; $this->productFactory = $productFactory; $this->batchCount = $batchCount; + $this->productBatchSize = $productBatchSize; $this->productPriceCalculator = $productPriceCalculator ?? ObjectManager::getInstance()->get( ProductPriceCalculator::class @@ -275,6 +292,8 @@ public function __construct( ObjectManager::getInstance()->get(IndexerRegistry::class); $this->productCollectionFactory = $productCollectionFactory ?? ObjectManager::getInstance()->get(ProductCollectionFactory::class); + $this->reindexRuleProductsPrice = $reindexRuleProductsPrice ?? + ObjectManager::getInstance()->get(ReindexRuleProductsPrice::class); } /** @@ -296,7 +315,7 @@ public function reindexById($id) } $this->reindexRuleGroupWebsite->execute(); - } catch (\Exception $e) { + } catch (Exception $e) { $this->critical($e); throw new LocalizedException( __('Catalog rule indexing failed. See details in exception log.') @@ -315,7 +334,7 @@ public function reindexByIds(array $ids) { try { $this->doReindexByIds($ids); - } catch (\Exception $e) { + } catch (Exception $e) { $this->critical($e); throw new LocalizedException( __("Catalog rule indexing failed. See details in exception log.") @@ -328,6 +347,8 @@ public function reindexByIds(array $ids) * * @param array $ids * @return void + * @throws LocalizedException + * @throws Zend_Db_Statement_Exception */ protected function doReindexByIds($ids) { @@ -340,9 +361,10 @@ protected function doReindexByIds($ids) $this->reindexRuleProduct->execute($rule, $this->batchCount); } - foreach ($ids as $productId) { - $this->cleanProductPriceIndex([$productId]); - $this->reindexRuleProductPrice->execute($this->batchCount, $productId); + // batch products together, using configurable batch size parameter + foreach (array_chunk($ids, $this->productBatchSize) as $productIds) { + $this->cleanProductPriceIndex($productIds); + $this->reindexRuleProductsPrice->execute($this->batchCount, $productIds); } //the case was not handled via indexer dependency decorator or via mview configuration @@ -367,7 +389,7 @@ public function reindexFull() { try { $this->doReindexFull(); - } catch (\Exception $e) { + } catch (Exception $e) { $this->critical($e); throw new LocalizedException( __("Catalog rule indexing failed. See details in exception log.") @@ -441,6 +463,7 @@ protected function cleanByIds($productIds) * @param int $productEntityId * @param array $websiteIds * @return void + * @throws Exception */ private function assignProductToRule(Rule $rule, int $productEntityId, array $websiteIds): void { @@ -502,7 +525,7 @@ private function assignProductToRule(Rule $rule, int $productEntityId, array $we * @param Rule $rule * @param Product $product * @return $this - * @throws \Exception + * @throws Exception * @deprecated 101.1.5 * @see ReindexRuleProduct::execute * @SuppressWarnings(PHPMD.NPathComplexity) @@ -525,6 +548,7 @@ protected function applyRule(Rule $rule, $product) * @param RuleCollection $ruleCollection * @param Product $product * @return void + * @throws LocalizedException */ private function applyRules(RuleCollection $ruleCollection, Product $product): void { @@ -590,7 +614,7 @@ protected function updateRuleProductData(Rule $rule) * Apply all rules * * @param Product|null $product - * @throws \Exception + * @throws Exception * @return $this * @deprecated 101.0.0 * @see ReindexRuleProductPrice::execute @@ -661,7 +685,7 @@ protected function getRuleProductsStmt($websiteId, Product $product = null) * * @param array $arrData * @return $this - * @throws \Exception + * @throws Exception * @deprecated 101.0.0 * @see RuleProductPricesPersistor::execute */ @@ -708,7 +732,7 @@ protected function getProduct($productId) /** * Log critical exception * - * @param \Exception $e + * @param Exception $e * @return void */ protected function critical($e) diff --git a/app/code/Magento/CatalogRule/Model/Indexer/ReindexRuleProductPrice.php b/app/code/Magento/CatalogRule/Model/Indexer/ReindexRuleProductPrice.php index ccc5352567ff0..bfaea400f5dc7 100644 --- a/app/code/Magento/CatalogRule/Model/Indexer/ReindexRuleProductPrice.php +++ b/app/code/Magento/CatalogRule/Model/Indexer/ReindexRuleProductPrice.php @@ -6,9 +6,11 @@ namespace Magento\CatalogRule\Model\Indexer; +use Magento\Framework\App\ObjectManager; +use Magento\Framework\Exception\LocalizedException; use Magento\Framework\Stdlib\DateTime\TimezoneInterface; -use Magento\Store\Model\Store; use Magento\Store\Model\StoreManagerInterface; +use Zend_Db_Statement_Exception; /** * Reindex product prices according rule settings. @@ -45,6 +47,11 @@ class ReindexRuleProductPrice */ private $useWebsiteTimezone; + /** + * @var ReindexRuleProductsPriceProcessor + */ + private $reindexRuleProductsPriceProcessor; + /** * @param StoreManagerInterface $storeManager * @param RuleProductsSelectBuilder $ruleProductsSelectBuilder @@ -52,6 +59,7 @@ class ReindexRuleProductPrice * @param TimezoneInterface $localeDate * @param RuleProductPricesPersistor $pricesPersistor * @param bool $useWebsiteTimezone + * @param ReindexRuleProductsPriceProcessor|null $reindexRuleProductsPriceProcessor */ public function __construct( StoreManagerInterface $storeManager, @@ -59,7 +67,8 @@ public function __construct( ProductPriceCalculator $productPriceCalculator, TimezoneInterface $localeDate, RuleProductPricesPersistor $pricesPersistor, - bool $useWebsiteTimezone = true + bool $useWebsiteTimezone = true, + ReindexRuleProductsPriceProcessor $reindexRuleProductsPriceProcessor = null ) { $this->storeManager = $storeManager; $this->ruleProductsSelectBuilder = $ruleProductsSelectBuilder; @@ -67,6 +76,8 @@ public function __construct( $this->localeDate = $localeDate; $this->pricesPersistor = $pricesPersistor; $this->useWebsiteTimezone = $useWebsiteTimezone; + $this->reindexRuleProductsPriceProcessor = $reindexRuleProductsPriceProcessor ?? + ObjectManager::getInstance()->get(ReindexRuleProductsPriceProcessor::class); } /** @@ -76,6 +87,8 @@ public function __construct( * @param int|null $productId * @param bool $useAdditionalTable * @return bool + * @throws LocalizedException + * @throws Zend_Db_Statement_Exception * @SuppressWarnings(PHPMD.CyclomaticComplexity) */ public function execute(int $batchCount, ?int $productId = null, bool $useAdditionalTable = false) @@ -86,99 +99,15 @@ public function execute(int $batchCount, ?int $productId = null, bool $useAdditi */ foreach ($this->storeManager->getWebsites() as $website) { $productsStmt = $this->ruleProductsSelectBuilder->build($website->getId(), $productId, $useAdditionalTable); - $dayPrices = []; - $stopFlags = []; - $prevKey = null; - - $storeGroup = $this->storeManager->getGroup($website->getDefaultGroupId()); - $dateInterval = $this->useWebsiteTimezone - ? $this->getDateInterval((int)$storeGroup->getDefaultStoreId()) - : $this->getDateInterval(Store::DEFAULT_STORE_ID); - - while ($ruleData = $productsStmt->fetch()) { - $ruleProductId = $ruleData['product_id']; - $productKey = $ruleProductId . - '_' . - $ruleData['website_id'] . - '_' . - $ruleData['customer_group_id']; - - if ($prevKey && $prevKey != $productKey) { - $stopFlags = []; - if (count($dayPrices) > $batchCount) { - $this->pricesPersistor->execute($dayPrices, $useAdditionalTable); - $dayPrices = []; - } - } - - /** - * Build prices for each day - */ - foreach ($dateInterval as $date) { - $time = $date->getTimestamp(); - if (($ruleData['from_time'] == 0 || - $time >= $ruleData['from_time']) && ($ruleData['to_time'] == 0 || - $time <= $ruleData['to_time']) - ) { - $priceKey = $time . '_' . $productKey; - - if (isset($stopFlags[$priceKey])) { - continue; - } - - if (!isset($dayPrices[$priceKey])) { - $dayPrices[$priceKey] = [ - 'rule_date' => $date, - 'website_id' => $ruleData['website_id'], - 'customer_group_id' => $ruleData['customer_group_id'], - 'product_id' => $ruleProductId, - 'rule_price' => $this->productPriceCalculator->calculate($ruleData), - 'latest_start_date' => $ruleData['from_time'], - 'earliest_end_date' => $ruleData['to_time'], - ]; - } else { - $dayPrices[$priceKey]['rule_price'] = $this->productPriceCalculator->calculate( - $ruleData, - $dayPrices[$priceKey] - ); - $dayPrices[$priceKey]['latest_start_date'] = max( - $dayPrices[$priceKey]['latest_start_date'], - $ruleData['from_time'] - ); - $dayPrices[$priceKey]['earliest_end_date'] = min( - $dayPrices[$priceKey]['earliest_end_date'], - $ruleData['to_time'] - ); - } - - if ($ruleData['action_stop']) { - $stopFlags[$priceKey] = true; - } - } - } - - $prevKey = $productKey; - } - $this->pricesPersistor->execute($dayPrices, $useAdditionalTable); + $this->reindexRuleProductsPriceProcessor->execute( + $productsStmt, + $website, + $batchCount, + $useAdditionalTable, + $this->useWebsiteTimezone + ); } return true; } - - /** - * Retrieve date sequence in store time zone - * - * @param int $storeId - * @return \DateTime[] - */ - private function getDateInterval(int $storeId): array - { - $currentDate = $this->localeDate->scopeDate($storeId, null, true); - $previousDate = (clone $currentDate)->modify('-1 day'); - $previousDate->setTime(23, 59, 59); - $nextDate = (clone $currentDate)->modify('+1 day'); - $nextDate->setTime(0, 0, 0); - - return [$previousDate, $currentDate, $nextDate]; - } } diff --git a/app/code/Magento/CatalogRule/Model/Indexer/ReindexRuleProductsPrice.php b/app/code/Magento/CatalogRule/Model/Indexer/ReindexRuleProductsPrice.php new file mode 100644 index 0000000000000..71abe9781f540 --- /dev/null +++ b/app/code/Magento/CatalogRule/Model/Indexer/ReindexRuleProductsPrice.php @@ -0,0 +1,68 @@ +storeManager->getWebsites() as $website) { + $productsStmt = $this->ruleProductsSelectBuilder->buildSelect( + $website->getId(), + $productIds, + $useAdditionalTable + ); + + $this->reindexRuleProductsPriceProcessor->execute( + $productsStmt, + $website, + $batchCount, + $useAdditionalTable, + $this->useWebsiteTimezone + ); + } + + return true; + } +} diff --git a/app/code/Magento/CatalogRule/Model/Indexer/ReindexRuleProductsPriceProcessor.php b/app/code/Magento/CatalogRule/Model/Indexer/ReindexRuleProductsPriceProcessor.php new file mode 100644 index 0000000000000..36751ca841a6e --- /dev/null +++ b/app/code/Magento/CatalogRule/Model/Indexer/ReindexRuleProductsPriceProcessor.php @@ -0,0 +1,173 @@ +storeManager->getGroup($website->getDefaultGroupId()); + $dateInterval = $useWebsiteTimezone + ? $this->getDateInterval((int)$storeGroup->getDefaultStoreId()) + : $this->getDateInterval(Store::DEFAULT_STORE_ID); + + while ($ruleData = $productsStmt->fetch()) { + $ruleProductId = $ruleData['product_id']; + $productKey = $ruleProductId . + '_' . + $ruleData['website_id'] . + '_' . + $ruleData['customer_group_id']; + + if ($prevKey && $prevKey != $productKey) { + $stopFlags = []; + if (count($dayPrices) > $batchCount) { + $this->pricesPersistor->execute($dayPrices, $useAdditionalTable); + $dayPrices = []; + } + } + + /** + * Build prices for each day + */ + foreach ($dateInterval as $date) { + $this->processDate( + $ruleData, + $date, + $productKey, + $ruleProductId, + $dayPrices, + $stopFlags + ); + } + + $prevKey = $productKey; + } + $this->pricesPersistor->execute($dayPrices, $useAdditionalTable); + } + + /** + * Calculate prices for the given date + * + * @param array $ruleData + * @param DateTime $date + * @param string $productKey + * @param string $ruleProductId + * @param array $dayPrices + * @param array $stopFlags + * @return void + */ + private function processDate( + array $ruleData, + DateTime $date, + string $productKey, + string $ruleProductId, + array &$dayPrices, + array &$stopFlags + ): void { + $time = $date->getTimestamp(); + if (($ruleData['from_time'] == 0 || + $time >= $ruleData['from_time']) && ($ruleData['to_time'] == 0 || + $time <= $ruleData['to_time']) + ) { + $priceKey = $time . '_' . $productKey; + + if (isset($stopFlags[$priceKey])) { + return; + } + + if (!isset($dayPrices[$priceKey])) { + $dayPrices[$priceKey] = [ + 'rule_date' => $date, + 'website_id' => $ruleData['website_id'], + 'customer_group_id' => $ruleData['customer_group_id'], + 'product_id' => $ruleProductId, + 'rule_price' => $this->productPriceCalculator->calculate($ruleData), + 'latest_start_date' => $ruleData['from_time'], + 'earliest_end_date' => $ruleData['to_time'], + ]; + } else { + $dayPrices[$priceKey]['rule_price'] = $this->productPriceCalculator->calculate( + $ruleData, + $dayPrices[$priceKey] + ); + $dayPrices[$priceKey]['latest_start_date'] = max( + $dayPrices[$priceKey]['latest_start_date'], + $ruleData['from_time'] + ); + $dayPrices[$priceKey]['earliest_end_date'] = min( + $dayPrices[$priceKey]['earliest_end_date'], + $ruleData['to_time'] + ); + } + + if ($ruleData['action_stop']) { + $stopFlags[$priceKey] = true; + } + } + } + + /** + * Retrieve date sequence in store time zone + * + * @param int $storeId + * @return DateTime[] + */ + private function getDateInterval(int $storeId): array + { + $currentDate = $this->localeDate->scopeDate($storeId, null, true); + $previousDate = (clone $currentDate)->modify('-1 day'); + $previousDate->setTime(23, 59, 59); + $nextDate = (clone $currentDate)->modify('+1 day'); + $nextDate->setTime(0, 0, 0); + + return [$previousDate, $currentDate, $nextDate]; + } +} diff --git a/app/code/Magento/CatalogRule/Model/Indexer/RuleProductsSelectBuilder.php b/app/code/Magento/CatalogRule/Model/Indexer/RuleProductsSelectBuilder.php index e15bf6b3b1faa..058afd164672a 100644 --- a/app/code/Magento/CatalogRule/Model/Indexer/RuleProductsSelectBuilder.php +++ b/app/code/Magento/CatalogRule/Model/Indexer/RuleProductsSelectBuilder.php @@ -6,9 +6,18 @@ namespace Magento\CatalogRule\Model\Indexer; +use Magento\Catalog\Api\Data\ProductInterface; +use Magento\Catalog\Model\Product; use Magento\CatalogRule\Model\Indexer\IndexerTableSwapperInterface as TableSwapper; use Magento\Catalog\Model\ResourceModel\Indexer\ActiveTableSwitcher; +use Magento\Eav\Model\Config; use Magento\Framework\App\ObjectManager; +use Magento\Framework\App\ResourceConnection; +use Magento\Framework\EntityManager\MetadataPool; +use Magento\Store\Model\Group; +use Magento\Store\Model\Store; +use Magento\Store\Model\StoreManagerInterface; +use Zend_Db_Statement_Interface; /** * Build select for rule relation with product. @@ -16,22 +25,22 @@ class RuleProductsSelectBuilder { /** - * @var \Magento\Framework\App\ResourceConnection + * @var ResourceConnection */ private $resource; /** - * @var \Magento\Eav\Model\Config + * @var Config */ private $eavConfig; /** - * @var \Magento\Store\Model\StoreManagerInterface + * @var StoreManagerInterface */ private $storeManager; /** - * @var \Magento\Framework\EntityManager\MetadataPool + * @var MetadataPool */ private $metadataPool; @@ -46,18 +55,18 @@ class RuleProductsSelectBuilder private $tableSwapper; /** - * @param \Magento\Framework\App\ResourceConnection $resource - * @param \Magento\Eav\Model\Config $eavConfig - * @param \Magento\Store\Model\StoreManagerInterface $storeManager - * @param \Magento\Framework\EntityManager\MetadataPool $metadataPool + * @param ResourceConnection $resource + * @param Config $eavConfig + * @param StoreManagerInterface $storeManager + * @param MetadataPool $metadataPool * @param ActiveTableSwitcher $activeTableSwitcher * @param TableSwapper|null $tableSwapper */ public function __construct( - \Magento\Framework\App\ResourceConnection $resource, - \Magento\Eav\Model\Config $eavConfig, - \Magento\Store\Model\StoreManagerInterface $storeManager, - \Magento\Framework\EntityManager\MetadataPool $metadataPool, + ResourceConnection $resource, + Config $eavConfig, + StoreManagerInterface $storeManager, + MetadataPool $metadataPool, ActiveTableSwitcher $activeTableSwitcher, TableSwapper $tableSwapper = null ) { @@ -71,15 +80,18 @@ public function __construct( } /** - * Build select for indexer according passed parameters. + * Build multiple products select for indexer according passed parameters * * @param int $websiteId - * @param int|null $productId + * @param array $productIds * @param bool $useAdditionalTable - * @return \Zend_Db_Statement_Interface + * @return Zend_Db_Statement_Interface */ - public function build(int $websiteId, ?int $productId = null, bool $useAdditionalTable = false) - { + public function buildSelect( + int $websiteId, + array $productIds, + bool $useAdditionalTable = false + ): Zend_Db_Statement_Interface { $connection = $this->resource->getConnection(); $indexTable = $this->resource->getTableName('catalogrule_product'); if ($useAdditionalTable) { @@ -104,19 +116,19 @@ public function build(int $websiteId, ?int $productId = null, bool $useAdditiona ['rp.website_id', 'rp.customer_group_id', 'rp.product_id', 'rp.sort_order', 'rp.rule_id'] ); - if ($productId) { - $select->where('rp.product_id=?', $productId); + if (!empty($productIds)) { + $select->where('rp.product_id IN (?)', $productIds); } /** * Join default price and websites prices to result */ - $priceAttr = $this->eavConfig->getAttribute(\Magento\Catalog\Model\Product::ENTITY, 'price'); + $priceAttr = $this->eavConfig->getAttribute(Product::ENTITY, 'price'); $priceTable = $priceAttr->getBackend()->getTable(); $attributeId = $priceAttr->getId(); $linkField = $this->metadataPool - ->getMetadata(\Magento\Catalog\Api\Data\ProductInterface::class) + ->getMetadata(ProductInterface::class) ->getLinkField(); $select->join( ['e' => $this->resource->getTableName('catalog_product_entity')], @@ -129,16 +141,16 @@ public function build(int $websiteId, ?int $productId = null, bool $useAdditiona $select->join( ['pp_default' => $priceTable], - sprintf($joinCondition, 'pp_default', \Magento\Store\Model\Store::DEFAULT_STORE_ID), + sprintf($joinCondition, 'pp_default', Store::DEFAULT_STORE_ID), [] ); $website = $this->storeManager->getWebsite($websiteId); $defaultGroup = $website->getDefaultGroup(); - if ($defaultGroup instanceof \Magento\Store\Model\Group) { + if ($defaultGroup instanceof Group) { $storeId = $defaultGroup->getDefaultStoreId(); } else { - $storeId = \Magento\Store\Model\Store::DEFAULT_STORE_ID; + $storeId = Store::DEFAULT_STORE_ID; } $select->joinInner( @@ -164,4 +176,17 @@ public function build(int $websiteId, ?int $productId = null, bool $useAdditiona return $connection->query($select); } + + /** + * Build select for indexer according passed parameters. + * + * @param int $websiteId + * @param int|null $productId + * @param bool $useAdditionalTable + * @return Zend_Db_Statement_Interface + */ + public function build(int $websiteId, ?int $productId = null, bool $useAdditionalTable = false) + { + return $this->buildSelect($websiteId, $productId === null ? [] : [$productId], $useAdditionalTable); + } } diff --git a/app/code/Magento/CatalogRule/Test/Unit/Model/Indexer/ReindexRuleProductsPriceProcessorTest.php b/app/code/Magento/CatalogRule/Test/Unit/Model/Indexer/ReindexRuleProductsPriceProcessorTest.php new file mode 100644 index 0000000000000..ec8d1b6cb70af --- /dev/null +++ b/app/code/Magento/CatalogRule/Test/Unit/Model/Indexer/ReindexRuleProductsPriceProcessorTest.php @@ -0,0 +1,136 @@ +storeManagerMock = $this->getMockForAbstractClass(StoreManagerInterface::class); + $this->productPriceCalculatorMock = $this->createMock(ProductPriceCalculator::class); + $this->pricesPersitorMock = $this->createMock(RuleProductPricesPersistor::class); + $this->localeDateMock = $this->getMockForAbstractClass(TimezoneInterface::class); + + $this->model = new ReindexRuleProductsPriceProcessor( + $this->storeManagerMock, + $this->productPriceCalculatorMock, + $this->pricesPersitorMock, + $this->localeDateMock + ); + } + + /** + * @return void + */ + public function testExecute(): void + { + $websiteId = 234; + $defaultGroupId = 11; + $defaultStoreId = 22; + + $websiteMock = $this->getMockForAbstractClass(WebsiteInterface::class); + $websiteMock->expects($this->once()) + ->method('getId') + ->willReturn($websiteId); + $websiteMock->expects($this->once()) + ->method('getDefaultGroupId') + ->willReturn($defaultGroupId); + $this->storeManagerMock->expects($this->once()) + ->method('getWebsites') + ->willReturn([$websiteMock]); + $groupMock = $this->getMockForAbstractClass(GroupInterface::class); + $groupMock->method('getId') + ->willReturn($defaultStoreId); + $groupMock->expects($this->once()) + ->method('getDefaultStoreId') + ->willReturn($defaultStoreId); + $this->storeManagerMock->expects($this->once()) + ->method('getGroup') + ->with($defaultGroupId) + ->willReturn($groupMock); + $this->productPriceCalculatorMock->expects($this->atLeastOnce()) + ->method('calculate'); + $this->pricesPersitorMock->expects($this->atLeastOnce()) + ->method('execute'); + $this->localeDateMock->expects($this->once()) + ->method('scopeDate') + ->with($defaultStoreId, null, true) + ->willReturn(new \DateTime()); + + $statementMock = $this->createMock(\Zend_Db_Statement_Interface::class); + + $ruleData = [ + [ + 'product_id' => 55, + 'website_id' => 234, + 'customer_group_id' => 2, + 'from_time' => mktime(0, 0, 0, (int)date('m'), (int)date('d') - 100), + 'to_time' => mktime(0, 0, 0, (int)date('m'), (int)date('d') + 100), + 'action_stop' => true + ], + [ + 'product_id' => 66, + 'website_id' => 234, + 'customer_group_id' => 2, + 'from_time' => mktime(0, 0, 0, (int)date('m'), (int)date('d') - 100), + 'to_time' => mktime(0, 0, 0, (int)date('m'), (int)date('d') + 100), + 'action_stop' => true + ] + ]; + + $statementMock + ->method('fetch') + ->willReturnOnConsecutiveCalls($ruleData[0], $ruleData[1], false); + + $this->model->execute( + $statementMock, + $websiteMock, + 100, + true, + true + ); + } +} diff --git a/app/code/Magento/CatalogRule/Test/Unit/Model/Indexer/ReindexRuleProductsPriceTest.php b/app/code/Magento/CatalogRule/Test/Unit/Model/Indexer/ReindexRuleProductsPriceTest.php new file mode 100644 index 0000000000000..45251da762f84 --- /dev/null +++ b/app/code/Magento/CatalogRule/Test/Unit/Model/Indexer/ReindexRuleProductsPriceTest.php @@ -0,0 +1,111 @@ +storeManagerMock = $this->getMockForAbstractClass(StoreManagerInterface::class); + $this->ruleProductsSelectBuilderMock = $this->createMock(RuleProductsSelectBuilder::class); + $this->reindexRuleProductsPriceProcessorMock = $this->createMock(ReindexRuleProductsPriceProcessor::class); + + $this->model = new ReindexRuleProductsPrice( + $this->storeManagerMock, + $this->reindexRuleProductsPriceProcessorMock, + $this->ruleProductsSelectBuilderMock, + true, + ); + } + + /** + * @return void + * @throws LocalizedException + * @throws Zend_Db_Statement_Exception + */ + public function testExecute(): void + { + $websiteId = 234; + $productIds = [55, 66]; + + $websiteMock = $this->getMockForAbstractClass(WebsiteInterface::class); + $websiteMock->expects($this->once()) + ->method('getId') + ->willReturn($websiteId); + $this->storeManagerMock->expects($this->once()) + ->method('getWebsites') + ->willReturn([$websiteMock]); + + $statementMock = $this->createMock(\Zend_Db_Statement_Interface::class); + $this->ruleProductsSelectBuilderMock->expects($this->once()) + ->method('buildSelect') + ->with($websiteId, $productIds, true) + ->willReturn($statementMock); + + $ruleData = [ + [ + 'product_id' => 100, + 'website_id' => 1, + 'customer_group_id' => 2, + 'from_time' => mktime(0, 0, 0, (int)date('m'), (int)date('d') - 100), + 'to_time' => mktime(0, 0, 0, (int)date('m'), (int)date('d') + 100), + 'action_stop' => true + ], + [ + 'product_id' => 200, + 'website_id' => 1, + 'customer_group_id' => 2, + 'from_time' => mktime(0, 0, 0, (int)date('m'), (int)date('d') - 100), + 'to_time' => mktime(0, 0, 0, (int)date('m'), (int)date('d') + 100), + 'action_stop' => true + ] + ]; + + $statementMock + ->method('fetch') + ->willReturnOnConsecutiveCalls($ruleData[0], $ruleData[1], false); + + $this->reindexRuleProductsPriceProcessorMock->expects($this->once()) + ->method('execute'); + + $this->assertTrue($this->model->execute(1, $productIds, true)); + } +} From 394513872d334b1b651977253a1de7298d472649 Mon Sep 17 00:00:00 2001 From: Lachlan Turner Date: Mon, 21 Aug 2023 10:32:47 +0930 Subject: [PATCH 021/104] Fixing unit test errors --- .../ReindexRuleProductsPriceProcessor.php | 6 ++-- .../Indexer/ReindexRuleProductPriceTest.php | 35 ++++++------------- .../ReindexRuleProductsPriceProcessorTest.php | 10 ------ 3 files changed, 13 insertions(+), 38 deletions(-) diff --git a/app/code/Magento/CatalogRule/Model/Indexer/ReindexRuleProductsPriceProcessor.php b/app/code/Magento/CatalogRule/Model/Indexer/ReindexRuleProductsPriceProcessor.php index 36751ca841a6e..f99653458f089 100644 --- a/app/code/Magento/CatalogRule/Model/Indexer/ReindexRuleProductsPriceProcessor.php +++ b/app/code/Magento/CatalogRule/Model/Indexer/ReindexRuleProductsPriceProcessor.php @@ -59,7 +59,7 @@ public function execute( : $this->getDateInterval(Store::DEFAULT_STORE_ID); while ($ruleData = $productsStmt->fetch()) { - $ruleProductId = $ruleData['product_id']; + $ruleProductId = (int)$ruleData['product_id']; $productKey = $ruleProductId . '_' . $ruleData['website_id'] . @@ -99,7 +99,7 @@ public function execute( * @param array $ruleData * @param DateTime $date * @param string $productKey - * @param string $ruleProductId + * @param int $ruleProductId * @param array $dayPrices * @param array $stopFlags * @return void @@ -108,7 +108,7 @@ private function processDate( array $ruleData, DateTime $date, string $productKey, - string $ruleProductId, + int $ruleProductId, array &$dayPrices, array &$stopFlags ): void { diff --git a/app/code/Magento/CatalogRule/Test/Unit/Model/Indexer/ReindexRuleProductPriceTest.php b/app/code/Magento/CatalogRule/Test/Unit/Model/Indexer/ReindexRuleProductPriceTest.php index 4d31ac1096c90..a49a0e007e5a7 100644 --- a/app/code/Magento/CatalogRule/Test/Unit/Model/Indexer/ReindexRuleProductPriceTest.php +++ b/app/code/Magento/CatalogRule/Test/Unit/Model/Indexer/ReindexRuleProductPriceTest.php @@ -9,10 +9,10 @@ use Magento\CatalogRule\Model\Indexer\ProductPriceCalculator; use Magento\CatalogRule\Model\Indexer\ReindexRuleProductPrice; +use Magento\CatalogRule\Model\Indexer\ReindexRuleProductsPriceProcessor; use Magento\CatalogRule\Model\Indexer\RuleProductPricesPersistor; use Magento\CatalogRule\Model\Indexer\RuleProductsSelectBuilder; use Magento\Framework\Stdlib\DateTime\TimezoneInterface; -use Magento\Store\Api\Data\GroupInterface; use Magento\Store\Api\Data\WebsiteInterface; use Magento\Store\Model\StoreManagerInterface; use PHPUnit\Framework\MockObject\MockObject; @@ -50,6 +50,11 @@ class ReindexRuleProductPriceTest extends TestCase */ private $pricesPersistorMock; + /** + * @var ReindexRuleProductsPriceProcessor|MockObject + */ + private $reindexRuleProductsPriceProcessorMock; + /** * @inheritDoc */ @@ -60,6 +65,7 @@ protected function setUp(): void $this->productPriceCalculatorMock = $this->createMock(ProductPriceCalculator::class); $this->localeDate = $this->getMockForAbstractClass(TimezoneInterface::class); $this->pricesPersistorMock = $this->createMock(RuleProductPricesPersistor::class); + $this->reindexRuleProductsPriceProcessorMock = $this->createMock(ReindexRuleProductsPriceProcessor::class); $this->model = new ReindexRuleProductPrice( $this->storeManagerMock, @@ -67,7 +73,8 @@ protected function setUp(): void $this->productPriceCalculatorMock, $this->localeDate, $this->pricesPersistorMock, - true + true, + $this->reindexRuleProductsPriceProcessorMock ); } @@ -77,30 +84,15 @@ protected function setUp(): void public function testExecute(): void { $websiteId = 234; - $defaultGroupId = 11; - $defaultStoreId = 22; $productId = 55; $websiteMock = $this->getMockForAbstractClass(WebsiteInterface::class); $websiteMock->expects($this->once()) ->method('getId') ->willReturn($websiteId); - $websiteMock->expects($this->once()) - ->method('getDefaultGroupId') - ->willReturn($defaultGroupId); $this->storeManagerMock->expects($this->once()) ->method('getWebsites') ->willReturn([$websiteMock]); - $groupMock = $this->getMockForAbstractClass(GroupInterface::class); - $groupMock->method('getId') - ->willReturn($defaultStoreId); - $groupMock->expects($this->once()) - ->method('getDefaultStoreId') - ->willReturn($defaultStoreId); - $this->storeManagerMock->expects($this->once()) - ->method('getGroup') - ->with($defaultGroupId) - ->willReturn($groupMock); $statementMock = $this->createMock(\Zend_Db_Statement_Interface::class); $this->ruleProductsSelectBuilderMock->expects($this->once()) @@ -117,18 +109,11 @@ public function testExecute(): void 'action_stop' => true ]; - $this->localeDate->expects($this->once()) - ->method('scopeDate') - ->with($defaultStoreId, null, true) - ->willReturn(new \DateTime()); - $statementMock ->method('fetch') ->willReturnOnConsecutiveCalls($ruleData, false); - $this->productPriceCalculatorMock->expects($this->atLeastOnce()) - ->method('calculate'); - $this->pricesPersistorMock->expects($this->once()) + $this->reindexRuleProductsPriceProcessorMock->expects($this->once()) ->method('execute'); $this->assertTrue($this->model->execute(1, $productId, true)); diff --git a/app/code/Magento/CatalogRule/Test/Unit/Model/Indexer/ReindexRuleProductsPriceProcessorTest.php b/app/code/Magento/CatalogRule/Test/Unit/Model/Indexer/ReindexRuleProductsPriceProcessorTest.php index ec8d1b6cb70af..5bf6aa8553675 100644 --- a/app/code/Magento/CatalogRule/Test/Unit/Model/Indexer/ReindexRuleProductsPriceProcessorTest.php +++ b/app/code/Magento/CatalogRule/Test/Unit/Model/Indexer/ReindexRuleProductsPriceProcessorTest.php @@ -9,7 +9,6 @@ use Magento\CatalogRule\Model\Indexer\ProductPriceCalculator; use Magento\CatalogRule\Model\Indexer\ReindexRuleProductsPriceProcessor; use Magento\CatalogRule\Model\Indexer\RuleProductPricesPersistor; -use Magento\Framework\Exception\LocalizedException; use Magento\Framework\Stdlib\DateTime\TimezoneInterface; use Magento\Store\Api\Data\GroupInterface; use Magento\Store\Api\Data\WebsiteInterface; @@ -67,23 +66,14 @@ protected function setUp(): void */ public function testExecute(): void { - $websiteId = 234; $defaultGroupId = 11; $defaultStoreId = 22; $websiteMock = $this->getMockForAbstractClass(WebsiteInterface::class); - $websiteMock->expects($this->once()) - ->method('getId') - ->willReturn($websiteId); $websiteMock->expects($this->once()) ->method('getDefaultGroupId') ->willReturn($defaultGroupId); - $this->storeManagerMock->expects($this->once()) - ->method('getWebsites') - ->willReturn([$websiteMock]); $groupMock = $this->getMockForAbstractClass(GroupInterface::class); - $groupMock->method('getId') - ->willReturn($defaultStoreId); $groupMock->expects($this->once()) ->method('getDefaultStoreId') ->willReturn($defaultStoreId); From c21a4d52db6d389354e5a8e1b23452f2208e6d03 Mon Sep 17 00:00:00 2001 From: Lachlan Turner Date: Tue, 22 Aug 2023 11:43:53 +0930 Subject: [PATCH 022/104] Fix integration tests - cast to int to ensure correct type is passed. --- .../CatalogRule/Model/Indexer/ReindexRuleProductPrice.php | 6 +++++- .../CatalogRule/Model/Indexer/ReindexRuleProductsPrice.php | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/app/code/Magento/CatalogRule/Model/Indexer/ReindexRuleProductPrice.php b/app/code/Magento/CatalogRule/Model/Indexer/ReindexRuleProductPrice.php index bfaea400f5dc7..ee0c0e6c095e7 100644 --- a/app/code/Magento/CatalogRule/Model/Indexer/ReindexRuleProductPrice.php +++ b/app/code/Magento/CatalogRule/Model/Indexer/ReindexRuleProductPrice.php @@ -98,7 +98,11 @@ public function execute(int $batchCount, ?int $productId = null, bool $useAdditi * because for each website date in website's timezone should be used */ foreach ($this->storeManager->getWebsites() as $website) { - $productsStmt = $this->ruleProductsSelectBuilder->build($website->getId(), $productId, $useAdditionalTable); + $productsStmt = $this->ruleProductsSelectBuilder->build( + (int)$website->getId(), + $productId, + $useAdditionalTable + ); $this->reindexRuleProductsPriceProcessor->execute( $productsStmt, $website, diff --git a/app/code/Magento/CatalogRule/Model/Indexer/ReindexRuleProductsPrice.php b/app/code/Magento/CatalogRule/Model/Indexer/ReindexRuleProductsPrice.php index 71abe9781f540..697a2488669ae 100644 --- a/app/code/Magento/CatalogRule/Model/Indexer/ReindexRuleProductsPrice.php +++ b/app/code/Magento/CatalogRule/Model/Indexer/ReindexRuleProductsPrice.php @@ -49,7 +49,7 @@ public function execute(int $batchCount, array $productIds, bool $useAdditionalT */ foreach ($this->storeManager->getWebsites() as $website) { $productsStmt = $this->ruleProductsSelectBuilder->buildSelect( - $website->getId(), + (int)$website->getId(), $productIds, $useAdditionalTable ); From df6c2d87b174e7ae59e3bdc30a24049fe0ae25c8 Mon Sep 17 00:00:00 2001 From: Saurabh Kumar Date: Tue, 3 Oct 2023 16:17:40 +0530 Subject: [PATCH 023/104] AC-9452: Moment.min.js.map file is not generating --- lib/web/moment.js | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/web/moment.js b/lib/web/moment.js index 498eeefe841c8..ba6ca926fb2ef 100644 --- a/lib/web/moment.js +++ b/lib/web/moment.js @@ -4,4 +4,3 @@ //! license : MIT //! momentjs.com !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.moment=t()}(this,function(){"use strict";var H;function f(){return H.apply(null,arguments)}function a(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function F(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function c(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function L(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;for(var t in e)if(c(e,t))return;return 1}function o(e){return void 0===e}function u(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function V(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function G(e,t){for(var n=[],s=e.length,i=0;i>>0,s=0;sAe(e)?(r=e+1,t-Ae(e)):(r=e,t);return{year:r,dayOfYear:n}}function qe(e,t,n){var s,i,r=ze(e.year(),t,n),r=Math.floor((e.dayOfYear()-r-1)/7)+1;return r<1?s=r+P(i=e.year()-1,t,n):r>P(e.year(),t,n)?(s=r-P(e.year(),t,n),i=e.year()+1):(i=e.year(),s=r),{week:s,year:i}}function P(e,t,n){var s=ze(e,t,n),t=ze(e+1,t,n);return(Ae(e)-s+t)/7}s("w",["ww",2],"wo","week"),s("W",["WW",2],"Wo","isoWeek"),t("week","w"),t("isoWeek","W"),n("week",5),n("isoWeek",5),v("w",p),v("ww",p,w),v("W",p),v("WW",p,w),Te(["w","ww","W","WW"],function(e,t,n,s){t[s.substr(0,1)]=g(e)});function Be(e,t){return e.slice(t,7).concat(e.slice(0,t))}s("d",0,"do","day"),s("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),s("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),s("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),s("e",0,0,"weekday"),s("E",0,0,"isoWeekday"),t("day","d"),t("weekday","e"),t("isoWeekday","E"),n("day",11),n("weekday",11),n("isoWeekday",11),v("d",p),v("e",p),v("E",p),v("dd",function(e,t){return t.weekdaysMinRegex(e)}),v("ddd",function(e,t){return t.weekdaysShortRegex(e)}),v("dddd",function(e,t){return t.weekdaysRegex(e)}),Te(["dd","ddd","dddd"],function(e,t,n,s){s=n._locale.weekdaysParse(e,s,n._strict);null!=s?t.d=s:m(n).invalidWeekday=e}),Te(["d","e","E"],function(e,t,n,s){t[s]=g(e)});var Je="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Qe="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Xe="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Ke=k,et=k,tt=k;function nt(){function e(e,t){return t.length-e.length}for(var t,n,s,i=[],r=[],a=[],o=[],u=0;u<7;u++)s=l([2e3,1]).day(u),t=M(this.weekdaysMin(s,"")),n=M(this.weekdaysShort(s,"")),s=M(this.weekdays(s,"")),i.push(t),r.push(n),a.push(s),o.push(t),o.push(n),o.push(s);i.sort(e),r.sort(e),a.sort(e),o.sort(e),this._weekdaysRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+r.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+i.join("|")+")","i")}function st(){return this.hours()%12||12}function it(e,t){s(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function rt(e,t){return t._meridiemParse}s("H",["HH",2],0,"hour"),s("h",["hh",2],0,st),s("k",["kk",2],0,function(){return this.hours()||24}),s("hmm",0,0,function(){return""+st.apply(this)+r(this.minutes(),2)}),s("hmmss",0,0,function(){return""+st.apply(this)+r(this.minutes(),2)+r(this.seconds(),2)}),s("Hmm",0,0,function(){return""+this.hours()+r(this.minutes(),2)}),s("Hmmss",0,0,function(){return""+this.hours()+r(this.minutes(),2)+r(this.seconds(),2)}),it("a",!0),it("A",!1),t("hour","h"),n("hour",13),v("a",rt),v("A",rt),v("H",p),v("h",p),v("k",p),v("HH",p,w),v("hh",p,w),v("kk",p,w),v("hmm",ge),v("hmmss",we),v("Hmm",ge),v("Hmmss",we),D(["H","HH"],x),D(["k","kk"],function(e,t,n){e=g(e);t[x]=24===e?0:e}),D(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e}),D(["h","hh"],function(e,t,n){t[x]=g(e),m(n).bigHour=!0}),D("hmm",function(e,t,n){var s=e.length-2;t[x]=g(e.substr(0,s)),t[T]=g(e.substr(s)),m(n).bigHour=!0}),D("hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[x]=g(e.substr(0,s)),t[T]=g(e.substr(s,2)),t[N]=g(e.substr(i)),m(n).bigHour=!0}),D("Hmm",function(e,t,n){var s=e.length-2;t[x]=g(e.substr(0,s)),t[T]=g(e.substr(s))}),D("Hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[x]=g(e.substr(0,s)),t[T]=g(e.substr(s,2)),t[N]=g(e.substr(i))});k=de("Hours",!0);var at,ot={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Ce,monthsShort:Ue,week:{dow:0,doy:6},weekdays:Je,weekdaysMin:Xe,weekdaysShort:Qe,meridiemParse:/[ap]\.?m?\.?/i},R={},ut={};function lt(e){return e&&e.toLowerCase().replace("_","-")}function ht(e){for(var t,n,s,i,r=0;r=t&&function(e,t){for(var n=Math.min(e.length,t.length),s=0;s=t-1)break;t--}r++}return at}function dt(t){var e;if(void 0===R[t]&&"undefined"!=typeof module&&module&&module.exports&&null!=t.match("^[^/\\\\]*$"))try{e=at._abbr,require("./locale/"+t),ct(e)}catch(e){R[t]=null}return R[t]}function ct(e,t){return e&&((t=o(t)?mt(e):ft(e,t))?at=t:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),at._abbr}function ft(e,t){if(null===t)return delete R[e],null;var n,s=ot;if(t.abbr=e,null!=R[e])Q("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),s=R[e]._config;else if(null!=t.parentLocale)if(null!=R[t.parentLocale])s=R[t.parentLocale]._config;else{if(null==(n=dt(t.parentLocale)))return ut[t.parentLocale]||(ut[t.parentLocale]=[]),ut[t.parentLocale].push({name:e,config:t}),null;s=n._config}return R[e]=new K(X(s,t)),ut[e]&&ut[e].forEach(function(e){ft(e.name,e.config)}),ct(e),R[e]}function mt(e){var t;if(!(e=e&&e._locale&&e._locale._abbr?e._locale._abbr:e))return at;if(!a(e)){if(t=dt(e))return t;e=[e]}return ht(e)}function _t(e){var t=e._a;return t&&-2===m(e).overflow&&(t=t[O]<0||11We(t[Y],t[O])?b:t[x]<0||24P(r,u,l)?m(s)._overflowWeeks=!0:null!=h?m(s)._overflowWeekday=!0:(d=$e(r,a,o,u,l),s._a[Y]=d.year,s._dayOfYear=d.dayOfYear)),null!=e._dayOfYear&&(i=bt(e._a[Y],n[Y]),(e._dayOfYear>Ae(i)||0===e._dayOfYear)&&(m(e)._overflowDayOfYear=!0),h=Ze(i,0,e._dayOfYear),e._a[O]=h.getUTCMonth(),e._a[b]=h.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=c[t]=n[t];for(;t<7;t++)e._a[t]=c[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[x]&&0===e._a[T]&&0===e._a[N]&&0===e._a[Ne]&&(e._nextDay=!0,e._a[x]=0),e._d=(e._useUTC?Ze:je).apply(null,c),r=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[x]=24),e._w&&void 0!==e._w.d&&e._w.d!==r&&(m(e).weekdayMismatch=!0)}}function Tt(e){if(e._f===f.ISO_8601)St(e);else if(e._f===f.RFC_2822)Ot(e);else{e._a=[],m(e).empty=!0;for(var t,n,s,i,r,a=""+e._i,o=a.length,u=0,l=ae(e._f,e._locale).match(te)||[],h=l.length,d=0;de.valueOf():e.valueOf()"}),i.toJSON=function(){return this.isValid()?this.toISOString():null},i.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},i.unix=function(){return Math.floor(this.valueOf()/1e3)},i.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},i.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},i.eraName=function(){for(var e,t=this.localeData().eras(),n=0,s=t.length;nthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},i.isLocal=function(){return!!this.isValid()&&!this._isUTC},i.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},i.isUtc=At,i.isUTC=At,i.zoneAbbr=function(){return this._isUTC?"UTC":""},i.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},i.dates=e("dates accessor is deprecated. Use date instead.",ke),i.months=e("months accessor is deprecated. Use month instead",Ge),i.years=e("years accessor is deprecated. Use year instead",Ie),i.zone=e("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,t){return null!=e?(this.utcOffset(e="string"!=typeof e?-e:e,t),this):-this.utcOffset()}),i.isDSTShifted=e("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!o(this._isDSTShifted))return this._isDSTShifted;var e,t={};return $(t,this),(t=Nt(t))._a?(e=(t._isUTC?l:W)(t._a),this._isDSTShifted=this.isValid()&&0 Date: Sun, 8 Oct 2023 17:55:41 -0700 Subject: [PATCH 024/104] scrub varnish 4/5 references Varnish 6.0 is half a decade old. 4.x and 5.x have been EOL'd years ago and there shouldn't be any more distribution carrying those, there's no good reason to keep them around --- .../CacheInvalidate/Model/PurgeCache.php | 4 ++-- .../Config/Form/Field/Export/Varnish4.php | 22 ----------------- .../Config/Form/Field/Export/Varnish5.php | 22 ----------------- .../Console/Command/GenerateVclCommand.php | 2 +- .../PageCache/ExportVarnishConfig.php | 5 +--- app/code/Magento/PageCache/Model/Config.php | 15 +----------- .../Model/Varnish/VclTemplateLocator.php | 24 +------------------ .../PageCache/Test/Unit/Model/ConfigTest.php | 2 +- .../PageCache/etc/adminhtml/system.xml | 13 ---------- app/code/Magento/PageCache/etc/config.xml | 6 ----- .../System/Config/Form/Field/ExportTest.php | 4 ---- .../Magento/PageCache/Model/ConfigTest.php | 2 +- 12 files changed, 8 insertions(+), 113 deletions(-) delete mode 100644 app/code/Magento/PageCache/Block/System/Config/Form/Field/Export/Varnish4.php delete mode 100644 app/code/Magento/PageCache/Block/System/Config/Form/Field/Export/Varnish5.php diff --git a/app/code/Magento/CacheInvalidate/Model/PurgeCache.php b/app/code/Magento/CacheInvalidate/Model/PurgeCache.php index ae2fede3dbc18..1268e19984cd8 100644 --- a/app/code/Magento/CacheInvalidate/Model/PurgeCache.php +++ b/app/code/Magento/CacheInvalidate/Model/PurgeCache.php @@ -37,10 +37,10 @@ class PurgeCache /** * Batch size of the purge request. * - * Based on default Varnish 4 http_req_hdr_len size minus a 512 bytes margin for method, + * Based on default Varnish 6 http_req_hdr_len size minus a 512 bytes margin for method, * header name, line feeds etc. * - * @see https://varnish-cache.org/docs/4.1/reference/varnishd.html + * @see https://varnish-cache.org/docs/6.0/reference/varnishd.html * * @var int */ diff --git a/app/code/Magento/PageCache/Block/System/Config/Form/Field/Export/Varnish4.php b/app/code/Magento/PageCache/Block/System/Config/Form/Field/Export/Varnish4.php deleted file mode 100644 index c6c7766265dd9..0000000000000 --- a/app/code/Magento/PageCache/Block/System/Config/Form/Field/Export/Varnish4.php +++ /dev/null @@ -1,22 +0,0 @@ -config->getVclFile(\Magento\PageCache\Model\Config::VARNISH_6_CONFIGURATION_PATH); break; - case 5: - $content = $this->config->getVclFile(\Magento\PageCache\Model\Config::VARNISH_5_CONFIGURATION_PATH); - break; default: - $content = $this->config->getVclFile(\Magento\PageCache\Model\Config::VARNISH_4_CONFIGURATION_PATH); + $content = $this->config->getVclFile(\Magento\PageCache\Model\Config::VARNISH_6_CONFIGURATION_PATH); break; } return $this->fileFactory->create($fileName, $content, DirectoryList::VAR_DIR); diff --git a/app/code/Magento/PageCache/Model/Config.php b/app/code/Magento/PageCache/Model/Config.php index be011b637dc02..85eb7a0819bd0 100644 --- a/app/code/Magento/PageCache/Model/Config.php +++ b/app/code/Magento/PageCache/Model/Config.php @@ -56,16 +56,6 @@ class Config */ public const VARNISH_6_CONFIGURATION_PATH = 'system/full_page_cache/varnish6/path'; - /** - * XML path to Varnish 5 config template path - */ - public const VARNISH_5_CONFIGURATION_PATH = 'system/full_page_cache/varnish5/path'; - - /** - * XML path to Varnish 4 config template path - */ - public const VARNISH_4_CONFIGURATION_PATH = 'system/full_page_cache/varnish4/path'; - /** * @var \Magento\Framework\App\Cache\StateInterface $_cacheState */ @@ -153,11 +143,8 @@ public function getVclFile($vclTemplatePath) case self::VARNISH_6_CONFIGURATION_PATH: $version = 6; break; - case self::VARNISH_5_CONFIGURATION_PATH: - $version = 5; - break; default: - $version = 4; + $version = 6; } $sslOffloadedHeader = $this->_scopeConfig->getValue( Request::XML_PATH_OFFLOADER_HEADER diff --git a/app/code/Magento/PageCache/Model/Varnish/VclTemplateLocator.php b/app/code/Magento/PageCache/Model/Varnish/VclTemplateLocator.php index 8ad684198f409..73ba2d863400a 100644 --- a/app/code/Magento/PageCache/Model/Varnish/VclTemplateLocator.php +++ b/app/code/Magento/PageCache/Model/Varnish/VclTemplateLocator.php @@ -19,30 +19,10 @@ class VclTemplateLocator implements VclTemplateLocatorInterface { /** - * XML path to Varnish 5 config template path + * XML path to Varnish 6 config template path */ const VARNISH_6_CONFIGURATION_PATH = 'system/full_page_cache/varnish6/path'; - /** - * XML path to Varnish 5 config template path - */ - const VARNISH_5_CONFIGURATION_PATH = 'system/full_page_cache/varnish5/path'; - - /** - * XML path to Varnish 4 config template path - */ - const VARNISH_4_CONFIGURATION_PATH = 'system/full_page_cache/varnish4/path'; - - /** - * Varnish 4 supported version - */ - const VARNISH_SUPPORTED_VERSION_4 = '4'; - - /** - * Varnish 5 supported version - */ - const VARNISH_SUPPORTED_VERSION_5 = '5'; - /** * Varnish 6 supported version */ @@ -52,8 +32,6 @@ class VclTemplateLocator implements VclTemplateLocatorInterface * @var array */ private $supportedVarnishVersions = [ - self::VARNISH_SUPPORTED_VERSION_4 => self::VARNISH_4_CONFIGURATION_PATH, - self::VARNISH_SUPPORTED_VERSION_5 => self::VARNISH_5_CONFIGURATION_PATH, self::VARNISH_SUPPORTED_VERSION_6 => self::VARNISH_6_CONFIGURATION_PATH, ]; diff --git a/app/code/Magento/PageCache/Test/Unit/Model/ConfigTest.php b/app/code/Magento/PageCache/Test/Unit/Model/ConfigTest.php index 2eaca6f44d38d..223911716278e 100644 --- a/app/code/Magento/PageCache/Test/Unit/Model/ConfigTest.php +++ b/app/code/Magento/PageCache/Test/Unit/Model/ConfigTest.php @@ -183,7 +183,7 @@ public function testGetVcl(): void ->method('unserialize') ->with('serializedConfig') ->willReturn([['regexp' => '(?i)pattern', 'value' => 'value_for_pattern']]); - $test = $this->config->getVclFile(Config::VARNISH_5_CONFIGURATION_PATH); + $test = $this->config->getVclFile(Config::VARNISH_6_CONFIGURATION_PATH); $this->assertEquals(file_get_contents(__DIR__ . '/_files/result.vcl'), $test); } diff --git a/app/code/Magento/PageCache/etc/adminhtml/system.xml b/app/code/Magento/PageCache/etc/adminhtml/system.xml index 4ffc20958748d..1dd31c0909108 100644 --- a/app/code/Magento/PageCache/etc/adminhtml/system.xml +++ b/app/code/Magento/PageCache/etc/adminhtml/system.xml @@ -49,19 +49,6 @@ 1 - - - Magento\PageCache\Block\System\Config\Form\Field\Export\Varnish4 - - 1 - - - - Magento\PageCache\Block\System\Config\Form\Field\Export\Varnish5 - - 1 - - Magento\PageCache\Block\System\Config\Form\Field\Export\Varnish6 diff --git a/app/code/Magento/PageCache/etc/config.xml b/app/code/Magento/PageCache/etc/config.xml index 8a2412030c6aa..98e1e3d595b24 100644 --- a/app/code/Magento/PageCache/etc/config.xml +++ b/app/code/Magento/PageCache/etc/config.xml @@ -17,12 +17,6 @@ varnish6.vcl - - varnish5.vcl - - - varnish4.vcl - 86400 1 diff --git a/dev/tests/integration/testsuite/Magento/PageCache/Block/System/Config/Form/Field/ExportTest.php b/dev/tests/integration/testsuite/Magento/PageCache/Block/System/Config/Form/Field/ExportTest.php index 5a4d3fcd2d9d2..e17806d33a50a 100644 --- a/dev/tests/integration/testsuite/Magento/PageCache/Block/System/Config/Form/Field/ExportTest.php +++ b/dev/tests/integration/testsuite/Magento/PageCache/Block/System/Config/Form/Field/ExportTest.php @@ -13,8 +13,6 @@ class ExportTest extends \Magento\TestFramework\TestCase\AbstractBackendControll /** * Check Varnish export buttons * @covers \Magento\PageCache\Block\System\Config\Form\Field\Export::_getElementHtml - * @covers \Magento\PageCache\Block\System\Config\Form\Field\Export\Varnish5::getVarnishVersion - * @covers \Magento\PageCache\Block\System\Config\Form\Field\Export\Varnish4::getVarnishVersion * @magentoAppIsolation enabled * @magentoDbIsolation enabled */ @@ -22,8 +20,6 @@ public function testExportButtons() { $this->dispatch('backend/admin/system_config/edit/section/system/'); $body = $this->getResponse()->getBody(); - $this->assertStringContainsString('system_full_page_cache_varnish_export_button_version4', $body); - $this->assertStringContainsString('system_full_page_cache_varnish_export_button_version5', $body); $this->assertStringContainsString('[id^=system_full_page_cache_varnish_export_button_version]', $body); } } diff --git a/dev/tests/integration/testsuite/Magento/PageCache/Model/ConfigTest.php b/dev/tests/integration/testsuite/Magento/PageCache/Model/ConfigTest.php index e34db62c9adec..b64e6e4e68a33 100644 --- a/dev/tests/integration/testsuite/Magento/PageCache/Model/ConfigTest.php +++ b/dev/tests/integration/testsuite/Magento/PageCache/Model/ConfigTest.php @@ -85,7 +85,7 @@ protected function setUp(): void // @codingStandardsIgnoreEnd public function testGetVclFile() { - $result = $this->config->getVclFile(Config::VARNISH_5_CONFIGURATION_PATH); + $result = $this->config->getVclFile(Config::VARNISH_6_CONFIGURATION_PATH); $this->assertEquals(file_get_contents(__DIR__ . '/_files/result.vcl'), $result); } } From 801be7b93435edff1e885d40853678c3edb414ef Mon Sep 17 00:00:00 2001 From: Guillaume Quintard Date: Sun, 15 Oct 2023 19:14:58 -0700 Subject: [PATCH 025/104] [varnish] re-add constant, as deprecated --- app/code/Magento/PageCache/Model/Config.php | 12 ++++++++++ .../Model/Varnish/VclTemplateLocator.php | 22 +++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/app/code/Magento/PageCache/Model/Config.php b/app/code/Magento/PageCache/Model/Config.php index 85eb7a0819bd0..21e277d760610 100644 --- a/app/code/Magento/PageCache/Model/Config.php +++ b/app/code/Magento/PageCache/Model/Config.php @@ -56,6 +56,18 @@ class Config */ public const VARNISH_6_CONFIGURATION_PATH = 'system/full_page_cache/varnish6/path'; + /** + * @deprecated Varnish 5 is EOL + * XML path to Varnish 5 config template path + */ + public const VARNISH_5_CONFIGURATION_PATH = 'system/full_page_cache/varnish5/path'; + + /** + * @deprecated Varnish 4 is EOL + * XML path to Varnish 4 config template path + */ + public const VARNISH_4_CONFIGURATION_PATH = 'system/full_page_cache/varnish4/path'; + /** * @var \Magento\Framework\App\Cache\StateInterface $_cacheState */ diff --git a/app/code/Magento/PageCache/Model/Varnish/VclTemplateLocator.php b/app/code/Magento/PageCache/Model/Varnish/VclTemplateLocator.php index 73ba2d863400a..1720ce9a55d64 100644 --- a/app/code/Magento/PageCache/Model/Varnish/VclTemplateLocator.php +++ b/app/code/Magento/PageCache/Model/Varnish/VclTemplateLocator.php @@ -23,6 +23,28 @@ class VclTemplateLocator implements VclTemplateLocatorInterface */ const VARNISH_6_CONFIGURATION_PATH = 'system/full_page_cache/varnish6/path'; + /** + * @deprecated Varnish 5 is EOL + * XML path to Varnish 5 config template path + */ + const VARNISH_5_CONFIGURATION_PATH = 'system/full_page_cache/varnish5/path'; + + /** + * @deprecated Varnish 4 is EOL + * XML path to Varnish 4 config template path + */ + const VARNISH_4_CONFIGURATION_PATH = 'system/full_page_cache/varnish4/path'; + + /** + * @deprecated Varnish 4 is EOL + */ + const VARNISH_SUPPORTED_VERSION_4 = '4'; + + /** + * @deprecated Varnish 5 is EOL + */ + const VARNISH_SUPPORTED_VERSION_5 = '5'; + /** * Varnish 6 supported version */ From 3d38d8e3fd668331a5efff114cba786822e3c165 Mon Sep 17 00:00:00 2001 From: Guillaume Quintard Date: Mon, 16 Oct 2023 09:01:19 -0700 Subject: [PATCH 026/104] [varnish] add @see comment to deprecated constants --- app/code/Magento/PageCache/Model/Config.php | 2 ++ .../Magento/PageCache/Model/Varnish/VclTemplateLocator.php | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/app/code/Magento/PageCache/Model/Config.php b/app/code/Magento/PageCache/Model/Config.php index 21e277d760610..7fb35a599dbc3 100644 --- a/app/code/Magento/PageCache/Model/Config.php +++ b/app/code/Magento/PageCache/Model/Config.php @@ -58,12 +58,14 @@ class Config /** * @deprecated Varnish 5 is EOL + * @see VARNISH_6_CONFIGURATION_PATH * XML path to Varnish 5 config template path */ public const VARNISH_5_CONFIGURATION_PATH = 'system/full_page_cache/varnish5/path'; /** * @deprecated Varnish 4 is EOL + * @see VARNISH_6_CONFIGURATION_PATH * XML path to Varnish 4 config template path */ public const VARNISH_4_CONFIGURATION_PATH = 'system/full_page_cache/varnish4/path'; diff --git a/app/code/Magento/PageCache/Model/Varnish/VclTemplateLocator.php b/app/code/Magento/PageCache/Model/Varnish/VclTemplateLocator.php index 1720ce9a55d64..01323c3f01895 100644 --- a/app/code/Magento/PageCache/Model/Varnish/VclTemplateLocator.php +++ b/app/code/Magento/PageCache/Model/Varnish/VclTemplateLocator.php @@ -25,28 +25,33 @@ class VclTemplateLocator implements VclTemplateLocatorInterface /** * @deprecated Varnish 5 is EOL + * @see VARNISH_6_CONFIGURATION_PATH * XML path to Varnish 5 config template path */ const VARNISH_5_CONFIGURATION_PATH = 'system/full_page_cache/varnish5/path'; /** * @deprecated Varnish 4 is EOL + * @see VARNISH_6_CONFIGURATION_PATH * XML path to Varnish 4 config template path */ const VARNISH_4_CONFIGURATION_PATH = 'system/full_page_cache/varnish4/path'; /** * @deprecated Varnish 4 is EOL + * @see VARNISH_SUPPORTED_VERSION_6 */ const VARNISH_SUPPORTED_VERSION_4 = '4'; /** * @deprecated Varnish 5 is EOL + * @see VARNISH_SUPPORTED_VERSION_6 */ const VARNISH_SUPPORTED_VERSION_5 = '5'; /** * Varnish 6 supported version + * @see VARNISH_SUPPORTED_VERSION_6 */ const VARNISH_SUPPORTED_VERSION_6 = '6'; From 1e0b13d3c02048fbbf423025b150aa5bbdea7024 Mon Sep 17 00:00:00 2001 From: Ihor Sviziev Date: Mon, 6 Nov 2023 14:41:13 +0200 Subject: [PATCH 027/104] Remove Varnish 4/5 support Fix static test failures --- .../Console/Command/GenerateVclCommand.php | 14 ++++++++------ .../Adminhtml/PageCache/ExportVarnishConfig.php | 2 +- app/code/Magento/PageCache/Model/Config.php | 12 ++++++++---- .../PageCache/Model/Varnish/VclTemplateLocator.php | 12 ++++++------ 4 files changed, 23 insertions(+), 17 deletions(-) diff --git a/app/code/Magento/PageCache/Console/Command/GenerateVclCommand.php b/app/code/Magento/PageCache/Console/Command/GenerateVclCommand.php index c180a9b4321cb..573114aece05f 100644 --- a/app/code/Magento/PageCache/Console/Command/GenerateVclCommand.php +++ b/app/code/Magento/PageCache/Console/Command/GenerateVclCommand.php @@ -29,32 +29,32 @@ class GenerateVclCommand extends Command /** * Access list option name */ - const ACCESS_LIST_OPTION = 'access-list'; + public const ACCESS_LIST_OPTION = 'access-list'; /** * Backend host option name */ - const BACKEND_HOST_OPTION = 'backend-host'; + public const BACKEND_HOST_OPTION = 'backend-host'; /** * Backend port option name */ - const BACKEND_PORT_OPTION = 'backend-port'; + public const BACKEND_PORT_OPTION = 'backend-port'; /** * Varnish version option name */ - const EXPORT_VERSION_OPTION = 'export-version'; + public const EXPORT_VERSION_OPTION = 'export-version'; /** * Grace period option name */ - const GRACE_PERIOD_OPTION = 'grace-period'; + public const GRACE_PERIOD_OPTION = 'grace-period'; /** * Output file option name */ - const OUTPUT_FILE_OPTION = 'output-file'; + public const OUTPUT_FILE_OPTION = 'output-file'; /** * @var \Magento\Framework\Filesystem\Directory\WriteFactory @@ -211,6 +211,8 @@ private function getOptionList() } /** + * Maps input keys to vcl parameters + * * @param InputInterface $input * @return array */ diff --git a/app/code/Magento/PageCache/Controller/Adminhtml/PageCache/ExportVarnishConfig.php b/app/code/Magento/PageCache/Controller/Adminhtml/PageCache/ExportVarnishConfig.php index 922238ee0597f..fb626fceaf8b6 100644 --- a/app/code/Magento/PageCache/Controller/Adminhtml/PageCache/ExportVarnishConfig.php +++ b/app/code/Magento/PageCache/Controller/Adminhtml/PageCache/ExportVarnishConfig.php @@ -16,7 +16,7 @@ class ExportVarnishConfig extends \Magento\Backend\App\Action implements HttpGet /** * Authorization level of a basic admin session */ - const ADMIN_RESOURCE = 'Magento_Backend::system'; + public const ADMIN_RESOURCE = 'Magento_Backend::system'; /** * @var \Magento\Backend\App\Response\Http\FileFactory diff --git a/app/code/Magento/PageCache/Model/Config.php b/app/code/Magento/PageCache/Model/Config.php index 7fb35a599dbc3..6defbee7b02a3 100644 --- a/app/code/Magento/PageCache/Model/Config.php +++ b/app/code/Magento/PageCache/Model/Config.php @@ -144,7 +144,8 @@ public function getTtl() * * @param string $vclTemplatePath * @return string - * @deprecated 100.2.0 see \Magento\PageCache\Model\VclGeneratorInterface::generateVcl + * @deprecated 100.2.0 + * @see \Magento\PageCache\Model\VclGeneratorInterface::generateVcl */ public function getVclFile($vclTemplatePath) { @@ -180,7 +181,8 @@ public function getVclFile($vclTemplatePath) * Prepare data for VCL config * * @return array - * @deprecated 100.2.0 see \Magento\PageCache\Model\VclGeneratorInterface::generateVcl + * @deprecated 100.2.0 + * @see \Magento\PageCache\Model\VclGeneratorInterface::generateVcl */ protected function _getReplacements() { @@ -210,7 +212,8 @@ protected function _getReplacements() * } * * @return mixed|null|string - * @deprecated 100.2.0 see \Magento\PageCache\Model\VclGeneratorInterface::generateVcl + * @deprecated 100.2.0 + * @see \Magento\PageCache\Model\VclGeneratorInterface::generateVcl */ protected function _getAccessList() { @@ -236,7 +239,8 @@ protected function _getAccessList() * we have to convert "/pattern/iU" into "(?Ui)pattern" * * @return string - * @deprecated 100.2.0 see \Magento\PageCache\Model\VclGeneratorInterface::generateVcl + * @deprecated 100.2.0 + * @see \Magento\PageCache\Model\VclGeneratorInterface::generateVcl */ protected function _getDesignExceptions() { diff --git a/app/code/Magento/PageCache/Model/Varnish/VclTemplateLocator.php b/app/code/Magento/PageCache/Model/Varnish/VclTemplateLocator.php index 01323c3f01895..68338aa6de510 100644 --- a/app/code/Magento/PageCache/Model/Varnish/VclTemplateLocator.php +++ b/app/code/Magento/PageCache/Model/Varnish/VclTemplateLocator.php @@ -21,39 +21,39 @@ class VclTemplateLocator implements VclTemplateLocatorInterface /** * XML path to Varnish 6 config template path */ - const VARNISH_6_CONFIGURATION_PATH = 'system/full_page_cache/varnish6/path'; + public const VARNISH_6_CONFIGURATION_PATH = 'system/full_page_cache/varnish6/path'; /** * @deprecated Varnish 5 is EOL * @see VARNISH_6_CONFIGURATION_PATH * XML path to Varnish 5 config template path */ - const VARNISH_5_CONFIGURATION_PATH = 'system/full_page_cache/varnish5/path'; + public const VARNISH_5_CONFIGURATION_PATH = 'system/full_page_cache/varnish5/path'; /** * @deprecated Varnish 4 is EOL * @see VARNISH_6_CONFIGURATION_PATH * XML path to Varnish 4 config template path */ - const VARNISH_4_CONFIGURATION_PATH = 'system/full_page_cache/varnish4/path'; + public const VARNISH_4_CONFIGURATION_PATH = 'system/full_page_cache/varnish4/path'; /** * @deprecated Varnish 4 is EOL * @see VARNISH_SUPPORTED_VERSION_6 */ - const VARNISH_SUPPORTED_VERSION_4 = '4'; + public const VARNISH_SUPPORTED_VERSION_4 = '4'; /** * @deprecated Varnish 5 is EOL * @see VARNISH_SUPPORTED_VERSION_6 */ - const VARNISH_SUPPORTED_VERSION_5 = '5'; + public const VARNISH_SUPPORTED_VERSION_5 = '5'; /** * Varnish 6 supported version * @see VARNISH_SUPPORTED_VERSION_6 */ - const VARNISH_SUPPORTED_VERSION_6 = '6'; + public const VARNISH_SUPPORTED_VERSION_6 = '6'; /** * @var array From 3c4e4aa830d970ad96d4315257c94e5812be0e46 Mon Sep 17 00:00:00 2001 From: Tu Van Date: Wed, 15 Nov 2023 01:03:09 +0700 Subject: [PATCH 028/104] Fix incorrect PHP doc tag value in Magento\Reports\Block\Adminhtml\Shopcart\Product\Grid class --- .../Magento/Reports/Block/Adminhtml/Shopcart/Product/Grid.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/Reports/Block/Adminhtml/Shopcart/Product/Grid.php b/app/code/Magento/Reports/Block/Adminhtml/Shopcart/Product/Grid.php index 1bb49cbd63374..5ad22916634a1 100644 --- a/app/code/Magento/Reports/Block/Adminhtml/Shopcart/Product/Grid.php +++ b/app/code/Magento/Reports/Block/Adminhtml/Shopcart/Product/Grid.php @@ -14,7 +14,7 @@ class Grid extends \Magento\Reports\Block\Adminhtml\Grid\Shopcart { /** - * @var \Magento\Reports\Model\ResourceModel\Quote\CollectionFactory + * @var \Magento\Reports\Model\ResourceModel\Quote\Item\CollectionFactory */ protected $quoteItemCollectionFactory; From 3d804f7d0ac041efa0b43a9395460ac7fe44292f Mon Sep 17 00:00:00 2001 From: glo5363 Date: Wed, 29 Nov 2023 21:56:50 +0530 Subject: [PATCH 029/104] #AC-9196::Update spomky-labs/otphp to its latest version available (11.2.0) with mftf upgrade-changes for ce --- composer.json | 16 +- composer.lock | 7255 +++++++++++++++++++++++++++++++------------------ 2 files changed, 4560 insertions(+), 2711 deletions(-) diff --git a/composer.json b/composer.json index 43490389978e6..a0b125f6801ff 100644 --- a/composer.json +++ b/composer.json @@ -6,6 +6,16 @@ "OSL-3.0", "AFL-3.0" ], + "repositories": { + "ext": { + "type": "path", + "url": "./ext/*/*/*" + }, + "0": { + "type": "vcs", + "url": "https://github.com/magento-gl/magento2-functional-testing-framework" + } + }, "config": { "allow-plugins": { "dealerdirect/phpcodesniffer-composer-installer": true, @@ -71,6 +81,7 @@ "magento/composer": "^1.9.0", "magento/composer-dependency-version-audit-plugin": "^0.1", "magento/magento-composer-installer": ">=0.4.0", + "magento/security-package": "dev-develop", "magento/zend-cache": "^1.16", "magento/zend-db": "^1.16", "magento/zend-pdf": "^1.16", @@ -98,7 +109,7 @@ "friendsofphp/php-cs-fixer": "^3.22", "lusitanian/oauth": "^0.8", "magento/magento-coding-standard": "*", - "magento/magento2-functional-testing-framework": "^4.4.2", + "magento/magento2-functional-testing-framework": "dev-ACQE-5264-spomky-labs/otphp", "pdepend/pdepend": "^2.10", "phpmd/phpmd": "^2.12", "phpstan/phpstan": "^1.9", @@ -397,5 +408,6 @@ "Magento\\PhpStan\\": "dev/tests/static/framework/Magento/PhpStan/" } }, - "prefer-stable": true + "prefer-stable": true, + "minimum-stability": "dev" } diff --git a/composer.lock b/composer.lock index e3376d30a0b53..959a78fc9eed0 100644 --- a/composer.lock +++ b/composer.lock @@ -4,20 +4,65 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "8fb04c39f095a39a76774ab9f3440157", + "content-hash": "cfcc9e7c3f2eaca86028bd74aee51e9c", "packages": [ + { + "name": "2tvenom/cborencode", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/2tvenom/CBOREncode.git", + "reference": "42aedccb861d01fc0554782348cc08f8ebf22332" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/2tvenom/CBOREncode/zipball/42aedccb861d01fc0554782348cc08f8ebf22332", + "reference": "42aedccb861d01fc0554782348cc08f8ebf22332", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "type": "library", + "autoload": { + "psr-0": { + "CBOR": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "PHP" + ], + "authors": [ + { + "name": "Pavel Gulbin", + "email": "2tvenom@gmail.com", + "role": "Developer" + } + ], + "description": "CBOR encoder for PHP", + "homepage": "https://github.com/2tvenom/CBOREncode", + "keywords": [ + "cbor" + ], + "support": { + "issues": "https://github.com/2tvenom/CBOREncode/issues", + "source": "https://github.com/2tvenom/CBOREncode/tree/1.0.2" + }, + "time": "2020-10-27T07:22:41+00:00" + }, { "name": "aws/aws-crt-php", - "version": "v1.2.2", + "version": "v1.2.3", "source": { "type": "git", "url": "https://github.com/awslabs/aws-crt-php.git", - "reference": "2f1dc7b7eda080498be96a4a6d683a41583030e9" + "reference": "5545a4fa310aec39f54279fdacebcce33b3ff382" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/awslabs/aws-crt-php/zipball/2f1dc7b7eda080498be96a4a6d683a41583030e9", - "reference": "2f1dc7b7eda080498be96a4a6d683a41583030e9", + "url": "https://api.github.com/repos/awslabs/aws-crt-php/zipball/5545a4fa310aec39f54279fdacebcce33b3ff382", + "reference": "5545a4fa310aec39f54279fdacebcce33b3ff382", "shasum": "" }, "require": { @@ -56,26 +101,26 @@ ], "support": { "issues": "https://github.com/awslabs/aws-crt-php/issues", - "source": "https://github.com/awslabs/aws-crt-php/tree/v1.2.2" + "source": "https://github.com/awslabs/aws-crt-php/tree/v1.2.3" }, - "time": "2023-07-20T16:49:55+00:00" + "time": "2023-10-16T20:10:06+00:00" }, { "name": "aws/aws-sdk-php", - "version": "3.279.9", + "version": "3.288.1", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "cbf446e410c04a405192cc0d018f29a91fe36375" + "reference": "a1dfa12c7165de0b731ae8074c4ba1f3ae733f89" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/cbf446e410c04a405192cc0d018f29a91fe36375", - "reference": "cbf446e410c04a405192cc0d018f29a91fe36375", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/a1dfa12c7165de0b731ae8074c4ba1f3ae733f89", + "reference": "a1dfa12c7165de0b731ae8074c4ba1f3ae733f89", "shasum": "" }, "require": { - "aws/aws-crt-php": "^1.0.4", + "aws/aws-crt-php": "^1.2.3", "ext-json": "*", "ext-pcre": "*", "ext-simplexml": "*", @@ -151,9 +196,63 @@ "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.279.9" + "source": "https://github.com/aws/aws-sdk-php/tree/3.288.1" + }, + "time": "2023-11-22T19:35:38+00:00" + }, + { + "name": "bacon/bacon-qr-code", + "version": "2.0.8", + "source": { + "type": "git", + "url": "https://github.com/Bacon/BaconQrCode.git", + "reference": "8674e51bb65af933a5ffaf1c308a660387c35c22" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Bacon/BaconQrCode/zipball/8674e51bb65af933a5ffaf1c308a660387c35c22", + "reference": "8674e51bb65af933a5ffaf1c308a660387c35c22", + "shasum": "" + }, + "require": { + "dasprid/enum": "^1.0.3", + "ext-iconv": "*", + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "phly/keep-a-changelog": "^2.1", + "phpunit/phpunit": "^7 | ^8 | ^9", + "spatie/phpunit-snapshot-assertions": "^4.2.9", + "squizlabs/php_codesniffer": "^3.4" + }, + "suggest": { + "ext-imagick": "to generate QR code images" + }, + "type": "library", + "autoload": { + "psr-4": { + "BaconQrCode\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Ben Scholzen 'DASPRiD'", + "email": "mail@dasprids.de", + "homepage": "https://dasprids.de/", + "role": "Developer" + } + ], + "description": "BaconQrCode is a QR code generator for PHP.", + "homepage": "https://github.com/Bacon/BaconQrCode", + "support": { + "issues": "https://github.com/Bacon/BaconQrCode/issues", + "source": "https://github.com/Bacon/BaconQrCode/tree/2.0.8" }, - "time": "2023-08-29T18:11:18+00:00" + "time": "2022-12-07T17:46:57+00:00" }, { "name": "brick/math", @@ -212,26 +311,26 @@ }, { "name": "brick/varexporter", - "version": "0.3.8", + "version": "0.4.0", "source": { "type": "git", "url": "https://github.com/brick/varexporter.git", - "reference": "b5853edea6204ff8fa10633c3a4cccc4058410ed" + "reference": "2fd038f7c9d12d468130c6e1b3ce06e4160a7dbb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/varexporter/zipball/b5853edea6204ff8fa10633c3a4cccc4058410ed", - "reference": "b5853edea6204ff8fa10633c3a4cccc4058410ed", + "url": "https://api.github.com/repos/brick/varexporter/zipball/2fd038f7c9d12d468130c6e1b3ce06e4160a7dbb", + "reference": "2fd038f7c9d12d468130c6e1b3ce06e4160a7dbb", "shasum": "" }, "require": { "nikic/php-parser": "^4.0", - "php": "^7.2 || ^8.0" + "php": "^7.4 || ^8.0" }, "require-dev": { "php-coveralls/php-coveralls": "^2.2", "phpunit/phpunit": "^8.5 || ^9.0", - "vimeo/psalm": "4.23.0" + "vimeo/psalm": "5.15.0" }, "type": "library", "autoload": { @@ -249,7 +348,7 @@ ], "support": { "issues": "https://github.com/brick/varexporter/issues", - "source": "https://github.com/brick/varexporter/tree/0.3.8" + "source": "https://github.com/brick/varexporter/tree/0.4.0" }, "funding": [ { @@ -257,20 +356,79 @@ "type": "github" } ], - "time": "2023-01-21T23:05:38+00:00" + "time": "2023-09-01T21:10:07+00:00" + }, + { + "name": "christian-riesen/base32", + "version": "1.6.0", + "source": { + "type": "git", + "url": "https://github.com/ChristianRiesen/base32.git", + "reference": "2e82dab3baa008e24a505649b0d583c31d31e894" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ChristianRiesen/base32/zipball/2e82dab3baa008e24a505649b0d583c31d31e894", + "reference": "2e82dab3baa008e24a505649b0d583c31d31e894", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.17", + "phpstan/phpstan": "^0.12", + "phpunit/phpunit": "^8.5.13 || ^9.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Base32\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Riesen", + "email": "chris.riesen@gmail.com", + "homepage": "http://christianriesen.com", + "role": "Developer" + } + ], + "description": "Base32 encoder/decoder according to RFC 4648", + "homepage": "https://github.com/ChristianRiesen/base32", + "keywords": [ + "base32", + "decode", + "encode", + "rfc4648" + ], + "support": { + "issues": "https://github.com/ChristianRiesen/base32/issues", + "source": "https://github.com/ChristianRiesen/base32/tree/1.6.0" + }, + "time": "2021-02-26T10:19:33+00:00" }, { "name": "colinmollenhour/cache-backend-file", - "version": "v1.4.7", + "version": "v1.4.8", "source": { "type": "git", "url": "https://github.com/colinmollenhour/Cm_Cache_Backend_File.git", - "reference": "a4b5062f6d2a78bdf6885b9b1e3a95dc4039d4fd" + "reference": "8ad24cfa1eccc3a995c4fcb00db00fb07bd02938" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/colinmollenhour/Cm_Cache_Backend_File/zipball/a4b5062f6d2a78bdf6885b9b1e3a95dc4039d4fd", - "reference": "a4b5062f6d2a78bdf6885b9b1e3a95dc4039d4fd", + "url": "https://api.github.com/repos/colinmollenhour/Cm_Cache_Backend_File/zipball/8ad24cfa1eccc3a995c4fcb00db00fb07bd02938", + "reference": "8ad24cfa1eccc3a995c4fcb00db00fb07bd02938", "shasum": "" }, "require-dev": { @@ -297,22 +455,22 @@ "homepage": "https://github.com/colinmollenhour/Cm_Cache_Backend_File", "support": { "issues": "https://github.com/colinmollenhour/Cm_Cache_Backend_File/issues", - "source": "https://github.com/colinmollenhour/Cm_Cache_Backend_File/tree/v1.4.7" + "source": "https://github.com/colinmollenhour/Cm_Cache_Backend_File/tree/v1.4.8" }, - "time": "2023-04-13T12:10:03+00:00" + "time": "2023-09-19T20:23:43+00:00" }, { "name": "colinmollenhour/cache-backend-redis", - "version": "1.16.0", + "version": "1.17.0", "source": { "type": "git", "url": "https://github.com/colinmollenhour/Cm_Cache_Backend_Redis.git", - "reference": "3fc3e9149097f67cded1c425088e37d7fa8083ed" + "reference": "dc2fd4fab8cb6b11e161f0eacdd5465c5b42b6f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/colinmollenhour/Cm_Cache_Backend_Redis/zipball/3fc3e9149097f67cded1c425088e37d7fa8083ed", - "reference": "3fc3e9149097f67cded1c425088e37d7fa8083ed", + "url": "https://api.github.com/repos/colinmollenhour/Cm_Cache_Backend_Redis/zipball/dc2fd4fab8cb6b11e161f0eacdd5465c5b42b6f1", + "reference": "dc2fd4fab8cb6b11e161f0eacdd5465c5b42b6f1", "shasum": "" }, "require": { @@ -342,22 +500,22 @@ "homepage": "https://github.com/colinmollenhour/Cm_Cache_Backend_Redis", "support": { "issues": "https://github.com/colinmollenhour/Cm_Cache_Backend_Redis/issues", - "source": "https://github.com/colinmollenhour/Cm_Cache_Backend_Redis/tree/1.16.0" + "source": "https://github.com/colinmollenhour/Cm_Cache_Backend_Redis/tree/1.17.0" }, - "time": "2023-01-18T03:00:27+00:00" + "time": "2023-10-25T17:06:02+00:00" }, { "name": "colinmollenhour/credis", - "version": "v1.15.0", + "version": "v1.16.0", "source": { "type": "git", "url": "https://github.com/colinmollenhour/credis.git", - "reference": "28810439de1d9597b7ba11794ed9479fb6f3de7c" + "reference": "5641140e14a9679f5a6f66c97268727f9558b881" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/colinmollenhour/credis/zipball/28810439de1d9597b7ba11794ed9479fb6f3de7c", - "reference": "28810439de1d9597b7ba11794ed9479fb6f3de7c", + "url": "https://api.github.com/repos/colinmollenhour/credis/zipball/5641140e14a9679f5a6f66c97268727f9558b881", + "reference": "5641140e14a9679f5a6f66c97268727f9558b881", "shasum": "" }, "require": { @@ -389,22 +547,22 @@ "homepage": "https://github.com/colinmollenhour/credis", "support": { "issues": "https://github.com/colinmollenhour/credis/issues", - "source": "https://github.com/colinmollenhour/credis/tree/v1.15.0" + "source": "https://github.com/colinmollenhour/credis/tree/v1.16.0" }, - "time": "2023-04-18T15:34:23+00:00" + "time": "2023-10-26T17:02:51+00:00" }, { "name": "colinmollenhour/php-redis-session-abstract", - "version": "v1.5.1", + "version": "v1.5.2", "source": { "type": "git", "url": "https://github.com/colinmollenhour/php-redis-session-abstract.git", - "reference": "3df52a7247a97fb4ec5bddfb731d1a6cddb5ef99" + "reference": "3d3e497bcf2e6d032c5a8f86aa180d181ad65dd3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/colinmollenhour/php-redis-session-abstract/zipball/3df52a7247a97fb4ec5bddfb731d1a6cddb5ef99", - "reference": "3df52a7247a97fb4ec5bddfb731d1a6cddb5ef99", + "url": "https://api.github.com/repos/colinmollenhour/php-redis-session-abstract/zipball/3d3e497bcf2e6d032c5a8f86aa180d181ad65dd3", + "reference": "3d3e497bcf2e6d032c5a8f86aa180d181ad65dd3", "shasum": "" }, "require": { @@ -433,22 +591,22 @@ "homepage": "https://github.com/colinmollenhour/php-redis-session-abstract", "support": { "issues": "https://github.com/colinmollenhour/php-redis-session-abstract/issues", - "source": "https://github.com/colinmollenhour/php-redis-session-abstract/tree/v1.5.1" + "source": "https://github.com/colinmollenhour/php-redis-session-abstract/tree/v1.5.2" }, - "time": "2022-11-16T19:36:20+00:00" + "time": "2023-11-03T14:58:07+00:00" }, { "name": "composer/ca-bundle", - "version": "1.3.6", + "version": "1.3.7", "source": { "type": "git", "url": "https://github.com/composer/ca-bundle.git", - "reference": "90d087e988ff194065333d16bc5cf649872d9cdb" + "reference": "76e46335014860eec1aa5a724799a00a2e47cc85" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/90d087e988ff194065333d16bc5cf649872d9cdb", - "reference": "90d087e988ff194065333d16bc5cf649872d9cdb", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/76e46335014860eec1aa5a724799a00a2e47cc85", + "reference": "76e46335014860eec1aa5a724799a00a2e47cc85", "shasum": "" }, "require": { @@ -495,7 +653,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/ca-bundle/issues", - "source": "https://github.com/composer/ca-bundle/tree/1.3.6" + "source": "https://github.com/composer/ca-bundle/tree/1.3.7" }, "funding": [ { @@ -511,7 +669,7 @@ "type": "tidelift" } ], - "time": "2023-06-06T12:02:59+00:00" + "time": "2023-08-30T09:31:38+00:00" }, { "name": "composer/class-map-generator", @@ -588,16 +746,16 @@ }, { "name": "composer/composer", - "version": "2.5.8", + "version": "2.6.5", "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "4c516146167d1392c8b9b269bb7c24115d262164" + "reference": "4b0fe89db9e65b1e64df633a992e70a7a215ab33" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/4c516146167d1392c8b9b269bb7c24115d262164", - "reference": "4c516146167d1392c8b9b269bb7c24115d262164", + "url": "https://api.github.com/repos/composer/composer/zipball/4b0fe89db9e65b1e64df633a992e70a7a215ab33", + "reference": "4b0fe89db9e65b1e64df633a992e70a7a215ab33", "shasum": "" }, "require": { @@ -605,23 +763,23 @@ "composer/class-map-generator": "^1.0", "composer/metadata-minifier": "^1.0", "composer/pcre": "^2.1 || ^3.1", - "composer/semver": "^3.0", + "composer/semver": "^3.2.5", "composer/spdx-licenses": "^1.5.7", "composer/xdebug-handler": "^2.0.2 || ^3.0.3", "justinrainbow/json-schema": "^5.2.11", "php": "^7.2.5 || ^8.0", "psr/log": "^1.0 || ^2.0 || ^3.0", - "react/promise": "^2.8", + "react/promise": "^2.8 || ^3", "seld/jsonlint": "^1.4", "seld/phar-utils": "^1.2", "seld/signal-handler": "^2.0", - "symfony/console": "^5.4.11 || ^6.0.11", - "symfony/filesystem": "^5.4 || ^6.0", - "symfony/finder": "^5.4 || ^6.0", + "symfony/console": "^5.4.11 || ^6.0.11 || ^7", + "symfony/filesystem": "^5.4 || ^6.0 || ^7", + "symfony/finder": "^5.4 || ^6.0 || ^7", "symfony/polyfill-php73": "^1.24", "symfony/polyfill-php80": "^1.24", "symfony/polyfill-php81": "^1.24", - "symfony/process": "^5.4 || ^6.0" + "symfony/process": "^5.4 || ^6.0 || ^7" }, "require-dev": { "phpstan/phpstan": "^1.9.3", @@ -629,7 +787,7 @@ "phpstan/phpstan-phpunit": "^1.0", "phpstan/phpstan-strict-rules": "^1", "phpstan/phpstan-symfony": "^1.2.10", - "symfony/phpunit-bridge": "^6.0" + "symfony/phpunit-bridge": "^6.0 || ^7" }, "suggest": { "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", @@ -642,7 +800,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.5-dev" + "dev-main": "2.6-dev" }, "phpstan": { "includes": [ @@ -652,7 +810,7 @@ }, "autoload": { "psr-4": { - "Composer\\": "src/Composer" + "Composer\\": "src/Composer/" } }, "notification-url": "https://packagist.org/downloads/", @@ -681,7 +839,8 @@ "support": { "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/composer/issues", - "source": "https://github.com/composer/composer/tree/2.5.8" + "security": "https://github.com/composer/composer/security/policy", + "source": "https://github.com/composer/composer/tree/2.6.5" }, "funding": [ { @@ -697,7 +856,7 @@ "type": "tidelift" } ], - "time": "2023-06-09T15:13:21+00:00" + "time": "2023-10-06T08:11:52+00:00" }, { "name": "composer/metadata-minifier", @@ -770,16 +929,16 @@ }, { "name": "composer/pcre", - "version": "3.1.0", + "version": "3.1.1", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2" + "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", - "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", + "url": "https://api.github.com/repos/composer/pcre/zipball/00104306927c7a0919b4ced2aaa6782c1e61a3c9", + "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9", "shasum": "" }, "require": { @@ -821,7 +980,7 @@ ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.1.0" + "source": "https://github.com/composer/pcre/tree/3.1.1" }, "funding": [ { @@ -837,20 +996,20 @@ "type": "tidelift" } ], - "time": "2022-11-17T09:50:14+00:00" + "time": "2023-10-11T07:11:09+00:00" }, { "name": "composer/semver", - "version": "3.3.2", + "version": "3.4.0", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", + "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32", + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32", "shasum": "" }, "require": { @@ -900,9 +1059,9 @@ "versioning" ], "support": { - "irc": "irc://irc.freenode.org/composer", + "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.3.2" + "source": "https://github.com/composer/semver/tree/3.4.0" }, "funding": [ { @@ -918,20 +1077,20 @@ "type": "tidelift" } ], - "time": "2022-04-01T19:23:25+00:00" + "time": "2023-08-31T09:50:34+00:00" }, { "name": "composer/spdx-licenses", - "version": "1.5.7", + "version": "1.5.8", "source": { "type": "git", "url": "https://github.com/composer/spdx-licenses.git", - "reference": "c848241796da2abf65837d51dce1fae55a960149" + "reference": "560bdcf8deb88ae5d611c80a2de8ea9d0358cc0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/c848241796da2abf65837d51dce1fae55a960149", - "reference": "c848241796da2abf65837d51dce1fae55a960149", + "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/560bdcf8deb88ae5d611c80a2de8ea9d0358cc0a", + "reference": "560bdcf8deb88ae5d611c80a2de8ea9d0358cc0a", "shasum": "" }, "require": { @@ -980,9 +1139,9 @@ "validator" ], "support": { - "irc": "irc://irc.freenode.org/composer", + "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/spdx-licenses/issues", - "source": "https://github.com/composer/spdx-licenses/tree/1.5.7" + "source": "https://github.com/composer/spdx-licenses/tree/1.5.8" }, "funding": [ { @@ -998,7 +1157,7 @@ "type": "tidelift" } ], - "time": "2022-05-23T07:37:50+00:00" + "time": "2023-11-20T07:44:33+00:00" }, { "name": "composer/xdebug-handler", @@ -1066,6 +1225,56 @@ ], "time": "2022-02-25T21:32:43+00:00" }, + { + "name": "dasprid/enum", + "version": "1.0.5", + "source": { + "type": "git", + "url": "https://github.com/DASPRiD/Enum.git", + "reference": "6faf451159fb8ba4126b925ed2d78acfce0dc016" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/DASPRiD/Enum/zipball/6faf451159fb8ba4126b925ed2d78acfce0dc016", + "reference": "6faf451159fb8ba4126b925ed2d78acfce0dc016", + "shasum": "" + }, + "require": { + "php": ">=7.1 <9.0" + }, + "require-dev": { + "phpunit/phpunit": "^7 | ^8 | ^9", + "squizlabs/php_codesniffer": "*" + }, + "type": "library", + "autoload": { + "psr-4": { + "DASPRiD\\Enum\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Ben Scholzen 'DASPRiD'", + "email": "mail@dasprids.de", + "homepage": "https://dasprids.de/", + "role": "Developer" + } + ], + "description": "PHP 7.1 enum implementation", + "keywords": [ + "enum", + "map" + ], + "support": { + "issues": "https://github.com/DASPRiD/Enum/issues", + "source": "https://github.com/DASPRiD/Enum/tree/1.0.5" + }, + "time": "2023-08-25T16:18:39+00:00" + }, { "name": "doctrine/annotations", "version": "2.0.1", @@ -1142,77 +1351,29 @@ }, "time": "2023-02-02T22:02:53+00:00" }, - { - "name": "doctrine/deprecations", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/deprecations.git", - "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", - "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9", - "phpstan/phpstan": "1.4.10 || 1.10.15", - "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "psalm/plugin-phpunit": "0.18.4", - "psr/log": "^1 || ^2 || ^3", - "vimeo/psalm": "4.30.0 || 5.12.0" - }, - "suggest": { - "psr/log": "Allows logging deprecations via PSR-3 logger implementation" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", - "homepage": "https://www.doctrine-project.org/", - "support": { - "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/v1.1.1" - }, - "time": "2023-06-03T09:27:29+00:00" - }, { "name": "doctrine/lexer", - "version": "2.1.0", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124" + "reference": "84a527db05647743d50373e0ec53a152f2cde568" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", - "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/84a527db05647743d50373e0ec53a152f2cde568", + "reference": "84a527db05647743d50373e0ec53a152f2cde568", "shasum": "" }, "require": { - "doctrine/deprecations": "^1.0", - "php": "^7.1 || ^8.0" + "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^9 || ^10", - "phpstan/phpstan": "^1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "doctrine/coding-standard": "^10", + "phpstan/phpstan": "^1.9", + "phpunit/phpunit": "^9.5", "psalm/plugin-phpunit": "^0.18.3", - "vimeo/psalm": "^4.11 || ^5.0" + "vimeo/psalm": "^5.0" }, "type": "library", "autoload": { @@ -1249,7 +1410,7 @@ ], "support": { "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/2.1.0" + "source": "https://github.com/doctrine/lexer/tree/3.0.0" }, "funding": [ { @@ -1265,96 +1426,211 @@ "type": "tidelift" } ], - "time": "2022-12-14T08:49:07+00:00" + "time": "2022-12-15T16:57:16+00:00" }, { - "name": "elasticsearch/elasticsearch", - "version": "v7.17.2", + "name": "elastic/transport", + "version": "v8.8.0", "source": { "type": "git", - "url": "git@github.com:elastic/elasticsearch-php.git", - "reference": "2d302233f2bb0926812d82823bb820d405e130fc" + "url": "git@github.com:elastic/elastic-transport-php.git", + "reference": "cdf9f63a16ec6bfb4c881ab89aa0e2a61fb7c20b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/elastic/elasticsearch-php/zipball/2d302233f2bb0926812d82823bb820d405e130fc", - "reference": "2d302233f2bb0926812d82823bb820d405e130fc", + "url": "https://api.github.com/repos/elastic/elastic-transport-php/zipball/cdf9f63a16ec6bfb4c881ab89aa0e2a61fb7c20b", + "reference": "cdf9f63a16ec6bfb4c881ab89aa0e2a61fb7c20b", "shasum": "" }, "require": { - "ext-json": ">=1.3.7", - "ezimuel/ringphp": "^1.1.2", - "php": "^7.3 || ^8.0", - "psr/log": "^1|^2|^3" + "composer-runtime-api": "^2.0", + "php": "^7.4 || ^8.0", + "php-http/discovery": "^1.14", + "php-http/httplug": "^2.3", + "psr/http-client": "^1.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0 || ^2.0", + "psr/log": "^1 || ^2 || ^3" }, "require-dev": { - "ext-yaml": "*", - "ext-zip": "*", - "mockery/mockery": "^1.2", - "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^9.3", - "squizlabs/php_codesniffer": "^3.4", - "symfony/finder": "~4.0" - }, - "suggest": { - "ext-curl": "*", - "monolog/monolog": "Allows for client-level logging and tracing" + "nyholm/psr7": "^1.5", + "php-http/mock-client": "^1.5", + "phpstan/phpstan": "^1.4", + "phpunit/phpunit": "^9.5" }, "type": "library", "autoload": { - "files": [ - "src/autoload.php" - ], "psr-4": { - "Elasticsearch\\": "src/Elasticsearch/" + "Elastic\\Transport\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "Apache-2.0", - "LGPL-2.1-only" - ], - "authors": [ - { - "name": "Zachary Tong" - }, - { - "name": "Enrico Zimuel" - } + "MIT" ], - "description": "PHP Client for Elasticsearch", + "description": "HTTP transport PHP library for Elastic products", "keywords": [ - "client", - "elasticsearch", - "search" + "PSR_17", + "elastic", + "http", + "psr-18", + "psr-7", + "transport" ], - "time": "2023-04-21T15:31:12+00:00" + "time": "2023-11-08T10:51:51+00:00" }, { - "name": "ezimuel/guzzlestreams", - "version": "3.1.0", + "name": "elasticsearch/elasticsearch", + "version": "v8.5.3", "source": { "type": "git", - "url": "https://github.com/ezimuel/guzzlestreams.git", - "reference": "b4b5a025dfee70d6cd34c780e07330eb93d5b997" + "url": "git@github.com:elastic/elasticsearch-php.git", + "reference": "9d850932b8ab8129fd4baf597a1172e8f583b436" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ezimuel/guzzlestreams/zipball/b4b5a025dfee70d6cd34c780e07330eb93d5b997", - "reference": "b4b5a025dfee70d6cd34c780e07330eb93d5b997", + "url": "https://api.github.com/repos/elastic/elasticsearch-php/zipball/9d850932b8ab8129fd4baf597a1172e8f583b436", + "reference": "9d850932b8ab8129fd4baf597a1172e8f583b436", "shasum": "" }, "require": { - "php": ">=5.4.0" + "elastic/transport": "^8.5", + "guzzlehttp/guzzle": "^7.0", + "php": "^7.4 || ^8.0", + "psr/http-client": "^1.0", + "psr/http-message": "^1.0", + "psr/log": "^1|^2|^3" }, "require-dev": { - "phpunit/phpunit": "~9.0" + "ext-yaml": "*", + "ext-zip": "*", + "mockery/mockery": "^1.5", + "nyholm/psr7": "^1.5", + "php-http/mock-client": "^1.5", + "phpstan/phpstan": "^1.4", + "phpunit/phpunit": "^9.5", + "symfony/finder": "~4.0", + "symfony/http-client": "^5.0|^6.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } + "autoload": { + "psr-4": { + "Elastic\\Elasticsearch\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHP Client for Elasticsearch", + "keywords": [ + "client", + "elastic", + "elasticsearch", + "search" + ], + "time": "2022-11-22T14:15:58+00:00" + }, + { + "name": "endroid/qr-code", + "version": "4.8.5", + "source": { + "type": "git", + "url": "https://github.com/endroid/qr-code.git", + "reference": "0db25b506a8411a5e1644ebaa67123a6eb7b6a77" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/endroid/qr-code/zipball/0db25b506a8411a5e1644ebaa67123a6eb7b6a77", + "reference": "0db25b506a8411a5e1644ebaa67123a6eb7b6a77", + "shasum": "" + }, + "require": { + "bacon/bacon-qr-code": "^2.0.5", + "php": "^8.1" + }, + "conflict": { + "khanamiryan/qrcode-detector-decoder": "^1.0.6" + }, + "require-dev": { + "endroid/quality": "dev-master", + "ext-gd": "*", + "khanamiryan/qrcode-detector-decoder": "^1.0.4||^2.0.2", + "setasign/fpdf": "^1.8.2" + }, + "suggest": { + "ext-gd": "Enables you to write PNG images", + "khanamiryan/qrcode-detector-decoder": "Enables you to use the image validator", + "roave/security-advisories": "Makes sure package versions with known security issues are not installed", + "setasign/fpdf": "Enables you to use the PDF writer" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.x-dev" + } + }, + "autoload": { + "psr-4": { + "Endroid\\QrCode\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jeroen van den Enden", + "email": "info@endroid.nl" + } + ], + "description": "Endroid QR Code", + "homepage": "https://github.com/endroid/qr-code", + "keywords": [ + "code", + "endroid", + "php", + "qr", + "qrcode" + ], + "support": { + "issues": "https://github.com/endroid/qr-code/issues", + "source": "https://github.com/endroid/qr-code/tree/4.8.5" + }, + "funding": [ + { + "url": "https://github.com/endroid", + "type": "github" + } + ], + "time": "2023-09-29T14:03:20+00:00" + }, + { + "name": "ezimuel/guzzlestreams", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/ezimuel/guzzlestreams.git", + "reference": "b4b5a025dfee70d6cd34c780e07330eb93d5b997" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ezimuel/guzzlestreams/zipball/b4b5a025dfee70d6cd34c780e07330eb93d5b997", + "reference": "b4b5a025dfee70d6cd34c780e07330eb93d5b997", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "~9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } }, "autoload": { "psr-4": { @@ -1442,20 +1718,20 @@ }, { "name": "ezyang/htmlpurifier", - "version": "v4.16.0", + "version": "v4.17.0", "source": { "type": "git", "url": "https://github.com/ezyang/htmlpurifier.git", - "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8" + "reference": "bbc513d79acf6691fa9cf10f192c90dd2957f18c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/523407fb06eb9e5f3d59889b3978d5bfe94299c8", - "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8", + "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/bbc513d79acf6691fa9cf10f192c90dd2957f18c", + "reference": "bbc513d79acf6691fa9cf10f192c90dd2957f18c", "shasum": "" }, "require": { - "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" }, "require-dev": { "cerdic/css-tidy": "^1.7 || ^2.0", @@ -1497,9 +1773,61 @@ ], "support": { "issues": "https://github.com/ezyang/htmlpurifier/issues", - "source": "https://github.com/ezyang/htmlpurifier/tree/v4.16.0" + "source": "https://github.com/ezyang/htmlpurifier/tree/v4.17.0" + }, + "time": "2023-11-17T15:01:25+00:00" + }, + { + "name": "google/recaptcha", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/google/recaptcha.git", + "reference": "d59a801e98a4e9174814a6d71bbc268dff1202df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/google/recaptcha/zipball/d59a801e98a4e9174814a6d71bbc268dff1202df", + "reference": "d59a801e98a4e9174814a6d71bbc268dff1202df", + "shasum": "" + }, + "require": { + "php": ">=8" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.14", + "php-coveralls/php-coveralls": "^2.5", + "phpunit/phpunit": "^10" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "psr-4": { + "ReCaptcha\\": "src/ReCaptcha" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Client library for reCAPTCHA, a free service that protects websites from spam and abuse.", + "homepage": "https://www.google.com/recaptcha/", + "keywords": [ + "Abuse", + "captcha", + "recaptcha", + "spam" + ], + "support": { + "forum": "https://groups.google.com/forum/#!forum/recaptcha", + "issues": "https://github.com/google/recaptcha/issues", + "source": "https://github.com/google/recaptcha" }, - "time": "2022-09-18T07:06:19+00:00" + "time": "2023-02-18T17:41:46+00:00" }, { "name": "guzzlehttp/guzzle", @@ -1828,16 +2156,16 @@ }, { "name": "justinrainbow/json-schema", - "version": "5.2.12", + "version": "v5.2.13", "source": { "type": "git", "url": "https://github.com/justinrainbow/json-schema.git", - "reference": "ad87d5a5ca981228e0e205c2bc7dfb8e24559b60" + "reference": "fbbe7e5d79f618997bc3332a6f49246036c45793" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/ad87d5a5ca981228e0e205c2bc7dfb8e24559b60", - "reference": "ad87d5a5ca981228e0e205c2bc7dfb8e24559b60", + "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/fbbe7e5d79f618997bc3332a6f49246036c45793", + "reference": "fbbe7e5d79f618997bc3332a6f49246036c45793", "shasum": "" }, "require": { @@ -1892,22 +2220,22 @@ ], "support": { "issues": "https://github.com/justinrainbow/json-schema/issues", - "source": "https://github.com/justinrainbow/json-schema/tree/5.2.12" + "source": "https://github.com/justinrainbow/json-schema/tree/v5.2.13" }, - "time": "2022-04-13T08:02:27+00:00" + "time": "2023-09-26T02:20:38+00:00" }, { "name": "laminas/laminas-captcha", - "version": "2.16.0", + "version": "2.17.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-captcha.git", - "reference": "8623619b1b634ba3672f91a9fb610deffec9c932" + "reference": "981b3d1e287653b1fc5b71859964508ac0a2d7cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-captcha/zipball/8623619b1b634ba3672f91a9fb610deffec9c932", - "reference": "8623619b1b634ba3672f91a9fb610deffec9c932", + "url": "https://api.github.com/repos/laminas/laminas-captcha/zipball/981b3d1e287653b1fc5b71859964508ac0a2d7cb", + "reference": "981b3d1e287653b1fc5b71859964508ac0a2d7cb", "shasum": "" }, "require": { @@ -1916,14 +2244,14 @@ "laminas/laminas-stdlib": "^3.10.1", "laminas/laminas-text": "^2.9.0", "laminas/laminas-validator": "^2.19.0", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "zendframework/zend-captcha": "*" }, "require-dev": { "ext-gd": "*", - "laminas/laminas-coding-standard": "~2.4.0", + "laminas/laminas-coding-standard": "~2.5.0", "phpunit/phpunit": "^9.5.26", "psalm/plugin-phpunit": "^0.18.4", "vimeo/psalm": "^5.1" @@ -1961,33 +2289,33 @@ "type": "community_bridge" } ], - "time": "2023-01-01T13:12:40+00:00" + "time": "2023-10-18T10:03:37+00:00" }, { "name": "laminas/laminas-code", - "version": "4.11.0", + "version": "4.13.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-code.git", - "reference": "169123b3ede20a9193480c53de2a8194f8c073ec" + "reference": "7353d4099ad5388e84737dd16994316a04f48dbf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-code/zipball/169123b3ede20a9193480c53de2a8194f8c073ec", - "reference": "169123b3ede20a9193480c53de2a8194f8c073ec", + "url": "https://api.github.com/repos/laminas/laminas-code/zipball/7353d4099ad5388e84737dd16994316a04f48dbf", + "reference": "7353d4099ad5388e84737dd16994316a04f48dbf", "shasum": "" }, "require": { - "php": "~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "require-dev": { - "doctrine/annotations": "^2.0.0", + "doctrine/annotations": "^2.0.1", "ext-phar": "*", - "laminas/laminas-coding-standard": "^2.3.0", - "laminas/laminas-stdlib": "^3.6.1", - "phpunit/phpunit": "^10.0.9", + "laminas/laminas-coding-standard": "^2.5.0", + "laminas/laminas-stdlib": "^3.17.0", + "phpunit/phpunit": "^10.3.3", "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.7.1" + "vimeo/psalm": "^5.15.0" }, "suggest": { "doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features", @@ -2024,26 +2352,26 @@ "type": "community_bridge" } ], - "time": "2023-05-14T12:05:38+00:00" + "time": "2023-10-18T10:00:55+00:00" }, { "name": "laminas/laminas-config", - "version": "3.8.0", + "version": "3.9.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-config.git", - "reference": "46baad58d0b12cf98539e04334eff40a1fdfb9a0" + "reference": "e53717277f6c22b1c697a46473b9a5ec9a438efa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-config/zipball/46baad58d0b12cf98539e04334eff40a1fdfb9a0", - "reference": "46baad58d0b12cf98539e04334eff40a1fdfb9a0", + "url": "https://api.github.com/repos/laminas/laminas-config/zipball/e53717277f6c22b1c697a46473b9a5ec9a438efa", + "reference": "e53717277f6c22b1c697a46473b9a5ec9a438efa", "shasum": "" }, "require": { "ext-json": "*", "laminas/laminas-stdlib": "^3.6", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0", + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", "psr/container": "^1.0" }, "conflict": { @@ -2092,28 +2420,28 @@ "type": "community_bridge" } ], - "time": "2022-10-16T14:21:22+00:00" + "time": "2023-09-19T12:02:54+00:00" }, { "name": "laminas/laminas-crypt", - "version": "3.10.0", + "version": "3.11.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-crypt.git", - "reference": "588375caf4d505fee90d1449e9714c912ceb5051" + "reference": "098fc61a895d1ff5d1c2b861525b4428bf6c3240" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-crypt/zipball/588375caf4d505fee90d1449e9714c912ceb5051", - "reference": "588375caf4d505fee90d1449e9714c912ceb5051", + "url": "https://api.github.com/repos/laminas/laminas-crypt/zipball/098fc61a895d1ff5d1c2b861525b4428bf6c3240", + "reference": "098fc61a895d1ff5d1c2b861525b4428bf6c3240", "shasum": "" }, "require": { "ext-mbstring": "*", "laminas/laminas-math": "^3.4", "laminas/laminas-servicemanager": "^3.11.2", - "laminas/laminas-stdlib": "^3.6", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0", + "laminas/laminas-stdlib": "^3.8", + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", "psr/container": "^1.1" }, "conflict": { @@ -2156,7 +2484,7 @@ "type": "community_bridge" } ], - "time": "2023-03-03T15:57:57+00:00" + "time": "2023-11-06T23:02:42+00:00" }, { "name": "laminas/laminas-db", @@ -2231,21 +2559,21 @@ }, { "name": "laminas/laminas-di", - "version": "3.12.0", + "version": "3.13.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-di.git", - "reference": "8d4074b5f51b747a6e4e055995f1bdf2a825d5a6" + "reference": "b7178e66a61cc46f6c5c7ea16009daff59e82154" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-di/zipball/8d4074b5f51b747a6e4e055995f1bdf2a825d5a6", - "reference": "8d4074b5f51b747a6e4e055995f1bdf2a825d5a6", + "url": "https://api.github.com/repos/laminas/laminas-di/zipball/b7178e66a61cc46f6c5c7ea16009daff59e82154", + "reference": "b7178e66a61cc46f6c5c7ea16009daff59e82154", "shasum": "" }, "require": { - "laminas/laminas-stdlib": "^3.6", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0", + "laminas/laminas-stdlib": "^3.18.0", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0", "psr/container": "^1.1.1", "psr/log": "^1.1.4 || ^3.0.0" }, @@ -2255,8 +2583,8 @@ "zendframework/zend-di": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.4.0", - "laminas/laminas-servicemanager": "^3.12", + "laminas/laminas-coding-standard": "~2.5.0", + "laminas/laminas-servicemanager": "^3.22", "mikey179/vfsstream": "^1.6.11@alpha", "phpbench/phpbench": "^1.2.7", "phpunit/phpunit": "^9.5.26", @@ -2304,37 +2632,37 @@ "type": "community_bridge" } ], - "time": "2023-01-02T18:24:36+00:00" + "time": "2023-11-02T16:59:30+00:00" }, { "name": "laminas/laminas-escaper", - "version": "2.12.0", + "version": "2.13.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-escaper.git", - "reference": "ee7a4c37bf3d0e8c03635d5bddb5bb3184ead490" + "reference": "af459883f4018d0f8a0c69c7a209daef3bf973ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/ee7a4c37bf3d0e8c03635d5bddb5bb3184ead490", - "reference": "ee7a4c37bf3d0e8c03635d5bddb5bb3184ead490", + "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/af459883f4018d0f8a0c69c7a209daef3bf973ba", + "reference": "af459883f4018d0f8a0c69c7a209daef3bf973ba", "shasum": "" }, "require": { "ext-ctype": "*", "ext-mbstring": "*", - "php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "zendframework/zend-escaper": "*" }, "require-dev": { - "infection/infection": "^0.26.6", - "laminas/laminas-coding-standard": "~2.4.0", + "infection/infection": "^0.27.0", + "laminas/laminas-coding-standard": "~2.5.0", "maglnet/composer-require-checker": "^3.8.0", - "phpunit/phpunit": "^9.5.18", - "psalm/plugin-phpunit": "^0.17.0", - "vimeo/psalm": "^4.22.0" + "phpunit/phpunit": "^9.6.7", + "psalm/plugin-phpunit": "^0.18.4", + "vimeo/psalm": "^5.9" }, "type": "library", "autoload": { @@ -2366,24 +2694,24 @@ "type": "community_bridge" } ], - "time": "2022-10-10T10:11:09+00:00" + "time": "2023-10-10T08:35:13+00:00" }, { "name": "laminas/laminas-eventmanager", - "version": "3.10.0", + "version": "3.12.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-eventmanager.git", - "reference": "5a5114ab2d3fa4424faa46a2fb0a4e49a61f6eba" + "reference": "4a576922c00cc7838d60d004a7bd6f5a02c23b57" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-eventmanager/zipball/5a5114ab2d3fa4424faa46a2fb0a4e49a61f6eba", - "reference": "5a5114ab2d3fa4424faa46a2fb0a4e49a61f6eba", + "url": "https://api.github.com/repos/laminas/laminas-eventmanager/zipball/4a576922c00cc7838d60d004a7bd6f5a02c23b57", + "reference": "4a576922c00cc7838d60d004a7bd6f5a02c23b57", "shasum": "" }, "require": { - "php": "~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "container-interop/container-interop": "<1.2", @@ -2391,12 +2719,12 @@ }, "require-dev": { "laminas/laminas-coding-standard": "~2.5.0", - "laminas/laminas-stdlib": "^3.15", - "phpbench/phpbench": "^1.2.7", - "phpunit/phpunit": "^9.5.26", - "psalm/plugin-phpunit": "^0.18.0", + "laminas/laminas-stdlib": "^3.17", + "phpbench/phpbench": "^1.2.10", + "phpunit/phpunit": "^10.4.1", + "psalm/plugin-phpunit": "^0.18.4", "psr/container": "^1.1.2 || ^2.0.2", - "vimeo/psalm": "^5.0.0" + "vimeo/psalm": "^5.11" }, "suggest": { "laminas/laminas-stdlib": "^2.7.3 || ^3.0, to use the FilterChain feature", @@ -2434,20 +2762,20 @@ "type": "community_bridge" } ], - "time": "2023-01-11T19:52:45+00:00" + "time": "2023-10-18T16:36:45+00:00" }, { "name": "laminas/laminas-feed", - "version": "2.21.0", + "version": "2.22.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-feed.git", - "reference": "52918789a417bc292ccd6fbb4b91bd78a65d50ab" + "reference": "669792b819fca7274698147ad7a2ecc1b0a9b141" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-feed/zipball/52918789a417bc292ccd6fbb4b91bd78a65d50ab", - "reference": "52918789a417bc292ccd6fbb4b91bd78a65d50ab", + "url": "https://api.github.com/repos/laminas/laminas-feed/zipball/669792b819fca7274698147ad7a2ecc1b0a9b141", + "reference": "669792b819fca7274698147ad7a2ecc1b0a9b141", "shasum": "" }, "require": { @@ -2455,24 +2783,24 @@ "ext-libxml": "*", "laminas/laminas-escaper": "^2.9", "laminas/laminas-stdlib": "^3.6", - "php": "~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "laminas/laminas-servicemanager": "<3.3", "zendframework/zend-feed": "*" }, "require-dev": { - "laminas/laminas-cache": "^2.13.2 || ^3.10.1", + "laminas/laminas-cache": "^2.13.2 || ^3.11", "laminas/laminas-cache-storage-adapter-memory": "^1.1.0 || ^2.2", "laminas/laminas-coding-standard": "~2.5.0", "laminas/laminas-db": "^2.18", "laminas/laminas-http": "^2.18", "laminas/laminas-servicemanager": "^3.21.0", - "laminas/laminas-validator": "^2.30.1", - "phpunit/phpunit": "^10.2.6", + "laminas/laminas-validator": "^2.38", + "phpunit/phpunit": "^10.3.1", "psalm/plugin-phpunit": "^0.18.4", "psr/http-message": "^2.0", - "vimeo/psalm": "^5.13.1" + "vimeo/psalm": "^5.14.1" }, "suggest": { "laminas/laminas-cache": "Laminas\\Cache component, for optionally caching feeds between requests", @@ -2514,7 +2842,7 @@ "type": "community_bridge" } ], - "time": "2023-07-24T09:21:16+00:00" + "time": "2023-10-11T20:16:37+00:00" }, { "name": "laminas/laminas-file", @@ -2586,23 +2914,23 @@ }, { "name": "laminas/laminas-filter", - "version": "2.32.0", + "version": "2.33.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-filter.git", - "reference": "2b7e6b2b26a92412c38336ee3089251164edf141" + "reference": "6ad64828d25ec4bdf226ec5096aabb04aa710324" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-filter/zipball/2b7e6b2b26a92412c38336ee3089251164edf141", - "reference": "2b7e6b2b26a92412c38336ee3089251164edf141", + "url": "https://api.github.com/repos/laminas/laminas-filter/zipball/6ad64828d25ec4bdf226ec5096aabb04aa710324", + "reference": "6ad64828d25ec4bdf226ec5096aabb04aa710324", "shasum": "" }, "require": { "ext-mbstring": "*", "laminas/laminas-servicemanager": "^3.21.0", "laminas/laminas-stdlib": "^3.13.0", - "php": "~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "laminas/laminas-validator": "<2.10.1", @@ -2611,12 +2939,13 @@ "require-dev": { "laminas/laminas-coding-standard": "~2.5.0", "laminas/laminas-crypt": "^3.10", - "laminas/laminas-uri": "^2.10", + "laminas/laminas-i18n": "^2.23.1", + "laminas/laminas-uri": "^2.11", "pear/archive_tar": "^1.4.14", - "phpunit/phpunit": "^10.1.3", + "phpunit/phpunit": "^10.4.2", "psalm/plugin-phpunit": "^0.18.4", "psr/http-factory": "^1.0.2", - "vimeo/psalm": "^5.11" + "vimeo/psalm": "^5.15.0" }, "suggest": { "laminas/laminas-crypt": "Laminas\\Crypt component, for encryption filters", @@ -2660,28 +2989,28 @@ "type": "community_bridge" } ], - "time": "2023-05-16T23:25:05+00:00" + "time": "2023-11-03T13:29:10+00:00" }, { "name": "laminas/laminas-http", - "version": "2.18.0", + "version": "2.19.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-http.git", - "reference": "76de9008f889bc7088f85a41d0d2b06c2b59c53d" + "reference": "26dd6d1177e25d970058863c2afed12bb9dbff4d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-http/zipball/76de9008f889bc7088f85a41d0d2b06c2b59c53d", - "reference": "76de9008f889bc7088f85a41d0d2b06c2b59c53d", + "url": "https://api.github.com/repos/laminas/laminas-http/zipball/26dd6d1177e25d970058863c2afed12bb9dbff4d", + "reference": "26dd6d1177e25d970058863c2afed12bb9dbff4d", "shasum": "" }, "require": { - "laminas/laminas-loader": "^2.8", + "laminas/laminas-loader": "^2.10", "laminas/laminas-stdlib": "^3.6", - "laminas/laminas-uri": "^2.9.1", + "laminas/laminas-uri": "^2.11", "laminas/laminas-validator": "^2.15", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "zendframework/zend-http": "*" @@ -2725,45 +3054,45 @@ "type": "community_bridge" } ], - "time": "2022-11-23T15:45:41+00:00" + "time": "2023-11-02T16:27:41+00:00" }, { "name": "laminas/laminas-i18n", - "version": "2.23.0", + "version": "2.24.1", "source": { "type": "git", "url": "https://github.com/laminas/laminas-i18n.git", - "reference": "bb844a1141bb6e65d8889f5a08383f761a8270b2" + "reference": "dafb5eddfb43575befd29aeb195c55f92834fd32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-i18n/zipball/bb844a1141bb6e65d8889f5a08383f761a8270b2", - "reference": "bb844a1141bb6e65d8889f5a08383f761a8270b2", + "url": "https://api.github.com/repos/laminas/laminas-i18n/zipball/dafb5eddfb43575befd29aeb195c55f92834fd32", + "reference": "dafb5eddfb43575befd29aeb195c55f92834fd32", "shasum": "" }, "require": { "ext-intl": "*", "laminas/laminas-servicemanager": "^3.21.0", "laminas/laminas-stdlib": "^3.0", - "php": "~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "laminas/laminas-view": "<2.20.0", "zendframework/zend-i18n": "*" }, "require-dev": { - "laminas/laminas-cache": "^3.10.1", - "laminas/laminas-cache-storage-adapter-memory": "^2.2.0", + "laminas/laminas-cache": "^3.11.0", + "laminas/laminas-cache-storage-adapter-memory": "^2.3.0", "laminas/laminas-cache-storage-deprecated-factory": "^1.1", "laminas/laminas-coding-standard": "~2.5.0", - "laminas/laminas-config": "^3.8.0", - "laminas/laminas-eventmanager": "^3.10", - "laminas/laminas-filter": "^2.31", - "laminas/laminas-validator": "^2.30.1", - "laminas/laminas-view": "^2.27", - "phpunit/phpunit": "^10.1.3", + "laminas/laminas-config": "^3.9.0", + "laminas/laminas-eventmanager": "^3.12", + "laminas/laminas-filter": "^2.33", + "laminas/laminas-validator": "^2.41", + "laminas/laminas-view": "^2.32", + "phpunit/phpunit": "^10.4.2", "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.11" + "vimeo/psalm": "^5.15.0" }, "suggest": { "laminas/laminas-cache": "You should install this package to cache the translations", @@ -2810,31 +3139,31 @@ "type": "community_bridge" } ], - "time": "2023-05-16T23:22:24+00:00" + "time": "2023-11-08T08:56:45+00:00" }, { "name": "laminas/laminas-json", - "version": "3.5.0", + "version": "3.6.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-json.git", - "reference": "7a8a1d7bf2d05dd6c1fbd7c0868d3848cf2b57ec" + "reference": "53ff787b20b77197f38680c737e8dfffa846b85b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-json/zipball/7a8a1d7bf2d05dd6c1fbd7c0868d3848cf2b57ec", - "reference": "7a8a1d7bf2d05dd6c1fbd7c0868d3848cf2b57ec", + "url": "https://api.github.com/repos/laminas/laminas-json/zipball/53ff787b20b77197f38680c737e8dfffa846b85b", + "reference": "53ff787b20b77197f38680c737e8dfffa846b85b", "shasum": "" }, "require": { - "php": "~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "zendframework/zend-json": "*" }, "require-dev": { "laminas/laminas-coding-standard": "~2.4.0", - "laminas/laminas-stdlib": "^2.7.7 || ^3.1", + "laminas/laminas-stdlib": "^2.7.7 || ^3.8", "phpunit/phpunit": "^9.5.25" }, "suggest": { @@ -2871,24 +3200,24 @@ "type": "community_bridge" } ], - "time": "2022-10-17T04:06:45+00:00" + "time": "2023-10-18T09:54:55+00:00" }, { "name": "laminas/laminas-loader", - "version": "2.9.0", + "version": "2.10.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-loader.git", - "reference": "51ed9c3fa42d1098a9997571730c0cbf42d078d3" + "reference": "e6fe952304ef40ce45cd814751ab35d42afdad12" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-loader/zipball/51ed9c3fa42d1098a9997571730c0cbf42d078d3", - "reference": "51ed9c3fa42d1098a9997571730c0cbf42d078d3", + "url": "https://api.github.com/repos/laminas/laminas-loader/zipball/e6fe952304ef40ce45cd814751ab35d42afdad12", + "reference": "e6fe952304ef40ce45cd814751ab35d42afdad12", "shasum": "" }, "require": { - "php": "~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "zendframework/zend-loader": "*" @@ -2927,20 +3256,20 @@ "type": "community_bridge" } ], - "time": "2022-10-16T12:50:49+00:00" + "time": "2023-10-18T09:58:51+00:00" }, { "name": "laminas/laminas-mail", - "version": "2.23.0", + "version": "2.25.1", "source": { "type": "git", "url": "https://github.com/laminas/laminas-mail.git", - "reference": "3ae64e7cfd505552fbee2e556746c345ccc33cf7" + "reference": "110e04497395123998220e244cceecb167cc6dda" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-mail/zipball/3ae64e7cfd505552fbee2e556746c345ccc33cf7", - "reference": "3ae64e7cfd505552fbee2e556746c345ccc33cf7", + "url": "https://api.github.com/repos/laminas/laminas-mail/zipball/110e04497395123998220e244cceecb167cc6dda", + "reference": "110e04497395123998220e244cceecb167cc6dda", "shasum": "" }, "require": { @@ -2949,23 +3278,21 @@ "laminas/laminas-mime": "^2.11.0", "laminas/laminas-stdlib": "^3.17.0", "laminas/laminas-validator": "^2.31.0", - "php": "~8.1.0 || ~8.2.0", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0", "symfony/polyfill-intl-idn": "^1.27.0", "symfony/polyfill-mbstring": "^1.27.0", "webmozart/assert": "^1.11.0" }, "require-dev": { "laminas/laminas-coding-standard": "~2.5.0", - "laminas/laminas-crypt": "^3.10.0", "laminas/laminas-db": "^2.18", - "laminas/laminas-servicemanager": "^3.21", - "phpunit/phpunit": "^10.1.3", + "laminas/laminas-servicemanager": "^3.22.1", + "phpunit/phpunit": "^10.4.2", "psalm/plugin-phpunit": "^0.18.4", - "symfony/process": "^6.2.10", - "vimeo/psalm": "^5.11" + "symfony/process": "^6.3.4", + "vimeo/psalm": "^5.15" }, "suggest": { - "laminas/laminas-crypt": "^3.10 Crammd5 support in SMTP Auth", "laminas/laminas-servicemanager": "^3.21 when using SMTP to deliver messages" }, "type": "library", @@ -3004,25 +3331,25 @@ "type": "community_bridge" } ], - "time": "2023-05-25T13:15:12+00:00" + "time": "2023-11-02T10:32:34+00:00" }, { "name": "laminas/laminas-math", - "version": "3.6.0", + "version": "3.7.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-math.git", - "reference": "5770fc632a3614f5526632a8b70f41b65130460e" + "reference": "3e90445828fd64308de2a600b48c3df051b3b17a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-math/zipball/5770fc632a3614f5526632a8b70f41b65130460e", - "reference": "5770fc632a3614f5526632a8b70f41b65130460e", + "url": "https://api.github.com/repos/laminas/laminas-math/zipball/3e90445828fd64308de2a600b48c3df051b3b17a", + "reference": "3e90445828fd64308de2a600b48c3df051b3b17a", "shasum": "" }, "require": { "ext-mbstring": "*", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "zendframework/zend-math": "*" @@ -3071,25 +3398,25 @@ "type": "community_bridge" } ], - "time": "2022-10-16T14:22:28+00:00" + "time": "2023-10-18T09:53:37+00:00" }, { "name": "laminas/laminas-mime", - "version": "2.11.0", + "version": "2.12.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-mime.git", - "reference": "60ec04b755821c79c1987ce291b44e69f2c0831f" + "reference": "08cc544778829b7d68d27a097885bd6e7130135e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-mime/zipball/60ec04b755821c79c1987ce291b44e69f2c0831f", - "reference": "60ec04b755821c79c1987ce291b44e69f2c0831f", + "url": "https://api.github.com/repos/laminas/laminas-mime/zipball/08cc544778829b7d68d27a097885bd6e7130135e", + "reference": "08cc544778829b7d68d27a097885bd6e7130135e", "shasum": "" }, "require": { "laminas/laminas-stdlib": "^2.7 || ^3.0", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "zendframework/zend-mime": "*" @@ -3132,41 +3459,41 @@ "type": "community_bridge" } ], - "time": "2022-10-18T08:38:15+00:00" + "time": "2023-11-02T16:47:19+00:00" }, { "name": "laminas/laminas-modulemanager", - "version": "2.14.0", + "version": "2.15.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-modulemanager.git", - "reference": "fb0a2c34423f7d3321dd7c42dc5fc4db905a99ac" + "reference": "4c4e6f29f0b1a770c8ce4f30dd3a48eb45ed7d3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-modulemanager/zipball/fb0a2c34423f7d3321dd7c42dc5fc4db905a99ac", - "reference": "fb0a2c34423f7d3321dd7c42dc5fc4db905a99ac", + "url": "https://api.github.com/repos/laminas/laminas-modulemanager/zipball/4c4e6f29f0b1a770c8ce4f30dd3a48eb45ed7d3b", + "reference": "4c4e6f29f0b1a770c8ce4f30dd3a48eb45ed7d3b", "shasum": "" }, "require": { - "brick/varexporter": "^0.3.2", + "brick/varexporter": "^0.3.2 || ^0.4", "laminas/laminas-config": "^3.7", "laminas/laminas-eventmanager": "^3.4", "laminas/laminas-stdlib": "^3.6", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0", + "php": "~8.1.0 || ~8.2.0|| ~8.3.0", "webimpress/safe-writer": "^1.0.2 || ^2.1" }, "conflict": { "zendframework/zend-modulemanager": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "^2.3", - "laminas/laminas-loader": "^2.9.0", - "laminas/laminas-mvc": "^3.5.0", - "laminas/laminas-servicemanager": "^3.19.0", - "phpunit/phpunit": "^9.5.25", - "psalm/plugin-phpunit": "^0.17.0", - "vimeo/psalm": "^4.29" + "laminas/laminas-coding-standard": "^2.5", + "laminas/laminas-loader": "^2.10", + "laminas/laminas-mvc": "^3.6.1", + "laminas/laminas-servicemanager": "^3.22.1", + "phpunit/phpunit": "^10.4.2", + "psalm/plugin-phpunit": "^0.18.4", + "vimeo/psalm": "^5.15" }, "suggest": { "laminas/laminas-console": "Laminas\\Console component", @@ -3204,20 +3531,20 @@ "type": "community_bridge" } ], - "time": "2022-10-28T09:21:04+00:00" + "time": "2023-11-02T09:09:35+00:00" }, { "name": "laminas/laminas-mvc", - "version": "3.6.1", + "version": "3.7.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-mvc.git", - "reference": "f12e801c31c04a4b35017354ff84070f5573879f" + "reference": "3f65447addf487189000e54dc1525cd952951da4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-mvc/zipball/f12e801c31c04a4b35017354ff84070f5573879f", - "reference": "f12e801c31c04a4b35017354ff84070f5573879f", + "url": "https://api.github.com/repos/laminas/laminas-mvc/zipball/3f65447addf487189000e54dc1525cd952951da4", + "reference": "3f65447addf487189000e54dc1525cd952951da4", "shasum": "" }, "require": { @@ -3229,17 +3556,17 @@ "laminas/laminas-servicemanager": "^3.20.0", "laminas/laminas-stdlib": "^3.6", "laminas/laminas-view": "^2.14", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "zendframework/zend-mvc": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "^2.4.0", - "laminas/laminas-json": "^3.3", - "phpspec/prophecy": "^1.15.0", - "phpspec/prophecy-phpunit": "^2.0.1", - "phpunit/phpunit": "^9.5.25", + "laminas/laminas-coding-standard": "^2.5.0", + "laminas/laminas-json": "^3.6", + "phpspec/prophecy": "^1.17.0", + "phpspec/prophecy-phpunit": "^2.0.2", + "phpunit/phpunit": "^9.6.13", "webmozart/assert": "^1.11" }, "suggest": { @@ -3285,7 +3612,7 @@ "type": "community_bridge" } ], - "time": "2023-03-15T10:21:03+00:00" + "time": "2023-11-14T09:44:53+00:00" }, { "name": "laminas/laminas-oauth", @@ -3351,20 +3678,20 @@ }, { "name": "laminas/laminas-permissions-acl", - "version": "2.15.0", + "version": "2.16.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-permissions-acl.git", - "reference": "ea9f6643a624b3e847f7d637eb828498654f492e" + "reference": "9f85ee3b1940cd5a1c4151ca16fdb738c162480b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-permissions-acl/zipball/ea9f6643a624b3e847f7d637eb828498654f492e", - "reference": "ea9f6643a624b3e847f7d637eb828498654f492e", + "url": "https://api.github.com/repos/laminas/laminas-permissions-acl/zipball/9f85ee3b1940cd5a1c4151ca16fdb738c162480b", + "reference": "9f85ee3b1940cd5a1c4151ca16fdb738c162480b", "shasum": "" }, "require": { - "php": "~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "laminas/laminas-servicemanager": "<3.0", @@ -3411,38 +3738,38 @@ "type": "community_bridge" } ], - "time": "2023-05-29T19:28:02+00:00" + "time": "2023-10-18T07:50:34+00:00" }, { "name": "laminas/laminas-recaptcha", - "version": "3.6.0", + "version": "3.7.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-recaptcha.git", - "reference": "ead14136a0ded44d1a72f4885df0f3333065d919" + "reference": "9cb3a9e3ca7af64205590adc649e107bc6ce2bfc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-recaptcha/zipball/ead14136a0ded44d1a72f4885df0f3333065d919", - "reference": "ead14136a0ded44d1a72f4885df0f3333065d919", + "url": "https://api.github.com/repos/laminas/laminas-recaptcha/zipball/9cb3a9e3ca7af64205590adc649e107bc6ce2bfc", + "reference": "9cb3a9e3ca7af64205590adc649e107bc6ce2bfc", "shasum": "" }, "require": { "ext-json": "*", "laminas/laminas-http": "^2.15", "laminas/laminas-stdlib": "^3.10.1", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "zendframework/zendservice-recaptcha": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.4.0", - "laminas/laminas-config": "^3.7", - "laminas/laminas-validator": "^2.15", - "phpunit/phpunit": "^9.5.26", - "psalm/plugin-phpunit": "^0.18.0", - "vimeo/psalm": "^5.0.0" + "laminas/laminas-coding-standard": "~2.5.0", + "laminas/laminas-config": "^3.8", + "laminas/laminas-validator": "^2.29", + "phpunit/phpunit": "^9.5.27", + "psalm/plugin-phpunit": "^0.18.4", + "vimeo/psalm": "^5.4" }, "suggest": { "laminas/laminas-validator": "~2.0, if using ReCaptcha's Mailhide API" @@ -3477,37 +3804,37 @@ "type": "community_bridge" } ], - "time": "2022-12-05T21:28:54+00:00" + "time": "2023-11-08T15:52:14+00:00" }, { "name": "laminas/laminas-router", - "version": "3.11.1", + "version": "3.12.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-router.git", - "reference": "3512c28cb4ffd64a62bc9e8b685a50a6547b0a11" + "reference": "e8f1a9ecd63d123c38de3519fe7ca9013da4f8d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-router/zipball/3512c28cb4ffd64a62bc9e8b685a50a6547b0a11", - "reference": "3512c28cb4ffd64a62bc9e8b685a50a6547b0a11", + "url": "https://api.github.com/repos/laminas/laminas-router/zipball/e8f1a9ecd63d123c38de3519fe7ca9013da4f8d2", + "reference": "e8f1a9ecd63d123c38de3519fe7ca9013da4f8d2", "shasum": "" }, "require": { "laminas/laminas-http": "^2.15", "laminas/laminas-servicemanager": "^3.14.0", "laminas/laminas-stdlib": "^3.10.1", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "zendframework/zend-router": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.4.0", - "laminas/laminas-i18n": "^2.19.0", - "phpunit/phpunit": "^9.5.26", - "psalm/plugin-phpunit": "^0.18.0", - "vimeo/psalm": "^5.0.0" + "laminas/laminas-coding-standard": "~2.5.0", + "laminas/laminas-i18n": "^2.23.1", + "phpunit/phpunit": "^10.4.2", + "psalm/plugin-phpunit": "^0.18.4", + "vimeo/psalm": "^5.15.0" }, "suggest": { "laminas/laminas-i18n": "^2.15.0 if defining translatable HTTP path segments" @@ -3548,35 +3875,35 @@ "type": "community_bridge" } ], - "time": "2022-12-29T14:47:23+00:00" + "time": "2023-11-02T17:21:39+00:00" }, { "name": "laminas/laminas-server", - "version": "2.15.0", + "version": "2.16.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-server.git", - "reference": "7f4862913ab95ea5decd08e6c3717edbb398fde8" + "reference": "659a56f69fc27e787385f3d713c81bc1eae01eb0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-server/zipball/7f4862913ab95ea5decd08e6c3717edbb398fde8", - "reference": "7f4862913ab95ea5decd08e6c3717edbb398fde8", + "url": "https://api.github.com/repos/laminas/laminas-server/zipball/659a56f69fc27e787385f3d713c81bc1eae01eb0", + "reference": "659a56f69fc27e787385f3d713c81bc1eae01eb0", "shasum": "" }, "require": { "laminas/laminas-code": "^4.7.1", "laminas/laminas-stdlib": "^3.3.1", "laminas/laminas-zendframework-bridge": "^1.2.0", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "replace": { "zendframework/zend-server": "^2.8.1" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.4.0", + "laminas/laminas-coding-standard": "~2.5.0", "phpunit/phpunit": "^9.5.5", - "psalm/plugin-phpunit": "^0.15.1", + "psalm/plugin-phpunit": "^0.18.0", "vimeo/psalm": "^4.6.4" }, "type": "library", @@ -3609,25 +3936,25 @@ "type": "community_bridge" } ], - "time": "2022-12-27T17:14:59+00:00" + "time": "2023-11-14T09:53:27+00:00" }, { "name": "laminas/laminas-servicemanager", - "version": "3.21.0", + "version": "3.22.1", "source": { "type": "git", "url": "https://github.com/laminas/laminas-servicemanager.git", - "reference": "625f2aa3bc6dd02688b2da5155b3a69870812bda" + "reference": "de98d297d4743956a0558a6d71616979ff779328" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/625f2aa3bc6dd02688b2da5155b3a69870812bda", - "reference": "625f2aa3bc6dd02688b2da5155b3a69870812bda", + "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/de98d297d4743956a0558a6d71616979ff779328", + "reference": "de98d297d4743956a0558a6d71616979ff779328", "shasum": "" }, "require": { "laminas/laminas-stdlib": "^3.17", - "php": "~8.1.0 || ~8.2.0", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0", "psr/container": "^1.0" }, "conflict": { @@ -3648,10 +3975,9 @@ "laminas/laminas-code": "^4.10.0", "laminas/laminas-coding-standard": "~2.5.0", "laminas/laminas-container-config-test": "^0.8", - "laminas/laminas-dependency-plugin": "^2.2", "mikey179/vfsstream": "^1.6.11", "phpbench/phpbench": "^1.2.9", - "phpunit/phpunit": "^10.0.17", + "phpunit/phpunit": "^10.4", "psalm/plugin-phpunit": "^0.18.4", "vimeo/psalm": "^5.8.0" }, @@ -3700,42 +4026,42 @@ "type": "community_bridge" } ], - "time": "2023-05-14T12:24:54+00:00" + "time": "2023-10-24T11:19:47+00:00" }, { "name": "laminas/laminas-session", - "version": "2.16.0", + "version": "2.17.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-session.git", - "reference": "9c845a0361625d5775cad6f043716196201ad41f" + "reference": "2f255f1b4349a9f330ba1a26dcf4e2773a6a8226" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-session/zipball/9c845a0361625d5775cad6f043716196201ad41f", - "reference": "9c845a0361625d5775cad6f043716196201ad41f", + "url": "https://api.github.com/repos/laminas/laminas-session/zipball/2f255f1b4349a9f330ba1a26dcf4e2773a6a8226", + "reference": "2f255f1b4349a9f330ba1a26dcf4e2773a6a8226", "shasum": "" }, "require": { - "laminas/laminas-eventmanager": "^3.5", - "laminas/laminas-servicemanager": "^3.15.1", - "laminas/laminas-stdlib": "^3.10.1", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0" + "laminas/laminas-eventmanager": "^3.12", + "laminas/laminas-servicemanager": "^3.22", + "laminas/laminas-stdlib": "^3.18", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "zendframework/zend-session": "*" }, "require-dev": { - "laminas/laminas-cache": "^3.8", - "laminas/laminas-cache-storage-adapter-memory": "^2.2", - "laminas/laminas-coding-standard": "~2.4.0", - "laminas/laminas-db": "^2.15", - "laminas/laminas-http": "^2.17.1", - "laminas/laminas-validator": "^2.28", - "mongodb/mongodb": "~1.13.0", - "phpunit/phpunit": "^9.5.26", - "psalm/plugin-phpunit": "^0.18.0", - "vimeo/psalm": "^5.0" + "laminas/laminas-cache": "^3.10.1", + "laminas/laminas-cache-storage-adapter-memory": "^2.3", + "laminas/laminas-coding-standard": "~2.5.0", + "laminas/laminas-db": "^2.18.0", + "laminas/laminas-http": "^2.18", + "laminas/laminas-validator": "^2.30.1", + "mongodb/mongodb": "~1.16.0", + "phpunit/phpunit": "^9.6.13", + "psalm/plugin-phpunit": "^0.18.4", + "vimeo/psalm": "^5.15" }, "suggest": { "laminas/laminas-cache": "Laminas\\Cache component", @@ -3781,20 +4107,20 @@ "type": "community_bridge" } ], - "time": "2022-12-04T11:15:36+00:00" + "time": "2023-11-10T12:20:40+00:00" }, { "name": "laminas/laminas-soap", - "version": "2.12.0", + "version": "2.13.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-soap.git", - "reference": "127de3d876b992a6327c274b15df6de26d7aa712" + "reference": "68fdb11ec50eb8cf73ca266643c681d36c884b7f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-soap/zipball/127de3d876b992a6327c274b15df6de26d7aa712", - "reference": "127de3d876b992a6327c274b15df6de26d7aa712", + "url": "https://api.github.com/repos/laminas/laminas-soap/zipball/68fdb11ec50eb8cf73ca266643c681d36c884b7f", + "reference": "68fdb11ec50eb8cf73ca266643c681d36c884b7f", "shasum": "" }, "require": { @@ -3803,7 +4129,7 @@ "laminas/laminas-server": "^2.15", "laminas/laminas-stdlib": "^3.16", "laminas/laminas-uri": "^2.10", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "laminas/laminas-code": "<4.4", @@ -3851,34 +4177,34 @@ "type": "community_bridge" } ], - "time": "2023-01-09T13:58:49+00:00" + "time": "2023-10-18T09:49:25+00:00" }, { "name": "laminas/laminas-stdlib", - "version": "3.17.0", + "version": "3.18.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-stdlib.git", - "reference": "dd35c868075bad80b6718959740913e178eb4274" + "reference": "e85b29076c6216e7fc98e72b42dbe1bbc3b95ecf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/dd35c868075bad80b6718959740913e178eb4274", - "reference": "dd35c868075bad80b6718959740913e178eb4274", + "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/e85b29076c6216e7fc98e72b42dbe1bbc3b95ecf", + "reference": "e85b29076c6216e7fc98e72b42dbe1bbc3b95ecf", "shasum": "" }, "require": { - "php": "~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "zendframework/zend-stdlib": "*" }, "require-dev": { "laminas/laminas-coding-standard": "^2.5", - "phpbench/phpbench": "^1.2.9", - "phpunit/phpunit": "^10.0.16", + "phpbench/phpbench": "^1.2.14", + "phpunit/phpunit": "^10.3.3", "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.8" + "vimeo/psalm": "^5.15.0" }, "type": "library", "autoload": { @@ -3910,32 +4236,32 @@ "type": "community_bridge" } ], - "time": "2023-03-20T13:51:37+00:00" + "time": "2023-09-19T10:15:21+00:00" }, { "name": "laminas/laminas-text", - "version": "2.10.0", + "version": "2.11.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-text.git", - "reference": "40f7acdb284d41553d32db811e704d6e15e415b4" + "reference": "d799f3ccb3547e9e6ab313447138bae7009c7cc7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-text/zipball/40f7acdb284d41553d32db811e704d6e15e415b4", - "reference": "40f7acdb284d41553d32db811e704d6e15e415b4", + "url": "https://api.github.com/repos/laminas/laminas-text/zipball/d799f3ccb3547e9e6ab313447138bae7009c7cc7", + "reference": "d799f3ccb3547e9e6ab313447138bae7009c7cc7", "shasum": "" }, "require": { - "laminas/laminas-servicemanager": "^3.19.0", + "laminas/laminas-servicemanager": "^3.22.0", "laminas/laminas-stdlib": "^3.7.1", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "zendframework/zend-text": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.4.0", + "laminas/laminas-coding-standard": "~2.5.0", "phpunit/phpunit": "^9.5", "psalm/plugin-phpunit": "^0.18.4", "vimeo/psalm": "^5.1" @@ -3970,26 +4296,26 @@ "type": "community_bridge" } ], - "time": "2022-12-11T15:36:27+00:00" + "time": "2023-11-07T16:45:45+00:00" }, { "name": "laminas/laminas-uri", - "version": "2.10.0", + "version": "2.11.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-uri.git", - "reference": "663b050294945c7345cc3a61f3ca661d5f9e1f80" + "reference": "e662c685125061d3115906e5eb30f966842cc226" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-uri/zipball/663b050294945c7345cc3a61f3ca661d5f9e1f80", - "reference": "663b050294945c7345cc3a61f3ca661d5f9e1f80", + "url": "https://api.github.com/repos/laminas/laminas-uri/zipball/e662c685125061d3115906e5eb30f966842cc226", + "reference": "e662c685125061d3115906e5eb30f966842cc226", "shasum": "" }, "require": { "laminas/laminas-escaper": "^2.9", - "laminas/laminas-validator": "^2.15", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0" + "laminas/laminas-validator": "^2.39", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "zendframework/zend-uri": "*" @@ -4028,26 +4354,26 @@ "type": "community_bridge" } ], - "time": "2022-10-16T15:02:45+00:00" + "time": "2023-10-18T09:56:55+00:00" }, { "name": "laminas/laminas-validator", - "version": "2.38.0", + "version": "2.43.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-validator.git", - "reference": "5fafe1ec4cc23e4bb4dfe6b4cd96c28e1c7f48a3" + "reference": "8f6c2f5753dec64df924a86d18036113f3140f2b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/5fafe1ec4cc23e4bb4dfe6b4cd96c28e1c7f48a3", - "reference": "5fafe1ec4cc23e4bb4dfe6b4cd96c28e1c7f48a3", + "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/8f6c2f5753dec64df924a86d18036113f3140f2b", + "reference": "8f6c2f5753dec64df924a86d18036113f3140f2b", "shasum": "" }, "require": { "laminas/laminas-servicemanager": "^3.21.0", "laminas/laminas-stdlib": "^3.13", - "php": "~8.1.0 || ~8.2.0", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0", "psr/http-message": "^1.0.1 || ^2.0.0" }, "conflict": { @@ -4060,11 +4386,11 @@ "laminas/laminas-i18n": "^2.23", "laminas/laminas-session": "^2.16", "laminas/laminas-uri": "^2.10.0", - "phpunit/phpunit": "^10.1.3", + "phpunit/phpunit": "^10.3.3", "psalm/plugin-phpunit": "^0.18.4", "psr/http-client": "^1.0.2", "psr/http-factory": "^1.0.2", - "vimeo/psalm": "^5.12" + "vimeo/psalm": "^5.15" }, "suggest": { "laminas/laminas-db": "Laminas\\Db component, required by the (No)RecordExists validator", @@ -4112,20 +4438,20 @@ "type": "community_bridge" } ], - "time": "2023-08-14T07:19:58+00:00" + "time": "2023-11-20T01:23:15+00:00" }, { "name": "laminas/laminas-view", - "version": "2.30.0", + "version": "2.32.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-view.git", - "reference": "055623fd0634f2ab2a51defa03c22ddee4e89df7" + "reference": "399fa0fb896f06663bba8fe7795722785339b684" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-view/zipball/055623fd0634f2ab2a51defa03c22ddee4e89df7", - "reference": "055623fd0634f2ab2a51defa03c22ddee4e89df7", + "url": "https://api.github.com/repos/laminas/laminas-view/zipball/399fa0fb896f06663bba8fe7795722785339b684", + "reference": "399fa0fb896f06663bba8fe7795722785339b684", "shasum": "" }, "require": { @@ -4137,7 +4463,7 @@ "laminas/laminas-json": "^3.3", "laminas/laminas-servicemanager": "^3.21.0", "laminas/laminas-stdlib": "^3.10.1", - "php": "~8.1.0 || ~8.2.0", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0", "psr/container": "^1 || ^2" }, "conflict": { @@ -4147,24 +4473,24 @@ "zendframework/zend-view": "*" }, "require-dev": { - "laminas/laminas-authentication": "^2.13", + "laminas/laminas-authentication": "^2.15", "laminas/laminas-coding-standard": "~2.5.0", - "laminas/laminas-feed": "^2.20", + "laminas/laminas-feed": "^2.22", "laminas/laminas-filter": "^2.32", - "laminas/laminas-http": "^2.18", - "laminas/laminas-i18n": "^2.23", - "laminas/laminas-modulemanager": "^2.14", + "laminas/laminas-http": "^2.19", + "laminas/laminas-i18n": "^2.23.1", + "laminas/laminas-modulemanager": "^2.15", "laminas/laminas-mvc": "^3.6.1", "laminas/laminas-mvc-i18n": "^1.7", "laminas/laminas-mvc-plugin-flashmessenger": "^1.9", "laminas/laminas-navigation": "^2.18.1", "laminas/laminas-paginator": "^2.17", - "laminas/laminas-permissions-acl": "^2.15", - "laminas/laminas-router": "^3.11.1", - "laminas/laminas-uri": "^2.10", - "phpunit/phpunit": "^10.1.3", + "laminas/laminas-permissions-acl": "^2.16", + "laminas/laminas-router": "^3.12.0", + "laminas/laminas-uri": "^2.11", + "phpunit/phpunit": "^10.4.2", "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.12" + "vimeo/psalm": "^5.15" }, "suggest": { "laminas/laminas-authentication": "Laminas\\Authentication component", @@ -4212,7 +4538,7 @@ "type": "community_bridge" } ], - "time": "2023-08-17T10:28:59+00:00" + "time": "2023-11-03T13:48:07+00:00" }, { "name": "laminas/laminas-zendframework-bridge", @@ -4433,16 +4759,16 @@ }, { "name": "league/mime-type-detection", - "version": "1.13.0", + "version": "1.14.0", "source": { "type": "git", "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "a6dfb1194a2946fcdc1f38219445234f65b35c96" + "reference": "b6a5854368533df0295c5761a0253656a2e52d9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/a6dfb1194a2946fcdc1f38219445234f65b35c96", - "reference": "a6dfb1194a2946fcdc1f38219445234f65b35c96", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/b6a5854368533df0295c5761a0253656a2e52d9e", + "reference": "b6a5854368533df0295c5761a0253656a2e52d9e", "shasum": "" }, "require": { @@ -4473,7 +4799,7 @@ "description": "Mime-type detection for Flysystem", "support": { "issues": "https://github.com/thephpleague/mime-type-detection/issues", - "source": "https://github.com/thephpleague/mime-type-detection/tree/1.13.0" + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.14.0" }, "funding": [ { @@ -4485,7 +4811,7 @@ "type": "tidelift" } ], - "time": "2023-08-05T12:09:49+00:00" + "time": "2023-10-17T14:13:20+00:00" }, { "name": "magento/composer", @@ -4650,436 +4976,2203 @@ "time": "2022-12-01T15:21:32+00:00" }, { - "name": "magento/zend-cache", - "version": "1.16.0", - "source": { - "type": "git", - "url": "https://github.com/magento/magento-zend-cache.git", - "reference": "75e6a43f198b17ea4b0c3f46b700b7a757eba84d" - }, + "name": "magento/module-re-captcha-admin-ui", + "version": "dev-develop", "dist": { - "type": "zip", - "url": "https://api.github.com/repos/magento/magento-zend-cache/zipball/75e6a43f198b17ea4b0c3f46b700b7a757eba84d", - "reference": "75e6a43f198b17ea4b0c3f46b700b7a757eba84d", - "shasum": "" + "type": "path", + "url": "./ext/magento/security-package/ReCaptchaAdminUi", + "reference": "b2a9aa9f9860ccf7f034cb60120b1cbb688b7359" }, "require": { - "magento/zend-exception": "^1.16", - "magento/zend-log": "^1.16", - "php": ">=7.0.0" + "magento/framework": "*", + "magento/module-config": "*", + "magento/module-re-captcha-ui": "*", + "magento/module-store": "*", + "php": "~8.1.0||~8.2.0" }, - "replace": { - "zf1/zend-cache": "^1.12", + "type": "magento2-module", + "autoload": { + "files": [ + "registration.php" + ], + "psr-4": { + "Magento\\ReCaptchaAdminUi\\": "" + } + }, + "license": [ + "OSL-3.0" + ], + "description": "Google reCAPTCHA integration for Magento2", + "transport-options": { + "relative": true + } + }, + { + "name": "magento/module-re-captcha-checkout", + "version": "dev-develop", + "dist": { + "type": "path", + "url": "./ext/magento/security-package/ReCaptchaCheckout", + "reference": "84448caa969815c9c4d0837e3938104d5f8bc596" + }, + "require": { + "magento/framework": "*", + "magento/module-checkout": "*", + "magento/module-re-captcha-admin-ui": "*", + "magento/module-re-captcha-frontend-ui": "*", + "magento/module-re-captcha-ui": "*", + "magento/module-re-captcha-validation-api": "*", + "magento/module-re-captcha-webapi-api": "*", + "magento/module-re-captcha-webapi-ui": "*", + "php": "~8.1.0||~8.2.0" + }, + "type": "magento2-module", + "autoload": { + "files": [ + "registration.php" + ], + "psr-4": { + "Magento\\ReCaptchaCheckout\\": "" + } + }, + "license": [ + "OSL-3.0" + ], + "description": "Google reCAPTCHA integration for Magento2", + "transport-options": { + "relative": true + } + }, + { + "name": "magento/module-re-captcha-checkout-sales-rule", + "version": "dev-develop", + "dist": { + "type": "path", + "url": "./ext/magento/security-package/ReCaptchaCheckoutSalesRule", + "reference": "60f5661076750be42fc081a0b17e2e2798a23ba9" + }, + "require": { + "magento/framework": "*", + "magento/module-checkout": "*", + "magento/module-re-captcha-admin-ui": "*", + "magento/module-re-captcha-frontend-ui": "*", + "magento/module-re-captcha-ui": "*", + "magento/module-re-captcha-validation-api": "*", + "magento/module-re-captcha-webapi-api": "*", + "magento/module-re-captcha-webapi-ui": "*", + "magento/module-sales-rule": "*", + "php": "~8.1.0||~8.2.0" + }, + "type": "magento2-module", + "autoload": { + "files": [ + "registration.php" + ], + "psr-4": { + "Magento\\ReCaptchaCheckoutSalesRule\\": "" + } + }, + "license": [ + "OSL-3.0" + ], + "description": "Google ReCaptcha integration for Magento2 coupons", + "transport-options": { + "relative": true + } + }, + { + "name": "magento/module-re-captcha-contact", + "version": "dev-develop", + "dist": { + "type": "path", + "url": "./ext/magento/security-package/ReCaptchaContact", + "reference": "0e9c0a57b547b5f1e47be6b94cbcf707855c6d5a" + }, + "require": { + "magento/framework": "*", + "magento/module-re-captcha-ui": "*", + "php": "~8.1.0||~8.2.0" + }, + "type": "magento2-module", + "autoload": { + "files": [ + "registration.php" + ], + "psr-4": { + "Magento\\ReCaptchaContact\\": "" + } + }, + "license": [ + "OSL-3.0" + ], + "description": "Google reCAPTCHA integration for Magento2", + "transport-options": { + "relative": true + } + }, + { + "name": "magento/module-re-captcha-customer", + "version": "dev-develop", + "dist": { + "type": "path", + "url": "./ext/magento/security-package/ReCaptchaCustomer", + "reference": "700c62f090642e72102137f4943ded3f75f09877" + }, + "require": { + "magento/framework": "*", + "magento/module-customer": "*", + "magento/module-re-captcha-ui": "*", + "magento/module-re-captcha-validation-api": "*", + "magento/module-re-captcha-webapi-api": "*", + "php": "~8.1.0||~8.2.0" + }, + "type": "magento2-module", + "autoload": { + "files": [ + "registration.php" + ], + "psr-4": { + "Magento\\ReCaptchaCustomer\\": "" + } + }, + "license": [ + "OSL-3.0" + ], + "description": "Google reCAPTCHA integration for Magento2", + "transport-options": { + "relative": true + } + }, + { + "name": "magento/module-re-captcha-frontend-ui", + "version": "dev-develop", + "dist": { + "type": "path", + "url": "./ext/magento/security-package/ReCaptchaFrontendUi", + "reference": "780c5a000f34babb7a113006624c470faaa89f27" + }, + "require": { + "magento/framework": "*", + "magento/module-re-captcha-ui": "*", + "magento/module-store": "*", + "php": "~8.1.0||~8.2.0" + }, + "type": "magento2-module", + "autoload": { + "files": [ + "registration.php" + ], + "psr-4": { + "Magento\\ReCaptchaFrontendUi\\": "" + } + }, + "license": [ + "OSL-3.0" + ], + "description": "Google reCAPTCHA integration for Magento2", + "transport-options": { + "relative": true + } + }, + { + "name": "magento/module-re-captcha-migration", + "version": "dev-develop", + "dist": { + "type": "path", + "url": "./ext/magento/security-package/ReCaptchaMigration", + "reference": "b7c4ac54540e846e5441e71bde72a509d7d05eac" + }, + "require": { + "magento/framework": "*", + "magento/module-config": "*", + "php": "~8.1.0||~8.2.0" + }, + "type": "magento2-module", + "autoload": { + "files": [ + "registration.php" + ], + "psr-4": { + "Magento\\ReCaptchaMigration\\": "" + } + }, + "license": [ + "OSL-3.0" + ], + "description": "Google reCAPTCHA config migration for Magento2", + "transport-options": { + "relative": true + } + }, + { + "name": "magento/module-re-captcha-newsletter", + "version": "dev-develop", + "dist": { + "type": "path", + "url": "./ext/magento/security-package/ReCaptchaNewsletter", + "reference": "77e16930311b36c3fdc8b27568b9bd640076ca9a" + }, + "require": { + "magento/framework": "*", + "magento/module-re-captcha-ui": "*", + "magento/module-re-captcha-validation-api": "*", + "magento/module-re-captcha-webapi-api": "*", + "php": "~8.1.0||~8.2.0" + }, + "type": "magento2-module", + "autoload": { + "files": [ + "registration.php" + ], + "psr-4": { + "Magento\\ReCaptchaNewsletter\\": "" + } + }, + "license": [ + "OSL-3.0" + ], + "description": "Google reCAPTCHA integration for Magento2", + "transport-options": { + "relative": true + } + }, + { + "name": "magento/module-re-captcha-paypal", + "version": "dev-develop", + "dist": { + "type": "path", + "url": "./ext/magento/security-package/ReCaptchaPaypal", + "reference": "307f4d4f066228e045ad20af021a5799b6b62751" + }, + "require": { + "magento/framework": "*", + "magento/module-checkout": "*", + "magento/module-paypal": "*", + "magento/module-quote": "*", + "magento/module-re-captcha-checkout": "*", + "magento/module-re-captcha-ui": "*", + "magento/module-re-captcha-validation-api": "*", + "magento/module-re-captcha-webapi-api": "*", + "php": "~8.1.0||~8.2.0" + }, + "type": "magento2-module", + "autoload": { + "files": [ + "registration.php" + ], + "psr-4": { + "Magento\\ReCaptchaPaypal\\": "" + } + }, + "license": [ + "OSL-3.0" + ], + "description": "Google reCaptcha integration for Magento2 PayPal PayflowPro payment form", + "transport-options": { + "relative": true + } + }, + { + "name": "magento/module-re-captcha-review", + "version": "dev-develop", + "dist": { + "type": "path", + "url": "./ext/magento/security-package/ReCaptchaReview", + "reference": "04d18253fb7f66871b93ef55211250ccb9a8c3e0" + }, + "require": { + "magento/framework": "*", + "magento/module-re-captcha-ui": "*", + "magento/module-re-captcha-validation-api": "*", + "magento/module-re-captcha-webapi-api": "*", + "php": "~8.1.0||~8.2.0" + }, + "type": "magento2-module", + "autoload": { + "files": [ + "registration.php" + ], + "psr-4": { + "Magento\\ReCaptchaReview\\": "" + } + }, + "license": [ + "OSL-3.0" + ], + "description": "Google reCAPTCHA integration for Magento2", + "transport-options": { + "relative": true + } + }, + { + "name": "magento/module-re-captcha-send-friend", + "version": "dev-develop", + "dist": { + "type": "path", + "url": "./ext/magento/security-package/ReCaptchaSendFriend", + "reference": "49733fde280a88b15c620d84b1758b64b0c95e45" + }, + "require": { + "magento/framework": "*", + "magento/module-re-captcha-ui": "*", + "magento/module-re-captcha-validation-api": "*", + "magento/module-re-captcha-webapi-api": "*", + "php": "~8.1.0||~8.2.0" + }, + "type": "magento2-module", + "autoload": { + "files": [ + "registration.php" + ], + "psr-4": { + "Magento\\ReCaptchaSendFriend\\": "" + } + }, + "license": [ + "OSL-3.0" + ], + "description": "Google reCAPTCHA integration for Magento2", + "transport-options": { + "relative": true + } + }, + { + "name": "magento/module-re-captcha-store-pickup", + "version": "dev-develop", + "dist": { + "type": "path", + "url": "./ext/magento/security-package/ReCaptchaStorePickup", + "reference": "79eecd67f0d8a190c089697052fcc22a5452f3fb" + }, + "require": { + "magento/framework": "*", + "magento/module-checkout": "*", + "magento/module-re-captcha-ui": "*", + "php": "~8.1.0||~8.2.0" + }, + "suggest": { + "magento/module-inventory-in-store-pickup-frontend": "*" + }, + "type": "magento2-module", + "autoload": { + "files": [ + "registration.php" + ], + "psr-4": { + "Magento\\ReCaptchaStorePickup\\": "" + } + }, + "license": [ + "OSL-3.0" + ], + "description": "Google reCaptcha integration for Magento2 Inventory Store Pickup shipping form", + "transport-options": { + "relative": true + } + }, + { + "name": "magento/module-re-captcha-ui", + "version": "dev-develop", + "dist": { + "type": "path", + "url": "./ext/magento/security-package/ReCaptchaUi", + "reference": "facf38827df3ad6e06c7fe9385f451a1301ab7e2" + }, + "require": { + "magento/framework": "*", + "magento/module-re-captcha-validation-api": "*", + "php": "~8.1.0||~8.2.0" + }, + "type": "magento2-module", + "autoload": { + "files": [ + "registration.php" + ], + "psr-4": { + "Magento\\ReCaptchaUi\\": "" + } + }, + "license": [ + "OSL-3.0" + ], + "authors": [ + { + "name": "Riccardo Tempesta", + "email": "riccardo.tempesta@magespecialist.it" + } + ], + "description": "Google reCAPTCHA integration for Magento2", + "transport-options": { + "relative": true + } + }, + { + "name": "magento/module-re-captcha-user", + "version": "dev-develop", + "dist": { + "type": "path", + "url": "./ext/magento/security-package/ReCaptchaUser", + "reference": "85d83ec4dc3cc6eb77eaa8a00116b5a8cd25d97a" + }, + "require": { + "magento/framework": "*", + "magento/module-re-captcha-ui": "*", + "magento/module-re-captcha-validation-api": "*", + "php": "~8.1.0||~8.2.0" + }, + "type": "magento2-module", + "autoload": { + "files": [ + "registration.php" + ], + "psr-4": { + "Magento\\ReCaptchaUser\\": "" + } + }, + "license": [ + "OSL-3.0" + ], + "description": "Google reCAPTCHA integration for Magento2", + "transport-options": { + "relative": true + } + }, + { + "name": "magento/module-re-captcha-validation", + "version": "dev-develop", + "dist": { + "type": "path", + "url": "./ext/magento/security-package/ReCaptchaValidation", + "reference": "fadbb0b0171fd795217cc539f9d34e7b8f459583" + }, + "require": { + "google/recaptcha": "^1.2", + "magento/framework": "*", + "magento/module-re-captcha-validation-api": "*", + "php": "~8.1.0||~8.2.0" + }, + "type": "magento2-module", + "autoload": { + "files": [ + "registration.php" + ], + "psr-4": { + "Magento\\ReCaptchaValidation\\": "" + } + }, + "license": [ + "OSL-3.0" + ], + "description": "Google reCAPTCHA integration for Magento2", + "transport-options": { + "relative": true + } + }, + { + "name": "magento/module-re-captcha-validation-api", + "version": "dev-develop", + "dist": { + "type": "path", + "url": "./ext/magento/security-package/ReCaptchaValidationApi", + "reference": "85ada257e1a601dc65e5e8befd61bb950a8a4b56" + }, + "require": { + "magento/framework": "*", + "php": "~8.1.0||~8.2.0" + }, + "type": "magento2-module", + "autoload": { + "files": [ + "registration.php" + ], + "psr-4": { + "Magento\\ReCaptchaValidationApi\\": "" + } + }, + "license": [ + "OSL-3.0" + ], + "description": "Google reCAPTCHA integration for Magento2", + "transport-options": { + "relative": true + } + }, + { + "name": "magento/module-re-captcha-version-2-checkbox", + "version": "dev-develop", + "dist": { + "type": "path", + "url": "./ext/magento/security-package/ReCaptchaVersion2Checkbox", + "reference": "d077632159a46c739242cba902c1f84743c5f477" + }, + "require": { + "magento/framework": "*", + "magento/module-re-captcha-ui": "*", + "magento/module-re-captcha-validation-api": "*", + "magento/module-store": "*", + "php": "~8.1.0||~8.2.0" + }, + "suggest": { + "magento/module-config": "*", + "magento/module-re-captcha-admin-ui": "*" + }, + "type": "magento2-module", + "autoload": { + "files": [ + "registration.php" + ], + "psr-4": { + "Magento\\ReCaptchaVersion2Checkbox\\": "" + } + }, + "license": [ + "OSL-3.0" + ], + "description": "Google reCAPTCHA integration for Magento2", + "transport-options": { + "relative": true + } + }, + { + "name": "magento/module-re-captcha-version-2-invisible", + "version": "dev-develop", + "dist": { + "type": "path", + "url": "./ext/magento/security-package/ReCaptchaVersion2Invisible", + "reference": "6a54eb7ad1d5dbcc010f247e819dedbdd4b3fc2c" + }, + "require": { + "magento/framework": "*", + "magento/module-re-captcha-ui": "*", + "magento/module-re-captcha-validation-api": "*", + "magento/module-store": "*", + "php": "~8.1.0||~8.2.0" + }, + "suggest": { + "magento/module-config": "*", + "magento/module-re-captcha-admin-ui": "*" + }, + "type": "magento2-module", + "autoload": { + "files": [ + "registration.php" + ], + "psr-4": { + "Magento\\ReCaptchaVersion2Invisible\\": "" + } + }, + "license": [ + "OSL-3.0" + ], + "description": "Google reCAPTCHA integration for Magento2", + "transport-options": { + "relative": true + } + }, + { + "name": "magento/module-re-captcha-version-3-invisible", + "version": "dev-develop", + "dist": { + "type": "path", + "url": "./ext/magento/security-package/ReCaptchaVersion3Invisible", + "reference": "4f3bcf91f36a231249e238765a8d893501a49b4b" + }, + "require": { + "magento/framework": "*", + "magento/module-re-captcha-ui": "*", + "magento/module-re-captcha-validation-api": "*", + "magento/module-store": "*", + "php": "~8.1.0||~8.2.0" + }, + "suggest": { + "magento/module-config": "*", + "magento/module-re-captcha-admin-ui": "*" + }, + "type": "magento2-module", + "autoload": { + "files": [ + "registration.php" + ], + "psr-4": { + "Magento\\ReCaptchaVersion3Invisible\\": "" + } + }, + "license": [ + "OSL-3.0" + ], + "description": "Google reCAPTCHA integration for Magento2", + "transport-options": { + "relative": true + } + }, + { + "name": "magento/module-re-captcha-webapi-api", + "version": "dev-develop", + "dist": { + "type": "path", + "url": "./ext/magento/security-package/ReCaptchaWebapiApi", + "reference": "21fc7e63d4e4c142a6b66568361f1b5cd8c22fac" + }, + "require": { + "magento/framework": "*", + "magento/module-re-captcha-validation-api": "*", + "php": "~8.1.0||~8.2.0" + }, + "type": "magento2-module", + "autoload": { + "files": [ + "registration.php" + ], + "psr-4": { + "Magento\\ReCaptchaWebapiApi\\": "" + } + }, + "license": [ + "OSL-3.0" + ], + "description": "Google reCAPTCHA integration for Magento2", + "transport-options": { + "relative": true + } + }, + { + "name": "magento/module-re-captcha-webapi-graph-ql", + "version": "dev-develop", + "dist": { + "type": "path", + "url": "./ext/magento/security-package/ReCaptchaWebapiGraphQl", + "reference": "af437ccadc6184cae9773589fc00ed5e1b565b4e" + }, + "require": { + "magento/framework": "*", + "magento/module-authorization": "*", + "magento/module-re-captcha-frontend-ui": "*", + "magento/module-re-captcha-validation-api": "*", + "magento/module-re-captcha-version-3-invisible": "*", + "magento/module-re-captcha-webapi-api": "*", + "php": "~8.1.0||~8.2.0" + }, + "type": "magento2-module", + "autoload": { + "files": [ + "registration.php" + ], + "psr-4": { + "Magento\\ReCaptchaWebapiGraphQl\\": "" + } + }, + "license": [ + "OSL-3.0" + ], + "description": "Google reCAPTCHA integration for Magento2", + "transport-options": { + "relative": true + } + }, + { + "name": "magento/module-re-captcha-webapi-rest", + "version": "dev-develop", + "dist": { + "type": "path", + "url": "./ext/magento/security-package/ReCaptchaWebapiRest", + "reference": "9160568fbf7fb8c752cebc398bedb8b20d0982ac" + }, + "require": { + "magento/framework": "*", + "magento/module-authorization": "*", + "magento/module-re-captcha-validation-api": "*", + "magento/module-re-captcha-webapi-api": "*", + "magento/module-webapi": "*", + "php": "~8.1.0||~8.2.0" + }, + "type": "magento2-module", + "autoload": { + "files": [ + "registration.php" + ], + "psr-4": { + "Magento\\ReCaptchaWebapiRest\\": "" + } + }, + "license": [ + "OSL-3.0" + ], + "description": "Google reCAPTCHA integration for Magento2", + "transport-options": { + "relative": true + } + }, + { + "name": "magento/module-re-captcha-webapi-ui", + "version": "dev-develop", + "dist": { + "type": "path", + "url": "./ext/magento/security-package/ReCaptchaWebapiUi", + "reference": "4a5e7872e72ffd179e0872dbe380b98677fd0169" + }, + "require": { + "magento/framework": "*", + "magento/module-re-captcha-frontend-ui": "*", + "php": "~8.1.0||~8.2.0" + }, + "type": "magento2-module", + "autoload": { + "files": [ + "registration.php" + ], + "psr-4": { + "Magento\\ReCaptchaWebapiUi\\": "" + } + }, + "license": [ + "OSL-3.0" + ], + "description": "Google reCAPTCHA integration for Magento2", + "transport-options": { + "relative": true + } + }, + { + "name": "magento/module-securitytxt", + "version": "dev-develop", + "dist": { + "type": "path", + "url": "./ext/magento/security-package/Securitytxt", + "reference": "d24860976445b72762cda2311ea7320fbff574b7" + }, + "require": { + "magento/framework": "*", + "magento/module-config": "*", + "magento/module-store": "*", + "php": "~8.1.0||~8.2.0" + }, + "type": "magento2-module", + "autoload": { + "files": [ + "registration.php" + ], + "psr-4": { + "Magento\\Securitytxt\\": "" + } + }, + "license": [ + "OSL-3.0", + "AFL-3.0" + ], + "authors": [ + { + "name": "Kalpesh Mehta", + "email": "k@lpe.sh" + } + ], + "description": "Security.txt file for Magento 2 websites", + "transport-options": { + "relative": true + } + }, + { + "name": "magento/module-two-factor-auth", + "version": "dev-develop", + "dist": { + "type": "path", + "url": "./ext/magento/security-package/TwoFactorAuth", + "reference": "eb0d08b161f9aa21f8b5662687a0765250c36808" + }, + "require": { + "2tvenom/cborencode": "^1.0", + "christian-riesen/base32": "^1.3", + "endroid/qr-code": "^4.3.5", + "magento/framework": "*", + "magento/magento-composer-installer": "*", + "magento/module-authorization": "*", + "magento/module-backend": "*", + "magento/module-config": "*", + "magento/module-integration": "*", + "magento/module-store": "*", + "magento/module-ui": "*", + "magento/module-user": "*", + "php": "~8.1.0||~8.2.0", + "spomky-labs/otphp": "^11.2" + }, + "type": "magento2-module", + "autoload": { + "files": [ + "registration.php" + ], + "psr-4": { + "Magento\\TwoFactorAuth\\": "" + } + }, + "license": [ + "OSL-3.0" + ], + "description": "Two Factor Authentication module for Magento2", + "transport-options": { + "relative": true + } + }, + { + "name": "magento/security-package", + "version": "dev-develop", + "dist": { + "type": "path", + "url": "./ext/magento/security-package/_metapackage", + "reference": "74495b1832737c34a3999486816b0dc383b62802" + }, + "require": { + "google/recaptcha": "^1.2", + "magento/module-re-captcha-admin-ui": "*", + "magento/module-re-captcha-checkout": "*", + "magento/module-re-captcha-checkout-sales-rule": "*", + "magento/module-re-captcha-contact": "*", + "magento/module-re-captcha-customer": "*", + "magento/module-re-captcha-frontend-ui": "*", + "magento/module-re-captcha-migration": "*", + "magento/module-re-captcha-newsletter": "*", + "magento/module-re-captcha-paypal": "*", + "magento/module-re-captcha-review": "*", + "magento/module-re-captcha-send-friend": "*", + "magento/module-re-captcha-store-pickup": "*", + "magento/module-re-captcha-ui": "*", + "magento/module-re-captcha-user": "*", + "magento/module-re-captcha-validation": "*", + "magento/module-re-captcha-validation-api": "*", + "magento/module-re-captcha-version-2-checkbox": "*", + "magento/module-re-captcha-version-2-invisible": "*", + "magento/module-re-captcha-version-3-invisible": "*", + "magento/module-re-captcha-webapi-api": "*", + "magento/module-re-captcha-webapi-graph-ql": "*", + "magento/module-re-captcha-webapi-rest": "*", + "magento/module-re-captcha-webapi-ui": "*", + "magento/module-securitytxt": "*", + "magento/module-two-factor-auth": "*" + }, + "type": "metapackage", + "description": "Magento Security Package", + "transport-options": { + "relative": true + } + }, + { + "name": "magento/zend-cache", + "version": "1.16.0", + "source": { + "type": "git", + "url": "https://github.com/magento/magento-zend-cache.git", + "reference": "75e6a43f198b17ea4b0c3f46b700b7a757eba84d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/magento/magento-zend-cache/zipball/75e6a43f198b17ea4b0c3f46b700b7a757eba84d", + "reference": "75e6a43f198b17ea4b0c3f46b700b7a757eba84d", + "shasum": "" + }, + "require": { + "magento/zend-exception": "^1.16", + "magento/zend-log": "^1.16", + "php": ">=7.0.0" + }, + "replace": { + "zf1/zend-cache": "^1.12", "zfs1/zend-cache": "^1.12" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.16.x-dev" + "dev-main": "1.16.x-dev" + } + }, + "autoload": { + "psr-0": { + "Zend_Cache": "library/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Zend Framework 1 Cache package", + "homepage": "http://framework.zend.com/", + "keywords": [ + "ZF1", + "cache", + "framework", + "zend" + ], + "support": { + "issues": "https://github.com/magento/magento-zend-cache/issues", + "source": "https://github.com/magento/magento-zend-cache/tree/1.16.0" + }, + "time": "2022-09-22T19:09:32+00:00" + }, + { + "name": "magento/zend-db", + "version": "1.16.1", + "source": { + "type": "git", + "url": "https://github.com/magento/magento-zend-db.git", + "reference": "475addb06c0a417b2fd18effe5966bd3aa929b7b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/magento/magento-zend-db/zipball/475addb06c0a417b2fd18effe5966bd3aa929b7b", + "reference": "475addb06c0a417b2fd18effe5966bd3aa929b7b", + "shasum": "" + }, + "require": { + "magento/zend-exception": "^1.16", + "magento/zend-loader": "^1.16", + "php": ">=7.0.0" + }, + "replace": { + "zf1/zend-db": "^1.12", + "zfs1/zend-db": "^1.12" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.16.x-dev" + } + }, + "autoload": { + "psr-0": { + "Zend_Db": "library/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Zend Framework 1 Db package", + "homepage": "http://framework.zend.com/", + "keywords": [ + "ZF1", + "db", + "framework", + "zend" + ], + "support": { + "issues": "https://github.com/magento/magento-zend-db/issues", + "source": "https://github.com/magento/magento-zend-db/tree/1.16.1" + }, + "time": "2023-08-25T13:52:30+00:00" + }, + { + "name": "magento/zend-exception", + "version": "1.16.0", + "source": { + "type": "git", + "url": "https://github.com/magento/magento-zend-exception.git", + "reference": "5219ba961e36dc1a713da3ad4f1594a87c71f758" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/magento/magento-zend-exception/zipball/5219ba961e36dc1a713da3ad4f1594a87c71f758", + "reference": "5219ba961e36dc1a713da3ad4f1594a87c71f758", + "shasum": "" + }, + "require": { + "php": ">=7.0.0" + }, + "replace": { + "zf1/zend-exception": "^1.12", + "zfs1/zend-exception": "^1.12" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.16.x-dev" + } + }, + "autoload": { + "psr-0": { + "Zend_Exception": "library/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Zend Framework 1 Exception package", + "homepage": "http://framework.zend.com/", + "keywords": [ + "ZF1", + "exception", + "framework", + "zend" + ], + "support": { + "issues": "https://github.com/magento/magento-zend-exception/issues", + "source": "https://github.com/magento/magento-zend-exception/tree/1.16.0" + }, + "time": "2022-09-22T19:06:06+00:00" + }, + { + "name": "magento/zend-loader", + "version": "1.16.1", + "source": { + "type": "git", + "url": "https://github.com/magento/magento-zend-loader.git", + "reference": "7eca22970a6b7cdaa3d3a6a6d117e4c0d3bef5e9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/magento/magento-zend-loader/zipball/7eca22970a6b7cdaa3d3a6a6d117e4c0d3bef5e9", + "reference": "7eca22970a6b7cdaa3d3a6a6d117e4c0d3bef5e9", + "shasum": "" + }, + "require": { + "magento/zend-exception": "^1.16.0", + "php": ">=7.0.0" + }, + "replace": { + "zf1/zend-loader": "^1.12", + "zf1s/zend-loader": "^1.12" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.16.x-dev" + } + }, + "autoload": { + "psr-0": { + "Zend_Loader": "library/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Zend Framework 1 Loader package", + "homepage": "http://framework.zend.com/", + "keywords": [ + "ZF1", + "framework", + "loader", + "zend" + ], + "support": { + "issues": "https://github.com/magento/magento-zend-loader/issues", + "source": "https://github.com/magento/magento-zend-loader/tree/1.16.1" + }, + "time": "2023-08-25T13:52:37+00:00" + }, + { + "name": "magento/zend-log", + "version": "1.16.0", + "source": { + "type": "git", + "url": "https://github.com/magento/magento-zend-log.git", + "reference": "c03b9febe92c501288cf441d41b49cd01f1e8a50" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/magento/magento-zend-log/zipball/c03b9febe92c501288cf441d41b49cd01f1e8a50", + "reference": "c03b9febe92c501288cf441d41b49cd01f1e8a50", + "shasum": "" + }, + "require": { + "magento/zend-exception": "^1.16", + "php": ">=7.0.0" + }, + "replace": { + "zf1/zend-log": "^1.12", + "zfs1/zend-log": "^1.12" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.16.x-dev" + } + }, + "autoload": { + "psr-0": { + "Zend_Log": "library/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Zend Framework 1 Log package", + "homepage": "http://framework.zend.com/", + "keywords": [ + "ZF1", + "framework", + "log", + "zend" + ], + "support": { + "issues": "https://github.com/magento/magento-zend-log/issues", + "source": "https://github.com/magento/magento-zend-log/tree/1.16.0" + }, + "time": "2022-09-22T19:03:03+00:00" + }, + { + "name": "magento/zend-memory", + "version": "1.16.0", + "source": { + "type": "git", + "url": "https://github.com/magento/magento-zend-memory.git", + "reference": "0d48804c6718cc9f15e5c356e6192fd6fff8932b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/magento/magento-zend-memory/zipball/0d48804c6718cc9f15e5c356e6192fd6fff8932b", + "reference": "0d48804c6718cc9f15e5c356e6192fd6fff8932b", + "shasum": "" + }, + "require": { + "magento/zend-cache": "^1.16", + "magento/zend-exception": "^1.16", + "php": ">=7.0.0" + }, + "replace": { + "zf1/zend-memory": "^1.12", + "zfs1/zend-memory": "^1.12" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.16.x-dev" + } + }, + "autoload": { + "psr-0": { + "Zend_Memory": "library/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Zend Framework 1 Memory package", + "homepage": "http://framework.zend.com/", + "keywords": [ + "ZF1", + "framework", + "memory", + "zend" + ], + "support": { + "issues": "https://github.com/magento/magento-zend-memory/issues", + "source": "https://github.com/magento/magento-zend-memory/tree/1.16.0" + }, + "time": "2022-09-22T18:17:46+00:00" + }, + { + "name": "magento/zend-pdf", + "version": "1.16.3", + "source": { + "type": "git", + "url": "https://github.com/magento/magento-zend-pdf.git", + "reference": "4426cdf87d10ad9a45e21da1468665a97d01ef79" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/magento/magento-zend-pdf/zipball/4426cdf87d10ad9a45e21da1468665a97d01ef79", + "reference": "4426cdf87d10ad9a45e21da1468665a97d01ef79", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-gd": "*", + "ext-iconv": "*", + "ext-zlib": "*", + "magento/zend-exception": "^1.16", + "magento/zend-log": "^1.16", + "magento/zend-memory": "^1.16", + "php": ">=7.0.0" + }, + "replace": { + "zf1/zend-pdf": "^1.12", + "zfs1/zend-pdf": "^1.12" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.16.x-dev" + } + }, + "autoload": { + "psr-0": { + "Zend_Pdf": "library/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Zend Framework 1 Pdf package", + "homepage": "http://framework.zend.com/", + "keywords": [ + "ZF1", + "framework", + "pdf", + "zend" + ], + "support": { + "issues": "https://github.com/magento/magento-zend-pdf/issues", + "source": "https://github.com/magento/magento-zend-pdf/tree/1.16.3" + }, + "time": "2023-08-25T12:52:21+00:00" + }, + { + "name": "monolog/monolog", + "version": "2.9.2", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "437cb3628f4cf6042cc10ae97fc2b8472e48ca1f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/437cb3628f4cf6042cc10ae97fc2b8472e48ca1f", + "reference": "437cb3628f4cf6042cc10ae97fc2b8472e48ca1f", + "shasum": "" + }, + "require": { + "php": ">=7.2", + "psr/log": "^1.0.1 || ^2.0 || ^3.0" + }, + "provide": { + "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^2.4.9 || ^3.0", + "doctrine/couchdb": "~1.0@dev", + "elasticsearch/elasticsearch": "^7 || ^8", + "ext-json": "*", + "graylog2/gelf-php": "^1.4.2 || ^2@dev", + "guzzlehttp/guzzle": "^7.4", + "guzzlehttp/psr7": "^2.2", + "mongodb/mongodb": "^1.8", + "php-amqplib/php-amqplib": "~2.4 || ^3", + "phpspec/prophecy": "^1.15", + "phpstan/phpstan": "^0.12.91", + "phpunit/phpunit": "^8.5.14", + "predis/predis": "^1.1 || ^2.0", + "rollbar/rollbar": "^1.3 || ^2 || ^3", + "ruflin/elastica": "^7", + "swiftmailer/swiftmailer": "^5.3|^6.0", + "symfony/mailer": "^5.4 || ^6", + "symfony/mime": "^5.4 || ^6" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", + "ext-mbstring": "Allow to work properly with unicode symbols", + "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", + "ext-openssl": "Required to send log messages using SSL", + "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "https://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "https://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "support": { + "issues": "https://github.com/Seldaek/monolog/issues", + "source": "https://github.com/Seldaek/monolog/tree/2.9.2" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2023-10-27T15:25:26+00:00" + }, + { + "name": "mtdowling/jmespath.php", + "version": "2.7.0", + "source": { + "type": "git", + "url": "https://github.com/jmespath/jmespath.php.git", + "reference": "bbb69a935c2cbb0c03d7f481a238027430f6440b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/bbb69a935c2cbb0c03d7f481a238027430f6440b", + "reference": "bbb69a935c2cbb0c03d7f481a238027430f6440b", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "symfony/polyfill-mbstring": "^1.17" + }, + "require-dev": { + "composer/xdebug-handler": "^3.0.3", + "phpunit/phpunit": "^8.5.33" + }, + "bin": [ + "bin/jp.php" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "files": [ + "src/JmesPath.php" + ], + "psr-4": { + "JmesPath\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Declaratively specify how to extract elements from a JSON document", + "keywords": [ + "json", + "jsonpath" + ], + "support": { + "issues": "https://github.com/jmespath/jmespath.php/issues", + "source": "https://github.com/jmespath/jmespath.php/tree/2.7.0" + }, + "time": "2023-08-25T10:54:48+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v4.17.1", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=7.0" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1" + }, + "time": "2023-08-13T19:53:39+00:00" + }, + { + "name": "opensearch-project/opensearch-php", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/opensearch-project/opensearch-php.git", + "reference": "565c17e0ac1e062f4a6edfeb9745e9deb93ffbeb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/opensearch-project/opensearch-php/zipball/565c17e0ac1e062f4a6edfeb9745e9deb93ffbeb", + "reference": "565c17e0ac1e062f4a6edfeb9745e9deb93ffbeb", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "ext-json": ">=1.3.7", + "ezimuel/ringphp": "^1.1.2", + "php": "^7.3 || ^8.0", + "psr/log": "^1|^2" + }, + "require-dev": { + "ext-zip": "*", + "friendsofphp/php-cs-fixer": "^3.0", + "mockery/mockery": "^1.2", + "phpstan/phpstan": "^0.12", + "phpunit/phpunit": "^9.3", + "symfony/finder": "~4.0" + }, + "suggest": { + "monolog/monolog": "Allows for client-level logging and tracing" + }, + "type": "library", + "autoload": { + "psr-4": { + "OpenSearch\\": "src/OpenSearch/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0", + "LGPL-2.1-only" + ], + "authors": [ + { + "name": "Elastic" + }, + { + "name": "OpenSearch Contributors" + } + ], + "description": "PHP Client for OpenSearch", + "keywords": [ + "client", + "elasticsearch", + "opensearch", + "search" + ], + "support": { + "issues": "https://github.com/opensearch-project/opensearch-php/issues", + "source": "https://github.com/opensearch-project/opensearch-php/tree/2.0.0" + }, + "time": "2022-05-26T19:17:49+00:00" + }, + { + "name": "paragonie/constant_time_encoding", + "version": "v2.6.3", + "source": { + "type": "git", + "url": "https://github.com/paragonie/constant_time_encoding.git", + "reference": "58c3f47f650c94ec05a151692652a868995d2938" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/58c3f47f650c94ec05a151692652a868995d2938", + "reference": "58c3f47f650c94ec05a151692652a868995d2938", + "shasum": "" + }, + "require": { + "php": "^7|^8" + }, + "require-dev": { + "phpunit/phpunit": "^6|^7|^8|^9", + "vimeo/psalm": "^1|^2|^3|^4" + }, + "type": "library", + "autoload": { + "psr-4": { + "ParagonIE\\ConstantTime\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com", + "role": "Maintainer" + }, + { + "name": "Steve 'Sc00bz' Thomas", + "email": "steve@tobtu.com", + "homepage": "https://www.tobtu.com", + "role": "Original Developer" + } + ], + "description": "Constant-time Implementations of RFC 4648 Encoding (Base-64, Base-32, Base-16)", + "keywords": [ + "base16", + "base32", + "base32_decode", + "base32_encode", + "base64", + "base64_decode", + "base64_encode", + "bin2hex", + "encoding", + "hex", + "hex2bin", + "rfc4648" + ], + "support": { + "email": "info@paragonie.com", + "issues": "https://github.com/paragonie/constant_time_encoding/issues", + "source": "https://github.com/paragonie/constant_time_encoding" + }, + "time": "2022-06-14T06:56:20+00:00" + }, + { + "name": "paragonie/random_compat", + "version": "v9.99.100", + "source": { + "type": "git", + "url": "https://github.com/paragonie/random_compat.git", + "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a", + "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a", + "shasum": "" + }, + "require": { + "php": ">= 7" + }, + "require-dev": { + "phpunit/phpunit": "4.*|5.*", + "vimeo/psalm": "^1" + }, + "suggest": { + "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." + }, + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com" + } + ], + "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", + "keywords": [ + "csprng", + "polyfill", + "pseudorandom", + "random" + ], + "support": { + "email": "info@paragonie.com", + "issues": "https://github.com/paragonie/random_compat/issues", + "source": "https://github.com/paragonie/random_compat" + }, + "time": "2020-10-15T08:29:30+00:00" + }, + { + "name": "pelago/emogrifier", + "version": "v7.1.0", + "source": { + "type": "git", + "url": "https://github.com/MyIntervals/emogrifier.git", + "reference": "1945460af992d0c14ad08e7b4567d7d0dd3a2f94" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/MyIntervals/emogrifier/zipball/1945460af992d0c14ad08e7b4567d7d0dd3a2f94", + "reference": "1945460af992d0c14ad08e7b4567d7d0dd3a2f94", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "php": "~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", + "sabberworm/php-css-parser": "^8.4.0", + "symfony/css-selector": "^4.4.23 || ^5.4.0 || ^6.0.0" + }, + "require-dev": { + "php-parallel-lint/php-parallel-lint": "1.3.2", + "phpunit/phpunit": "9.6.11", + "rawr/cross-data-providers": "2.4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "8.0.x-dev" } }, "autoload": { - "psr-0": { - "Zend_Cache": "library/" + "psr-4": { + "Pelago\\Emogrifier\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], - "description": "Zend Framework 1 Cache package", - "homepage": "http://framework.zend.com/", + "authors": [ + { + "name": "Oliver Klee", + "email": "github@oliverklee.de" + }, + { + "name": "Zoli Szabó", + "email": "zoli.szabo+github@gmail.com" + }, + { + "name": "John Reeve", + "email": "jreeve@pelagodesign.com" + }, + { + "name": "Jake Hotson", + "email": "jake@qzdesign.co.uk" + }, + { + "name": "Cameron Brooks" + }, + { + "name": "Jaime Prado" + } + ], + "description": "Converts CSS styles into inline style attributes in your HTML code", + "homepage": "https://www.myintervals.com/emogrifier.php", "keywords": [ - "ZF1", - "cache", - "framework", - "zend" + "css", + "email", + "pre-processing" ], "support": { - "issues": "https://github.com/magento/magento-zend-cache/issues", - "source": "https://github.com/magento/magento-zend-cache/tree/1.16.0" + "issues": "https://github.com/MyIntervals/emogrifier/issues", + "source": "https://github.com/MyIntervals/emogrifier" }, - "time": "2022-09-22T19:09:32+00:00" + "time": "2023-10-20T15:34:30+00:00" }, { - "name": "magento/zend-db", - "version": "1.16.1", + "name": "php-amqplib/php-amqplib", + "version": "v3.6.0", "source": { "type": "git", - "url": "https://github.com/magento/magento-zend-db.git", - "reference": "475addb06c0a417b2fd18effe5966bd3aa929b7b" + "url": "https://github.com/php-amqplib/php-amqplib.git", + "reference": "fb84e99589de0904a25861451b0552f806284ee5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/magento/magento-zend-db/zipball/475addb06c0a417b2fd18effe5966bd3aa929b7b", - "reference": "475addb06c0a417b2fd18effe5966bd3aa929b7b", + "url": "https://api.github.com/repos/php-amqplib/php-amqplib/zipball/fb84e99589de0904a25861451b0552f806284ee5", + "reference": "fb84e99589de0904a25861451b0552f806284ee5", "shasum": "" }, "require": { - "magento/zend-exception": "^1.16", - "magento/zend-loader": "^1.16", - "php": ">=7.0.0" + "ext-mbstring": "*", + "ext-sockets": "*", + "php": "^7.2||^8.0", + "phpseclib/phpseclib": "^2.0|^3.0" + }, + "conflict": { + "php": "7.4.0 - 7.4.1" }, "replace": { - "zf1/zend-db": "^1.12", - "zfs1/zend-db": "^1.12" + "videlalvaro/php-amqplib": "self.version" + }, + "require-dev": { + "ext-curl": "*", + "nategood/httpful": "^0.2.20", + "phpunit/phpunit": "^7.5|^9.5", + "squizlabs/php_codesniffer": "^3.6" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.16.x-dev" + "dev-master": "3.0-dev" } }, "autoload": { - "psr-0": { - "Zend_Db": "library/" + "psr-4": { + "PhpAmqpLib\\": "PhpAmqpLib/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "LGPL-2.1-or-later" ], - "description": "Zend Framework 1 Db package", - "homepage": "http://framework.zend.com/", + "authors": [ + { + "name": "Alvaro Videla", + "role": "Original Maintainer" + }, + { + "name": "Raúl Araya", + "email": "nubeiro@gmail.com", + "role": "Maintainer" + }, + { + "name": "Luke Bakken", + "email": "luke@bakken.io", + "role": "Maintainer" + }, + { + "name": "Ramūnas Dronga", + "email": "github@ramuno.lt", + "role": "Maintainer" + } + ], + "description": "Formerly videlalvaro/php-amqplib. This library is a pure PHP implementation of the AMQP protocol. It's been tested against RabbitMQ.", + "homepage": "https://github.com/php-amqplib/php-amqplib/", "keywords": [ - "ZF1", - "db", - "framework", - "zend" + "message", + "queue", + "rabbitmq" ], "support": { - "issues": "https://github.com/magento/magento-zend-db/issues", - "source": "https://github.com/magento/magento-zend-db/tree/1.16.1" + "issues": "https://github.com/php-amqplib/php-amqplib/issues", + "source": "https://github.com/php-amqplib/php-amqplib/tree/v3.6.0" }, - "time": "2023-08-25T13:52:30+00:00" + "time": "2023-10-22T15:02:02+00:00" }, { - "name": "magento/zend-exception", - "version": "1.16.0", + "name": "php-http/discovery", + "version": "1.19.1", "source": { "type": "git", - "url": "https://github.com/magento/magento-zend-exception.git", - "reference": "5219ba961e36dc1a713da3ad4f1594a87c71f758" + "url": "https://github.com/php-http/discovery.git", + "reference": "57f3de01d32085fea20865f9b16fb0e69347c39e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/magento/magento-zend-exception/zipball/5219ba961e36dc1a713da3ad4f1594a87c71f758", - "reference": "5219ba961e36dc1a713da3ad4f1594a87c71f758", + "url": "https://api.github.com/repos/php-http/discovery/zipball/57f3de01d32085fea20865f9b16fb0e69347c39e", + "reference": "57f3de01d32085fea20865f9b16fb0e69347c39e", "shasum": "" }, "require": { - "php": ">=7.0.0" + "composer-plugin-api": "^1.0|^2.0", + "php": "^7.1 || ^8.0" }, - "replace": { - "zf1/zend-exception": "^1.12", - "zfs1/zend-exception": "^1.12" + "conflict": { + "nyholm/psr7": "<1.0", + "zendframework/zend-diactoros": "*" }, - "type": "library", + "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", + "symfony/phpunit-bridge": "^6.2" + }, + "type": "composer-plugin", "extra": { - "branch-alias": { - "dev-main": "1.16.x-dev" - } + "class": "Http\\Discovery\\Composer\\Plugin", + "plugin-optional": true }, "autoload": { - "psr-0": { - "Zend_Exception": "library/" - } + "psr-4": { + "Http\\Discovery\\": "src/" + }, + "exclude-from-classmap": [ + "src/Composer/Plugin.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], - "description": "Zend Framework 1 Exception package", - "homepage": "http://framework.zend.com/", - "keywords": [ - "ZF1", - "exception", - "framework", - "zend" + "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/magento/magento-zend-exception/issues", - "source": "https://github.com/magento/magento-zend-exception/tree/1.16.0" + "issues": "https://github.com/php-http/discovery/issues", + "source": "https://github.com/php-http/discovery/tree/1.19.1" }, - "time": "2022-09-22T19:06:06+00:00" + "time": "2023-07-11T07:02:26+00:00" }, { - "name": "magento/zend-loader", - "version": "1.16.1", + "name": "php-http/httplug", + "version": "2.4.0", "source": { "type": "git", - "url": "https://github.com/magento/magento-zend-loader.git", - "reference": "7eca22970a6b7cdaa3d3a6a6d117e4c0d3bef5e9" + "url": "https://github.com/php-http/httplug.git", + "reference": "625ad742c360c8ac580fcc647a1541d29e257f67" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/magento/magento-zend-loader/zipball/7eca22970a6b7cdaa3d3a6a6d117e4c0d3bef5e9", - "reference": "7eca22970a6b7cdaa3d3a6a6d117e4c0d3bef5e9", + "url": "https://api.github.com/repos/php-http/httplug/zipball/625ad742c360c8ac580fcc647a1541d29e257f67", + "reference": "625ad742c360c8ac580fcc647a1541d29e257f67", "shasum": "" }, "require": { - "magento/zend-exception": "^1.16.0", - "php": ">=7.0.0" + "php": "^7.1 || ^8.0", + "php-http/promise": "^1.1", + "psr/http-client": "^1.0", + "psr/http-message": "^1.0 || ^2.0" }, - "replace": { - "zf1/zend-loader": "^1.12", - "zf1s/zend-loader": "^1.12" + "require-dev": { + "friends-of-phpspec/phpspec-code-coverage": "^4.1 || ^5.0 || ^6.0", + "phpspec/phpspec": "^5.1 || ^6.0 || ^7.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.16.x-dev" - } - }, "autoload": { - "psr-0": { - "Zend_Loader": "library/" + "psr-4": { + "Http\\Client\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], - "description": "Zend Framework 1 Loader package", - "homepage": "http://framework.zend.com/", + "authors": [ + { + "name": "Eric GELOEN", + "email": "geloen.eric@gmail.com" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" + } + ], + "description": "HTTPlug, the HTTP client abstraction for PHP", + "homepage": "http://httplug.io", "keywords": [ - "ZF1", - "framework", - "loader", - "zend" + "client", + "http" ], "support": { - "issues": "https://github.com/magento/magento-zend-loader/issues", - "source": "https://github.com/magento/magento-zend-loader/tree/1.16.1" + "issues": "https://github.com/php-http/httplug/issues", + "source": "https://github.com/php-http/httplug/tree/2.4.0" }, - "time": "2023-08-25T13:52:37+00:00" + "time": "2023-04-14T15:10:03+00:00" }, { - "name": "magento/zend-log", - "version": "1.16.0", + "name": "php-http/promise", + "version": "1.2.1", "source": { "type": "git", - "url": "https://github.com/magento/magento-zend-log.git", - "reference": "c03b9febe92c501288cf441d41b49cd01f1e8a50" + "url": "https://github.com/php-http/promise.git", + "reference": "44a67cb59f708f826f3bec35f22030b3edb90119" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/magento/magento-zend-log/zipball/c03b9febe92c501288cf441d41b49cd01f1e8a50", - "reference": "c03b9febe92c501288cf441d41b49cd01f1e8a50", + "url": "https://api.github.com/repos/php-http/promise/zipball/44a67cb59f708f826f3bec35f22030b3edb90119", + "reference": "44a67cb59f708f826f3bec35f22030b3edb90119", "shasum": "" }, "require": { - "magento/zend-exception": "^1.16", - "php": ">=7.0.0" + "php": "^7.1 || ^8.0" }, - "replace": { - "zf1/zend-log": "^1.12", - "zfs1/zend-log": "^1.12" + "require-dev": { + "friends-of-phpspec/phpspec-code-coverage": "^4.3.2 || ^6.3", + "phpspec/phpspec": "^5.1.2 || ^6.2 || ^7.4" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.16.x-dev" - } - }, "autoload": { - "psr-0": { - "Zend_Log": "library/" + "psr-4": { + "Http\\Promise\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], - "description": "Zend Framework 1 Log package", - "homepage": "http://framework.zend.com/", + "authors": [ + { + "name": "Joel Wurtz", + "email": "joel.wurtz@gmail.com" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + } + ], + "description": "Promise used for asynchronous HTTP requests", + "homepage": "http://httplug.io", "keywords": [ - "ZF1", - "framework", - "log", - "zend" + "promise" ], "support": { - "issues": "https://github.com/magento/magento-zend-log/issues", - "source": "https://github.com/magento/magento-zend-log/tree/1.16.0" + "issues": "https://github.com/php-http/promise/issues", + "source": "https://github.com/php-http/promise/tree/1.2.1" }, - "time": "2022-09-22T19:03:03+00:00" + "time": "2023-11-08T12:57:08+00:00" }, { - "name": "magento/zend-memory", - "version": "1.16.0", + "name": "phpseclib/mcrypt_compat", + "version": "2.0.4", "source": { "type": "git", - "url": "https://github.com/magento/magento-zend-memory.git", - "reference": "0d48804c6718cc9f15e5c356e6192fd6fff8932b" + "url": "https://github.com/phpseclib/mcrypt_compat.git", + "reference": "6505669343743daf290b7d7b6b7105f85fd9988f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/magento/magento-zend-memory/zipball/0d48804c6718cc9f15e5c356e6192fd6fff8932b", - "reference": "0d48804c6718cc9f15e5c356e6192fd6fff8932b", + "url": "https://api.github.com/repos/phpseclib/mcrypt_compat/zipball/6505669343743daf290b7d7b6b7105f85fd9988f", + "reference": "6505669343743daf290b7d7b6b7105f85fd9988f", "shasum": "" }, "require": { - "magento/zend-cache": "^1.16", - "magento/zend-exception": "^1.16", - "php": ">=7.0.0" + "php": ">=5.6.1", + "phpseclib/phpseclib": ">=3.0.13 <4.0.0" }, - "replace": { - "zf1/zend-memory": "^1.12", - "zfs1/zend-memory": "^1.12" + "provide": { + "ext-mcrypt": "5.6.40" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.16.x-dev" - } + "require-dev": { + "phpunit/phpunit": "^5.7|^6.0|^9.4" + }, + "suggest": { + "ext-openssl": "Will enable faster cryptographic operations" }, + "type": "library", "autoload": { - "psr-0": { - "Zend_Memory": "library/" - } + "files": [ + "lib/mcrypt.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], - "description": "Zend Framework 1 Memory package", - "homepage": "http://framework.zend.com/", + "authors": [ + { + "name": "Jim Wigginton", + "email": "terrafrost@php.net", + "homepage": "http://phpseclib.sourceforge.net" + } + ], + "description": "PHP 5.x-8.x polyfill for mcrypt extension", "keywords": [ - "ZF1", - "framework", - "memory", - "zend" + "cryptograpy", + "encryption", + "mcrypt", + "polyfill" ], "support": { - "issues": "https://github.com/magento/magento-zend-memory/issues", - "source": "https://github.com/magento/magento-zend-memory/tree/1.16.0" + "email": "terrafrost@php.net", + "issues": "https://github.com/phpseclib/mcrypt_compat/issues", + "source": "https://github.com/phpseclib/mcrypt_compat" }, - "time": "2022-09-22T18:17:46+00:00" + "funding": [ + { + "url": "https://www.patreon.com/phpseclib", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpseclib/mcrypt_compat", + "type": "tidelift" + } + ], + "time": "2022-12-19T00:32:45+00:00" }, { - "name": "magento/zend-pdf", - "version": "1.16.3", + "name": "phpseclib/phpseclib", + "version": "3.0.33", "source": { "type": "git", - "url": "https://github.com/magento/magento-zend-pdf.git", - "reference": "4426cdf87d10ad9a45e21da1468665a97d01ef79" + "url": "https://github.com/phpseclib/phpseclib.git", + "reference": "33fa69b2514a61138dd48e7a49f99445711e0ad0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/magento/magento-zend-pdf/zipball/4426cdf87d10ad9a45e21da1468665a97d01ef79", - "reference": "4426cdf87d10ad9a45e21da1468665a97d01ef79", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/33fa69b2514a61138dd48e7a49f99445711e0ad0", + "reference": "33fa69b2514a61138dd48e7a49f99445711e0ad0", "shasum": "" }, "require": { - "ext-ctype": "*", - "ext-gd": "*", - "ext-iconv": "*", - "ext-zlib": "*", - "magento/zend-exception": "^1.16", - "magento/zend-log": "^1.16", - "magento/zend-memory": "^1.16", - "php": ">=7.0.0" + "paragonie/constant_time_encoding": "^1|^2", + "paragonie/random_compat": "^1.4|^2.0|^9.99.99", + "php": ">=5.6.1" }, - "replace": { - "zf1/zend-pdf": "^1.12", - "zfs1/zend-pdf": "^1.12" + "require-dev": { + "phpunit/phpunit": "*" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.16.x-dev" - } + "suggest": { + "ext-dom": "Install the DOM extension to load XML formatted public keys.", + "ext-gmp": "Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.", + "ext-libsodium": "SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.", + "ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.", + "ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations." }, + "type": "library", "autoload": { - "psr-0": { - "Zend_Pdf": "library/" + "files": [ + "phpseclib/bootstrap.php" + ], + "psr-4": { + "phpseclib3\\": "phpseclib/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], - "description": "Zend Framework 1 Pdf package", - "homepage": "http://framework.zend.com/", + "authors": [ + { + "name": "Jim Wigginton", + "email": "terrafrost@php.net", + "role": "Lead Developer" + }, + { + "name": "Patrick Monnerat", + "email": "pm@datasphere.ch", + "role": "Developer" + }, + { + "name": "Andreas Fischer", + "email": "bantu@phpbb.com", + "role": "Developer" + }, + { + "name": "Hans-Jürgen Petrich", + "email": "petrich@tronic-media.com", + "role": "Developer" + }, + { + "name": "Graham Campbell", + "email": "graham@alt-three.com", + "role": "Developer" + } + ], + "description": "PHP Secure Communications Library - Pure-PHP implementations of RSA, AES, SSH2, SFTP, X.509 etc.", + "homepage": "http://phpseclib.sourceforge.net", "keywords": [ - "ZF1", - "framework", - "pdf", - "zend" + "BigInteger", + "aes", + "asn.1", + "asn1", + "blowfish", + "crypto", + "cryptography", + "encryption", + "rsa", + "security", + "sftp", + "signature", + "signing", + "ssh", + "twofish", + "x.509", + "x509" ], "support": { - "issues": "https://github.com/magento/magento-zend-pdf/issues", - "source": "https://github.com/magento/magento-zend-pdf/tree/1.16.3" + "issues": "https://github.com/phpseclib/phpseclib/issues", + "source": "https://github.com/phpseclib/phpseclib/tree/3.0.33" }, - "time": "2023-08-25T12:52:21+00:00" + "funding": [ + { + "url": "https://github.com/terrafrost", + "type": "github" + }, + { + "url": "https://www.patreon.com/phpseclib", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpseclib/phpseclib", + "type": "tidelift" + } + ], + "time": "2023-10-21T14:00:39+00:00" }, { - "name": "monolog/monolog", - "version": "2.9.1", + "name": "psr/cache", + "version": "3.0.0", "source": { "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "f259e2b15fb95494c83f52d3caad003bbf5ffaa1" + "url": "https://github.com/php-fig/cache.git", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f259e2b15fb95494c83f52d3caad003bbf5ffaa1", - "reference": "f259e2b15fb95494c83f52d3caad003bbf5ffaa1", + "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", "shasum": "" }, "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7 || ^8", - "ext-json": "*", - "graylog2/gelf-php": "^1.4.2 || ^2@dev", - "guzzlehttp/guzzle": "^7.4", - "guzzlehttp/psr7": "^2.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "phpspec/prophecy": "^1.15", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5.14", - "predis/predis": "^1.1 || ^2.0", - "rollbar/rollbar": "^1.3 || ^2 || ^3", - "ruflin/elastica": "^7", - "swiftmailer/swiftmailer": "^5.3|^6.0", - "symfony/mailer": "^5.4 || ^6", - "symfony/mime": "^5.4 || ^6" - }, - "suggest": { - "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", - "doctrine/couchdb": "Allow sending log messages to a CouchDB server", - "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", - "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", - "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", - "ext-mbstring": "Allow to work properly with unicode symbols", - "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", - "ext-openssl": "Required to send log messages using SSL", - "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", - "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", - "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", - "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", - "rollbar/rollbar": "Allow sending log messages to Rollbar", - "ruflin/elastica": "Allow sending log messages to an Elastic Search server" + "php": ">=8.0.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { "psr-4": { - "Monolog\\": "src/Monolog" + "Psr\\Cache\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -5088,71 +7181,42 @@ ], "authors": [ { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "https://seld.be" + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" } ], - "description": "Sends your logs to files, sockets, inboxes, databases and various web services", - "homepage": "https://github.com/Seldaek/monolog", + "description": "Common interface for caching libraries", "keywords": [ - "log", - "logging", - "psr-3" + "cache", + "psr", + "psr-6" ], "support": { - "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/2.9.1" + "source": "https://github.com/php-fig/cache/tree/3.0.0" }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "time": "2023-02-06T13:44:46+00:00" + "time": "2021-02-03T23:26:27+00:00" }, { - "name": "mtdowling/jmespath.php", - "version": "2.7.0", + "name": "psr/clock", + "version": "1.0.0", "source": { "type": "git", - "url": "https://github.com/jmespath/jmespath.php.git", - "reference": "bbb69a935c2cbb0c03d7f481a238027430f6440b" + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/bbb69a935c2cbb0c03d7f481a238027430f6440b", - "reference": "bbb69a935c2cbb0c03d7f481a238027430f6440b", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", "shasum": "" }, "require": { - "php": "^7.2.5 || ^8.0", - "symfony/polyfill-mbstring": "^1.17" - }, - "require-dev": { - "composer/xdebug-handler": "^3.0.3", - "phpunit/phpunit": "^8.5.33" + "php": "^7.0 || ^8.0" }, - "bin": [ - "bin/jp.php" - ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.7-dev" - } - }, "autoload": { - "files": [ - "src/JmesPath.php" - ], "psr-4": { - "JmesPath\\": "src/" + "Psr\\Clock\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -5161,172 +7225,150 @@ ], "authors": [ { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" } ], - "description": "Declaratively specify how to extract elements from a JSON document", + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", "keywords": [ - "json", - "jsonpath" + "clock", + "now", + "psr", + "psr-20", + "time" ], "support": { - "issues": "https://github.com/jmespath/jmespath.php/issues", - "source": "https://github.com/jmespath/jmespath.php/tree/2.7.0" + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" }, - "time": "2023-08-25T10:54:48+00:00" + "time": "2022-11-25T14:36:26+00:00" }, { - "name": "nikic/php-parser", - "version": "v4.17.1", + "name": "psr/container", + "version": "1.1.2", "source": { "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d" + "url": "https://github.com/php-fig/container.git", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", - "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", "shasum": "" }, "require": { - "ext-tokenizer": "*", - "php": ">=7.0" - }, - "require-dev": { - "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + "php": ">=7.4.0" }, - "bin": [ - "bin/php-parse" - ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.9-dev" - } - }, "autoload": { "psr-4": { - "PhpParser\\": "lib/PhpParser" + "Psr\\Container\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Nikita Popov" + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" } ], - "description": "A PHP parser written in PHP", + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", "keywords": [ - "parser", - "php" + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" ], "support": { - "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1" + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/1.1.2" }, - "time": "2023-08-13T19:53:39+00:00" + "time": "2021-11-05T16:50:12+00:00" }, { - "name": "opensearch-project/opensearch-php", - "version": "2.0.0", + "name": "psr/event-dispatcher", + "version": "1.0.0", "source": { "type": "git", - "url": "https://github.com/opensearch-project/opensearch-php.git", - "reference": "565c17e0ac1e062f4a6edfeb9745e9deb93ffbeb" + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/opensearch-project/opensearch-php/zipball/565c17e0ac1e062f4a6edfeb9745e9deb93ffbeb", - "reference": "565c17e0ac1e062f4a6edfeb9745e9deb93ffbeb", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", "shasum": "" }, "require": { - "ext-curl": "*", - "ext-json": ">=1.3.7", - "ezimuel/ringphp": "^1.1.2", - "php": "^7.3 || ^8.0", - "psr/log": "^1|^2" - }, - "require-dev": { - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.0", - "mockery/mockery": "^1.2", - "phpstan/phpstan": "^0.12", - "phpunit/phpunit": "^9.3", - "symfony/finder": "~4.0" - }, - "suggest": { - "monolog/monolog": "Allows for client-level logging and tracing" + "php": ">=7.2.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, "autoload": { "psr-4": { - "OpenSearch\\": "src/OpenSearch/" + "Psr\\EventDispatcher\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "Apache-2.0", - "LGPL-2.1-only" + "MIT" ], "authors": [ { - "name": "Elastic" - }, - { - "name": "OpenSearch Contributors" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "PHP Client for OpenSearch", + "description": "Standard interfaces for event handling.", "keywords": [ - "client", - "elasticsearch", - "opensearch", - "search" + "events", + "psr", + "psr-14" ], "support": { - "issues": "https://github.com/opensearch-project/opensearch-php/issues", - "source": "https://github.com/opensearch-project/opensearch-php/tree/2.0.0" + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" }, - "time": "2022-05-26T19:17:49+00:00" + "time": "2019-01-08T18:20:26+00:00" }, { - "name": "paragonie/constant_time_encoding", - "version": "v2.6.3", + "name": "psr/http-client", + "version": "1.0.3", "source": { "type": "git", - "url": "https://github.com/paragonie/constant_time_encoding.git", - "reference": "58c3f47f650c94ec05a151692652a868995d2938" + "url": "https://github.com/php-fig/http-client.git", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/58c3f47f650c94ec05a151692652a868995d2938", - "reference": "58c3f47f650c94ec05a151692652a868995d2938", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", "shasum": "" }, "require": { - "php": "^7|^8" - }, - "require-dev": { - "phpunit/phpunit": "^6|^7|^8|^9", - "vimeo/psalm": "^1|^2|^3|^4" + "php": "^7.0 || ^8.0", + "psr/http-message": "^1.0 || ^2.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, "autoload": { "psr-4": { - "ParagonIE\\ConstantTime\\": "src/" + "Psr\\Http\\Client\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -5335,125 +7377,104 @@ ], "authors": [ { - "name": "Paragon Initiative Enterprises", - "email": "security@paragonie.com", - "homepage": "https://paragonie.com", - "role": "Maintainer" - }, - { - "name": "Steve 'Sc00bz' Thomas", - "email": "steve@tobtu.com", - "homepage": "https://www.tobtu.com", - "role": "Original Developer" + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" } ], - "description": "Constant-time Implementations of RFC 4648 Encoding (Base-64, Base-32, Base-16)", + "description": "Common interface for HTTP clients", + "homepage": "https://github.com/php-fig/http-client", "keywords": [ - "base16", - "base32", - "base32_decode", - "base32_encode", - "base64", - "base64_decode", - "base64_encode", - "bin2hex", - "encoding", - "hex", - "hex2bin", - "rfc4648" + "http", + "http-client", + "psr", + "psr-18" ], "support": { - "email": "info@paragonie.com", - "issues": "https://github.com/paragonie/constant_time_encoding/issues", - "source": "https://github.com/paragonie/constant_time_encoding" + "source": "https://github.com/php-fig/http-client" }, - "time": "2022-06-14T06:56:20+00:00" + "time": "2023-09-23T14:17:50+00:00" }, { - "name": "paragonie/random_compat", - "version": "v9.99.100", + "name": "psr/http-factory", + "version": "1.0.2", "source": { "type": "git", - "url": "https://github.com/paragonie/random_compat.git", - "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a" + "url": "https://github.com/php-fig/http-factory.git", + "reference": "e616d01114759c4c489f93b099585439f795fe35" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a", - "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35", + "reference": "e616d01114759c4c489f93b099585439f795fe35", "shasum": "" }, "require": { - "php": ">= 7" + "php": ">=7.0.0", + "psr/http-message": "^1.0 || ^2.0" }, - "require-dev": { - "phpunit/phpunit": "4.*|5.*", - "vimeo/psalm": "^1" + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } }, - "suggest": { - "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } }, - "type": "library", "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { - "name": "Paragon Initiative Enterprises", - "email": "security@paragonie.com", - "homepage": "https://paragonie.com" + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" } ], - "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", + "description": "Common interfaces for PSR-7 HTTP message factories", "keywords": [ - "csprng", - "polyfill", - "pseudorandom", - "random" + "factory", + "http", + "message", + "psr", + "psr-17", + "psr-7", + "request", + "response" ], "support": { - "email": "info@paragonie.com", - "issues": "https://github.com/paragonie/random_compat/issues", - "source": "https://github.com/paragonie/random_compat" + "source": "https://github.com/php-fig/http-factory/tree/1.0.2" }, - "time": "2020-10-15T08:29:30+00:00" + "time": "2023-04-10T20:10:41+00:00" }, { - "name": "pelago/emogrifier", - "version": "v7.0.0", + "name": "psr/http-message", + "version": "1.1", "source": { "type": "git", - "url": "https://github.com/MyIntervals/emogrifier.git", - "reference": "547b8c814794aec871e3c98b1c712f416755f4eb" + "url": "https://github.com/php-fig/http-message.git", + "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/MyIntervals/emogrifier/zipball/547b8c814794aec871e3c98b1c712f416755f4eb", - "reference": "547b8c814794aec871e3c98b1c712f416755f4eb", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/cb6ce4845ce34a8ad9e68117c10ee90a29919eba", + "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0", - "sabberworm/php-css-parser": "^8.4.0", - "symfony/css-selector": "^4.4.23 || ^5.4.0 || ^6.0.0" - }, - "require-dev": { - "php-parallel-lint/php-parallel-lint": "^1.3.2", - "phpunit/phpunit": "^9.5.25", - "rawr/cross-data-providers": "^2.3.0" + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "8.0.x-dev" + "dev-master": "1.1.x-dev" } }, "autoload": { "psr-4": { - "Pelago\\Emogrifier\\": "src/" + "Psr\\Http\\Message\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -5462,153 +7483,100 @@ ], "authors": [ { - "name": "Oliver Klee", - "email": "github@oliverklee.de" - }, - { - "name": "Zoli Szabó", - "email": "zoli.szabo+github@gmail.com" - }, - { - "name": "John Reeve", - "email": "jreeve@pelagodesign.com" - }, - { - "name": "Jake Hotson", - "email": "jake@qzdesign.co.uk" - }, - { - "name": "Cameron Brooks" - }, - { - "name": "Jaime Prado" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "Converts CSS styles into inline style attributes in your HTML code", - "homepage": "https://www.myintervals.com/emogrifier.php", + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", "keywords": [ - "css", - "email", - "pre-processing" + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" ], "support": { - "issues": "https://github.com/MyIntervals/emogrifier/issues", - "source": "https://github.com/MyIntervals/emogrifier" + "source": "https://github.com/php-fig/http-message/tree/1.1" }, - "time": "2022-11-01T17:53:29+00:00" + "time": "2023-04-04T09:50:52+00:00" }, { - "name": "php-amqplib/php-amqplib", - "version": "v3.5.4", + "name": "psr/log", + "version": "1.1.4", "source": { "type": "git", - "url": "https://github.com/php-amqplib/php-amqplib.git", - "reference": "1aecbd182b35eb039667c50d7d92d71f105be779" + "url": "https://github.com/php-fig/log.git", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-amqplib/php-amqplib/zipball/1aecbd182b35eb039667c50d7d92d71f105be779", - "reference": "1aecbd182b35eb039667c50d7d92d71f105be779", + "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11", "shasum": "" }, "require": { - "ext-mbstring": "*", - "ext-sockets": "*", - "php": "^7.1||^8.0", - "phpseclib/phpseclib": "^2.0|^3.0" - }, - "conflict": { - "php": "7.4.0 - 7.4.1" - }, - "replace": { - "videlalvaro/php-amqplib": "self.version" - }, - "require-dev": { - "ext-curl": "*", - "nategood/httpful": "^0.2.20", - "phpunit/phpunit": "^7.5|^9.5", - "squizlabs/php_codesniffer": "^3.6" + "php": ">=5.3.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "1.1.x-dev" } }, "autoload": { "psr-4": { - "PhpAmqpLib\\": "PhpAmqpLib/" + "Psr\\Log\\": "Psr/Log/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "LGPL-2.1-or-later" + "MIT" ], "authors": [ { - "name": "Alvaro Videla", - "role": "Original Maintainer" - }, - { - "name": "Raúl Araya", - "email": "nubeiro@gmail.com", - "role": "Maintainer" - }, - { - "name": "Luke Bakken", - "email": "luke@bakken.io", - "role": "Maintainer" - }, - { - "name": "Ramūnas Dronga", - "email": "github@ramuno.lt", - "role": "Maintainer" + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" } ], - "description": "Formerly videlalvaro/php-amqplib. This library is a pure PHP implementation of the AMQP protocol. It's been tested against RabbitMQ.", - "homepage": "https://github.com/php-amqplib/php-amqplib/", + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", "keywords": [ - "message", - "queue", - "rabbitmq" + "log", + "psr", + "psr-3" ], "support": { - "issues": "https://github.com/php-amqplib/php-amqplib/issues", - "source": "https://github.com/php-amqplib/php-amqplib/tree/v3.5.4" + "source": "https://github.com/php-fig/log/tree/1.1.4" }, - "time": "2023-07-01T11:25:08+00:00" + "time": "2021-05-03T11:20:27+00:00" }, { - "name": "phpseclib/mcrypt_compat", - "version": "2.0.4", + "name": "ralouphie/getallheaders", + "version": "3.0.3", "source": { "type": "git", - "url": "https://github.com/phpseclib/mcrypt_compat.git", - "reference": "6505669343743daf290b7d7b6b7105f85fd9988f" + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpseclib/mcrypt_compat/zipball/6505669343743daf290b7d7b6b7105f85fd9988f", - "reference": "6505669343743daf290b7d7b6b7105f85fd9988f", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", "shasum": "" }, "require": { - "php": ">=5.6.1", - "phpseclib/phpseclib": ">=3.0.13 <4.0.0" - }, - "provide": { - "ext-mcrypt": "5.6.40" + "php": ">=5.6" }, "require-dev": { - "phpunit/phpunit": "^5.7|^6.0|^9.4" - }, - "suggest": { - "ext-openssl": "Will enable faster cryptographic operations" + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" }, "type": "library", "autoload": { "files": [ - "lib/mcrypt.php" + "src/getallheaders.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -5617,71 +7585,68 @@ ], "authors": [ { - "name": "Jim Wigginton", - "email": "terrafrost@php.net", - "homepage": "http://phpseclib.sourceforge.net" + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" } ], - "description": "PHP 5.x-8.x polyfill for mcrypt extension", - "keywords": [ - "cryptograpy", - "encryption", - "mcrypt", - "polyfill" - ], + "description": "A polyfill for getallheaders.", "support": { - "email": "terrafrost@php.net", - "issues": "https://github.com/phpseclib/mcrypt_compat/issues", - "source": "https://github.com/phpseclib/mcrypt_compat" + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" }, - "funding": [ - { - "url": "https://www.patreon.com/phpseclib", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpseclib/mcrypt_compat", - "type": "tidelift" - } - ], - "time": "2022-12-19T00:32:45+00:00" + "time": "2019-03-08T08:55:37+00:00" }, { - "name": "phpseclib/phpseclib", - "version": "3.0.21", + "name": "ramsey/collection", + "version": "2.0.0", "source": { "type": "git", - "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "4580645d3fc05c189024eb3b834c6c1e4f0f30a1" + "url": "https://github.com/ramsey/collection.git", + "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/4580645d3fc05c189024eb3b834c6c1e4f0f30a1", - "reference": "4580645d3fc05c189024eb3b834c6c1e4f0f30a1", + "url": "https://api.github.com/repos/ramsey/collection/zipball/a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", + "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", "shasum": "" }, "require": { - "paragonie/constant_time_encoding": "^1|^2", - "paragonie/random_compat": "^1.4|^2.0|^9.99.99", - "php": ">=5.6.1" + "php": "^8.1" }, "require-dev": { - "phpunit/phpunit": "*" - }, - "suggest": { - "ext-dom": "Install the DOM extension to load XML formatted public keys.", - "ext-gmp": "Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.", - "ext-libsodium": "SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.", - "ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.", - "ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations." + "captainhook/plugin-composer": "^5.3", + "ergebnis/composer-normalize": "^2.28.3", + "fakerphp/faker": "^1.21", + "hamcrest/hamcrest-php": "^2.0", + "jangregor/phpstan-prophecy": "^1.0", + "mockery/mockery": "^1.5", + "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" }, "type": "library", + "extra": { + "captainhook": { + "force-install": true + }, + "ramsey/conventional-commits": { + "configFile": "conventional-commits.json" + } + }, "autoload": { - "files": [ - "phpseclib/bootstrap.php" - ], "psr-4": { - "phpseclib3\\": "phpseclib/" + "Ramsey\\Collection\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -5690,142 +7655,155 @@ ], "authors": [ { - "name": "Jim Wigginton", - "email": "terrafrost@php.net", - "role": "Lead Developer" - }, - { - "name": "Patrick Monnerat", - "email": "pm@datasphere.ch", - "role": "Developer" - }, - { - "name": "Andreas Fischer", - "email": "bantu@phpbb.com", - "role": "Developer" - }, - { - "name": "Hans-Jürgen Petrich", - "email": "petrich@tronic-media.com", - "role": "Developer" - }, - { - "name": "Graham Campbell", - "email": "graham@alt-three.com", - "role": "Developer" + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" } ], - "description": "PHP Secure Communications Library - Pure-PHP implementations of RSA, AES, SSH2, SFTP, X.509 etc.", - "homepage": "http://phpseclib.sourceforge.net", + "description": "A PHP library for representing and manipulating collections.", "keywords": [ - "BigInteger", - "aes", - "asn.1", - "asn1", - "blowfish", - "crypto", - "cryptography", - "encryption", - "rsa", - "security", - "sftp", - "signature", - "signing", - "ssh", - "twofish", - "x.509", - "x509" + "array", + "collection", + "hash", + "map", + "queue", + "set" ], "support": { - "issues": "https://github.com/phpseclib/phpseclib/issues", - "source": "https://github.com/phpseclib/phpseclib/tree/3.0.21" + "issues": "https://github.com/ramsey/collection/issues", + "source": "https://github.com/ramsey/collection/tree/2.0.0" }, "funding": [ { - "url": "https://github.com/terrafrost", + "url": "https://github.com/ramsey", "type": "github" }, { - "url": "https://www.patreon.com/phpseclib", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpseclib/phpseclib", + "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", "type": "tidelift" } ], - "time": "2023-07-09T15:24:48+00:00" + "time": "2022-12-31T21:50:55+00:00" }, { - "name": "psr/cache", - "version": "3.0.0", + "name": "ramsey/uuid", + "version": "4.7.5", "source": { "type": "git", - "url": "https://github.com/php-fig/cache.git", - "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" + "url": "https://github.com/ramsey/uuid.git", + "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", - "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e", + "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e", "shasum": "" }, "require": { - "php": ">=8.0.0" + "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11", + "ext-json": "*", + "php": "^8.0", + "ramsey/collection": "^1.2 || ^2.0" + }, + "replace": { + "rhumsaa/uuid": "self.version" + }, + "require-dev": { + "captainhook/captainhook": "^5.10", + "captainhook/plugin-composer": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "doctrine/annotations": "^1.8", + "ergebnis/composer-normalize": "^2.15", + "mockery/mockery": "^1.3", + "paragonie/random-lib": "^2", + "php-mock/php-mock": "^2.2", + "php-mock/php-mock-mockery": "^1.3", + "php-parallel-lint/php-parallel-lint": "^1.1", + "phpbench/phpbench": "^1.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^8.5 || ^9", + "ramsey/composer-repl": "^1.4", + "slevomat/coding-standard": "^8.4", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.9" + }, + "suggest": { + "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", + "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", + "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", + "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", + "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" + "captainhook": { + "force-install": true } }, "autoload": { + "files": [ + "src/functions.php" + ], "psr-4": { - "Psr\\Cache\\": "src/" + "Ramsey\\Uuid\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for caching libraries", + "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", "keywords": [ - "cache", - "psr", - "psr-6" + "guid", + "identifier", + "uuid" ], "support": { - "source": "https://github.com/php-fig/cache/tree/3.0.0" + "issues": "https://github.com/ramsey/uuid/issues", + "source": "https://github.com/ramsey/uuid/tree/4.7.5" }, - "time": "2021-02-03T23:26:27+00:00" + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", + "type": "tidelift" + } + ], + "time": "2023-11-08T05:53:05+00:00" }, { - "name": "psr/clock", - "version": "1.0.0", + "name": "react/promise", + "version": "v2.11.0", "source": { "type": "git", - "url": "https://github.com/php-fig/clock.git", - "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" + "url": "https://github.com/reactphp/promise.git", + "reference": "1a8460931ea36dc5c76838fec5734d55c88c6831" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", - "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "url": "https://api.github.com/repos/reactphp/promise/zipball/1a8460931ea36dc5c76838fec5734d55c88c6831", + "reference": "1a8460931ea36dc5c76838fec5734d55c88c6831", "shasum": "" }, "require": { - "php": "^7.0 || ^8.0" + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" }, "type": "library", "autoload": { + "files": [ + "src/functions_include.php" + ], "psr-4": { - "Psr\\Clock\\": "src/" + "React\\Promise\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -5834,46 +7812,72 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" } ], - "description": "Common interface for reading the clock.", - "homepage": "https://github.com/php-fig/clock", + "description": "A lightweight implementation of CommonJS Promises/A for PHP", "keywords": [ - "clock", - "now", - "psr", - "psr-20", - "time" + "promise", + "promises" ], "support": { - "issues": "https://github.com/php-fig/clock/issues", - "source": "https://github.com/php-fig/clock/tree/1.0.0" + "issues": "https://github.com/reactphp/promise/issues", + "source": "https://github.com/reactphp/promise/tree/v2.11.0" }, - "time": "2022-11-25T14:36:26+00:00" + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2023-11-16T16:16:50+00:00" }, { - "name": "psr/container", - "version": "1.1.2", + "name": "sabberworm/php-css-parser", + "version": "8.4.0", "source": { "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" + "url": "https://github.com/sabberworm/PHP-CSS-Parser.git", + "reference": "e41d2140031d533348b2192a83f02d8dd8a71d30" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", - "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", + "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/e41d2140031d533348b2192a83f02d8dd8a71d30", + "reference": "e41d2140031d533348b2192a83f02d8dd8a71d30", "shasum": "" }, "require": { - "php": ">=7.4.0" + "ext-iconv": "*", + "php": ">=5.6.20" + }, + "require-dev": { + "codacy/coverage": "^1.4", + "phpunit/phpunit": "^4.8.36" + }, + "suggest": { + "ext-mbstring": "for parsing UTF-8 CSS" }, "type": "library", "autoload": { "psr-4": { - "Psr\\Container\\": "src/" + "Sabberworm\\CSS\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -5882,51 +7886,50 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "name": "Raphael Schweikert" } ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", + "description": "Parser for CSS Files written in PHP", + "homepage": "https://www.sabberworm.com/blog/2010/6/10/php-css-parser", "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" + "css", + "parser", + "stylesheet" ], "support": { - "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/1.1.2" + "issues": "https://github.com/sabberworm/PHP-CSS-Parser/issues", + "source": "https://github.com/sabberworm/PHP-CSS-Parser/tree/8.4.0" }, - "time": "2021-11-05T16:50:12+00:00" + "time": "2021-12-11T13:40:54+00:00" }, { - "name": "psr/event-dispatcher", - "version": "1.0.0", + "name": "seld/jsonlint", + "version": "1.10.0", "source": { "type": "git", - "url": "https://github.com/php-fig/event-dispatcher.git", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + "url": "https://github.com/Seldaek/jsonlint.git", + "reference": "594fd6462aad8ecee0b45ca5045acea4776667f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/594fd6462aad8ecee0b45ca5045acea4776667f1", + "reference": "594fd6462aad8ecee0b45ca5045acea4776667f1", "shasum": "" }, "require": { - "php": ">=7.2.0" + "php": "^5.3 || ^7.0 || ^8.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } + "require-dev": { + "phpstan/phpstan": "^1.5", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^8.5.13" }, + "bin": [ + "bin/jsonlint" + ], + "type": "library", "autoload": { "psr-4": { - "Psr\\EventDispatcher\\": "src/" + "Seld\\JsonLint\\": "src/Seld/JsonLint/" } }, "notification-url": "https://packagist.org/downloads/", @@ -5935,49 +7938,60 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" } ], - "description": "Standard interfaces for event handling.", + "description": "JSON Linter", "keywords": [ - "events", - "psr", - "psr-14" + "json", + "linter", + "parser", + "validator" ], "support": { - "issues": "https://github.com/php-fig/event-dispatcher/issues", - "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + "issues": "https://github.com/Seldaek/jsonlint/issues", + "source": "https://github.com/Seldaek/jsonlint/tree/1.10.0" }, - "time": "2019-01-08T18:20:26+00:00" + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/seld/jsonlint", + "type": "tidelift" + } + ], + "time": "2023-05-11T13:16:46+00:00" }, { - "name": "psr/http-client", - "version": "1.0.2", + "name": "seld/phar-utils", + "version": "1.2.1", "source": { "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31" + "url": "https://github.com/Seldaek/phar-utils.git", + "reference": "ea2f4014f163c1be4c601b9b7bd6af81ba8d701c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/0955afe48220520692d2d09f7ab7e0f93ffd6a31", - "reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31", + "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/ea2f4014f163c1be4c601b9b7bd6af81ba8d701c", + "reference": "ea2f4014f163c1be4c601b9b7bd6af81ba8d701c", "shasum": "" }, "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.0 || ^2.0" + "php": ">=5.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.x-dev" } }, "autoload": { "psr-4": { - "Psr\\Http\\Client\\": "src/" + "Seld\\PharUtils\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -5986,50 +8000,54 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be" } ], - "description": "Common interface for HTTP clients", - "homepage": "https://github.com/php-fig/http-client", + "description": "PHAR file format utilities, for when PHP phars you up", "keywords": [ - "http", - "http-client", - "psr", - "psr-18" + "phar" ], "support": { - "source": "https://github.com/php-fig/http-client/tree/1.0.2" + "issues": "https://github.com/Seldaek/phar-utils/issues", + "source": "https://github.com/Seldaek/phar-utils/tree/1.2.1" }, - "time": "2023-04-10T20:12:12+00:00" + "time": "2022-08-31T10:31:18+00:00" }, { - "name": "psr/http-factory", - "version": "1.0.2", + "name": "seld/signal-handler", + "version": "2.0.2", "source": { "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "e616d01114759c4c489f93b099585439f795fe35" + "url": "https://github.com/Seldaek/signal-handler.git", + "reference": "04a6112e883ad76c0ada8e4a9f7520bbfdb6bb98" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35", - "reference": "e616d01114759c4c489f93b099585439f795fe35", + "url": "https://api.github.com/repos/Seldaek/signal-handler/zipball/04a6112e883ad76c0ada8e4a9f7520bbfdb6bb98", + "reference": "04a6112e883ad76c0ada8e4a9f7520bbfdb6bb98", "shasum": "" }, "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.0 || ^2.0" + "php": ">=7.2.0" + }, + "require-dev": { + "phpstan/phpstan": "^1", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1", + "phpstan/phpstan-strict-rules": "^1.3", + "phpunit/phpunit": "^7.5.20 || ^8.5.23", + "psr/log": "^1 || ^2 || ^3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-main": "2.x-dev" } }, "autoload": { "psr-4": { - "Psr\\Http\\Message\\": "src/" + "Seld\\Signal\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -6038,52 +8056,60 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" } ], - "description": "Common interfaces for PSR-7 HTTP message factories", + "description": "Simple unix signal handler that silently fails where signals are not supported for easy cross-platform development", "keywords": [ - "factory", - "http", - "message", - "psr", - "psr-17", - "psr-7", - "request", - "response" + "posix", + "sigint", + "signal", + "sigterm", + "unix" ], "support": { - "source": "https://github.com/php-fig/http-factory/tree/1.0.2" + "issues": "https://github.com/Seldaek/signal-handler/issues", + "source": "https://github.com/Seldaek/signal-handler/tree/2.0.2" }, - "time": "2023-04-10T20:10:41+00:00" + "time": "2023-09-03T09:24:00+00:00" }, { - "name": "psr/http-message", - "version": "1.1", + "name": "spomky-labs/aes-key-wrap", + "version": "v7.0.0", "source": { "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba" + "url": "https://github.com/Spomky-Labs/aes-key-wrap.git", + "reference": "fbeb834b1f83aa8fbdfbd4c12124f71d4c1606ae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/cb6ce4845ce34a8ad9e68117c10ee90a29919eba", - "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba", + "url": "https://api.github.com/repos/Spomky-Labs/aes-key-wrap/zipball/fbeb834b1f83aa8fbdfbd4c12124f71d4c1606ae", + "reference": "fbeb834b1f83aa8fbdfbd4c12124f71d4c1606ae", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "ext-mbstring": "*", + "ext-openssl": "*", + "php": ">=8.0" + }, + "require-dev": { + "infection/infection": "^0.25.4", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-beberlei-assert": "^1.0", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "phpstan/phpstan-strict-rules": "^1.0", + "phpunit/phpunit": "^9.0", + "rector/rector": "^0.12.5", + "symplify/easy-coding-standard": "^10.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } - }, "autoload": { "psr-4": { - "Psr\\Http\\Message\\": "src/" + "AESKW\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -6092,51 +8118,76 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "name": "Florent Morselli", + "homepage": "https://github.com/Spomky-Labs/aes-key-wrap/contributors" } ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", + "description": "AES Key Wrap for PHP.", + "homepage": "https://github.com/Spomky-Labs/aes-key-wrap", "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" + "A128KW", + "A192KW", + "A256KW", + "RFC3394", + "RFC5649", + "aes", + "key", + "padding", + "wrap" ], "support": { - "source": "https://github.com/php-fig/http-message/tree/1.1" + "issues": "https://github.com/Spomky-Labs/aes-key-wrap/issues", + "source": "https://github.com/Spomky-Labs/aes-key-wrap/tree/v7.0.0" }, - "time": "2023-04-04T09:50:52+00:00" + "funding": [ + { + "url": "https://github.com/Spomky", + "type": "github" + }, + { + "url": "https://www.patreon.com/FlorentMorselli", + "type": "patreon" + } + ], + "time": "2021-12-08T20:36:59+00:00" }, { - "name": "psr/log", - "version": "1.1.4", + "name": "spomky-labs/otphp", + "version": "11.2.0", "source": { "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11" + "url": "https://github.com/Spomky-Labs/otphp.git", + "reference": "9a1569038bb1c8e98040b14b8bcbba54f25e7795" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11", + "url": "https://api.github.com/repos/Spomky-Labs/otphp/zipball/9a1569038bb1c8e98040b14b8bcbba54f25e7795", + "reference": "9a1569038bb1c8e98040b14b8bcbba54f25e7795", "shasum": "" }, "require": { - "php": ">=5.3.0" + "ext-mbstring": "*", + "paragonie/constant_time_encoding": "^2.0", + "php": "^8.1" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } + "require-dev": { + "ekino/phpstan-banned-code": "^1.0", + "infection/infection": "^0.26", + "php-parallel-lint/php-parallel-lint": "^1.3", + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "phpstan/phpstan-strict-rules": "^1.0", + "phpunit/phpunit": "^9.5.26", + "qossmic/deptrac-shim": "^1.0", + "rector/rector": "^0.15", + "symfony/phpunit-bridge": "^6.1", + "symplify/easy-coding-standard": "^11.0" }, + "type": "library", "autoload": { "psr-4": { - "Psr\\Log\\": "Psr/Log/" + "OTPHP\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -6145,48 +8196,89 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "name": "Florent Morselli", + "homepage": "https://github.com/Spomky" + }, + { + "name": "All contributors", + "homepage": "https://github.com/Spomky-Labs/otphp/contributors" } ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", + "description": "A PHP library for generating one time passwords according to RFC 4226 (HOTP Algorithm) and the RFC 6238 (TOTP Algorithm) and compatible with Google Authenticator", + "homepage": "https://github.com/Spomky-Labs/otphp", "keywords": [ - "log", - "psr", - "psr-3" + "FreeOTP", + "RFC 4226", + "RFC 6238", + "google authenticator", + "hotp", + "otp", + "totp" ], "support": { - "source": "https://github.com/php-fig/log/tree/1.1.4" + "issues": "https://github.com/Spomky-Labs/otphp/issues", + "source": "https://github.com/Spomky-Labs/otphp/tree/11.2.0" }, - "time": "2021-05-03T11:20:27+00:00" + "funding": [ + { + "url": "https://github.com/Spomky", + "type": "github" + }, + { + "url": "https://www.patreon.com/FlorentMorselli", + "type": "patreon" + } + ], + "time": "2023-03-16T19:16:25+00:00" }, { - "name": "ralouphie/getallheaders", - "version": "3.0.3", + "name": "spomky-labs/pki-framework", + "version": "1.1.0", "source": { "type": "git", - "url": "https://github.com/ralouphie/getallheaders.git", - "reference": "120b605dfeb996808c31b6477290a714d356e822" + "url": "https://github.com/Spomky-Labs/pki-framework.git", + "reference": "d3ba688bf40e7c6e0dabf065ee18fc210734e760" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", - "reference": "120b605dfeb996808c31b6477290a714d356e822", + "url": "https://api.github.com/repos/Spomky-Labs/pki-framework/zipball/d3ba688bf40e7c6e0dabf065ee18fc210734e760", + "reference": "d3ba688bf40e7c6e0dabf065ee18fc210734e760", "shasum": "" }, "require": { - "php": ">=5.6" + "brick/math": "^0.10 || ^0.11", + "ext-mbstring": "*", + "php": ">=8.1" }, "require-dev": { - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^5 || ^6.5" + "ekino/phpstan-banned-code": "^1.0", + "ext-gmp": "*", + "ext-openssl": "*", + "infection/infection": "^0.26", + "php-parallel-lint/php-parallel-lint": "^1.3", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-beberlei-assert": "^1.0", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.3", + "phpunit/phpunit": "^10.0", + "rector/rector": "^0.15", + "roave/security-advisories": "dev-latest", + "symfony/phpunit-bridge": "^6.1", + "symfony/var-dumper": "^6.1", + "symplify/easy-coding-standard": "^11.1", + "thecodingmachine/phpstan-safe-rule": "^1.2" + }, + "suggest": { + "ext-bcmath": "For better performance (or GMP)", + "ext-gmp": "For better performance (or BCMath)", + "ext-openssl": "For OpenSSL based cyphering" }, "type": "library", "autoload": { - "files": [ - "src/getallheaders.php" - ] + "psr-4": { + "SpomkyLabs\\Pki\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -6194,69 +8286,100 @@ ], "authors": [ { - "name": "Ralph Khattar", - "email": "ralph.khattar@gmail.com" + "name": "Joni Eskelinen", + "email": "jonieske@gmail.com", + "role": "Original developer" + }, + { + "name": "Florent Morselli", + "email": "florent.morselli@spomky-labs.com", + "role": "Spomky-Labs PKI Framework developer" } ], - "description": "A polyfill for getallheaders.", + "description": "A PHP framework for managing Public Key Infrastructures. It comprises X.509 public key certificates, attribute certificates, certification requests and certification path validation.", + "homepage": "https://github.com/spomky-labs/pki-framework", + "keywords": [ + "DER", + "Private Key", + "ac", + "algorithm identifier", + "asn.1", + "asn1", + "attribute certificate", + "certificate", + "certification request", + "cryptography", + "csr", + "decrypt", + "ec", + "encrypt", + "pem", + "pkcs", + "public key", + "rsa", + "sign", + "signature", + "verify", + "x.509", + "x.690", + "x509", + "x690" + ], "support": { - "issues": "https://github.com/ralouphie/getallheaders/issues", - "source": "https://github.com/ralouphie/getallheaders/tree/develop" + "issues": "https://github.com/Spomky-Labs/pki-framework/issues", + "source": "https://github.com/Spomky-Labs/pki-framework/tree/1.1.0" }, - "time": "2019-03-08T08:55:37+00:00" + "funding": [ + { + "url": "https://github.com/Spomky", + "type": "github" + }, + { + "url": "https://www.patreon.com/FlorentMorselli", + "type": "patreon" + } + ], + "time": "2023-02-13T17:21:24+00:00" }, { - "name": "ramsey/collection", - "version": "2.0.0", + "name": "symfony/config", + "version": "v6.3.8", "source": { "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5" + "url": "https://github.com/symfony/config.git", + "reference": "b7a63887960359e5b59b15826fa9f9be10acbe88" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", - "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", + "url": "https://api.github.com/repos/symfony/config/zipball/b7a63887960359e5b59b15826fa9f9be10acbe88", + "reference": "b7a63887960359e5b59b15826fa9f9be10acbe88", "shasum": "" }, "require": { - "php": "^8.1" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/filesystem": "^5.4|^6.0", + "symfony/polyfill-ctype": "~1.8" }, - "require-dev": { - "captainhook/plugin-composer": "^5.3", - "ergebnis/composer-normalize": "^2.28.3", - "fakerphp/faker": "^1.21", - "hamcrest/hamcrest-php": "^2.0", - "jangregor/phpstan-prophecy": "^1.0", - "mockery/mockery": "^1.5", - "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" + "conflict": { + "symfony/finder": "<5.4", + "symfony/service-contracts": "<2.5" }, - "type": "library", - "extra": { - "captainhook": { - "force-install": true - }, - "ramsey/conventional-commits": { - "configFile": "conventional-commits.json" - } + "require-dev": { + "symfony/event-dispatcher": "^5.4|^6.0", + "symfony/finder": "^5.4|^6.0", + "symfony/messenger": "^5.4|^6.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^5.4|^6.0" }, + "type": "library", "autoload": { "psr-4": { - "Ramsey\\Collection\\": "src/" - } + "Symfony\\Component\\Config\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -6264,156 +8387,159 @@ ], "authors": [ { - "name": "Ben Ramsey", - "email": "ben@benramsey.com", - "homepage": "https://benramsey.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "A PHP library for representing and manipulating collections.", - "keywords": [ - "array", - "collection", - "hash", - "map", - "queue", - "set" - ], + "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/ramsey/collection/issues", - "source": "https://github.com/ramsey/collection/tree/2.0.0" + "source": "https://github.com/symfony/config/tree/v6.3.8" }, "funding": [ { - "url": "https://github.com/ramsey", + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2022-12-31T21:50:55+00:00" + "time": "2023-11-09T08:28:21+00:00" }, { - "name": "ramsey/uuid", - "version": "4.7.4", + "name": "symfony/console", + "version": "v5.4.31", "source": { "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "60a4c63ab724854332900504274f6150ff26d286" + "url": "https://github.com/symfony/console.git", + "reference": "11ac5f154e0e5c4c77af83ad11ead9165280b92a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/60a4c63ab724854332900504274f6150ff26d286", - "reference": "60a4c63ab724854332900504274f6150ff26d286", + "url": "https://api.github.com/repos/symfony/console/zipball/11ac5f154e0e5c4c77af83ad11ead9165280b92a", + "reference": "11ac5f154e0e5c4c77af83ad11ead9165280b92a", "shasum": "" }, "require": { - "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11", - "ext-json": "*", - "php": "^8.0", - "ramsey/collection": "^1.2 || ^2.0" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.1|^6.0" }, - "replace": { - "rhumsaa/uuid": "self.version" + "conflict": { + "psr/log": ">=3", + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", + "symfony/lock": "<4.4", + "symfony/process": "<4.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0" }, "require-dev": { - "captainhook/captainhook": "^5.10", - "captainhook/plugin-composer": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "doctrine/annotations": "^1.8", - "ergebnis/composer-normalize": "^2.15", - "mockery/mockery": "^1.3", - "paragonie/random-lib": "^2", - "php-mock/php-mock": "^2.2", - "php-mock/php-mock-mockery": "^1.3", - "php-parallel-lint/php-parallel-lint": "^1.1", - "phpbench/phpbench": "^1.0", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-mockery": "^1.1", - "phpstan/phpstan-phpunit": "^1.1", - "phpunit/phpunit": "^8.5 || ^9", - "ramsey/composer-repl": "^1.4", - "slevomat/coding-standard": "^8.4", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" + "psr/log": "^1|^2", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", - "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", - "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", - "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" }, "type": "library", - "extra": { - "captainhook": { - "force-install": true - } - }, "autoload": { - "files": [ - "src/functions.php" - ], "psr-4": { - "Ramsey\\Uuid\\": "src/" - } + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", "keywords": [ - "guid", - "identifier", - "uuid" + "cli", + "command-line", + "console", + "terminal" ], "support": { - "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.7.4" + "source": "https://github.com/symfony/console/tree/v5.4.31" }, "funding": [ { - "url": "https://github.com/ramsey", + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2023-04-15T23:01:58+00:00" + "time": "2023-10-31T07:58:33+00:00" }, { - "name": "react/promise", - "version": "v2.10.0", + "name": "symfony/css-selector", + "version": "v6.3.2", "source": { "type": "git", - "url": "https://github.com/reactphp/promise.git", - "reference": "f913fb8cceba1e6644b7b90c4bfb678ed8a3ef38" + "url": "https://github.com/symfony/css-selector.git", + "reference": "883d961421ab1709877c10ac99451632a3d6fa57" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/promise/zipball/f913fb8cceba1e6644b7b90c4bfb678ed8a3ef38", - "reference": "f913fb8cceba1e6644b7b90c4bfb678ed8a3ef38", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/883d961421ab1709877c10ac99451632a3d6fa57", + "reference": "883d961421ab1709877c10ac99451632a3d6fa57", "shasum": "" }, "require": { - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.36" + "php": ">=8.1" }, "type": "library", "autoload": { - "files": [ - "src/functions_include.php" - ], "psr-4": { - "React\\Promise\\": "src/" - } + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -6421,73 +8547,84 @@ ], "authors": [ { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" }, { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "A lightweight implementation of CommonJS Promises/A for PHP", - "keywords": [ - "promise", - "promises" - ], + "description": "Converts CSS selectors to XPath expressions", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/reactphp/promise/issues", - "source": "https://github.com/reactphp/promise/tree/v2.10.0" + "source": "https://github.com/symfony/css-selector/tree/v6.3.2" }, "funding": [ { - "url": "https://opencollective.com/reactphp", - "type": "open_collective" + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "time": "2023-05-02T15:15:43+00:00" + "time": "2023-07-12T16:00:22+00:00" }, { - "name": "sabberworm/php-css-parser", - "version": "8.4.0", + "name": "symfony/dependency-injection", + "version": "v6.3.8", "source": { "type": "git", - "url": "https://github.com/sabberworm/PHP-CSS-Parser.git", - "reference": "e41d2140031d533348b2192a83f02d8dd8a71d30" + "url": "https://github.com/symfony/dependency-injection.git", + "reference": "1f30f545c4151f611148fc19e28d54d39e0a00bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/e41d2140031d533348b2192a83f02d8dd8a71d30", - "reference": "e41d2140031d533348b2192a83f02d8dd8a71d30", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/1f30f545c4151f611148fc19e28d54d39e0a00bc", + "reference": "1f30f545c4151f611148fc19e28d54d39e0a00bc", "shasum": "" }, "require": { - "ext-iconv": "*", - "php": ">=5.6.20" + "php": ">=8.1", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/service-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^6.2.10" }, - "require-dev": { - "codacy/coverage": "^1.4", - "phpunit/phpunit": "^4.8.36" + "conflict": { + "ext-psr": "<1.1|>=2", + "symfony/config": "<6.1", + "symfony/finder": "<5.4", + "symfony/proxy-manager-bridge": "<6.3", + "symfony/yaml": "<5.4" }, - "suggest": { - "ext-mbstring": "for parsing UTF-8 CSS" + "provide": { + "psr/container-implementation": "1.1|2.0", + "symfony/service-implementation": "1.1|2.0|3.0" + }, + "require-dev": { + "symfony/config": "^6.1", + "symfony/expression-language": "^5.4|^6.0", + "symfony/yaml": "^5.4|^6.0" }, "type": "library", "autoload": { "psr-4": { - "Sabberworm\\CSS\\": "src/" - } + "Symfony\\Component\\DependencyInjection\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -6495,113 +8632,140 @@ ], "authors": [ { - "name": "Raphael Schweikert" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Parser for CSS Files written in PHP", - "homepage": "https://www.sabberworm.com/blog/2010/6/10/php-css-parser", - "keywords": [ - "css", - "parser", - "stylesheet" - ], + "description": "Allows you to standardize and centralize the way objects are constructed in your application", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/sabberworm/PHP-CSS-Parser/issues", - "source": "https://github.com/sabberworm/PHP-CSS-Parser/tree/8.4.0" + "source": "https://github.com/symfony/dependency-injection/tree/v6.3.8" }, - "time": "2021-12-11T13:40:54+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-10-31T08:07:48+00:00" }, { - "name": "seld/jsonlint", - "version": "1.10.0", + "name": "symfony/deprecation-contracts", + "version": "v3.4.0", "source": { "type": "git", - "url": "https://github.com/Seldaek/jsonlint.git", - "reference": "594fd6462aad8ecee0b45ca5045acea4776667f1" + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/594fd6462aad8ecee0b45ca5045acea4776667f1", - "reference": "594fd6462aad8ecee0b45ca5045acea4776667f1", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", "shasum": "" }, "require": { - "php": "^5.3 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^1.5", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^8.5.13" + "php": ">=8.1" }, - "bin": [ - "bin/jsonlint" - ], "type": "library", - "autoload": { - "psr-4": { - "Seld\\JsonLint\\": "src/Seld/JsonLint/" + "extra": { + "branch-alias": { + "dev-main": "3.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, + "autoload": { + "files": [ + "function.php" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "JSON Linter", - "keywords": [ - "json", - "linter", - "parser", - "validator" - ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/Seldaek/jsonlint/issues", - "source": "https://github.com/Seldaek/jsonlint/tree/1.10.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.4.0" }, "funding": [ { - "url": "https://github.com/Seldaek", + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/seld/jsonlint", + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2023-05-11T13:16:46+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { - "name": "seld/phar-utils", - "version": "1.2.1", + "name": "symfony/error-handler", + "version": "v6.3.5", "source": { "type": "git", - "url": "https://github.com/Seldaek/phar-utils.git", - "reference": "ea2f4014f163c1be4c601b9b7bd6af81ba8d701c" + "url": "https://github.com/symfony/error-handler.git", + "reference": "1f69476b64fb47105c06beef757766c376b548c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/ea2f4014f163c1be4c601b9b7bd6af81ba8d701c", - "reference": "ea2f4014f163c1be4c601b9b7bd6af81ba8d701c", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/1f69476b64fb47105c06beef757766c376b548c4", + "reference": "1f69476b64fb47105c06beef757766c376b548c4", "shasum": "" }, "require": { - "php": ">=5.3" + "php": ">=8.1", + "psr/log": "^1|^2|^3", + "symfony/var-dumper": "^5.4|^6.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } + "conflict": { + "symfony/deprecation-contracts": "<2.5" + }, + "require-dev": { + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/serializer": "^5.4|^6.0" }, + "bin": [ + "Resources/bin/patch-type-declarations" + ], + "type": "library", "autoload": { "psr-4": { - "Seld\\PharUtils\\": "src/" - } + "Symfony\\Component\\ErrorHandler\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -6609,55 +8773,79 @@ ], "authors": [ { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "PHAR file format utilities, for when PHP phars you up", - "keywords": [ - "phar" - ], + "description": "Provides tools to manage errors and ease debugging PHP code", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/Seldaek/phar-utils/issues", - "source": "https://github.com/Seldaek/phar-utils/tree/1.2.1" + "source": "https://github.com/symfony/error-handler/tree/v6.3.5" }, - "time": "2022-08-31T10:31:18+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-09-12T06:57:20+00:00" }, { - "name": "seld/signal-handler", - "version": "2.0.1", + "name": "symfony/event-dispatcher", + "version": "v6.3.2", "source": { "type": "git", - "url": "https://github.com/Seldaek/signal-handler.git", - "reference": "f69d119511dc0360440cdbdaa71829c149b7be75" + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/signal-handler/zipball/f69d119511dc0360440cdbdaa71829c149b7be75", - "reference": "f69d119511dc0360440cdbdaa71829c149b7be75", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/adb01fe097a4ee930db9258a3cc906b5beb5cf2e", + "reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e", "shasum": "" }, "require": { - "php": ">=7.2.0" + "php": ">=8.1", + "symfony/event-dispatcher-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/dependency-injection": "<5.4", + "symfony/service-contracts": "<2.5" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "2.0|3.0" }, "require-dev": { - "phpstan/phpstan": "^1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1", - "phpstan/phpstan-strict-rules": "^1.3", - "phpunit/phpunit": "^7.5.20 || ^8.5.23", - "psr/log": "^1 || ^2 || ^3" + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/error-handler": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^5.4|^6.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.x-dev" - } - }, "autoload": { "psr-4": { - "Seld\\Signal\\": "src/" - } + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -6665,60 +8853,66 @@ ], "authors": [ { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Simple unix signal handler that silently fails where signals are not supported for easy cross-platform development", - "keywords": [ - "posix", - "sigint", - "signal", - "sigterm", - "unix" + "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/event-dispatcher/tree/v6.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } ], - "support": { - "issues": "https://github.com/Seldaek/signal-handler/issues", - "source": "https://github.com/Seldaek/signal-handler/tree/2.0.1" - }, - "time": "2022-07-20T18:31:45+00:00" + "time": "2023-07-06T06:56:43+00:00" }, { - "name": "spomky-labs/aes-key-wrap", - "version": "v7.0.0", + "name": "symfony/event-dispatcher-contracts", + "version": "v3.4.0", "source": { "type": "git", - "url": "https://github.com/Spomky-Labs/aes-key-wrap.git", - "reference": "fbeb834b1f83aa8fbdfbd4c12124f71d4c1606ae" + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "a76aed96a42d2b521153fb382d418e30d18b59df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Spomky-Labs/aes-key-wrap/zipball/fbeb834b1f83aa8fbdfbd4c12124f71d4c1606ae", - "reference": "fbeb834b1f83aa8fbdfbd4c12124f71d4c1606ae", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df", + "reference": "a76aed96a42d2b521153fb382d418e30d18b59df", "shasum": "" }, "require": { - "ext-mbstring": "*", - "ext-openssl": "*", - "php": ">=8.0" - }, - "require-dev": { - "infection/infection": "^0.25.4", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.0", - "phpstan/phpstan-beberlei-assert": "^1.0", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "phpstan/phpstan-strict-rules": "^1.0", - "phpunit/phpunit": "^9.0", - "rector/rector": "^0.12.5", - "symplify/easy-coding-standard": "^10.0" + "php": ">=8.1", + "psr/event-dispatcher": "^1" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, "autoload": { "psr-4": { - "AESKW\\": "src/" + "Symfony\\Contracts\\EventDispatcher\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -6727,87 +8921,70 @@ ], "authors": [ { - "name": "Florent Morselli", - "homepage": "https://github.com/Spomky-Labs/aes-key-wrap/contributors" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "AES Key Wrap for PHP.", - "homepage": "https://github.com/Spomky-Labs/aes-key-wrap", + "description": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", "keywords": [ - "A128KW", - "A192KW", - "A256KW", - "RFC3394", - "RFC5649", - "aes", - "key", - "padding", - "wrap" + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" ], "support": { - "issues": "https://github.com/Spomky-Labs/aes-key-wrap/issues", - "source": "https://github.com/Spomky-Labs/aes-key-wrap/tree/v7.0.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.0" }, "funding": [ { - "url": "https://github.com/Spomky", + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", "type": "github" }, { - "url": "https://www.patreon.com/FlorentMorselli", - "type": "patreon" + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "time": "2021-12-08T20:36:59+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { - "name": "spomky-labs/pki-framework", - "version": "1.1.0", + "name": "symfony/filesystem", + "version": "v6.3.1", "source": { "type": "git", - "url": "https://github.com/Spomky-Labs/pki-framework.git", - "reference": "d3ba688bf40e7c6e0dabf065ee18fc210734e760" + "url": "https://github.com/symfony/filesystem.git", + "reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Spomky-Labs/pki-framework/zipball/d3ba688bf40e7c6e0dabf065ee18fc210734e760", - "reference": "d3ba688bf40e7c6e0dabf065ee18fc210734e760", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/edd36776956f2a6fcf577edb5b05eb0e3bdc52ae", + "reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae", "shasum": "" }, "require": { - "brick/math": "^0.10 || ^0.11", - "ext-mbstring": "*", - "php": ">=8.1" - }, - "require-dev": { - "ekino/phpstan-banned-code": "^1.0", - "ext-gmp": "*", - "ext-openssl": "*", - "infection/infection": "^0.26", - "php-parallel-lint/php-parallel-lint": "^1.3", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-beberlei-assert": "^1.0", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.1", - "phpstan/phpstan-strict-rules": "^1.3", - "phpunit/phpunit": "^10.0", - "rector/rector": "^0.15", - "roave/security-advisories": "dev-latest", - "symfony/phpunit-bridge": "^6.1", - "symfony/var-dumper": "^6.1", - "symplify/easy-coding-standard": "^11.1", - "thecodingmachine/phpstan-safe-rule": "^1.2" - }, - "suggest": { - "ext-bcmath": "For better performance (or GMP)", - "ext-gmp": "For better performance (or BCMath)", - "ext-openssl": "For OpenSSL based cyphering" + "php": ">=8.1", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8" }, "type": "library", "autoload": { "psr-4": { - "SpomkyLabs\\Pki\\": "src/" - } + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -6815,96 +8992,58 @@ ], "authors": [ { - "name": "Joni Eskelinen", - "email": "jonieske@gmail.com", - "role": "Original developer" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { - "name": "Florent Morselli", - "email": "florent.morselli@spomky-labs.com", - "role": "Spomky-Labs PKI Framework developer" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "A PHP framework for managing Public Key Infrastructures. It comprises X.509 public key certificates, attribute certificates, certification requests and certification path validation.", - "homepage": "https://github.com/spomky-labs/pki-framework", - "keywords": [ - "DER", - "Private Key", - "ac", - "algorithm identifier", - "asn.1", - "asn1", - "attribute certificate", - "certificate", - "certification request", - "cryptography", - "csr", - "decrypt", - "ec", - "encrypt", - "pem", - "pkcs", - "public key", - "rsa", - "sign", - "signature", - "verify", - "x.509", - "x.690", - "x509", - "x690" - ], + "description": "Provides basic utilities for the filesystem", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/Spomky-Labs/pki-framework/issues", - "source": "https://github.com/Spomky-Labs/pki-framework/tree/1.1.0" + "source": "https://github.com/symfony/filesystem/tree/v6.3.1" }, "funding": [ { - "url": "https://github.com/Spomky", + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", "type": "github" }, { - "url": "https://www.patreon.com/FlorentMorselli", - "type": "patreon" + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "time": "2023-02-13T17:21:24+00:00" + "time": "2023-06-01T08:30:39+00:00" }, { - "name": "symfony/config", - "version": "v6.3.2", + "name": "symfony/finder", + "version": "v5.4.27", "source": { "type": "git", - "url": "https://github.com/symfony/config.git", - "reference": "b47ca238b03e7b0d7880ffd1cf06e8d637ca1467" + "url": "https://github.com/symfony/finder.git", + "reference": "ff4bce3c33451e7ec778070e45bd23f74214cd5d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/b47ca238b03e7b0d7880ffd1cf06e8d637ca1467", - "reference": "b47ca238b03e7b0d7880ffd1cf06e8d637ca1467", + "url": "https://api.github.com/repos/symfony/finder/zipball/ff4bce3c33451e7ec778070e45bd23f74214cd5d", + "reference": "ff4bce3c33451e7ec778070e45bd23f74214cd5d", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/filesystem": "^5.4|^6.0", - "symfony/polyfill-ctype": "~1.8" - }, - "conflict": { - "symfony/finder": "<5.4", - "symfony/service-contracts": "<2.5" - }, - "require-dev": { - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/messenger": "^5.4|^6.0", - "symfony/service-contracts": "^2.5|^3", - "symfony/yaml": "^5.4|^6.0" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php80": "^1.16" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Config\\": "" + "Symfony\\Component\\Finder\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -6924,10 +9063,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", + "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v6.3.2" + "source": "https://github.com/symfony/finder/tree/v5.4.27" }, "funding": [ { @@ -6943,61 +9082,45 @@ "type": "tidelift" } ], - "time": "2023-07-19T20:22:16+00:00" + "time": "2023-07-31T08:02:31+00:00" }, { - "name": "symfony/console", - "version": "v5.4.28", + "name": "symfony/http-foundation", + "version": "v6.3.8", "source": { "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "f4f71842f24c2023b91237c72a365306f3c58827" + "url": "https://github.com/symfony/http-foundation.git", + "reference": "ce332676de1912c4389222987193c3ef38033df6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/f4f71842f24c2023b91237c72a365306f3c58827", - "reference": "f4f71842f24c2023b91237c72a365306f3c58827", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ce332676de1912c4389222987193c3ef38033df6", + "reference": "ce332676de1912c4389222987193c3ef38033df6", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.9", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.1|^6.0" - }, - "conflict": { - "psr/log": ">=3", - "symfony/dependency-injection": "<4.4", - "symfony/dotenv": "<5.1", - "symfony/event-dispatcher": "<4.4", - "symfony/lock": "<4.4", - "symfony/process": "<4.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0" - }, - "require-dev": { - "psr/log": "^1|^2", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/event-dispatcher": "^4.4|^5.0|^6.0", - "symfony/lock": "^4.4|^5.0|^6.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/var-dumper": "^4.4|^5.0|^6.0" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php83": "^1.27" }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" + "conflict": { + "symfony/cache": "<6.3" + }, + "require-dev": { + "doctrine/dbal": "^2.13.1|^3|^4", + "predis/predis": "^1.1|^2.0", + "symfony/cache": "^6.3", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4", + "symfony/mime": "^5.4|^6.0", + "symfony/rate-limiter": "^5.2|^6.0" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Console\\": "" + "Symfony\\Component\\HttpFoundation\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -7017,16 +9140,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Eases the creation of beautiful and testable command line interfaces", + "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", - "keywords": [ - "cli", - "command-line", - "console", - "terminal" - ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.28" + "source": "https://github.com/symfony/http-foundation/tree/v6.3.8" }, "funding": [ { @@ -7042,29 +9159,81 @@ "type": "tidelift" } ], - "time": "2023-08-07T06:12:30+00:00" + "time": "2023-11-07T10:17:15+00:00" }, { - "name": "symfony/css-selector", - "version": "v6.3.2", + "name": "symfony/http-kernel", + "version": "v6.3.8", "source": { "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "883d961421ab1709877c10ac99451632a3d6fa57" + "url": "https://github.com/symfony/http-kernel.git", + "reference": "929202375ccf44a309c34aeca8305408442ebcc1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/883d961421ab1709877c10ac99451632a3d6fa57", - "reference": "883d961421ab1709877c10ac99451632a3d6fa57", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/929202375ccf44a309c34aeca8305408442ebcc1", + "reference": "929202375ccf44a309c34aeca8305408442ebcc1", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.1", + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.3", + "symfony/event-dispatcher": "^5.4|^6.0", + "symfony/http-foundation": "^6.3.4", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/browser-kit": "<5.4", + "symfony/cache": "<5.4", + "symfony/config": "<6.1", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<6.3.4", + "symfony/doctrine-bridge": "<5.4", + "symfony/form": "<5.4", + "symfony/http-client": "<5.4", + "symfony/http-client-contracts": "<2.5", + "symfony/mailer": "<5.4", + "symfony/messenger": "<5.4", + "symfony/translation": "<5.4", + "symfony/translation-contracts": "<2.5", + "symfony/twig-bridge": "<5.4", + "symfony/validator": "<5.4", + "symfony/var-dumper": "<6.3", + "twig/twig": "<2.13" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/cache": "^1.0|^2.0|^3.0", + "symfony/browser-kit": "^5.4|^6.0", + "symfony/clock": "^6.2", + "symfony/config": "^6.1", + "symfony/console": "^5.4|^6.0", + "symfony/css-selector": "^5.4|^6.0", + "symfony/dependency-injection": "^6.3.4", + "symfony/dom-crawler": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/finder": "^5.4|^6.0", + "symfony/http-client-contracts": "^2.5|^3", + "symfony/process": "^5.4|^6.0", + "symfony/property-access": "^5.4.5|^6.0.5", + "symfony/routing": "^5.4|^6.0", + "symfony/serializer": "^6.3", + "symfony/stopwatch": "^5.4|^6.0", + "symfony/translation": "^5.4|^6.0", + "symfony/translation-contracts": "^2.5|^3", + "symfony/uid": "^5.4|^6.0", + "symfony/validator": "^6.3", + "symfony/var-exporter": "^6.2", + "twig/twig": "^2.13|^3.0.4" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\CssSelector\\": "" + "Symfony\\Component\\HttpKernel\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -7079,19 +9248,15 @@ "name": "Fabien Potencier", "email": "fabien@symfony.com" }, - { - "name": "Jean-François Simon", - "email": "jeanfrancois.simon@sensiolabs.com" - }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Converts CSS selectors to XPath expressions", + "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v6.3.2" + "source": "https://github.com/symfony/http-kernel/tree/v6.3.8" }, "funding": [ { @@ -7107,50 +9272,42 @@ "type": "tidelift" } ], - "time": "2023-07-12T16:00:22+00:00" + "time": "2023-11-10T13:47:32+00:00" }, { - "name": "symfony/dependency-injection", - "version": "v6.3.4", + "name": "symfony/intl", + "version": "v5.4.30", "source": { "type": "git", - "url": "https://github.com/symfony/dependency-injection.git", - "reference": "68a5a9570806a087982f383f6109c5e925892a49" + "url": "https://github.com/symfony/intl.git", + "reference": "cd6cce16151ac871071a3495e7a325460b952b5a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/68a5a9570806a087982f383f6109c5e925892a49", - "reference": "68a5a9570806a087982f383f6109c5e925892a49", + "url": "https://api.github.com/repos/symfony/intl/zipball/cd6cce16151ac871071a3495e7a325460b952b5a", + "reference": "cd6cce16151ac871071a3495e7a325460b952b5a", "shasum": "" }, "require": { - "php": ">=8.1", - "psr/container": "^1.1|^2.0", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/service-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^6.2.10" - }, - "conflict": { - "ext-psr": "<1.1|>=2", - "symfony/config": "<6.1", - "symfony/finder": "<5.4", - "symfony/proxy-manager-bridge": "<6.3", - "symfony/yaml": "<5.4" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "symfony/service-implementation": "1.1|2.0|3.0" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php80": "^1.16" }, "require-dev": { - "symfony/config": "^6.1", - "symfony/expression-language": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" + "symfony/filesystem": "^4.4|^5.0|^6.0", + "symfony/var-exporter": "^5.4|^6.0" }, "type": "library", "autoload": { + "files": [ + "Resources/functions.php" + ], "psr-4": { - "Symfony\\Component\\DependencyInjection\\": "" + "Symfony\\Component\\Intl\\": "" }, + "classmap": [ + "Resources/stubs" + ], "exclude-from-classmap": [ "/Tests/" ] @@ -7161,18 +9318,34 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + }, + { + "name": "Eriksen Costa", + "email": "eriksen.costa@infranology.com.br" + }, + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Allows you to standardize and centralize the way objects are constructed in your application", + "description": "Provides a PHP replacement layer for the C intl extension that includes additional data from the ICU library", "homepage": "https://symfony.com", + "keywords": [ + "i18n", + "icu", + "internationalization", + "intl", + "l10n", + "localization" + ], "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v6.3.4" + "source": "https://github.com/symfony/intl/tree/v5.4.30" }, "funding": [ { @@ -7188,39 +9361,48 @@ "type": "tidelift" } ], - "time": "2023-08-16T17:55:17+00:00" + "time": "2023-10-28T09:19:54+00:00" }, { - "name": "symfony/deprecation-contracts", - "version": "v3.3.0", + "name": "symfony/polyfill-ctype", + "version": "v1.28.0", "source": { "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", - "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.4-dev" + "dev-main": "1.28-dev" }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { "files": [ - "function.php" - ] + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -7228,18 +9410,24 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "A generic function and convention to trigger deprecation notices", + "description": "Symfony polyfill for ctype functions", "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.3.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" }, "funding": [ { @@ -7255,46 +9443,45 @@ "type": "tidelift" } ], - "time": "2023-05-23T14:45:45+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { - "name": "symfony/error-handler", - "version": "v6.3.2", + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.28.0", "source": { "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "85fd65ed295c4078367c784e8a5a6cee30348b7a" + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "875e90aeea2777b6f135677f618529449334a612" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/85fd65ed295c4078367c784e8a5a6cee30348b7a", - "reference": "85fd65ed295c4078367c784e8a5a6cee30348b7a", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612", + "reference": "875e90aeea2777b6f135677f618529449334a612", "shasum": "" }, "require": { - "php": ">=8.1", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "conflict": { - "symfony/deprecation-contracts": "<2.5" + "php": ">=7.1" }, - "require-dev": { - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" + "suggest": { + "ext-intl": "For best performance" }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -7302,18 +9489,26 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Provides tools to manage errors and ease debugging PHP code", + "description": "Symfony polyfill for intl's grapheme_* functions", "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.3.2" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0" }, "funding": [ { @@ -7329,52 +9524,47 @@ "type": "tidelift" } ], - "time": "2023-07-16T17:05:46+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { - "name": "symfony/event-dispatcher", - "version": "v6.3.2", + "name": "symfony/polyfill-intl-idn", + "version": "v1.28.0", "source": { "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e" + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "ecaafce9f77234a6a449d29e49267ba10499116d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/adb01fe097a4ee930db9258a3cc906b5beb5cf2e", - "reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/ecaafce9f77234a6a449d29e49267ba10499116d", + "reference": "ecaafce9f77234a6a449d29e49267ba10499116d", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/event-dispatcher-contracts": "^2.5|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/service-contracts": "<2.5" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" + "php": ">=7.1", + "symfony/polyfill-intl-normalizer": "^1.10", + "symfony/polyfill-php72": "^1.10" }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^2.5|^3", - "symfony/stopwatch": "^5.4|^6.0" + "suggest": { + "ext-intl": "For best performance" }, "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" }, - "exclude-from-classmap": [ - "/Tests/" - ] + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -7382,18 +9572,30 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + }, + { + "name": "Trevor Rowbotham", + "email": "trevor.rowbotham@pm.me" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" + ], "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.3.2" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.28.0" }, "funding": [ { @@ -7409,40 +9611,48 @@ "type": "tidelift" } ], - "time": "2023-07-06T06:56:43+00:00" + "time": "2023-01-26T09:30:37+00:00" }, { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.3.0", + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.28.0", "source": { "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "a76aed96a42d2b521153fb382d418e30d18b59df" + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df", - "reference": "a76aed96a42d2b521153fb382d418e30d18b59df", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", "shasum": "" }, "require": { - "php": ">=8.1", - "psr/event-dispatcher": "^1" + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.4-dev" + "dev-main": "1.28-dev" }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Contracts\\EventDispatcher\\": "" - } + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -7458,18 +9668,18 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Generic abstractions related to dispatching event", + "description": "Symfony polyfill for intl's Normalizer class and related functions", "homepage": "https://symfony.com", "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.3.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0" }, "funding": [ { @@ -7485,35 +9695,48 @@ "type": "tidelift" } ], - "time": "2023-05-23T14:45:45+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { - "name": "symfony/filesystem", - "version": "v6.3.1", + "name": "symfony/polyfill-mbstring", + "version": "v1.28.0", "source": { "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae" + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "42292d99c55abe617799667f454222c54c60e229" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/edd36776956f2a6fcf577edb5b05eb0e3bdc52ae", - "reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", + "reference": "42292d99c55abe617799667f454222c54c60e229", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.8" + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Component\\Filesystem\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Polyfill\\Mbstring\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -7521,18 +9744,25 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Provides basic utilities for the filesystem", + "description": "Symfony polyfill for the Mbstring extension", "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.3.1" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" }, "funding": [ { @@ -7548,35 +9778,42 @@ "type": "tidelift" } ], - "time": "2023-06-01T08:30:39+00:00" + "time": "2023-07-28T09:04:16+00:00" }, { - "name": "symfony/finder", - "version": "v5.4.27", + "name": "symfony/polyfill-php72", + "version": "v1.28.0", "source": { "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "ff4bce3c33451e7ec778070e45bd23f74214cd5d" + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/ff4bce3c33451e7ec778070e45bd23f74214cd5d", - "reference": "ff4bce3c33451e7ec778070e45bd23f74214cd5d", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/70f4aebd92afca2f865444d30a4d2151c13c3179", + "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16" + "php": ">=7.1" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Component\\Finder\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Polyfill\\Php72\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -7584,18 +9821,24 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Finds files and directories via an intuitive fluent interface", + "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], "support": { - "source": "https://github.com/symfony/finder/tree/v5.4.27" + "source": "https://github.com/symfony/polyfill-php72/tree/v1.28.0" }, "funding": [ { @@ -7611,48 +9854,44 @@ "type": "tidelift" } ], - "time": "2023-07-31T08:02:31+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { - "name": "symfony/http-foundation", - "version": "v6.3.4", + "name": "symfony/polyfill-php73", + "version": "v1.28.0", "source": { "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "cac1556fdfdf6719668181974104e6fcfa60e844" + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "fe2f306d1d9d346a7fee353d0d5012e401e984b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/cac1556fdfdf6719668181974104e6fcfa60e844", - "reference": "cac1556fdfdf6719668181974104e6fcfa60e844", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fe2f306d1d9d346a7fee353d0d5012e401e984b5", + "reference": "fe2f306d1d9d346a7fee353d0d5012e401e984b5", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-mbstring": "~1.1", - "symfony/polyfill-php83": "^1.27" - }, - "conflict": { - "symfony/cache": "<6.2" - }, - "require-dev": { - "doctrine/dbal": "^2.13.1|^3.0", - "predis/predis": "^1.1|^2.0", - "symfony/cache": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4", - "symfony/mime": "^5.4|^6.0", - "symfony/rate-limiter": "^5.2|^6.0" + "php": ">=7.1" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Component\\HttpFoundation\\": "" + "Symfony\\Polyfill\\Php73\\": "" }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -7661,18 +9900,24 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Defines an object-oriented layer for the HTTP specification", + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.3.4" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.28.0" }, "funding": [ { @@ -7688,83 +9933,44 @@ "type": "tidelift" } ], - "time": "2023-08-22T08:20:46+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { - "name": "symfony/http-kernel", - "version": "v6.2.14", + "name": "symfony/polyfill-php80", + "version": "v1.28.0", "source": { "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "d05cebbc07478d37ff1e0f0079f06298a096b870" + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/d05cebbc07478d37ff1e0f0079f06298a096b870", - "reference": "d05cebbc07478d37ff1e0f0079f06298a096b870", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5", + "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5", "shasum": "" }, "require": { - "php": ">=8.1", - "psr/log": "^1|^2|^3", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/error-handler": "^6.1", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4.21|^6.2.7", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<6.1", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<6.2", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^6.1", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^6.2", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "symfony/uid": "^5.4|^6.0", - "symfony/var-exporter": "^6.2", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" + "php": ">=7.1" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Component\\HttpKernel\\": "" + "Symfony\\Polyfill\\Php80\\": "" }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -7773,18 +9979,28 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Provides a structured process for converting a Request into a Response", + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.2.14" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0" }, "funding": [ { @@ -7800,44 +10016,44 @@ "type": "tidelift" } ], - "time": "2023-07-31T10:40:35+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { - "name": "symfony/intl", - "version": "v5.4.26", + "name": "symfony/polyfill-php81", + "version": "v1.28.0", "source": { "type": "git", - "url": "https://github.com/symfony/intl.git", - "reference": "c26c40b64ecdc056810e294ea67ac5b34182cd69" + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/intl/zipball/c26c40b64ecdc056810e294ea67ac5b34182cd69", - "reference": "c26c40b64ecdc056810e294ea67ac5b34182cd69", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16" + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/7581cd600fa9fd681b797d00b02f068e2f13263b", + "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b", + "shasum": "" }, - "require-dev": { - "symfony/filesystem": "^4.4|^5.0|^6.0", - "symfony/var-exporter": "^5.4|^6.0" + "require": { + "php": ">=7.1" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { "files": [ - "Resources/functions.php" + "bootstrap.php" ], "psr-4": { - "Symfony\\Component\\Intl\\": "" + "Symfony\\Polyfill\\Php81\\": "" }, "classmap": [ "Resources/stubs" - ], - "exclude-from-classmap": [ - "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -7846,34 +10062,24 @@ ], "authors": [ { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - }, - { - "name": "Eriksen Costa", - "email": "eriksen.costa@infranology.com.br" - }, - { - "name": "Igor Wiedler", - "email": "igor@wiedler.ch" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Provides a PHP replacement layer for the C intl extension that includes additional data from the ICU library", + "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ - "i18n", - "icu", - "internationalization", - "intl", - "l10n", - "localization" + "compatibility", + "polyfill", + "portable", + "shim" ], "support": { - "source": "https://github.com/symfony/intl/tree/v5.4.26" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.28.0" }, "funding": [ { @@ -7889,78 +10095,45 @@ "type": "tidelift" } ], - "time": "2023-07-13T09:02:54+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { - "name": "symfony/polyfill", + "name": "symfony/polyfill-php83", "version": "v1.28.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill.git", - "reference": "33def419104fb3cf14be4e8638683eb9845c2522" + "url": "https://github.com/symfony/polyfill-php83.git", + "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill/zipball/33def419104fb3cf14be4e8638683eb9845c2522", - "reference": "33def419104fb3cf14be4e8638683eb9845c2522", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11", + "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11", "shasum": "" }, "require": { - "php": ">=7.1" - }, - "replace": { - "symfony/polyfill-apcu": "self.version", - "symfony/polyfill-ctype": "self.version", - "symfony/polyfill-iconv": "self.version", - "symfony/polyfill-intl-grapheme": "self.version", - "symfony/polyfill-intl-icu": "self.version", - "symfony/polyfill-intl-idn": "self.version", - "symfony/polyfill-intl-messageformatter": "self.version", - "symfony/polyfill-intl-normalizer": "self.version", - "symfony/polyfill-mbstring": "self.version", - "symfony/polyfill-php72": "self.version", - "symfony/polyfill-php73": "self.version", - "symfony/polyfill-php74": "self.version", - "symfony/polyfill-php80": "self.version", - "symfony/polyfill-php81": "self.version", - "symfony/polyfill-php82": "self.version", - "symfony/polyfill-php83": "self.version", - "symfony/polyfill-util": "self.version", - "symfony/polyfill-uuid": "self.version", - "symfony/polyfill-xml": "self.version" - }, - "require-dev": { - "symfony/intl": "^4.4|^5.0|^6.0", - "symfony/phpunit-bridge": "^5.3|^6.0", - "symfony/var-dumper": "^4.4|^5.1|^6.0" + "php": ">=7.1", + "symfony/polyfill-php80": "^1.14" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { "files": [ - "src/bootstrap.php", - "src/Apcu/bootstrap.php", - "src/Ctype/bootstrap.php", - "src/Uuid/bootstrap.php", - "src/Iconv/bootstrap.php", - "src/Intl/Grapheme/bootstrap.php", - "src/Intl/Idn/bootstrap.php", - "src/Intl/Icu/bootstrap.php", - "src/Intl/MessageFormatter/bootstrap.php", - "src/Intl/Normalizer/bootstrap.php", - "src/Mbstring/bootstrap.php" + "bootstrap.php" ], "psr-4": { - "Symfony\\Polyfill\\": "src/" + "Symfony\\Polyfill\\Php83\\": "" }, "classmap": [ - "src/Intl/Icu/Resources/stubs", - "src/Intl/MessageFormatter/Resources/stubs", - "src/Intl/Normalizer/Resources/stubs", - "src/Php83/Resources/stubs", - "src/Php82/Resources/stubs", - "src/Php81/Resources/stubs", - "src/Php80/Resources/stubs", - "src/Php73/Resources/stubs" + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -7977,17 +10150,16 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfills backporting features to lower PHP versions", + "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ - "compat", "compatibility", "polyfill", + "portable", "shim" ], "support": { - "issues": "https://github.com/symfony/polyfill/issues", - "source": "https://github.com/symfony/polyfill/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-php83/tree/v1.28.0" }, "funding": [ { @@ -8003,7 +10175,7 @@ "type": "tidelift" } ], - "time": "2023-08-25T17:27:34+00:00" + "time": "2023-08-16T06:22:46+00:00" }, { "name": "symfony/process", @@ -8152,16 +10324,16 @@ }, { "name": "symfony/string", - "version": "v5.4.26", + "version": "v5.4.31", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "1181fe9270e373537475e826873b5867b863883c" + "reference": "2765096c03f39ddf54f6af532166e42aaa05b24b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/1181fe9270e373537475e826873b5867b863883c", - "reference": "1181fe9270e373537475e826873b5867b863883c", + "url": "https://api.github.com/repos/symfony/string/zipball/2765096c03f39ddf54f6af532166e42aaa05b24b", + "reference": "2765096c03f39ddf54f6af532166e42aaa05b24b", "shasum": "" }, "require": { @@ -8218,7 +10390,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.4.26" + "source": "https://github.com/symfony/string/tree/v5.4.31" }, "funding": [ { @@ -8234,20 +10406,20 @@ "type": "tidelift" } ], - "time": "2023-06-28T12:46:07+00:00" + "time": "2023-11-09T08:19:44+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.3.4", + "version": "v6.3.8", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "2027be14f8ae8eae999ceadebcda5b4909b81d45" + "reference": "81acabba9046550e89634876ca64bfcd3c06aa0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/2027be14f8ae8eae999ceadebcda5b4909b81d45", - "reference": "2027be14f8ae8eae999ceadebcda5b4909b81d45", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/81acabba9046550e89634876ca64bfcd3c06aa0a", + "reference": "81acabba9046550e89634876ca64bfcd3c06aa0a", "shasum": "" }, "require": { @@ -8302,7 +10474,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.3.4" + "source": "https://github.com/symfony/var-dumper/tree/v6.3.8" }, "funding": [ { @@ -8318,20 +10490,20 @@ "type": "tidelift" } ], - "time": "2023-08-24T14:51:05+00:00" + "time": "2023-11-08T10:42:36+00:00" }, { "name": "symfony/var-exporter", - "version": "v6.3.4", + "version": "v6.3.6", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "df1f8aac5751871b83d30bf3e2c355770f8f0691" + "reference": "374d289c13cb989027274c86206ddc63b16a2441" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/df1f8aac5751871b83d30bf3e2c355770f8f0691", - "reference": "df1f8aac5751871b83d30bf3e2c355770f8f0691", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/374d289c13cb989027274c86206ddc63b16a2441", + "reference": "374d289c13cb989027274c86206ddc63b16a2441", "shasum": "" }, "require": { @@ -8376,7 +10548,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v6.3.4" + "source": "https://github.com/symfony/var-exporter/tree/v6.3.6" }, "funding": [ { @@ -8392,20 +10564,20 @@ "type": "tidelift" } ], - "time": "2023-08-16T18:14:47+00:00" + "time": "2023-10-13T09:16:49+00:00" }, { "name": "tedivm/jshrink", - "version": "v1.6.8", + "version": "v1.7.0", "source": { "type": "git", "url": "https://github.com/tedious/JShrink.git", - "reference": "35a83e0ab661d6130da5930c0c4eafcc663b8cec" + "reference": "7a35f5a4651ca2ce77295eb8a3b4e133ba47e19e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tedious/JShrink/zipball/35a83e0ab661d6130da5930c0c4eafcc663b8cec", - "reference": "35a83e0ab661d6130da5930c0c4eafcc663b8cec", + "url": "https://api.github.com/repos/tedious/JShrink/zipball/7a35f5a4651ca2ce77295eb8a3b4e133ba47e19e", + "reference": "7a35f5a4651ca2ce77295eb8a3b4e133ba47e19e", "shasum": "" }, "require": { @@ -8440,7 +10612,7 @@ ], "support": { "issues": "https://github.com/tedious/JShrink/issues", - "source": "https://github.com/tedious/JShrink/tree/v1.6.8" + "source": "https://github.com/tedious/JShrink/tree/v1.7.0" }, "funding": [ { @@ -8452,7 +10624,7 @@ "type": "tidelift" } ], - "time": "2023-06-20T13:32:15+00:00" + "time": "2023-10-04T17:23:23+00:00" }, { "name": "tubalmartin/cssmin", @@ -8843,16 +11015,16 @@ }, { "name": "webonyx/graphql-php", - "version": "v15.6.2", + "version": "v15.8.0", "source": { "type": "git", "url": "https://github.com/webonyx/graphql-php.git", - "reference": "0a917058620a197530b357c46d8d5943a054a37e" + "reference": "329315936f5af9b4c3f798f5d1afef72f3da0312" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/0a917058620a197530b357c46d8d5943a054a37e", - "reference": "0a917058620a197530b357c46d8d5943a054a37e", + "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/329315936f5af9b4c3f798f5d1afef72f3da0312", + "reference": "329315936f5af9b4c3f798f5d1afef72f3da0312", "shasum": "" }, "require": { @@ -8865,18 +11037,19 @@ "amphp/http-server": "^2.1", "dms/phpunit-arraysubset-asserts": "dev-master", "ergebnis/composer-normalize": "^2.28", + "friendsofphp/php-cs-fixer": "3.30.0", "mll-lab/php-cs-fixer-config": "^5", "nyholm/psr7": "^1.5", "phpbench/phpbench": "^1.2", "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "1.10.28", - "phpstan/phpstan-phpunit": "1.3.13", - "phpstan/phpstan-strict-rules": "1.5.1", + "phpstan/phpstan": "1.10.41", + "phpstan/phpstan-phpunit": "1.3.15", + "phpstan/phpstan-strict-rules": "1.5.2", "phpunit/phpunit": "^9.5 || ^10", "psr/http-message": "^1 || ^2", "react/http": "^1.6", "react/promise": "^2.9", - "rector/rector": "^0.17", + "rector/rector": "^0.18", "symfony/polyfill-php81": "^1.23", "symfony/var-exporter": "^5 || ^6", "thecodingmachine/safe": "^1.3 || ^2" @@ -8904,7 +11077,7 @@ ], "support": { "issues": "https://github.com/webonyx/graphql-php/issues", - "source": "https://github.com/webonyx/graphql-php/tree/v15.6.2" + "source": "https://github.com/webonyx/graphql-php/tree/v15.8.0" }, "funding": [ { @@ -8912,7 +11085,7 @@ "type": "open_collective" } ], - "time": "2023-08-08T17:15:12+00:00" + "time": "2023-11-14T15:30:40+00:00" }, { "name": "wikimedia/less.php", @@ -9196,73 +11369,6 @@ }, "time": "2023-01-12T14:27:20+00:00" }, - { - "name": "beberlei/assert", - "version": "v3.3.2", - "source": { - "type": "git", - "url": "https://github.com/beberlei/assert.git", - "reference": "cb70015c04be1baee6f5f5c953703347c0ac1655" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/beberlei/assert/zipball/cb70015c04be1baee6f5f5c953703347c0ac1655", - "reference": "cb70015c04be1baee6f5f5c953703347c0ac1655", - "shasum": "" - }, - "require": { - "ext-ctype": "*", - "ext-json": "*", - "ext-mbstring": "*", - "ext-simplexml": "*", - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "*", - "phpstan/phpstan": "*", - "phpunit/phpunit": ">=6.0.0", - "yoast/phpunit-polyfills": "^0.1.0" - }, - "suggest": { - "ext-intl": "Needed to allow Assertion::count(), Assertion::isCountable(), Assertion::minCount(), and Assertion::maxCount() to operate on ResourceBundles" - }, - "type": "library", - "autoload": { - "files": [ - "lib/Assert/functions.php" - ], - "psr-4": { - "Assert\\": "lib/Assert" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-2-Clause" - ], - "authors": [ - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de", - "role": "Lead Developer" - }, - { - "name": "Richard Quadling", - "email": "rquadling@gmail.com", - "role": "Collaborator" - } - ], - "description": "Thin assertion library for input validation in business models.", - "keywords": [ - "assert", - "assertion", - "validation" - ], - "support": { - "issues": "https://github.com/beberlei/assert/issues", - "source": "https://github.com/beberlei/assert/tree/v3.3.2" - }, - "time": "2021-12-16T21:41:27+00:00" - }, { "name": "behat/gherkin", "version": "v4.9.0", @@ -9328,16 +11434,16 @@ }, { "name": "codeception/codeception", - "version": "5.0.11", + "version": "5.0.12", "source": { "type": "git", "url": "https://github.com/Codeception/Codeception.git", - "reference": "1998a287a3d7f2771c9591aef1c528d9d44cc4b4" + "reference": "7f528f5fd8cdcd05cd0a85eb1e24d05df989e0c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/Codeception/zipball/1998a287a3d7f2771c9591aef1c528d9d44cc4b4", - "reference": "1998a287a3d7f2771c9591aef1c528d9d44cc4b4", + "url": "https://api.github.com/repos/Codeception/Codeception/zipball/7f528f5fd8cdcd05cd0a85eb1e24d05df989e0c4", + "reference": "7f528f5fd8cdcd05cd0a85eb1e24d05df989e0c4", "shasum": "" }, "require": { @@ -9432,7 +11538,7 @@ ], "support": { "issues": "https://github.com/Codeception/Codeception/issues", - "source": "https://github.com/Codeception/Codeception/tree/5.0.11" + "source": "https://github.com/Codeception/Codeception/tree/5.0.12" }, "funding": [ { @@ -9440,7 +11546,7 @@ "type": "open_collective" } ], - "time": "2023-08-22T06:42:39+00:00" + "time": "2023-10-15T18:04:50+00:00" }, { "name": "codeception/lib-asserts", @@ -9716,16 +11822,16 @@ }, { "name": "codeception/stub", - "version": "4.1.1", + "version": "4.1.2", "source": { "type": "git", "url": "https://github.com/Codeception/Stub.git", - "reference": "4aaeffdc7089f3cae173b73bd4bc3672e4618747" + "reference": "f6bc56e33e3f5ba7a831dfb968c49b27cf1676ad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/Stub/zipball/4aaeffdc7089f3cae173b73bd4bc3672e4618747", - "reference": "4aaeffdc7089f3cae173b73bd4bc3672e4618747", + "url": "https://api.github.com/repos/Codeception/Stub/zipball/f6bc56e33e3f5ba7a831dfb968c49b27cf1676ad", + "reference": "f6bc56e33e3f5ba7a831dfb968c49b27cf1676ad", "shasum": "" }, "require": { @@ -9751,25 +11857,26 @@ "description": "Flexible Stub wrapper for PHPUnit's Mock Builder", "support": { "issues": "https://github.com/Codeception/Stub/issues", - "source": "https://github.com/Codeception/Stub/tree/4.1.1" + "source": "https://github.com/Codeception/Stub/tree/4.1.2" }, - "time": "2023-08-16T19:17:44+00:00" + "time": "2023-10-07T19:22:36+00:00" }, { "name": "csharpru/vault-php", - "version": "4.3.1", + "version": "4.4.0", "source": { "type": "git", "url": "https://github.com/CSharpRU/vault-php.git", - "reference": "918bfffe85d3b290e1bf667b5f14e521fdc0063c" + "reference": "ba4cbd7b55f1ce10bc72a7e4c36cfd87a42d3573" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/CSharpRU/vault-php/zipball/918bfffe85d3b290e1bf667b5f14e521fdc0063c", - "reference": "918bfffe85d3b290e1bf667b5f14e521fdc0063c", + "url": "https://api.github.com/repos/CSharpRU/vault-php/zipball/ba4cbd7b55f1ce10bc72a7e4c36cfd87a42d3573", + "reference": "ba4cbd7b55f1ce10bc72a7e4c36cfd87a42d3573", "shasum": "" }, "require": { + "aws/aws-sdk-php": "^3.0", "ext-json": "*", "php": "^7.2 || ^8.0", "psr/cache": "^1.0|^2.0|^3.0", @@ -9813,9 +11920,9 @@ ], "support": { "issues": "https://github.com/CSharpRU/vault-php/issues", - "source": "https://github.com/CSharpRU/vault-php/tree/4.3.1" + "source": "https://github.com/CSharpRU/vault-php/tree/4.4.0" }, - "time": "2022-04-04T08:31:44+00:00" + "time": "2023-11-22T11:38:41+00:00" }, { "name": "dealerdirect/phpcodesniffer-composer-installer", @@ -9897,16 +12004,16 @@ }, { "name": "dg/bypass-finals", - "version": "v1.5.0", + "version": "v1.5.1", "source": { "type": "git", "url": "https://github.com/dg/bypass-finals.git", - "reference": "7df37b7342d7d25ab906e53eb4e92d83542f46c1" + "reference": "12ef25e1f8d4144e4ec80d13a28895e8942f4104" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dg/bypass-finals/zipball/7df37b7342d7d25ab906e53eb4e92d83542f46c1", - "reference": "7df37b7342d7d25ab906e53eb4e92d83542f46c1", + "url": "https://api.github.com/repos/dg/bypass-finals/zipball/12ef25e1f8d4144e4ec80d13a28895e8942f4104", + "reference": "12ef25e1f8d4144e4ec80d13a28895e8942f4104", "shasum": "" }, "require": { @@ -9944,9 +12051,9 @@ ], "support": { "issues": "https://github.com/dg/bypass-finals/issues", - "source": "https://github.com/dg/bypass-finals/tree/v1.5.0" + "source": "https://github.com/dg/bypass-finals/tree/v1.5.1" }, - "time": "2022-09-13T17:27:26+00:00" + "time": "2023-09-16T09:13:54+00:00" }, { "name": "doctrine/instantiator", @@ -10020,23 +12127,21 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.22.0", + "version": "v3.38.2", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "92b019f6c8d79aa26349d0db7671d37440dc0ff3" + "reference": "d872cdd543797ade030aaa307c0a4954a712e081" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/92b019f6c8d79aa26349d0db7671d37440dc0ff3", - "reference": "92b019f6c8d79aa26349d0db7671d37440dc0ff3", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/d872cdd543797ade030aaa307c0a4954a712e081", + "reference": "d872cdd543797ade030aaa307c0a4954a712e081", "shasum": "" }, "require": { "composer/semver": "^3.3", "composer/xdebug-handler": "^3.0.3", - "doctrine/annotations": "^2", - "doctrine/lexer": "^2 || ^3", "ext-json": "*", "ext-tokenizer": "*", "php": "^7.4 || ^8.0", @@ -10064,8 +12169,6 @@ "phpspec/prophecy": "^1.16", "phpspec/prophecy-phpunit": "^2.0", "phpunit/phpunit": "^9.5", - "phpunitgoodpractices/polyfill": "^1.6", - "phpunitgoodpractices/traits": "^1.9.2", "symfony/phpunit-bridge": "^6.2.3", "symfony/yaml": "^5.4 || ^6.0" }, @@ -10105,7 +12208,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.22.0" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.38.2" }, "funding": [ { @@ -10113,24 +12216,24 @@ "type": "github" } ], - "time": "2023-07-16T23:08:06+00:00" + "time": "2023-11-14T00:19:22+00:00" }, { "name": "laminas/laminas-diactoros", - "version": "2.25.2", + "version": "2.26.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-diactoros.git", - "reference": "9f3f4bf5b99c9538b6f1dbcc20f6fec357914f9e" + "reference": "6584d44eb8e477e89d453313b858daac6183cddc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-diactoros/zipball/9f3f4bf5b99c9538b6f1dbcc20f6fec357914f9e", - "reference": "9f3f4bf5b99c9538b6f1dbcc20f6fec357914f9e", + "url": "https://api.github.com/repos/laminas/laminas-diactoros/zipball/6584d44eb8e477e89d453313b858daac6183cddc", + "reference": "6584d44eb8e477e89d453313b858daac6183cddc", "shasum": "" }, "require": { - "php": "~8.0.0 || ~8.1.0 || ~8.2.0", + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", "psr/http-factory": "^1.0", "psr/http-message": "^1.1" }, @@ -10210,7 +12313,7 @@ "type": "community_bridge" } ], - "time": "2023-04-17T15:44:17+00:00" + "time": "2023-10-29T16:17:44+00:00" }, { "name": "lusitanian/oauth", @@ -10285,32 +12388,29 @@ }, { "name": "magento/magento-coding-standard", - "version": "32", + "version": "31", "source": { "type": "git", "url": "https://github.com/magento/magento-coding-standard.git", - "reference": "db2e2e7fa4274a17600129fceec6a06fc2d8357c" + "reference": "1172711ea1947d0258adae8d8e0a72669f1c2d99" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/magento/magento-coding-standard/zipball/db2e2e7fa4274a17600129fceec6a06fc2d8357c", - "reference": "db2e2e7fa4274a17600129fceec6a06fc2d8357c", + "url": "https://api.github.com/repos/magento/magento-coding-standard/zipball/1172711ea1947d0258adae8d8e0a72669f1c2d99", + "reference": "1172711ea1947d0258adae8d8e0a72669f1c2d99", "shasum": "" }, "require": { "ext-dom": "*", "ext-simplexml": "*", - "php": "~8.1.0 || ~8.2.0", + "php": ">=7.4", "phpcompatibility/php-compatibility": "^9.3", - "phpcsstandards/phpcsutils": "^1.0.5", - "rector/rector": "0.17.12", + "rector/rector": "^0.15.10", "squizlabs/php_codesniffer": "^3.6.1", - "symfony/polyfill": "^1.16", "webonyx/graphql-php": "^15.0" }, "require-dev": { - "phpunit/phpunit": "^9.5.10", - "yoast/phpunit-polyfills": "^1.0" + "phpunit/phpunit": "^9.5.8" }, "type": "phpcodesniffer-standard", "autoload": { @@ -10330,22 +12430,22 @@ "description": "A set of Magento specific PHP CodeSniffer rules.", "support": { "issues": "https://github.com/magento/magento-coding-standard/issues", - "source": "https://github.com/magento/magento-coding-standard/tree/v32" + "source": "https://github.com/magento/magento-coding-standard/tree/v31" }, - "time": "2023-09-06T16:13:50+00:00" + "time": "2023-02-01T15:38:47+00:00" }, { "name": "magento/magento2-functional-testing-framework", - "version": "4.4.2", + "version": "dev-ACQE-5264-spomky-labs/otphp", "source": { "type": "git", - "url": "https://github.com/magento/magento2-functional-testing-framework.git", - "reference": "57331ea4b60e966de1ba2c6f04bb00eb0e29705c" + "url": "git@github.com:magento-gl/magento2-functional-testing-framework.git", + "reference": "80e4256f37ae400e418887c7375dfb8ba4df800d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/magento/magento2-functional-testing-framework/zipball/57331ea4b60e966de1ba2c6f04bb00eb0e29705c", - "reference": "57331ea4b60e966de1ba2c6f04bb00eb0e29705c", + "url": "https://api.github.com/repos/magento-gl/magento2-functional-testing-framework/zipball/80e4256f37ae400e418887c7375dfb8ba4df800d", + "reference": "80e4256f37ae400e418887c7375dfb8ba4df800d", "shasum": "" }, "require": { @@ -10372,7 +12472,7 @@ "nikic/php-parser": "^4.4", "php": ">=8.1", "php-webdriver/webdriver": "^1.14.0", - "spomky-labs/otphp": "^10.0", + "spomky-labs/otphp": "^10.0||^11.2", "symfony/console": "^4.4||^5.4", "symfony/dotenv": "^5.3||^6.3", "symfony/finder": "^5.0||^6.3", @@ -10408,11 +12508,23 @@ "src/Magento/FunctionalTestingFramework/_bootstrap.php" ], "psr-4": { - "MFTF\\": "dev/tests/functional/tests/MFTF", - "Magento\\FunctionalTestingFramework\\": "src/Magento/FunctionalTestingFramework" + "Magento\\FunctionalTestingFramework\\": "src/Magento/FunctionalTestingFramework", + "MFTF\\": "dev/tests/functional/tests/MFTF" } }, - "notification-url": "https://packagist.org/downloads/", + "autoload-dev": { + "psr-4": { + "tests\\": "dev/tests" + } + }, + "scripts": { + "tests": [ + "bin/phpunit-checks" + ], + "static": [ + "bin/static-checks" + ] + }, "license": [ "AGPL-3.0" ], @@ -10424,10 +12536,9 @@ "testing" ], "support": { - "issues": "https://github.com/magento/magento2-functional-testing-framework/issues", - "source": "https://github.com/magento/magento2-functional-testing-framework/tree/4.4.2" + "source": "https://github.com/magento-gl/magento2-functional-testing-framework/tree/ACQE-5264-spomky-labs/otphp" }, - "time": "2023-09-04T19:28:17+00:00" + "time": "2023-11-14T04:35:32+00:00" }, { "name": "mustache/mustache", @@ -10540,16 +12651,16 @@ }, { "name": "pdepend/pdepend", - "version": "2.14.0", + "version": "2.15.1", "source": { "type": "git", "url": "https://github.com/pdepend/pdepend.git", - "reference": "1121d4b04af06e33e9659bac3a6741b91cab1de1" + "reference": "d12f25bcdfb7754bea458a4a5cb159d55e9950d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pdepend/pdepend/zipball/1121d4b04af06e33e9659bac3a6741b91cab1de1", - "reference": "1121d4b04af06e33e9659bac3a6741b91cab1de1", + "url": "https://api.github.com/repos/pdepend/pdepend/zipball/d12f25bcdfb7754bea458a4a5cb159d55e9950d0", + "reference": "d12f25bcdfb7754bea458a4a5cb159d55e9950d0", "shasum": "" }, "require": { @@ -10591,7 +12702,7 @@ ], "support": { "issues": "https://github.com/pdepend/pdepend/issues", - "source": "https://github.com/pdepend/pdepend/tree/2.14.0" + "source": "https://github.com/pdepend/pdepend/tree/2.15.1" }, "funding": [ { @@ -10599,7 +12710,7 @@ "type": "tidelift" } ], - "time": "2023-05-26T13:15:18+00:00" + "time": "2023-09-28T12:00:56+00:00" }, { "name": "phar-io/manifest", @@ -10714,16 +12825,16 @@ }, { "name": "php-webdriver/webdriver", - "version": "1.15.0", + "version": "1.15.1", "source": { "type": "git", "url": "https://github.com/php-webdriver/php-webdriver.git", - "reference": "a1578689290055586f1ee51eaf0ec9d52895bb6d" + "reference": "cd52d9342c5aa738c2e75a67e47a1b6df97154e8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-webdriver/php-webdriver/zipball/a1578689290055586f1ee51eaf0ec9d52895bb6d", - "reference": "a1578689290055586f1ee51eaf0ec9d52895bb6d", + "url": "https://api.github.com/repos/php-webdriver/php-webdriver/zipball/cd52d9342c5aa738c2e75a67e47a1b6df97154e8", + "reference": "cd52d9342c5aa738c2e75a67e47a1b6df97154e8", "shasum": "" }, "require": { @@ -10732,7 +12843,7 @@ "ext-zip": "*", "php": "^7.3 || ^8.0", "symfony/polyfill-mbstring": "^1.12", - "symfony/process": "^5.0 || ^6.0" + "symfony/process": "^5.0 || ^6.0 || ^7.0" }, "replace": { "facebook/webdriver": "*" @@ -10774,9 +12885,9 @@ ], "support": { "issues": "https://github.com/php-webdriver/php-webdriver/issues", - "source": "https://github.com/php-webdriver/php-webdriver/tree/1.15.0" + "source": "https://github.com/php-webdriver/php-webdriver/tree/1.15.1" }, - "time": "2023-08-29T13:52:26+00:00" + "time": "2023-10-20T12:21:20+00:00" }, { "name": "phpcompatibility/php-compatibility", @@ -10840,97 +12951,24 @@ }, "time": "2019-12-27T09:44:58+00:00" }, - { - "name": "phpcsstandards/phpcsutils", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/PHPCSStandards/PHPCSUtils.git", - "reference": "69465cab9d12454e5e7767b9041af0cd8cd13be7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHPCSUtils/zipball/69465cab9d12454e5e7767b9041af0cd8cd13be7", - "reference": "69465cab9d12454e5e7767b9041af0cd8cd13be7", - "shasum": "" - }, - "require": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.4.1 || ^0.5 || ^0.6.2 || ^0.7 || ^1.0", - "php": ">=5.4", - "squizlabs/php_codesniffer": "^3.7.1 || 4.0.x-dev@dev" - }, - "require-dev": { - "ext-filter": "*", - "php-parallel-lint/php-console-highlighter": "^1.0", - "php-parallel-lint/php-parallel-lint": "^1.3.2", - "phpcsstandards/phpcsdevcs": "^1.1.6", - "yoast/phpunit-polyfills": "^1.0.5 || ^2.0.0" - }, - "type": "phpcodesniffer-standard", - "extra": { - "branch-alias": { - "dev-stable": "1.x-dev", - "dev-develop": "1.x-dev" - } - }, - "autoload": { - "classmap": [ - "PHPCSUtils/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-3.0-or-later" - ], - "authors": [ - { - "name": "Juliette Reinders Folmer", - "homepage": "https://github.com/jrfnl", - "role": "lead" - }, - { - "name": "Contributors", - "homepage": "https://github.com/PHPCSStandards/PHPCSUtils/graphs/contributors" - } - ], - "description": "A suite of utility functions for use with PHP_CodeSniffer", - "homepage": "https://phpcsutils.com/", - "keywords": [ - "PHP_CodeSniffer", - "phpcbf", - "phpcodesniffer-standard", - "phpcs", - "phpcs3", - "standards", - "static analysis", - "tokens", - "utility" - ], - "support": { - "docs": "https://phpcsutils.com/", - "issues": "https://github.com/PHPCSStandards/PHPCSUtils/issues", - "source": "https://github.com/PHPCSStandards/PHPCSUtils" - }, - "time": "2023-07-16T21:39:41+00:00" - }, { "name": "phpmd/phpmd", - "version": "2.13.0", + "version": "2.14.1", "source": { "type": "git", "url": "https://github.com/phpmd/phpmd.git", - "reference": "dad0228156856b3ad959992f9748514fa943f3e3" + "reference": "442fc2c34edcd5198b442d8647c7f0aec3afabe8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpmd/phpmd/zipball/dad0228156856b3ad959992f9748514fa943f3e3", - "reference": "dad0228156856b3ad959992f9748514fa943f3e3", + "url": "https://api.github.com/repos/phpmd/phpmd/zipball/442fc2c34edcd5198b442d8647c7f0aec3afabe8", + "reference": "442fc2c34edcd5198b442d8647c7f0aec3afabe8", "shasum": "" }, "require": { "composer/xdebug-handler": "^1.0 || ^2.0 || ^3.0", "ext-xml": "*", - "pdepend/pdepend": "^2.12.1", + "pdepend/pdepend": "^2.15.1", "php": ">=5.3.9" }, "require-dev": { @@ -10940,7 +12978,7 @@ "gregwar/rst": "^1.0", "mikey179/vfsstream": "^1.6.8", "phpunit/phpunit": "^4.8.36 || ^5.7.27", - "squizlabs/php_codesniffer": "^2.0" + "squizlabs/php_codesniffer": "^2.9.2 || ^3.7.2" }, "bin": [ "src/bin/phpmd" @@ -10977,6 +13015,7 @@ "description": "PHPMD is a spin-off project of PHP Depend and aims to be a PHP equivalent of the well known Java tool PMD.", "homepage": "https://phpmd.org/", "keywords": [ + "dev", "mess detection", "mess detector", "pdepend", @@ -10986,7 +13025,7 @@ "support": { "irc": "irc://irc.freenode.org/phpmd", "issues": "https://github.com/phpmd/phpmd/issues", - "source": "https://github.com/phpmd/phpmd/tree/2.13.0" + "source": "https://github.com/phpmd/phpmd/tree/2.14.1" }, "funding": [ { @@ -10994,20 +13033,20 @@ "type": "tidelift" } ], - "time": "2022-09-10T08:44:15+00:00" + "time": "2023-09-28T13:07:44+00:00" }, { "name": "phpstan/phpstan", - "version": "1.10.32", + "version": "1.10.43", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "c47e47d3ab03137c0e121e77c4d2cb58672f6d44" + "reference": "2c4129f6ca8c7cfa870098884b8869b410a5a361" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/c47e47d3ab03137c0e121e77c4d2cb58672f6d44", - "reference": "c47e47d3ab03137c0e121e77c4d2cb58672f6d44", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/2c4129f6ca8c7cfa870098884b8869b410a5a361", + "reference": "2c4129f6ca8c7cfa870098884b8869b410a5a361", "shasum": "" }, "require": { @@ -11056,20 +13095,20 @@ "type": "tidelift" } ], - "time": "2023-08-24T21:54:50+00:00" + "time": "2023-11-19T19:55:25+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "9.2.27", + "version": "9.2.29", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "b0a88255cb70d52653d80c890bd7f38740ea50d1" + "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/b0a88255cb70d52653d80c890bd7f38740ea50d1", - "reference": "b0a88255cb70d52653d80c890bd7f38740ea50d1", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/6a3a87ac2bbe33b25042753df8195ba4aa534c76", + "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76", "shasum": "" }, "require": { @@ -11126,7 +13165,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/9.2.27" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.29" }, "funding": [ { @@ -11134,7 +13173,7 @@ "type": "github" } ], - "time": "2023-07-26T13:44:30+00:00" + "time": "2023-09-19T04:57:46+00:00" }, { "name": "phpunit/php-file-iterator", @@ -11379,16 +13418,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.6.11", + "version": "9.6.13", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "810500e92855eba8a7a5319ae913be2da6f957b0" + "reference": "f3d767f7f9e191eab4189abe41ab37797e30b1be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/810500e92855eba8a7a5319ae913be2da6f957b0", - "reference": "810500e92855eba8a7a5319ae913be2da6f957b0", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f3d767f7f9e191eab4189abe41ab37797e30b1be", + "reference": "f3d767f7f9e191eab4189abe41ab37797e30b1be", "shasum": "" }, "require": { @@ -11403,7 +13442,7 @@ "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", "php": ">=7.3", - "phpunit/php-code-coverage": "^9.2.13", + "phpunit/php-code-coverage": "^9.2.28", "phpunit/php-file-iterator": "^3.0.5", "phpunit/php-invoker": "^3.1.1", "phpunit/php-text-template": "^2.0.3", @@ -11462,7 +13501,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.11" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.13" }, "funding": [ { @@ -11478,20 +13517,20 @@ "type": "tidelift" } ], - "time": "2023-08-19T07:10:56+00:00" + "time": "2023-09-19T05:39:22+00:00" }, { "name": "psy/psysh", - "version": "v0.11.20", + "version": "v0.11.22", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "0fa27040553d1d280a67a4393194df5228afea5b" + "reference": "128fa1b608be651999ed9789c95e6e2a31b5802b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/0fa27040553d1d280a67a4393194df5228afea5b", - "reference": "0fa27040553d1d280a67a4393194df5228afea5b", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/128fa1b608be651999ed9789c95e6e2a31b5802b", + "reference": "128fa1b608be651999ed9789c95e6e2a31b5802b", "shasum": "" }, "require": { @@ -11520,7 +13559,11 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "0.11.x-dev" + "dev-0.11": "0.11.x-dev" + }, + "bamarni-bin": { + "bin-links": false, + "forward-command": false } }, "autoload": { @@ -11552,27 +13595,27 @@ ], "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.22" }, - "time": "2023-07-31T14:32:22+00:00" + "time": "2023-10-14T21:56:36+00:00" }, { "name": "rector/rector", - "version": "0.17.12", + "version": "0.15.25", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "af3a14a8a9fffa3100b730571c356f6c658d5e09" + "reference": "015935c7ed9e48a4f5895ba974f337e20a263841" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/af3a14a8a9fffa3100b730571c356f6c658d5e09", - "reference": "af3a14a8a9fffa3100b730571c356f6c658d5e09", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/015935c7ed9e48a4f5895ba974f337e20a263841", + "reference": "015935c7ed9e48a4f5895ba974f337e20a263841", "shasum": "" }, "require": { "php": "^7.2|^8.0", - "phpstan/phpstan": "^1.10.26" + "phpstan/phpstan": "^1.10.14" }, "conflict": { "rector/rector-doctrine": "*", @@ -11584,6 +13627,11 @@ "bin/rector" ], "type": "library", + "extra": { + "branch-alias": { + "dev-main": "0.15-dev" + } + }, "autoload": { "files": [ "bootstrap.php" @@ -11602,7 +13650,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/0.17.12" + "source": "https://github.com/rectorphp/rector/tree/0.15.25" }, "funding": [ { @@ -11610,7 +13658,7 @@ "type": "github" } ], - "time": "2023-08-10T15:22:02+00:00" + "time": "2023-04-20T16:07:39+00:00" }, { "name": "sebastian/cli-parser", @@ -12638,81 +14686,6 @@ ], "time": "2020-09-28T06:39:44+00:00" }, - { - "name": "spomky-labs/otphp", - "version": "v10.0.3", - "source": { - "type": "git", - "url": "https://github.com/Spomky-Labs/otphp.git", - "reference": "9784d9f7c790eed26e102d6c78f12c754036c366" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Spomky-Labs/otphp/zipball/9784d9f7c790eed26e102d6c78f12c754036c366", - "reference": "9784d9f7c790eed26e102d6c78f12c754036c366", - "shasum": "" - }, - "require": { - "beberlei/assert": "^3.0", - "ext-mbstring": "*", - "paragonie/constant_time_encoding": "^2.0", - "php": "^7.2|^8.0", - "thecodingmachine/safe": "^0.1.14|^1.0|^2.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-beberlei-assert": "^0.12", - "phpstan/phpstan-deprecation-rules": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^8.0", - "thecodingmachine/phpstan-safe-rule": "^1.0 || ^2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "v10.0": "10.0.x-dev", - "v9.0": "9.0.x-dev", - "v8.3": "8.3.x-dev" - } - }, - "autoload": { - "psr-4": { - "OTPHP\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Florent Morselli", - "homepage": "https://github.com/Spomky" - }, - { - "name": "All contributors", - "homepage": "https://github.com/Spomky-Labs/otphp/contributors" - } - ], - "description": "A PHP library for generating one time passwords according to RFC 4226 (HOTP Algorithm) and the RFC 6238 (TOTP Algorithm) and compatible with Google Authenticator", - "homepage": "https://github.com/Spomky-Labs/otphp", - "keywords": [ - "FreeOTP", - "RFC 4226", - "RFC 6238", - "google authenticator", - "hotp", - "otp", - "totp" - ], - "support": { - "issues": "https://github.com/Spomky-Labs/otphp/issues", - "source": "https://github.com/Spomky-Labs/otphp/tree/v10.0.3" - }, - "time": "2022-03-17T08:00:35+00:00" - }, { "name": "squizlabs/php_codesniffer", "version": "3.7.2", @@ -12772,16 +14745,16 @@ }, { "name": "symfony/dotenv", - "version": "v6.3.0", + "version": "v6.3.7", "source": { "type": "git", "url": "https://github.com/symfony/dotenv.git", - "reference": "ceadb434fe2a6763a03d2d110441745834f3dd1e" + "reference": "7dfbe2976f3c1b7cfa8fac2212a050bfa9bd7d9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/ceadb434fe2a6763a03d2d110441745834f3dd1e", - "reference": "ceadb434fe2a6763a03d2d110441745834f3dd1e", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/7dfbe2976f3c1b7cfa8fac2212a050bfa9bd7d9e", + "reference": "7dfbe2976f3c1b7cfa8fac2212a050bfa9bd7d9e", "shasum": "" }, "require": { @@ -12826,7 +14799,7 @@ "environment" ], "support": { - "source": "https://github.com/symfony/dotenv/tree/v6.3.0" + "source": "https://github.com/symfony/dotenv/tree/v6.3.7" }, "funding": [ { @@ -12842,20 +14815,20 @@ "type": "tidelift" } ], - "time": "2023-04-21T14:41:17+00:00" + "time": "2023-10-26T18:15:14+00:00" }, { "name": "symfony/mime", - "version": "v6.3.3", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "9a0cbd52baa5ba5a5b1f0cacc59466f194730f98" + "reference": "d5179eedf1cb2946dbd760475ebf05c251ef6a6e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/9a0cbd52baa5ba5a5b1f0cacc59466f194730f98", - "reference": "9a0cbd52baa5ba5a5b1f0cacc59466f194730f98", + "url": "https://api.github.com/repos/symfony/mime/zipball/d5179eedf1cb2946dbd760475ebf05c251ef6a6e", + "reference": "d5179eedf1cb2946dbd760475ebf05c251ef6a6e", "shasum": "" }, "require": { @@ -12910,7 +14883,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.3.3" + "source": "https://github.com/symfony/mime/tree/v6.3.5" }, "funding": [ { @@ -12926,7 +14899,7 @@ "type": "tidelift" } ], - "time": "2023-07-31T07:08:24+00:00" + "time": "2023-09-29T06:59:36+00:00" }, { "name": "symfony/options-resolver", @@ -13059,16 +15032,16 @@ }, { "name": "symfony/yaml", - "version": "v6.3.3", + "version": "v6.3.8", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "e23292e8c07c85b971b44c1c4b87af52133e2add" + "reference": "3493af8a8dad7fa91c77fa473ba23ecd95334a92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/e23292e8c07c85b971b44c1c4b87af52133e2add", - "reference": "e23292e8c07c85b971b44c1c4b87af52133e2add", + "url": "https://api.github.com/repos/symfony/yaml/zipball/3493af8a8dad7fa91c77fa473ba23ecd95334a92", + "reference": "3493af8a8dad7fa91c77fa473ba23ecd95334a92", "shasum": "" }, "require": { @@ -13111,7 +15084,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.3.3" + "source": "https://github.com/symfony/yaml/tree/v6.3.8" }, "funding": [ { @@ -13127,159 +15100,20 @@ "type": "tidelift" } ], - "time": "2023-07-31T07:08:24+00:00" - }, - { - "name": "thecodingmachine/safe", - "version": "v2.5.0", - "source": { - "type": "git", - "url": "https://github.com/thecodingmachine/safe.git", - "reference": "3115ecd6b4391662b4931daac4eba6b07a2ac1f0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thecodingmachine/safe/zipball/3115ecd6b4391662b4931daac4eba6b07a2ac1f0", - "reference": "3115ecd6b4391662b4931daac4eba6b07a2ac1f0", - "shasum": "" - }, - "require": { - "php": "^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^1.5", - "phpunit/phpunit": "^9.5", - "squizlabs/php_codesniffer": "^3.2", - "thecodingmachine/phpstan-strict-rules": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "files": [ - "deprecated/apc.php", - "deprecated/array.php", - "deprecated/datetime.php", - "deprecated/libevent.php", - "deprecated/misc.php", - "deprecated/password.php", - "deprecated/mssql.php", - "deprecated/stats.php", - "deprecated/strings.php", - "lib/special_cases.php", - "deprecated/mysqli.php", - "generated/apache.php", - "generated/apcu.php", - "generated/array.php", - "generated/bzip2.php", - "generated/calendar.php", - "generated/classobj.php", - "generated/com.php", - "generated/cubrid.php", - "generated/curl.php", - "generated/datetime.php", - "generated/dir.php", - "generated/eio.php", - "generated/errorfunc.php", - "generated/exec.php", - "generated/fileinfo.php", - "generated/filesystem.php", - "generated/filter.php", - "generated/fpm.php", - "generated/ftp.php", - "generated/funchand.php", - "generated/gettext.php", - "generated/gmp.php", - "generated/gnupg.php", - "generated/hash.php", - "generated/ibase.php", - "generated/ibmDb2.php", - "generated/iconv.php", - "generated/image.php", - "generated/imap.php", - "generated/info.php", - "generated/inotify.php", - "generated/json.php", - "generated/ldap.php", - "generated/libxml.php", - "generated/lzf.php", - "generated/mailparse.php", - "generated/mbstring.php", - "generated/misc.php", - "generated/mysql.php", - "generated/network.php", - "generated/oci8.php", - "generated/opcache.php", - "generated/openssl.php", - "generated/outcontrol.php", - "generated/pcntl.php", - "generated/pcre.php", - "generated/pgsql.php", - "generated/posix.php", - "generated/ps.php", - "generated/pspell.php", - "generated/readline.php", - "generated/rpminfo.php", - "generated/rrd.php", - "generated/sem.php", - "generated/session.php", - "generated/shmop.php", - "generated/sockets.php", - "generated/sodium.php", - "generated/solr.php", - "generated/spl.php", - "generated/sqlsrv.php", - "generated/ssdeep.php", - "generated/ssh2.php", - "generated/stream.php", - "generated/strings.php", - "generated/swoole.php", - "generated/uodbc.php", - "generated/uopz.php", - "generated/url.php", - "generated/var.php", - "generated/xdiff.php", - "generated/xml.php", - "generated/xmlrpc.php", - "generated/yaml.php", - "generated/yaz.php", - "generated/zip.php", - "generated/zlib.php" - ], - "classmap": [ - "lib/DateTime.php", - "lib/DateTimeImmutable.php", - "lib/Exceptions/", - "deprecated/Exceptions/", - "generated/Exceptions/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PHP core functions that throw exceptions instead of returning FALSE on error", - "support": { - "issues": "https://github.com/thecodingmachine/safe/issues", - "source": "https://github.com/thecodingmachine/safe/tree/v2.5.0" - }, - "time": "2023-04-05T11:54:14+00:00" + "time": "2023-11-06T10:58:05+00:00" }, { "name": "theseer/tokenizer", - "version": "1.2.1", + "version": "1.2.2", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" + "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b2ad5003ca10d4ee50a12da31de12a5774ba6b96", + "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96", "shasum": "" }, "require": { @@ -13308,7 +15142,7 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" + "source": "https://github.com/theseer/tokenizer/tree/1.2.2" }, "funding": [ { @@ -13316,7 +15150,7 @@ "type": "github" } ], - "time": "2021-07-28T10:34:58+00:00" + "time": "2023-11-20T00:12:19+00:00" }, { "name": "weew/helpers-array", @@ -13361,8 +15195,11 @@ } ], "aliases": [], - "minimum-stability": "stable", - "stability-flags": [], + "minimum-stability": "dev", + "stability-flags": { + "magento/security-package": 20, + "magento/magento2-functional-testing-framework": 20 + }, "prefer-stable": true, "prefer-lowest": false, "platform": { @@ -13386,5 +15223,5 @@ "lib-libxml": "*" }, "platform-dev": [], - "plugin-api-version": "2.2.0" + "plugin-api-version": "2.6.0" } From 61742311330415eae0a93af019eadf30e26fc8bd Mon Sep 17 00:00:00 2001 From: glo5363 Date: Thu, 30 Nov 2023 13:10:20 +0530 Subject: [PATCH 030/104] #AC-9196::Update spomky-labs/otphp to its latest version available (11.2.0) with mftf upgrade-changes for ce --- composer.json | 39 +- composer.lock | 5220 ++++++++++++++++++------------------------------- 2 files changed, 1935 insertions(+), 3324 deletions(-) diff --git a/composer.json b/composer.json index a0b125f6801ff..be2a7efa66278 100644 --- a/composer.json +++ b/composer.json @@ -6,16 +6,6 @@ "OSL-3.0", "AFL-3.0" ], - "repositories": { - "ext": { - "type": "path", - "url": "./ext/*/*/*" - }, - "0": { - "type": "vcs", - "url": "https://github.com/magento-gl/magento2-functional-testing-framework" - } - }, "config": { "allow-plugins": { "dealerdirect/phpcodesniffer-composer-installer": true, @@ -26,6 +16,12 @@ "preferred-install": "dist", "sort-packages": true }, + "repositories": [ + { + "type": "vcs", + "url": "https://github.com/magento-gl/magento2-functional-testing-framework" + } + ], "require": { "php": "~8.1.0||~8.2.0", "ext-bcmath": "*", @@ -50,7 +46,7 @@ "colinmollenhour/credis": "^1.13", "colinmollenhour/php-redis-session-abstract": "^1.5", "composer/composer": "^2.0, !=2.2.16", - "doctrine/annotations": "^2.0", + "doctrine/annotations": "^1.13", "elasticsearch/elasticsearch": "~7.17.0 || ~8.5.0", "ezyang/htmlpurifier": "^4.16", "guzzlehttp/guzzle": "^7.5", @@ -81,7 +77,6 @@ "magento/composer": "^1.9.0", "magento/composer-dependency-version-audit-plugin": "^0.1", "magento/magento-composer-installer": ">=0.4.0", - "magento/security-package": "dev-develop", "magento/zend-cache": "^1.16", "magento/zend-db": "^1.16", "magento/zend-pdf": "^1.16", @@ -94,7 +89,7 @@ "ramsey/uuid": "^4.2", "symfony/console": "^5.4", "symfony/intl": "^5.4", - "symfony/process": "<=5.4.23", + "symfony/process": "^5.4", "symfony/string": "^5.4", "tedivm/jshrink": "^1.4", "tubalmartin/cssmin": "^4.1", @@ -104,18 +99,20 @@ }, "require-dev": { "allure-framework/allure-phpunit": "^2", - "dealerdirect/phpcodesniffer-composer-installer": "^1.0", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7", "dg/bypass-finals": "^1.4", - "friendsofphp/php-cs-fixer": "^3.22", + "friendsofphp/php-cs-fixer": "^3.8", "lusitanian/oauth": "^0.8", "magento/magento-coding-standard": "*", - "magento/magento2-functional-testing-framework": "dev-ACQE-5264-spomky-labs/otphp", + "magento/magento2-functional-testing-framework": "dev-ACQE-5264-spomky-otphp-upgrade", "pdepend/pdepend": "^2.10", "phpmd/phpmd": "^2.12", "phpstan/phpstan": "^1.9", - "phpunit/phpunit": "^9.5", + "phpunit/phpunit": "<=9.5.22", "sebastian/phpcpd": "^6.0", - "symfony/finder": "^5.4" + "symfony/finder": "^5.4", + "sebastian/comparator": "<=4.0.6", + "symfony/process": "<=5.4.23" }, "suggest": { "ext-pcntl": "Need for run processes in parallel mode" @@ -261,9 +258,6 @@ "magento/module-newsletter-graph-ql": "*", "magento/module-offline-payments": "*", "magento/module-offline-shipping": "*", - "magento/module-order-cancellation": "*", - "magento/module-order-cancellation-graph-ql": "*", - "magento/module-order-cancellation-ui": "*", "magento/module-page-cache": "*", "magento/module-payment": "*", "magento/module-payment-graph-ql": "*", @@ -408,6 +402,5 @@ "Magento\\PhpStan\\": "dev/tests/static/framework/Magento/PhpStan/" } }, - "prefer-stable": true, - "minimum-stability": "dev" + "prefer-stable": true } diff --git a/composer.lock b/composer.lock index 959a78fc9eed0..8766af9ae45b2 100644 --- a/composer.lock +++ b/composer.lock @@ -4,65 +4,20 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "cfcc9e7c3f2eaca86028bd74aee51e9c", + "content-hash": "312aee0e2054c696ccf4190dd4a6f91f", "packages": [ - { - "name": "2tvenom/cborencode", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/2tvenom/CBOREncode.git", - "reference": "42aedccb861d01fc0554782348cc08f8ebf22332" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/2tvenom/CBOREncode/zipball/42aedccb861d01fc0554782348cc08f8ebf22332", - "reference": "42aedccb861d01fc0554782348cc08f8ebf22332", - "shasum": "" - }, - "require": { - "php": ">=5.4.0" - }, - "type": "library", - "autoload": { - "psr-0": { - "CBOR": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "PHP" - ], - "authors": [ - { - "name": "Pavel Gulbin", - "email": "2tvenom@gmail.com", - "role": "Developer" - } - ], - "description": "CBOR encoder for PHP", - "homepage": "https://github.com/2tvenom/CBOREncode", - "keywords": [ - "cbor" - ], - "support": { - "issues": "https://github.com/2tvenom/CBOREncode/issues", - "source": "https://github.com/2tvenom/CBOREncode/tree/1.0.2" - }, - "time": "2020-10-27T07:22:41+00:00" - }, { "name": "aws/aws-crt-php", - "version": "v1.2.3", + "version": "v1.2.1", "source": { "type": "git", "url": "https://github.com/awslabs/aws-crt-php.git", - "reference": "5545a4fa310aec39f54279fdacebcce33b3ff382" + "reference": "1926277fc71d253dfa820271ac5987bdb193ccf5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/awslabs/aws-crt-php/zipball/5545a4fa310aec39f54279fdacebcce33b3ff382", - "reference": "5545a4fa310aec39f54279fdacebcce33b3ff382", + "url": "https://api.github.com/repos/awslabs/aws-crt-php/zipball/1926277fc71d253dfa820271ac5987bdb193ccf5", + "reference": "1926277fc71d253dfa820271ac5987bdb193ccf5", "shasum": "" }, "require": { @@ -101,35 +56,35 @@ ], "support": { "issues": "https://github.com/awslabs/aws-crt-php/issues", - "source": "https://github.com/awslabs/aws-crt-php/tree/v1.2.3" + "source": "https://github.com/awslabs/aws-crt-php/tree/v1.2.1" }, - "time": "2023-10-16T20:10:06+00:00" + "time": "2023-03-24T20:22:19+00:00" }, { "name": "aws/aws-sdk-php", - "version": "3.288.1", + "version": "3.277.2", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "a1dfa12c7165de0b731ae8074c4ba1f3ae733f89" + "reference": "483c9edf258527a6916f7e9fac224fdb2d474aff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/a1dfa12c7165de0b731ae8074c4ba1f3ae733f89", - "reference": "a1dfa12c7165de0b731ae8074c4ba1f3ae733f89", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/483c9edf258527a6916f7e9fac224fdb2d474aff", + "reference": "483c9edf258527a6916f7e9fac224fdb2d474aff", "shasum": "" }, "require": { - "aws/aws-crt-php": "^1.2.3", + "aws/aws-crt-php": "^1.0.4", "ext-json": "*", "ext-pcre": "*", "ext-simplexml": "*", "guzzlehttp/guzzle": "^6.5.8 || ^7.4.5", - "guzzlehttp/promises": "^1.4.0 || ^2.0", + "guzzlehttp/promises": "^1.4.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" + "php": ">=5.5", + "psr/http-message": "^1.0" }, "require-dev": { "andrewsville/php-token-reflection": "^1.4", @@ -144,7 +99,7 @@ "ext-sockets": "*", "nette/neon": "^2.3", "paragonie/random_compat": ">= 2", - "phpunit/phpunit": "^5.6.3 || ^8.5 || ^9.5", + "phpunit/phpunit": "^4.8.35 || ^5.6.3 || ^9.5", "psr/cache": "^1.0", "psr/simple-cache": "^1.0", "sebastian/comparator": "^1.2.3 || ^4.0", @@ -196,85 +151,32 @@ "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.288.1" - }, - "time": "2023-11-22T19:35:38+00:00" - }, - { - "name": "bacon/bacon-qr-code", - "version": "2.0.8", - "source": { - "type": "git", - "url": "https://github.com/Bacon/BaconQrCode.git", - "reference": "8674e51bb65af933a5ffaf1c308a660387c35c22" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Bacon/BaconQrCode/zipball/8674e51bb65af933a5ffaf1c308a660387c35c22", - "reference": "8674e51bb65af933a5ffaf1c308a660387c35c22", - "shasum": "" - }, - "require": { - "dasprid/enum": "^1.0.3", - "ext-iconv": "*", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "phly/keep-a-changelog": "^2.1", - "phpunit/phpunit": "^7 | ^8 | ^9", - "spatie/phpunit-snapshot-assertions": "^4.2.9", - "squizlabs/php_codesniffer": "^3.4" - }, - "suggest": { - "ext-imagick": "to generate QR code images" - }, - "type": "library", - "autoload": { - "psr-4": { - "BaconQrCode\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-2-Clause" - ], - "authors": [ - { - "name": "Ben Scholzen 'DASPRiD'", - "email": "mail@dasprids.de", - "homepage": "https://dasprids.de/", - "role": "Developer" - } - ], - "description": "BaconQrCode is a QR code generator for PHP.", - "homepage": "https://github.com/Bacon/BaconQrCode", - "support": { - "issues": "https://github.com/Bacon/BaconQrCode/issues", - "source": "https://github.com/Bacon/BaconQrCode/tree/2.0.8" + "source": "https://github.com/aws/aws-sdk-php/tree/3.277.2" }, - "time": "2022-12-07T17:46:57+00:00" + "time": "2023-07-28T00:20:24+00:00" }, { "name": "brick/math", - "version": "0.11.0", + "version": "0.10.2", "source": { "type": "git", "url": "https://github.com/brick/math.git", - "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478" + "reference": "459f2781e1a08d52ee56b0b1444086e038561e3f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/0ad82ce168c82ba30d1c01ec86116ab52f589478", - "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478", + "url": "https://api.github.com/repos/brick/math/zipball/459f2781e1a08d52ee56b0b1444086e038561e3f", + "reference": "459f2781e1a08d52ee56b0b1444086e038561e3f", "shasum": "" }, "require": { - "php": "^8.0" + "ext-json": "*", + "php": "^7.4 || ^8.0" }, "require-dev": { "php-coveralls/php-coveralls": "^2.2", "phpunit/phpunit": "^9.0", - "vimeo/psalm": "5.0.0" + "vimeo/psalm": "4.25.0" }, "type": "library", "autoload": { @@ -299,7 +201,7 @@ ], "support": { "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.11.0" + "source": "https://github.com/brick/math/tree/0.10.2" }, "funding": [ { @@ -307,30 +209,30 @@ "type": "github" } ], - "time": "2023-01-15T23:15:59+00:00" + "time": "2022-08-10T22:54:19+00:00" }, { "name": "brick/varexporter", - "version": "0.4.0", + "version": "0.3.5", "source": { "type": "git", "url": "https://github.com/brick/varexporter.git", - "reference": "2fd038f7c9d12d468130c6e1b3ce06e4160a7dbb" + "reference": "05241f28dfcba2b51b11e2d750e296316ebbe518" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/varexporter/zipball/2fd038f7c9d12d468130c6e1b3ce06e4160a7dbb", - "reference": "2fd038f7c9d12d468130c6e1b3ce06e4160a7dbb", + "url": "https://api.github.com/repos/brick/varexporter/zipball/05241f28dfcba2b51b11e2d750e296316ebbe518", + "reference": "05241f28dfcba2b51b11e2d750e296316ebbe518", "shasum": "" }, "require": { "nikic/php-parser": "^4.0", - "php": "^7.4 || ^8.0" + "php": "^7.2 || ^8.0" }, "require-dev": { "php-coveralls/php-coveralls": "^2.2", "phpunit/phpunit": "^8.5 || ^9.0", - "vimeo/psalm": "5.15.0" + "vimeo/psalm": "4.4.1" }, "type": "library", "autoload": { @@ -348,94 +250,24 @@ ], "support": { "issues": "https://github.com/brick/varexporter/issues", - "source": "https://github.com/brick/varexporter/tree/0.4.0" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - } - ], - "time": "2023-09-01T21:10:07+00:00" - }, - { - "name": "christian-riesen/base32", - "version": "1.6.0", - "source": { - "type": "git", - "url": "https://github.com/ChristianRiesen/base32.git", - "reference": "2e82dab3baa008e24a505649b0d583c31d31e894" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ChristianRiesen/base32/zipball/2e82dab3baa008e24a505649b0d583c31d31e894", - "reference": "2e82dab3baa008e24a505649b0d583c31d31e894", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.17", - "phpstan/phpstan": "^0.12", - "phpunit/phpunit": "^8.5.13 || ^9.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Base32\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Riesen", - "email": "chris.riesen@gmail.com", - "homepage": "http://christianriesen.com", - "role": "Developer" - } - ], - "description": "Base32 encoder/decoder according to RFC 4648", - "homepage": "https://github.com/ChristianRiesen/base32", - "keywords": [ - "base32", - "decode", - "encode", - "rfc4648" - ], - "support": { - "issues": "https://github.com/ChristianRiesen/base32/issues", - "source": "https://github.com/ChristianRiesen/base32/tree/1.6.0" + "source": "https://github.com/brick/varexporter/tree/0.3.5" }, - "time": "2021-02-26T10:19:33+00:00" + "time": "2021-02-10T13:53:07+00:00" }, { "name": "colinmollenhour/cache-backend-file", - "version": "v1.4.8", + "version": "v1.4.5", "source": { "type": "git", "url": "https://github.com/colinmollenhour/Cm_Cache_Backend_File.git", - "reference": "8ad24cfa1eccc3a995c4fcb00db00fb07bd02938" + "reference": "03c7d4c0f43b2de1b559a3527d18ff697d306544" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/colinmollenhour/Cm_Cache_Backend_File/zipball/8ad24cfa1eccc3a995c4fcb00db00fb07bd02938", - "reference": "8ad24cfa1eccc3a995c4fcb00db00fb07bd02938", + "url": "https://api.github.com/repos/colinmollenhour/Cm_Cache_Backend_File/zipball/03c7d4c0f43b2de1b559a3527d18ff697d306544", + "reference": "03c7d4c0f43b2de1b559a3527d18ff697d306544", "shasum": "" }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.4", - "phpunit/phpunit": "^9", - "zf1s/zend-cache": "~1.15" - }, "type": "magento-module", "autoload": { "classmap": [ @@ -455,31 +287,26 @@ "homepage": "https://github.com/colinmollenhour/Cm_Cache_Backend_File", "support": { "issues": "https://github.com/colinmollenhour/Cm_Cache_Backend_File/issues", - "source": "https://github.com/colinmollenhour/Cm_Cache_Backend_File/tree/v1.4.8" + "source": "https://github.com/colinmollenhour/Cm_Cache_Backend_File/tree/master" }, - "time": "2023-09-19T20:23:43+00:00" + "time": "2019-04-18T21:54:31+00:00" }, { "name": "colinmollenhour/cache-backend-redis", - "version": "1.17.0", + "version": "1.14.2", "source": { "type": "git", "url": "https://github.com/colinmollenhour/Cm_Cache_Backend_Redis.git", - "reference": "dc2fd4fab8cb6b11e161f0eacdd5465c5b42b6f1" + "reference": "0b042d26b8c2aa093485bdc4bb03a0113a03778d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/colinmollenhour/Cm_Cache_Backend_Redis/zipball/dc2fd4fab8cb6b11e161f0eacdd5465c5b42b6f1", - "reference": "dc2fd4fab8cb6b11e161f0eacdd5465c5b42b6f1", + "url": "https://api.github.com/repos/colinmollenhour/Cm_Cache_Backend_Redis/zipball/0b042d26b8c2aa093485bdc4bb03a0113a03778d", + "reference": "0b042d26b8c2aa093485bdc4bb03a0113a03778d", "shasum": "" }, "require": { - "colinmollenhour/credis": "^1.14" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.4", - "phpunit/phpunit": "^9", - "zf1s/zend-cache": "~1.15" + "colinmollenhour/credis": "*" }, "type": "magento-module", "autoload": { @@ -489,7 +316,7 @@ }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause-Modification" + "BSD-3-Clause" ], "authors": [ { @@ -500,22 +327,22 @@ "homepage": "https://github.com/colinmollenhour/Cm_Cache_Backend_Redis", "support": { "issues": "https://github.com/colinmollenhour/Cm_Cache_Backend_Redis/issues", - "source": "https://github.com/colinmollenhour/Cm_Cache_Backend_Redis/tree/1.17.0" + "source": "https://github.com/colinmollenhour/Cm_Cache_Backend_Redis/tree/1.14.2" }, - "time": "2023-10-25T17:06:02+00:00" + "time": "2021-03-02T18:36:21+00:00" }, { "name": "colinmollenhour/credis", - "version": "v1.16.0", + "version": "v1.14.0", "source": { "type": "git", "url": "https://github.com/colinmollenhour/credis.git", - "reference": "5641140e14a9679f5a6f66c97268727f9558b881" + "reference": "dccc8a46586475075fbb012d8bd523b8a938c2dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/colinmollenhour/credis/zipball/5641140e14a9679f5a6f66c97268727f9558b881", - "reference": "5641140e14a9679f5a6f66c97268727f9558b881", + "url": "https://api.github.com/repos/colinmollenhour/credis/zipball/dccc8a46586475075fbb012d8bd523b8a938c2dc", + "reference": "dccc8a46586475075fbb012d8bd523b8a938c2dc", "shasum": "" }, "require": { @@ -547,22 +374,22 @@ "homepage": "https://github.com/colinmollenhour/credis", "support": { "issues": "https://github.com/colinmollenhour/credis/issues", - "source": "https://github.com/colinmollenhour/credis/tree/v1.16.0" + "source": "https://github.com/colinmollenhour/credis/tree/v1.14.0" }, - "time": "2023-10-26T17:02:51+00:00" + "time": "2022-11-09T01:18:39+00:00" }, { "name": "colinmollenhour/php-redis-session-abstract", - "version": "v1.5.2", + "version": "v1.5.0", "source": { "type": "git", "url": "https://github.com/colinmollenhour/php-redis-session-abstract.git", - "reference": "3d3e497bcf2e6d032c5a8f86aa180d181ad65dd3" + "reference": "b70508a9b2183d4fc13871cf9138a52fbef776f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/colinmollenhour/php-redis-session-abstract/zipball/3d3e497bcf2e6d032c5a8f86aa180d181ad65dd3", - "reference": "3d3e497bcf2e6d032c5a8f86aa180d181ad65dd3", + "url": "https://api.github.com/repos/colinmollenhour/php-redis-session-abstract/zipball/b70508a9b2183d4fc13871cf9138a52fbef776f3", + "reference": "b70508a9b2183d4fc13871cf9138a52fbef776f3", "shasum": "" }, "require": { @@ -591,22 +418,22 @@ "homepage": "https://github.com/colinmollenhour/php-redis-session-abstract", "support": { "issues": "https://github.com/colinmollenhour/php-redis-session-abstract/issues", - "source": "https://github.com/colinmollenhour/php-redis-session-abstract/tree/v1.5.2" + "source": "https://github.com/colinmollenhour/php-redis-session-abstract/tree/v1.5.0" }, - "time": "2023-11-03T14:58:07+00:00" + "time": "2022-06-20T23:17:36+00:00" }, { "name": "composer/ca-bundle", - "version": "1.3.7", + "version": "1.3.6", "source": { "type": "git", "url": "https://github.com/composer/ca-bundle.git", - "reference": "76e46335014860eec1aa5a724799a00a2e47cc85" + "reference": "90d087e988ff194065333d16bc5cf649872d9cdb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/76e46335014860eec1aa5a724799a00a2e47cc85", - "reference": "76e46335014860eec1aa5a724799a00a2e47cc85", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/90d087e988ff194065333d16bc5cf649872d9cdb", + "reference": "90d087e988ff194065333d16bc5cf649872d9cdb", "shasum": "" }, "require": { @@ -653,7 +480,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/ca-bundle/issues", - "source": "https://github.com/composer/ca-bundle/tree/1.3.7" + "source": "https://github.com/composer/ca-bundle/tree/1.3.6" }, "funding": [ { @@ -669,7 +496,7 @@ "type": "tidelift" } ], - "time": "2023-08-30T09:31:38+00:00" + "time": "2023-06-06T12:02:59+00:00" }, { "name": "composer/class-map-generator", @@ -746,16 +573,16 @@ }, { "name": "composer/composer", - "version": "2.6.5", + "version": "2.5.8", "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "4b0fe89db9e65b1e64df633a992e70a7a215ab33" + "reference": "4c516146167d1392c8b9b269bb7c24115d262164" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/4b0fe89db9e65b1e64df633a992e70a7a215ab33", - "reference": "4b0fe89db9e65b1e64df633a992e70a7a215ab33", + "url": "https://api.github.com/repos/composer/composer/zipball/4c516146167d1392c8b9b269bb7c24115d262164", + "reference": "4c516146167d1392c8b9b269bb7c24115d262164", "shasum": "" }, "require": { @@ -763,23 +590,23 @@ "composer/class-map-generator": "^1.0", "composer/metadata-minifier": "^1.0", "composer/pcre": "^2.1 || ^3.1", - "composer/semver": "^3.2.5", + "composer/semver": "^3.0", "composer/spdx-licenses": "^1.5.7", "composer/xdebug-handler": "^2.0.2 || ^3.0.3", "justinrainbow/json-schema": "^5.2.11", "php": "^7.2.5 || ^8.0", "psr/log": "^1.0 || ^2.0 || ^3.0", - "react/promise": "^2.8 || ^3", + "react/promise": "^2.8", "seld/jsonlint": "^1.4", "seld/phar-utils": "^1.2", "seld/signal-handler": "^2.0", - "symfony/console": "^5.4.11 || ^6.0.11 || ^7", - "symfony/filesystem": "^5.4 || ^6.0 || ^7", - "symfony/finder": "^5.4 || ^6.0 || ^7", + "symfony/console": "^5.4.11 || ^6.0.11", + "symfony/filesystem": "^5.4 || ^6.0", + "symfony/finder": "^5.4 || ^6.0", "symfony/polyfill-php73": "^1.24", "symfony/polyfill-php80": "^1.24", "symfony/polyfill-php81": "^1.24", - "symfony/process": "^5.4 || ^6.0 || ^7" + "symfony/process": "^5.4 || ^6.0" }, "require-dev": { "phpstan/phpstan": "^1.9.3", @@ -787,7 +614,7 @@ "phpstan/phpstan-phpunit": "^1.0", "phpstan/phpstan-strict-rules": "^1", "phpstan/phpstan-symfony": "^1.2.10", - "symfony/phpunit-bridge": "^6.0 || ^7" + "symfony/phpunit-bridge": "^6.0" }, "suggest": { "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", @@ -800,7 +627,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.6-dev" + "dev-main": "2.5-dev" }, "phpstan": { "includes": [ @@ -810,7 +637,7 @@ }, "autoload": { "psr-4": { - "Composer\\": "src/Composer/" + "Composer\\": "src/Composer" } }, "notification-url": "https://packagist.org/downloads/", @@ -839,8 +666,7 @@ "support": { "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/composer/issues", - "security": "https://github.com/composer/composer/security/policy", - "source": "https://github.com/composer/composer/tree/2.6.5" + "source": "https://github.com/composer/composer/tree/2.5.8" }, "funding": [ { @@ -856,7 +682,7 @@ "type": "tidelift" } ], - "time": "2023-10-06T08:11:52+00:00" + "time": "2023-06-09T15:13:21+00:00" }, { "name": "composer/metadata-minifier", @@ -929,16 +755,16 @@ }, { "name": "composer/pcre", - "version": "3.1.1", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9" + "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/00104306927c7a0919b4ced2aaa6782c1e61a3c9", - "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9", + "url": "https://api.github.com/repos/composer/pcre/zipball/4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", + "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", "shasum": "" }, "require": { @@ -980,7 +806,7 @@ ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.1.1" + "source": "https://github.com/composer/pcre/tree/3.1.0" }, "funding": [ { @@ -996,20 +822,20 @@ "type": "tidelift" } ], - "time": "2023-10-11T07:11:09+00:00" + "time": "2022-11-17T09:50:14+00:00" }, { "name": "composer/semver", - "version": "3.4.0", + "version": "3.3.2", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32" + "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32", - "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32", + "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9", + "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", "shasum": "" }, "require": { @@ -1059,9 +885,9 @@ "versioning" ], "support": { - "irc": "ircs://irc.libera.chat:6697/composer", + "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.4.0" + "source": "https://github.com/composer/semver/tree/3.3.2" }, "funding": [ { @@ -1077,20 +903,20 @@ "type": "tidelift" } ], - "time": "2023-08-31T09:50:34+00:00" + "time": "2022-04-01T19:23:25+00:00" }, { "name": "composer/spdx-licenses", - "version": "1.5.8", + "version": "1.5.7", "source": { "type": "git", "url": "https://github.com/composer/spdx-licenses.git", - "reference": "560bdcf8deb88ae5d611c80a2de8ea9d0358cc0a" + "reference": "c848241796da2abf65837d51dce1fae55a960149" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/560bdcf8deb88ae5d611c80a2de8ea9d0358cc0a", - "reference": "560bdcf8deb88ae5d611c80a2de8ea9d0358cc0a", + "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/c848241796da2abf65837d51dce1fae55a960149", + "reference": "c848241796da2abf65837d51dce1fae55a960149", "shasum": "" }, "require": { @@ -1139,9 +965,9 @@ "validator" ], "support": { - "irc": "ircs://irc.libera.chat:6697/composer", + "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/spdx-licenses/issues", - "source": "https://github.com/composer/spdx-licenses/tree/1.5.8" + "source": "https://github.com/composer/spdx-licenses/tree/1.5.7" }, "funding": [ { @@ -1157,7 +983,7 @@ "type": "tidelift" } ], - "time": "2023-11-20T07:44:33+00:00" + "time": "2022-05-23T07:37:50+00:00" }, { "name": "composer/xdebug-handler", @@ -1225,82 +1051,32 @@ ], "time": "2022-02-25T21:32:43+00:00" }, - { - "name": "dasprid/enum", - "version": "1.0.5", - "source": { - "type": "git", - "url": "https://github.com/DASPRiD/Enum.git", - "reference": "6faf451159fb8ba4126b925ed2d78acfce0dc016" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/DASPRiD/Enum/zipball/6faf451159fb8ba4126b925ed2d78acfce0dc016", - "reference": "6faf451159fb8ba4126b925ed2d78acfce0dc016", - "shasum": "" - }, - "require": { - "php": ">=7.1 <9.0" - }, - "require-dev": { - "phpunit/phpunit": "^7 | ^8 | ^9", - "squizlabs/php_codesniffer": "*" - }, - "type": "library", - "autoload": { - "psr-4": { - "DASPRiD\\Enum\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-2-Clause" - ], - "authors": [ - { - "name": "Ben Scholzen 'DASPRiD'", - "email": "mail@dasprids.de", - "homepage": "https://dasprids.de/", - "role": "Developer" - } - ], - "description": "PHP 7.1 enum implementation", - "keywords": [ - "enum", - "map" - ], - "support": { - "issues": "https://github.com/DASPRiD/Enum/issues", - "source": "https://github.com/DASPRiD/Enum/tree/1.0.5" - }, - "time": "2023-08-25T16:18:39+00:00" - }, { "name": "doctrine/annotations", - "version": "2.0.1", + "version": "1.14.3", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f" + "reference": "fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f", - "reference": "e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af", + "reference": "fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af", "shasum": "" }, "require": { - "doctrine/lexer": "^2 || ^3", + "doctrine/lexer": "^1 || ^2", "ext-tokenizer": "*", - "php": "^7.2 || ^8.0", + "php": "^7.1 || ^8.0", "psr/cache": "^1 || ^2 || ^3" }, "require-dev": { - "doctrine/cache": "^2.0", - "doctrine/coding-standard": "^10", - "phpstan/phpstan": "^1.8.0", + "doctrine/cache": "^1.11 || ^2.0", + "doctrine/coding-standard": "^9 || ^10", + "phpstan/phpstan": "~1.4.10 || ^1.8.0", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "symfony/cache": "^5.4 || ^6", + "symfony/cache": "^4.4 || ^5.4 || ^6", "vimeo/psalm": "^4.10" }, "suggest": { @@ -1347,33 +1123,81 @@ ], "support": { "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/2.0.1" + "source": "https://github.com/doctrine/annotations/tree/1.14.3" + }, + "time": "2023-02-01T09:20:38+00:00" + }, + { + "name": "doctrine/deprecations", + "version": "v1.1.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/deprecations.git", + "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", + "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^9", + "phpstan/phpstan": "1.4.10 || 1.10.15", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psalm/plugin-phpunit": "0.18.4", + "psr/log": "^1 || ^2 || ^3", + "vimeo/psalm": "4.30.0 || 5.12.0" + }, + "suggest": { + "psr/log": "Allows logging deprecations via PSR-3 logger implementation" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", + "homepage": "https://www.doctrine-project.org/", + "support": { + "issues": "https://github.com/doctrine/deprecations/issues", + "source": "https://github.com/doctrine/deprecations/tree/v1.1.1" }, - "time": "2023-02-02T22:02:53+00:00" + "time": "2023-06-03T09:27:29+00:00" }, { "name": "doctrine/lexer", - "version": "3.0.0", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "84a527db05647743d50373e0ec53a152f2cde568" + "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/84a527db05647743d50373e0ec53a152f2cde568", - "reference": "84a527db05647743d50373e0ec53a152f2cde568", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", + "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", "shasum": "" }, "require": { - "php": "^8.1" + "doctrine/deprecations": "^1.0", + "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^10", - "phpstan/phpstan": "^1.9", - "phpunit/phpunit": "^9.5", + "doctrine/coding-standard": "^9 || ^10", + "phpstan/phpstan": "^1.3", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", "psalm/plugin-phpunit": "^0.18.3", - "vimeo/psalm": "^5.0" + "vimeo/psalm": "^4.11 || ^5.0" }, "type": "library", "autoload": { @@ -1410,7 +1234,7 @@ ], "support": { "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/3.0.0" + "source": "https://github.com/doctrine/lexer/tree/2.1.0" }, "funding": [ { @@ -1426,205 +1250,90 @@ "type": "tidelift" } ], - "time": "2022-12-15T16:57:16+00:00" + "time": "2022-12-14T08:49:07+00:00" }, { - "name": "elastic/transport", - "version": "v8.8.0", + "name": "elasticsearch/elasticsearch", + "version": "v7.17.1", "source": { "type": "git", - "url": "git@github.com:elastic/elastic-transport-php.git", - "reference": "cdf9f63a16ec6bfb4c881ab89aa0e2a61fb7c20b" + "url": "git@github.com:elastic/elasticsearch-php.git", + "reference": "f1b8918f411b837ce5f6325e829a73518fd50367" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/elastic/elastic-transport-php/zipball/cdf9f63a16ec6bfb4c881ab89aa0e2a61fb7c20b", - "reference": "cdf9f63a16ec6bfb4c881ab89aa0e2a61fb7c20b", + "url": "https://api.github.com/repos/elastic/elasticsearch-php/zipball/f1b8918f411b837ce5f6325e829a73518fd50367", + "reference": "f1b8918f411b837ce5f6325e829a73518fd50367", "shasum": "" }, "require": { - "composer-runtime-api": "^2.0", - "php": "^7.4 || ^8.0", - "php-http/discovery": "^1.14", - "php-http/httplug": "^2.3", - "psr/http-client": "^1.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.0 || ^2.0", - "psr/log": "^1 || ^2 || ^3" + "ext-json": ">=1.3.7", + "ezimuel/ringphp": "^1.1.2", + "php": "^7.3 || ^8.0", + "psr/log": "^1|^2|^3" }, "require-dev": { - "nyholm/psr7": "^1.5", - "php-http/mock-client": "^1.5", - "phpstan/phpstan": "^1.4", - "phpunit/phpunit": "^9.5" + "ext-yaml": "*", + "ext-zip": "*", + "mockery/mockery": "^1.2", + "phpstan/phpstan": "^0.12", + "phpunit/phpunit": "^9.3", + "squizlabs/php_codesniffer": "^3.4", + "symfony/finder": "~4.0" + }, + "suggest": { + "ext-curl": "*", + "monolog/monolog": "Allows for client-level logging and tracing" }, "type": "library", "autoload": { + "files": [ + "src/autoload.php" + ], "psr-4": { - "Elastic\\Transport\\": "src/" + "Elasticsearch\\": "src/Elasticsearch/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "Apache-2.0", + "LGPL-2.1-only" + ], + "authors": [ + { + "name": "Zachary Tong" + }, + { + "name": "Enrico Zimuel" + } ], - "description": "HTTP transport PHP library for Elastic products", + "description": "PHP Client for Elasticsearch", "keywords": [ - "PSR_17", - "elastic", - "http", - "psr-18", - "psr-7", - "transport" + "client", + "elasticsearch", + "search" ], - "time": "2023-11-08T10:51:51+00:00" + "time": "2022-09-30T12:28:55+00:00" }, { - "name": "elasticsearch/elasticsearch", - "version": "v8.5.3", + "name": "ezimuel/guzzlestreams", + "version": "3.0.1", "source": { "type": "git", - "url": "git@github.com:elastic/elasticsearch-php.git", - "reference": "9d850932b8ab8129fd4baf597a1172e8f583b436" + "url": "https://github.com/ezimuel/guzzlestreams.git", + "reference": "abe3791d231167f14eb80d413420d1eab91163a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/elastic/elasticsearch-php/zipball/9d850932b8ab8129fd4baf597a1172e8f583b436", - "reference": "9d850932b8ab8129fd4baf597a1172e8f583b436", - "shasum": "" - }, - "require": { - "elastic/transport": "^8.5", - "guzzlehttp/guzzle": "^7.0", - "php": "^7.4 || ^8.0", - "psr/http-client": "^1.0", - "psr/http-message": "^1.0", - "psr/log": "^1|^2|^3" - }, - "require-dev": { - "ext-yaml": "*", - "ext-zip": "*", - "mockery/mockery": "^1.5", - "nyholm/psr7": "^1.5", - "php-http/mock-client": "^1.5", - "phpstan/phpstan": "^1.4", - "phpunit/phpunit": "^9.5", - "symfony/finder": "~4.0", - "symfony/http-client": "^5.0|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Elastic\\Elasticsearch\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PHP Client for Elasticsearch", - "keywords": [ - "client", - "elastic", - "elasticsearch", - "search" - ], - "time": "2022-11-22T14:15:58+00:00" - }, - { - "name": "endroid/qr-code", - "version": "4.8.5", - "source": { - "type": "git", - "url": "https://github.com/endroid/qr-code.git", - "reference": "0db25b506a8411a5e1644ebaa67123a6eb7b6a77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/endroid/qr-code/zipball/0db25b506a8411a5e1644ebaa67123a6eb7b6a77", - "reference": "0db25b506a8411a5e1644ebaa67123a6eb7b6a77", - "shasum": "" - }, - "require": { - "bacon/bacon-qr-code": "^2.0.5", - "php": "^8.1" - }, - "conflict": { - "khanamiryan/qrcode-detector-decoder": "^1.0.6" - }, - "require-dev": { - "endroid/quality": "dev-master", - "ext-gd": "*", - "khanamiryan/qrcode-detector-decoder": "^1.0.4||^2.0.2", - "setasign/fpdf": "^1.8.2" - }, - "suggest": { - "ext-gd": "Enables you to write PNG images", - "khanamiryan/qrcode-detector-decoder": "Enables you to use the image validator", - "roave/security-advisories": "Makes sure package versions with known security issues are not installed", - "setasign/fpdf": "Enables you to use the PDF writer" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.x-dev" - } - }, - "autoload": { - "psr-4": { - "Endroid\\QrCode\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jeroen van den Enden", - "email": "info@endroid.nl" - } - ], - "description": "Endroid QR Code", - "homepage": "https://github.com/endroid/qr-code", - "keywords": [ - "code", - "endroid", - "php", - "qr", - "qrcode" - ], - "support": { - "issues": "https://github.com/endroid/qr-code/issues", - "source": "https://github.com/endroid/qr-code/tree/4.8.5" - }, - "funding": [ - { - "url": "https://github.com/endroid", - "type": "github" - } - ], - "time": "2023-09-29T14:03:20+00:00" - }, - { - "name": "ezimuel/guzzlestreams", - "version": "3.1.0", - "source": { - "type": "git", - "url": "https://github.com/ezimuel/guzzlestreams.git", - "reference": "b4b5a025dfee70d6cd34c780e07330eb93d5b997" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ezimuel/guzzlestreams/zipball/b4b5a025dfee70d6cd34c780e07330eb93d5b997", - "reference": "b4b5a025dfee70d6cd34c780e07330eb93d5b997", + "url": "https://api.github.com/repos/ezimuel/guzzlestreams/zipball/abe3791d231167f14eb80d413420d1eab91163a8", + "reference": "abe3791d231167f14eb80d413420d1eab91163a8", "shasum": "" }, "require": { "php": ">=5.4.0" }, "require-dev": { - "phpunit/phpunit": "~9.0" + "phpunit/phpunit": "~4.0" }, "type": "library", "extra": { @@ -1655,9 +1364,9 @@ "stream" ], "support": { - "source": "https://github.com/ezimuel/guzzlestreams/tree/3.1.0" + "source": "https://github.com/ezimuel/guzzlestreams/tree/3.0.1" }, - "time": "2022-10-24T12:58:50+00:00" + "time": "2020-02-14T23:11:50+00:00" }, { "name": "ezimuel/ringphp", @@ -1718,20 +1427,20 @@ }, { "name": "ezyang/htmlpurifier", - "version": "v4.17.0", + "version": "v4.16.0", "source": { "type": "git", "url": "https://github.com/ezyang/htmlpurifier.git", - "reference": "bbc513d79acf6691fa9cf10f192c90dd2957f18c" + "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/bbc513d79acf6691fa9cf10f192c90dd2957f18c", - "reference": "bbc513d79acf6691fa9cf10f192c90dd2957f18c", + "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/523407fb06eb9e5f3d59889b3978d5bfe94299c8", + "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8", "shasum": "" }, "require": { - "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0" }, "require-dev": { "cerdic/css-tidy": "^1.7 || ^2.0", @@ -1773,80 +1482,104 @@ ], "support": { "issues": "https://github.com/ezyang/htmlpurifier/issues", - "source": "https://github.com/ezyang/htmlpurifier/tree/v4.17.0" + "source": "https://github.com/ezyang/htmlpurifier/tree/v4.16.0" }, - "time": "2023-11-17T15:01:25+00:00" + "time": "2022-09-18T07:06:19+00:00" }, { - "name": "google/recaptcha", - "version": "1.3.0", + "name": "fgrosse/phpasn1", + "version": "v2.5.0", "source": { "type": "git", - "url": "https://github.com/google/recaptcha.git", - "reference": "d59a801e98a4e9174814a6d71bbc268dff1202df" + "url": "https://github.com/fgrosse/PHPASN1.git", + "reference": "42060ed45344789fb9f21f9f1864fc47b9e3507b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/google/recaptcha/zipball/d59a801e98a4e9174814a6d71bbc268dff1202df", - "reference": "d59a801e98a4e9174814a6d71bbc268dff1202df", + "url": "https://api.github.com/repos/fgrosse/PHPASN1/zipball/42060ed45344789fb9f21f9f1864fc47b9e3507b", + "reference": "42060ed45344789fb9f21f9f1864fc47b9e3507b", "shasum": "" }, "require": { - "php": ">=8" + "php": "^7.1 || ^8.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^3.14", - "php-coveralls/php-coveralls": "^2.5", - "phpunit/phpunit": "^10" + "php-coveralls/php-coveralls": "~2.0", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + }, + "suggest": { + "ext-bcmath": "BCmath is the fallback extension for big integer calculations", + "ext-curl": "For loading OID information from the web if they have not bee defined statically", + "ext-gmp": "GMP is the preferred extension for big integer calculations", + "phpseclib/bcmath_compat": "BCmath polyfill for servers where neither GMP nor BCmath is available" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { "psr-4": { - "ReCaptcha\\": "src/ReCaptcha" + "FG\\": "lib/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" + ], + "authors": [ + { + "name": "Friedrich Große", + "email": "friedrich.grosse@gmail.com", + "homepage": "https://github.com/FGrosse", + "role": "Author" + }, + { + "name": "All contributors", + "homepage": "https://github.com/FGrosse/PHPASN1/contributors" + } ], - "description": "Client library for reCAPTCHA, a free service that protects websites from spam and abuse.", - "homepage": "https://www.google.com/recaptcha/", + "description": "A PHP Framework that allows you to encode and decode arbitrary ASN.1 structures using the ITU-T X.690 Encoding Rules.", + "homepage": "https://github.com/FGrosse/PHPASN1", "keywords": [ - "Abuse", - "captcha", - "recaptcha", - "spam" + "DER", + "asn.1", + "asn1", + "ber", + "binary", + "decoding", + "encoding", + "x.509", + "x.690", + "x509", + "x690" ], "support": { - "forum": "https://groups.google.com/forum/#!forum/recaptcha", - "issues": "https://github.com/google/recaptcha/issues", - "source": "https://github.com/google/recaptcha" + "issues": "https://github.com/fgrosse/PHPASN1/issues", + "source": "https://github.com/fgrosse/PHPASN1/tree/v2.5.0" }, - "time": "2023-02-18T17:41:46+00:00" + "abandoned": true, + "time": "2022-12-19T11:08:26+00:00" }, { "name": "guzzlehttp/guzzle", - "version": "7.8.0", + "version": "7.7.0", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "1110f66a6530a40fe7aea0378fe608ee2b2248f9" + "reference": "fb7566caccf22d74d1ab270de3551f72a58399f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/1110f66a6530a40fe7aea0378fe608ee2b2248f9", - "reference": "1110f66a6530a40fe7aea0378fe608ee2b2248f9", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/fb7566caccf22d74d1ab270de3551f72a58399f5", + "reference": "fb7566caccf22d74d1ab270de3551f72a58399f5", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.5.3 || ^2.0.1", - "guzzlehttp/psr7": "^1.9.1 || ^2.5.1", + "guzzlehttp/promises": "^1.5.3 || ^2.0", + "guzzlehttp/psr7": "^1.9.1 || ^2.4.5", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" @@ -1937,7 +1670,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.8.0" + "source": "https://github.com/guzzle/guzzle/tree/7.7.0" }, "funding": [ { @@ -1953,37 +1686,33 @@ "type": "tidelift" } ], - "time": "2023-08-27T10:20:53+00:00" + "time": "2023-05-21T14:04:53+00:00" }, { "name": "guzzlehttp/promises", - "version": "2.0.1", + "version": "1.5.3", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "111166291a0f8130081195ac4556a5587d7f1b5d" + "reference": "67ab6e18aaa14d753cc148911d273f6e6cb6721e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/111166291a0f8130081195ac4556a5587d7f1b5d", - "reference": "111166291a0f8130081195ac4556a5587d7f1b5d", + "url": "https://api.github.com/repos/guzzle/promises/zipball/67ab6e18aaa14d753cc148911d273f6e6cb6721e", + "reference": "67ab6e18aaa14d753cc148911d273f6e6cb6721e", "shasum": "" }, "require": { - "php": "^7.2.5 || ^8.0" + "php": ">=5.5" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", - "phpunit/phpunit": "^8.5.29 || ^9.5.23" + "symfony/phpunit-bridge": "^4.4 || ^5.1" }, "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - } - }, "autoload": { + "files": [ + "src/functions_include.php" + ], "psr-4": { "GuzzleHttp\\Promise\\": "src/" } @@ -2020,7 +1749,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/2.0.1" + "source": "https://github.com/guzzle/promises/tree/1.5.3" }, "funding": [ { @@ -2036,20 +1765,20 @@ "type": "tidelift" } ], - "time": "2023-08-03T15:11:55+00:00" + "time": "2023-05-21T12:31:43+00:00" }, { "name": "guzzlehttp/psr7", - "version": "2.6.1", + "version": "2.5.0", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "be45764272e8873c72dbe3d2edcfdfcc3bc9f727" + "reference": "b635f279edd83fc275f822a1188157ffea568ff6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/be45764272e8873c72dbe3d2edcfdfcc3bc9f727", - "reference": "be45764272e8873c72dbe3d2edcfdfcc3bc9f727", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/b635f279edd83fc275f822a1188157ffea568ff6", + "reference": "b635f279edd83fc275f822a1188157ffea568ff6", "shasum": "" }, "require": { @@ -2136,7 +1865,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.6.1" + "source": "https://github.com/guzzle/psr7/tree/2.5.0" }, "funding": [ { @@ -2152,20 +1881,20 @@ "type": "tidelift" } ], - "time": "2023-08-27T10:13:57+00:00" + "time": "2023-04-17T16:11:26+00:00" }, { "name": "justinrainbow/json-schema", - "version": "v5.2.13", + "version": "5.2.12", "source": { "type": "git", "url": "https://github.com/justinrainbow/json-schema.git", - "reference": "fbbe7e5d79f618997bc3332a6f49246036c45793" + "reference": "ad87d5a5ca981228e0e205c2bc7dfb8e24559b60" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/fbbe7e5d79f618997bc3332a6f49246036c45793", - "reference": "fbbe7e5d79f618997bc3332a6f49246036c45793", + "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/ad87d5a5ca981228e0e205c2bc7dfb8e24559b60", + "reference": "ad87d5a5ca981228e0e205c2bc7dfb8e24559b60", "shasum": "" }, "require": { @@ -2220,22 +1949,22 @@ ], "support": { "issues": "https://github.com/justinrainbow/json-schema/issues", - "source": "https://github.com/justinrainbow/json-schema/tree/v5.2.13" + "source": "https://github.com/justinrainbow/json-schema/tree/5.2.12" }, - "time": "2023-09-26T02:20:38+00:00" + "time": "2022-04-13T08:02:27+00:00" }, { "name": "laminas/laminas-captcha", - "version": "2.17.0", + "version": "2.15.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-captcha.git", - "reference": "981b3d1e287653b1fc5b71859964508ac0a2d7cb" + "reference": "de816814f52c67b33db614deb6227d46df531bc6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-captcha/zipball/981b3d1e287653b1fc5b71859964508ac0a2d7cb", - "reference": "981b3d1e287653b1fc5b71859964508ac0a2d7cb", + "url": "https://api.github.com/repos/laminas/laminas-captcha/zipball/de816814f52c67b33db614deb6227d46df531bc6", + "reference": "de816814f52c67b33db614deb6227d46df531bc6", "shasum": "" }, "require": { @@ -2244,17 +1973,17 @@ "laminas/laminas-stdlib": "^3.10.1", "laminas/laminas-text": "^2.9.0", "laminas/laminas-validator": "^2.19.0", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0" }, "conflict": { "zendframework/zend-captcha": "*" }, "require-dev": { "ext-gd": "*", - "laminas/laminas-coding-standard": "~2.5.0", + "laminas/laminas-coding-standard": "~2.4.0", "phpunit/phpunit": "^9.5.26", - "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.1" + "psalm/plugin-phpunit": "^0.18.0", + "vimeo/psalm": "^4.29.0" }, "suggest": { "laminas/laminas-i18n-resources": "Translations of captcha messages" @@ -2289,33 +2018,33 @@ "type": "community_bridge" } ], - "time": "2023-10-18T10:03:37+00:00" + "time": "2022-11-15T23:25:43+00:00" }, { "name": "laminas/laminas-code", - "version": "4.13.0", + "version": "4.8.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-code.git", - "reference": "7353d4099ad5388e84737dd16994316a04f48dbf" + "reference": "dd19fe8e07cc3f374308565667eecd4958c22106" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-code/zipball/7353d4099ad5388e84737dd16994316a04f48dbf", - "reference": "7353d4099ad5388e84737dd16994316a04f48dbf", + "url": "https://api.github.com/repos/laminas/laminas-code/zipball/dd19fe8e07cc3f374308565667eecd4958c22106", + "reference": "dd19fe8e07cc3f374308565667eecd4958c22106", "shasum": "" }, "require": { - "php": "~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~8.1.0 || ~8.2.0" }, "require-dev": { - "doctrine/annotations": "^2.0.1", + "doctrine/annotations": "^1.13.3", "ext-phar": "*", - "laminas/laminas-coding-standard": "^2.5.0", - "laminas/laminas-stdlib": "^3.17.0", - "phpunit/phpunit": "^10.3.3", - "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.15.0" + "laminas/laminas-coding-standard": "^2.3.0", + "laminas/laminas-stdlib": "^3.6.1", + "phpunit/phpunit": "^9.5.26", + "psalm/plugin-phpunit": "^0.18.0", + "vimeo/psalm": "^5.1.0" }, "suggest": { "doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features", @@ -2352,26 +2081,26 @@ "type": "community_bridge" } ], - "time": "2023-10-18T10:00:55+00:00" + "time": "2022-12-08T02:08:23+00:00" }, { "name": "laminas/laminas-config", - "version": "3.9.0", + "version": "3.8.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-config.git", - "reference": "e53717277f6c22b1c697a46473b9a5ec9a438efa" + "reference": "46baad58d0b12cf98539e04334eff40a1fdfb9a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-config/zipball/e53717277f6c22b1c697a46473b9a5ec9a438efa", - "reference": "e53717277f6c22b1c697a46473b9a5ec9a438efa", + "url": "https://api.github.com/repos/laminas/laminas-config/zipball/46baad58d0b12cf98539e04334eff40a1fdfb9a0", + "reference": "46baad58d0b12cf98539e04334eff40a1fdfb9a0", "shasum": "" }, "require": { "ext-json": "*", "laminas/laminas-stdlib": "^3.6", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", + "php": "~8.0.0 || ~8.1.0 || ~8.2.0", "psr/container": "^1.0" }, "conflict": { @@ -2420,28 +2149,28 @@ "type": "community_bridge" } ], - "time": "2023-09-19T12:02:54+00:00" + "time": "2022-10-16T14:21:22+00:00" }, { "name": "laminas/laminas-crypt", - "version": "3.11.0", + "version": "3.9.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-crypt.git", - "reference": "098fc61a895d1ff5d1c2b861525b4428bf6c3240" + "reference": "56ab1b195dad5456753601ff2e8e3d3fd9392d1a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-crypt/zipball/098fc61a895d1ff5d1c2b861525b4428bf6c3240", - "reference": "098fc61a895d1ff5d1c2b861525b4428bf6c3240", + "url": "https://api.github.com/repos/laminas/laminas-crypt/zipball/56ab1b195dad5456753601ff2e8e3d3fd9392d1a", + "reference": "56ab1b195dad5456753601ff2e8e3d3fd9392d1a", "shasum": "" }, "require": { "ext-mbstring": "*", "laminas/laminas-math": "^3.4", "laminas/laminas-servicemanager": "^3.11.2", - "laminas/laminas-stdlib": "^3.8", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", + "laminas/laminas-stdlib": "^3.6", + "php": "~8.0.0 || ~8.1.0 || ~8.2.0", "psr/container": "^1.1" }, "conflict": { @@ -2484,20 +2213,20 @@ "type": "community_bridge" } ], - "time": "2023-11-06T23:02:42+00:00" + "time": "2022-10-16T15:51:01+00:00" }, { "name": "laminas/laminas-db", - "version": "2.18.0", + "version": "2.16.3", "source": { "type": "git", "url": "https://github.com/laminas/laminas-db.git", - "reference": "4df7a3f7ffe268e8683306fcec125c269408b295" + "reference": "dadd9a19d2f9e89aa59205572b928892b91ff1da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-db/zipball/4df7a3f7ffe268e8683306fcec125c269408b295", - "reference": "4df7a3f7ffe268e8683306fcec125c269408b295", + "url": "https://api.github.com/repos/laminas/laminas-db/zipball/dadd9a19d2f9e89aa59205572b928892b91ff1da", + "reference": "dadd9a19d2f9e89aa59205572b928892b91ff1da", "shasum": "" }, "require": { @@ -2555,25 +2284,25 @@ "type": "community_bridge" } ], - "time": "2023-05-05T16:22:28+00:00" + "time": "2022-12-17T16:31:58+00:00" }, { "name": "laminas/laminas-di", - "version": "3.13.0", + "version": "3.11.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-di.git", - "reference": "b7178e66a61cc46f6c5c7ea16009daff59e82154" + "reference": "45c9dfd57370617d2028e597061c4ef2a2ea0118" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-di/zipball/b7178e66a61cc46f6c5c7ea16009daff59e82154", - "reference": "b7178e66a61cc46f6c5c7ea16009daff59e82154", + "url": "https://api.github.com/repos/laminas/laminas-di/zipball/45c9dfd57370617d2028e597061c4ef2a2ea0118", + "reference": "45c9dfd57370617d2028e597061c4ef2a2ea0118", "shasum": "" }, "require": { - "laminas/laminas-stdlib": "^3.18.0", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0", + "laminas/laminas-stdlib": "^3.6", + "php": "~8.0.0 || ~8.1.0 || ~8.2.0", "psr/container": "^1.1.1", "psr/log": "^1.1.4 || ^3.0.0" }, @@ -2583,14 +2312,14 @@ "zendframework/zend-di": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.5.0", - "laminas/laminas-servicemanager": "^3.22", + "laminas/laminas-coding-standard": "~2.4.0", + "laminas/laminas-servicemanager": "^3.12", "mikey179/vfsstream": "^1.6.11@alpha", "phpbench/phpbench": "^1.2.7", "phpunit/phpunit": "^9.5.26", - "psalm/plugin-phpunit": "^0.18.0", + "psalm/plugin-phpunit": "^0.16.1", "squizlabs/php_codesniffer": "^3.7.1", - "vimeo/psalm": "^5.0" + "vimeo/psalm": "^4.10" }, "suggest": { "laminas/laminas-servicemanager": "An IoC container without auto wiring capabilities" @@ -2632,37 +2361,37 @@ "type": "community_bridge" } ], - "time": "2023-11-02T16:59:30+00:00" + "time": "2022-11-25T10:24:48+00:00" }, { "name": "laminas/laminas-escaper", - "version": "2.13.0", + "version": "2.12.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-escaper.git", - "reference": "af459883f4018d0f8a0c69c7a209daef3bf973ba" + "reference": "ee7a4c37bf3d0e8c03635d5bddb5bb3184ead490" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/af459883f4018d0f8a0c69c7a209daef3bf973ba", - "reference": "af459883f4018d0f8a0c69c7a209daef3bf973ba", + "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/ee7a4c37bf3d0e8c03635d5bddb5bb3184ead490", + "reference": "ee7a4c37bf3d0e8c03635d5bddb5bb3184ead490", "shasum": "" }, "require": { "ext-ctype": "*", "ext-mbstring": "*", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0" }, "conflict": { "zendframework/zend-escaper": "*" }, "require-dev": { - "infection/infection": "^0.27.0", - "laminas/laminas-coding-standard": "~2.5.0", + "infection/infection": "^0.26.6", + "laminas/laminas-coding-standard": "~2.4.0", "maglnet/composer-require-checker": "^3.8.0", - "phpunit/phpunit": "^9.6.7", - "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.9" + "phpunit/phpunit": "^9.5.18", + "psalm/plugin-phpunit": "^0.17.0", + "vimeo/psalm": "^4.22.0" }, "type": "library", "autoload": { @@ -2694,37 +2423,37 @@ "type": "community_bridge" } ], - "time": "2023-10-10T08:35:13+00:00" + "time": "2022-10-10T10:11:09+00:00" }, { "name": "laminas/laminas-eventmanager", - "version": "3.12.0", + "version": "3.9.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-eventmanager.git", - "reference": "4a576922c00cc7838d60d004a7bd6f5a02c23b57" + "reference": "74c091fb0da37744e7d215ef5bd3564c77f6385e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-eventmanager/zipball/4a576922c00cc7838d60d004a7bd6f5a02c23b57", - "reference": "4a576922c00cc7838d60d004a7bd6f5a02c23b57", + "url": "https://api.github.com/repos/laminas/laminas-eventmanager/zipball/74c091fb0da37744e7d215ef5bd3564c77f6385e", + "reference": "74c091fb0da37744e7d215ef5bd3564c77f6385e", "shasum": "" }, "require": { - "php": "~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0" }, "conflict": { "container-interop/container-interop": "<1.2", "zendframework/zend-eventmanager": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.5.0", - "laminas/laminas-stdlib": "^3.17", - "phpbench/phpbench": "^1.2.10", - "phpunit/phpunit": "^10.4.1", - "psalm/plugin-phpunit": "^0.18.4", + "laminas/laminas-coding-standard": "~2.4.0", + "laminas/laminas-stdlib": "^3.15", + "phpbench/phpbench": "^1.2.7", + "phpunit/phpunit": "^9.5.26", + "psalm/plugin-phpunit": "^0.18.0", "psr/container": "^1.1.2 || ^2.0.2", - "vimeo/psalm": "^5.11" + "vimeo/psalm": "^5.0.0" }, "suggest": { "laminas/laminas-stdlib": "^2.7.3 || ^3.0, to use the FilterChain feature", @@ -2762,45 +2491,45 @@ "type": "community_bridge" } ], - "time": "2023-10-18T16:36:45+00:00" + "time": "2022-12-10T16:36:52+00:00" }, { "name": "laminas/laminas-feed", - "version": "2.22.0", + "version": "2.20.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-feed.git", - "reference": "669792b819fca7274698147ad7a2ecc1b0a9b141" + "reference": "508ebef6e622f2f2ce3dd0559739ffd0dfa3b938" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-feed/zipball/669792b819fca7274698147ad7a2ecc1b0a9b141", - "reference": "669792b819fca7274698147ad7a2ecc1b0a9b141", + "url": "https://api.github.com/repos/laminas/laminas-feed/zipball/508ebef6e622f2f2ce3dd0559739ffd0dfa3b938", + "reference": "508ebef6e622f2f2ce3dd0559739ffd0dfa3b938", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "laminas/laminas-escaper": "^2.9", + "laminas/laminas-servicemanager": "^3.14.0", "laminas/laminas-stdlib": "^3.6", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0" }, "conflict": { "laminas/laminas-servicemanager": "<3.3", "zendframework/zend-feed": "*" }, "require-dev": { - "laminas/laminas-cache": "^2.13.2 || ^3.11", - "laminas/laminas-cache-storage-adapter-memory": "^1.1.0 || ^2.2", - "laminas/laminas-coding-standard": "~2.5.0", - "laminas/laminas-db": "^2.18", - "laminas/laminas-http": "^2.18", - "laminas/laminas-servicemanager": "^3.21.0", - "laminas/laminas-validator": "^2.38", - "phpunit/phpunit": "^10.3.1", - "psalm/plugin-phpunit": "^0.18.4", - "psr/http-message": "^2.0", - "vimeo/psalm": "^5.14.1" + "laminas/laminas-cache": "^2.13.2 || ^3.6", + "laminas/laminas-cache-storage-adapter-memory": "^1.1.0 || ^2.1", + "laminas/laminas-coding-standard": "~2.4.0", + "laminas/laminas-db": "^2.15", + "laminas/laminas-http": "^2.17.0", + "laminas/laminas-validator": "^2.26", + "phpunit/phpunit": "^9.5.25", + "psalm/plugin-phpunit": "^0.18.0", + "psr/http-message": "^1.0.1", + "vimeo/psalm": "^5.1.0" }, "suggest": { "laminas/laminas-cache": "Laminas\\Cache component, for optionally caching feeds between requests", @@ -2842,7 +2571,7 @@ "type": "community_bridge" } ], - "time": "2023-10-11T20:16:37+00:00" + "time": "2022-12-03T19:40:30+00:00" }, { "name": "laminas/laminas-file", @@ -2914,38 +2643,37 @@ }, { "name": "laminas/laminas-filter", - "version": "2.33.0", + "version": "2.30.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-filter.git", - "reference": "6ad64828d25ec4bdf226ec5096aabb04aa710324" + "reference": "97e3ce0fa868567aa433ed34d6f57ee703d70d3e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-filter/zipball/6ad64828d25ec4bdf226ec5096aabb04aa710324", - "reference": "6ad64828d25ec4bdf226ec5096aabb04aa710324", + "url": "https://api.github.com/repos/laminas/laminas-filter/zipball/97e3ce0fa868567aa433ed34d6f57ee703d70d3e", + "reference": "97e3ce0fa868567aa433ed34d6f57ee703d70d3e", "shasum": "" }, "require": { "ext-mbstring": "*", - "laminas/laminas-servicemanager": "^3.21.0", + "laminas/laminas-servicemanager": "^3.14.0", "laminas/laminas-stdlib": "^3.13.0", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0" }, "conflict": { "laminas/laminas-validator": "<2.10.1", "zendframework/zend-filter": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.5.0", - "laminas/laminas-crypt": "^3.10", - "laminas/laminas-i18n": "^2.23.1", - "laminas/laminas-uri": "^2.11", + "laminas/laminas-coding-standard": "~2.4.0", + "laminas/laminas-crypt": "^3.9", + "laminas/laminas-uri": "^2.10", "pear/archive_tar": "^1.4.14", - "phpunit/phpunit": "^10.4.2", + "phpunit/phpunit": "^9.5.27", "psalm/plugin-phpunit": "^0.18.4", - "psr/http-factory": "^1.0.2", - "vimeo/psalm": "^5.15.0" + "psr/http-factory": "^1.0.1", + "vimeo/psalm": "^5.3" }, "suggest": { "laminas/laminas-crypt": "Laminas\\Crypt component, for encryption filters", @@ -2989,28 +2717,28 @@ "type": "community_bridge" } ], - "time": "2023-11-03T13:29:10+00:00" + "time": "2022-12-19T17:34:24+00:00" }, { "name": "laminas/laminas-http", - "version": "2.19.0", + "version": "2.18.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-http.git", - "reference": "26dd6d1177e25d970058863c2afed12bb9dbff4d" + "reference": "76de9008f889bc7088f85a41d0d2b06c2b59c53d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-http/zipball/26dd6d1177e25d970058863c2afed12bb9dbff4d", - "reference": "26dd6d1177e25d970058863c2afed12bb9dbff4d", + "url": "https://api.github.com/repos/laminas/laminas-http/zipball/76de9008f889bc7088f85a41d0d2b06c2b59c53d", + "reference": "76de9008f889bc7088f85a41d0d2b06c2b59c53d", "shasum": "" }, "require": { - "laminas/laminas-loader": "^2.10", + "laminas/laminas-loader": "^2.8", "laminas/laminas-stdlib": "^3.6", - "laminas/laminas-uri": "^2.11", + "laminas/laminas-uri": "^2.9.1", "laminas/laminas-validator": "^2.15", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0" }, "conflict": { "zendframework/zend-http": "*" @@ -3054,45 +2782,46 @@ "type": "community_bridge" } ], - "time": "2023-11-02T16:27:41+00:00" + "time": "2022-11-23T15:45:41+00:00" }, { "name": "laminas/laminas-i18n", - "version": "2.24.1", + "version": "2.21.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-i18n.git", - "reference": "dafb5eddfb43575befd29aeb195c55f92834fd32" + "reference": "fbd2d0373aaced4769cba2bf3d1425d55f68abb1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-i18n/zipball/dafb5eddfb43575befd29aeb195c55f92834fd32", - "reference": "dafb5eddfb43575befd29aeb195c55f92834fd32", + "url": "https://api.github.com/repos/laminas/laminas-i18n/zipball/fbd2d0373aaced4769cba2bf3d1425d55f68abb1", + "reference": "fbd2d0373aaced4769cba2bf3d1425d55f68abb1", "shasum": "" }, "require": { "ext-intl": "*", - "laminas/laminas-servicemanager": "^3.21.0", - "laminas/laminas-stdlib": "^3.0", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0" + "laminas/laminas-servicemanager": "^3.14.0", + "laminas/laminas-stdlib": "^2.7 || ^3.0", + "php": "~8.0.0 || ~8.1.0 || ~8.2.0" }, "conflict": { "laminas/laminas-view": "<2.20.0", + "phpspec/prophecy": "<1.9.0", "zendframework/zend-i18n": "*" }, "require-dev": { - "laminas/laminas-cache": "^3.11.0", - "laminas/laminas-cache-storage-adapter-memory": "^2.3.0", - "laminas/laminas-cache-storage-deprecated-factory": "^1.1", - "laminas/laminas-coding-standard": "~2.5.0", - "laminas/laminas-config": "^3.9.0", - "laminas/laminas-eventmanager": "^3.12", - "laminas/laminas-filter": "^2.33", - "laminas/laminas-validator": "^2.41", - "laminas/laminas-view": "^2.32", - "phpunit/phpunit": "^10.4.2", - "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.15.0" + "laminas/laminas-cache": "^3.8", + "laminas/laminas-cache-storage-adapter-memory": "^2.2.0", + "laminas/laminas-cache-storage-deprecated-factory": "^1.0.1", + "laminas/laminas-coding-standard": "~2.4.0", + "laminas/laminas-config": "^3.8.0", + "laminas/laminas-eventmanager": "^3.7", + "laminas/laminas-filter": "^2.28.1", + "laminas/laminas-validator": "^2.28", + "laminas/laminas-view": "^2.25", + "phpunit/phpunit": "^9.5.26", + "psalm/plugin-phpunit": "^0.18.3", + "vimeo/psalm": "^5.0.0" }, "suggest": { "laminas/laminas-cache": "You should install this package to cache the translations", @@ -3139,31 +2868,31 @@ "type": "community_bridge" } ], - "time": "2023-11-08T08:56:45+00:00" + "time": "2022-12-02T17:15:52+00:00" }, { "name": "laminas/laminas-json", - "version": "3.6.0", + "version": "3.5.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-json.git", - "reference": "53ff787b20b77197f38680c737e8dfffa846b85b" + "reference": "7a8a1d7bf2d05dd6c1fbd7c0868d3848cf2b57ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-json/zipball/53ff787b20b77197f38680c737e8dfffa846b85b", - "reference": "53ff787b20b77197f38680c737e8dfffa846b85b", + "url": "https://api.github.com/repos/laminas/laminas-json/zipball/7a8a1d7bf2d05dd6c1fbd7c0868d3848cf2b57ec", + "reference": "7a8a1d7bf2d05dd6c1fbd7c0868d3848cf2b57ec", "shasum": "" }, "require": { - "php": "~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0" }, "conflict": { "zendframework/zend-json": "*" }, "require-dev": { "laminas/laminas-coding-standard": "~2.4.0", - "laminas/laminas-stdlib": "^2.7.7 || ^3.8", + "laminas/laminas-stdlib": "^2.7.7 || ^3.1", "phpunit/phpunit": "^9.5.25" }, "suggest": { @@ -3200,24 +2929,24 @@ "type": "community_bridge" } ], - "time": "2023-10-18T09:54:55+00:00" + "time": "2022-10-17T04:06:45+00:00" }, { "name": "laminas/laminas-loader", - "version": "2.10.0", + "version": "2.9.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-loader.git", - "reference": "e6fe952304ef40ce45cd814751ab35d42afdad12" + "reference": "51ed9c3fa42d1098a9997571730c0cbf42d078d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-loader/zipball/e6fe952304ef40ce45cd814751ab35d42afdad12", - "reference": "e6fe952304ef40ce45cd814751ab35d42afdad12", + "url": "https://api.github.com/repos/laminas/laminas-loader/zipball/51ed9c3fa42d1098a9997571730c0cbf42d078d3", + "reference": "51ed9c3fa42d1098a9997571730c0cbf42d078d3", "shasum": "" }, "require": { - "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0" }, "conflict": { "zendframework/zend-loader": "*" @@ -3256,44 +2985,46 @@ "type": "community_bridge" } ], - "time": "2023-10-18T09:58:51+00:00" + "time": "2022-10-16T12:50:49+00:00" }, { "name": "laminas/laminas-mail", - "version": "2.25.1", + "version": "2.21.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-mail.git", - "reference": "110e04497395123998220e244cceecb167cc6dda" + "reference": "451b33522a4e7f17e097e45fceea4752c86a2ace" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-mail/zipball/110e04497395123998220e244cceecb167cc6dda", - "reference": "110e04497395123998220e244cceecb167cc6dda", + "url": "https://api.github.com/repos/laminas/laminas-mail/zipball/451b33522a4e7f17e097e45fceea4752c86a2ace", + "reference": "451b33522a4e7f17e097e45fceea4752c86a2ace", "shasum": "" }, "require": { "ext-iconv": "*", - "laminas/laminas-loader": "^2.9.0", - "laminas/laminas-mime": "^2.11.0", - "laminas/laminas-stdlib": "^3.17.0", - "laminas/laminas-validator": "^2.31.0", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0", - "symfony/polyfill-intl-idn": "^1.27.0", - "symfony/polyfill-mbstring": "^1.27.0", + "laminas/laminas-loader": "^2.8.0", + "laminas/laminas-mime": "^2.10.0", + "laminas/laminas-stdlib": "^3.11.0", + "laminas/laminas-validator": "^2.23.0", + "php": "~8.0.0 || ~8.1.0 || ~8.2.0", + "symfony/polyfill-intl-idn": "^1.26.0", + "symfony/polyfill-mbstring": "^1.16.0", "webmozart/assert": "^1.11.0" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.5.0", - "laminas/laminas-db": "^2.18", - "laminas/laminas-servicemanager": "^3.22.1", - "phpunit/phpunit": "^10.4.2", + "laminas/laminas-coding-standard": "~2.4.0", + "laminas/laminas-crypt": "^3.9.0", + "laminas/laminas-db": "^2.16", + "laminas/laminas-servicemanager": "^3.20", + "phpunit/phpunit": "^9.5.26", "psalm/plugin-phpunit": "^0.18.4", - "symfony/process": "^6.3.4", - "vimeo/psalm": "^5.15" + "symfony/process": "^6.0.11", + "vimeo/psalm": "^5.1" }, "suggest": { - "laminas/laminas-servicemanager": "^3.21 when using SMTP to deliver messages" + "laminas/laminas-crypt": "^3.8 Crammd5 support in SMTP Auth", + "laminas/laminas-servicemanager": "^3.16 when using SMTP to deliver messages" }, "type": "library", "extra": { @@ -3331,25 +3062,25 @@ "type": "community_bridge" } ], - "time": "2023-11-02T10:32:34+00:00" + "time": "2022-12-05T18:42:59+00:00" }, { "name": "laminas/laminas-math", - "version": "3.7.0", + "version": "3.6.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-math.git", - "reference": "3e90445828fd64308de2a600b48c3df051b3b17a" + "reference": "5770fc632a3614f5526632a8b70f41b65130460e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-math/zipball/3e90445828fd64308de2a600b48c3df051b3b17a", - "reference": "3e90445828fd64308de2a600b48c3df051b3b17a", + "url": "https://api.github.com/repos/laminas/laminas-math/zipball/5770fc632a3614f5526632a8b70f41b65130460e", + "reference": "5770fc632a3614f5526632a8b70f41b65130460e", "shasum": "" }, "require": { "ext-mbstring": "*", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0" }, "conflict": { "zendframework/zend-math": "*" @@ -3398,25 +3129,25 @@ "type": "community_bridge" } ], - "time": "2023-10-18T09:53:37+00:00" + "time": "2022-10-16T14:22:28+00:00" }, { "name": "laminas/laminas-mime", - "version": "2.12.0", + "version": "2.11.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-mime.git", - "reference": "08cc544778829b7d68d27a097885bd6e7130135e" + "reference": "60ec04b755821c79c1987ce291b44e69f2c0831f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-mime/zipball/08cc544778829b7d68d27a097885bd6e7130135e", - "reference": "08cc544778829b7d68d27a097885bd6e7130135e", + "url": "https://api.github.com/repos/laminas/laminas-mime/zipball/60ec04b755821c79c1987ce291b44e69f2c0831f", + "reference": "60ec04b755821c79c1987ce291b44e69f2c0831f", "shasum": "" }, "require": { "laminas/laminas-stdlib": "^2.7 || ^3.0", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0" }, "conflict": { "zendframework/zend-mime": "*" @@ -3459,41 +3190,41 @@ "type": "community_bridge" } ], - "time": "2023-11-02T16:47:19+00:00" + "time": "2022-10-18T08:38:15+00:00" }, { "name": "laminas/laminas-modulemanager", - "version": "2.15.0", + "version": "2.14.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-modulemanager.git", - "reference": "4c4e6f29f0b1a770c8ce4f30dd3a48eb45ed7d3b" + "reference": "fb0a2c34423f7d3321dd7c42dc5fc4db905a99ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-modulemanager/zipball/4c4e6f29f0b1a770c8ce4f30dd3a48eb45ed7d3b", - "reference": "4c4e6f29f0b1a770c8ce4f30dd3a48eb45ed7d3b", + "url": "https://api.github.com/repos/laminas/laminas-modulemanager/zipball/fb0a2c34423f7d3321dd7c42dc5fc4db905a99ac", + "reference": "fb0a2c34423f7d3321dd7c42dc5fc4db905a99ac", "shasum": "" }, "require": { - "brick/varexporter": "^0.3.2 || ^0.4", + "brick/varexporter": "^0.3.2", "laminas/laminas-config": "^3.7", "laminas/laminas-eventmanager": "^3.4", "laminas/laminas-stdlib": "^3.6", - "php": "~8.1.0 || ~8.2.0|| ~8.3.0", + "php": "~8.0.0 || ~8.1.0 || ~8.2.0", "webimpress/safe-writer": "^1.0.2 || ^2.1" }, "conflict": { "zendframework/zend-modulemanager": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "^2.5", - "laminas/laminas-loader": "^2.10", - "laminas/laminas-mvc": "^3.6.1", - "laminas/laminas-servicemanager": "^3.22.1", - "phpunit/phpunit": "^10.4.2", - "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.15" + "laminas/laminas-coding-standard": "^2.3", + "laminas/laminas-loader": "^2.9.0", + "laminas/laminas-mvc": "^3.5.0", + "laminas/laminas-servicemanager": "^3.19.0", + "phpunit/phpunit": "^9.5.25", + "psalm/plugin-phpunit": "^0.17.0", + "vimeo/psalm": "^4.29" }, "suggest": { "laminas/laminas-console": "Laminas\\Console component", @@ -3531,20 +3262,20 @@ "type": "community_bridge" } ], - "time": "2023-11-02T09:09:35+00:00" + "time": "2022-10-28T09:21:04+00:00" }, { "name": "laminas/laminas-mvc", - "version": "3.7.0", + "version": "3.6.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-mvc.git", - "reference": "3f65447addf487189000e54dc1525cd952951da4" + "reference": "c54eaebe3810feaca834cc38ef0a962c89ff2431" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-mvc/zipball/3f65447addf487189000e54dc1525cd952951da4", - "reference": "3f65447addf487189000e54dc1525cd952951da4", + "url": "https://api.github.com/repos/laminas/laminas-mvc/zipball/c54eaebe3810feaca834cc38ef0a962c89ff2431", + "reference": "c54eaebe3810feaca834cc38ef0a962c89ff2431", "shasum": "" }, "require": { @@ -3552,22 +3283,24 @@ "laminas/laminas-eventmanager": "^3.4", "laminas/laminas-http": "^2.15", "laminas/laminas-modulemanager": "^2.8", - "laminas/laminas-router": "^3.11.1", - "laminas/laminas-servicemanager": "^3.20.0", + "laminas/laminas-router": "^3.5", + "laminas/laminas-servicemanager": "^3.7", "laminas/laminas-stdlib": "^3.6", "laminas/laminas-view": "^2.14", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0" }, "conflict": { "zendframework/zend-mvc": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "^2.5.0", - "laminas/laminas-json": "^3.6", - "phpspec/prophecy": "^1.17.0", - "phpspec/prophecy-phpunit": "^2.0.2", - "phpunit/phpunit": "^9.6.13", - "webmozart/assert": "^1.11" + "http-interop/http-middleware": "^0.4.1", + "laminas/laminas-coding-standard": "^2.4.0", + "laminas/laminas-json": "^3.3", + "laminas/laminas-psr7bridge": "^1.8", + "laminas/laminas-stratigility": ">=2.0.1 <2.2", + "phpspec/prophecy": "^1.15.0", + "phpspec/prophecy-phpunit": "^2.0.1", + "phpunit/phpunit": "^9.5.25" }, "suggest": { "laminas/laminas-json": "(^2.6.1 || ^3.0) To auto-deserialize JSON body content in AbstractRestfulController extensions, when json_decode is unavailable", @@ -3612,7 +3345,7 @@ "type": "community_bridge" } ], - "time": "2023-11-14T09:44:53+00:00" + "time": "2022-12-05T14:02:56+00:00" }, { "name": "laminas/laminas-oauth", @@ -3678,32 +3411,31 @@ }, { "name": "laminas/laminas-permissions-acl", - "version": "2.16.0", + "version": "2.13.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-permissions-acl.git", - "reference": "9f85ee3b1940cd5a1c4151ca16fdb738c162480b" + "reference": "a13454dc3013cdcb388c95c418866e93dc781300" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-permissions-acl/zipball/9f85ee3b1940cd5a1c4151ca16fdb738c162480b", - "reference": "9f85ee3b1940cd5a1c4151ca16fdb738c162480b", + "url": "https://api.github.com/repos/laminas/laminas-permissions-acl/zipball/a13454dc3013cdcb388c95c418866e93dc781300", + "reference": "a13454dc3013cdcb388c95c418866e93dc781300", "shasum": "" }, "require": { - "php": "~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0" }, "conflict": { "laminas/laminas-servicemanager": "<3.0", "zendframework/zend-permissions-acl": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.5.0", - "laminas/laminas-servicemanager": "^3.21", - "phpbench/phpbench": "^1.2.10", - "phpunit/phpunit": "^10.1.3", - "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.12" + "laminas/laminas-coding-standard": "~2.4.0", + "laminas/laminas-servicemanager": "^3.19", + "phpunit/phpunit": "^9.5.26", + "psalm/plugin-phpunit": "^0.18.0", + "vimeo/psalm": "^5.0" }, "suggest": { "laminas/laminas-servicemanager": "To support Laminas\\Permissions\\Acl\\Assertion\\AssertionManager plugin manager usage" @@ -3738,38 +3470,38 @@ "type": "community_bridge" } ], - "time": "2023-10-18T07:50:34+00:00" + "time": "2022-12-01T10:29:36+00:00" }, { "name": "laminas/laminas-recaptcha", - "version": "3.7.0", + "version": "3.6.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-recaptcha.git", - "reference": "9cb3a9e3ca7af64205590adc649e107bc6ce2bfc" + "reference": "ead14136a0ded44d1a72f4885df0f3333065d919" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-recaptcha/zipball/9cb3a9e3ca7af64205590adc649e107bc6ce2bfc", - "reference": "9cb3a9e3ca7af64205590adc649e107bc6ce2bfc", + "url": "https://api.github.com/repos/laminas/laminas-recaptcha/zipball/ead14136a0ded44d1a72f4885df0f3333065d919", + "reference": "ead14136a0ded44d1a72f4885df0f3333065d919", "shasum": "" }, "require": { "ext-json": "*", "laminas/laminas-http": "^2.15", "laminas/laminas-stdlib": "^3.10.1", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0" }, "conflict": { "zendframework/zendservice-recaptcha": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.5.0", - "laminas/laminas-config": "^3.8", - "laminas/laminas-validator": "^2.29", - "phpunit/phpunit": "^9.5.27", - "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.4" + "laminas/laminas-coding-standard": "~2.4.0", + "laminas/laminas-config": "^3.7", + "laminas/laminas-validator": "^2.15", + "phpunit/phpunit": "^9.5.26", + "psalm/plugin-phpunit": "^0.18.0", + "vimeo/psalm": "^5.0.0" }, "suggest": { "laminas/laminas-validator": "~2.0, if using ReCaptcha's Mailhide API" @@ -3804,37 +3536,37 @@ "type": "community_bridge" } ], - "time": "2023-11-08T15:52:14+00:00" + "time": "2022-12-05T21:28:54+00:00" }, { "name": "laminas/laminas-router", - "version": "3.12.0", + "version": "3.11.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-router.git", - "reference": "e8f1a9ecd63d123c38de3519fe7ca9013da4f8d2" + "reference": "48b6fccd63b9e04e67781c212bf3bedd75c9ca17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-router/zipball/e8f1a9ecd63d123c38de3519fe7ca9013da4f8d2", - "reference": "e8f1a9ecd63d123c38de3519fe7ca9013da4f8d2", + "url": "https://api.github.com/repos/laminas/laminas-router/zipball/48b6fccd63b9e04e67781c212bf3bedd75c9ca17", + "reference": "48b6fccd63b9e04e67781c212bf3bedd75c9ca17", "shasum": "" }, "require": { "laminas/laminas-http": "^2.15", "laminas/laminas-servicemanager": "^3.14.0", "laminas/laminas-stdlib": "^3.10.1", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0" }, "conflict": { "zendframework/zend-router": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.5.0", - "laminas/laminas-i18n": "^2.23.1", - "phpunit/phpunit": "^10.4.2", - "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.15.0" + "laminas/laminas-coding-standard": "~2.4.0", + "laminas/laminas-i18n": "^2.19.0", + "phpunit/phpunit": "^9.5.26", + "psalm/plugin-phpunit": "^0.18.0", + "vimeo/psalm": "^5.0.0" }, "suggest": { "laminas/laminas-i18n": "^2.15.0 if defining translatable HTTP path segments" @@ -3875,35 +3607,35 @@ "type": "community_bridge" } ], - "time": "2023-11-02T17:21:39+00:00" + "time": "2022-12-02T17:45:59+00:00" }, { "name": "laminas/laminas-server", - "version": "2.16.0", + "version": "2.15.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-server.git", - "reference": "659a56f69fc27e787385f3d713c81bc1eae01eb0" + "reference": "7f4862913ab95ea5decd08e6c3717edbb398fde8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-server/zipball/659a56f69fc27e787385f3d713c81bc1eae01eb0", - "reference": "659a56f69fc27e787385f3d713c81bc1eae01eb0", + "url": "https://api.github.com/repos/laminas/laminas-server/zipball/7f4862913ab95ea5decd08e6c3717edbb398fde8", + "reference": "7f4862913ab95ea5decd08e6c3717edbb398fde8", "shasum": "" }, "require": { "laminas/laminas-code": "^4.7.1", "laminas/laminas-stdlib": "^3.3.1", "laminas/laminas-zendframework-bridge": "^1.2.0", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0" }, "replace": { "zendframework/zend-server": "^2.8.1" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.5.0", + "laminas/laminas-coding-standard": "~2.4.0", "phpunit/phpunit": "^9.5.5", - "psalm/plugin-phpunit": "^0.18.0", + "psalm/plugin-phpunit": "^0.15.1", "vimeo/psalm": "^4.6.4" }, "type": "library", @@ -3936,30 +3668,30 @@ "type": "community_bridge" } ], - "time": "2023-11-14T09:53:27+00:00" + "time": "2022-12-27T17:14:59+00:00" }, { "name": "laminas/laminas-servicemanager", - "version": "3.22.1", + "version": "3.20.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-servicemanager.git", - "reference": "de98d297d4743956a0558a6d71616979ff779328" + "reference": "bc2c2cbe2dd90db8b9d16b0618f542692b76ab59" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/de98d297d4743956a0558a6d71616979ff779328", - "reference": "de98d297d4743956a0558a6d71616979ff779328", + "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/bc2c2cbe2dd90db8b9d16b0618f542692b76ab59", + "reference": "bc2c2cbe2dd90db8b9d16b0618f542692b76ab59", "shasum": "" }, "require": { - "laminas/laminas-stdlib": "^3.17", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0", + "laminas/laminas-stdlib": "^3.2.1", + "php": "~8.0.0 || ~8.1.0 || ~8.2.0", "psr/container": "^1.0" }, "conflict": { "ext-psr": "*", - "laminas/laminas-code": "<4.10.0", + "laminas/laminas-code": "<3.3.1", "zendframework/zend-code": "<3.3.1", "zendframework/zend-servicemanager": "*" }, @@ -3971,18 +3703,18 @@ }, "require-dev": { "composer/package-versions-deprecated": "^1.11.99.5", - "friendsofphp/proxy-manager-lts": "^1.0.14", - "laminas/laminas-code": "^4.10.0", - "laminas/laminas-coding-standard": "~2.5.0", + "laminas/laminas-coding-standard": "~2.4.0", "laminas/laminas-container-config-test": "^0.8", - "mikey179/vfsstream": "^1.6.11", - "phpbench/phpbench": "^1.2.9", - "phpunit/phpunit": "^10.4", - "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.8.0" + "laminas/laminas-dependency-plugin": "^2.2", + "mikey179/vfsstream": "^1.6.11@alpha", + "ocramius/proxy-manager": "^2.14.1", + "phpbench/phpbench": "^1.2.7", + "phpunit/phpunit": "^9.5.26", + "psalm/plugin-phpunit": "^0.18.0", + "vimeo/psalm": "^5.0.0" }, "suggest": { - "friendsofphp/proxy-manager-lts": "ProxyManager ^2.1.1 to handle lazy initialization of services" + "ocramius/proxy-manager": "ProxyManager ^2.1.1 to handle lazy initialization of services" }, "bin": [ "bin/generate-deps-for-config-factory", @@ -4026,42 +3758,42 @@ "type": "community_bridge" } ], - "time": "2023-10-24T11:19:47+00:00" + "time": "2022-12-01T17:03:38+00:00" }, { "name": "laminas/laminas-session", - "version": "2.17.0", + "version": "2.16.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-session.git", - "reference": "2f255f1b4349a9f330ba1a26dcf4e2773a6a8226" + "reference": "9c845a0361625d5775cad6f043716196201ad41f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-session/zipball/2f255f1b4349a9f330ba1a26dcf4e2773a6a8226", - "reference": "2f255f1b4349a9f330ba1a26dcf4e2773a6a8226", + "url": "https://api.github.com/repos/laminas/laminas-session/zipball/9c845a0361625d5775cad6f043716196201ad41f", + "reference": "9c845a0361625d5775cad6f043716196201ad41f", "shasum": "" }, "require": { - "laminas/laminas-eventmanager": "^3.12", - "laminas/laminas-servicemanager": "^3.22", - "laminas/laminas-stdlib": "^3.18", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0" + "laminas/laminas-eventmanager": "^3.5", + "laminas/laminas-servicemanager": "^3.15.1", + "laminas/laminas-stdlib": "^3.10.1", + "php": "~8.0.0 || ~8.1.0 || ~8.2.0" }, "conflict": { "zendframework/zend-session": "*" }, "require-dev": { - "laminas/laminas-cache": "^3.10.1", - "laminas/laminas-cache-storage-adapter-memory": "^2.3", - "laminas/laminas-coding-standard": "~2.5.0", - "laminas/laminas-db": "^2.18.0", - "laminas/laminas-http": "^2.18", - "laminas/laminas-validator": "^2.30.1", - "mongodb/mongodb": "~1.16.0", - "phpunit/phpunit": "^9.6.13", - "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.15" + "laminas/laminas-cache": "^3.8", + "laminas/laminas-cache-storage-adapter-memory": "^2.2", + "laminas/laminas-coding-standard": "~2.4.0", + "laminas/laminas-db": "^2.15", + "laminas/laminas-http": "^2.17.1", + "laminas/laminas-validator": "^2.28", + "mongodb/mongodb": "~1.13.0", + "phpunit/phpunit": "^9.5.26", + "psalm/plugin-phpunit": "^0.18.0", + "vimeo/psalm": "^5.0" }, "suggest": { "laminas/laminas-cache": "Laminas\\Cache component", @@ -4107,20 +3839,20 @@ "type": "community_bridge" } ], - "time": "2023-11-10T12:20:40+00:00" + "time": "2022-12-04T11:15:36+00:00" }, { "name": "laminas/laminas-soap", - "version": "2.13.0", + "version": "2.12.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-soap.git", - "reference": "68fdb11ec50eb8cf73ca266643c681d36c884b7f" + "reference": "127de3d876b992a6327c274b15df6de26d7aa712" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-soap/zipball/68fdb11ec50eb8cf73ca266643c681d36c884b7f", - "reference": "68fdb11ec50eb8cf73ca266643c681d36c884b7f", + "url": "https://api.github.com/repos/laminas/laminas-soap/zipball/127de3d876b992a6327c274b15df6de26d7aa712", + "reference": "127de3d876b992a6327c274b15df6de26d7aa712", "shasum": "" }, "require": { @@ -4129,7 +3861,7 @@ "laminas/laminas-server": "^2.15", "laminas/laminas-stdlib": "^3.16", "laminas/laminas-uri": "^2.10", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0" }, "conflict": { "laminas/laminas-code": "<4.4", @@ -4177,35 +3909,35 @@ "type": "community_bridge" } ], - "time": "2023-10-18T09:49:25+00:00" + "time": "2023-01-09T13:58:49+00:00" }, { "name": "laminas/laminas-stdlib", - "version": "3.18.0", + "version": "3.16.1", "source": { "type": "git", "url": "https://github.com/laminas/laminas-stdlib.git", - "reference": "e85b29076c6216e7fc98e72b42dbe1bbc3b95ecf" + "reference": "f4f773641807c7ccee59b758bfe4ac4ba33ecb17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/e85b29076c6216e7fc98e72b42dbe1bbc3b95ecf", - "reference": "e85b29076c6216e7fc98e72b42dbe1bbc3b95ecf", + "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/f4f773641807c7ccee59b758bfe4ac4ba33ecb17", + "reference": "f4f773641807c7ccee59b758bfe4ac4ba33ecb17", "shasum": "" }, "require": { - "php": "~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0" }, "conflict": { "zendframework/zend-stdlib": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "^2.5", - "phpbench/phpbench": "^1.2.14", - "phpunit/phpunit": "^10.3.3", - "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.15.0" - }, + "laminas/laminas-coding-standard": "^2.4.0", + "phpbench/phpbench": "^1.2.7", + "phpunit/phpunit": "^9.5.26", + "psalm/plugin-phpunit": "^0.18.0", + "vimeo/psalm": "^5.0.0" + }, "type": "library", "autoload": { "psr-4": { @@ -4236,32 +3968,32 @@ "type": "community_bridge" } ], - "time": "2023-09-19T10:15:21+00:00" + "time": "2022-12-03T18:48:01+00:00" }, { "name": "laminas/laminas-text", - "version": "2.11.0", + "version": "2.10.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-text.git", - "reference": "d799f3ccb3547e9e6ab313447138bae7009c7cc7" + "reference": "40f7acdb284d41553d32db811e704d6e15e415b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-text/zipball/d799f3ccb3547e9e6ab313447138bae7009c7cc7", - "reference": "d799f3ccb3547e9e6ab313447138bae7009c7cc7", + "url": "https://api.github.com/repos/laminas/laminas-text/zipball/40f7acdb284d41553d32db811e704d6e15e415b4", + "reference": "40f7acdb284d41553d32db811e704d6e15e415b4", "shasum": "" }, "require": { - "laminas/laminas-servicemanager": "^3.22.0", + "laminas/laminas-servicemanager": "^3.19.0", "laminas/laminas-stdlib": "^3.7.1", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0" }, "conflict": { "zendframework/zend-text": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.5.0", + "laminas/laminas-coding-standard": "~2.4.0", "phpunit/phpunit": "^9.5", "psalm/plugin-phpunit": "^0.18.4", "vimeo/psalm": "^5.1" @@ -4296,26 +4028,26 @@ "type": "community_bridge" } ], - "time": "2023-11-07T16:45:45+00:00" + "time": "2022-12-11T15:36:27+00:00" }, { "name": "laminas/laminas-uri", - "version": "2.11.0", + "version": "2.10.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-uri.git", - "reference": "e662c685125061d3115906e5eb30f966842cc226" + "reference": "663b050294945c7345cc3a61f3ca661d5f9e1f80" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-uri/zipball/e662c685125061d3115906e5eb30f966842cc226", - "reference": "e662c685125061d3115906e5eb30f966842cc226", + "url": "https://api.github.com/repos/laminas/laminas-uri/zipball/663b050294945c7345cc3a61f3ca661d5f9e1f80", + "reference": "663b050294945c7345cc3a61f3ca661d5f9e1f80", "shasum": "" }, "require": { "laminas/laminas-escaper": "^2.9", - "laminas/laminas-validator": "^2.39", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0" + "laminas/laminas-validator": "^2.15", + "php": "~8.0.0 || ~8.1.0 || ~8.2.0" }, "conflict": { "zendframework/zend-uri": "*" @@ -4354,43 +4086,44 @@ "type": "community_bridge" } ], - "time": "2023-10-18T09:56:55+00:00" + "time": "2022-10-16T15:02:45+00:00" }, { "name": "laminas/laminas-validator", - "version": "2.43.0", + "version": "2.29.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-validator.git", - "reference": "8f6c2f5753dec64df924a86d18036113f3140f2b" + "reference": "e40ee8d86cc1907083e273bfd6ed8b6dde2d9850" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/8f6c2f5753dec64df924a86d18036113f3140f2b", - "reference": "8f6c2f5753dec64df924a86d18036113f3140f2b", + "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/e40ee8d86cc1907083e273bfd6ed8b6dde2d9850", + "reference": "e40ee8d86cc1907083e273bfd6ed8b6dde2d9850", "shasum": "" }, "require": { - "laminas/laminas-servicemanager": "^3.21.0", + "laminas/laminas-servicemanager": "^3.12.0", "laminas/laminas-stdlib": "^3.13", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0", - "psr/http-message": "^1.0.1 || ^2.0.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0", + "psr/http-message": "^1.0.1" }, "conflict": { "zendframework/zend-validator": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "^2.5", - "laminas/laminas-db": "^2.18", - "laminas/laminas-filter": "^2.32", - "laminas/laminas-i18n": "^2.23", - "laminas/laminas-session": "^2.16", + "laminas/laminas-coding-standard": "^2.4.0", + "laminas/laminas-db": "^2.16", + "laminas/laminas-filter": "^2.28.1", + "laminas/laminas-http": "^2.18", + "laminas/laminas-i18n": "^2.19", + "laminas/laminas-session": "^2.15", "laminas/laminas-uri": "^2.10.0", - "phpunit/phpunit": "^10.3.3", - "psalm/plugin-phpunit": "^0.18.4", - "psr/http-client": "^1.0.2", - "psr/http-factory": "^1.0.2", - "vimeo/psalm": "^5.15" + "phpunit/phpunit": "^9.5.26", + "psalm/plugin-phpunit": "^0.18.3", + "psr/http-client": "^1.0.1", + "psr/http-factory": "^1.0.1", + "vimeo/psalm": "^5.0" }, "suggest": { "laminas/laminas-db": "Laminas\\Db component, required by the (No)RecordExists validator", @@ -4438,20 +4171,20 @@ "type": "community_bridge" } ], - "time": "2023-11-20T01:23:15+00:00" + "time": "2022-12-13T22:53:38+00:00" }, { "name": "laminas/laminas-view", - "version": "2.32.0", + "version": "2.25.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-view.git", - "reference": "399fa0fb896f06663bba8fe7795722785339b684" + "reference": "77a4b6d78445ae2f30625c5af09a05ad4e4434eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-view/zipball/399fa0fb896f06663bba8fe7795722785339b684", - "reference": "399fa0fb896f06663bba8fe7795722785339b684", + "url": "https://api.github.com/repos/laminas/laminas-view/zipball/77a4b6d78445ae2f30625c5af09a05ad4e4434eb", + "reference": "77a4b6d78445ae2f30625c5af09a05ad4e4434eb", "shasum": "" }, "require": { @@ -4461,9 +4194,9 @@ "laminas/laminas-escaper": "^2.5", "laminas/laminas-eventmanager": "^3.4", "laminas/laminas-json": "^3.3", - "laminas/laminas-servicemanager": "^3.21.0", + "laminas/laminas-servicemanager": "^3.14.0", "laminas/laminas-stdlib": "^3.10.1", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0", + "php": "~8.0.0 || ~8.1.0 || ~8.2.0", "psr/container": "^1 || ^2" }, "conflict": { @@ -4473,24 +4206,25 @@ "zendframework/zend-view": "*" }, "require-dev": { - "laminas/laminas-authentication": "^2.15", - "laminas/laminas-coding-standard": "~2.5.0", - "laminas/laminas-feed": "^2.22", - "laminas/laminas-filter": "^2.32", - "laminas/laminas-http": "^2.19", - "laminas/laminas-i18n": "^2.23.1", - "laminas/laminas-modulemanager": "^2.15", - "laminas/laminas-mvc": "^3.6.1", - "laminas/laminas-mvc-i18n": "^1.7", + "laminas/laminas-authentication": "^2.13", + "laminas/laminas-coding-standard": "~2.4.0", + "laminas/laminas-console": "^2.8", + "laminas/laminas-feed": "^2.19", + "laminas/laminas-filter": "^2.25", + "laminas/laminas-http": "^2.17", + "laminas/laminas-i18n": "^2.19", + "laminas/laminas-modulemanager": "^2.14", + "laminas/laminas-mvc": "^3.5", + "laminas/laminas-mvc-i18n": "^1.6", "laminas/laminas-mvc-plugin-flashmessenger": "^1.9", - "laminas/laminas-navigation": "^2.18.1", - "laminas/laminas-paginator": "^2.17", - "laminas/laminas-permissions-acl": "^2.16", - "laminas/laminas-router": "^3.12.0", - "laminas/laminas-uri": "^2.11", - "phpunit/phpunit": "^10.4.2", - "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.15" + "laminas/laminas-navigation": "^2.16", + "laminas/laminas-paginator": "^2.15", + "laminas/laminas-permissions-acl": "^2.12", + "laminas/laminas-router": "^3.10", + "laminas/laminas-uri": "^2.10", + "phpunit/phpunit": "^9.5.26", + "psalm/plugin-phpunit": "^0.18.3", + "vimeo/psalm": "^4.30" }, "suggest": { "laminas/laminas-authentication": "Laminas\\Authentication component", @@ -4538,7 +4272,7 @@ "type": "community_bridge" } ], - "time": "2023-11-03T13:48:07+00:00" + "time": "2022-11-07T08:01:13+00:00" }, { "name": "laminas/laminas-zendframework-bridge", @@ -4759,26 +4493,26 @@ }, { "name": "league/mime-type-detection", - "version": "1.14.0", + "version": "1.11.0", "source": { "type": "git", "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "b6a5854368533df0295c5761a0253656a2e52d9e" + "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/b6a5854368533df0295c5761a0253656a2e52d9e", - "reference": "b6a5854368533df0295c5761a0253656a2e52d9e", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ff6248ea87a9f116e78edd6002e39e5128a0d4dd", + "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd", "shasum": "" }, "require": { "ext-fileinfo": "*", - "php": "^7.4 || ^8.0" + "php": "^7.2 || ^8.0" }, "require-dev": { "friendsofphp/php-cs-fixer": "^3.2", "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0" + "phpunit/phpunit": "^8.5.8 || ^9.3" }, "type": "library", "autoload": { @@ -4799,7 +4533,7 @@ "description": "Mime-type detection for Flysystem", "support": { "issues": "https://github.com/thephpleague/mime-type-detection/issues", - "source": "https://github.com/thephpleague/mime-type-detection/tree/1.14.0" + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.11.0" }, "funding": [ { @@ -4811,7 +4545,7 @@ "type": "tidelift" } ], - "time": "2023-10-17T14:13:20+00:00" + "time": "2022-04-17T13:12:02+00:00" }, { "name": "magento/composer", @@ -4855,16 +4589,16 @@ }, { "name": "magento/composer-dependency-version-audit-plugin", - "version": "0.1.5", + "version": "0.1.1", "source": { "type": "git", "url": "https://github.com/magento/composer-dependency-version-audit-plugin.git", - "reference": "3350798d52c96bb89a17c955d3e0fce00fcaead1" + "reference": "2e846ae24a897163dbb610c2067ddd803175e9a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/magento/composer-dependency-version-audit-plugin/zipball/3350798d52c96bb89a17c955d3e0fce00fcaead1", - "reference": "3350798d52c96bb89a17c955d3e0fce00fcaead1", + "url": "https://api.github.com/repos/magento/composer-dependency-version-audit-plugin/zipball/2e846ae24a897163dbb610c2067ddd803175e9a2", + "reference": "2e846ae24a897163dbb610c2067ddd803175e9a2", "shasum": "" }, "require": { @@ -4885,14 +4619,15 @@ }, "notification-url": "https://packagist.org/downloads/", "license": [ - "OSL-3.0" + "OSL-3.0", + "AFL-3.0" ], "description": "Validating packages through a composer plugin", "support": { "issues": "https://github.com/magento/composer-dependency-version-audit-plugin/issues", - "source": "https://github.com/magento/composer-dependency-version-audit-plugin/tree/0.1.5" + "source": "https://github.com/magento/composer-dependency-version-audit-plugin/tree/0.1.1" }, - "time": "2023-04-12T17:04:39+00:00" + "time": "2021-06-14T15:16:11+00:00" }, { "name": "magento/magento-composer-installer", @@ -4911,947 +4646,69 @@ "require": { "composer-plugin-api": "^1.1 || ^2.0", "composer/composer": "^1.9 || ^2.0", - "laminas/laminas-stdlib": "^3.11.0" - }, - "replace": { - "magento-hackathon/magento-composer-installer": "*" - }, - "require-dev": { - "mikey179/vfsstream": "*", - "phpunit/phpunit": "^9.5", - "squizlabs/php_codesniffer": "~3.6.1", - "symfony/process": "~5.4.0" - }, - "type": "composer-plugin", - "extra": { - "composer-command-registry": [ - "MagentoHackathon\\Composer\\Magento\\Command\\DeployCommand" - ], - "class": "MagentoHackathon\\Composer\\Magento\\Plugin" - }, - "autoload": { - "psr-0": { - "MagentoHackathon\\Composer\\Magento": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "OSL-3.0" - ], - "authors": [ - { - "name": "Daniel Fahlke aka Flyingmana", - "email": "flyingmana@googlemail.com" - }, - { - "name": "Jörg Weller", - "email": "weller@flagbit.de" - }, - { - "name": "Karl Spies", - "email": "karl.spies@gmx.net" - }, - { - "name": "Tobias Vogt", - "email": "tobi@webguys.de" - }, - { - "name": "David Fuhr", - "email": "fuhr@flagbit.de" - }, - { - "name": "Vinai Kopp", - "email": "vinai@netzarbeiter.com" - } - ], - "description": "Composer installer for Magento modules", - "homepage": "https://github.com/magento/magento-composer-installer", - "keywords": [ - "composer-installer", - "magento" - ], - "support": { - "source": "https://github.com/magento/magento-composer-installer/tree/0.4.0" - }, - "time": "2022-12-01T15:21:32+00:00" - }, - { - "name": "magento/module-re-captcha-admin-ui", - "version": "dev-develop", - "dist": { - "type": "path", - "url": "./ext/magento/security-package/ReCaptchaAdminUi", - "reference": "b2a9aa9f9860ccf7f034cb60120b1cbb688b7359" - }, - "require": { - "magento/framework": "*", - "magento/module-config": "*", - "magento/module-re-captcha-ui": "*", - "magento/module-store": "*", - "php": "~8.1.0||~8.2.0" - }, - "type": "magento2-module", - "autoload": { - "files": [ - "registration.php" - ], - "psr-4": { - "Magento\\ReCaptchaAdminUi\\": "" - } - }, - "license": [ - "OSL-3.0" - ], - "description": "Google reCAPTCHA integration for Magento2", - "transport-options": { - "relative": true - } - }, - { - "name": "magento/module-re-captcha-checkout", - "version": "dev-develop", - "dist": { - "type": "path", - "url": "./ext/magento/security-package/ReCaptchaCheckout", - "reference": "84448caa969815c9c4d0837e3938104d5f8bc596" - }, - "require": { - "magento/framework": "*", - "magento/module-checkout": "*", - "magento/module-re-captcha-admin-ui": "*", - "magento/module-re-captcha-frontend-ui": "*", - "magento/module-re-captcha-ui": "*", - "magento/module-re-captcha-validation-api": "*", - "magento/module-re-captcha-webapi-api": "*", - "magento/module-re-captcha-webapi-ui": "*", - "php": "~8.1.0||~8.2.0" - }, - "type": "magento2-module", - "autoload": { - "files": [ - "registration.php" - ], - "psr-4": { - "Magento\\ReCaptchaCheckout\\": "" - } - }, - "license": [ - "OSL-3.0" - ], - "description": "Google reCAPTCHA integration for Magento2", - "transport-options": { - "relative": true - } - }, - { - "name": "magento/module-re-captcha-checkout-sales-rule", - "version": "dev-develop", - "dist": { - "type": "path", - "url": "./ext/magento/security-package/ReCaptchaCheckoutSalesRule", - "reference": "60f5661076750be42fc081a0b17e2e2798a23ba9" - }, - "require": { - "magento/framework": "*", - "magento/module-checkout": "*", - "magento/module-re-captcha-admin-ui": "*", - "magento/module-re-captcha-frontend-ui": "*", - "magento/module-re-captcha-ui": "*", - "magento/module-re-captcha-validation-api": "*", - "magento/module-re-captcha-webapi-api": "*", - "magento/module-re-captcha-webapi-ui": "*", - "magento/module-sales-rule": "*", - "php": "~8.1.0||~8.2.0" - }, - "type": "magento2-module", - "autoload": { - "files": [ - "registration.php" - ], - "psr-4": { - "Magento\\ReCaptchaCheckoutSalesRule\\": "" - } - }, - "license": [ - "OSL-3.0" - ], - "description": "Google ReCaptcha integration for Magento2 coupons", - "transport-options": { - "relative": true - } - }, - { - "name": "magento/module-re-captcha-contact", - "version": "dev-develop", - "dist": { - "type": "path", - "url": "./ext/magento/security-package/ReCaptchaContact", - "reference": "0e9c0a57b547b5f1e47be6b94cbcf707855c6d5a" - }, - "require": { - "magento/framework": "*", - "magento/module-re-captcha-ui": "*", - "php": "~8.1.0||~8.2.0" - }, - "type": "magento2-module", - "autoload": { - "files": [ - "registration.php" - ], - "psr-4": { - "Magento\\ReCaptchaContact\\": "" - } - }, - "license": [ - "OSL-3.0" - ], - "description": "Google reCAPTCHA integration for Magento2", - "transport-options": { - "relative": true - } - }, - { - "name": "magento/module-re-captcha-customer", - "version": "dev-develop", - "dist": { - "type": "path", - "url": "./ext/magento/security-package/ReCaptchaCustomer", - "reference": "700c62f090642e72102137f4943ded3f75f09877" - }, - "require": { - "magento/framework": "*", - "magento/module-customer": "*", - "magento/module-re-captcha-ui": "*", - "magento/module-re-captcha-validation-api": "*", - "magento/module-re-captcha-webapi-api": "*", - "php": "~8.1.0||~8.2.0" - }, - "type": "magento2-module", - "autoload": { - "files": [ - "registration.php" - ], - "psr-4": { - "Magento\\ReCaptchaCustomer\\": "" - } - }, - "license": [ - "OSL-3.0" - ], - "description": "Google reCAPTCHA integration for Magento2", - "transport-options": { - "relative": true - } - }, - { - "name": "magento/module-re-captcha-frontend-ui", - "version": "dev-develop", - "dist": { - "type": "path", - "url": "./ext/magento/security-package/ReCaptchaFrontendUi", - "reference": "780c5a000f34babb7a113006624c470faaa89f27" - }, - "require": { - "magento/framework": "*", - "magento/module-re-captcha-ui": "*", - "magento/module-store": "*", - "php": "~8.1.0||~8.2.0" - }, - "type": "magento2-module", - "autoload": { - "files": [ - "registration.php" - ], - "psr-4": { - "Magento\\ReCaptchaFrontendUi\\": "" - } - }, - "license": [ - "OSL-3.0" - ], - "description": "Google reCAPTCHA integration for Magento2", - "transport-options": { - "relative": true - } - }, - { - "name": "magento/module-re-captcha-migration", - "version": "dev-develop", - "dist": { - "type": "path", - "url": "./ext/magento/security-package/ReCaptchaMigration", - "reference": "b7c4ac54540e846e5441e71bde72a509d7d05eac" - }, - "require": { - "magento/framework": "*", - "magento/module-config": "*", - "php": "~8.1.0||~8.2.0" - }, - "type": "magento2-module", - "autoload": { - "files": [ - "registration.php" - ], - "psr-4": { - "Magento\\ReCaptchaMigration\\": "" - } - }, - "license": [ - "OSL-3.0" - ], - "description": "Google reCAPTCHA config migration for Magento2", - "transport-options": { - "relative": true - } - }, - { - "name": "magento/module-re-captcha-newsletter", - "version": "dev-develop", - "dist": { - "type": "path", - "url": "./ext/magento/security-package/ReCaptchaNewsletter", - "reference": "77e16930311b36c3fdc8b27568b9bd640076ca9a" - }, - "require": { - "magento/framework": "*", - "magento/module-re-captcha-ui": "*", - "magento/module-re-captcha-validation-api": "*", - "magento/module-re-captcha-webapi-api": "*", - "php": "~8.1.0||~8.2.0" - }, - "type": "magento2-module", - "autoload": { - "files": [ - "registration.php" - ], - "psr-4": { - "Magento\\ReCaptchaNewsletter\\": "" - } - }, - "license": [ - "OSL-3.0" - ], - "description": "Google reCAPTCHA integration for Magento2", - "transport-options": { - "relative": true - } - }, - { - "name": "magento/module-re-captcha-paypal", - "version": "dev-develop", - "dist": { - "type": "path", - "url": "./ext/magento/security-package/ReCaptchaPaypal", - "reference": "307f4d4f066228e045ad20af021a5799b6b62751" - }, - "require": { - "magento/framework": "*", - "magento/module-checkout": "*", - "magento/module-paypal": "*", - "magento/module-quote": "*", - "magento/module-re-captcha-checkout": "*", - "magento/module-re-captcha-ui": "*", - "magento/module-re-captcha-validation-api": "*", - "magento/module-re-captcha-webapi-api": "*", - "php": "~8.1.0||~8.2.0" - }, - "type": "magento2-module", - "autoload": { - "files": [ - "registration.php" - ], - "psr-4": { - "Magento\\ReCaptchaPaypal\\": "" - } - }, - "license": [ - "OSL-3.0" - ], - "description": "Google reCaptcha integration for Magento2 PayPal PayflowPro payment form", - "transport-options": { - "relative": true - } - }, - { - "name": "magento/module-re-captcha-review", - "version": "dev-develop", - "dist": { - "type": "path", - "url": "./ext/magento/security-package/ReCaptchaReview", - "reference": "04d18253fb7f66871b93ef55211250ccb9a8c3e0" - }, - "require": { - "magento/framework": "*", - "magento/module-re-captcha-ui": "*", - "magento/module-re-captcha-validation-api": "*", - "magento/module-re-captcha-webapi-api": "*", - "php": "~8.1.0||~8.2.0" - }, - "type": "magento2-module", - "autoload": { - "files": [ - "registration.php" - ], - "psr-4": { - "Magento\\ReCaptchaReview\\": "" - } - }, - "license": [ - "OSL-3.0" - ], - "description": "Google reCAPTCHA integration for Magento2", - "transport-options": { - "relative": true - } - }, - { - "name": "magento/module-re-captcha-send-friend", - "version": "dev-develop", - "dist": { - "type": "path", - "url": "./ext/magento/security-package/ReCaptchaSendFriend", - "reference": "49733fde280a88b15c620d84b1758b64b0c95e45" - }, - "require": { - "magento/framework": "*", - "magento/module-re-captcha-ui": "*", - "magento/module-re-captcha-validation-api": "*", - "magento/module-re-captcha-webapi-api": "*", - "php": "~8.1.0||~8.2.0" - }, - "type": "magento2-module", - "autoload": { - "files": [ - "registration.php" - ], - "psr-4": { - "Magento\\ReCaptchaSendFriend\\": "" - } - }, - "license": [ - "OSL-3.0" - ], - "description": "Google reCAPTCHA integration for Magento2", - "transport-options": { - "relative": true - } - }, - { - "name": "magento/module-re-captcha-store-pickup", - "version": "dev-develop", - "dist": { - "type": "path", - "url": "./ext/magento/security-package/ReCaptchaStorePickup", - "reference": "79eecd67f0d8a190c089697052fcc22a5452f3fb" - }, - "require": { - "magento/framework": "*", - "magento/module-checkout": "*", - "magento/module-re-captcha-ui": "*", - "php": "~8.1.0||~8.2.0" - }, - "suggest": { - "magento/module-inventory-in-store-pickup-frontend": "*" - }, - "type": "magento2-module", - "autoload": { - "files": [ - "registration.php" - ], - "psr-4": { - "Magento\\ReCaptchaStorePickup\\": "" - } - }, - "license": [ - "OSL-3.0" - ], - "description": "Google reCaptcha integration for Magento2 Inventory Store Pickup shipping form", - "transport-options": { - "relative": true - } - }, - { - "name": "magento/module-re-captcha-ui", - "version": "dev-develop", - "dist": { - "type": "path", - "url": "./ext/magento/security-package/ReCaptchaUi", - "reference": "facf38827df3ad6e06c7fe9385f451a1301ab7e2" - }, - "require": { - "magento/framework": "*", - "magento/module-re-captcha-validation-api": "*", - "php": "~8.1.0||~8.2.0" - }, - "type": "magento2-module", - "autoload": { - "files": [ - "registration.php" - ], - "psr-4": { - "Magento\\ReCaptchaUi\\": "" - } - }, - "license": [ - "OSL-3.0" - ], - "authors": [ - { - "name": "Riccardo Tempesta", - "email": "riccardo.tempesta@magespecialist.it" - } - ], - "description": "Google reCAPTCHA integration for Magento2", - "transport-options": { - "relative": true - } - }, - { - "name": "magento/module-re-captcha-user", - "version": "dev-develop", - "dist": { - "type": "path", - "url": "./ext/magento/security-package/ReCaptchaUser", - "reference": "85d83ec4dc3cc6eb77eaa8a00116b5a8cd25d97a" - }, - "require": { - "magento/framework": "*", - "magento/module-re-captcha-ui": "*", - "magento/module-re-captcha-validation-api": "*", - "php": "~8.1.0||~8.2.0" - }, - "type": "magento2-module", - "autoload": { - "files": [ - "registration.php" - ], - "psr-4": { - "Magento\\ReCaptchaUser\\": "" - } - }, - "license": [ - "OSL-3.0" - ], - "description": "Google reCAPTCHA integration for Magento2", - "transport-options": { - "relative": true - } - }, - { - "name": "magento/module-re-captcha-validation", - "version": "dev-develop", - "dist": { - "type": "path", - "url": "./ext/magento/security-package/ReCaptchaValidation", - "reference": "fadbb0b0171fd795217cc539f9d34e7b8f459583" - }, - "require": { - "google/recaptcha": "^1.2", - "magento/framework": "*", - "magento/module-re-captcha-validation-api": "*", - "php": "~8.1.0||~8.2.0" - }, - "type": "magento2-module", - "autoload": { - "files": [ - "registration.php" - ], - "psr-4": { - "Magento\\ReCaptchaValidation\\": "" - } - }, - "license": [ - "OSL-3.0" - ], - "description": "Google reCAPTCHA integration for Magento2", - "transport-options": { - "relative": true - } - }, - { - "name": "magento/module-re-captcha-validation-api", - "version": "dev-develop", - "dist": { - "type": "path", - "url": "./ext/magento/security-package/ReCaptchaValidationApi", - "reference": "85ada257e1a601dc65e5e8befd61bb950a8a4b56" - }, - "require": { - "magento/framework": "*", - "php": "~8.1.0||~8.2.0" - }, - "type": "magento2-module", - "autoload": { - "files": [ - "registration.php" - ], - "psr-4": { - "Magento\\ReCaptchaValidationApi\\": "" - } - }, - "license": [ - "OSL-3.0" - ], - "description": "Google reCAPTCHA integration for Magento2", - "transport-options": { - "relative": true - } - }, - { - "name": "magento/module-re-captcha-version-2-checkbox", - "version": "dev-develop", - "dist": { - "type": "path", - "url": "./ext/magento/security-package/ReCaptchaVersion2Checkbox", - "reference": "d077632159a46c739242cba902c1f84743c5f477" - }, - "require": { - "magento/framework": "*", - "magento/module-re-captcha-ui": "*", - "magento/module-re-captcha-validation-api": "*", - "magento/module-store": "*", - "php": "~8.1.0||~8.2.0" - }, - "suggest": { - "magento/module-config": "*", - "magento/module-re-captcha-admin-ui": "*" - }, - "type": "magento2-module", - "autoload": { - "files": [ - "registration.php" - ], - "psr-4": { - "Magento\\ReCaptchaVersion2Checkbox\\": "" - } - }, - "license": [ - "OSL-3.0" - ], - "description": "Google reCAPTCHA integration for Magento2", - "transport-options": { - "relative": true - } - }, - { - "name": "magento/module-re-captcha-version-2-invisible", - "version": "dev-develop", - "dist": { - "type": "path", - "url": "./ext/magento/security-package/ReCaptchaVersion2Invisible", - "reference": "6a54eb7ad1d5dbcc010f247e819dedbdd4b3fc2c" - }, - "require": { - "magento/framework": "*", - "magento/module-re-captcha-ui": "*", - "magento/module-re-captcha-validation-api": "*", - "magento/module-store": "*", - "php": "~8.1.0||~8.2.0" - }, - "suggest": { - "magento/module-config": "*", - "magento/module-re-captcha-admin-ui": "*" - }, - "type": "magento2-module", - "autoload": { - "files": [ - "registration.php" - ], - "psr-4": { - "Magento\\ReCaptchaVersion2Invisible\\": "" - } - }, - "license": [ - "OSL-3.0" - ], - "description": "Google reCAPTCHA integration for Magento2", - "transport-options": { - "relative": true - } - }, - { - "name": "magento/module-re-captcha-version-3-invisible", - "version": "dev-develop", - "dist": { - "type": "path", - "url": "./ext/magento/security-package/ReCaptchaVersion3Invisible", - "reference": "4f3bcf91f36a231249e238765a8d893501a49b4b" - }, - "require": { - "magento/framework": "*", - "magento/module-re-captcha-ui": "*", - "magento/module-re-captcha-validation-api": "*", - "magento/module-store": "*", - "php": "~8.1.0||~8.2.0" - }, - "suggest": { - "magento/module-config": "*", - "magento/module-re-captcha-admin-ui": "*" - }, - "type": "magento2-module", - "autoload": { - "files": [ - "registration.php" - ], - "psr-4": { - "Magento\\ReCaptchaVersion3Invisible\\": "" - } - }, - "license": [ - "OSL-3.0" - ], - "description": "Google reCAPTCHA integration for Magento2", - "transport-options": { - "relative": true - } - }, - { - "name": "magento/module-re-captcha-webapi-api", - "version": "dev-develop", - "dist": { - "type": "path", - "url": "./ext/magento/security-package/ReCaptchaWebapiApi", - "reference": "21fc7e63d4e4c142a6b66568361f1b5cd8c22fac" - }, - "require": { - "magento/framework": "*", - "magento/module-re-captcha-validation-api": "*", - "php": "~8.1.0||~8.2.0" - }, - "type": "magento2-module", - "autoload": { - "files": [ - "registration.php" - ], - "psr-4": { - "Magento\\ReCaptchaWebapiApi\\": "" - } - }, - "license": [ - "OSL-3.0" - ], - "description": "Google reCAPTCHA integration for Magento2", - "transport-options": { - "relative": true - } - }, - { - "name": "magento/module-re-captcha-webapi-graph-ql", - "version": "dev-develop", - "dist": { - "type": "path", - "url": "./ext/magento/security-package/ReCaptchaWebapiGraphQl", - "reference": "af437ccadc6184cae9773589fc00ed5e1b565b4e" - }, - "require": { - "magento/framework": "*", - "magento/module-authorization": "*", - "magento/module-re-captcha-frontend-ui": "*", - "magento/module-re-captcha-validation-api": "*", - "magento/module-re-captcha-version-3-invisible": "*", - "magento/module-re-captcha-webapi-api": "*", - "php": "~8.1.0||~8.2.0" - }, - "type": "magento2-module", - "autoload": { - "files": [ - "registration.php" - ], - "psr-4": { - "Magento\\ReCaptchaWebapiGraphQl\\": "" - } - }, - "license": [ - "OSL-3.0" - ], - "description": "Google reCAPTCHA integration for Magento2", - "transport-options": { - "relative": true - } - }, - { - "name": "magento/module-re-captcha-webapi-rest", - "version": "dev-develop", - "dist": { - "type": "path", - "url": "./ext/magento/security-package/ReCaptchaWebapiRest", - "reference": "9160568fbf7fb8c752cebc398bedb8b20d0982ac" - }, - "require": { - "magento/framework": "*", - "magento/module-authorization": "*", - "magento/module-re-captcha-validation-api": "*", - "magento/module-re-captcha-webapi-api": "*", - "magento/module-webapi": "*", - "php": "~8.1.0||~8.2.0" - }, - "type": "magento2-module", - "autoload": { - "files": [ - "registration.php" - ], - "psr-4": { - "Magento\\ReCaptchaWebapiRest\\": "" - } - }, - "license": [ - "OSL-3.0" - ], - "description": "Google reCAPTCHA integration for Magento2", - "transport-options": { - "relative": true - } - }, - { - "name": "magento/module-re-captcha-webapi-ui", - "version": "dev-develop", - "dist": { - "type": "path", - "url": "./ext/magento/security-package/ReCaptchaWebapiUi", - "reference": "4a5e7872e72ffd179e0872dbe380b98677fd0169" - }, - "require": { - "magento/framework": "*", - "magento/module-re-captcha-frontend-ui": "*", - "php": "~8.1.0||~8.2.0" - }, - "type": "magento2-module", - "autoload": { - "files": [ - "registration.php" - ], - "psr-4": { - "Magento\\ReCaptchaWebapiUi\\": "" - } - }, - "license": [ - "OSL-3.0" - ], - "description": "Google reCAPTCHA integration for Magento2", - "transport-options": { - "relative": true - } - }, - { - "name": "magento/module-securitytxt", - "version": "dev-develop", - "dist": { - "type": "path", - "url": "./ext/magento/security-package/Securitytxt", - "reference": "d24860976445b72762cda2311ea7320fbff574b7" + "laminas/laminas-stdlib": "^3.11.0" }, - "require": { - "magento/framework": "*", - "magento/module-config": "*", - "magento/module-store": "*", - "php": "~8.1.0||~8.2.0" + "replace": { + "magento-hackathon/magento-composer-installer": "*" }, - "type": "magento2-module", - "autoload": { - "files": [ - "registration.php" + "require-dev": { + "mikey179/vfsstream": "*", + "phpunit/phpunit": "^9.5", + "squizlabs/php_codesniffer": "~3.6.1", + "symfony/process": "~5.4.0" + }, + "type": "composer-plugin", + "extra": { + "composer-command-registry": [ + "MagentoHackathon\\Composer\\Magento\\Command\\DeployCommand" ], - "psr-4": { - "Magento\\Securitytxt\\": "" + "class": "MagentoHackathon\\Composer\\Magento\\Plugin" + }, + "autoload": { + "psr-0": { + "MagentoHackathon\\Composer\\Magento": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ - "OSL-3.0", - "AFL-3.0" + "OSL-3.0" ], "authors": [ { - "name": "Kalpesh Mehta", - "email": "k@lpe.sh" + "name": "Daniel Fahlke aka Flyingmana", + "email": "flyingmana@googlemail.com" + }, + { + "name": "Jörg Weller", + "email": "weller@flagbit.de" + }, + { + "name": "Karl Spies", + "email": "karl.spies@gmx.net" + }, + { + "name": "Tobias Vogt", + "email": "tobi@webguys.de" + }, + { + "name": "David Fuhr", + "email": "fuhr@flagbit.de" + }, + { + "name": "Vinai Kopp", + "email": "vinai@netzarbeiter.com" } ], - "description": "Security.txt file for Magento 2 websites", - "transport-options": { - "relative": true - } - }, - { - "name": "magento/module-two-factor-auth", - "version": "dev-develop", - "dist": { - "type": "path", - "url": "./ext/magento/security-package/TwoFactorAuth", - "reference": "eb0d08b161f9aa21f8b5662687a0765250c36808" - }, - "require": { - "2tvenom/cborencode": "^1.0", - "christian-riesen/base32": "^1.3", - "endroid/qr-code": "^4.3.5", - "magento/framework": "*", - "magento/magento-composer-installer": "*", - "magento/module-authorization": "*", - "magento/module-backend": "*", - "magento/module-config": "*", - "magento/module-integration": "*", - "magento/module-store": "*", - "magento/module-ui": "*", - "magento/module-user": "*", - "php": "~8.1.0||~8.2.0", - "spomky-labs/otphp": "^11.2" - }, - "type": "magento2-module", - "autoload": { - "files": [ - "registration.php" - ], - "psr-4": { - "Magento\\TwoFactorAuth\\": "" - } - }, - "license": [ - "OSL-3.0" + "description": "Composer installer for Magento modules", + "homepage": "https://github.com/magento/magento-composer-installer", + "keywords": [ + "composer-installer", + "magento" ], - "description": "Two Factor Authentication module for Magento2", - "transport-options": { - "relative": true - } - }, - { - "name": "magento/security-package", - "version": "dev-develop", - "dist": { - "type": "path", - "url": "./ext/magento/security-package/_metapackage", - "reference": "74495b1832737c34a3999486816b0dc383b62802" - }, - "require": { - "google/recaptcha": "^1.2", - "magento/module-re-captcha-admin-ui": "*", - "magento/module-re-captcha-checkout": "*", - "magento/module-re-captcha-checkout-sales-rule": "*", - "magento/module-re-captcha-contact": "*", - "magento/module-re-captcha-customer": "*", - "magento/module-re-captcha-frontend-ui": "*", - "magento/module-re-captcha-migration": "*", - "magento/module-re-captcha-newsletter": "*", - "magento/module-re-captcha-paypal": "*", - "magento/module-re-captcha-review": "*", - "magento/module-re-captcha-send-friend": "*", - "magento/module-re-captcha-store-pickup": "*", - "magento/module-re-captcha-ui": "*", - "magento/module-re-captcha-user": "*", - "magento/module-re-captcha-validation": "*", - "magento/module-re-captcha-validation-api": "*", - "magento/module-re-captcha-version-2-checkbox": "*", - "magento/module-re-captcha-version-2-invisible": "*", - "magento/module-re-captcha-version-3-invisible": "*", - "magento/module-re-captcha-webapi-api": "*", - "magento/module-re-captcha-webapi-graph-ql": "*", - "magento/module-re-captcha-webapi-rest": "*", - "magento/module-re-captcha-webapi-ui": "*", - "magento/module-securitytxt": "*", - "magento/module-two-factor-auth": "*" - }, - "type": "metapackage", - "description": "Magento Security Package", - "transport-options": { - "relative": true - } + "support": { + "source": "https://github.com/magento/magento-composer-installer/tree/0.4.0" + }, + "time": "2022-12-01T15:21:32+00:00" }, { "name": "magento/zend-cache", @@ -5907,16 +4764,16 @@ }, { "name": "magento/zend-db", - "version": "1.16.1", + "version": "1.16.0", "source": { "type": "git", "url": "https://github.com/magento/magento-zend-db.git", - "reference": "475addb06c0a417b2fd18effe5966bd3aa929b7b" + "reference": "def36bc00e49cf0056a59192e52f2e83077b933c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/magento/magento-zend-db/zipball/475addb06c0a417b2fd18effe5966bd3aa929b7b", - "reference": "475addb06c0a417b2fd18effe5966bd3aa929b7b", + "url": "https://api.github.com/repos/magento/magento-zend-db/zipball/def36bc00e49cf0056a59192e52f2e83077b933c", + "reference": "def36bc00e49cf0056a59192e52f2e83077b933c", "shasum": "" }, "require": { @@ -5953,9 +4810,9 @@ ], "support": { "issues": "https://github.com/magento/magento-zend-db/issues", - "source": "https://github.com/magento/magento-zend-db/tree/1.16.1" + "source": "https://github.com/magento/magento-zend-db/tree/1.16.0" }, - "time": "2023-08-25T13:52:30+00:00" + "time": "2022-09-22T18:19:14+00:00" }, { "name": "magento/zend-exception", @@ -6009,16 +4866,16 @@ }, { "name": "magento/zend-loader", - "version": "1.16.1", + "version": "1.16.0", "source": { "type": "git", "url": "https://github.com/magento/magento-zend-loader.git", - "reference": "7eca22970a6b7cdaa3d3a6a6d117e4c0d3bef5e9" + "reference": "200786c8009d668917a42250ed72ebf8c4c958d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/magento/magento-zend-loader/zipball/7eca22970a6b7cdaa3d3a6a6d117e4c0d3bef5e9", - "reference": "7eca22970a6b7cdaa3d3a6a6d117e4c0d3bef5e9", + "url": "https://api.github.com/repos/magento/magento-zend-loader/zipball/200786c8009d668917a42250ed72ebf8c4c958d2", + "reference": "200786c8009d668917a42250ed72ebf8c4c958d2", "shasum": "" }, "require": { @@ -6054,9 +4911,9 @@ ], "support": { "issues": "https://github.com/magento/magento-zend-loader/issues", - "source": "https://github.com/magento/magento-zend-loader/tree/1.16.1" + "source": "https://github.com/magento/magento-zend-loader/tree/1.16.0" }, - "time": "2023-08-25T13:52:37+00:00" + "time": "2022-09-22T19:00:04+00:00" }, { "name": "magento/zend-log", @@ -6163,16 +5020,16 @@ }, { "name": "magento/zend-pdf", - "version": "1.16.3", + "version": "1.16.1", "source": { "type": "git", "url": "https://github.com/magento/magento-zend-pdf.git", - "reference": "4426cdf87d10ad9a45e21da1468665a97d01ef79" + "reference": "e69a4f0ab33ea1355701cebe6cb64bc02e642b33" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/magento/magento-zend-pdf/zipball/4426cdf87d10ad9a45e21da1468665a97d01ef79", - "reference": "4426cdf87d10ad9a45e21da1468665a97d01ef79", + "url": "https://api.github.com/repos/magento/magento-zend-pdf/zipball/e69a4f0ab33ea1355701cebe6cb64bc02e642b33", + "reference": "e69a4f0ab33ea1355701cebe6cb64bc02e642b33", "shasum": "" }, "require": { @@ -6214,22 +5071,22 @@ ], "support": { "issues": "https://github.com/magento/magento-zend-pdf/issues", - "source": "https://github.com/magento/magento-zend-pdf/tree/1.16.3" + "source": "https://github.com/magento/magento-zend-pdf/tree/1.16.1" }, - "time": "2023-08-25T12:52:21+00:00" + "time": "2023-01-26T16:40:05+00:00" }, { "name": "monolog/monolog", - "version": "2.9.2", + "version": "2.9.1", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "437cb3628f4cf6042cc10ae97fc2b8472e48ca1f" + "reference": "f259e2b15fb95494c83f52d3caad003bbf5ffaa1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/437cb3628f4cf6042cc10ae97fc2b8472e48ca1f", - "reference": "437cb3628f4cf6042cc10ae97fc2b8472e48ca1f", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f259e2b15fb95494c83f52d3caad003bbf5ffaa1", + "reference": "f259e2b15fb95494c83f52d3caad003bbf5ffaa1", "shasum": "" }, "require": { @@ -6306,7 +5163,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/2.9.2" + "source": "https://github.com/Seldaek/monolog/tree/2.9.1" }, "funding": [ { @@ -6318,29 +5175,29 @@ "type": "tidelift" } ], - "time": "2023-10-27T15:25:26+00:00" + "time": "2023-02-06T13:44:46+00:00" }, { "name": "mtdowling/jmespath.php", - "version": "2.7.0", + "version": "2.6.1", "source": { "type": "git", "url": "https://github.com/jmespath/jmespath.php.git", - "reference": "bbb69a935c2cbb0c03d7f481a238027430f6440b" + "reference": "9b87907a81b87bc76d19a7fb2d61e61486ee9edb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/bbb69a935c2cbb0c03d7f481a238027430f6440b", - "reference": "bbb69a935c2cbb0c03d7f481a238027430f6440b", + "url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/9b87907a81b87bc76d19a7fb2d61e61486ee9edb", + "reference": "9b87907a81b87bc76d19a7fb2d61e61486ee9edb", "shasum": "" }, "require": { - "php": "^7.2.5 || ^8.0", + "php": "^5.4 || ^7.0 || ^8.0", "symfony/polyfill-mbstring": "^1.17" }, "require-dev": { - "composer/xdebug-handler": "^3.0.3", - "phpunit/phpunit": "^8.5.33" + "composer/xdebug-handler": "^1.4 || ^2.0", + "phpunit/phpunit": "^4.8.36 || ^7.5.15" }, "bin": [ "bin/jp.php" @@ -6348,7 +5205,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.7-dev" + "dev-master": "2.6-dev" } }, "autoload": { @@ -6364,11 +5221,6 @@ "MIT" ], "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, { "name": "Michael Dowling", "email": "mtdowling@gmail.com", @@ -6382,22 +5234,22 @@ ], "support": { "issues": "https://github.com/jmespath/jmespath.php/issues", - "source": "https://github.com/jmespath/jmespath.php/tree/2.7.0" + "source": "https://github.com/jmespath/jmespath.php/tree/2.6.1" }, - "time": "2023-08-25T10:54:48+00:00" + "time": "2021-06-14T00:11:39+00:00" }, { "name": "nikic/php-parser", - "version": "v4.17.1", + "version": "v4.16.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d" + "reference": "19526a33fb561ef417e822e85f08a00db4059c17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", - "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/19526a33fb561ef417e822e85f08a00db4059c17", + "reference": "19526a33fb561ef417e822e85f08a00db4059c17", "shasum": "" }, "require": { @@ -6438,9 +5290,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.16.0" }, - "time": "2023-08-13T19:53:39+00:00" + "time": "2023-06-25T14:52:30+00:00" }, { "name": "opensearch-project/opensearch-php", @@ -6625,29 +5477,29 @@ }, { "name": "pelago/emogrifier", - "version": "v7.1.0", + "version": "v7.0.0", "source": { "type": "git", "url": "https://github.com/MyIntervals/emogrifier.git", - "reference": "1945460af992d0c14ad08e7b4567d7d0dd3a2f94" + "reference": "547b8c814794aec871e3c98b1c712f416755f4eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/MyIntervals/emogrifier/zipball/1945460af992d0c14ad08e7b4567d7d0dd3a2f94", - "reference": "1945460af992d0c14ad08e7b4567d7d0dd3a2f94", + "url": "https://api.github.com/repos/MyIntervals/emogrifier/zipball/547b8c814794aec871e3c98b1c712f416755f4eb", + "reference": "547b8c814794aec871e3c98b1c712f416755f4eb", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", - "php": "~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", + "php": "~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0", "sabberworm/php-css-parser": "^8.4.0", "symfony/css-selector": "^4.4.23 || ^5.4.0 || ^6.0.0" }, "require-dev": { - "php-parallel-lint/php-parallel-lint": "1.3.2", - "phpunit/phpunit": "9.6.11", - "rawr/cross-data-providers": "2.4.0" + "php-parallel-lint/php-parallel-lint": "^1.3.2", + "phpunit/phpunit": "^9.5.25", + "rawr/cross-data-providers": "^2.3.0" }, "type": "library", "extra": { @@ -6674,313 +5526,126 @@ "email": "zoli.szabo+github@gmail.com" }, { - "name": "John Reeve", - "email": "jreeve@pelagodesign.com" - }, - { - "name": "Jake Hotson", - "email": "jake@qzdesign.co.uk" - }, - { - "name": "Cameron Brooks" - }, - { - "name": "Jaime Prado" - } - ], - "description": "Converts CSS styles into inline style attributes in your HTML code", - "homepage": "https://www.myintervals.com/emogrifier.php", - "keywords": [ - "css", - "email", - "pre-processing" - ], - "support": { - "issues": "https://github.com/MyIntervals/emogrifier/issues", - "source": "https://github.com/MyIntervals/emogrifier" - }, - "time": "2023-10-20T15:34:30+00:00" - }, - { - "name": "php-amqplib/php-amqplib", - "version": "v3.6.0", - "source": { - "type": "git", - "url": "https://github.com/php-amqplib/php-amqplib.git", - "reference": "fb84e99589de0904a25861451b0552f806284ee5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-amqplib/php-amqplib/zipball/fb84e99589de0904a25861451b0552f806284ee5", - "reference": "fb84e99589de0904a25861451b0552f806284ee5", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "ext-sockets": "*", - "php": "^7.2||^8.0", - "phpseclib/phpseclib": "^2.0|^3.0" - }, - "conflict": { - "php": "7.4.0 - 7.4.1" - }, - "replace": { - "videlalvaro/php-amqplib": "self.version" - }, - "require-dev": { - "ext-curl": "*", - "nategood/httpful": "^0.2.20", - "phpunit/phpunit": "^7.5|^9.5", - "squizlabs/php_codesniffer": "^3.6" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "psr-4": { - "PhpAmqpLib\\": "PhpAmqpLib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-2.1-or-later" - ], - "authors": [ - { - "name": "Alvaro Videla", - "role": "Original Maintainer" - }, - { - "name": "Raúl Araya", - "email": "nubeiro@gmail.com", - "role": "Maintainer" - }, - { - "name": "Luke Bakken", - "email": "luke@bakken.io", - "role": "Maintainer" - }, - { - "name": "Ramūnas Dronga", - "email": "github@ramuno.lt", - "role": "Maintainer" - } - ], - "description": "Formerly videlalvaro/php-amqplib. This library is a pure PHP implementation of the AMQP protocol. It's been tested against RabbitMQ.", - "homepage": "https://github.com/php-amqplib/php-amqplib/", - "keywords": [ - "message", - "queue", - "rabbitmq" - ], - "support": { - "issues": "https://github.com/php-amqplib/php-amqplib/issues", - "source": "https://github.com/php-amqplib/php-amqplib/tree/v3.6.0" - }, - "time": "2023-10-22T15:02:02+00:00" - }, - { - "name": "php-http/discovery", - "version": "1.19.1", - "source": { - "type": "git", - "url": "https://github.com/php-http/discovery.git", - "reference": "57f3de01d32085fea20865f9b16fb0e69347c39e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/discovery/zipball/57f3de01d32085fea20865f9b16fb0e69347c39e", - "reference": "57f3de01d32085fea20865f9b16fb0e69347c39e", - "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", - "symfony/phpunit-bridge": "^6.2" - }, - "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.19.1" - }, - "time": "2023-07-11T07:02:26+00:00" - }, - { - "name": "php-http/httplug", - "version": "2.4.0", - "source": { - "type": "git", - "url": "https://github.com/php-http/httplug.git", - "reference": "625ad742c360c8ac580fcc647a1541d29e257f67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/httplug/zipball/625ad742c360c8ac580fcc647a1541d29e257f67", - "reference": "625ad742c360c8ac580fcc647a1541d29e257f67", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0", - "php-http/promise": "^1.1", - "psr/http-client": "^1.0", - "psr/http-message": "^1.0 || ^2.0" - }, - "require-dev": { - "friends-of-phpspec/phpspec-code-coverage": "^4.1 || ^5.0 || ^6.0", - "phpspec/phpspec": "^5.1 || ^6.0 || ^7.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Http\\Client\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ + "name": "John Reeve", + "email": "jreeve@pelagodesign.com" + }, { - "name": "Eric GELOEN", - "email": "geloen.eric@gmail.com" + "name": "Jake Hotson", + "email": "jake@qzdesign.co.uk" }, { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://sagikazarmark.hu" + "name": "Cameron Brooks" + }, + { + "name": "Jaime Prado" } ], - "description": "HTTPlug, the HTTP client abstraction for PHP", - "homepage": "http://httplug.io", + "description": "Converts CSS styles into inline style attributes in your HTML code", + "homepage": "https://www.myintervals.com/emogrifier.php", "keywords": [ - "client", - "http" + "css", + "email", + "pre-processing" ], "support": { - "issues": "https://github.com/php-http/httplug/issues", - "source": "https://github.com/php-http/httplug/tree/2.4.0" + "issues": "https://github.com/MyIntervals/emogrifier/issues", + "source": "https://github.com/MyIntervals/emogrifier" }, - "time": "2023-04-14T15:10:03+00:00" + "time": "2022-11-01T17:53:29+00:00" }, { - "name": "php-http/promise", - "version": "1.2.1", + "name": "php-amqplib/php-amqplib", + "version": "v3.5.4", "source": { "type": "git", - "url": "https://github.com/php-http/promise.git", - "reference": "44a67cb59f708f826f3bec35f22030b3edb90119" + "url": "https://github.com/php-amqplib/php-amqplib.git", + "reference": "1aecbd182b35eb039667c50d7d92d71f105be779" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/promise/zipball/44a67cb59f708f826f3bec35f22030b3edb90119", - "reference": "44a67cb59f708f826f3bec35f22030b3edb90119", + "url": "https://api.github.com/repos/php-amqplib/php-amqplib/zipball/1aecbd182b35eb039667c50d7d92d71f105be779", + "reference": "1aecbd182b35eb039667c50d7d92d71f105be779", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "ext-mbstring": "*", + "ext-sockets": "*", + "php": "^7.1||^8.0", + "phpseclib/phpseclib": "^2.0|^3.0" + }, + "conflict": { + "php": "7.4.0 - 7.4.1" + }, + "replace": { + "videlalvaro/php-amqplib": "self.version" }, "require-dev": { - "friends-of-phpspec/phpspec-code-coverage": "^4.3.2 || ^6.3", - "phpspec/phpspec": "^5.1.2 || ^6.2 || ^7.4" + "ext-curl": "*", + "nategood/httpful": "^0.2.20", + "phpunit/phpunit": "^7.5|^9.5", + "squizlabs/php_codesniffer": "^3.6" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, "autoload": { "psr-4": { - "Http\\Promise\\": "src/" + "PhpAmqpLib\\": "PhpAmqpLib/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "LGPL-2.1-or-later" ], "authors": [ { - "name": "Joel Wurtz", - "email": "joel.wurtz@gmail.com" + "name": "Alvaro Videla", + "role": "Original Maintainer" }, { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" + "name": "Raúl Araya", + "email": "nubeiro@gmail.com", + "role": "Maintainer" + }, + { + "name": "Luke Bakken", + "email": "luke@bakken.io", + "role": "Maintainer" + }, + { + "name": "Ramūnas Dronga", + "email": "github@ramuno.lt", + "role": "Maintainer" } ], - "description": "Promise used for asynchronous HTTP requests", - "homepage": "http://httplug.io", + "description": "Formerly videlalvaro/php-amqplib. This library is a pure PHP implementation of the AMQP protocol. It's been tested against RabbitMQ.", + "homepage": "https://github.com/php-amqplib/php-amqplib/", "keywords": [ - "promise" + "message", + "queue", + "rabbitmq" ], "support": { - "issues": "https://github.com/php-http/promise/issues", - "source": "https://github.com/php-http/promise/tree/1.2.1" + "issues": "https://github.com/php-amqplib/php-amqplib/issues", + "source": "https://github.com/php-amqplib/php-amqplib/tree/v3.5.4" }, - "time": "2023-11-08T12:57:08+00:00" + "time": "2023-07-01T11:25:08+00:00" }, { "name": "phpseclib/mcrypt_compat", - "version": "2.0.4", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/phpseclib/mcrypt_compat.git", - "reference": "6505669343743daf290b7d7b6b7105f85fd9988f" + "reference": "8a9f9f05b25fedce2ded16fa6008c1a6e4290603" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpseclib/mcrypt_compat/zipball/6505669343743daf290b7d7b6b7105f85fd9988f", - "reference": "6505669343743daf290b7d7b6b7105f85fd9988f", + "url": "https://api.github.com/repos/phpseclib/mcrypt_compat/zipball/8a9f9f05b25fedce2ded16fa6008c1a6e4290603", + "reference": "8a9f9f05b25fedce2ded16fa6008c1a6e4290603", "shasum": "" }, "require": { @@ -7035,20 +5700,20 @@ "type": "tidelift" } ], - "time": "2022-12-19T00:32:45+00:00" + "time": "2022-03-27T15:58:45+00:00" }, { "name": "phpseclib/phpseclib", - "version": "3.0.33", + "version": "3.0.21", "source": { "type": "git", "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "33fa69b2514a61138dd48e7a49f99445711e0ad0" + "reference": "4580645d3fc05c189024eb3b834c6c1e4f0f30a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/33fa69b2514a61138dd48e7a49f99445711e0ad0", - "reference": "33fa69b2514a61138dd48e7a49f99445711e0ad0", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/4580645d3fc05c189024eb3b834c6c1e4f0f30a1", + "reference": "4580645d3fc05c189024eb3b834c6c1e4f0f30a1", "shasum": "" }, "require": { @@ -7129,7 +5794,7 @@ ], "support": { "issues": "https://github.com/phpseclib/phpseclib/issues", - "source": "https://github.com/phpseclib/phpseclib/tree/3.0.33" + "source": "https://github.com/phpseclib/phpseclib/tree/3.0.21" }, "funding": [ { @@ -7145,7 +5810,7 @@ "type": "tidelift" } ], - "time": "2023-10-21T14:00:39+00:00" + "time": "2023-07-09T15:24:48+00:00" }, { "name": "psr/cache", @@ -7196,54 +5861,6 @@ }, "time": "2021-02-03T23:26:27+00:00" }, - { - "name": "psr/clock", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/clock.git", - "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", - "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Psr\\Clock\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for reading the clock.", - "homepage": "https://github.com/php-fig/clock", - "keywords": [ - "clock", - "now", - "psr", - "psr-20", - "time" - ], - "support": { - "issues": "https://github.com/php-fig/clock/issues", - "source": "https://github.com/php-fig/clock/tree/1.0.0" - }, - "time": "2022-11-25T14:36:26+00:00" - }, { "name": "psr/container", "version": "1.1.2", @@ -7344,16 +5961,16 @@ }, { "name": "psr/http-client", - "version": "1.0.3", + "version": "1.0.2", "source": { "type": "git", "url": "https://github.com/php-fig/http-client.git", - "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" + "reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", - "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/0955afe48220520692d2d09f7ab7e0f93ffd6a31", + "reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31", "shasum": "" }, "require": { @@ -7390,9 +6007,9 @@ "psr-18" ], "support": { - "source": "https://github.com/php-fig/http-client" + "source": "https://github.com/php-fig/http-client/tree/1.0.2" }, - "time": "2023-09-23T14:17:50+00:00" + "time": "2023-04-10T20:12:12+00:00" }, { "name": "psr/http-factory", @@ -7687,16 +6304,16 @@ }, { "name": "ramsey/uuid", - "version": "4.7.5", + "version": "4.7.4", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e" + "reference": "60a4c63ab724854332900504274f6150ff26d286" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e", - "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/60a4c63ab724854332900504274f6150ff26d286", + "reference": "60a4c63ab724854332900504274f6150ff26d286", "shasum": "" }, "require": { @@ -7763,7 +6380,7 @@ ], "support": { "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.7.5" + "source": "https://github.com/ramsey/uuid/tree/4.7.4" }, "funding": [ { @@ -7775,27 +6392,27 @@ "type": "tidelift" } ], - "time": "2023-11-08T05:53:05+00:00" + "time": "2023-04-15T23:01:58+00:00" }, { "name": "react/promise", - "version": "v2.11.0", + "version": "v2.10.0", "source": { "type": "git", "url": "https://github.com/reactphp/promise.git", - "reference": "1a8460931ea36dc5c76838fec5734d55c88c6831" + "reference": "f913fb8cceba1e6644b7b90c4bfb678ed8a3ef38" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/promise/zipball/1a8460931ea36dc5c76838fec5734d55c88c6831", - "reference": "1a8460931ea36dc5c76838fec5734d55c88c6831", + "url": "https://api.github.com/repos/reactphp/promise/zipball/f913fb8cceba1e6644b7b90c4bfb678ed8a3ef38", + "reference": "f913fb8cceba1e6644b7b90c4bfb678ed8a3ef38", "shasum": "" }, "require": { "php": ">=5.4.0" }, "require-dev": { - "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.36" }, "type": "library", "autoload": { @@ -7839,7 +6456,7 @@ ], "support": { "issues": "https://github.com/reactphp/promise/issues", - "source": "https://github.com/reactphp/promise/tree/v2.11.0" + "source": "https://github.com/reactphp/promise/tree/v2.10.0" }, "funding": [ { @@ -7847,7 +6464,7 @@ "type": "open_collective" } ], - "time": "2023-11-16T16:16:50+00:00" + "time": "2023-05-02T15:15:43+00:00" }, { "name": "sabberworm/php-css-parser", @@ -8016,16 +6633,16 @@ }, { "name": "seld/signal-handler", - "version": "2.0.2", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/Seldaek/signal-handler.git", - "reference": "04a6112e883ad76c0ada8e4a9f7520bbfdb6bb98" + "reference": "f69d119511dc0360440cdbdaa71829c149b7be75" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/signal-handler/zipball/04a6112e883ad76c0ada8e4a9f7520bbfdb6bb98", - "reference": "04a6112e883ad76c0ada8e4a9f7520bbfdb6bb98", + "url": "https://api.github.com/repos/Seldaek/signal-handler/zipball/f69d119511dc0360440cdbdaa71829c149b7be75", + "reference": "f69d119511dc0360440cdbdaa71829c149b7be75", "shasum": "" }, "require": { @@ -8071,9 +6688,9 @@ ], "support": { "issues": "https://github.com/Seldaek/signal-handler/issues", - "source": "https://github.com/Seldaek/signal-handler/tree/2.0.2" + "source": "https://github.com/Seldaek/signal-handler/tree/2.0.1" }, - "time": "2023-09-03T09:24:00+00:00" + "time": "2022-07-20T18:31:45+00:00" }, { "name": "spomky-labs/aes-key-wrap", @@ -8095,189 +6712,21 @@ "php": ">=8.0" }, "require-dev": { - "infection/infection": "^0.25.4", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.0", - "phpstan/phpstan-beberlei-assert": "^1.0", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "phpstan/phpstan-strict-rules": "^1.0", - "phpunit/phpunit": "^9.0", - "rector/rector": "^0.12.5", - "symplify/easy-coding-standard": "^10.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "AESKW\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Florent Morselli", - "homepage": "https://github.com/Spomky-Labs/aes-key-wrap/contributors" - } - ], - "description": "AES Key Wrap for PHP.", - "homepage": "https://github.com/Spomky-Labs/aes-key-wrap", - "keywords": [ - "A128KW", - "A192KW", - "A256KW", - "RFC3394", - "RFC5649", - "aes", - "key", - "padding", - "wrap" - ], - "support": { - "issues": "https://github.com/Spomky-Labs/aes-key-wrap/issues", - "source": "https://github.com/Spomky-Labs/aes-key-wrap/tree/v7.0.0" - }, - "funding": [ - { - "url": "https://github.com/Spomky", - "type": "github" - }, - { - "url": "https://www.patreon.com/FlorentMorselli", - "type": "patreon" - } - ], - "time": "2021-12-08T20:36:59+00:00" - }, - { - "name": "spomky-labs/otphp", - "version": "11.2.0", - "source": { - "type": "git", - "url": "https://github.com/Spomky-Labs/otphp.git", - "reference": "9a1569038bb1c8e98040b14b8bcbba54f25e7795" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Spomky-Labs/otphp/zipball/9a1569038bb1c8e98040b14b8bcbba54f25e7795", - "reference": "9a1569038bb1c8e98040b14b8bcbba54f25e7795", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "paragonie/constant_time_encoding": "^2.0", - "php": "^8.1" - }, - "require-dev": { - "ekino/phpstan-banned-code": "^1.0", - "infection/infection": "^0.26", - "php-parallel-lint/php-parallel-lint": "^1.3", - "phpstan/phpstan": "^1.0", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "phpstan/phpstan-strict-rules": "^1.0", - "phpunit/phpunit": "^9.5.26", - "qossmic/deptrac-shim": "^1.0", - "rector/rector": "^0.15", - "symfony/phpunit-bridge": "^6.1", - "symplify/easy-coding-standard": "^11.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "OTPHP\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Florent Morselli", - "homepage": "https://github.com/Spomky" - }, - { - "name": "All contributors", - "homepage": "https://github.com/Spomky-Labs/otphp/contributors" - } - ], - "description": "A PHP library for generating one time passwords according to RFC 4226 (HOTP Algorithm) and the RFC 6238 (TOTP Algorithm) and compatible with Google Authenticator", - "homepage": "https://github.com/Spomky-Labs/otphp", - "keywords": [ - "FreeOTP", - "RFC 4226", - "RFC 6238", - "google authenticator", - "hotp", - "otp", - "totp" - ], - "support": { - "issues": "https://github.com/Spomky-Labs/otphp/issues", - "source": "https://github.com/Spomky-Labs/otphp/tree/11.2.0" - }, - "funding": [ - { - "url": "https://github.com/Spomky", - "type": "github" - }, - { - "url": "https://www.patreon.com/FlorentMorselli", - "type": "patreon" - } - ], - "time": "2023-03-16T19:16:25+00:00" - }, - { - "name": "spomky-labs/pki-framework", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/Spomky-Labs/pki-framework.git", - "reference": "d3ba688bf40e7c6e0dabf065ee18fc210734e760" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Spomky-Labs/pki-framework/zipball/d3ba688bf40e7c6e0dabf065ee18fc210734e760", - "reference": "d3ba688bf40e7c6e0dabf065ee18fc210734e760", - "shasum": "" - }, - "require": { - "brick/math": "^0.10 || ^0.11", - "ext-mbstring": "*", - "php": ">=8.1" - }, - "require-dev": { - "ekino/phpstan-banned-code": "^1.0", - "ext-gmp": "*", - "ext-openssl": "*", - "infection/infection": "^0.26", - "php-parallel-lint/php-parallel-lint": "^1.3", - "phpstan/phpstan": "^1.8", + "infection/infection": "^0.25.4", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.0", "phpstan/phpstan-beberlei-assert": "^1.0", "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.1", - "phpstan/phpstan-strict-rules": "^1.3", - "phpunit/phpunit": "^10.0", - "rector/rector": "^0.15", - "roave/security-advisories": "dev-latest", - "symfony/phpunit-bridge": "^6.1", - "symfony/var-dumper": "^6.1", - "symplify/easy-coding-standard": "^11.1", - "thecodingmachine/phpstan-safe-rule": "^1.2" - }, - "suggest": { - "ext-bcmath": "For better performance (or GMP)", - "ext-gmp": "For better performance (or BCMath)", - "ext-openssl": "For OpenSSL based cyphering" + "phpstan/phpstan-phpunit": "^1.0", + "phpstan/phpstan-strict-rules": "^1.0", + "phpunit/phpunit": "^9.0", + "rector/rector": "^0.12.5", + "symplify/easy-coding-standard": "^10.0" }, "type": "library", "autoload": { "psr-4": { - "SpomkyLabs\\Pki\\": "src/" + "AESKW\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -8285,49 +6734,27 @@ "MIT" ], "authors": [ - { - "name": "Joni Eskelinen", - "email": "jonieske@gmail.com", - "role": "Original developer" - }, { "name": "Florent Morselli", - "email": "florent.morselli@spomky-labs.com", - "role": "Spomky-Labs PKI Framework developer" + "homepage": "https://github.com/Spomky-Labs/aes-key-wrap/contributors" } ], - "description": "A PHP framework for managing Public Key Infrastructures. It comprises X.509 public key certificates, attribute certificates, certification requests and certification path validation.", - "homepage": "https://github.com/spomky-labs/pki-framework", + "description": "AES Key Wrap for PHP.", + "homepage": "https://github.com/Spomky-Labs/aes-key-wrap", "keywords": [ - "DER", - "Private Key", - "ac", - "algorithm identifier", - "asn.1", - "asn1", - "attribute certificate", - "certificate", - "certification request", - "cryptography", - "csr", - "decrypt", - "ec", - "encrypt", - "pem", - "pkcs", - "public key", - "rsa", - "sign", - "signature", - "verify", - "x.509", - "x.690", - "x509", - "x690" + "A128KW", + "A192KW", + "A256KW", + "RFC3394", + "RFC5649", + "aes", + "key", + "padding", + "wrap" ], "support": { - "issues": "https://github.com/Spomky-Labs/pki-framework/issues", - "source": "https://github.com/Spomky-Labs/pki-framework/tree/1.1.0" + "issues": "https://github.com/Spomky-Labs/aes-key-wrap/issues", + "source": "https://github.com/Spomky-Labs/aes-key-wrap/tree/v7.0.0" }, "funding": [ { @@ -8339,38 +6766,42 @@ "type": "patreon" } ], - "time": "2023-02-13T17:21:24+00:00" + "time": "2021-12-08T20:36:59+00:00" }, { "name": "symfony/config", - "version": "v6.3.8", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "b7a63887960359e5b59b15826fa9f9be10acbe88" + "reference": "ec79e03125c1d2477e43dde8528535d90cc78379" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/b7a63887960359e5b59b15826fa9f9be10acbe88", - "reference": "b7a63887960359e5b59b15826fa9f9be10acbe88", + "url": "https://api.github.com/repos/symfony/config/zipball/ec79e03125c1d2477e43dde8528535d90cc78379", + "reference": "ec79e03125c1d2477e43dde8528535d90cc78379", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/filesystem": "^5.4|^6.0", - "symfony/polyfill-ctype": "~1.8" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/filesystem": "^4.4|^5.0|^6.0", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php80": "^1.16", + "symfony/polyfill-php81": "^1.22" }, "conflict": { - "symfony/finder": "<5.4", - "symfony/service-contracts": "<2.5" + "symfony/finder": "<4.4" }, "require-dev": { - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/messenger": "^5.4|^6.0", - "symfony/service-contracts": "^2.5|^3", - "symfony/yaml": "^5.4|^6.0" + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/messenger": "^4.4|^5.0|^6.0", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/yaml": "^4.4|^5.0|^6.0" + }, + "suggest": { + "symfony/yaml": "To use the yaml reference dumper" }, "type": "library", "autoload": { @@ -8398,7 +6829,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v6.3.8" + "source": "https://github.com/symfony/config/tree/v5.4.11" }, "funding": [ { @@ -8414,20 +6845,20 @@ "type": "tidelift" } ], - "time": "2023-11-09T08:28:21+00:00" + "time": "2022-07-20T13:00:38+00:00" }, { "name": "symfony/console", - "version": "v5.4.31", + "version": "v5.4.24", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "11ac5f154e0e5c4c77af83ad11ead9165280b92a" + "reference": "560fc3ed7a43e6d30ea94a07d77f9a60b8ed0fb8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/11ac5f154e0e5c4c77af83ad11ead9165280b92a", - "reference": "11ac5f154e0e5c4c77af83ad11ead9165280b92a", + "url": "https://api.github.com/repos/symfony/console/zipball/560fc3ed7a43e6d30ea94a07d77f9a60b8ed0fb8", + "reference": "560fc3ed7a43e6d30ea94a07d77f9a60b8ed0fb8", "shasum": "" }, "require": { @@ -8497,7 +6928,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.31" + "source": "https://github.com/symfony/console/tree/v5.4.24" }, "funding": [ { @@ -8513,20 +6944,20 @@ "type": "tidelift" } ], - "time": "2023-10-31T07:58:33+00:00" + "time": "2023-05-26T05:13:16+00:00" }, { "name": "symfony/css-selector", - "version": "v6.3.2", + "version": "v6.3.0", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "883d961421ab1709877c10ac99451632a3d6fa57" + "reference": "88453e64cd86c5b60e8d2fb2c6f953bbc353ffbf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/883d961421ab1709877c10ac99451632a3d6fa57", - "reference": "883d961421ab1709877c10ac99451632a3d6fa57", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/88453e64cd86c5b60e8d2fb2c6f953bbc353ffbf", + "reference": "88453e64cd86c5b60e8d2fb2c6f953bbc353ffbf", "shasum": "" }, "require": { @@ -8562,7 +6993,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v6.3.2" + "source": "https://github.com/symfony/css-selector/tree/v6.3.0" }, "funding": [ { @@ -8578,44 +7009,52 @@ "type": "tidelift" } ], - "time": "2023-07-12T16:00:22+00:00" + "time": "2023-03-20T16:43:42+00:00" }, { "name": "symfony/dependency-injection", - "version": "v6.3.8", + "version": "v5.4.13", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "1f30f545c4151f611148fc19e28d54d39e0a00bc" + "reference": "24cf522668845391c0542bc1de496366072a6d0e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/1f30f545c4151f611148fc19e28d54d39e0a00bc", - "reference": "1f30f545c4151f611148fc19e28d54d39e0a00bc", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/24cf522668845391c0542bc1de496366072a6d0e", + "reference": "24cf522668845391c0542bc1de496366072a6d0e", "shasum": "" }, "require": { - "php": ">=8.1", - "psr/container": "^1.1|^2.0", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/service-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^6.2.10" + "php": ">=7.2.5", + "psr/container": "^1.1.1", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php80": "^1.16", + "symfony/polyfill-php81": "^1.22", + "symfony/service-contracts": "^1.1.6|^2" }, "conflict": { "ext-psr": "<1.1|>=2", - "symfony/config": "<6.1", - "symfony/finder": "<5.4", - "symfony/proxy-manager-bridge": "<6.3", - "symfony/yaml": "<5.4" + "symfony/config": "<5.3", + "symfony/finder": "<4.4", + "symfony/proxy-manager-bridge": "<4.4", + "symfony/yaml": "<4.4.26" }, "provide": { - "psr/container-implementation": "1.1|2.0", - "symfony/service-implementation": "1.1|2.0|3.0" + "psr/container-implementation": "1.0", + "symfony/service-implementation": "1.0|2.0" }, "require-dev": { - "symfony/config": "^6.1", - "symfony/expression-language": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" + "symfony/config": "^5.3|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4.26|^5.0|^6.0" + }, + "suggest": { + "symfony/config": "", + "symfony/expression-language": "For using expressions in service container configuration", + "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required", + "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", + "symfony/yaml": "" }, "type": "library", "autoload": { @@ -8643,7 +7082,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v6.3.8" + "source": "https://github.com/symfony/dependency-injection/tree/v5.4.13" }, "funding": [ { @@ -8659,11 +7098,11 @@ "type": "tidelift" } ], - "time": "2023-10-31T08:07:48+00:00" + "time": "2022-08-30T19:10:13+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.4.0", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", @@ -8710,7 +7149,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.4.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.3.0" }, "funding": [ { @@ -8730,30 +7169,27 @@ }, { "name": "symfony/error-handler", - "version": "v6.3.5", + "version": "v5.4.9", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "1f69476b64fb47105c06beef757766c376b548c4" + "reference": "c116cda1f51c678782768dce89a45f13c949455d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/1f69476b64fb47105c06beef757766c376b548c4", - "reference": "1f69476b64fb47105c06beef757766c376b548c4", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/c116cda1f51c678782768dce89a45f13c949455d", + "reference": "c116cda1f51c678782768dce89a45f13c949455d", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=7.2.5", "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "conflict": { - "symfony/deprecation-contracts": "<2.5" + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "require-dev": { - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/serializer": "^4.4|^5.0|^6.0" }, "bin": [ "Resources/bin/patch-type-declarations" @@ -8784,7 +7220,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.3.5" + "source": "https://github.com/symfony/error-handler/tree/v5.4.9" }, "funding": [ { @@ -8800,20 +7236,20 @@ "type": "tidelift" } ], - "time": "2023-09-12T06:57:20+00:00" + "time": "2022-05-21T13:57:48+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v6.3.2", + "version": "v6.3.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e" + "reference": "3af8ac1a3f98f6dbc55e10ae59c9e44bfc38dfaa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/adb01fe097a4ee930db9258a3cc906b5beb5cf2e", - "reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/3af8ac1a3f98f6dbc55e10ae59c9e44bfc38dfaa", + "reference": "3af8ac1a3f98f6dbc55e10ae59c9e44bfc38dfaa", "shasum": "" }, "require": { @@ -8864,7 +7300,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.3.2" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.3.0" }, "funding": [ { @@ -8880,11 +7316,11 @@ "type": "tidelift" } ], - "time": "2023-07-06T06:56:43+00:00" + "time": "2023-04-21T14:41:17+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.4.0", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", @@ -8940,7 +7376,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.3.0" }, "funding": [ { @@ -9023,16 +7459,16 @@ }, { "name": "symfony/finder", - "version": "v5.4.27", + "version": "v5.4.21", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "ff4bce3c33451e7ec778070e45bd23f74214cd5d" + "reference": "078e9a5e1871fcfe6a5ce421b539344c21afef19" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/ff4bce3c33451e7ec778070e45bd23f74214cd5d", - "reference": "ff4bce3c33451e7ec778070e45bd23f74214cd5d", + "url": "https://api.github.com/repos/symfony/finder/zipball/078e9a5e1871fcfe6a5ce421b539344c21afef19", + "reference": "078e9a5e1871fcfe6a5ce421b539344c21afef19", "shasum": "" }, "require": { @@ -9066,7 +7502,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v5.4.27" + "source": "https://github.com/symfony/finder/tree/v5.4.21" }, "funding": [ { @@ -9082,41 +7518,40 @@ "type": "tidelift" } ], - "time": "2023-07-31T08:02:31+00:00" + "time": "2023-02-16T09:33:00+00:00" }, { "name": "symfony/http-foundation", - "version": "v6.3.8", + "version": "v5.4.25", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "ce332676de1912c4389222987193c3ef38033df6" + "reference": "f66be2706075c5f6325d2fe2b743a57fb5d23f6b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ce332676de1912c4389222987193c3ef38033df6", - "reference": "ce332676de1912c4389222987193c3ef38033df6", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/f66be2706075c5f6325d2fe2b743a57fb5d23f6b", + "reference": "f66be2706075c5f6325d2fe2b743a57fb5d23f6b", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-mbstring": "~1.1", - "symfony/polyfill-php83": "^1.27" - }, - "conflict": { - "symfony/cache": "<6.3" + "symfony/polyfill-php80": "^1.16" }, "require-dev": { - "doctrine/dbal": "^2.13.1|^3|^4", - "predis/predis": "^1.1|^2.0", - "symfony/cache": "^6.3", + "predis/predis": "~1.0", + "symfony/cache": "^4.4|^5.0|^6.0", "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4", - "symfony/mime": "^5.4|^6.0", + "symfony/mime": "^4.4|^5.0|^6.0", "symfony/rate-limiter": "^5.2|^6.0" }, + "suggest": { + "symfony/mime": "To use the file extension guesser" + }, "type": "library", "autoload": { "psr-4": { @@ -9143,7 +7578,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.3.8" + "source": "https://github.com/symfony/http-foundation/tree/v5.4.25" }, "funding": [ { @@ -9159,77 +7594,76 @@ "type": "tidelift" } ], - "time": "2023-11-07T10:17:15+00:00" + "time": "2023-06-22T08:06:06+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.3.8", + "version": "v5.4.10", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "929202375ccf44a309c34aeca8305408442ebcc1" + "reference": "255ae3b0a488d78fbb34da23d3e0c059874b5948" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/929202375ccf44a309c34aeca8305408442ebcc1", - "reference": "929202375ccf44a309c34aeca8305408442ebcc1", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/255ae3b0a488d78fbb34da23d3e0c059874b5948", + "reference": "255ae3b0a488d78fbb34da23d3e0c059874b5948", "shasum": "" }, "require": { - "php": ">=8.1", - "psr/log": "^1|^2|^3", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/error-handler": "^6.3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^6.3.4", - "symfony/polyfill-ctype": "^1.8" + "php": ">=7.2.5", + "psr/log": "^1|^2", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^5.0|^6.0", + "symfony/http-foundation": "^5.3.7|^6.0", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16" }, "conflict": { "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<6.1", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<6.3.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/http-client-contracts": "<2.5", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/translation-contracts": "<2.5", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "symfony/var-dumper": "<6.3", + "symfony/cache": "<5.0", + "symfony/config": "<5.0", + "symfony/console": "<4.4", + "symfony/dependency-injection": "<5.3", + "symfony/doctrine-bridge": "<5.0", + "symfony/form": "<5.0", + "symfony/http-client": "<5.0", + "symfony/mailer": "<5.0", + "symfony/messenger": "<5.0", + "symfony/translation": "<5.0", + "symfony/twig-bridge": "<5.0", + "symfony/validator": "<5.0", "twig/twig": "<2.13" }, "provide": { - "psr/log-implementation": "1.0|2.0|3.0" + "psr/log-implementation": "1.0|2.0" }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", "symfony/browser-kit": "^5.4|^6.0", - "symfony/clock": "^6.2", - "symfony/config": "^6.1", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^6.3.4", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^2.5|^3", - "symfony/process": "^5.4|^6.0", - "symfony/property-access": "^5.4.5|^6.0.5", - "symfony/routing": "^5.4|^6.0", - "symfony/serializer": "^6.3", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^2.5|^3", - "symfony/uid": "^5.4|^6.0", - "symfony/validator": "^6.3", - "symfony/var-exporter": "^6.2", + "symfony/config": "^5.0|^6.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/css-selector": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^5.3|^6.0", + "symfony/dom-crawler": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/http-client-contracts": "^1.1|^2|^3", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/routing": "^4.4|^5.0|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2|^3", "twig/twig": "^2.13|^3.0.4" }, + "suggest": { + "symfony/browser-kit": "", + "symfony/config": "", + "symfony/console": "", + "symfony/dependency-injection": "" + }, "type": "library", "autoload": { "psr-4": { @@ -9256,7 +7690,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.3.8" + "source": "https://github.com/symfony/http-kernel/tree/v5.4.10" }, "funding": [ { @@ -9272,20 +7706,20 @@ "type": "tidelift" } ], - "time": "2023-11-10T13:47:32+00:00" + "time": "2022-06-26T16:57:59+00:00" }, { "name": "symfony/intl", - "version": "v5.4.30", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/intl.git", - "reference": "cd6cce16151ac871071a3495e7a325460b952b5a" + "reference": "d305c0c1d31b30b3876e041804c35e49e5f8a96e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/intl/zipball/cd6cce16151ac871071a3495e7a325460b952b5a", - "reference": "cd6cce16151ac871071a3495e7a325460b952b5a", + "url": "https://api.github.com/repos/symfony/intl/zipball/d305c0c1d31b30b3876e041804c35e49e5f8a96e", + "reference": "d305c0c1d31b30b3876e041804c35e49e5f8a96e", "shasum": "" }, "require": { @@ -9294,8 +7728,7 @@ "symfony/polyfill-php80": "^1.16" }, "require-dev": { - "symfony/filesystem": "^4.4|^5.0|^6.0", - "symfony/var-exporter": "^5.4|^6.0" + "symfony/filesystem": "^4.4|^5.0|^6.0" }, "type": "library", "autoload": { @@ -9345,7 +7778,7 @@ "localization" ], "support": { - "source": "https://github.com/symfony/intl/tree/v5.4.30" + "source": "https://github.com/symfony/intl/tree/v5.4.11" }, "funding": [ { @@ -9361,20 +7794,20 @@ "type": "tidelift" } ], - "time": "2023-10-28T09:19:54+00:00" + "time": "2022-07-20T11:34:24+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.28.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" + "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", - "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", + "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", "shasum": "" }, "require": { @@ -9389,7 +7822,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.28-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -9427,7 +7860,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" }, "funding": [ { @@ -9443,20 +7876,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.28.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "875e90aeea2777b6f135677f618529449334a612" + "reference": "511a08c03c1960e08a883f4cffcacd219b758354" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612", - "reference": "875e90aeea2777b6f135677f618529449334a612", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354", + "reference": "511a08c03c1960e08a883f4cffcacd219b758354", "shasum": "" }, "require": { @@ -9468,7 +7901,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.28-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -9508,7 +7941,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0" }, "funding": [ { @@ -9524,20 +7957,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.28.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "ecaafce9f77234a6a449d29e49267ba10499116d" + "reference": "639084e360537a19f9ee352433b84ce831f3d2da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/ecaafce9f77234a6a449d29e49267ba10499116d", - "reference": "ecaafce9f77234a6a449d29e49267ba10499116d", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/639084e360537a19f9ee352433b84ce831f3d2da", + "reference": "639084e360537a19f9ee352433b84ce831f3d2da", "shasum": "" }, "require": { @@ -9551,7 +7984,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.28-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -9595,7 +8028,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.27.0" }, "funding": [ { @@ -9611,20 +8044,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:30:37+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.28.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92" + "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", - "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", + "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", "shasum": "" }, "require": { @@ -9636,7 +8069,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.28-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -9679,7 +8112,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0" }, "funding": [ { @@ -9695,20 +8128,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.28.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "42292d99c55abe617799667f454222c54c60e229" + "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", - "reference": "42292d99c55abe617799667f454222c54c60e229", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", + "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", "shasum": "" }, "require": { @@ -9723,7 +8156,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.28-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -9762,7 +8195,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" }, "funding": [ { @@ -9778,20 +8211,20 @@ "type": "tidelift" } ], - "time": "2023-07-28T09:04:16+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.28.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179" + "reference": "869329b1e9894268a8a61dabb69153029b7a8c97" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/70f4aebd92afca2f865444d30a4d2151c13c3179", - "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/869329b1e9894268a8a61dabb69153029b7a8c97", + "reference": "869329b1e9894268a8a61dabb69153029b7a8c97", "shasum": "" }, "require": { @@ -9800,7 +8233,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.28-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -9838,7 +8271,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-php72/tree/v1.27.0" }, "funding": [ { @@ -9854,20 +8287,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.28.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "fe2f306d1d9d346a7fee353d0d5012e401e984b5" + "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fe2f306d1d9d346a7fee353d0d5012e401e984b5", - "reference": "fe2f306d1d9d346a7fee353d0d5012e401e984b5", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/9e8ecb5f92152187c4799efd3c96b78ccab18ff9", + "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9", "shasum": "" }, "require": { @@ -9876,7 +8309,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.28-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -9917,7 +8350,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.27.0" }, "funding": [ { @@ -9933,20 +8366,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.28.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5" + "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5", - "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", + "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", "shasum": "" }, "require": { @@ -9955,7 +8388,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.28-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -10000,7 +8433,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" }, "funding": [ { @@ -10016,20 +8449,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-php81", - "version": "v1.28.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b" + "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/7581cd600fa9fd681b797d00b02f068e2f13263b", - "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/707403074c8ea6e2edaf8794b0157a0bfa52157a", + "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a", "shasum": "" }, "require": { @@ -10038,7 +8471,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.28-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -10079,87 +8512,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.28.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-01-26T09:26:14+00:00" - }, - { - "name": "symfony/polyfill-php83", - "version": "v1.28.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php83.git", - "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11", - "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11", - "shasum": "" - }, - "require": { - "php": ">=7.1", - "symfony/polyfill-php80": "^1.14" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php83\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php83/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.27.0" }, "funding": [ { @@ -10175,7 +8528,7 @@ "type": "tidelift" } ], - "time": "2023-08-16T06:22:46+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/process", @@ -10324,16 +8677,16 @@ }, { "name": "symfony/string", - "version": "v5.4.31", + "version": "v5.4.22", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "2765096c03f39ddf54f6af532166e42aaa05b24b" + "reference": "8036a4c76c0dd29e60b6a7cafcacc50cf088ea62" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/2765096c03f39ddf54f6af532166e42aaa05b24b", - "reference": "2765096c03f39ddf54f6af532166e42aaa05b24b", + "url": "https://api.github.com/repos/symfony/string/zipball/8036a4c76c0dd29e60b6a7cafcacc50cf088ea62", + "reference": "8036a4c76c0dd29e60b6a7cafcacc50cf088ea62", "shasum": "" }, "require": { @@ -10341,113 +8694,25 @@ "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-intl-grapheme": "~1.0", "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "~1.15" - }, - "conflict": { - "symfony/translation-contracts": ">=3.0" - }, - "require-dev": { - "symfony/error-handler": "^4.4|^5.0|^6.0", - "symfony/http-client": "^4.4|^5.0|^6.0", - "symfony/translation-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.4|^5.0|^6.0" - }, - "type": "library", - "autoload": { - "files": [ - "Resources/functions.php" - ], - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v5.4.31" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-11-09T08:19:44+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v6.3.8", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "81acabba9046550e89634876ca64bfcd3c06aa0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/81acabba9046550e89634876ca64bfcd3c06aa0a", - "reference": "81acabba9046550e89634876ca64bfcd3c06aa0a", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-mbstring": "~1.0" + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" }, "conflict": { - "symfony/console": "<5.4" + "symfony/translation-contracts": ">=3.0" }, "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0|^6.0" }, - "bin": [ - "Resources/bin/var-dump-server" - ], "type": "library", "autoload": { "files": [ - "Resources/functions/dump.php" + "Resources/functions.php" ], "psr-4": { - "Symfony\\Component\\VarDumper\\": "" + "Symfony\\Component\\String\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -10467,14 +8732,18 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides mechanisms for walking through any arbitrary PHP variable", + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", "homepage": "https://symfony.com", "keywords": [ - "debug", - "dump" + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.3.8" + "source": "https://github.com/symfony/string/tree/v5.4.22" }, "funding": [ { @@ -10490,32 +8759,46 @@ "type": "tidelift" } ], - "time": "2023-11-08T10:42:36+00:00" + "time": "2023-03-14T06:11:53+00:00" }, { - "name": "symfony/var-exporter", - "version": "v6.3.6", + "name": "symfony/var-dumper", + "version": "v6.3.1", "source": { "type": "git", - "url": "https://github.com/symfony/var-exporter.git", - "reference": "374d289c13cb989027274c86206ddc63b16a2441" + "url": "https://github.com/symfony/var-dumper.git", + "reference": "c81268d6960ddb47af17391a27d222bd58cf0515" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/374d289c13cb989027274c86206ddc63b16a2441", - "reference": "374d289c13cb989027274c86206ddc63b16a2441", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/c81268d6960ddb47af17391a27d222bd58cf0515", + "reference": "c81268d6960ddb47af17391a27d222bd58cf0515", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.1", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/console": "<5.4" }, "require-dev": { - "symfony/var-dumper": "^5.4|^6.0" + "ext-iconv": "*", + "symfony/console": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0", + "symfony/uid": "^5.4|^6.0", + "twig/twig": "^2.13|^3.0.4" }, + "bin": [ + "Resources/bin/var-dump-server" + ], "type": "library", "autoload": { + "files": [ + "Resources/functions/dump.php" + ], "psr-4": { - "Symfony\\Component\\VarExporter\\": "" + "Symfony\\Component\\VarDumper\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -10535,20 +8818,14 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Allows exporting any serializable PHP data structure to plain PHP code", + "description": "Provides mechanisms for walking through any arbitrary PHP variable", "homepage": "https://symfony.com", "keywords": [ - "clone", - "construct", - "export", - "hydrate", - "instantiate", - "lazy-loading", - "proxy", - "serialize" + "debug", + "dump" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v6.3.6" + "source": "https://github.com/symfony/var-dumper/tree/v6.3.1" }, "funding": [ { @@ -10564,29 +8841,29 @@ "type": "tidelift" } ], - "time": "2023-10-13T09:16:49+00:00" + "time": "2023-06-21T12:08:28+00:00" }, { "name": "tedivm/jshrink", - "version": "v1.7.0", + "version": "v1.4.0", "source": { "type": "git", "url": "https://github.com/tedious/JShrink.git", - "reference": "7a35f5a4651ca2ce77295eb8a3b4e133ba47e19e" + "reference": "0513ba1407b1f235518a939455855e6952a48bbc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tedious/JShrink/zipball/7a35f5a4651ca2ce77295eb8a3b4e133ba47e19e", - "reference": "7a35f5a4651ca2ce77295eb8a3b4e133ba47e19e", + "url": "https://api.github.com/repos/tedious/JShrink/zipball/0513ba1407b1f235518a939455855e6952a48bbc", + "reference": "0513ba1407b1f235518a939455855e6952a48bbc", "shasum": "" }, "require": { - "php": "^7.0|^8.0" + "php": "^5.6|^7.0|^8.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^3.14", - "php-coveralls/php-coveralls": "^2.5.0", - "phpunit/phpunit": "^9|^10" + "friendsofphp/php-cs-fixer": "^2.8", + "php-coveralls/php-coveralls": "^1.1.0", + "phpunit/phpunit": "^6" }, "type": "library", "autoload": { @@ -10612,19 +8889,15 @@ ], "support": { "issues": "https://github.com/tedious/JShrink/issues", - "source": "https://github.com/tedious/JShrink/tree/v1.7.0" + "source": "https://github.com/tedious/JShrink/tree/v1.4.0" }, "funding": [ - { - "url": "https://github.com/tedivm", - "type": "github" - }, { "url": "https://tidelift.com/funding/github/packagist/tedivm/jshrink", "type": "tidelift" } ], - "time": "2023-10-04T17:23:23+00:00" + "time": "2020-11-30T18:10:21+00:00" }, { "name": "tubalmartin/cssmin", @@ -10685,32 +8958,31 @@ }, { "name": "web-token/jwt-framework", - "version": "3.2.8", + "version": "3.1.2", "source": { "type": "git", "url": "https://github.com/web-token/jwt-framework.git", - "reference": "bfceee5b742560dd861dcf690b12aa8fab3a8756" + "reference": "c8d3a304855844451d1d2d3e6087a6f287cba1d9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/web-token/jwt-framework/zipball/bfceee5b742560dd861dcf690b12aa8fab3a8756", - "reference": "bfceee5b742560dd861dcf690b12aa8fab3a8756", + "url": "https://api.github.com/repos/web-token/jwt-framework/zipball/c8d3a304855844451d1d2d3e6087a6f287cba1d9", + "reference": "c8d3a304855844451d1d2d3e6087a6f287cba1d9", "shasum": "" }, "require": { - "brick/math": "^0.9|^0.10|^0.11", + "brick/math": "^0.9|^0.10", "ext-json": "*", "ext-mbstring": "*", "ext-openssl": "*", "ext-sodium": "*", + "fgrosse/phpasn1": "^2.0", "paragonie/constant_time_encoding": "^2.4", "php": ">=8.1", - "psr/clock": "^1.0", "psr/event-dispatcher": "^1.0", "psr/http-client": "^1.0", "psr/http-factory": "^1.0", "spomky-labs/aes-key-wrap": "^7.0", - "spomky-labs/pki-framework": "^1.0", "symfony/config": "^5.4|^6.0", "symfony/console": "^5.4|^6.0", "symfony/dependency-injection": "^5.4|^6.0", @@ -10751,24 +9023,23 @@ }, "require-dev": { "bjeavons/zxcvbn-php": "^1.3", - "blackfire/php-sdk": "^2.0", + "blackfire/php-sdk": "^1.31", "ekino/phpstan-banned-code": "^1.0", "ext-curl": "*", "ext-gmp": "*", - "infection/infection": "^0.27", + "infection/infection": "^0.26", "matthiasnoback/symfony-config-test": "^4.3.0", "nyholm/psr7": "^1.5", "php-http/mock-client": "^1.5", "php-parallel-lint/php-parallel-lint": "^1.3", "phpbench/phpbench": "^1.2", - "phpstan/extension-installer": "^1.3", + "phpstan/extension-installer": "^1.1", "phpstan/phpstan": "^1.8", "phpstan/phpstan-deprecation-rules": "^1.0", "phpstan/phpstan-phpunit": "^1.1", "phpstan/phpstan-strict-rules": "^1.4", "phpunit/phpunit": "^9.5.23", - "qossmic/deptrac-shim": "^1.0", - "rector/rector": "^0.16", + "rector/rector": "^0.14", "roave/security-advisories": "dev-latest", "symfony/browser-kit": "^6.1.3", "symfony/finder": "^5.4|^6.0", @@ -10778,8 +9049,7 @@ "symfony/serializer": "^6.1.3", "symfony/var-dumper": "^6.1.3", "symfony/yaml": "^6.1.3", - "symplify/easy-coding-standard": "^11.0", - "symplify/monorepo-builder": "11.2.3.72" + "symplify/easy-coding-standard": "^11.0" }, "suggest": { "bjeavons/zxcvbn-php": "Adds key quality check for oct keys.", @@ -10794,55 +9064,31 @@ "autoload": { "psr-4": { "Jose\\": "src/", - "Jose\\Component\\Core\\": "src/Component/Core/", - "Jose\\Component\\Checker\\": "src/Component/Checker/", - "Jose\\Component\\Console\\": "src/Component/Console/", - "Jose\\Component\\Signature\\": "src/Component/Signature/", - "Jose\\Bundle\\JoseFramework\\": "src/Bundle/JoseFramework/", - "Jose\\Component\\Encryption\\": "src/Component/Encryption/", - "Jose\\Component\\NestedToken\\": "src/Component/NestedToken/", "Jose\\Component\\Core\\Util\\Ecc\\": [ - "src/Ecc", - "src/Ecc/" + "src/Ecc" ], - "Jose\\Component\\KeyManagement\\": "src/Component/KeyManagement/", "Jose\\Component\\Signature\\Algorithm\\": [ "src/SignatureAlgorithm/ECDSA", - "src/SignatureAlgorithm/ECDSA/", "src/SignatureAlgorithm/EdDSA", - "src/SignatureAlgorithm/EdDSA/", - "src/SignatureAlgorithm/Experimental", - "src/SignatureAlgorithm/Experimental/", "src/SignatureAlgorithm/HMAC", - "src/SignatureAlgorithm/HMAC/", "src/SignatureAlgorithm/None", - "src/SignatureAlgorithm/None/", "src/SignatureAlgorithm/RSA", - "src/SignatureAlgorithm/RSA/" + "src/SignatureAlgorithm/Experimental" ], "Jose\\Component\\Encryption\\Algorithm\\": [ - "src/EncryptionAlgorithm/Experimental", - "src/EncryptionAlgorithm/Experimental/" + "src/EncryptionAlgorithm/Experimental" ], "Jose\\Component\\Encryption\\Algorithm\\KeyEncryption\\": [ "src/EncryptionAlgorithm/KeyEncryption/AESGCMKW", - "src/EncryptionAlgorithm/KeyEncryption/AESGCMKW/", "src/EncryptionAlgorithm/KeyEncryption/AESKW", - "src/EncryptionAlgorithm/KeyEncryption/AESKW/", "src/EncryptionAlgorithm/KeyEncryption/Direct", - "src/EncryptionAlgorithm/KeyEncryption/Direct/", "src/EncryptionAlgorithm/KeyEncryption/ECDHES", - "src/EncryptionAlgorithm/KeyEncryption/ECDHES/", "src/EncryptionAlgorithm/KeyEncryption/PBES2", - "src/EncryptionAlgorithm/KeyEncryption/PBES2/", - "src/EncryptionAlgorithm/KeyEncryption/RSA", - "src/EncryptionAlgorithm/KeyEncryption/RSA/" + "src/EncryptionAlgorithm/KeyEncryption/RSA" ], "Jose\\Component\\Encryption\\Algorithm\\ContentEncryption\\": [ - "src/EncryptionAlgorithm/ContentEncryption/AESCBC", - "src/EncryptionAlgorithm/ContentEncryption/AESCBC/", "src/EncryptionAlgorithm/ContentEncryption/AESGCM", - "src/EncryptionAlgorithm/ContentEncryption/AESGCM/" + "src/EncryptionAlgorithm/ContentEncryption/AESCBC" ] } }, @@ -10857,7 +9103,7 @@ }, { "name": "All contributors", - "homepage": "https://github.com/web-token/jwt-bundle/contributors" + "homepage": "https://github.com/web-token/jwt-framework/contributors" } ], "description": "JSON Object Signing and Encryption library for PHP and Symfony Bundle.", @@ -10882,7 +9128,7 @@ ], "support": { "issues": "https://github.com/web-token/jwt-framework/issues", - "source": "https://github.com/web-token/jwt-framework/tree/3.2.8" + "source": "https://github.com/web-token/jwt-framework/tree/3.1.2" }, "funding": [ { @@ -10894,7 +9140,7 @@ "type": "patreon" } ], - "time": "2023-08-23T09:49:09+00:00" + "time": "2022-09-01T05:50:30+00:00" }, { "name": "webimpress/safe-writer", @@ -11015,16 +9261,16 @@ }, { "name": "webonyx/graphql-php", - "version": "v15.8.0", + "version": "v15.0.3", "source": { "type": "git", "url": "https://github.com/webonyx/graphql-php.git", - "reference": "329315936f5af9b4c3f798f5d1afef72f3da0312" + "reference": "bfa78b44a93c00ebc9a1bc92497bc170a0e3b656" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/329315936f5af9b4c3f798f5d1afef72f3da0312", - "reference": "329315936f5af9b4c3f798f5d1afef72f3da0312", + "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/bfa78b44a93c00ebc9a1bc92497bc170a0e3b656", + "reference": "bfa78b44a93c00ebc9a1bc92497bc170a0e3b656", "shasum": "" }, "require": { @@ -11034,28 +9280,24 @@ }, "require-dev": { "amphp/amp": "^2.6", - "amphp/http-server": "^2.1", - "dms/phpunit-arraysubset-asserts": "dev-master", + "dms/phpunit-arraysubset-asserts": "^0.4", "ergebnis/composer-normalize": "^2.28", - "friendsofphp/php-cs-fixer": "3.30.0", - "mll-lab/php-cs-fixer-config": "^5", + "mll-lab/php-cs-fixer-config": "^4.4", "nyholm/psr7": "^1.5", "phpbench/phpbench": "^1.2", "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "1.10.41", - "phpstan/phpstan-phpunit": "1.3.15", - "phpstan/phpstan-strict-rules": "1.5.2", - "phpunit/phpunit": "^9.5 || ^10", - "psr/http-message": "^1 || ^2", + "phpstan/phpstan": "1.9.14", + "phpstan/phpstan-phpunit": "1.3.3", + "phpstan/phpstan-strict-rules": "1.4.5", + "phpunit/phpunit": "^9.5", + "psr/http-message": "^1", "react/http": "^1.6", "react/promise": "^2.9", - "rector/rector": "^0.18", "symfony/polyfill-php81": "^1.23", "symfony/var-exporter": "^5 || ^6", "thecodingmachine/safe": "^1.3 || ^2" }, "suggest": { - "amphp/http-server": "To leverage async resolving with webserver on AMPHP platform", "psr/http-message": "To use standard GraphQL server", "react/promise": "To leverage async resolving on React PHP platform" }, @@ -11077,7 +9319,7 @@ ], "support": { "issues": "https://github.com/webonyx/graphql-php/issues", - "source": "https://github.com/webonyx/graphql-php/tree/v15.8.0" + "source": "https://github.com/webonyx/graphql-php/tree/v15.0.3" }, "funding": [ { @@ -11085,28 +9327,28 @@ "type": "open_collective" } ], - "time": "2023-11-14T15:30:40+00:00" + "time": "2023-02-02T21:59:56+00:00" }, { "name": "wikimedia/less.php", - "version": "v3.2.1", + "version": "v3.2.0", "source": { "type": "git", "url": "https://github.com/wikimedia/less.php.git", - "reference": "0d5b30ba792bdbf8991a646fc9c30561b38a5559" + "reference": "47c4714c68c9006c87676d76c172a18e1d180f60" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wikimedia/less.php/zipball/0d5b30ba792bdbf8991a646fc9c30561b38a5559", - "reference": "0d5b30ba792bdbf8991a646fc9c30561b38a5559", + "url": "https://api.github.com/repos/wikimedia/less.php/zipball/47c4714c68c9006c87676d76c172a18e1d180f60", + "reference": "47c4714c68c9006c87676d76c172a18e1d180f60", "shasum": "" }, "require": { "php": ">=7.2.9" }, "require-dev": { - "mediawiki/mediawiki-codesniffer": "40.0.1", - "mediawiki/mediawiki-phan-config": "0.12.0", + "mediawiki/mediawiki-codesniffer": "39.0.0", + "mediawiki/mediawiki-phan-config": "0.11.1 || 0.12.0", "mediawiki/minus-x": "1.1.1", "php-parallel-lint/php-console-highlighter": "1.0.0", "php-parallel-lint/php-parallel-lint": "1.3.2", @@ -11129,10 +9371,6 @@ "Apache-2.0" ], "authors": [ - { - "name": "Timo Tijhof", - "homepage": "https://timotijhof.net" - }, { "name": "Josh Schmidt", "homepage": "https://github.com/oyejorge" @@ -11147,7 +9385,6 @@ } ], "description": "PHP port of the LESS processor", - "homepage": "https://gerrit.wikimedia.org/g/mediawiki/libs/less.php", "keywords": [ "css", "less", @@ -11158,9 +9395,9 @@ ], "support": { "issues": "https://github.com/wikimedia/less.php/issues", - "source": "https://github.com/wikimedia/less.php/tree/v3.2.1" + "source": "https://github.com/wikimedia/less.php/tree/v3.2.0" }, - "time": "2023-02-03T06:43:41+00:00" + "time": "2023-01-09T18:45:54+00:00" } ], "packages-dev": [ @@ -11434,16 +9671,16 @@ }, { "name": "codeception/codeception", - "version": "5.0.12", + "version": "5.0.10", "source": { "type": "git", "url": "https://github.com/Codeception/Codeception.git", - "reference": "7f528f5fd8cdcd05cd0a85eb1e24d05df989e0c4" + "reference": "ed4af7fd4103cdd035916fbb8f35124edd2d018b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/Codeception/zipball/7f528f5fd8cdcd05cd0a85eb1e24d05df989e0c4", - "reference": "7f528f5fd8cdcd05cd0a85eb1e24d05df989e0c4", + "url": "https://api.github.com/repos/Codeception/Codeception/zipball/ed4af7fd4103cdd035916fbb8f35124edd2d018b", + "reference": "ed4af7fd4103cdd035916fbb8f35124edd2d018b", "shasum": "" }, "require": { @@ -11538,7 +9775,7 @@ ], "support": { "issues": "https://github.com/Codeception/Codeception/issues", - "source": "https://github.com/Codeception/Codeception/tree/5.0.12" + "source": "https://github.com/Codeception/Codeception/tree/5.0.10" }, "funding": [ { @@ -11546,7 +9783,7 @@ "type": "open_collective" } ], - "time": "2023-10-15T18:04:50+00:00" + "time": "2023-03-14T07:21:10+00:00" }, { "name": "codeception/lib-asserts", @@ -11822,16 +10059,16 @@ }, { "name": "codeception/stub", - "version": "4.1.2", + "version": "4.1.0", "source": { "type": "git", "url": "https://github.com/Codeception/Stub.git", - "reference": "f6bc56e33e3f5ba7a831dfb968c49b27cf1676ad" + "reference": "58751aed08a68ae960a952fd3fe74ee9a56cdb1b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/Stub/zipball/f6bc56e33e3f5ba7a831dfb968c49b27cf1676ad", - "reference": "f6bc56e33e3f5ba7a831dfb968c49b27cf1676ad", + "url": "https://api.github.com/repos/Codeception/Stub/zipball/58751aed08a68ae960a952fd3fe74ee9a56cdb1b", + "reference": "58751aed08a68ae960a952fd3fe74ee9a56cdb1b", "shasum": "" }, "require": { @@ -11857,26 +10094,25 @@ "description": "Flexible Stub wrapper for PHPUnit's Mock Builder", "support": { "issues": "https://github.com/Codeception/Stub/issues", - "source": "https://github.com/Codeception/Stub/tree/4.1.2" + "source": "https://github.com/Codeception/Stub/tree/4.1.0" }, - "time": "2023-10-07T19:22:36+00:00" + "time": "2022-12-27T18:41:43+00:00" }, { "name": "csharpru/vault-php", - "version": "4.4.0", + "version": "4.3.1", "source": { "type": "git", "url": "https://github.com/CSharpRU/vault-php.git", - "reference": "ba4cbd7b55f1ce10bc72a7e4c36cfd87a42d3573" + "reference": "918bfffe85d3b290e1bf667b5f14e521fdc0063c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/CSharpRU/vault-php/zipball/ba4cbd7b55f1ce10bc72a7e4c36cfd87a42d3573", - "reference": "ba4cbd7b55f1ce10bc72a7e4c36cfd87a42d3573", + "url": "https://api.github.com/repos/CSharpRU/vault-php/zipball/918bfffe85d3b290e1bf667b5f14e521fdc0063c", + "reference": "918bfffe85d3b290e1bf667b5f14e521fdc0063c", "shasum": "" }, "require": { - "aws/aws-sdk-php": "^3.0", "ext-json": "*", "php": "^7.2 || ^8.0", "psr/cache": "^1.0|^2.0|^3.0", @@ -11920,44 +10156,41 @@ ], "support": { "issues": "https://github.com/CSharpRU/vault-php/issues", - "source": "https://github.com/CSharpRU/vault-php/tree/4.4.0" + "source": "https://github.com/CSharpRU/vault-php/tree/4.3.1" }, - "time": "2023-11-22T11:38:41+00:00" + "time": "2022-04-04T08:31:44+00:00" }, { "name": "dealerdirect/phpcodesniffer-composer-installer", - "version": "v1.0.0", + "version": "v0.7.2", "source": { "type": "git", - "url": "https://github.com/PHPCSStandards/composer-installer.git", - "reference": "4be43904336affa5c2f70744a348312336afd0da" + "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git", + "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/composer-installer/zipball/4be43904336affa5c2f70744a348312336afd0da", - "reference": "4be43904336affa5c2f70744a348312336afd0da", + "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", + "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", "shasum": "" }, "require": { "composer-plugin-api": "^1.0 || ^2.0", - "php": ">=5.4", + "php": ">=5.3", "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0" }, "require-dev": { "composer/composer": "*", - "ext-json": "*", - "ext-zip": "*", "php-parallel-lint/php-parallel-lint": "^1.3.1", - "phpcompatibility/php-compatibility": "^9.0", - "yoast/phpunit-polyfills": "^1.0" + "phpcompatibility/php-compatibility": "^9.0" }, "type": "composer-plugin", "extra": { - "class": "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" + "class": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" }, "autoload": { "psr-4": { - "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" + "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -11973,7 +10206,7 @@ }, { "name": "Contributors", - "homepage": "https://github.com/PHPCSStandards/composer-installer/graphs/contributors" + "homepage": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer/graphs/contributors" } ], "description": "PHP_CodeSniffer Standards Composer Installer Plugin", @@ -11997,23 +10230,23 @@ "tests" ], "support": { - "issues": "https://github.com/PHPCSStandards/composer-installer/issues", - "source": "https://github.com/PHPCSStandards/composer-installer" + "issues": "https://github.com/dealerdirect/phpcodesniffer-composer-installer/issues", + "source": "https://github.com/dealerdirect/phpcodesniffer-composer-installer" }, - "time": "2023-01-05T11:28:13+00:00" + "time": "2022-02-04T12:51:07+00:00" }, { "name": "dg/bypass-finals", - "version": "v1.5.1", + "version": "v1.4.1", "source": { "type": "git", "url": "https://github.com/dg/bypass-finals.git", - "reference": "12ef25e1f8d4144e4ec80d13a28895e8942f4104" + "reference": "4c424c3ed359220fce044f35cdf9f48b0089b2ca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dg/bypass-finals/zipball/12ef25e1f8d4144e4ec80d13a28895e8942f4104", - "reference": "12ef25e1f8d4144e4ec80d13a28895e8942f4104", + "url": "https://api.github.com/repos/dg/bypass-finals/zipball/4c424c3ed359220fce044f35cdf9f48b0089b2ca", + "reference": "4c424c3ed359220fce044f35cdf9f48b0089b2ca", "shasum": "" }, "require": { @@ -12051,36 +10284,36 @@ ], "support": { "issues": "https://github.com/dg/bypass-finals/issues", - "source": "https://github.com/dg/bypass-finals/tree/v1.5.1" + "source": "https://github.com/dg/bypass-finals/tree/v1.4.1" }, - "time": "2023-09-16T09:13:54+00:00" + "time": "2022-09-13T17:27:26+00:00" }, { "name": "doctrine/instantiator", - "version": "2.0.0", + "version": "1.5.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0" + "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", - "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/0a0fa9780f5d4e507415a065172d26a98d02047b", + "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b", "shasum": "" }, "require": { - "php": "^8.1" + "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^11", + "doctrine/coding-standard": "^9 || ^11", "ext-pdo": "*", "ext-phar": "*", - "phpbench/phpbench": "^1.2", - "phpstan/phpstan": "^1.9.4", - "phpstan/phpstan-phpunit": "^1.3", - "phpunit/phpunit": "^9.5.27", - "vimeo/psalm": "^5.4" + "phpbench/phpbench": "^0.16 || ^1", + "phpstan/phpstan": "^1.4", + "phpstan/phpstan-phpunit": "^1", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.30 || ^5.4" }, "type": "library", "autoload": { @@ -12107,7 +10340,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/2.0.0" + "source": "https://github.com/doctrine/instantiator/tree/1.5.0" }, "funding": [ { @@ -12123,53 +10356,55 @@ "type": "tidelift" } ], - "time": "2022-12-30T00:23:10+00:00" + "time": "2022-12-30T00:15:36+00:00" }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.38.2", + "version": "v3.8.0", "source": { "type": "git", - "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "d872cdd543797ade030aaa307c0a4954a712e081" + "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", + "reference": "cbad1115aac4b5c3c5540e7210d3c9fba2f81fa3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/d872cdd543797ade030aaa307c0a4954a712e081", - "reference": "d872cdd543797ade030aaa307c0a4954a712e081", + "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/cbad1115aac4b5c3c5540e7210d3c9fba2f81fa3", + "reference": "cbad1115aac4b5c3c5540e7210d3c9fba2f81fa3", "shasum": "" }, "require": { - "composer/semver": "^3.3", + "composer/semver": "^3.2", "composer/xdebug-handler": "^3.0.3", + "doctrine/annotations": "^1.13", "ext-json": "*", "ext-tokenizer": "*", "php": "^7.4 || ^8.0", - "sebastian/diff": "^4.0 || ^5.0", + "php-cs-fixer/diff": "^2.0", "symfony/console": "^5.4 || ^6.0", "symfony/event-dispatcher": "^5.4 || ^6.0", "symfony/filesystem": "^5.4 || ^6.0", "symfony/finder": "^5.4 || ^6.0", "symfony/options-resolver": "^5.4 || ^6.0", - "symfony/polyfill-mbstring": "^1.27", - "symfony/polyfill-php80": "^1.27", - "symfony/polyfill-php81": "^1.27", + "symfony/polyfill-mbstring": "^1.23", + "symfony/polyfill-php80": "^1.25", + "symfony/polyfill-php81": "^1.25", "symfony/process": "^5.4 || ^6.0", "symfony/stopwatch": "^5.4 || ^6.0" }, "require-dev": { - "facile-it/paraunit": "^1.3 || ^2.0", "justinrainbow/json-schema": "^5.2", - "keradus/cli-executor": "^2.0", - "mikey179/vfsstream": "^1.6.11", - "php-coveralls/php-coveralls": "^2.5.3", + "keradus/cli-executor": "^1.5", + "mikey179/vfsstream": "^1.6.10", + "php-coveralls/php-coveralls": "^2.5.2", "php-cs-fixer/accessible-object": "^1.1", "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.2", "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.2.1", - "phpspec/prophecy": "^1.16", + "phpspec/prophecy": "^1.15", "phpspec/prophecy-phpunit": "^2.0", "phpunit/phpunit": "^9.5", - "symfony/phpunit-bridge": "^6.2.3", + "phpunitgoodpractices/polyfill": "^1.5", + "phpunitgoodpractices/traits": "^1.9.1", + "symfony/phpunit-bridge": "^6.0", "symfony/yaml": "^5.4 || ^6.0" }, "suggest": { @@ -12200,15 +10435,9 @@ } ], "description": "A tool to automatically fix PHP code style", - "keywords": [ - "Static code analysis", - "fixer", - "standards", - "static analysis" - ], "support": { - "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.38.2" + "issues": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/issues", + "source": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/tree/v3.8.0" }, "funding": [ { @@ -12216,24 +10445,24 @@ "type": "github" } ], - "time": "2023-11-14T00:19:22+00:00" + "time": "2022-03-18T17:20:59+00:00" }, { "name": "laminas/laminas-diactoros", - "version": "2.26.0", + "version": "2.25.2", "source": { "type": "git", "url": "https://github.com/laminas/laminas-diactoros.git", - "reference": "6584d44eb8e477e89d453313b858daac6183cddc" + "reference": "9f3f4bf5b99c9538b6f1dbcc20f6fec357914f9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-diactoros/zipball/6584d44eb8e477e89d453313b858daac6183cddc", - "reference": "6584d44eb8e477e89d453313b858daac6183cddc", + "url": "https://api.github.com/repos/laminas/laminas-diactoros/zipball/9f3f4bf5b99c9538b6f1dbcc20f6fec357914f9e", + "reference": "9f3f4bf5b99c9538b6f1dbcc20f6fec357914f9e", "shasum": "" }, "require": { - "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", + "php": "~8.0.0 || ~8.1.0 || ~8.2.0", "psr/http-factory": "^1.0", "psr/http-message": "^1.1" }, @@ -12313,7 +10542,7 @@ "type": "community_bridge" } ], - "time": "2023-10-29T16:17:44+00:00" + "time": "2023-04-17T15:44:17+00:00" }, { "name": "lusitanian/oauth", @@ -12436,16 +10665,16 @@ }, { "name": "magento/magento2-functional-testing-framework", - "version": "dev-ACQE-5264-spomky-labs/otphp", + "version": "dev-ACQE-5264-spomky-otphp-upgrade", "source": { "type": "git", "url": "git@github.com:magento-gl/magento2-functional-testing-framework.git", - "reference": "80e4256f37ae400e418887c7375dfb8ba4df800d" + "reference": "e3403d2726827d44f84785ea6176a31565728743" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/magento-gl/magento2-functional-testing-framework/zipball/80e4256f37ae400e418887c7375dfb8ba4df800d", - "reference": "80e4256f37ae400e418887c7375dfb8ba4df800d", + "url": "https://api.github.com/repos/magento-gl/magento2-functional-testing-framework/zipball/e3403d2726827d44f84785ea6176a31565728743", + "reference": "e3403d2726827d44f84785ea6176a31565728743", "shasum": "" }, "require": { @@ -12458,7 +10687,7 @@ "codeception/module-webdriver": "^3.0", "composer/composer": "^1.9 || ^2.0, !=2.2.16", "csharpru/vault-php": "^4.2.1", - "doctrine/annotations": "^2.0", + "doctrine/annotations": "^1.13", "ext-curl": "*", "ext-dom": "*", "ext-iconv": "*", @@ -12471,15 +10700,15 @@ "mustache/mustache": "~2.5", "nikic/php-parser": "^4.4", "php": ">=8.1", - "php-webdriver/webdriver": "^1.14.0", - "spomky-labs/otphp": "^10.0||^11.2", + "php-webdriver/webdriver": "^1.9.0 <1.14.0", + "spomky-labs/otphp": "^11.2", "symfony/console": "^4.4||^5.4", - "symfony/dotenv": "^5.3||^6.3", - "symfony/finder": "^5.0||^6.3", - "symfony/http-foundation": "^5.0||^6.3", - "symfony/mime": "^5.0||^6.3", - "symfony/process": "<=5.4.23", - "symfony/string": "^5.4||^6.3", + "symfony/dotenv": "^5.3", + "symfony/finder": "^5.0", + "symfony/http-foundation": "^5.0", + "symfony/mime": "^5.0", + "symfony/process": "^4.4||^5.4", + "symfony/string": "^5.4", "weew/helpers-array": "^1.3" }, "require-dev": { @@ -12489,7 +10718,7 @@ "phpmd/phpmd": "^2.8.0", "phpunit/phpunit": "<=9.5.20", "sebastian/phpcpd": "~6.0.0", - "squizlabs/php_codesniffer": "~3.7.0" + "squizlabs/php_codesniffer": "~3.6.0" }, "suggest": { "hoa/console": "Enables action and interactive console functionality" @@ -12536,9 +10765,9 @@ "testing" ], "support": { - "source": "https://github.com/magento-gl/magento2-functional-testing-framework/tree/ACQE-5264-spomky-labs/otphp" + "source": "https://github.com/magento-gl/magento2-functional-testing-framework/tree/ACQE-5264-spomky-otphp-upgrade" }, - "time": "2023-11-14T04:35:32+00:00" + "time": "2023-07-28T04:14:07+00:00" }, { "name": "mustache/mustache", @@ -12651,16 +10880,16 @@ }, { "name": "pdepend/pdepend", - "version": "2.15.1", + "version": "2.12.1", "source": { "type": "git", "url": "https://github.com/pdepend/pdepend.git", - "reference": "d12f25bcdfb7754bea458a4a5cb159d55e9950d0" + "reference": "7a892d56ceafd804b4a2ecc85184640937ce9e84" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pdepend/pdepend/zipball/d12f25bcdfb7754bea458a4a5cb159d55e9950d0", - "reference": "d12f25bcdfb7754bea458a4a5cb159d55e9950d0", + "url": "https://api.github.com/repos/pdepend/pdepend/zipball/7a892d56ceafd804b4a2ecc85184640937ce9e84", + "reference": "7a892d56ceafd804b4a2ecc85184640937ce9e84", "shasum": "" }, "require": { @@ -12694,15 +10923,9 @@ "BSD-3-Clause" ], "description": "Official version of pdepend to be handled with Composer", - "keywords": [ - "PHP Depend", - "PHP_Depend", - "dev", - "pdepend" - ], "support": { "issues": "https://github.com/pdepend/pdepend/issues", - "source": "https://github.com/pdepend/pdepend/tree/2.15.1" + "source": "https://github.com/pdepend/pdepend/tree/2.12.1" }, "funding": [ { @@ -12710,7 +10933,7 @@ "type": "tidelift" } ], - "time": "2023-09-28T12:00:56+00:00" + "time": "2022-09-08T19:30:37+00:00" }, { "name": "phar-io/manifest", @@ -12823,40 +11046,92 @@ }, "time": "2022-02-21T01:04:05+00:00" }, + { + "name": "php-cs-fixer/diff", + "version": "v2.0.2", + "source": { + "type": "git", + "url": "https://github.com/PHP-CS-Fixer/diff.git", + "reference": "29dc0d507e838c4580d018bd8b5cb412474f7ec3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHP-CS-Fixer/diff/zipball/29dc0d507e838c4580d018bd8b5cb412474f7ec3", + "reference": "29dc0d507e838c4580d018bd8b5cb412474f7ec3", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7.23 || ^6.4.3 || ^7.0", + "symfony/process": "^3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "sebastian/diff v3 backport support for PHP 5.6+", + "homepage": "https://github.com/PHP-CS-Fixer", + "keywords": [ + "diff" + ], + "support": { + "issues": "https://github.com/PHP-CS-Fixer/diff/issues", + "source": "https://github.com/PHP-CS-Fixer/diff/tree/v2.0.2" + }, + "abandoned": true, + "time": "2020-10-14T08:32:19+00:00" + }, { "name": "php-webdriver/webdriver", - "version": "1.15.1", + "version": "1.13.1", "source": { "type": "git", "url": "https://github.com/php-webdriver/php-webdriver.git", - "reference": "cd52d9342c5aa738c2e75a67e47a1b6df97154e8" + "reference": "6dfe5f814b796c1b5748850aa19f781b9274c36c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-webdriver/php-webdriver/zipball/cd52d9342c5aa738c2e75a67e47a1b6df97154e8", - "reference": "cd52d9342c5aa738c2e75a67e47a1b6df97154e8", + "url": "https://api.github.com/repos/php-webdriver/php-webdriver/zipball/6dfe5f814b796c1b5748850aa19f781b9274c36c", + "reference": "6dfe5f814b796c1b5748850aa19f781b9274c36c", "shasum": "" }, "require": { "ext-curl": "*", "ext-json": "*", "ext-zip": "*", - "php": "^7.3 || ^8.0", + "php": "^5.6 || ~7.0 || ^8.0", "symfony/polyfill-mbstring": "^1.12", - "symfony/process": "^5.0 || ^6.0 || ^7.0" + "symfony/process": "^2.8 || ^3.1 || ^4.0 || ^5.0 || ^6.0" }, "replace": { "facebook/webdriver": "*" }, "require-dev": { - "ergebnis/composer-normalize": "^2.20.0", - "ondram/ci-detector": "^4.0", + "ondram/ci-detector": "^2.1 || ^3.5 || ^4.0", "php-coveralls/php-coveralls": "^2.4", - "php-mock/php-mock-phpunit": "^2.0", + "php-mock/php-mock-phpunit": "^1.1 || ^2.0", "php-parallel-lint/php-parallel-lint": "^1.2", - "phpunit/phpunit": "^9.3", + "phpunit/phpunit": "^5.7 || ^7 || ^8 || ^9", "squizlabs/php_codesniffer": "^3.5", - "symfony/var-dumper": "^5.0 || ^6.0" + "symfony/var-dumper": "^3.3 || ^4.0 || ^5.0 || ^6.0" }, "suggest": { "ext-SimpleXML": "For Firefox profile creation" @@ -12884,91 +11159,259 @@ "webdriver" ], "support": { - "issues": "https://github.com/php-webdriver/php-webdriver/issues", - "source": "https://github.com/php-webdriver/php-webdriver/tree/1.15.1" + "issues": "https://github.com/php-webdriver/php-webdriver/issues", + "source": "https://github.com/php-webdriver/php-webdriver/tree/1.13.1" + }, + "time": "2022-10-11T11:49:44+00:00" + }, + { + "name": "phpcompatibility/php-compatibility", + "version": "9.3.5", + "source": { + "type": "git", + "url": "https://github.com/PHPCompatibility/PHPCompatibility.git", + "reference": "9fb324479acf6f39452e0655d2429cc0d3914243" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibility/zipball/9fb324479acf6f39452e0655d2429cc0d3914243", + "reference": "9fb324479acf6f39452e0655d2429cc0d3914243", + "shasum": "" + }, + "require": { + "php": ">=5.3", + "squizlabs/php_codesniffer": "^2.3 || ^3.0.2" + }, + "conflict": { + "squizlabs/php_codesniffer": "2.6.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.5 || ^5.0 || ^6.0 || ^7.0" + }, + "suggest": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.5 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically.", + "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues." + }, + "type": "phpcodesniffer-standard", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0-or-later" + ], + "authors": [ + { + "name": "Wim Godden", + "homepage": "https://github.com/wimg", + "role": "lead" + }, + { + "name": "Juliette Reinders Folmer", + "homepage": "https://github.com/jrfnl", + "role": "lead" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCompatibility/PHPCompatibility/graphs/contributors" + } + ], + "description": "A set of sniffs for PHP_CodeSniffer that checks for PHP cross-version compatibility.", + "homepage": "http://techblog.wimgodden.be/tag/codesniffer/", + "keywords": [ + "compatibility", + "phpcs", + "standards" + ], + "support": { + "issues": "https://github.com/PHPCompatibility/PHPCompatibility/issues", + "source": "https://github.com/PHPCompatibility/PHPCompatibility" + }, + "time": "2019-12-27T09:44:58+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-2.x": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + }, + "time": "2020-06-27T09:03:43+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "5.3.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.3", + "webmozart/assert": "^1.9.1" + }, + "require-dev": { + "mockery/mockery": "~1.3.2", + "psalm/phar": "^4.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "account@ijaap.nl" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" }, - "time": "2023-10-20T12:21:20+00:00" + "time": "2021-10-19T17:43:47+00:00" }, { - "name": "phpcompatibility/php-compatibility", - "version": "9.3.5", + "name": "phpdocumentor/type-resolver", + "version": "1.7.2", "source": { "type": "git", - "url": "https://github.com/PHPCompatibility/PHPCompatibility.git", - "reference": "9fb324479acf6f39452e0655d2429cc0d3914243" + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "b2fe4d22a5426f38e014855322200b97b5362c0d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibility/zipball/9fb324479acf6f39452e0655d2429cc0d3914243", - "reference": "9fb324479acf6f39452e0655d2429cc0d3914243", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/b2fe4d22a5426f38e014855322200b97b5362c0d", + "reference": "b2fe4d22a5426f38e014855322200b97b5362c0d", "shasum": "" }, "require": { - "php": ">=5.3", - "squizlabs/php_codesniffer": "^2.3 || ^3.0.2" - }, - "conflict": { - "squizlabs/php_codesniffer": "2.6.2" + "doctrine/deprecations": "^1.0", + "php": "^7.4 || ^8.0", + "phpdocumentor/reflection-common": "^2.0", + "phpstan/phpdoc-parser": "^1.13" }, "require-dev": { - "phpunit/phpunit": "~4.5 || ^5.0 || ^6.0 || ^7.0" + "ext-tokenizer": "*", + "phpbench/phpbench": "^1.2", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^9.5", + "rector/rector": "^0.13.9", + "vimeo/psalm": "^4.25" }, - "suggest": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.5 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically.", - "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues." + "type": "library", + "extra": { + "branch-alias": { + "dev-1.x": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } }, - "type": "phpcodesniffer-standard", "notification-url": "https://packagist.org/downloads/", "license": [ - "LGPL-3.0-or-later" + "MIT" ], "authors": [ { - "name": "Wim Godden", - "homepage": "https://github.com/wimg", - "role": "lead" - }, - { - "name": "Juliette Reinders Folmer", - "homepage": "https://github.com/jrfnl", - "role": "lead" - }, - { - "name": "Contributors", - "homepage": "https://github.com/PHPCompatibility/PHPCompatibility/graphs/contributors" + "name": "Mike van Riel", + "email": "me@mikevanriel.com" } ], - "description": "A set of sniffs for PHP_CodeSniffer that checks for PHP cross-version compatibility.", - "homepage": "http://techblog.wimgodden.be/tag/codesniffer/", - "keywords": [ - "compatibility", - "phpcs", - "standards" - ], + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { - "issues": "https://github.com/PHPCompatibility/PHPCompatibility/issues", - "source": "https://github.com/PHPCompatibility/PHPCompatibility" + "issues": "https://github.com/phpDocumentor/TypeResolver/issues", + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.7.2" }, - "time": "2019-12-27T09:44:58+00:00" + "time": "2023-05-30T18:13:47+00:00" }, { "name": "phpmd/phpmd", - "version": "2.14.1", + "version": "2.13.0", "source": { "type": "git", "url": "https://github.com/phpmd/phpmd.git", - "reference": "442fc2c34edcd5198b442d8647c7f0aec3afabe8" + "reference": "dad0228156856b3ad959992f9748514fa943f3e3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpmd/phpmd/zipball/442fc2c34edcd5198b442d8647c7f0aec3afabe8", - "reference": "442fc2c34edcd5198b442d8647c7f0aec3afabe8", + "url": "https://api.github.com/repos/phpmd/phpmd/zipball/dad0228156856b3ad959992f9748514fa943f3e3", + "reference": "dad0228156856b3ad959992f9748514fa943f3e3", "shasum": "" }, "require": { "composer/xdebug-handler": "^1.0 || ^2.0 || ^3.0", "ext-xml": "*", - "pdepend/pdepend": "^2.15.1", + "pdepend/pdepend": "^2.12.1", "php": ">=5.3.9" }, "require-dev": { @@ -12978,7 +11421,7 @@ "gregwar/rst": "^1.0", "mikey179/vfsstream": "^1.6.8", "phpunit/phpunit": "^4.8.36 || ^5.7.27", - "squizlabs/php_codesniffer": "^2.9.2 || ^3.7.2" + "squizlabs/php_codesniffer": "^2.0" }, "bin": [ "src/bin/phpmd" @@ -13015,7 +11458,6 @@ "description": "PHPMD is a spin-off project of PHP Depend and aims to be a PHP equivalent of the well known Java tool PMD.", "homepage": "https://phpmd.org/", "keywords": [ - "dev", "mess detection", "mess detector", "pdepend", @@ -13025,7 +11467,7 @@ "support": { "irc": "irc://irc.freenode.org/phpmd", "issues": "https://github.com/phpmd/phpmd/issues", - "source": "https://github.com/phpmd/phpmd/tree/2.14.1" + "source": "https://github.com/phpmd/phpmd/tree/2.13.0" }, "funding": [ { @@ -13033,20 +11475,135 @@ "type": "tidelift" } ], - "time": "2023-09-28T13:07:44+00:00" + "time": "2022-09-10T08:44:15+00:00" + }, + { + "name": "phpspec/prophecy", + "version": "v1.17.0", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "15873c65b207b07765dbc3c95d20fdf4a320cbe2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/15873c65b207b07765dbc3c95d20fdf4a320cbe2", + "reference": "15873c65b207b07765dbc3c95d20fdf4a320cbe2", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.2 || ^2.0", + "php": "^7.2 || 8.0.* || 8.1.* || 8.2.*", + "phpdocumentor/reflection-docblock": "^5.2", + "sebastian/comparator": "^3.0 || ^4.0", + "sebastian/recursion-context": "^3.0 || ^4.0" + }, + "require-dev": { + "phpspec/phpspec": "^6.0 || ^7.0", + "phpstan/phpstan": "^1.9", + "phpunit/phpunit": "^8.0 || ^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Prophecy\\": "src/Prophecy" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "support": { + "issues": "https://github.com/phpspec/prophecy/issues", + "source": "https://github.com/phpspec/prophecy/tree/v1.17.0" + }, + "time": "2023-02-02T15:41:36+00:00" + }, + { + "name": "phpstan/phpdoc-parser", + "version": "1.23.0", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "a2b24135c35852b348894320d47b3902a94bc494" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/a2b24135c35852b348894320d47b3902a94bc494", + "reference": "a2b24135c35852b348894320d47b3902a94bc494", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/annotations": "^2.0", + "nikic/php-parser": "^4.15", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.5", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.0", + "phpunit/phpunit": "^9.5", + "symfony/process": "^5.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "PHPStan\\PhpDocParser\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "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.23.0" + }, + "time": "2023-07-23T22:17:56+00:00" }, { "name": "phpstan/phpstan", - "version": "1.10.43", + "version": "1.9.14", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "2c4129f6ca8c7cfa870098884b8869b410a5a361" + "reference": "e5fcc96289cf737304286a9b505fbed091f02e58" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/2c4129f6ca8c7cfa870098884b8869b410a5a361", - "reference": "2c4129f6ca8c7cfa870098884b8869b410a5a361", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e5fcc96289cf737304286a9b505fbed091f02e58", + "reference": "e5fcc96289cf737304286a9b505fbed091f02e58", "shasum": "" }, "require": { @@ -13075,11 +11632,8 @@ "static analysis" ], "support": { - "docs": "https://phpstan.org/user-guide/getting-started", - "forum": "https://github.com/phpstan/phpstan/discussions", "issues": "https://github.com/phpstan/phpstan/issues", - "security": "https://github.com/phpstan/phpstan/security/policy", - "source": "https://github.com/phpstan/phpstan-src" + "source": "https://github.com/phpstan/phpstan/tree/1.9.14" }, "funding": [ { @@ -13095,20 +11649,20 @@ "type": "tidelift" } ], - "time": "2023-11-19T19:55:25+00:00" + "time": "2023-01-19T10:47:09+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "9.2.29", + "version": "9.2.27", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76" + "reference": "b0a88255cb70d52653d80c890bd7f38740ea50d1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/6a3a87ac2bbe33b25042753df8195ba4aa534c76", - "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/b0a88255cb70d52653d80c890bd7f38740ea50d1", + "reference": "b0a88255cb70d52653d80c890bd7f38740ea50d1", "shasum": "" }, "require": { @@ -13165,7 +11719,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/9.2.29" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.27" }, "funding": [ { @@ -13173,7 +11727,7 @@ "type": "github" } ], - "time": "2023-09-19T04:57:46+00:00" + "time": "2023-07-26T13:44:30+00:00" }, { "name": "phpunit/php-file-iterator", @@ -13418,20 +11972,20 @@ }, { "name": "phpunit/phpunit", - "version": "9.6.13", + "version": "9.5.22", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "f3d767f7f9e191eab4189abe41ab37797e30b1be" + "reference": "e329ac6e8744f461518272612a479fde958752fe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f3d767f7f9e191eab4189abe41ab37797e30b1be", - "reference": "f3d767f7f9e191eab4189abe41ab37797e30b1be", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/e329ac6e8744f461518272612a479fde958752fe", + "reference": "e329ac6e8744f461518272612a479fde958752fe", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.3.1 || ^2", + "doctrine/instantiator": "^1.3.1", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", @@ -13442,26 +11996,30 @@ "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", "php": ">=7.3", - "phpunit/php-code-coverage": "^9.2.28", + "phpspec/prophecy": "^1.12.1", + "phpunit/php-code-coverage": "^9.2.13", "phpunit/php-file-iterator": "^3.0.5", "phpunit/php-invoker": "^3.1.1", "phpunit/php-text-template": "^2.0.3", "phpunit/php-timer": "^5.0.2", "sebastian/cli-parser": "^1.0.1", "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.8", + "sebastian/comparator": "^4.0.5", "sebastian/diff": "^4.0.3", "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.5", + "sebastian/exporter": "^4.0.3", "sebastian/global-state": "^5.0.1", "sebastian/object-enumerator": "^4.0.3", "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^3.2", + "sebastian/type": "^3.0", "sebastian/version": "^3.0.2" }, + "require-dev": { + "phpspec/prophecy-phpunit": "^2.0.1" + }, "suggest": { - "ext-soap": "To be able to generate mocks based on WSDL files", - "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" + "ext-soap": "*", + "ext-xdebug": "*" }, "bin": [ "phpunit" @@ -13469,7 +12027,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.6-dev" + "dev-master": "9.5-dev" } }, "autoload": { @@ -13500,8 +12058,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.13" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.22" }, "funding": [ { @@ -13511,26 +12068,22 @@ { "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", - "type": "tidelift" } ], - "time": "2023-09-19T05:39:22+00:00" + "time": "2022-08-20T08:25:46+00:00" }, { "name": "psy/psysh", - "version": "v0.11.22", + "version": "v0.11.19", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "128fa1b608be651999ed9789c95e6e2a31b5802b" + "reference": "1724ceff278daeeac5a006744633bacbb2dc4706" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/128fa1b608be651999ed9789c95e6e2a31b5802b", - "reference": "128fa1b608be651999ed9789c95e6e2a31b5802b", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/1724ceff278daeeac5a006744633bacbb2dc4706", + "reference": "1724ceff278daeeac5a006744633bacbb2dc4706", "shasum": "" }, "require": { @@ -13559,11 +12112,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-0.11": "0.11.x-dev" - }, - "bamarni-bin": { - "bin-links": false, - "forward-command": false + "dev-main": "0.11.x-dev" } }, "autoload": { @@ -13595,31 +12144,32 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.11.22" + "source": "https://github.com/bobthecow/psysh/tree/v0.11.19" }, - "time": "2023-10-14T21:56:36+00:00" + "time": "2023-07-15T19:42:19+00:00" }, { "name": "rector/rector", - "version": "0.15.25", + "version": "0.15.11", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "015935c7ed9e48a4f5895ba974f337e20a263841" + "reference": "0034e743daf120f70359b9600a0946a17e3a6364" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/015935c7ed9e48a4f5895ba974f337e20a263841", - "reference": "015935c7ed9e48a4f5895ba974f337e20a263841", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/0034e743daf120f70359b9600a0946a17e3a6364", + "reference": "0034e743daf120f70359b9600a0946a17e3a6364", "shasum": "" }, "require": { "php": "^7.2|^8.0", - "phpstan/phpstan": "^1.10.14" + "phpstan/phpstan": "^1.9.14" }, "conflict": { "rector/rector-doctrine": "*", "rector/rector-downgrade-php": "*", + "rector/rector-php-parser": "*", "rector/rector-phpunit": "*", "rector/rector-symfony": "*" }, @@ -13642,15 +12192,9 @@ "MIT" ], "description": "Instant Upgrade and Automated Refactoring of any PHP code", - "keywords": [ - "automation", - "dev", - "migration", - "refactoring" - ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/0.15.25" + "source": "https://github.com/rectorphp/rector/tree/0.15.11" }, "funding": [ { @@ -13658,7 +12202,7 @@ "type": "github" } ], - "time": "2023-04-20T16:07:39+00:00" + "time": "2023-02-02T16:53:15+00:00" }, { "name": "sebastian/cli-parser", @@ -13829,16 +12373,16 @@ }, { "name": "sebastian/comparator", - "version": "4.0.8", + "version": "4.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a" + "reference": "55f4261989e546dc112258c7a75935a81a7ce382" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", + "reference": "55f4261989e546dc112258c7a75935a81a7ce382", "shasum": "" }, "require": { @@ -13891,7 +12435,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" }, "funding": [ { @@ -13899,7 +12443,7 @@ "type": "github" } ], - "time": "2022-09-14T12:41:17+00:00" + "time": "2020-10-26T15:49:45+00:00" }, { "name": "sebastian/complexity", @@ -14166,16 +12710,16 @@ }, { "name": "sebastian/global-state", - "version": "5.0.6", + "version": "5.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "bde739e7565280bda77be70044ac1047bc007e34" + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bde739e7565280bda77be70044ac1047bc007e34", - "reference": "bde739e7565280bda77be70044ac1047bc007e34", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", "shasum": "" }, "require": { @@ -14218,7 +12762,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.6" + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" }, "funding": [ { @@ -14226,7 +12770,7 @@ "type": "github" } ], - "time": "2023-08-02T09:26:13+00:00" + "time": "2022-02-14T08:28:10+00:00" }, { "name": "sebastian/lines-of-code", @@ -14686,18 +13230,98 @@ ], "time": "2020-09-28T06:39:44+00:00" }, + { + "name": "spomky-labs/otphp", + "version": "11.2.0", + "source": { + "type": "git", + "url": "https://github.com/Spomky-Labs/otphp.git", + "reference": "9a1569038bb1c8e98040b14b8bcbba54f25e7795" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Spomky-Labs/otphp/zipball/9a1569038bb1c8e98040b14b8bcbba54f25e7795", + "reference": "9a1569038bb1c8e98040b14b8bcbba54f25e7795", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "paragonie/constant_time_encoding": "^2.0", + "php": "^8.1" + }, + "require-dev": { + "ekino/phpstan-banned-code": "^1.0", + "infection/infection": "^0.26", + "php-parallel-lint/php-parallel-lint": "^1.3", + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "phpstan/phpstan-strict-rules": "^1.0", + "phpunit/phpunit": "^9.5.26", + "qossmic/deptrac-shim": "^1.0", + "rector/rector": "^0.15", + "symfony/phpunit-bridge": "^6.1", + "symplify/easy-coding-standard": "^11.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "OTPHP\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Florent Morselli", + "homepage": "https://github.com/Spomky" + }, + { + "name": "All contributors", + "homepage": "https://github.com/Spomky-Labs/otphp/contributors" + } + ], + "description": "A PHP library for generating one time passwords according to RFC 4226 (HOTP Algorithm) and the RFC 6238 (TOTP Algorithm) and compatible with Google Authenticator", + "homepage": "https://github.com/Spomky-Labs/otphp", + "keywords": [ + "FreeOTP", + "RFC 4226", + "RFC 6238", + "google authenticator", + "hotp", + "otp", + "totp" + ], + "support": { + "issues": "https://github.com/Spomky-Labs/otphp/issues", + "source": "https://github.com/Spomky-Labs/otphp/tree/11.2.0" + }, + "funding": [ + { + "url": "https://github.com/Spomky", + "type": "github" + }, + { + "url": "https://www.patreon.com/FlorentMorselli", + "type": "patreon" + } + ], + "time": "2023-03-16T19:16:25+00:00" + }, { "name": "squizlabs/php_codesniffer", - "version": "3.7.2", + "version": "3.7.1", "source": { "type": "git", "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879" + "reference": "1359e176e9307e906dc3d890bcc9603ff6d90619" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ed8e00df0a83aa96acf703f8c2979ff33341f879", - "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/1359e176e9307e906dc3d890bcc9603ff6d90619", + "reference": "1359e176e9307e906dc3d890bcc9603ff6d90619", "shasum": "" }, "require": { @@ -14733,40 +13357,36 @@ "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", "keywords": [ "phpcs", - "standards", - "static analysis" + "standards" ], "support": { "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", "source": "https://github.com/squizlabs/PHP_CodeSniffer", "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" }, - "time": "2023-02-22T23:07:41+00:00" + "time": "2022-06-18T07:21:10+00:00" }, { "name": "symfony/dotenv", - "version": "v6.3.7", + "version": "v5.4.22", "source": { "type": "git", "url": "https://github.com/symfony/dotenv.git", - "reference": "7dfbe2976f3c1b7cfa8fac2212a050bfa9bd7d9e" + "reference": "77b7660bfcb85e8f28287d557d7af0046bcd2ca3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/7dfbe2976f3c1b7cfa8fac2212a050bfa9bd7d9e", - "reference": "7dfbe2976f3c1b7cfa8fac2212a050bfa9bd7d9e", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/77b7660bfcb85e8f28287d557d7af0046bcd2ca3", + "reference": "77b7660bfcb85e8f28287d557d7af0046bcd2ca3", "shasum": "" }, "require": { - "php": ">=8.1" - }, - "conflict": { - "symfony/console": "<5.4", - "symfony/process": "<5.4" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3" }, "require-dev": { - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0" + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0" }, "type": "library", "autoload": { @@ -14799,7 +13419,7 @@ "environment" ], "support": { - "source": "https://github.com/symfony/dotenv/tree/v6.3.7" + "source": "https://github.com/symfony/dotenv/tree/v5.4.22" }, "funding": [ { @@ -14815,43 +13435,43 @@ "type": "tidelift" } ], - "time": "2023-10-26T18:15:14+00:00" + "time": "2023-03-09T20:36:58+00:00" }, { "name": "symfony/mime", - "version": "v6.3.5", + "version": "v5.4.23", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "d5179eedf1cb2946dbd760475ebf05c251ef6a6e" + "reference": "ae0a1032a450a3abf305ee44fc55ed423fbf16e3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/d5179eedf1cb2946dbd760475ebf05c251ef6a6e", - "reference": "d5179eedf1cb2946dbd760475ebf05c251ef6a6e", + "url": "https://api.github.com/repos/symfony/mime/zipball/ae0a1032a450a3abf305ee44fc55ed423fbf16e3", + "reference": "ae0a1032a450a3abf305ee44fc55ed423fbf16e3", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0" + "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-php80": "^1.16" }, "conflict": { "egulias/email-validator": "~3.0.0", "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "symfony/mailer": "<5.4", - "symfony/serializer": "<6.2.13|>=6.3,<6.3.2" + "symfony/mailer": "<4.4", + "symfony/serializer": "<5.4.14|>=6.0,<6.0.14|>=6.1,<6.1.6" }, "require-dev": { "egulias/email-validator": "^2.1.10|^3.1|^4", - "league/html-to-markdown": "^5.0", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "~6.2.13|^6.3.2" + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/property-access": "^4.4|^5.1|^6.0", + "symfony/property-info": "^4.4|^5.1|^6.0", + "symfony/serializer": "^5.4.14|~6.0.14|^6.1.6" }, "type": "library", "autoload": { @@ -14883,7 +13503,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.3.5" + "source": "https://github.com/symfony/mime/tree/v5.4.23" }, "funding": [ { @@ -14899,7 +13519,7 @@ "type": "tidelift" } ], - "time": "2023-09-29T06:59:36+00:00" + "time": "2023-04-19T09:49:13+00:00" }, { "name": "symfony/options-resolver", @@ -14970,21 +13590,21 @@ }, { "name": "symfony/stopwatch", - "version": "v6.3.0", + "version": "v5.4.5", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2" + "reference": "4d04b5c24f3c9a1a168a131f6cbe297155bc0d30" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2", - "reference": "fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/4d04b5c24f3c9a1a168a131f6cbe297155bc0d30", + "reference": "4d04b5c24f3c9a1a168a131f6cbe297155bc0d30", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/service-contracts": "^2.5|^3" + "php": ">=7.2.5", + "symfony/service-contracts": "^1|^2|^3" }, "type": "library", "autoload": { @@ -15012,7 +13632,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v6.3.0" + "source": "https://github.com/symfony/stopwatch/tree/v5.4.5" }, "funding": [ { @@ -15028,25 +13648,24 @@ "type": "tidelift" } ], - "time": "2023-02-16T10:14:28+00:00" + "time": "2022-02-18T16:06:09+00:00" }, { "name": "symfony/yaml", - "version": "v6.3.8", + "version": "v6.3.0", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "3493af8a8dad7fa91c77fa473ba23ecd95334a92" + "reference": "a9a8337aa641ef2aa39c3e028f9107ec391e5927" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/3493af8a8dad7fa91c77fa473ba23ecd95334a92", - "reference": "3493af8a8dad7fa91c77fa473ba23ecd95334a92", + "url": "https://api.github.com/repos/symfony/yaml/zipball/a9a8337aa641ef2aa39c3e028f9107ec391e5927", + "reference": "a9a8337aa641ef2aa39c3e028f9107ec391e5927", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "^1.8" }, "conflict": { @@ -15084,7 +13703,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.3.8" + "source": "https://github.com/symfony/yaml/tree/v6.3.0" }, "funding": [ { @@ -15100,20 +13719,20 @@ "type": "tidelift" } ], - "time": "2023-11-06T10:58:05+00:00" + "time": "2023-04-28T13:28:14+00:00" }, { "name": "theseer/tokenizer", - "version": "1.2.2", + "version": "1.2.1", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96" + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b2ad5003ca10d4ee50a12da31de12a5774ba6b96", - "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", "shasum": "" }, "require": { @@ -15142,7 +13761,7 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.2" + "source": "https://github.com/theseer/tokenizer/tree/1.2.1" }, "funding": [ { @@ -15150,7 +13769,7 @@ "type": "github" } ], - "time": "2023-11-20T00:12:19+00:00" + "time": "2021-07-28T10:34:58+00:00" }, { "name": "weew/helpers-array", @@ -15195,9 +13814,8 @@ } ], "aliases": [], - "minimum-stability": "dev", + "minimum-stability": "stable", "stability-flags": { - "magento/security-package": 20, "magento/magento2-functional-testing-framework": 20 }, "prefer-stable": true, @@ -15223,5 +13841,5 @@ "lib-libxml": "*" }, "platform-dev": [], - "plugin-api-version": "2.6.0" + "plugin-api-version": "2.3.0" } From 83039f1584c1e2509be8eae586d74a43d0af58a4 Mon Sep 17 00:00:00 2001 From: glo5363 Date: Thu, 30 Nov 2023 13:25:29 +0530 Subject: [PATCH 031/104] #AC-9196::Update spomky-labs/otphp to its latest version available (11.2.0) with mftf upgrade-changes for ce --- composer.json | 27 +- composer.lock | 3317 +++++++++++++++++++++++++------------------------ 2 files changed, 1739 insertions(+), 1605 deletions(-) diff --git a/composer.json b/composer.json index be2a7efa66278..7bc9239e791f5 100644 --- a/composer.json +++ b/composer.json @@ -6,6 +6,12 @@ "OSL-3.0", "AFL-3.0" ], + "repositories": [ + { + "type": "vcs", + "url": "https://github.com/magento-gl/magento2-functional-testing-framework" + } + ], "config": { "allow-plugins": { "dealerdirect/phpcodesniffer-composer-installer": true, @@ -16,12 +22,6 @@ "preferred-install": "dist", "sort-packages": true }, - "repositories": [ - { - "type": "vcs", - "url": "https://github.com/magento-gl/magento2-functional-testing-framework" - } - ], "require": { "php": "~8.1.0||~8.2.0", "ext-bcmath": "*", @@ -89,7 +89,7 @@ "ramsey/uuid": "^4.2", "symfony/console": "^5.4", "symfony/intl": "^5.4", - "symfony/process": "^5.4", + "symfony/process": "<=5.4.23", "symfony/string": "^5.4", "tedivm/jshrink": "^1.4", "tubalmartin/cssmin": "^4.1", @@ -99,20 +99,18 @@ }, "require-dev": { "allure-framework/allure-phpunit": "^2", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7", + "dealerdirect/phpcodesniffer-composer-installer": "^1.0", "dg/bypass-finals": "^1.4", - "friendsofphp/php-cs-fixer": "^3.8", + "friendsofphp/php-cs-fixer": "^3.22", "lusitanian/oauth": "^0.8", "magento/magento-coding-standard": "*", "magento/magento2-functional-testing-framework": "dev-ACQE-5264-spomky-otphp-upgrade", "pdepend/pdepend": "^2.10", "phpmd/phpmd": "^2.12", "phpstan/phpstan": "^1.9", - "phpunit/phpunit": "<=9.5.22", + "phpunit/phpunit": "^9.5", "sebastian/phpcpd": "^6.0", - "symfony/finder": "^5.4", - "sebastian/comparator": "<=4.0.6", - "symfony/process": "<=5.4.23" + "symfony/finder": "^5.4" }, "suggest": { "ext-pcntl": "Need for run processes in parallel mode" @@ -258,6 +256,9 @@ "magento/module-newsletter-graph-ql": "*", "magento/module-offline-payments": "*", "magento/module-offline-shipping": "*", + "magento/module-order-cancellation": "*", + "magento/module-order-cancellation-graph-ql": "*", + "magento/module-order-cancellation-ui": "*", "magento/module-page-cache": "*", "magento/module-payment": "*", "magento/module-payment-graph-ql": "*", diff --git a/composer.lock b/composer.lock index 8766af9ae45b2..784b439027689 100644 --- a/composer.lock +++ b/composer.lock @@ -4,20 +4,20 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "312aee0e2054c696ccf4190dd4a6f91f", + "content-hash": "7cdf8d52b954bf8e96dc2b8930ac61e4", "packages": [ { "name": "aws/aws-crt-php", - "version": "v1.2.1", + "version": "v1.2.4", "source": { "type": "git", "url": "https://github.com/awslabs/aws-crt-php.git", - "reference": "1926277fc71d253dfa820271ac5987bdb193ccf5" + "reference": "eb0c6e4e142224a10b08f49ebf87f32611d162b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/awslabs/aws-crt-php/zipball/1926277fc71d253dfa820271ac5987bdb193ccf5", - "reference": "1926277fc71d253dfa820271ac5987bdb193ccf5", + "url": "https://api.github.com/repos/awslabs/aws-crt-php/zipball/eb0c6e4e142224a10b08f49ebf87f32611d162b2", + "reference": "eb0c6e4e142224a10b08f49ebf87f32611d162b2", "shasum": "" }, "require": { @@ -56,35 +56,35 @@ ], "support": { "issues": "https://github.com/awslabs/aws-crt-php/issues", - "source": "https://github.com/awslabs/aws-crt-php/tree/v1.2.1" + "source": "https://github.com/awslabs/aws-crt-php/tree/v1.2.4" }, - "time": "2023-03-24T20:22:19+00:00" + "time": "2023-11-08T00:42:13+00:00" }, { "name": "aws/aws-sdk-php", - "version": "3.277.2", + "version": "3.293.0", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "483c9edf258527a6916f7e9fac224fdb2d474aff" + "reference": "4bcac7125bf72fa38aa8a537fb5b175862470c64" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/483c9edf258527a6916f7e9fac224fdb2d474aff", - "reference": "483c9edf258527a6916f7e9fac224fdb2d474aff", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/4bcac7125bf72fa38aa8a537fb5b175862470c64", + "reference": "4bcac7125bf72fa38aa8a537fb5b175862470c64", "shasum": "" }, "require": { - "aws/aws-crt-php": "^1.0.4", + "aws/aws-crt-php": "^1.2.3", "ext-json": "*", "ext-pcre": "*", "ext-simplexml": "*", "guzzlehttp/guzzle": "^6.5.8 || ^7.4.5", - "guzzlehttp/promises": "^1.4.0", + "guzzlehttp/promises": "^1.4.0 || ^2.0", "guzzlehttp/psr7": "^1.9.1 || ^2.4.5", "mtdowling/jmespath.php": "^2.6", - "php": ">=5.5", - "psr/http-message": "^1.0" + "php": ">=7.2.5", + "psr/http-message": "^1.0 || ^2.0" }, "require-dev": { "andrewsville/php-token-reflection": "^1.4", @@ -99,7 +99,7 @@ "ext-sockets": "*", "nette/neon": "^2.3", "paragonie/random_compat": ">= 2", - "phpunit/phpunit": "^4.8.35 || ^5.6.3 || ^9.5", + "phpunit/phpunit": "^5.6.3 || ^8.5 || ^9.5", "psr/cache": "^1.0", "psr/simple-cache": "^1.0", "sebastian/comparator": "^1.2.3 || ^4.0", @@ -151,32 +151,31 @@ "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.277.2" + "source": "https://github.com/aws/aws-sdk-php/tree/3.293.0" }, - "time": "2023-07-28T00:20:24+00:00" + "time": "2023-11-30T01:10:12+00:00" }, { "name": "brick/math", - "version": "0.10.2", + "version": "0.11.0", "source": { "type": "git", "url": "https://github.com/brick/math.git", - "reference": "459f2781e1a08d52ee56b0b1444086e038561e3f" + "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/459f2781e1a08d52ee56b0b1444086e038561e3f", - "reference": "459f2781e1a08d52ee56b0b1444086e038561e3f", + "url": "https://api.github.com/repos/brick/math/zipball/0ad82ce168c82ba30d1c01ec86116ab52f589478", + "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478", "shasum": "" }, "require": { - "ext-json": "*", - "php": "^7.4 || ^8.0" + "php": "^8.0" }, "require-dev": { "php-coveralls/php-coveralls": "^2.2", "phpunit/phpunit": "^9.0", - "vimeo/psalm": "4.25.0" + "vimeo/psalm": "5.0.0" }, "type": "library", "autoload": { @@ -201,7 +200,7 @@ ], "support": { "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.10.2" + "source": "https://github.com/brick/math/tree/0.11.0" }, "funding": [ { @@ -209,30 +208,30 @@ "type": "github" } ], - "time": "2022-08-10T22:54:19+00:00" + "time": "2023-01-15T23:15:59+00:00" }, { "name": "brick/varexporter", - "version": "0.3.5", + "version": "0.4.0", "source": { "type": "git", "url": "https://github.com/brick/varexporter.git", - "reference": "05241f28dfcba2b51b11e2d750e296316ebbe518" + "reference": "2fd038f7c9d12d468130c6e1b3ce06e4160a7dbb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/varexporter/zipball/05241f28dfcba2b51b11e2d750e296316ebbe518", - "reference": "05241f28dfcba2b51b11e2d750e296316ebbe518", + "url": "https://api.github.com/repos/brick/varexporter/zipball/2fd038f7c9d12d468130c6e1b3ce06e4160a7dbb", + "reference": "2fd038f7c9d12d468130c6e1b3ce06e4160a7dbb", "shasum": "" }, "require": { "nikic/php-parser": "^4.0", - "php": "^7.2 || ^8.0" + "php": "^7.4 || ^8.0" }, "require-dev": { "php-coveralls/php-coveralls": "^2.2", "phpunit/phpunit": "^8.5 || ^9.0", - "vimeo/psalm": "4.4.1" + "vimeo/psalm": "5.15.0" }, "type": "library", "autoload": { @@ -250,24 +249,35 @@ ], "support": { "issues": "https://github.com/brick/varexporter/issues", - "source": "https://github.com/brick/varexporter/tree/0.3.5" + "source": "https://github.com/brick/varexporter/tree/0.4.0" }, - "time": "2021-02-10T13:53:07+00:00" + "funding": [ + { + "url": "https://github.com/BenMorel", + "type": "github" + } + ], + "time": "2023-09-01T21:10:07+00:00" }, { "name": "colinmollenhour/cache-backend-file", - "version": "v1.4.5", + "version": "v1.4.8", "source": { "type": "git", "url": "https://github.com/colinmollenhour/Cm_Cache_Backend_File.git", - "reference": "03c7d4c0f43b2de1b559a3527d18ff697d306544" + "reference": "8ad24cfa1eccc3a995c4fcb00db00fb07bd02938" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/colinmollenhour/Cm_Cache_Backend_File/zipball/03c7d4c0f43b2de1b559a3527d18ff697d306544", - "reference": "03c7d4c0f43b2de1b559a3527d18ff697d306544", + "url": "https://api.github.com/repos/colinmollenhour/Cm_Cache_Backend_File/zipball/8ad24cfa1eccc3a995c4fcb00db00fb07bd02938", + "reference": "8ad24cfa1eccc3a995c4fcb00db00fb07bd02938", "shasum": "" }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.4", + "phpunit/phpunit": "^9", + "zf1s/zend-cache": "~1.15" + }, "type": "magento-module", "autoload": { "classmap": [ @@ -287,26 +297,31 @@ "homepage": "https://github.com/colinmollenhour/Cm_Cache_Backend_File", "support": { "issues": "https://github.com/colinmollenhour/Cm_Cache_Backend_File/issues", - "source": "https://github.com/colinmollenhour/Cm_Cache_Backend_File/tree/master" + "source": "https://github.com/colinmollenhour/Cm_Cache_Backend_File/tree/v1.4.8" }, - "time": "2019-04-18T21:54:31+00:00" + "time": "2023-09-19T20:23:43+00:00" }, { "name": "colinmollenhour/cache-backend-redis", - "version": "1.14.2", + "version": "1.17.0", "source": { "type": "git", "url": "https://github.com/colinmollenhour/Cm_Cache_Backend_Redis.git", - "reference": "0b042d26b8c2aa093485bdc4bb03a0113a03778d" + "reference": "dc2fd4fab8cb6b11e161f0eacdd5465c5b42b6f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/colinmollenhour/Cm_Cache_Backend_Redis/zipball/0b042d26b8c2aa093485bdc4bb03a0113a03778d", - "reference": "0b042d26b8c2aa093485bdc4bb03a0113a03778d", + "url": "https://api.github.com/repos/colinmollenhour/Cm_Cache_Backend_Redis/zipball/dc2fd4fab8cb6b11e161f0eacdd5465c5b42b6f1", + "reference": "dc2fd4fab8cb6b11e161f0eacdd5465c5b42b6f1", "shasum": "" }, "require": { - "colinmollenhour/credis": "*" + "colinmollenhour/credis": "^1.14" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.4", + "phpunit/phpunit": "^9", + "zf1s/zend-cache": "~1.15" }, "type": "magento-module", "autoload": { @@ -316,7 +331,7 @@ }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "BSD-3-Clause-Modification" ], "authors": [ { @@ -327,22 +342,22 @@ "homepage": "https://github.com/colinmollenhour/Cm_Cache_Backend_Redis", "support": { "issues": "https://github.com/colinmollenhour/Cm_Cache_Backend_Redis/issues", - "source": "https://github.com/colinmollenhour/Cm_Cache_Backend_Redis/tree/1.14.2" + "source": "https://github.com/colinmollenhour/Cm_Cache_Backend_Redis/tree/1.17.0" }, - "time": "2021-03-02T18:36:21+00:00" + "time": "2023-10-25T17:06:02+00:00" }, { "name": "colinmollenhour/credis", - "version": "v1.14.0", + "version": "v1.16.0", "source": { "type": "git", "url": "https://github.com/colinmollenhour/credis.git", - "reference": "dccc8a46586475075fbb012d8bd523b8a938c2dc" + "reference": "5641140e14a9679f5a6f66c97268727f9558b881" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/colinmollenhour/credis/zipball/dccc8a46586475075fbb012d8bd523b8a938c2dc", - "reference": "dccc8a46586475075fbb012d8bd523b8a938c2dc", + "url": "https://api.github.com/repos/colinmollenhour/credis/zipball/5641140e14a9679f5a6f66c97268727f9558b881", + "reference": "5641140e14a9679f5a6f66c97268727f9558b881", "shasum": "" }, "require": { @@ -374,22 +389,22 @@ "homepage": "https://github.com/colinmollenhour/credis", "support": { "issues": "https://github.com/colinmollenhour/credis/issues", - "source": "https://github.com/colinmollenhour/credis/tree/v1.14.0" + "source": "https://github.com/colinmollenhour/credis/tree/v1.16.0" }, - "time": "2022-11-09T01:18:39+00:00" + "time": "2023-10-26T17:02:51+00:00" }, { "name": "colinmollenhour/php-redis-session-abstract", - "version": "v1.5.0", + "version": "v1.5.2", "source": { "type": "git", "url": "https://github.com/colinmollenhour/php-redis-session-abstract.git", - "reference": "b70508a9b2183d4fc13871cf9138a52fbef776f3" + "reference": "3d3e497bcf2e6d032c5a8f86aa180d181ad65dd3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/colinmollenhour/php-redis-session-abstract/zipball/b70508a9b2183d4fc13871cf9138a52fbef776f3", - "reference": "b70508a9b2183d4fc13871cf9138a52fbef776f3", + "url": "https://api.github.com/repos/colinmollenhour/php-redis-session-abstract/zipball/3d3e497bcf2e6d032c5a8f86aa180d181ad65dd3", + "reference": "3d3e497bcf2e6d032c5a8f86aa180d181ad65dd3", "shasum": "" }, "require": { @@ -418,22 +433,22 @@ "homepage": "https://github.com/colinmollenhour/php-redis-session-abstract", "support": { "issues": "https://github.com/colinmollenhour/php-redis-session-abstract/issues", - "source": "https://github.com/colinmollenhour/php-redis-session-abstract/tree/v1.5.0" + "source": "https://github.com/colinmollenhour/php-redis-session-abstract/tree/v1.5.2" }, - "time": "2022-06-20T23:17:36+00:00" + "time": "2023-11-03T14:58:07+00:00" }, { "name": "composer/ca-bundle", - "version": "1.3.6", + "version": "1.3.7", "source": { "type": "git", "url": "https://github.com/composer/ca-bundle.git", - "reference": "90d087e988ff194065333d16bc5cf649872d9cdb" + "reference": "76e46335014860eec1aa5a724799a00a2e47cc85" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/90d087e988ff194065333d16bc5cf649872d9cdb", - "reference": "90d087e988ff194065333d16bc5cf649872d9cdb", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/76e46335014860eec1aa5a724799a00a2e47cc85", + "reference": "76e46335014860eec1aa5a724799a00a2e47cc85", "shasum": "" }, "require": { @@ -480,7 +495,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/ca-bundle/issues", - "source": "https://github.com/composer/ca-bundle/tree/1.3.6" + "source": "https://github.com/composer/ca-bundle/tree/1.3.7" }, "funding": [ { @@ -496,7 +511,7 @@ "type": "tidelift" } ], - "time": "2023-06-06T12:02:59+00:00" + "time": "2023-08-30T09:31:38+00:00" }, { "name": "composer/class-map-generator", @@ -573,16 +588,16 @@ }, { "name": "composer/composer", - "version": "2.5.8", + "version": "2.6.5", "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "4c516146167d1392c8b9b269bb7c24115d262164" + "reference": "4b0fe89db9e65b1e64df633a992e70a7a215ab33" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/4c516146167d1392c8b9b269bb7c24115d262164", - "reference": "4c516146167d1392c8b9b269bb7c24115d262164", + "url": "https://api.github.com/repos/composer/composer/zipball/4b0fe89db9e65b1e64df633a992e70a7a215ab33", + "reference": "4b0fe89db9e65b1e64df633a992e70a7a215ab33", "shasum": "" }, "require": { @@ -590,23 +605,23 @@ "composer/class-map-generator": "^1.0", "composer/metadata-minifier": "^1.0", "composer/pcre": "^2.1 || ^3.1", - "composer/semver": "^3.0", + "composer/semver": "^3.2.5", "composer/spdx-licenses": "^1.5.7", "composer/xdebug-handler": "^2.0.2 || ^3.0.3", "justinrainbow/json-schema": "^5.2.11", "php": "^7.2.5 || ^8.0", "psr/log": "^1.0 || ^2.0 || ^3.0", - "react/promise": "^2.8", + "react/promise": "^2.8 || ^3", "seld/jsonlint": "^1.4", "seld/phar-utils": "^1.2", "seld/signal-handler": "^2.0", - "symfony/console": "^5.4.11 || ^6.0.11", - "symfony/filesystem": "^5.4 || ^6.0", - "symfony/finder": "^5.4 || ^6.0", + "symfony/console": "^5.4.11 || ^6.0.11 || ^7", + "symfony/filesystem": "^5.4 || ^6.0 || ^7", + "symfony/finder": "^5.4 || ^6.0 || ^7", "symfony/polyfill-php73": "^1.24", "symfony/polyfill-php80": "^1.24", "symfony/polyfill-php81": "^1.24", - "symfony/process": "^5.4 || ^6.0" + "symfony/process": "^5.4 || ^6.0 || ^7" }, "require-dev": { "phpstan/phpstan": "^1.9.3", @@ -614,7 +629,7 @@ "phpstan/phpstan-phpunit": "^1.0", "phpstan/phpstan-strict-rules": "^1", "phpstan/phpstan-symfony": "^1.2.10", - "symfony/phpunit-bridge": "^6.0" + "symfony/phpunit-bridge": "^6.0 || ^7" }, "suggest": { "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", @@ -627,7 +642,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.5-dev" + "dev-main": "2.6-dev" }, "phpstan": { "includes": [ @@ -637,7 +652,7 @@ }, "autoload": { "psr-4": { - "Composer\\": "src/Composer" + "Composer\\": "src/Composer/" } }, "notification-url": "https://packagist.org/downloads/", @@ -666,7 +681,8 @@ "support": { "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/composer/issues", - "source": "https://github.com/composer/composer/tree/2.5.8" + "security": "https://github.com/composer/composer/security/policy", + "source": "https://github.com/composer/composer/tree/2.6.5" }, "funding": [ { @@ -682,7 +698,7 @@ "type": "tidelift" } ], - "time": "2023-06-09T15:13:21+00:00" + "time": "2023-10-06T08:11:52+00:00" }, { "name": "composer/metadata-minifier", @@ -755,16 +771,16 @@ }, { "name": "composer/pcre", - "version": "3.1.0", + "version": "3.1.1", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2" + "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", - "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", + "url": "https://api.github.com/repos/composer/pcre/zipball/00104306927c7a0919b4ced2aaa6782c1e61a3c9", + "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9", "shasum": "" }, "require": { @@ -806,7 +822,7 @@ ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.1.0" + "source": "https://github.com/composer/pcre/tree/3.1.1" }, "funding": [ { @@ -822,20 +838,20 @@ "type": "tidelift" } ], - "time": "2022-11-17T09:50:14+00:00" + "time": "2023-10-11T07:11:09+00:00" }, { "name": "composer/semver", - "version": "3.3.2", + "version": "3.4.0", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", + "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32", + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32", "shasum": "" }, "require": { @@ -885,9 +901,9 @@ "versioning" ], "support": { - "irc": "irc://irc.freenode.org/composer", + "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.3.2" + "source": "https://github.com/composer/semver/tree/3.4.0" }, "funding": [ { @@ -903,20 +919,20 @@ "type": "tidelift" } ], - "time": "2022-04-01T19:23:25+00:00" + "time": "2023-08-31T09:50:34+00:00" }, { "name": "composer/spdx-licenses", - "version": "1.5.7", + "version": "1.5.8", "source": { "type": "git", "url": "https://github.com/composer/spdx-licenses.git", - "reference": "c848241796da2abf65837d51dce1fae55a960149" + "reference": "560bdcf8deb88ae5d611c80a2de8ea9d0358cc0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/c848241796da2abf65837d51dce1fae55a960149", - "reference": "c848241796da2abf65837d51dce1fae55a960149", + "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/560bdcf8deb88ae5d611c80a2de8ea9d0358cc0a", + "reference": "560bdcf8deb88ae5d611c80a2de8ea9d0358cc0a", "shasum": "" }, "require": { @@ -965,9 +981,9 @@ "validator" ], "support": { - "irc": "irc://irc.freenode.org/composer", + "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/spdx-licenses/issues", - "source": "https://github.com/composer/spdx-licenses/tree/1.5.7" + "source": "https://github.com/composer/spdx-licenses/tree/1.5.8" }, "funding": [ { @@ -983,7 +999,7 @@ "type": "tidelift" } ], - "time": "2022-05-23T07:37:50+00:00" + "time": "2023-11-20T07:44:33+00:00" }, { "name": "composer/xdebug-handler", @@ -1129,16 +1145,16 @@ }, { "name": "doctrine/deprecations", - "version": "v1.1.1", + "version": "1.1.2", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3" + "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", - "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/4f2d4f2836e7ec4e7a8625e75c6aa916004db931", + "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931", "shasum": "" }, "require": { @@ -1170,9 +1186,9 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/v1.1.1" + "source": "https://github.com/doctrine/deprecations/tree/1.1.2" }, - "time": "2023-06-03T09:27:29+00:00" + "time": "2023-09-27T20:04:15+00:00" }, { "name": "doctrine/lexer", @@ -1252,88 +1268,128 @@ ], "time": "2022-12-14T08:49:07+00:00" }, + { + "name": "elastic/transport", + "version": "v8.8.0", + "source": { + "type": "git", + "url": "git@github.com:elastic/elastic-transport-php.git", + "reference": "cdf9f63a16ec6bfb4c881ab89aa0e2a61fb7c20b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/elastic/elastic-transport-php/zipball/cdf9f63a16ec6bfb4c881ab89aa0e2a61fb7c20b", + "reference": "cdf9f63a16ec6bfb4c881ab89aa0e2a61fb7c20b", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.0", + "php": "^7.4 || ^8.0", + "php-http/discovery": "^1.14", + "php-http/httplug": "^2.3", + "psr/http-client": "^1.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0 || ^2.0", + "psr/log": "^1 || ^2 || ^3" + }, + "require-dev": { + "nyholm/psr7": "^1.5", + "php-http/mock-client": "^1.5", + "phpstan/phpstan": "^1.4", + "phpunit/phpunit": "^9.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Elastic\\Transport\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "HTTP transport PHP library for Elastic products", + "keywords": [ + "PSR_17", + "elastic", + "http", + "psr-18", + "psr-7", + "transport" + ], + "time": "2023-11-08T10:51:51+00:00" + }, { "name": "elasticsearch/elasticsearch", - "version": "v7.17.1", + "version": "v8.5.3", "source": { "type": "git", "url": "git@github.com:elastic/elasticsearch-php.git", - "reference": "f1b8918f411b837ce5f6325e829a73518fd50367" + "reference": "9d850932b8ab8129fd4baf597a1172e8f583b436" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/elastic/elasticsearch-php/zipball/f1b8918f411b837ce5f6325e829a73518fd50367", - "reference": "f1b8918f411b837ce5f6325e829a73518fd50367", + "url": "https://api.github.com/repos/elastic/elasticsearch-php/zipball/9d850932b8ab8129fd4baf597a1172e8f583b436", + "reference": "9d850932b8ab8129fd4baf597a1172e8f583b436", "shasum": "" }, "require": { - "ext-json": ">=1.3.7", - "ezimuel/ringphp": "^1.1.2", - "php": "^7.3 || ^8.0", + "elastic/transport": "^8.5", + "guzzlehttp/guzzle": "^7.0", + "php": "^7.4 || ^8.0", + "psr/http-client": "^1.0", + "psr/http-message": "^1.0", "psr/log": "^1|^2|^3" }, "require-dev": { "ext-yaml": "*", "ext-zip": "*", - "mockery/mockery": "^1.2", - "phpstan/phpstan": "^0.12", - "phpunit/phpunit": "^9.3", - "squizlabs/php_codesniffer": "^3.4", - "symfony/finder": "~4.0" - }, - "suggest": { - "ext-curl": "*", - "monolog/monolog": "Allows for client-level logging and tracing" + "mockery/mockery": "^1.5", + "nyholm/psr7": "^1.5", + "php-http/mock-client": "^1.5", + "phpstan/phpstan": "^1.4", + "phpunit/phpunit": "^9.5", + "symfony/finder": "~4.0", + "symfony/http-client": "^5.0|^6.0" }, "type": "library", "autoload": { - "files": [ - "src/autoload.php" - ], "psr-4": { - "Elasticsearch\\": "src/Elasticsearch/" + "Elastic\\Elasticsearch\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "Apache-2.0", - "LGPL-2.1-only" - ], - "authors": [ - { - "name": "Zachary Tong" - }, - { - "name": "Enrico Zimuel" - } + "MIT" ], "description": "PHP Client for Elasticsearch", "keywords": [ "client", + "elastic", "elasticsearch", "search" ], - "time": "2022-09-30T12:28:55+00:00" + "time": "2022-11-22T14:15:58+00:00" }, { "name": "ezimuel/guzzlestreams", - "version": "3.0.1", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/ezimuel/guzzlestreams.git", - "reference": "abe3791d231167f14eb80d413420d1eab91163a8" + "reference": "b4b5a025dfee70d6cd34c780e07330eb93d5b997" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ezimuel/guzzlestreams/zipball/abe3791d231167f14eb80d413420d1eab91163a8", - "reference": "abe3791d231167f14eb80d413420d1eab91163a8", + "url": "https://api.github.com/repos/ezimuel/guzzlestreams/zipball/b4b5a025dfee70d6cd34c780e07330eb93d5b997", + "reference": "b4b5a025dfee70d6cd34c780e07330eb93d5b997", "shasum": "" }, "require": { "php": ">=5.4.0" }, "require-dev": { - "phpunit/phpunit": "~4.0" + "phpunit/phpunit": "~9.0" }, "type": "library", "extra": { @@ -1364,9 +1420,9 @@ "stream" ], "support": { - "source": "https://github.com/ezimuel/guzzlestreams/tree/3.0.1" + "source": "https://github.com/ezimuel/guzzlestreams/tree/3.1.0" }, - "time": "2020-02-14T23:11:50+00:00" + "time": "2022-10-24T12:58:50+00:00" }, { "name": "ezimuel/ringphp", @@ -1427,20 +1483,20 @@ }, { "name": "ezyang/htmlpurifier", - "version": "v4.16.0", + "version": "v4.17.0", "source": { "type": "git", "url": "https://github.com/ezyang/htmlpurifier.git", - "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8" + "reference": "bbc513d79acf6691fa9cf10f192c90dd2957f18c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/523407fb06eb9e5f3d59889b3978d5bfe94299c8", - "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8", + "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/bbc513d79acf6691fa9cf10f192c90dd2957f18c", + "reference": "bbc513d79acf6691fa9cf10f192c90dd2957f18c", "shasum": "" }, "require": { - "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" }, "require-dev": { "cerdic/css-tidy": "^1.7 || ^2.0", @@ -1482,104 +1538,28 @@ ], "support": { "issues": "https://github.com/ezyang/htmlpurifier/issues", - "source": "https://github.com/ezyang/htmlpurifier/tree/v4.16.0" - }, - "time": "2022-09-18T07:06:19+00:00" - }, - { - "name": "fgrosse/phpasn1", - "version": "v2.5.0", - "source": { - "type": "git", - "url": "https://github.com/fgrosse/PHPASN1.git", - "reference": "42060ed45344789fb9f21f9f1864fc47b9e3507b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fgrosse/PHPASN1/zipball/42060ed45344789fb9f21f9f1864fc47b9e3507b", - "reference": "42060ed45344789fb9f21f9f1864fc47b9e3507b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "~2.0", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "suggest": { - "ext-bcmath": "BCmath is the fallback extension for big integer calculations", - "ext-curl": "For loading OID information from the web if they have not bee defined statically", - "ext-gmp": "GMP is the preferred extension for big integer calculations", - "phpseclib/bcmath_compat": "BCmath polyfill for servers where neither GMP nor BCmath is available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "FG\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Friedrich Große", - "email": "friedrich.grosse@gmail.com", - "homepage": "https://github.com/FGrosse", - "role": "Author" - }, - { - "name": "All contributors", - "homepage": "https://github.com/FGrosse/PHPASN1/contributors" - } - ], - "description": "A PHP Framework that allows you to encode and decode arbitrary ASN.1 structures using the ITU-T X.690 Encoding Rules.", - "homepage": "https://github.com/FGrosse/PHPASN1", - "keywords": [ - "DER", - "asn.1", - "asn1", - "ber", - "binary", - "decoding", - "encoding", - "x.509", - "x.690", - "x509", - "x690" - ], - "support": { - "issues": "https://github.com/fgrosse/PHPASN1/issues", - "source": "https://github.com/fgrosse/PHPASN1/tree/v2.5.0" + "source": "https://github.com/ezyang/htmlpurifier/tree/v4.17.0" }, - "abandoned": true, - "time": "2022-12-19T11:08:26+00:00" + "time": "2023-11-17T15:01:25+00:00" }, { "name": "guzzlehttp/guzzle", - "version": "7.7.0", + "version": "7.8.0", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "fb7566caccf22d74d1ab270de3551f72a58399f5" + "reference": "1110f66a6530a40fe7aea0378fe608ee2b2248f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/fb7566caccf22d74d1ab270de3551f72a58399f5", - "reference": "fb7566caccf22d74d1ab270de3551f72a58399f5", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/1110f66a6530a40fe7aea0378fe608ee2b2248f9", + "reference": "1110f66a6530a40fe7aea0378fe608ee2b2248f9", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.5.3 || ^2.0", - "guzzlehttp/psr7": "^1.9.1 || ^2.4.5", + "guzzlehttp/promises": "^1.5.3 || ^2.0.1", + "guzzlehttp/psr7": "^1.9.1 || ^2.5.1", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" @@ -1670,7 +1650,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.7.0" + "source": "https://github.com/guzzle/guzzle/tree/7.8.0" }, "funding": [ { @@ -1686,33 +1666,37 @@ "type": "tidelift" } ], - "time": "2023-05-21T14:04:53+00:00" + "time": "2023-08-27T10:20:53+00:00" }, { "name": "guzzlehttp/promises", - "version": "1.5.3", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "67ab6e18aaa14d753cc148911d273f6e6cb6721e" + "reference": "111166291a0f8130081195ac4556a5587d7f1b5d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/67ab6e18aaa14d753cc148911d273f6e6cb6721e", - "reference": "67ab6e18aaa14d753cc148911d273f6e6cb6721e", + "url": "https://api.github.com/repos/guzzle/promises/zipball/111166291a0f8130081195ac4556a5587d7f1b5d", + "reference": "111166291a0f8130081195ac4556a5587d7f1b5d", "shasum": "" }, "require": { - "php": ">=5.5" + "php": "^7.2.5 || ^8.0" }, "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" + "bamarni/composer-bin-plugin": "^1.8.1", + "phpunit/phpunit": "^8.5.29 || ^9.5.23" }, "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, "autoload": { - "files": [ - "src/functions_include.php" - ], "psr-4": { "GuzzleHttp\\Promise\\": "src/" } @@ -1749,7 +1733,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.5.3" + "source": "https://github.com/guzzle/promises/tree/2.0.1" }, "funding": [ { @@ -1765,20 +1749,20 @@ "type": "tidelift" } ], - "time": "2023-05-21T12:31:43+00:00" + "time": "2023-08-03T15:11:55+00:00" }, { "name": "guzzlehttp/psr7", - "version": "2.5.0", + "version": "2.6.1", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "b635f279edd83fc275f822a1188157ffea568ff6" + "reference": "be45764272e8873c72dbe3d2edcfdfcc3bc9f727" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/b635f279edd83fc275f822a1188157ffea568ff6", - "reference": "b635f279edd83fc275f822a1188157ffea568ff6", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/be45764272e8873c72dbe3d2edcfdfcc3bc9f727", + "reference": "be45764272e8873c72dbe3d2edcfdfcc3bc9f727", "shasum": "" }, "require": { @@ -1865,7 +1849,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.5.0" + "source": "https://github.com/guzzle/psr7/tree/2.6.1" }, "funding": [ { @@ -1881,20 +1865,20 @@ "type": "tidelift" } ], - "time": "2023-04-17T16:11:26+00:00" + "time": "2023-08-27T10:13:57+00:00" }, { "name": "justinrainbow/json-schema", - "version": "5.2.12", + "version": "v5.2.13", "source": { "type": "git", "url": "https://github.com/justinrainbow/json-schema.git", - "reference": "ad87d5a5ca981228e0e205c2bc7dfb8e24559b60" + "reference": "fbbe7e5d79f618997bc3332a6f49246036c45793" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/ad87d5a5ca981228e0e205c2bc7dfb8e24559b60", - "reference": "ad87d5a5ca981228e0e205c2bc7dfb8e24559b60", + "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/fbbe7e5d79f618997bc3332a6f49246036c45793", + "reference": "fbbe7e5d79f618997bc3332a6f49246036c45793", "shasum": "" }, "require": { @@ -1949,22 +1933,22 @@ ], "support": { "issues": "https://github.com/justinrainbow/json-schema/issues", - "source": "https://github.com/justinrainbow/json-schema/tree/5.2.12" + "source": "https://github.com/justinrainbow/json-schema/tree/v5.2.13" }, - "time": "2022-04-13T08:02:27+00:00" + "time": "2023-09-26T02:20:38+00:00" }, { "name": "laminas/laminas-captcha", - "version": "2.15.0", + "version": "2.17.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-captcha.git", - "reference": "de816814f52c67b33db614deb6227d46df531bc6" + "reference": "981b3d1e287653b1fc5b71859964508ac0a2d7cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-captcha/zipball/de816814f52c67b33db614deb6227d46df531bc6", - "reference": "de816814f52c67b33db614deb6227d46df531bc6", + "url": "https://api.github.com/repos/laminas/laminas-captcha/zipball/981b3d1e287653b1fc5b71859964508ac0a2d7cb", + "reference": "981b3d1e287653b1fc5b71859964508ac0a2d7cb", "shasum": "" }, "require": { @@ -1973,17 +1957,17 @@ "laminas/laminas-stdlib": "^3.10.1", "laminas/laminas-text": "^2.9.0", "laminas/laminas-validator": "^2.19.0", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "zendframework/zend-captcha": "*" }, "require-dev": { "ext-gd": "*", - "laminas/laminas-coding-standard": "~2.4.0", + "laminas/laminas-coding-standard": "~2.5.0", "phpunit/phpunit": "^9.5.26", - "psalm/plugin-phpunit": "^0.18.0", - "vimeo/psalm": "^4.29.0" + "psalm/plugin-phpunit": "^0.18.4", + "vimeo/psalm": "^5.1" }, "suggest": { "laminas/laminas-i18n-resources": "Translations of captcha messages" @@ -2018,33 +2002,33 @@ "type": "community_bridge" } ], - "time": "2022-11-15T23:25:43+00:00" + "time": "2023-10-18T10:03:37+00:00" }, { "name": "laminas/laminas-code", - "version": "4.8.0", + "version": "4.13.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-code.git", - "reference": "dd19fe8e07cc3f374308565667eecd4958c22106" + "reference": "7353d4099ad5388e84737dd16994316a04f48dbf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-code/zipball/dd19fe8e07cc3f374308565667eecd4958c22106", - "reference": "dd19fe8e07cc3f374308565667eecd4958c22106", + "url": "https://api.github.com/repos/laminas/laminas-code/zipball/7353d4099ad5388e84737dd16994316a04f48dbf", + "reference": "7353d4099ad5388e84737dd16994316a04f48dbf", "shasum": "" }, "require": { - "php": "~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "require-dev": { - "doctrine/annotations": "^1.13.3", + "doctrine/annotations": "^2.0.1", "ext-phar": "*", - "laminas/laminas-coding-standard": "^2.3.0", - "laminas/laminas-stdlib": "^3.6.1", - "phpunit/phpunit": "^9.5.26", - "psalm/plugin-phpunit": "^0.18.0", - "vimeo/psalm": "^5.1.0" + "laminas/laminas-coding-standard": "^2.5.0", + "laminas/laminas-stdlib": "^3.17.0", + "phpunit/phpunit": "^10.3.3", + "psalm/plugin-phpunit": "^0.18.4", + "vimeo/psalm": "^5.15.0" }, "suggest": { "doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features", @@ -2081,26 +2065,26 @@ "type": "community_bridge" } ], - "time": "2022-12-08T02:08:23+00:00" + "time": "2023-10-18T10:00:55+00:00" }, { "name": "laminas/laminas-config", - "version": "3.8.0", + "version": "3.9.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-config.git", - "reference": "46baad58d0b12cf98539e04334eff40a1fdfb9a0" + "reference": "e53717277f6c22b1c697a46473b9a5ec9a438efa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-config/zipball/46baad58d0b12cf98539e04334eff40a1fdfb9a0", - "reference": "46baad58d0b12cf98539e04334eff40a1fdfb9a0", + "url": "https://api.github.com/repos/laminas/laminas-config/zipball/e53717277f6c22b1c697a46473b9a5ec9a438efa", + "reference": "e53717277f6c22b1c697a46473b9a5ec9a438efa", "shasum": "" }, "require": { "ext-json": "*", "laminas/laminas-stdlib": "^3.6", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0", + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", "psr/container": "^1.0" }, "conflict": { @@ -2149,28 +2133,28 @@ "type": "community_bridge" } ], - "time": "2022-10-16T14:21:22+00:00" + "time": "2023-09-19T12:02:54+00:00" }, { "name": "laminas/laminas-crypt", - "version": "3.9.0", + "version": "3.11.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-crypt.git", - "reference": "56ab1b195dad5456753601ff2e8e3d3fd9392d1a" + "reference": "098fc61a895d1ff5d1c2b861525b4428bf6c3240" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-crypt/zipball/56ab1b195dad5456753601ff2e8e3d3fd9392d1a", - "reference": "56ab1b195dad5456753601ff2e8e3d3fd9392d1a", + "url": "https://api.github.com/repos/laminas/laminas-crypt/zipball/098fc61a895d1ff5d1c2b861525b4428bf6c3240", + "reference": "098fc61a895d1ff5d1c2b861525b4428bf6c3240", "shasum": "" }, "require": { "ext-mbstring": "*", "laminas/laminas-math": "^3.4", "laminas/laminas-servicemanager": "^3.11.2", - "laminas/laminas-stdlib": "^3.6", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0", + "laminas/laminas-stdlib": "^3.8", + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", "psr/container": "^1.1" }, "conflict": { @@ -2213,20 +2197,20 @@ "type": "community_bridge" } ], - "time": "2022-10-16T15:51:01+00:00" + "time": "2023-11-06T23:02:42+00:00" }, { "name": "laminas/laminas-db", - "version": "2.16.3", + "version": "2.18.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-db.git", - "reference": "dadd9a19d2f9e89aa59205572b928892b91ff1da" + "reference": "4df7a3f7ffe268e8683306fcec125c269408b295" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-db/zipball/dadd9a19d2f9e89aa59205572b928892b91ff1da", - "reference": "dadd9a19d2f9e89aa59205572b928892b91ff1da", + "url": "https://api.github.com/repos/laminas/laminas-db/zipball/4df7a3f7ffe268e8683306fcec125c269408b295", + "reference": "4df7a3f7ffe268e8683306fcec125c269408b295", "shasum": "" }, "require": { @@ -2284,25 +2268,25 @@ "type": "community_bridge" } ], - "time": "2022-12-17T16:31:58+00:00" + "time": "2023-05-05T16:22:28+00:00" }, { "name": "laminas/laminas-di", - "version": "3.11.0", + "version": "3.13.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-di.git", - "reference": "45c9dfd57370617d2028e597061c4ef2a2ea0118" + "reference": "b7178e66a61cc46f6c5c7ea16009daff59e82154" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-di/zipball/45c9dfd57370617d2028e597061c4ef2a2ea0118", - "reference": "45c9dfd57370617d2028e597061c4ef2a2ea0118", + "url": "https://api.github.com/repos/laminas/laminas-di/zipball/b7178e66a61cc46f6c5c7ea16009daff59e82154", + "reference": "b7178e66a61cc46f6c5c7ea16009daff59e82154", "shasum": "" }, "require": { - "laminas/laminas-stdlib": "^3.6", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0", + "laminas/laminas-stdlib": "^3.18.0", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0", "psr/container": "^1.1.1", "psr/log": "^1.1.4 || ^3.0.0" }, @@ -2312,14 +2296,14 @@ "zendframework/zend-di": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.4.0", - "laminas/laminas-servicemanager": "^3.12", + "laminas/laminas-coding-standard": "~2.5.0", + "laminas/laminas-servicemanager": "^3.22", "mikey179/vfsstream": "^1.6.11@alpha", "phpbench/phpbench": "^1.2.7", "phpunit/phpunit": "^9.5.26", - "psalm/plugin-phpunit": "^0.16.1", + "psalm/plugin-phpunit": "^0.18.0", "squizlabs/php_codesniffer": "^3.7.1", - "vimeo/psalm": "^4.10" + "vimeo/psalm": "^5.0" }, "suggest": { "laminas/laminas-servicemanager": "An IoC container without auto wiring capabilities" @@ -2361,37 +2345,37 @@ "type": "community_bridge" } ], - "time": "2022-11-25T10:24:48+00:00" + "time": "2023-11-02T16:59:30+00:00" }, { "name": "laminas/laminas-escaper", - "version": "2.12.0", + "version": "2.13.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-escaper.git", - "reference": "ee7a4c37bf3d0e8c03635d5bddb5bb3184ead490" + "reference": "af459883f4018d0f8a0c69c7a209daef3bf973ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/ee7a4c37bf3d0e8c03635d5bddb5bb3184ead490", - "reference": "ee7a4c37bf3d0e8c03635d5bddb5bb3184ead490", + "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/af459883f4018d0f8a0c69c7a209daef3bf973ba", + "reference": "af459883f4018d0f8a0c69c7a209daef3bf973ba", "shasum": "" }, "require": { "ext-ctype": "*", "ext-mbstring": "*", - "php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "zendframework/zend-escaper": "*" }, "require-dev": { - "infection/infection": "^0.26.6", - "laminas/laminas-coding-standard": "~2.4.0", + "infection/infection": "^0.27.0", + "laminas/laminas-coding-standard": "~2.5.0", "maglnet/composer-require-checker": "^3.8.0", - "phpunit/phpunit": "^9.5.18", - "psalm/plugin-phpunit": "^0.17.0", - "vimeo/psalm": "^4.22.0" + "phpunit/phpunit": "^9.6.7", + "psalm/plugin-phpunit": "^0.18.4", + "vimeo/psalm": "^5.9" }, "type": "library", "autoload": { @@ -2423,37 +2407,37 @@ "type": "community_bridge" } ], - "time": "2022-10-10T10:11:09+00:00" + "time": "2023-10-10T08:35:13+00:00" }, { "name": "laminas/laminas-eventmanager", - "version": "3.9.0", + "version": "3.12.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-eventmanager.git", - "reference": "74c091fb0da37744e7d215ef5bd3564c77f6385e" + "reference": "4a576922c00cc7838d60d004a7bd6f5a02c23b57" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-eventmanager/zipball/74c091fb0da37744e7d215ef5bd3564c77f6385e", - "reference": "74c091fb0da37744e7d215ef5bd3564c77f6385e", + "url": "https://api.github.com/repos/laminas/laminas-eventmanager/zipball/4a576922c00cc7838d60d004a7bd6f5a02c23b57", + "reference": "4a576922c00cc7838d60d004a7bd6f5a02c23b57", "shasum": "" }, "require": { - "php": "~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "container-interop/container-interop": "<1.2", "zendframework/zend-eventmanager": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.4.0", - "laminas/laminas-stdlib": "^3.15", - "phpbench/phpbench": "^1.2.7", - "phpunit/phpunit": "^9.5.26", - "psalm/plugin-phpunit": "^0.18.0", + "laminas/laminas-coding-standard": "~2.5.0", + "laminas/laminas-stdlib": "^3.17", + "phpbench/phpbench": "^1.2.10", + "phpunit/phpunit": "^10.4.1", + "psalm/plugin-phpunit": "^0.18.4", "psr/container": "^1.1.2 || ^2.0.2", - "vimeo/psalm": "^5.0.0" + "vimeo/psalm": "^5.11" }, "suggest": { "laminas/laminas-stdlib": "^2.7.3 || ^3.0, to use the FilterChain feature", @@ -2491,45 +2475,45 @@ "type": "community_bridge" } ], - "time": "2022-12-10T16:36:52+00:00" + "time": "2023-10-18T16:36:45+00:00" }, { "name": "laminas/laminas-feed", - "version": "2.20.0", + "version": "2.22.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-feed.git", - "reference": "508ebef6e622f2f2ce3dd0559739ffd0dfa3b938" + "reference": "669792b819fca7274698147ad7a2ecc1b0a9b141" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-feed/zipball/508ebef6e622f2f2ce3dd0559739ffd0dfa3b938", - "reference": "508ebef6e622f2f2ce3dd0559739ffd0dfa3b938", + "url": "https://api.github.com/repos/laminas/laminas-feed/zipball/669792b819fca7274698147ad7a2ecc1b0a9b141", + "reference": "669792b819fca7274698147ad7a2ecc1b0a9b141", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "laminas/laminas-escaper": "^2.9", - "laminas/laminas-servicemanager": "^3.14.0", "laminas/laminas-stdlib": "^3.6", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "laminas/laminas-servicemanager": "<3.3", "zendframework/zend-feed": "*" }, "require-dev": { - "laminas/laminas-cache": "^2.13.2 || ^3.6", - "laminas/laminas-cache-storage-adapter-memory": "^1.1.0 || ^2.1", - "laminas/laminas-coding-standard": "~2.4.0", - "laminas/laminas-db": "^2.15", - "laminas/laminas-http": "^2.17.0", - "laminas/laminas-validator": "^2.26", - "phpunit/phpunit": "^9.5.25", - "psalm/plugin-phpunit": "^0.18.0", - "psr/http-message": "^1.0.1", - "vimeo/psalm": "^5.1.0" + "laminas/laminas-cache": "^2.13.2 || ^3.11", + "laminas/laminas-cache-storage-adapter-memory": "^1.1.0 || ^2.2", + "laminas/laminas-coding-standard": "~2.5.0", + "laminas/laminas-db": "^2.18", + "laminas/laminas-http": "^2.18", + "laminas/laminas-servicemanager": "^3.21.0", + "laminas/laminas-validator": "^2.38", + "phpunit/phpunit": "^10.3.1", + "psalm/plugin-phpunit": "^0.18.4", + "psr/http-message": "^2.0", + "vimeo/psalm": "^5.14.1" }, "suggest": { "laminas/laminas-cache": "Laminas\\Cache component, for optionally caching feeds between requests", @@ -2571,32 +2555,32 @@ "type": "community_bridge" } ], - "time": "2022-12-03T19:40:30+00:00" + "time": "2023-10-11T20:16:37+00:00" }, { "name": "laminas/laminas-file", - "version": "2.12.0", + "version": "2.13.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-file.git", - "reference": "9e8ff3a6d7ccaad0865581ef672a7c48260b65d9" + "reference": "54b354bff5dca67af3452b1f73a0ab66e4c4a5e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-file/zipball/9e8ff3a6d7ccaad0865581ef672a7c48260b65d9", - "reference": "9e8ff3a6d7ccaad0865581ef672a7c48260b65d9", + "url": "https://api.github.com/repos/laminas/laminas-file/zipball/54b354bff5dca67af3452b1f73a0ab66e4c4a5e5", + "reference": "54b354bff5dca67af3452b1f73a0ab66e4c4a5e5", "shasum": "" }, "require": { "laminas/laminas-stdlib": "^2.7.7 || ^3.15.0", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "zendframework/zend-file": "*" }, "require-dev": { "laminas/laminas-coding-standard": "~1.0.0", - "laminas/laminas-filter": "^2.7.2", + "laminas/laminas-filter": "^2.23.2", "laminas/laminas-i18n": "^2.7.4", "laminas/laminas-progressbar": "^2.5.2", "laminas/laminas-servicemanager": "^2.7.8 || ^3.3", @@ -2639,41 +2623,42 @@ "type": "community_bridge" } ], - "time": "2022-11-21T06:59:25+00:00" + "time": "2023-11-21T14:05:55+00:00" }, { "name": "laminas/laminas-filter", - "version": "2.30.0", + "version": "2.33.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-filter.git", - "reference": "97e3ce0fa868567aa433ed34d6f57ee703d70d3e" + "reference": "6ad64828d25ec4bdf226ec5096aabb04aa710324" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-filter/zipball/97e3ce0fa868567aa433ed34d6f57ee703d70d3e", - "reference": "97e3ce0fa868567aa433ed34d6f57ee703d70d3e", + "url": "https://api.github.com/repos/laminas/laminas-filter/zipball/6ad64828d25ec4bdf226ec5096aabb04aa710324", + "reference": "6ad64828d25ec4bdf226ec5096aabb04aa710324", "shasum": "" }, "require": { "ext-mbstring": "*", - "laminas/laminas-servicemanager": "^3.14.0", + "laminas/laminas-servicemanager": "^3.21.0", "laminas/laminas-stdlib": "^3.13.0", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "laminas/laminas-validator": "<2.10.1", "zendframework/zend-filter": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.4.0", - "laminas/laminas-crypt": "^3.9", - "laminas/laminas-uri": "^2.10", + "laminas/laminas-coding-standard": "~2.5.0", + "laminas/laminas-crypt": "^3.10", + "laminas/laminas-i18n": "^2.23.1", + "laminas/laminas-uri": "^2.11", "pear/archive_tar": "^1.4.14", - "phpunit/phpunit": "^9.5.27", + "phpunit/phpunit": "^10.4.2", "psalm/plugin-phpunit": "^0.18.4", - "psr/http-factory": "^1.0.1", - "vimeo/psalm": "^5.3" + "psr/http-factory": "^1.0.2", + "vimeo/psalm": "^5.15.0" }, "suggest": { "laminas/laminas-crypt": "Laminas\\Crypt component, for encryption filters", @@ -2717,28 +2702,28 @@ "type": "community_bridge" } ], - "time": "2022-12-19T17:34:24+00:00" + "time": "2023-11-03T13:29:10+00:00" }, { "name": "laminas/laminas-http", - "version": "2.18.0", + "version": "2.19.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-http.git", - "reference": "76de9008f889bc7088f85a41d0d2b06c2b59c53d" + "reference": "26dd6d1177e25d970058863c2afed12bb9dbff4d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-http/zipball/76de9008f889bc7088f85a41d0d2b06c2b59c53d", - "reference": "76de9008f889bc7088f85a41d0d2b06c2b59c53d", + "url": "https://api.github.com/repos/laminas/laminas-http/zipball/26dd6d1177e25d970058863c2afed12bb9dbff4d", + "reference": "26dd6d1177e25d970058863c2afed12bb9dbff4d", "shasum": "" }, "require": { - "laminas/laminas-loader": "^2.8", + "laminas/laminas-loader": "^2.10", "laminas/laminas-stdlib": "^3.6", - "laminas/laminas-uri": "^2.9.1", + "laminas/laminas-uri": "^2.11", "laminas/laminas-validator": "^2.15", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "zendframework/zend-http": "*" @@ -2782,46 +2767,45 @@ "type": "community_bridge" } ], - "time": "2022-11-23T15:45:41+00:00" + "time": "2023-11-02T16:27:41+00:00" }, { "name": "laminas/laminas-i18n", - "version": "2.21.0", + "version": "2.24.1", "source": { "type": "git", "url": "https://github.com/laminas/laminas-i18n.git", - "reference": "fbd2d0373aaced4769cba2bf3d1425d55f68abb1" + "reference": "dafb5eddfb43575befd29aeb195c55f92834fd32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-i18n/zipball/fbd2d0373aaced4769cba2bf3d1425d55f68abb1", - "reference": "fbd2d0373aaced4769cba2bf3d1425d55f68abb1", + "url": "https://api.github.com/repos/laminas/laminas-i18n/zipball/dafb5eddfb43575befd29aeb195c55f92834fd32", + "reference": "dafb5eddfb43575befd29aeb195c55f92834fd32", "shasum": "" }, "require": { "ext-intl": "*", - "laminas/laminas-servicemanager": "^3.14.0", - "laminas/laminas-stdlib": "^2.7 || ^3.0", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0" + "laminas/laminas-servicemanager": "^3.21.0", + "laminas/laminas-stdlib": "^3.0", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "laminas/laminas-view": "<2.20.0", - "phpspec/prophecy": "<1.9.0", "zendframework/zend-i18n": "*" }, "require-dev": { - "laminas/laminas-cache": "^3.8", - "laminas/laminas-cache-storage-adapter-memory": "^2.2.0", - "laminas/laminas-cache-storage-deprecated-factory": "^1.0.1", - "laminas/laminas-coding-standard": "~2.4.0", - "laminas/laminas-config": "^3.8.0", - "laminas/laminas-eventmanager": "^3.7", - "laminas/laminas-filter": "^2.28.1", - "laminas/laminas-validator": "^2.28", - "laminas/laminas-view": "^2.25", - "phpunit/phpunit": "^9.5.26", - "psalm/plugin-phpunit": "^0.18.3", - "vimeo/psalm": "^5.0.0" + "laminas/laminas-cache": "^3.11.0", + "laminas/laminas-cache-storage-adapter-memory": "^2.3.0", + "laminas/laminas-cache-storage-deprecated-factory": "^1.1", + "laminas/laminas-coding-standard": "~2.5.0", + "laminas/laminas-config": "^3.9.0", + "laminas/laminas-eventmanager": "^3.12", + "laminas/laminas-filter": "^2.33", + "laminas/laminas-validator": "^2.41", + "laminas/laminas-view": "^2.32", + "phpunit/phpunit": "^10.4.2", + "psalm/plugin-phpunit": "^0.18.4", + "vimeo/psalm": "^5.15.0" }, "suggest": { "laminas/laminas-cache": "You should install this package to cache the translations", @@ -2868,31 +2852,31 @@ "type": "community_bridge" } ], - "time": "2022-12-02T17:15:52+00:00" + "time": "2023-11-08T08:56:45+00:00" }, { "name": "laminas/laminas-json", - "version": "3.5.0", + "version": "3.6.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-json.git", - "reference": "7a8a1d7bf2d05dd6c1fbd7c0868d3848cf2b57ec" + "reference": "53ff787b20b77197f38680c737e8dfffa846b85b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-json/zipball/7a8a1d7bf2d05dd6c1fbd7c0868d3848cf2b57ec", - "reference": "7a8a1d7bf2d05dd6c1fbd7c0868d3848cf2b57ec", + "url": "https://api.github.com/repos/laminas/laminas-json/zipball/53ff787b20b77197f38680c737e8dfffa846b85b", + "reference": "53ff787b20b77197f38680c737e8dfffa846b85b", "shasum": "" }, "require": { - "php": "~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "zendframework/zend-json": "*" }, "require-dev": { "laminas/laminas-coding-standard": "~2.4.0", - "laminas/laminas-stdlib": "^2.7.7 || ^3.1", + "laminas/laminas-stdlib": "^2.7.7 || ^3.8", "phpunit/phpunit": "^9.5.25" }, "suggest": { @@ -2929,24 +2913,24 @@ "type": "community_bridge" } ], - "time": "2022-10-17T04:06:45+00:00" + "time": "2023-10-18T09:54:55+00:00" }, { "name": "laminas/laminas-loader", - "version": "2.9.0", + "version": "2.10.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-loader.git", - "reference": "51ed9c3fa42d1098a9997571730c0cbf42d078d3" + "reference": "e6fe952304ef40ce45cd814751ab35d42afdad12" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-loader/zipball/51ed9c3fa42d1098a9997571730c0cbf42d078d3", - "reference": "51ed9c3fa42d1098a9997571730c0cbf42d078d3", + "url": "https://api.github.com/repos/laminas/laminas-loader/zipball/e6fe952304ef40ce45cd814751ab35d42afdad12", + "reference": "e6fe952304ef40ce45cd814751ab35d42afdad12", "shasum": "" }, "require": { - "php": "~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "zendframework/zend-loader": "*" @@ -2985,46 +2969,44 @@ "type": "community_bridge" } ], - "time": "2022-10-16T12:50:49+00:00" + "time": "2023-10-18T09:58:51+00:00" }, { "name": "laminas/laminas-mail", - "version": "2.21.0", + "version": "2.25.1", "source": { "type": "git", "url": "https://github.com/laminas/laminas-mail.git", - "reference": "451b33522a4e7f17e097e45fceea4752c86a2ace" + "reference": "110e04497395123998220e244cceecb167cc6dda" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-mail/zipball/451b33522a4e7f17e097e45fceea4752c86a2ace", - "reference": "451b33522a4e7f17e097e45fceea4752c86a2ace", + "url": "https://api.github.com/repos/laminas/laminas-mail/zipball/110e04497395123998220e244cceecb167cc6dda", + "reference": "110e04497395123998220e244cceecb167cc6dda", "shasum": "" }, "require": { "ext-iconv": "*", - "laminas/laminas-loader": "^2.8.0", - "laminas/laminas-mime": "^2.10.0", - "laminas/laminas-stdlib": "^3.11.0", - "laminas/laminas-validator": "^2.23.0", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0", - "symfony/polyfill-intl-idn": "^1.26.0", - "symfony/polyfill-mbstring": "^1.16.0", + "laminas/laminas-loader": "^2.9.0", + "laminas/laminas-mime": "^2.11.0", + "laminas/laminas-stdlib": "^3.17.0", + "laminas/laminas-validator": "^2.31.0", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0", + "symfony/polyfill-intl-idn": "^1.27.0", + "symfony/polyfill-mbstring": "^1.27.0", "webmozart/assert": "^1.11.0" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.4.0", - "laminas/laminas-crypt": "^3.9.0", - "laminas/laminas-db": "^2.16", - "laminas/laminas-servicemanager": "^3.20", - "phpunit/phpunit": "^9.5.26", + "laminas/laminas-coding-standard": "~2.5.0", + "laminas/laminas-db": "^2.18", + "laminas/laminas-servicemanager": "^3.22.1", + "phpunit/phpunit": "^10.4.2", "psalm/plugin-phpunit": "^0.18.4", - "symfony/process": "^6.0.11", - "vimeo/psalm": "^5.1" + "symfony/process": "^6.3.4", + "vimeo/psalm": "^5.15" }, "suggest": { - "laminas/laminas-crypt": "^3.8 Crammd5 support in SMTP Auth", - "laminas/laminas-servicemanager": "^3.16 when using SMTP to deliver messages" + "laminas/laminas-servicemanager": "^3.21 when using SMTP to deliver messages" }, "type": "library", "extra": { @@ -3062,25 +3044,25 @@ "type": "community_bridge" } ], - "time": "2022-12-05T18:42:59+00:00" + "time": "2023-11-02T10:32:34+00:00" }, { "name": "laminas/laminas-math", - "version": "3.6.0", + "version": "3.7.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-math.git", - "reference": "5770fc632a3614f5526632a8b70f41b65130460e" + "reference": "3e90445828fd64308de2a600b48c3df051b3b17a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-math/zipball/5770fc632a3614f5526632a8b70f41b65130460e", - "reference": "5770fc632a3614f5526632a8b70f41b65130460e", + "url": "https://api.github.com/repos/laminas/laminas-math/zipball/3e90445828fd64308de2a600b48c3df051b3b17a", + "reference": "3e90445828fd64308de2a600b48c3df051b3b17a", "shasum": "" }, "require": { "ext-mbstring": "*", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "zendframework/zend-math": "*" @@ -3129,25 +3111,25 @@ "type": "community_bridge" } ], - "time": "2022-10-16T14:22:28+00:00" + "time": "2023-10-18T09:53:37+00:00" }, { "name": "laminas/laminas-mime", - "version": "2.11.0", + "version": "2.12.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-mime.git", - "reference": "60ec04b755821c79c1987ce291b44e69f2c0831f" + "reference": "08cc544778829b7d68d27a097885bd6e7130135e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-mime/zipball/60ec04b755821c79c1987ce291b44e69f2c0831f", - "reference": "60ec04b755821c79c1987ce291b44e69f2c0831f", + "url": "https://api.github.com/repos/laminas/laminas-mime/zipball/08cc544778829b7d68d27a097885bd6e7130135e", + "reference": "08cc544778829b7d68d27a097885bd6e7130135e", "shasum": "" }, "require": { "laminas/laminas-stdlib": "^2.7 || ^3.0", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "zendframework/zend-mime": "*" @@ -3190,41 +3172,41 @@ "type": "community_bridge" } ], - "time": "2022-10-18T08:38:15+00:00" + "time": "2023-11-02T16:47:19+00:00" }, { "name": "laminas/laminas-modulemanager", - "version": "2.14.0", + "version": "2.15.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-modulemanager.git", - "reference": "fb0a2c34423f7d3321dd7c42dc5fc4db905a99ac" + "reference": "4c4e6f29f0b1a770c8ce4f30dd3a48eb45ed7d3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-modulemanager/zipball/fb0a2c34423f7d3321dd7c42dc5fc4db905a99ac", - "reference": "fb0a2c34423f7d3321dd7c42dc5fc4db905a99ac", + "url": "https://api.github.com/repos/laminas/laminas-modulemanager/zipball/4c4e6f29f0b1a770c8ce4f30dd3a48eb45ed7d3b", + "reference": "4c4e6f29f0b1a770c8ce4f30dd3a48eb45ed7d3b", "shasum": "" }, "require": { - "brick/varexporter": "^0.3.2", + "brick/varexporter": "^0.3.2 || ^0.4", "laminas/laminas-config": "^3.7", "laminas/laminas-eventmanager": "^3.4", "laminas/laminas-stdlib": "^3.6", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0", + "php": "~8.1.0 || ~8.2.0|| ~8.3.0", "webimpress/safe-writer": "^1.0.2 || ^2.1" }, "conflict": { "zendframework/zend-modulemanager": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "^2.3", - "laminas/laminas-loader": "^2.9.0", - "laminas/laminas-mvc": "^3.5.0", - "laminas/laminas-servicemanager": "^3.19.0", - "phpunit/phpunit": "^9.5.25", - "psalm/plugin-phpunit": "^0.17.0", - "vimeo/psalm": "^4.29" + "laminas/laminas-coding-standard": "^2.5", + "laminas/laminas-loader": "^2.10", + "laminas/laminas-mvc": "^3.6.1", + "laminas/laminas-servicemanager": "^3.22.1", + "phpunit/phpunit": "^10.4.2", + "psalm/plugin-phpunit": "^0.18.4", + "vimeo/psalm": "^5.15" }, "suggest": { "laminas/laminas-console": "Laminas\\Console component", @@ -3262,20 +3244,20 @@ "type": "community_bridge" } ], - "time": "2022-10-28T09:21:04+00:00" + "time": "2023-11-02T09:09:35+00:00" }, { "name": "laminas/laminas-mvc", - "version": "3.6.0", + "version": "3.7.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-mvc.git", - "reference": "c54eaebe3810feaca834cc38ef0a962c89ff2431" + "reference": "3f65447addf487189000e54dc1525cd952951da4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-mvc/zipball/c54eaebe3810feaca834cc38ef0a962c89ff2431", - "reference": "c54eaebe3810feaca834cc38ef0a962c89ff2431", + "url": "https://api.github.com/repos/laminas/laminas-mvc/zipball/3f65447addf487189000e54dc1525cd952951da4", + "reference": "3f65447addf487189000e54dc1525cd952951da4", "shasum": "" }, "require": { @@ -3283,24 +3265,22 @@ "laminas/laminas-eventmanager": "^3.4", "laminas/laminas-http": "^2.15", "laminas/laminas-modulemanager": "^2.8", - "laminas/laminas-router": "^3.5", - "laminas/laminas-servicemanager": "^3.7", + "laminas/laminas-router": "^3.11.1", + "laminas/laminas-servicemanager": "^3.20.0", "laminas/laminas-stdlib": "^3.6", "laminas/laminas-view": "^2.14", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "zendframework/zend-mvc": "*" }, "require-dev": { - "http-interop/http-middleware": "^0.4.1", - "laminas/laminas-coding-standard": "^2.4.0", - "laminas/laminas-json": "^3.3", - "laminas/laminas-psr7bridge": "^1.8", - "laminas/laminas-stratigility": ">=2.0.1 <2.2", - "phpspec/prophecy": "^1.15.0", - "phpspec/prophecy-phpunit": "^2.0.1", - "phpunit/phpunit": "^9.5.25" + "laminas/laminas-coding-standard": "^2.5.0", + "laminas/laminas-json": "^3.6", + "phpspec/prophecy": "^1.17.0", + "phpspec/prophecy-phpunit": "^2.0.2", + "phpunit/phpunit": "^9.6.13", + "webmozart/assert": "^1.11" }, "suggest": { "laminas/laminas-json": "(^2.6.1 || ^3.0) To auto-deserialize JSON body content in AbstractRestfulController extensions, when json_decode is unavailable", @@ -3345,20 +3325,20 @@ "type": "community_bridge" } ], - "time": "2022-12-05T14:02:56+00:00" + "time": "2023-11-14T09:44:53+00:00" }, { "name": "laminas/laminas-oauth", - "version": "2.5.0", + "version": "2.6.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-oauth.git", - "reference": "882daa922f3d4f3c1a4282d5c0afeddabefaadb9" + "reference": "7c82c5c0fc5d7bffb5524ca053988455db0e2ac9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-oauth/zipball/882daa922f3d4f3c1a4282d5c0afeddabefaadb9", - "reference": "882daa922f3d4f3c1a4282d5c0afeddabefaadb9", + "url": "https://api.github.com/repos/laminas/laminas-oauth/zipball/7c82c5c0fc5d7bffb5524ca053988455db0e2ac9", + "reference": "7c82c5c0fc5d7bffb5524ca053988455db0e2ac9", "shasum": "" }, "require": { @@ -3370,7 +3350,7 @@ "laminas/laminas-math": "^3.5", "laminas/laminas-stdlib": "^3.10", "laminas/laminas-uri": "^2.9", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "zendframework/zendoauth": "*" @@ -3407,35 +3387,36 @@ "type": "community_bridge" } ], - "time": "2022-11-17T10:40:56+00:00" + "time": "2023-11-21T14:03:46+00:00" }, { "name": "laminas/laminas-permissions-acl", - "version": "2.13.0", + "version": "2.16.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-permissions-acl.git", - "reference": "a13454dc3013cdcb388c95c418866e93dc781300" + "reference": "9f85ee3b1940cd5a1c4151ca16fdb738c162480b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-permissions-acl/zipball/a13454dc3013cdcb388c95c418866e93dc781300", - "reference": "a13454dc3013cdcb388c95c418866e93dc781300", + "url": "https://api.github.com/repos/laminas/laminas-permissions-acl/zipball/9f85ee3b1940cd5a1c4151ca16fdb738c162480b", + "reference": "9f85ee3b1940cd5a1c4151ca16fdb738c162480b", "shasum": "" }, "require": { - "php": "~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "laminas/laminas-servicemanager": "<3.0", "zendframework/zend-permissions-acl": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.4.0", - "laminas/laminas-servicemanager": "^3.19", - "phpunit/phpunit": "^9.5.26", - "psalm/plugin-phpunit": "^0.18.0", - "vimeo/psalm": "^5.0" + "laminas/laminas-coding-standard": "~2.5.0", + "laminas/laminas-servicemanager": "^3.21", + "phpbench/phpbench": "^1.2.10", + "phpunit/phpunit": "^10.1.3", + "psalm/plugin-phpunit": "^0.18.4", + "vimeo/psalm": "^5.12" }, "suggest": { "laminas/laminas-servicemanager": "To support Laminas\\Permissions\\Acl\\Assertion\\AssertionManager plugin manager usage" @@ -3470,38 +3451,38 @@ "type": "community_bridge" } ], - "time": "2022-12-01T10:29:36+00:00" + "time": "2023-10-18T07:50:34+00:00" }, { "name": "laminas/laminas-recaptcha", - "version": "3.6.0", + "version": "3.7.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-recaptcha.git", - "reference": "ead14136a0ded44d1a72f4885df0f3333065d919" + "reference": "9cb3a9e3ca7af64205590adc649e107bc6ce2bfc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-recaptcha/zipball/ead14136a0ded44d1a72f4885df0f3333065d919", - "reference": "ead14136a0ded44d1a72f4885df0f3333065d919", + "url": "https://api.github.com/repos/laminas/laminas-recaptcha/zipball/9cb3a9e3ca7af64205590adc649e107bc6ce2bfc", + "reference": "9cb3a9e3ca7af64205590adc649e107bc6ce2bfc", "shasum": "" }, "require": { "ext-json": "*", "laminas/laminas-http": "^2.15", "laminas/laminas-stdlib": "^3.10.1", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "zendframework/zendservice-recaptcha": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.4.0", - "laminas/laminas-config": "^3.7", - "laminas/laminas-validator": "^2.15", - "phpunit/phpunit": "^9.5.26", - "psalm/plugin-phpunit": "^0.18.0", - "vimeo/psalm": "^5.0.0" + "laminas/laminas-coding-standard": "~2.5.0", + "laminas/laminas-config": "^3.8", + "laminas/laminas-validator": "^2.29", + "phpunit/phpunit": "^9.5.27", + "psalm/plugin-phpunit": "^0.18.4", + "vimeo/psalm": "^5.4" }, "suggest": { "laminas/laminas-validator": "~2.0, if using ReCaptcha's Mailhide API" @@ -3536,37 +3517,37 @@ "type": "community_bridge" } ], - "time": "2022-12-05T21:28:54+00:00" + "time": "2023-11-08T15:52:14+00:00" }, { "name": "laminas/laminas-router", - "version": "3.11.0", + "version": "3.12.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-router.git", - "reference": "48b6fccd63b9e04e67781c212bf3bedd75c9ca17" + "reference": "e8f1a9ecd63d123c38de3519fe7ca9013da4f8d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-router/zipball/48b6fccd63b9e04e67781c212bf3bedd75c9ca17", - "reference": "48b6fccd63b9e04e67781c212bf3bedd75c9ca17", + "url": "https://api.github.com/repos/laminas/laminas-router/zipball/e8f1a9ecd63d123c38de3519fe7ca9013da4f8d2", + "reference": "e8f1a9ecd63d123c38de3519fe7ca9013da4f8d2", "shasum": "" }, "require": { "laminas/laminas-http": "^2.15", "laminas/laminas-servicemanager": "^3.14.0", "laminas/laminas-stdlib": "^3.10.1", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "zendframework/zend-router": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.4.0", - "laminas/laminas-i18n": "^2.19.0", - "phpunit/phpunit": "^9.5.26", - "psalm/plugin-phpunit": "^0.18.0", - "vimeo/psalm": "^5.0.0" + "laminas/laminas-coding-standard": "~2.5.0", + "laminas/laminas-i18n": "^2.23.1", + "phpunit/phpunit": "^10.4.2", + "psalm/plugin-phpunit": "^0.18.4", + "vimeo/psalm": "^5.15.0" }, "suggest": { "laminas/laminas-i18n": "^2.15.0 if defining translatable HTTP path segments" @@ -3607,35 +3588,35 @@ "type": "community_bridge" } ], - "time": "2022-12-02T17:45:59+00:00" + "time": "2023-11-02T17:21:39+00:00" }, { "name": "laminas/laminas-server", - "version": "2.15.0", + "version": "2.16.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-server.git", - "reference": "7f4862913ab95ea5decd08e6c3717edbb398fde8" + "reference": "659a56f69fc27e787385f3d713c81bc1eae01eb0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-server/zipball/7f4862913ab95ea5decd08e6c3717edbb398fde8", - "reference": "7f4862913ab95ea5decd08e6c3717edbb398fde8", + "url": "https://api.github.com/repos/laminas/laminas-server/zipball/659a56f69fc27e787385f3d713c81bc1eae01eb0", + "reference": "659a56f69fc27e787385f3d713c81bc1eae01eb0", "shasum": "" }, "require": { "laminas/laminas-code": "^4.7.1", "laminas/laminas-stdlib": "^3.3.1", "laminas/laminas-zendframework-bridge": "^1.2.0", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "replace": { "zendframework/zend-server": "^2.8.1" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.4.0", + "laminas/laminas-coding-standard": "~2.5.0", "phpunit/phpunit": "^9.5.5", - "psalm/plugin-phpunit": "^0.15.1", + "psalm/plugin-phpunit": "^0.18.0", "vimeo/psalm": "^4.6.4" }, "type": "library", @@ -3668,30 +3649,30 @@ "type": "community_bridge" } ], - "time": "2022-12-27T17:14:59+00:00" + "time": "2023-11-14T09:53:27+00:00" }, { "name": "laminas/laminas-servicemanager", - "version": "3.20.0", + "version": "3.22.1", "source": { "type": "git", "url": "https://github.com/laminas/laminas-servicemanager.git", - "reference": "bc2c2cbe2dd90db8b9d16b0618f542692b76ab59" + "reference": "de98d297d4743956a0558a6d71616979ff779328" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/bc2c2cbe2dd90db8b9d16b0618f542692b76ab59", - "reference": "bc2c2cbe2dd90db8b9d16b0618f542692b76ab59", + "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/de98d297d4743956a0558a6d71616979ff779328", + "reference": "de98d297d4743956a0558a6d71616979ff779328", "shasum": "" }, "require": { - "laminas/laminas-stdlib": "^3.2.1", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0", + "laminas/laminas-stdlib": "^3.17", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0", "psr/container": "^1.0" }, "conflict": { "ext-psr": "*", - "laminas/laminas-code": "<3.3.1", + "laminas/laminas-code": "<4.10.0", "zendframework/zend-code": "<3.3.1", "zendframework/zend-servicemanager": "*" }, @@ -3703,18 +3684,18 @@ }, "require-dev": { "composer/package-versions-deprecated": "^1.11.99.5", - "laminas/laminas-coding-standard": "~2.4.0", + "friendsofphp/proxy-manager-lts": "^1.0.14", + "laminas/laminas-code": "^4.10.0", + "laminas/laminas-coding-standard": "~2.5.0", "laminas/laminas-container-config-test": "^0.8", - "laminas/laminas-dependency-plugin": "^2.2", - "mikey179/vfsstream": "^1.6.11@alpha", - "ocramius/proxy-manager": "^2.14.1", - "phpbench/phpbench": "^1.2.7", - "phpunit/phpunit": "^9.5.26", - "psalm/plugin-phpunit": "^0.18.0", - "vimeo/psalm": "^5.0.0" + "mikey179/vfsstream": "^1.6.11", + "phpbench/phpbench": "^1.2.9", + "phpunit/phpunit": "^10.4", + "psalm/plugin-phpunit": "^0.18.4", + "vimeo/psalm": "^5.8.0" }, "suggest": { - "ocramius/proxy-manager": "ProxyManager ^2.1.1 to handle lazy initialization of services" + "friendsofphp/proxy-manager-lts": "ProxyManager ^2.1.1 to handle lazy initialization of services" }, "bin": [ "bin/generate-deps-for-config-factory", @@ -3758,42 +3739,42 @@ "type": "community_bridge" } ], - "time": "2022-12-01T17:03:38+00:00" + "time": "2023-10-24T11:19:47+00:00" }, { "name": "laminas/laminas-session", - "version": "2.16.0", + "version": "2.17.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-session.git", - "reference": "9c845a0361625d5775cad6f043716196201ad41f" + "reference": "2f255f1b4349a9f330ba1a26dcf4e2773a6a8226" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-session/zipball/9c845a0361625d5775cad6f043716196201ad41f", - "reference": "9c845a0361625d5775cad6f043716196201ad41f", + "url": "https://api.github.com/repos/laminas/laminas-session/zipball/2f255f1b4349a9f330ba1a26dcf4e2773a6a8226", + "reference": "2f255f1b4349a9f330ba1a26dcf4e2773a6a8226", "shasum": "" }, "require": { - "laminas/laminas-eventmanager": "^3.5", - "laminas/laminas-servicemanager": "^3.15.1", - "laminas/laminas-stdlib": "^3.10.1", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0" + "laminas/laminas-eventmanager": "^3.12", + "laminas/laminas-servicemanager": "^3.22", + "laminas/laminas-stdlib": "^3.18", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "zendframework/zend-session": "*" }, "require-dev": { - "laminas/laminas-cache": "^3.8", - "laminas/laminas-cache-storage-adapter-memory": "^2.2", - "laminas/laminas-coding-standard": "~2.4.0", - "laminas/laminas-db": "^2.15", - "laminas/laminas-http": "^2.17.1", - "laminas/laminas-validator": "^2.28", - "mongodb/mongodb": "~1.13.0", - "phpunit/phpunit": "^9.5.26", - "psalm/plugin-phpunit": "^0.18.0", - "vimeo/psalm": "^5.0" + "laminas/laminas-cache": "^3.10.1", + "laminas/laminas-cache-storage-adapter-memory": "^2.3", + "laminas/laminas-coding-standard": "~2.5.0", + "laminas/laminas-db": "^2.18.0", + "laminas/laminas-http": "^2.18", + "laminas/laminas-validator": "^2.30.1", + "mongodb/mongodb": "~1.16.0", + "phpunit/phpunit": "^9.6.13", + "psalm/plugin-phpunit": "^0.18.4", + "vimeo/psalm": "^5.15" }, "suggest": { "laminas/laminas-cache": "Laminas\\Cache component", @@ -3839,20 +3820,20 @@ "type": "community_bridge" } ], - "time": "2022-12-04T11:15:36+00:00" + "time": "2023-11-10T12:20:40+00:00" }, { "name": "laminas/laminas-soap", - "version": "2.12.0", + "version": "2.13.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-soap.git", - "reference": "127de3d876b992a6327c274b15df6de26d7aa712" + "reference": "68fdb11ec50eb8cf73ca266643c681d36c884b7f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-soap/zipball/127de3d876b992a6327c274b15df6de26d7aa712", - "reference": "127de3d876b992a6327c274b15df6de26d7aa712", + "url": "https://api.github.com/repos/laminas/laminas-soap/zipball/68fdb11ec50eb8cf73ca266643c681d36c884b7f", + "reference": "68fdb11ec50eb8cf73ca266643c681d36c884b7f", "shasum": "" }, "require": { @@ -3861,7 +3842,7 @@ "laminas/laminas-server": "^2.15", "laminas/laminas-stdlib": "^3.16", "laminas/laminas-uri": "^2.10", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "laminas/laminas-code": "<4.4", @@ -3909,34 +3890,34 @@ "type": "community_bridge" } ], - "time": "2023-01-09T13:58:49+00:00" + "time": "2023-10-18T09:49:25+00:00" }, { "name": "laminas/laminas-stdlib", - "version": "3.16.1", + "version": "3.18.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-stdlib.git", - "reference": "f4f773641807c7ccee59b758bfe4ac4ba33ecb17" + "reference": "e85b29076c6216e7fc98e72b42dbe1bbc3b95ecf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/f4f773641807c7ccee59b758bfe4ac4ba33ecb17", - "reference": "f4f773641807c7ccee59b758bfe4ac4ba33ecb17", + "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/e85b29076c6216e7fc98e72b42dbe1bbc3b95ecf", + "reference": "e85b29076c6216e7fc98e72b42dbe1bbc3b95ecf", "shasum": "" }, "require": { - "php": "~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "zendframework/zend-stdlib": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "^2.4.0", - "phpbench/phpbench": "^1.2.7", - "phpunit/phpunit": "^9.5.26", - "psalm/plugin-phpunit": "^0.18.0", - "vimeo/psalm": "^5.0.0" + "laminas/laminas-coding-standard": "^2.5", + "phpbench/phpbench": "^1.2.14", + "phpunit/phpunit": "^10.3.3", + "psalm/plugin-phpunit": "^0.18.4", + "vimeo/psalm": "^5.15.0" }, "type": "library", "autoload": { @@ -3968,32 +3949,32 @@ "type": "community_bridge" } ], - "time": "2022-12-03T18:48:01+00:00" + "time": "2023-09-19T10:15:21+00:00" }, { "name": "laminas/laminas-text", - "version": "2.10.0", + "version": "2.11.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-text.git", - "reference": "40f7acdb284d41553d32db811e704d6e15e415b4" + "reference": "d799f3ccb3547e9e6ab313447138bae7009c7cc7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-text/zipball/40f7acdb284d41553d32db811e704d6e15e415b4", - "reference": "40f7acdb284d41553d32db811e704d6e15e415b4", + "url": "https://api.github.com/repos/laminas/laminas-text/zipball/d799f3ccb3547e9e6ab313447138bae7009c7cc7", + "reference": "d799f3ccb3547e9e6ab313447138bae7009c7cc7", "shasum": "" }, "require": { - "laminas/laminas-servicemanager": "^3.19.0", + "laminas/laminas-servicemanager": "^3.22.0", "laminas/laminas-stdlib": "^3.7.1", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "zendframework/zend-text": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.4.0", + "laminas/laminas-coding-standard": "~2.5.0", "phpunit/phpunit": "^9.5", "psalm/plugin-phpunit": "^0.18.4", "vimeo/psalm": "^5.1" @@ -4028,26 +4009,26 @@ "type": "community_bridge" } ], - "time": "2022-12-11T15:36:27+00:00" + "time": "2023-11-07T16:45:45+00:00" }, { "name": "laminas/laminas-uri", - "version": "2.10.0", + "version": "2.11.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-uri.git", - "reference": "663b050294945c7345cc3a61f3ca661d5f9e1f80" + "reference": "e662c685125061d3115906e5eb30f966842cc226" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-uri/zipball/663b050294945c7345cc3a61f3ca661d5f9e1f80", - "reference": "663b050294945c7345cc3a61f3ca661d5f9e1f80", + "url": "https://api.github.com/repos/laminas/laminas-uri/zipball/e662c685125061d3115906e5eb30f966842cc226", + "reference": "e662c685125061d3115906e5eb30f966842cc226", "shasum": "" }, "require": { "laminas/laminas-escaper": "^2.9", - "laminas/laminas-validator": "^2.15", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0" + "laminas/laminas-validator": "^2.39", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "zendframework/zend-uri": "*" @@ -4086,44 +4067,43 @@ "type": "community_bridge" } ], - "time": "2022-10-16T15:02:45+00:00" + "time": "2023-10-18T09:56:55+00:00" }, { "name": "laminas/laminas-validator", - "version": "2.29.0", + "version": "2.43.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-validator.git", - "reference": "e40ee8d86cc1907083e273bfd6ed8b6dde2d9850" + "reference": "8f6c2f5753dec64df924a86d18036113f3140f2b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/e40ee8d86cc1907083e273bfd6ed8b6dde2d9850", - "reference": "e40ee8d86cc1907083e273bfd6ed8b6dde2d9850", + "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/8f6c2f5753dec64df924a86d18036113f3140f2b", + "reference": "8f6c2f5753dec64df924a86d18036113f3140f2b", "shasum": "" }, "require": { - "laminas/laminas-servicemanager": "^3.12.0", + "laminas/laminas-servicemanager": "^3.21.0", "laminas/laminas-stdlib": "^3.13", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0", - "psr/http-message": "^1.0.1" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0", + "psr/http-message": "^1.0.1 || ^2.0.0" }, "conflict": { "zendframework/zend-validator": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "^2.4.0", - "laminas/laminas-db": "^2.16", - "laminas/laminas-filter": "^2.28.1", - "laminas/laminas-http": "^2.18", - "laminas/laminas-i18n": "^2.19", - "laminas/laminas-session": "^2.15", + "laminas/laminas-coding-standard": "^2.5", + "laminas/laminas-db": "^2.18", + "laminas/laminas-filter": "^2.32", + "laminas/laminas-i18n": "^2.23", + "laminas/laminas-session": "^2.16", "laminas/laminas-uri": "^2.10.0", - "phpunit/phpunit": "^9.5.26", - "psalm/plugin-phpunit": "^0.18.3", - "psr/http-client": "^1.0.1", - "psr/http-factory": "^1.0.1", - "vimeo/psalm": "^5.0" + "phpunit/phpunit": "^10.3.3", + "psalm/plugin-phpunit": "^0.18.4", + "psr/http-client": "^1.0.2", + "psr/http-factory": "^1.0.2", + "vimeo/psalm": "^5.15" }, "suggest": { "laminas/laminas-db": "Laminas\\Db component, required by the (No)RecordExists validator", @@ -4171,20 +4151,20 @@ "type": "community_bridge" } ], - "time": "2022-12-13T22:53:38+00:00" + "time": "2023-11-20T01:23:15+00:00" }, { "name": "laminas/laminas-view", - "version": "2.25.0", + "version": "2.32.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-view.git", - "reference": "77a4b6d78445ae2f30625c5af09a05ad4e4434eb" + "reference": "399fa0fb896f06663bba8fe7795722785339b684" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-view/zipball/77a4b6d78445ae2f30625c5af09a05ad4e4434eb", - "reference": "77a4b6d78445ae2f30625c5af09a05ad4e4434eb", + "url": "https://api.github.com/repos/laminas/laminas-view/zipball/399fa0fb896f06663bba8fe7795722785339b684", + "reference": "399fa0fb896f06663bba8fe7795722785339b684", "shasum": "" }, "require": { @@ -4194,9 +4174,9 @@ "laminas/laminas-escaper": "^2.5", "laminas/laminas-eventmanager": "^3.4", "laminas/laminas-json": "^3.3", - "laminas/laminas-servicemanager": "^3.14.0", + "laminas/laminas-servicemanager": "^3.21.0", "laminas/laminas-stdlib": "^3.10.1", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0", "psr/container": "^1 || ^2" }, "conflict": { @@ -4206,25 +4186,24 @@ "zendframework/zend-view": "*" }, "require-dev": { - "laminas/laminas-authentication": "^2.13", - "laminas/laminas-coding-standard": "~2.4.0", - "laminas/laminas-console": "^2.8", - "laminas/laminas-feed": "^2.19", - "laminas/laminas-filter": "^2.25", - "laminas/laminas-http": "^2.17", - "laminas/laminas-i18n": "^2.19", - "laminas/laminas-modulemanager": "^2.14", - "laminas/laminas-mvc": "^3.5", - "laminas/laminas-mvc-i18n": "^1.6", + "laminas/laminas-authentication": "^2.15", + "laminas/laminas-coding-standard": "~2.5.0", + "laminas/laminas-feed": "^2.22", + "laminas/laminas-filter": "^2.32", + "laminas/laminas-http": "^2.19", + "laminas/laminas-i18n": "^2.23.1", + "laminas/laminas-modulemanager": "^2.15", + "laminas/laminas-mvc": "^3.6.1", + "laminas/laminas-mvc-i18n": "^1.7", "laminas/laminas-mvc-plugin-flashmessenger": "^1.9", - "laminas/laminas-navigation": "^2.16", - "laminas/laminas-paginator": "^2.15", - "laminas/laminas-permissions-acl": "^2.12", - "laminas/laminas-router": "^3.10", - "laminas/laminas-uri": "^2.10", - "phpunit/phpunit": "^9.5.26", - "psalm/plugin-phpunit": "^0.18.3", - "vimeo/psalm": "^4.30" + "laminas/laminas-navigation": "^2.18.1", + "laminas/laminas-paginator": "^2.17", + "laminas/laminas-permissions-acl": "^2.16", + "laminas/laminas-router": "^3.12.0", + "laminas/laminas-uri": "^2.11", + "phpunit/phpunit": "^10.4.2", + "psalm/plugin-phpunit": "^0.18.4", + "vimeo/psalm": "^5.15" }, "suggest": { "laminas/laminas-authentication": "Laminas\\Authentication component", @@ -4272,30 +4251,30 @@ "type": "community_bridge" } ], - "time": "2022-11-07T08:01:13+00:00" + "time": "2023-11-03T13:48:07+00:00" }, { "name": "laminas/laminas-zendframework-bridge", - "version": "1.7.0", + "version": "1.8.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-zendframework-bridge.git", - "reference": "5ef52e26392777a26dbb8f20fe24f91b406459f6" + "reference": "eb0d96c708b92177a92bc2239543d3ed523452c6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/5ef52e26392777a26dbb8f20fe24f91b406459f6", - "reference": "5ef52e26392777a26dbb8f20fe24f91b406459f6", + "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/eb0d96c708b92177a92bc2239543d3ed523452c6", + "reference": "eb0d96c708b92177a92bc2239543d3ed523452c6", "shasum": "" }, "require": { - "php": "~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "require-dev": { - "phpunit/phpunit": "^9.5.26", + "phpunit/phpunit": "^10.4", "psalm/plugin-phpunit": "^0.18.0", "squizlabs/php_codesniffer": "^3.7.1", - "vimeo/psalm": "^4.29.0" + "vimeo/psalm": "^5.16.0" }, "type": "library", "extra": { @@ -4334,7 +4313,8 @@ "type": "community_bridge" } ], - "time": "2022-12-12T11:44:10+00:00" + "abandoned": true, + "time": "2023-11-24T13:56:19+00:00" }, { "name": "league/flysystem", @@ -4493,26 +4473,26 @@ }, { "name": "league/mime-type-detection", - "version": "1.11.0", + "version": "1.14.0", "source": { "type": "git", "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd" + "reference": "b6a5854368533df0295c5761a0253656a2e52d9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ff6248ea87a9f116e78edd6002e39e5128a0d4dd", - "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/b6a5854368533df0295c5761a0253656a2e52d9e", + "reference": "b6a5854368533df0295c5761a0253656a2e52d9e", "shasum": "" }, "require": { "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" + "php": "^7.4 || ^8.0" }, "require-dev": { "friendsofphp/php-cs-fixer": "^3.2", "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" + "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0" }, "type": "library", "autoload": { @@ -4533,7 +4513,7 @@ "description": "Mime-type detection for Flysystem", "support": { "issues": "https://github.com/thephpleague/mime-type-detection/issues", - "source": "https://github.com/thephpleague/mime-type-detection/tree/1.11.0" + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.14.0" }, "funding": [ { @@ -4545,7 +4525,7 @@ "type": "tidelift" } ], - "time": "2022-04-17T13:12:02+00:00" + "time": "2023-10-17T14:13:20+00:00" }, { "name": "magento/composer", @@ -4589,16 +4569,16 @@ }, { "name": "magento/composer-dependency-version-audit-plugin", - "version": "0.1.1", + "version": "0.1.5", "source": { "type": "git", "url": "https://github.com/magento/composer-dependency-version-audit-plugin.git", - "reference": "2e846ae24a897163dbb610c2067ddd803175e9a2" + "reference": "3350798d52c96bb89a17c955d3e0fce00fcaead1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/magento/composer-dependency-version-audit-plugin/zipball/2e846ae24a897163dbb610c2067ddd803175e9a2", - "reference": "2e846ae24a897163dbb610c2067ddd803175e9a2", + "url": "https://api.github.com/repos/magento/composer-dependency-version-audit-plugin/zipball/3350798d52c96bb89a17c955d3e0fce00fcaead1", + "reference": "3350798d52c96bb89a17c955d3e0fce00fcaead1", "shasum": "" }, "require": { @@ -4619,15 +4599,14 @@ }, "notification-url": "https://packagist.org/downloads/", "license": [ - "OSL-3.0", - "AFL-3.0" + "OSL-3.0" ], "description": "Validating packages through a composer plugin", "support": { "issues": "https://github.com/magento/composer-dependency-version-audit-plugin/issues", - "source": "https://github.com/magento/composer-dependency-version-audit-plugin/tree/0.1.1" + "source": "https://github.com/magento/composer-dependency-version-audit-plugin/tree/0.1.5" }, - "time": "2021-06-14T15:16:11+00:00" + "time": "2023-04-12T17:04:39+00:00" }, { "name": "magento/magento-composer-installer", @@ -4764,16 +4743,16 @@ }, { "name": "magento/zend-db", - "version": "1.16.0", + "version": "1.16.1", "source": { "type": "git", "url": "https://github.com/magento/magento-zend-db.git", - "reference": "def36bc00e49cf0056a59192e52f2e83077b933c" + "reference": "475addb06c0a417b2fd18effe5966bd3aa929b7b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/magento/magento-zend-db/zipball/def36bc00e49cf0056a59192e52f2e83077b933c", - "reference": "def36bc00e49cf0056a59192e52f2e83077b933c", + "url": "https://api.github.com/repos/magento/magento-zend-db/zipball/475addb06c0a417b2fd18effe5966bd3aa929b7b", + "reference": "475addb06c0a417b2fd18effe5966bd3aa929b7b", "shasum": "" }, "require": { @@ -4810,9 +4789,9 @@ ], "support": { "issues": "https://github.com/magento/magento-zend-db/issues", - "source": "https://github.com/magento/magento-zend-db/tree/1.16.0" + "source": "https://github.com/magento/magento-zend-db/tree/1.16.1" }, - "time": "2022-09-22T18:19:14+00:00" + "time": "2023-08-25T13:52:30+00:00" }, { "name": "magento/zend-exception", @@ -4866,16 +4845,16 @@ }, { "name": "magento/zend-loader", - "version": "1.16.0", + "version": "1.16.1", "source": { "type": "git", "url": "https://github.com/magento/magento-zend-loader.git", - "reference": "200786c8009d668917a42250ed72ebf8c4c958d2" + "reference": "7eca22970a6b7cdaa3d3a6a6d117e4c0d3bef5e9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/magento/magento-zend-loader/zipball/200786c8009d668917a42250ed72ebf8c4c958d2", - "reference": "200786c8009d668917a42250ed72ebf8c4c958d2", + "url": "https://api.github.com/repos/magento/magento-zend-loader/zipball/7eca22970a6b7cdaa3d3a6a6d117e4c0d3bef5e9", + "reference": "7eca22970a6b7cdaa3d3a6a6d117e4c0d3bef5e9", "shasum": "" }, "require": { @@ -4911,9 +4890,9 @@ ], "support": { "issues": "https://github.com/magento/magento-zend-loader/issues", - "source": "https://github.com/magento/magento-zend-loader/tree/1.16.0" + "source": "https://github.com/magento/magento-zend-loader/tree/1.16.1" }, - "time": "2022-09-22T19:00:04+00:00" + "time": "2023-08-25T13:52:37+00:00" }, { "name": "magento/zend-log", @@ -5020,16 +4999,16 @@ }, { "name": "magento/zend-pdf", - "version": "1.16.1", + "version": "1.16.3", "source": { "type": "git", "url": "https://github.com/magento/magento-zend-pdf.git", - "reference": "e69a4f0ab33ea1355701cebe6cb64bc02e642b33" + "reference": "4426cdf87d10ad9a45e21da1468665a97d01ef79" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/magento/magento-zend-pdf/zipball/e69a4f0ab33ea1355701cebe6cb64bc02e642b33", - "reference": "e69a4f0ab33ea1355701cebe6cb64bc02e642b33", + "url": "https://api.github.com/repos/magento/magento-zend-pdf/zipball/4426cdf87d10ad9a45e21da1468665a97d01ef79", + "reference": "4426cdf87d10ad9a45e21da1468665a97d01ef79", "shasum": "" }, "require": { @@ -5071,22 +5050,22 @@ ], "support": { "issues": "https://github.com/magento/magento-zend-pdf/issues", - "source": "https://github.com/magento/magento-zend-pdf/tree/1.16.1" + "source": "https://github.com/magento/magento-zend-pdf/tree/1.16.3" }, - "time": "2023-01-26T16:40:05+00:00" + "time": "2023-08-25T12:52:21+00:00" }, { "name": "monolog/monolog", - "version": "2.9.1", + "version": "2.9.2", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "f259e2b15fb95494c83f52d3caad003bbf5ffaa1" + "reference": "437cb3628f4cf6042cc10ae97fc2b8472e48ca1f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f259e2b15fb95494c83f52d3caad003bbf5ffaa1", - "reference": "f259e2b15fb95494c83f52d3caad003bbf5ffaa1", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/437cb3628f4cf6042cc10ae97fc2b8472e48ca1f", + "reference": "437cb3628f4cf6042cc10ae97fc2b8472e48ca1f", "shasum": "" }, "require": { @@ -5163,7 +5142,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/2.9.1" + "source": "https://github.com/Seldaek/monolog/tree/2.9.2" }, "funding": [ { @@ -5175,29 +5154,29 @@ "type": "tidelift" } ], - "time": "2023-02-06T13:44:46+00:00" + "time": "2023-10-27T15:25:26+00:00" }, { "name": "mtdowling/jmespath.php", - "version": "2.6.1", + "version": "2.7.0", "source": { "type": "git", "url": "https://github.com/jmespath/jmespath.php.git", - "reference": "9b87907a81b87bc76d19a7fb2d61e61486ee9edb" + "reference": "bbb69a935c2cbb0c03d7f481a238027430f6440b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/9b87907a81b87bc76d19a7fb2d61e61486ee9edb", - "reference": "9b87907a81b87bc76d19a7fb2d61e61486ee9edb", + "url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/bbb69a935c2cbb0c03d7f481a238027430f6440b", + "reference": "bbb69a935c2cbb0c03d7f481a238027430f6440b", "shasum": "" }, "require": { - "php": "^5.4 || ^7.0 || ^8.0", + "php": "^7.2.5 || ^8.0", "symfony/polyfill-mbstring": "^1.17" }, "require-dev": { - "composer/xdebug-handler": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^7.5.15" + "composer/xdebug-handler": "^3.0.3", + "phpunit/phpunit": "^8.5.33" }, "bin": [ "bin/jp.php" @@ -5205,7 +5184,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "2.7-dev" } }, "autoload": { @@ -5221,6 +5200,11 @@ "MIT" ], "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, { "name": "Michael Dowling", "email": "mtdowling@gmail.com", @@ -5234,22 +5218,22 @@ ], "support": { "issues": "https://github.com/jmespath/jmespath.php/issues", - "source": "https://github.com/jmespath/jmespath.php/tree/2.6.1" + "source": "https://github.com/jmespath/jmespath.php/tree/2.7.0" }, - "time": "2021-06-14T00:11:39+00:00" + "time": "2023-08-25T10:54:48+00:00" }, { "name": "nikic/php-parser", - "version": "v4.16.0", + "version": "v4.17.1", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "19526a33fb561ef417e822e85f08a00db4059c17" + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/19526a33fb561ef417e822e85f08a00db4059c17", - "reference": "19526a33fb561ef417e822e85f08a00db4059c17", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", "shasum": "" }, "require": { @@ -5290,9 +5274,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.16.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1" }, - "time": "2023-06-25T14:52:30+00:00" + "time": "2023-08-13T19:53:39+00:00" }, { "name": "opensearch-project/opensearch-php", @@ -5477,29 +5461,29 @@ }, { "name": "pelago/emogrifier", - "version": "v7.0.0", + "version": "v7.1.0", "source": { "type": "git", "url": "https://github.com/MyIntervals/emogrifier.git", - "reference": "547b8c814794aec871e3c98b1c712f416755f4eb" + "reference": "1945460af992d0c14ad08e7b4567d7d0dd3a2f94" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/MyIntervals/emogrifier/zipball/547b8c814794aec871e3c98b1c712f416755f4eb", - "reference": "547b8c814794aec871e3c98b1c712f416755f4eb", + "url": "https://api.github.com/repos/MyIntervals/emogrifier/zipball/1945460af992d0c14ad08e7b4567d7d0dd3a2f94", + "reference": "1945460af992d0c14ad08e7b4567d7d0dd3a2f94", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", - "php": "~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0", + "php": "~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", "sabberworm/php-css-parser": "^8.4.0", "symfony/css-selector": "^4.4.23 || ^5.4.0 || ^6.0.0" }, "require-dev": { - "php-parallel-lint/php-parallel-lint": "^1.3.2", - "phpunit/phpunit": "^9.5.25", - "rawr/cross-data-providers": "^2.3.0" + "php-parallel-lint/php-parallel-lint": "1.3.2", + "phpunit/phpunit": "9.6.11", + "rawr/cross-data-providers": "2.4.0" }, "type": "library", "extra": { @@ -5551,26 +5535,26 @@ "issues": "https://github.com/MyIntervals/emogrifier/issues", "source": "https://github.com/MyIntervals/emogrifier" }, - "time": "2022-11-01T17:53:29+00:00" + "time": "2023-10-20T15:34:30+00:00" }, { "name": "php-amqplib/php-amqplib", - "version": "v3.5.4", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/php-amqplib/php-amqplib.git", - "reference": "1aecbd182b35eb039667c50d7d92d71f105be779" + "reference": "fb84e99589de0904a25861451b0552f806284ee5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-amqplib/php-amqplib/zipball/1aecbd182b35eb039667c50d7d92d71f105be779", - "reference": "1aecbd182b35eb039667c50d7d92d71f105be779", + "url": "https://api.github.com/repos/php-amqplib/php-amqplib/zipball/fb84e99589de0904a25861451b0552f806284ee5", + "reference": "fb84e99589de0904a25861451b0552f806284ee5", "shasum": "" }, "require": { "ext-mbstring": "*", "ext-sockets": "*", - "php": "^7.1||^8.0", + "php": "^7.2||^8.0", "phpseclib/phpseclib": "^2.0|^3.0" }, "conflict": { @@ -5630,22 +5614,209 @@ ], "support": { "issues": "https://github.com/php-amqplib/php-amqplib/issues", - "source": "https://github.com/php-amqplib/php-amqplib/tree/v3.5.4" + "source": "https://github.com/php-amqplib/php-amqplib/tree/v3.6.0" + }, + "time": "2023-10-22T15:02:02+00:00" + }, + { + "name": "php-http/discovery", + "version": "1.19.1", + "source": { + "type": "git", + "url": "https://github.com/php-http/discovery.git", + "reference": "57f3de01d32085fea20865f9b16fb0e69347c39e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/discovery/zipball/57f3de01d32085fea20865f9b16fb0e69347c39e", + "reference": "57f3de01d32085fea20865f9b16fb0e69347c39e", + "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", + "symfony/phpunit-bridge": "^6.2" + }, + "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.19.1" + }, + "time": "2023-07-11T07:02:26+00:00" + }, + { + "name": "php-http/httplug", + "version": "2.4.0", + "source": { + "type": "git", + "url": "https://github.com/php-http/httplug.git", + "reference": "625ad742c360c8ac580fcc647a1541d29e257f67" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/httplug/zipball/625ad742c360c8ac580fcc647a1541d29e257f67", + "reference": "625ad742c360c8ac580fcc647a1541d29e257f67", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0", + "php-http/promise": "^1.1", + "psr/http-client": "^1.0", + "psr/http-message": "^1.0 || ^2.0" + }, + "require-dev": { + "friends-of-phpspec/phpspec-code-coverage": "^4.1 || ^5.0 || ^6.0", + "phpspec/phpspec": "^5.1 || ^6.0 || ^7.0" }, - "time": "2023-07-01T11:25:08+00:00" + "type": "library", + "autoload": { + "psr-4": { + "Http\\Client\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Eric GELOEN", + "email": "geloen.eric@gmail.com" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" + } + ], + "description": "HTTPlug, the HTTP client abstraction for PHP", + "homepage": "http://httplug.io", + "keywords": [ + "client", + "http" + ], + "support": { + "issues": "https://github.com/php-http/httplug/issues", + "source": "https://github.com/php-http/httplug/tree/2.4.0" + }, + "time": "2023-04-14T15:10:03+00:00" + }, + { + "name": "php-http/promise", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/php-http/promise.git", + "reference": "44a67cb59f708f826f3bec35f22030b3edb90119" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/promise/zipball/44a67cb59f708f826f3bec35f22030b3edb90119", + "reference": "44a67cb59f708f826f3bec35f22030b3edb90119", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "friends-of-phpspec/phpspec-code-coverage": "^4.3.2 || ^6.3", + "phpspec/phpspec": "^5.1.2 || ^6.2 || ^7.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Http\\Promise\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Joel Wurtz", + "email": "joel.wurtz@gmail.com" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + } + ], + "description": "Promise used for asynchronous HTTP requests", + "homepage": "http://httplug.io", + "keywords": [ + "promise" + ], + "support": { + "issues": "https://github.com/php-http/promise/issues", + "source": "https://github.com/php-http/promise/tree/1.2.1" + }, + "time": "2023-11-08T12:57:08+00:00" }, { "name": "phpseclib/mcrypt_compat", - "version": "2.0.3", + "version": "2.0.4", "source": { "type": "git", "url": "https://github.com/phpseclib/mcrypt_compat.git", - "reference": "8a9f9f05b25fedce2ded16fa6008c1a6e4290603" + "reference": "6505669343743daf290b7d7b6b7105f85fd9988f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpseclib/mcrypt_compat/zipball/8a9f9f05b25fedce2ded16fa6008c1a6e4290603", - "reference": "8a9f9f05b25fedce2ded16fa6008c1a6e4290603", + "url": "https://api.github.com/repos/phpseclib/mcrypt_compat/zipball/6505669343743daf290b7d7b6b7105f85fd9988f", + "reference": "6505669343743daf290b7d7b6b7105f85fd9988f", "shasum": "" }, "require": { @@ -5700,20 +5871,20 @@ "type": "tidelift" } ], - "time": "2022-03-27T15:58:45+00:00" + "time": "2022-12-19T00:32:45+00:00" }, { "name": "phpseclib/phpseclib", - "version": "3.0.21", + "version": "3.0.34", "source": { "type": "git", "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "4580645d3fc05c189024eb3b834c6c1e4f0f30a1" + "reference": "56c79f16a6ae17e42089c06a2144467acc35348a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/4580645d3fc05c189024eb3b834c6c1e4f0f30a1", - "reference": "4580645d3fc05c189024eb3b834c6c1e4f0f30a1", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/56c79f16a6ae17e42089c06a2144467acc35348a", + "reference": "56c79f16a6ae17e42089c06a2144467acc35348a", "shasum": "" }, "require": { @@ -5794,7 +5965,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.34" }, "funding": [ { @@ -5810,7 +5981,7 @@ "type": "tidelift" } ], - "time": "2023-07-09T15:24:48+00:00" + "time": "2023-11-27T11:13:31+00:00" }, { "name": "psr/cache", @@ -5861,6 +6032,54 @@ }, "time": "2021-02-03T23:26:27+00:00" }, + { + "name": "psr/clock", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Clock\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", + "keywords": [ + "clock", + "now", + "psr", + "psr-20", + "time" + ], + "support": { + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" + }, + "time": "2022-11-25T14:36:26+00:00" + }, { "name": "psr/container", "version": "1.1.2", @@ -5961,16 +6180,16 @@ }, { "name": "psr/http-client", - "version": "1.0.2", + "version": "1.0.3", "source": { "type": "git", "url": "https://github.com/php-fig/http-client.git", - "reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31" + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/0955afe48220520692d2d09f7ab7e0f93ffd6a31", - "reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", "shasum": "" }, "require": { @@ -6007,9 +6226,9 @@ "psr-18" ], "support": { - "source": "https://github.com/php-fig/http-client/tree/1.0.2" + "source": "https://github.com/php-fig/http-client" }, - "time": "2023-04-10T20:12:12+00:00" + "time": "2023-09-23T14:17:50+00:00" }, { "name": "psr/http-factory", @@ -6304,16 +6523,16 @@ }, { "name": "ramsey/uuid", - "version": "4.7.4", + "version": "4.7.5", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "60a4c63ab724854332900504274f6150ff26d286" + "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/60a4c63ab724854332900504274f6150ff26d286", - "reference": "60a4c63ab724854332900504274f6150ff26d286", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e", + "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e", "shasum": "" }, "require": { @@ -6380,7 +6599,7 @@ ], "support": { "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.7.4" + "source": "https://github.com/ramsey/uuid/tree/4.7.5" }, "funding": [ { @@ -6392,27 +6611,27 @@ "type": "tidelift" } ], - "time": "2023-04-15T23:01:58+00:00" + "time": "2023-11-08T05:53:05+00:00" }, { "name": "react/promise", - "version": "v2.10.0", + "version": "v2.11.0", "source": { "type": "git", "url": "https://github.com/reactphp/promise.git", - "reference": "f913fb8cceba1e6644b7b90c4bfb678ed8a3ef38" + "reference": "1a8460931ea36dc5c76838fec5734d55c88c6831" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/promise/zipball/f913fb8cceba1e6644b7b90c4bfb678ed8a3ef38", - "reference": "f913fb8cceba1e6644b7b90c4bfb678ed8a3ef38", + "url": "https://api.github.com/repos/reactphp/promise/zipball/1a8460931ea36dc5c76838fec5734d55c88c6831", + "reference": "1a8460931ea36dc5c76838fec5734d55c88c6831", "shasum": "" }, "require": { "php": ">=5.4.0" }, "require-dev": { - "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.36" + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" }, "type": "library", "autoload": { @@ -6456,7 +6675,7 @@ ], "support": { "issues": "https://github.com/reactphp/promise/issues", - "source": "https://github.com/reactphp/promise/tree/v2.10.0" + "source": "https://github.com/reactphp/promise/tree/v2.11.0" }, "funding": [ { @@ -6464,7 +6683,7 @@ "type": "open_collective" } ], - "time": "2023-05-02T15:15:43+00:00" + "time": "2023-11-16T16:16:50+00:00" }, { "name": "sabberworm/php-css-parser", @@ -6633,16 +6852,16 @@ }, { "name": "seld/signal-handler", - "version": "2.0.1", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/Seldaek/signal-handler.git", - "reference": "f69d119511dc0360440cdbdaa71829c149b7be75" + "reference": "04a6112e883ad76c0ada8e4a9f7520bbfdb6bb98" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/signal-handler/zipball/f69d119511dc0360440cdbdaa71829c149b7be75", - "reference": "f69d119511dc0360440cdbdaa71829c149b7be75", + "url": "https://api.github.com/repos/Seldaek/signal-handler/zipball/04a6112e883ad76c0ada8e4a9f7520bbfdb6bb98", + "reference": "04a6112e883ad76c0ada8e4a9f7520bbfdb6bb98", "shasum": "" }, "require": { @@ -6688,9 +6907,9 @@ ], "support": { "issues": "https://github.com/Seldaek/signal-handler/issues", - "source": "https://github.com/Seldaek/signal-handler/tree/2.0.1" + "source": "https://github.com/Seldaek/signal-handler/tree/2.0.2" }, - "time": "2022-07-20T18:31:45+00:00" + "time": "2023-09-03T09:24:00+00:00" }, { "name": "spomky-labs/aes-key-wrap", @@ -6769,47 +6988,153 @@ "time": "2021-12-08T20:36:59+00:00" }, { - "name": "symfony/config", - "version": "v5.4.11", + "name": "spomky-labs/pki-framework", + "version": "1.1.0", "source": { "type": "git", - "url": "https://github.com/symfony/config.git", - "reference": "ec79e03125c1d2477e43dde8528535d90cc78379" + "url": "https://github.com/Spomky-Labs/pki-framework.git", + "reference": "d3ba688bf40e7c6e0dabf065ee18fc210734e760" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/ec79e03125c1d2477e43dde8528535d90cc78379", - "reference": "ec79e03125c1d2477e43dde8528535d90cc78379", + "url": "https://api.github.com/repos/Spomky-Labs/pki-framework/zipball/d3ba688bf40e7c6e0dabf065ee18fc210734e760", + "reference": "d3ba688bf40e7c6e0dabf065ee18fc210734e760", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/filesystem": "^4.4|^5.0|^6.0", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php80": "^1.16", - "symfony/polyfill-php81": "^1.22" - }, - "conflict": { - "symfony/finder": "<4.4" + "brick/math": "^0.10 || ^0.11", + "ext-mbstring": "*", + "php": ">=8.1" }, "require-dev": { - "symfony/event-dispatcher": "^4.4|^5.0|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", - "symfony/messenger": "^4.4|^5.0|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/yaml": "^4.4|^5.0|^6.0" + "ekino/phpstan-banned-code": "^1.0", + "ext-gmp": "*", + "ext-openssl": "*", + "infection/infection": "^0.26", + "php-parallel-lint/php-parallel-lint": "^1.3", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-beberlei-assert": "^1.0", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.3", + "phpunit/phpunit": "^10.0", + "rector/rector": "^0.15", + "roave/security-advisories": "dev-latest", + "symfony/phpunit-bridge": "^6.1", + "symfony/var-dumper": "^6.1", + "symplify/easy-coding-standard": "^11.1", + "thecodingmachine/phpstan-safe-rule": "^1.2" }, "suggest": { - "symfony/yaml": "To use the yaml reference dumper" + "ext-bcmath": "For better performance (or GMP)", + "ext-gmp": "For better performance (or BCMath)", + "ext-openssl": "For OpenSSL based cyphering" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Config\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "SpomkyLabs\\Pki\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Joni Eskelinen", + "email": "jonieske@gmail.com", + "role": "Original developer" + }, + { + "name": "Florent Morselli", + "email": "florent.morselli@spomky-labs.com", + "role": "Spomky-Labs PKI Framework developer" + } + ], + "description": "A PHP framework for managing Public Key Infrastructures. It comprises X.509 public key certificates, attribute certificates, certification requests and certification path validation.", + "homepage": "https://github.com/spomky-labs/pki-framework", + "keywords": [ + "DER", + "Private Key", + "ac", + "algorithm identifier", + "asn.1", + "asn1", + "attribute certificate", + "certificate", + "certification request", + "cryptography", + "csr", + "decrypt", + "ec", + "encrypt", + "pem", + "pkcs", + "public key", + "rsa", + "sign", + "signature", + "verify", + "x.509", + "x.690", + "x509", + "x690" + ], + "support": { + "issues": "https://github.com/Spomky-Labs/pki-framework/issues", + "source": "https://github.com/Spomky-Labs/pki-framework/tree/1.1.0" + }, + "funding": [ + { + "url": "https://github.com/Spomky", + "type": "github" + }, + { + "url": "https://www.patreon.com/FlorentMorselli", + "type": "patreon" + } + ], + "time": "2023-02-13T17:21:24+00:00" + }, + { + "name": "symfony/config", + "version": "v6.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/config.git", + "reference": "5d33e0fb707d603330e0edfd4691803a1253572e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/config/zipball/5d33e0fb707d603330e0edfd4691803a1253572e", + "reference": "5d33e0fb707d603330e0edfd4691803a1253572e", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/filesystem": "^5.4|^6.0|^7.0", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/finder": "<5.4", + "symfony/service-contracts": "<2.5" + }, + "require-dev": { + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^5.4|^6.0|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Config\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -6829,7 +7154,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v5.4.11" + "source": "https://github.com/symfony/config/tree/v6.4.0" }, "funding": [ { @@ -6845,20 +7170,20 @@ "type": "tidelift" } ], - "time": "2022-07-20T13:00:38+00:00" + "time": "2023-11-09T08:28:32+00:00" }, { "name": "symfony/console", - "version": "v5.4.24", + "version": "v5.4.32", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "560fc3ed7a43e6d30ea94a07d77f9a60b8ed0fb8" + "reference": "c70df1ffaf23a8d340bded3cfab1b86752ad6ed7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/560fc3ed7a43e6d30ea94a07d77f9a60b8ed0fb8", - "reference": "560fc3ed7a43e6d30ea94a07d77f9a60b8ed0fb8", + "url": "https://api.github.com/repos/symfony/console/zipball/c70df1ffaf23a8d340bded3cfab1b86752ad6ed7", + "reference": "c70df1ffaf23a8d340bded3cfab1b86752ad6ed7", "shasum": "" }, "require": { @@ -6928,7 +7253,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.24" + "source": "https://github.com/symfony/console/tree/v5.4.32" }, "funding": [ { @@ -6944,20 +7269,20 @@ "type": "tidelift" } ], - "time": "2023-05-26T05:13:16+00:00" + "time": "2023-11-18T18:23:04+00:00" }, { "name": "symfony/css-selector", - "version": "v6.3.0", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "88453e64cd86c5b60e8d2fb2c6f953bbc353ffbf" + "reference": "d036c6c0d0b09e24a14a35f8292146a658f986e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/88453e64cd86c5b60e8d2fb2c6f953bbc353ffbf", - "reference": "88453e64cd86c5b60e8d2fb2c6f953bbc353ffbf", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/d036c6c0d0b09e24a14a35f8292146a658f986e4", + "reference": "d036c6c0d0b09e24a14a35f8292146a658f986e4", "shasum": "" }, "require": { @@ -6993,7 +7318,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v6.3.0" + "source": "https://github.com/symfony/css-selector/tree/v6.4.0" }, "funding": [ { @@ -7009,52 +7334,44 @@ "type": "tidelift" } ], - "time": "2023-03-20T16:43:42+00:00" + "time": "2023-10-31T08:40:20+00:00" }, { "name": "symfony/dependency-injection", - "version": "v5.4.13", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "24cf522668845391c0542bc1de496366072a6d0e" + "reference": "5dc8ad5f2bbba7046f5947682bf7d868ce80d4e8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/24cf522668845391c0542bc1de496366072a6d0e", - "reference": "24cf522668845391c0542bc1de496366072a6d0e", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/5dc8ad5f2bbba7046f5947682bf7d868ce80d4e8", + "reference": "5dc8ad5f2bbba7046f5947682bf7d868ce80d4e8", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/container": "^1.1.1", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16", - "symfony/polyfill-php81": "^1.22", - "symfony/service-contracts": "^1.1.6|^2" + "php": ">=8.1", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/service-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^6.2.10|^7.0" }, "conflict": { "ext-psr": "<1.1|>=2", - "symfony/config": "<5.3", - "symfony/finder": "<4.4", - "symfony/proxy-manager-bridge": "<4.4", - "symfony/yaml": "<4.4.26" + "symfony/config": "<6.1", + "symfony/finder": "<5.4", + "symfony/proxy-manager-bridge": "<6.3", + "symfony/yaml": "<5.4" }, "provide": { - "psr/container-implementation": "1.0", - "symfony/service-implementation": "1.0|2.0" + "psr/container-implementation": "1.1|2.0", + "symfony/service-implementation": "1.1|2.0|3.0" }, "require-dev": { - "symfony/config": "^5.3|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/yaml": "^4.4.26|^5.0|^6.0" - }, - "suggest": { - "symfony/config": "", - "symfony/expression-language": "For using expressions in service container configuration", - "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required", - "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", - "symfony/yaml": "" + "symfony/config": "^6.1|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/yaml": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -7082,7 +7399,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v5.4.13" + "source": "https://github.com/symfony/dependency-injection/tree/v6.4.0" }, "funding": [ { @@ -7098,11 +7415,11 @@ "type": "tidelift" } ], - "time": "2022-08-30T19:10:13+00:00" + "time": "2023-10-31T08:40:20+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.3.0", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", @@ -7149,7 +7466,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.3.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.4.0" }, "funding": [ { @@ -7169,27 +7486,30 @@ }, { "name": "symfony/error-handler", - "version": "v5.4.9", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "c116cda1f51c678782768dce89a45f13c949455d" + "reference": "1f69476b64fb47105c06beef757766c376b548c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/c116cda1f51c678782768dce89a45f13c949455d", - "reference": "c116cda1f51c678782768dce89a45f13c949455d", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/1f69476b64fb47105c06beef757766c376b548c4", + "reference": "1f69476b64fb47105c06beef757766c376b548c4", "shasum": "" }, "require": { - "php": ">=7.2.5", + "php": ">=8.1", "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^4.4|^5.0|^6.0" + "symfony/var-dumper": "^5.4|^6.0" + }, + "conflict": { + "symfony/deprecation-contracts": "<2.5" }, "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^4.4|^5.0|^6.0", - "symfony/serializer": "^4.4|^5.0|^6.0" + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/serializer": "^5.4|^6.0" }, "bin": [ "Resources/bin/patch-type-declarations" @@ -7220,7 +7540,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/v5.4.9" + "source": "https://github.com/symfony/error-handler/tree/v6.3.5" }, "funding": [ { @@ -7236,20 +7556,20 @@ "type": "tidelift" } ], - "time": "2022-05-21T13:57:48+00:00" + "time": "2023-09-12T06:57:20+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v6.3.0", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "3af8ac1a3f98f6dbc55e10ae59c9e44bfc38dfaa" + "reference": "d76d2632cfc2206eecb5ad2b26cd5934082941b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/3af8ac1a3f98f6dbc55e10ae59c9e44bfc38dfaa", - "reference": "3af8ac1a3f98f6dbc55e10ae59c9e44bfc38dfaa", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d76d2632cfc2206eecb5ad2b26cd5934082941b6", + "reference": "d76d2632cfc2206eecb5ad2b26cd5934082941b6", "shasum": "" }, "require": { @@ -7266,13 +7586,13 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/error-handler": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", "symfony/service-contracts": "^2.5|^3", - "symfony/stopwatch": "^5.4|^6.0" + "symfony/stopwatch": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -7300,7 +7620,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.3.0" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.0" }, "funding": [ { @@ -7316,11 +7636,11 @@ "type": "tidelift" } ], - "time": "2023-04-21T14:41:17+00:00" + "time": "2023-07-27T06:52:43+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.3.0", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", @@ -7376,7 +7696,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.3.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.0" }, "funding": [ { @@ -7396,20 +7716,20 @@ }, { "name": "symfony/filesystem", - "version": "v6.3.1", + "version": "v7.0.0", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae" + "reference": "7da8ea2362a283771478c5f7729cfcb43a76b8b7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/edd36776956f2a6fcf577edb5b05eb0e3bdc52ae", - "reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/7da8ea2362a283771478c5f7729cfcb43a76b8b7", + "reference": "7da8ea2362a283771478c5f7729cfcb43a76b8b7", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.8" }, @@ -7439,7 +7759,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.3.1" + "source": "https://github.com/symfony/filesystem/tree/v7.0.0" }, "funding": [ { @@ -7455,20 +7775,20 @@ "type": "tidelift" } ], - "time": "2023-06-01T08:30:39+00:00" + "time": "2023-07-27T06:33:22+00:00" }, { "name": "symfony/finder", - "version": "v5.4.21", + "version": "v5.4.27", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "078e9a5e1871fcfe6a5ce421b539344c21afef19" + "reference": "ff4bce3c33451e7ec778070e45bd23f74214cd5d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/078e9a5e1871fcfe6a5ce421b539344c21afef19", - "reference": "078e9a5e1871fcfe6a5ce421b539344c21afef19", + "url": "https://api.github.com/repos/symfony/finder/zipball/ff4bce3c33451e7ec778070e45bd23f74214cd5d", + "reference": "ff4bce3c33451e7ec778070e45bd23f74214cd5d", "shasum": "" }, "require": { @@ -7502,7 +7822,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v5.4.21" + "source": "https://github.com/symfony/finder/tree/v5.4.27" }, "funding": [ { @@ -7518,20 +7838,20 @@ "type": "tidelift" } ], - "time": "2023-02-16T09:33:00+00:00" + "time": "2023-07-31T08:02:31+00:00" }, { "name": "symfony/http-foundation", - "version": "v5.4.25", + "version": "v5.4.32", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "f66be2706075c5f6325d2fe2b743a57fb5d23f6b" + "reference": "cbcd80a4c36f59772d62860fdb0cb6a38da63fd2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/f66be2706075c5f6325d2fe2b743a57fb5d23f6b", - "reference": "f66be2706075c5f6325d2fe2b743a57fb5d23f6b", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/cbcd80a4c36f59772d62860fdb0cb6a38da63fd2", + "reference": "cbcd80a4c36f59772d62860fdb0cb6a38da63fd2", "shasum": "" }, "require": { @@ -7578,7 +7898,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v5.4.25" + "source": "https://github.com/symfony/http-foundation/tree/v5.4.32" }, "funding": [ { @@ -7594,68 +7914,68 @@ "type": "tidelift" } ], - "time": "2023-06-22T08:06:06+00:00" + "time": "2023-11-20T15:40:25+00:00" }, { "name": "symfony/http-kernel", - "version": "v5.4.10", + "version": "v6.2.14", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "255ae3b0a488d78fbb34da23d3e0c059874b5948" + "reference": "d05cebbc07478d37ff1e0f0079f06298a096b870" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/255ae3b0a488d78fbb34da23d3e0c059874b5948", - "reference": "255ae3b0a488d78fbb34da23d3e0c059874b5948", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/d05cebbc07478d37ff1e0f0079f06298a096b870", + "reference": "d05cebbc07478d37ff1e0f0079f06298a096b870", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/log": "^1|^2", + "php": ">=8.1", + "psr/log": "^1|^2|^3", "symfony/deprecation-contracts": "^2.1|^3", - "symfony/error-handler": "^4.4|^5.0|^6.0", - "symfony/event-dispatcher": "^5.0|^6.0", - "symfony/http-foundation": "^5.3.7|^6.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php73": "^1.9", - "symfony/polyfill-php80": "^1.16" + "symfony/error-handler": "^6.1", + "symfony/event-dispatcher": "^5.4|^6.0", + "symfony/http-foundation": "^5.4.21|^6.2.7", + "symfony/polyfill-ctype": "^1.8" }, "conflict": { "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.0", - "symfony/config": "<5.0", - "symfony/console": "<4.4", - "symfony/dependency-injection": "<5.3", - "symfony/doctrine-bridge": "<5.0", - "symfony/form": "<5.0", - "symfony/http-client": "<5.0", - "symfony/mailer": "<5.0", - "symfony/messenger": "<5.0", - "symfony/translation": "<5.0", - "symfony/twig-bridge": "<5.0", - "symfony/validator": "<5.0", + "symfony/cache": "<5.4", + "symfony/config": "<6.1", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<6.2", + "symfony/doctrine-bridge": "<5.4", + "symfony/form": "<5.4", + "symfony/http-client": "<5.4", + "symfony/mailer": "<5.4", + "symfony/messenger": "<5.4", + "symfony/translation": "<5.4", + "symfony/twig-bridge": "<5.4", + "symfony/validator": "<5.4", "twig/twig": "<2.13" }, "provide": { - "psr/log-implementation": "1.0|2.0" + "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.0|^6.0", - "symfony/console": "^4.4|^5.0|^6.0", - "symfony/css-selector": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^5.3|^6.0", - "symfony/dom-crawler": "^4.4|^5.0|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/config": "^6.1", + "symfony/console": "^5.4|^6.0", + "symfony/css-selector": "^5.4|^6.0", + "symfony/dependency-injection": "^6.2", + "symfony/dom-crawler": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/finder": "^5.4|^6.0", "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/routing": "^4.4|^5.0|^6.0", - "symfony/stopwatch": "^4.4|^5.0|^6.0", - "symfony/translation": "^4.4|^5.0|^6.0", + "symfony/process": "^5.4|^6.0", + "symfony/routing": "^5.4|^6.0", + "symfony/stopwatch": "^5.4|^6.0", + "symfony/translation": "^5.4|^6.0", "symfony/translation-contracts": "^1.1|^2|^3", + "symfony/uid": "^5.4|^6.0", + "symfony/var-exporter": "^6.2", "twig/twig": "^2.13|^3.0.4" }, "suggest": { @@ -7690,7 +8010,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/v5.4.10" + "source": "https://github.com/symfony/http-kernel/tree/v6.2.14" }, "funding": [ { @@ -7706,20 +8026,20 @@ "type": "tidelift" } ], - "time": "2022-06-26T16:57:59+00:00" + "time": "2023-07-31T10:40:35+00:00" }, { "name": "symfony/intl", - "version": "v5.4.11", + "version": "v5.4.30", "source": { "type": "git", "url": "https://github.com/symfony/intl.git", - "reference": "d305c0c1d31b30b3876e041804c35e49e5f8a96e" + "reference": "cd6cce16151ac871071a3495e7a325460b952b5a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/intl/zipball/d305c0c1d31b30b3876e041804c35e49e5f8a96e", - "reference": "d305c0c1d31b30b3876e041804c35e49e5f8a96e", + "url": "https://api.github.com/repos/symfony/intl/zipball/cd6cce16151ac871071a3495e7a325460b952b5a", + "reference": "cd6cce16151ac871071a3495e7a325460b952b5a", "shasum": "" }, "require": { @@ -7728,7 +8048,8 @@ "symfony/polyfill-php80": "^1.16" }, "require-dev": { - "symfony/filesystem": "^4.4|^5.0|^6.0" + "symfony/filesystem": "^4.4|^5.0|^6.0", + "symfony/var-exporter": "^5.4|^6.0" }, "type": "library", "autoload": { @@ -7778,7 +8099,7 @@ "localization" ], "support": { - "source": "https://github.com/symfony/intl/tree/v5.4.11" + "source": "https://github.com/symfony/intl/tree/v5.4.30" }, "funding": [ { @@ -7794,20 +8115,20 @@ "type": "tidelift" } ], - "time": "2022-07-20T11:34:24+00:00" + "time": "2023-10-28T09:19:54+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", "shasum": "" }, "require": { @@ -7822,7 +8143,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -7860,7 +8181,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" }, "funding": [ { @@ -7876,20 +8197,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354" + "reference": "875e90aeea2777b6f135677f618529449334a612" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612", + "reference": "875e90aeea2777b6f135677f618529449334a612", "shasum": "" }, "require": { @@ -7901,7 +8222,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -7941,7 +8262,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0" }, "funding": [ { @@ -7957,20 +8278,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "639084e360537a19f9ee352433b84ce831f3d2da" + "reference": "ecaafce9f77234a6a449d29e49267ba10499116d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/639084e360537a19f9ee352433b84ce831f3d2da", - "reference": "639084e360537a19f9ee352433b84ce831f3d2da", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/ecaafce9f77234a6a449d29e49267ba10499116d", + "reference": "ecaafce9f77234a6a449d29e49267ba10499116d", "shasum": "" }, "require": { @@ -7984,7 +8305,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -8028,7 +8349,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.28.0" }, "funding": [ { @@ -8044,20 +8365,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:30:37+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", "shasum": "" }, "require": { @@ -8069,7 +8390,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -8112,7 +8433,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0" }, "funding": [ { @@ -8128,20 +8449,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" + "reference": "42292d99c55abe617799667f454222c54c60e229" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", + "reference": "42292d99c55abe617799667f454222c54c60e229", "shasum": "" }, "require": { @@ -8156,7 +8477,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -8195,7 +8516,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" }, "funding": [ { @@ -8211,20 +8532,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-07-28T09:04:16+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "869329b1e9894268a8a61dabb69153029b7a8c97" + "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/869329b1e9894268a8a61dabb69153029b7a8c97", - "reference": "869329b1e9894268a8a61dabb69153029b7a8c97", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/70f4aebd92afca2f865444d30a4d2151c13c3179", + "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179", "shasum": "" }, "require": { @@ -8233,7 +8554,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -8271,7 +8592,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php72/tree/v1.28.0" }, "funding": [ { @@ -8287,20 +8608,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9" + "reference": "fe2f306d1d9d346a7fee353d0d5012e401e984b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/9e8ecb5f92152187c4799efd3c96b78ccab18ff9", - "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fe2f306d1d9d346a7fee353d0d5012e401e984b5", + "reference": "fe2f306d1d9d346a7fee353d0d5012e401e984b5", "shasum": "" }, "require": { @@ -8309,7 +8630,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -8350,7 +8671,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.28.0" }, "funding": [ { @@ -8366,20 +8687,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" + "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5", + "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5", "shasum": "" }, "require": { @@ -8388,7 +8709,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -8433,7 +8754,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0" }, "funding": [ { @@ -8449,20 +8770,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-php81", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a" + "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/707403074c8ea6e2edaf8794b0157a0bfa52157a", - "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/7581cd600fa9fd681b797d00b02f068e2f13263b", + "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b", "shasum": "" }, "require": { @@ -8471,7 +8792,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -8512,7 +8833,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.28.0" }, "funding": [ { @@ -8528,7 +8849,7 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/process", @@ -8677,16 +8998,16 @@ }, { "name": "symfony/string", - "version": "v5.4.22", + "version": "v5.4.32", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "8036a4c76c0dd29e60b6a7cafcacc50cf088ea62" + "reference": "91bf4453d65d8231688a04376c3a40efe0770f04" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/8036a4c76c0dd29e60b6a7cafcacc50cf088ea62", - "reference": "8036a4c76c0dd29e60b6a7cafcacc50cf088ea62", + "url": "https://api.github.com/repos/symfony/string/zipball/91bf4453d65d8231688a04376c3a40efe0770f04", + "reference": "91bf4453d65d8231688a04376c3a40efe0770f04", "shasum": "" }, "require": { @@ -8743,7 +9064,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.4.22" + "source": "https://github.com/symfony/string/tree/v5.4.32" }, "funding": [ { @@ -8759,24 +9080,25 @@ "type": "tidelift" } ], - "time": "2023-03-14T06:11:53+00:00" + "time": "2023-11-26T13:43:46+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.3.1", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "c81268d6960ddb47af17391a27d222bd58cf0515" + "reference": "c40f7d17e91d8b407582ed51a2bbf83c52c367f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/c81268d6960ddb47af17391a27d222bd58cf0515", - "reference": "c81268d6960ddb47af17391a27d222bd58cf0515", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/c40f7d17e91d8b407582ed51a2bbf83c52c367f6", + "reference": "c40f7d17e91d8b407582ed51a2bbf83c52c367f6", "shasum": "" }, "require": { "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0" }, "conflict": { @@ -8784,9 +9106,11 @@ }, "require-dev": { "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/error-handler": "^6.3|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/uid": "^5.4|^6.0|^7.0", "twig/twig": "^2.13|^3.0.4" }, "bin": [ @@ -8825,7 +9149,81 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.3.1" + "source": "https://github.com/symfony/var-dumper/tree/v6.4.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-11-09T08:28:32+00:00" + }, + { + "name": "symfony/var-exporter", + "version": "v7.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-exporter.git", + "reference": "d97726e8d254a2d5512b2b4ba204735d84e7167d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/d97726e8d254a2d5512b2b4ba204735d84e7167d", + "reference": "d97726e8d254a2d5512b2b4ba204735d84e7167d", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "symfony/var-dumper": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\VarExporter\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Allows exporting any serializable PHP data structure to plain PHP code", + "homepage": "https://symfony.com", + "keywords": [ + "clone", + "construct", + "export", + "hydrate", + "instantiate", + "lazy-loading", + "proxy", + "serialize" + ], + "support": { + "source": "https://github.com/symfony/var-exporter/tree/v7.0.0" }, "funding": [ { @@ -8841,29 +9239,29 @@ "type": "tidelift" } ], - "time": "2023-06-21T12:08:28+00:00" + "time": "2023-11-29T08:40:23+00:00" }, { "name": "tedivm/jshrink", - "version": "v1.4.0", + "version": "v1.7.0", "source": { "type": "git", "url": "https://github.com/tedious/JShrink.git", - "reference": "0513ba1407b1f235518a939455855e6952a48bbc" + "reference": "7a35f5a4651ca2ce77295eb8a3b4e133ba47e19e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tedious/JShrink/zipball/0513ba1407b1f235518a939455855e6952a48bbc", - "reference": "0513ba1407b1f235518a939455855e6952a48bbc", + "url": "https://api.github.com/repos/tedious/JShrink/zipball/7a35f5a4651ca2ce77295eb8a3b4e133ba47e19e", + "reference": "7a35f5a4651ca2ce77295eb8a3b4e133ba47e19e", "shasum": "" }, "require": { - "php": "^5.6|^7.0|^8.0" + "php": "^7.0|^8.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^2.8", - "php-coveralls/php-coveralls": "^1.1.0", - "phpunit/phpunit": "^6" + "friendsofphp/php-cs-fixer": "^3.14", + "php-coveralls/php-coveralls": "^2.5.0", + "phpunit/phpunit": "^9|^10" }, "type": "library", "autoload": { @@ -8889,15 +9287,19 @@ ], "support": { "issues": "https://github.com/tedious/JShrink/issues", - "source": "https://github.com/tedious/JShrink/tree/v1.4.0" + "source": "https://github.com/tedious/JShrink/tree/v1.7.0" }, "funding": [ + { + "url": "https://github.com/tedivm", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/tedivm/jshrink", "type": "tidelift" } ], - "time": "2020-11-30T18:10:21+00:00" + "time": "2023-10-04T17:23:23+00:00" }, { "name": "tubalmartin/cssmin", @@ -8958,31 +9360,32 @@ }, { "name": "web-token/jwt-framework", - "version": "3.1.2", + "version": "3.2.8", "source": { "type": "git", "url": "https://github.com/web-token/jwt-framework.git", - "reference": "c8d3a304855844451d1d2d3e6087a6f287cba1d9" + "reference": "bfceee5b742560dd861dcf690b12aa8fab3a8756" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/web-token/jwt-framework/zipball/c8d3a304855844451d1d2d3e6087a6f287cba1d9", - "reference": "c8d3a304855844451d1d2d3e6087a6f287cba1d9", + "url": "https://api.github.com/repos/web-token/jwt-framework/zipball/bfceee5b742560dd861dcf690b12aa8fab3a8756", + "reference": "bfceee5b742560dd861dcf690b12aa8fab3a8756", "shasum": "" }, "require": { - "brick/math": "^0.9|^0.10", + "brick/math": "^0.9|^0.10|^0.11", "ext-json": "*", "ext-mbstring": "*", "ext-openssl": "*", "ext-sodium": "*", - "fgrosse/phpasn1": "^2.0", "paragonie/constant_time_encoding": "^2.4", "php": ">=8.1", + "psr/clock": "^1.0", "psr/event-dispatcher": "^1.0", "psr/http-client": "^1.0", "psr/http-factory": "^1.0", "spomky-labs/aes-key-wrap": "^7.0", + "spomky-labs/pki-framework": "^1.0", "symfony/config": "^5.4|^6.0", "symfony/console": "^5.4|^6.0", "symfony/dependency-injection": "^5.4|^6.0", @@ -9023,23 +9426,24 @@ }, "require-dev": { "bjeavons/zxcvbn-php": "^1.3", - "blackfire/php-sdk": "^1.31", + "blackfire/php-sdk": "^2.0", "ekino/phpstan-banned-code": "^1.0", "ext-curl": "*", "ext-gmp": "*", - "infection/infection": "^0.26", + "infection/infection": "^0.27", "matthiasnoback/symfony-config-test": "^4.3.0", "nyholm/psr7": "^1.5", "php-http/mock-client": "^1.5", "php-parallel-lint/php-parallel-lint": "^1.3", "phpbench/phpbench": "^1.2", - "phpstan/extension-installer": "^1.1", + "phpstan/extension-installer": "^1.3", "phpstan/phpstan": "^1.8", "phpstan/phpstan-deprecation-rules": "^1.0", "phpstan/phpstan-phpunit": "^1.1", "phpstan/phpstan-strict-rules": "^1.4", "phpunit/phpunit": "^9.5.23", - "rector/rector": "^0.14", + "qossmic/deptrac-shim": "^1.0", + "rector/rector": "^0.16", "roave/security-advisories": "dev-latest", "symfony/browser-kit": "^6.1.3", "symfony/finder": "^5.4|^6.0", @@ -9049,7 +9453,8 @@ "symfony/serializer": "^6.1.3", "symfony/var-dumper": "^6.1.3", "symfony/yaml": "^6.1.3", - "symplify/easy-coding-standard": "^11.0" + "symplify/easy-coding-standard": "^11.0", + "symplify/monorepo-builder": "11.2.3.72" }, "suggest": { "bjeavons/zxcvbn-php": "Adds key quality check for oct keys.", @@ -9064,31 +9469,55 @@ "autoload": { "psr-4": { "Jose\\": "src/", + "Jose\\Component\\Core\\": "src/Component/Core/", + "Jose\\Component\\Checker\\": "src/Component/Checker/", + "Jose\\Component\\Console\\": "src/Component/Console/", + "Jose\\Component\\Signature\\": "src/Component/Signature/", + "Jose\\Bundle\\JoseFramework\\": "src/Bundle/JoseFramework/", + "Jose\\Component\\Encryption\\": "src/Component/Encryption/", + "Jose\\Component\\NestedToken\\": "src/Component/NestedToken/", "Jose\\Component\\Core\\Util\\Ecc\\": [ - "src/Ecc" + "src/Ecc", + "src/Ecc/" ], + "Jose\\Component\\KeyManagement\\": "src/Component/KeyManagement/", "Jose\\Component\\Signature\\Algorithm\\": [ "src/SignatureAlgorithm/ECDSA", + "src/SignatureAlgorithm/ECDSA/", "src/SignatureAlgorithm/EdDSA", + "src/SignatureAlgorithm/EdDSA/", + "src/SignatureAlgorithm/Experimental", + "src/SignatureAlgorithm/Experimental/", "src/SignatureAlgorithm/HMAC", + "src/SignatureAlgorithm/HMAC/", "src/SignatureAlgorithm/None", + "src/SignatureAlgorithm/None/", "src/SignatureAlgorithm/RSA", - "src/SignatureAlgorithm/Experimental" + "src/SignatureAlgorithm/RSA/" ], "Jose\\Component\\Encryption\\Algorithm\\": [ - "src/EncryptionAlgorithm/Experimental" + "src/EncryptionAlgorithm/Experimental", + "src/EncryptionAlgorithm/Experimental/" ], "Jose\\Component\\Encryption\\Algorithm\\KeyEncryption\\": [ "src/EncryptionAlgorithm/KeyEncryption/AESGCMKW", + "src/EncryptionAlgorithm/KeyEncryption/AESGCMKW/", "src/EncryptionAlgorithm/KeyEncryption/AESKW", + "src/EncryptionAlgorithm/KeyEncryption/AESKW/", "src/EncryptionAlgorithm/KeyEncryption/Direct", + "src/EncryptionAlgorithm/KeyEncryption/Direct/", "src/EncryptionAlgorithm/KeyEncryption/ECDHES", + "src/EncryptionAlgorithm/KeyEncryption/ECDHES/", "src/EncryptionAlgorithm/KeyEncryption/PBES2", - "src/EncryptionAlgorithm/KeyEncryption/RSA" + "src/EncryptionAlgorithm/KeyEncryption/PBES2/", + "src/EncryptionAlgorithm/KeyEncryption/RSA", + "src/EncryptionAlgorithm/KeyEncryption/RSA/" ], "Jose\\Component\\Encryption\\Algorithm\\ContentEncryption\\": [ + "src/EncryptionAlgorithm/ContentEncryption/AESCBC", + "src/EncryptionAlgorithm/ContentEncryption/AESCBC/", "src/EncryptionAlgorithm/ContentEncryption/AESGCM", - "src/EncryptionAlgorithm/ContentEncryption/AESCBC" + "src/EncryptionAlgorithm/ContentEncryption/AESGCM/" ] } }, @@ -9103,7 +9532,7 @@ }, { "name": "All contributors", - "homepage": "https://github.com/web-token/jwt-framework/contributors" + "homepage": "https://github.com/web-token/jwt-bundle/contributors" } ], "description": "JSON Object Signing and Encryption library for PHP and Symfony Bundle.", @@ -9128,7 +9557,7 @@ ], "support": { "issues": "https://github.com/web-token/jwt-framework/issues", - "source": "https://github.com/web-token/jwt-framework/tree/3.1.2" + "source": "https://github.com/web-token/jwt-framework/tree/3.2.8" }, "funding": [ { @@ -9140,7 +9569,7 @@ "type": "patreon" } ], - "time": "2022-09-01T05:50:30+00:00" + "time": "2023-08-23T09:49:09+00:00" }, { "name": "webimpress/safe-writer", @@ -9261,16 +9690,16 @@ }, { "name": "webonyx/graphql-php", - "version": "v15.0.3", + "version": "v15.8.0", "source": { "type": "git", "url": "https://github.com/webonyx/graphql-php.git", - "reference": "bfa78b44a93c00ebc9a1bc92497bc170a0e3b656" + "reference": "329315936f5af9b4c3f798f5d1afef72f3da0312" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/bfa78b44a93c00ebc9a1bc92497bc170a0e3b656", - "reference": "bfa78b44a93c00ebc9a1bc92497bc170a0e3b656", + "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/329315936f5af9b4c3f798f5d1afef72f3da0312", + "reference": "329315936f5af9b4c3f798f5d1afef72f3da0312", "shasum": "" }, "require": { @@ -9280,24 +9709,28 @@ }, "require-dev": { "amphp/amp": "^2.6", - "dms/phpunit-arraysubset-asserts": "^0.4", + "amphp/http-server": "^2.1", + "dms/phpunit-arraysubset-asserts": "dev-master", "ergebnis/composer-normalize": "^2.28", - "mll-lab/php-cs-fixer-config": "^4.4", + "friendsofphp/php-cs-fixer": "3.30.0", + "mll-lab/php-cs-fixer-config": "^5", "nyholm/psr7": "^1.5", "phpbench/phpbench": "^1.2", "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "1.9.14", - "phpstan/phpstan-phpunit": "1.3.3", - "phpstan/phpstan-strict-rules": "1.4.5", - "phpunit/phpunit": "^9.5", - "psr/http-message": "^1", + "phpstan/phpstan": "1.10.41", + "phpstan/phpstan-phpunit": "1.3.15", + "phpstan/phpstan-strict-rules": "1.5.2", + "phpunit/phpunit": "^9.5 || ^10", + "psr/http-message": "^1 || ^2", "react/http": "^1.6", "react/promise": "^2.9", + "rector/rector": "^0.18", "symfony/polyfill-php81": "^1.23", "symfony/var-exporter": "^5 || ^6", "thecodingmachine/safe": "^1.3 || ^2" }, "suggest": { + "amphp/http-server": "To leverage async resolving with webserver on AMPHP platform", "psr/http-message": "To use standard GraphQL server", "react/promise": "To leverage async resolving on React PHP platform" }, @@ -9319,7 +9752,7 @@ ], "support": { "issues": "https://github.com/webonyx/graphql-php/issues", - "source": "https://github.com/webonyx/graphql-php/tree/v15.0.3" + "source": "https://github.com/webonyx/graphql-php/tree/v15.8.0" }, "funding": [ { @@ -9327,28 +9760,28 @@ "type": "open_collective" } ], - "time": "2023-02-02T21:59:56+00:00" + "time": "2023-11-14T15:30:40+00:00" }, { "name": "wikimedia/less.php", - "version": "v3.2.0", + "version": "v3.2.1", "source": { "type": "git", "url": "https://github.com/wikimedia/less.php.git", - "reference": "47c4714c68c9006c87676d76c172a18e1d180f60" + "reference": "0d5b30ba792bdbf8991a646fc9c30561b38a5559" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wikimedia/less.php/zipball/47c4714c68c9006c87676d76c172a18e1d180f60", - "reference": "47c4714c68c9006c87676d76c172a18e1d180f60", + "url": "https://api.github.com/repos/wikimedia/less.php/zipball/0d5b30ba792bdbf8991a646fc9c30561b38a5559", + "reference": "0d5b30ba792bdbf8991a646fc9c30561b38a5559", "shasum": "" }, "require": { "php": ">=7.2.9" }, "require-dev": { - "mediawiki/mediawiki-codesniffer": "39.0.0", - "mediawiki/mediawiki-phan-config": "0.11.1 || 0.12.0", + "mediawiki/mediawiki-codesniffer": "40.0.1", + "mediawiki/mediawiki-phan-config": "0.12.0", "mediawiki/minus-x": "1.1.1", "php-parallel-lint/php-console-highlighter": "1.0.0", "php-parallel-lint/php-parallel-lint": "1.3.2", @@ -9371,6 +9804,10 @@ "Apache-2.0" ], "authors": [ + { + "name": "Timo Tijhof", + "homepage": "https://timotijhof.net" + }, { "name": "Josh Schmidt", "homepage": "https://github.com/oyejorge" @@ -9385,6 +9822,7 @@ } ], "description": "PHP port of the LESS processor", + "homepage": "https://gerrit.wikimedia.org/g/mediawiki/libs/less.php", "keywords": [ "css", "less", @@ -9395,9 +9833,9 @@ ], "support": { "issues": "https://github.com/wikimedia/less.php/issues", - "source": "https://github.com/wikimedia/less.php/tree/v3.2.0" + "source": "https://github.com/wikimedia/less.php/tree/v3.2.1" }, - "time": "2023-01-09T18:45:54+00:00" + "time": "2023-02-03T06:43:41+00:00" } ], "packages-dev": [ @@ -9671,16 +10109,16 @@ }, { "name": "codeception/codeception", - "version": "5.0.10", + "version": "5.0.12", "source": { "type": "git", "url": "https://github.com/Codeception/Codeception.git", - "reference": "ed4af7fd4103cdd035916fbb8f35124edd2d018b" + "reference": "7f528f5fd8cdcd05cd0a85eb1e24d05df989e0c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/Codeception/zipball/ed4af7fd4103cdd035916fbb8f35124edd2d018b", - "reference": "ed4af7fd4103cdd035916fbb8f35124edd2d018b", + "url": "https://api.github.com/repos/Codeception/Codeception/zipball/7f528f5fd8cdcd05cd0a85eb1e24d05df989e0c4", + "reference": "7f528f5fd8cdcd05cd0a85eb1e24d05df989e0c4", "shasum": "" }, "require": { @@ -9775,7 +10213,7 @@ ], "support": { "issues": "https://github.com/Codeception/Codeception/issues", - "source": "https://github.com/Codeception/Codeception/tree/5.0.10" + "source": "https://github.com/Codeception/Codeception/tree/5.0.12" }, "funding": [ { @@ -9783,7 +10221,7 @@ "type": "open_collective" } ], - "time": "2023-03-14T07:21:10+00:00" + "time": "2023-10-15T18:04:50+00:00" }, { "name": "codeception/lib-asserts", @@ -9841,16 +10279,16 @@ }, { "name": "codeception/lib-web", - "version": "1.0.2", + "version": "1.0.3", "source": { "type": "git", "url": "https://github.com/Codeception/lib-web.git", - "reference": "f488ff9bc08c8985d43796db28da0bd18813bcae" + "reference": "4c02cf57c5f2d14bbb9f57ea09b38ceacec15d91" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/lib-web/zipball/f488ff9bc08c8985d43796db28da0bd18813bcae", - "reference": "f488ff9bc08c8985d43796db28da0bd18813bcae", + "url": "https://api.github.com/repos/Codeception/lib-web/zipball/4c02cf57c5f2d14bbb9f57ea09b38ceacec15d91", + "reference": "4c02cf57c5f2d14bbb9f57ea09b38ceacec15d91", "shasum": "" }, "require": { @@ -9888,9 +10326,9 @@ ], "support": { "issues": "https://github.com/Codeception/lib-web/issues", - "source": "https://github.com/Codeception/lib-web/tree/1.0.2" + "source": "https://github.com/Codeception/lib-web/tree/1.0.3" }, - "time": "2023-04-18T20:32:51+00:00" + "time": "2023-11-27T06:43:13+00:00" }, { "name": "codeception/module-asserts", @@ -10059,16 +10497,16 @@ }, { "name": "codeception/stub", - "version": "4.1.0", + "version": "4.1.2", "source": { "type": "git", "url": "https://github.com/Codeception/Stub.git", - "reference": "58751aed08a68ae960a952fd3fe74ee9a56cdb1b" + "reference": "f6bc56e33e3f5ba7a831dfb968c49b27cf1676ad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/Stub/zipball/58751aed08a68ae960a952fd3fe74ee9a56cdb1b", - "reference": "58751aed08a68ae960a952fd3fe74ee9a56cdb1b", + "url": "https://api.github.com/repos/Codeception/Stub/zipball/f6bc56e33e3f5ba7a831dfb968c49b27cf1676ad", + "reference": "f6bc56e33e3f5ba7a831dfb968c49b27cf1676ad", "shasum": "" }, "require": { @@ -10094,25 +10532,26 @@ "description": "Flexible Stub wrapper for PHPUnit's Mock Builder", "support": { "issues": "https://github.com/Codeception/Stub/issues", - "source": "https://github.com/Codeception/Stub/tree/4.1.0" + "source": "https://github.com/Codeception/Stub/tree/4.1.2" }, - "time": "2022-12-27T18:41:43+00:00" + "time": "2023-10-07T19:22:36+00:00" }, { "name": "csharpru/vault-php", - "version": "4.3.1", + "version": "4.4.0", "source": { "type": "git", "url": "https://github.com/CSharpRU/vault-php.git", - "reference": "918bfffe85d3b290e1bf667b5f14e521fdc0063c" + "reference": "ba4cbd7b55f1ce10bc72a7e4c36cfd87a42d3573" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/CSharpRU/vault-php/zipball/918bfffe85d3b290e1bf667b5f14e521fdc0063c", - "reference": "918bfffe85d3b290e1bf667b5f14e521fdc0063c", + "url": "https://api.github.com/repos/CSharpRU/vault-php/zipball/ba4cbd7b55f1ce10bc72a7e4c36cfd87a42d3573", + "reference": "ba4cbd7b55f1ce10bc72a7e4c36cfd87a42d3573", "shasum": "" }, "require": { + "aws/aws-sdk-php": "^3.0", "ext-json": "*", "php": "^7.2 || ^8.0", "psr/cache": "^1.0|^2.0|^3.0", @@ -10156,41 +10595,44 @@ ], "support": { "issues": "https://github.com/CSharpRU/vault-php/issues", - "source": "https://github.com/CSharpRU/vault-php/tree/4.3.1" + "source": "https://github.com/CSharpRU/vault-php/tree/4.4.0" }, - "time": "2022-04-04T08:31:44+00:00" + "time": "2023-11-22T11:38:41+00:00" }, { "name": "dealerdirect/phpcodesniffer-composer-installer", - "version": "v0.7.2", + "version": "v1.0.0", "source": { "type": "git", - "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git", - "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db" + "url": "https://github.com/PHPCSStandards/composer-installer.git", + "reference": "4be43904336affa5c2f70744a348312336afd0da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", - "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", + "url": "https://api.github.com/repos/PHPCSStandards/composer-installer/zipball/4be43904336affa5c2f70744a348312336afd0da", + "reference": "4be43904336affa5c2f70744a348312336afd0da", "shasum": "" }, "require": { "composer-plugin-api": "^1.0 || ^2.0", - "php": ">=5.3", + "php": ">=5.4", "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0" }, "require-dev": { "composer/composer": "*", + "ext-json": "*", + "ext-zip": "*", "php-parallel-lint/php-parallel-lint": "^1.3.1", - "phpcompatibility/php-compatibility": "^9.0" + "phpcompatibility/php-compatibility": "^9.0", + "yoast/phpunit-polyfills": "^1.0" }, "type": "composer-plugin", "extra": { - "class": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" + "class": "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" }, "autoload": { "psr-4": { - "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" + "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -10206,7 +10648,7 @@ }, { "name": "Contributors", - "homepage": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer/graphs/contributors" + "homepage": "https://github.com/PHPCSStandards/composer-installer/graphs/contributors" } ], "description": "PHP_CodeSniffer Standards Composer Installer Plugin", @@ -10230,23 +10672,23 @@ "tests" ], "support": { - "issues": "https://github.com/dealerdirect/phpcodesniffer-composer-installer/issues", - "source": "https://github.com/dealerdirect/phpcodesniffer-composer-installer" + "issues": "https://github.com/PHPCSStandards/composer-installer/issues", + "source": "https://github.com/PHPCSStandards/composer-installer" }, - "time": "2022-02-04T12:51:07+00:00" + "time": "2023-01-05T11:28:13+00:00" }, { "name": "dg/bypass-finals", - "version": "v1.4.1", + "version": "v1.5.1", "source": { "type": "git", "url": "https://github.com/dg/bypass-finals.git", - "reference": "4c424c3ed359220fce044f35cdf9f48b0089b2ca" + "reference": "12ef25e1f8d4144e4ec80d13a28895e8942f4104" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dg/bypass-finals/zipball/4c424c3ed359220fce044f35cdf9f48b0089b2ca", - "reference": "4c424c3ed359220fce044f35cdf9f48b0089b2ca", + "url": "https://api.github.com/repos/dg/bypass-finals/zipball/12ef25e1f8d4144e4ec80d13a28895e8942f4104", + "reference": "12ef25e1f8d4144e4ec80d13a28895e8942f4104", "shasum": "" }, "require": { @@ -10284,36 +10726,36 @@ ], "support": { "issues": "https://github.com/dg/bypass-finals/issues", - "source": "https://github.com/dg/bypass-finals/tree/v1.4.1" + "source": "https://github.com/dg/bypass-finals/tree/v1.5.1" }, - "time": "2022-09-13T17:27:26+00:00" + "time": "2023-09-16T09:13:54+00:00" }, { "name": "doctrine/instantiator", - "version": "1.5.0", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b" + "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/0a0fa9780f5d4e507415a065172d26a98d02047b", - "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", + "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^9 || ^11", + "doctrine/coding-standard": "^11", "ext-pdo": "*", "ext-phar": "*", - "phpbench/phpbench": "^0.16 || ^1", - "phpstan/phpstan": "^1.4", - "phpstan/phpstan-phpunit": "^1", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.30 || ^5.4" + "phpbench/phpbench": "^1.2", + "phpstan/phpstan": "^1.9.4", + "phpstan/phpstan-phpunit": "^1.3", + "phpunit/phpunit": "^9.5.27", + "vimeo/psalm": "^5.4" }, "type": "library", "autoload": { @@ -10340,7 +10782,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.5.0" + "source": "https://github.com/doctrine/instantiator/tree/2.0.0" }, "funding": [ { @@ -10356,56 +10798,54 @@ "type": "tidelift" } ], - "time": "2022-12-30T00:15:36+00:00" + "time": "2022-12-30T00:23:10+00:00" }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.8.0", + "version": "v3.40.0", "source": { "type": "git", - "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", - "reference": "cbad1115aac4b5c3c5540e7210d3c9fba2f81fa3" + "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", + "reference": "27d2b3265b5d550ec411b4319967ae7cfddfb2e0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/cbad1115aac4b5c3c5540e7210d3c9fba2f81fa3", - "reference": "cbad1115aac4b5c3c5540e7210d3c9fba2f81fa3", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/27d2b3265b5d550ec411b4319967ae7cfddfb2e0", + "reference": "27d2b3265b5d550ec411b4319967ae7cfddfb2e0", "shasum": "" }, "require": { - "composer/semver": "^3.2", + "composer/semver": "^3.4", "composer/xdebug-handler": "^3.0.3", - "doctrine/annotations": "^1.13", "ext-json": "*", "ext-tokenizer": "*", "php": "^7.4 || ^8.0", - "php-cs-fixer/diff": "^2.0", - "symfony/console": "^5.4 || ^6.0", - "symfony/event-dispatcher": "^5.4 || ^6.0", - "symfony/filesystem": "^5.4 || ^6.0", - "symfony/finder": "^5.4 || ^6.0", - "symfony/options-resolver": "^5.4 || ^6.0", - "symfony/polyfill-mbstring": "^1.23", - "symfony/polyfill-php80": "^1.25", - "symfony/polyfill-php81": "^1.25", - "symfony/process": "^5.4 || ^6.0", - "symfony/stopwatch": "^5.4 || ^6.0" - }, - "require-dev": { + "sebastian/diff": "^4.0 || ^5.0", + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/event-dispatcher": "^5.4 || ^6.0 || ^7.0", + "symfony/filesystem": "^5.4 || ^6.0 || ^7.0", + "symfony/finder": "^5.4 || ^6.0 || ^7.0", + "symfony/options-resolver": "^5.4 || ^6.0 || ^7.0", + "symfony/polyfill-mbstring": "^1.28", + "symfony/polyfill-php80": "^1.28", + "symfony/polyfill-php81": "^1.28", + "symfony/process": "^5.4 || ^6.0 || ^7.0", + "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0" + }, + "require-dev": { + "facile-it/paraunit": "^1.3 || ^2.0", "justinrainbow/json-schema": "^5.2", - "keradus/cli-executor": "^1.5", - "mikey179/vfsstream": "^1.6.10", - "php-coveralls/php-coveralls": "^2.5.2", + "keradus/cli-executor": "^2.1", + "mikey179/vfsstream": "^1.6.11", + "php-coveralls/php-coveralls": "^2.7", "php-cs-fixer/accessible-object": "^1.1", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.2", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.2.1", - "phpspec/prophecy": "^1.15", + "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.4", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.4", + "phpspec/prophecy": "^1.17", "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.5", - "phpunitgoodpractices/polyfill": "^1.5", - "phpunitgoodpractices/traits": "^1.9.1", - "symfony/phpunit-bridge": "^6.0", - "symfony/yaml": "^5.4 || ^6.0" + "phpunit/phpunit": "^9.6", + "symfony/phpunit-bridge": "^6.3.8 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, "suggest": { "ext-dom": "For handling output formats in XML", @@ -10435,9 +10875,15 @@ } ], "description": "A tool to automatically fix PHP code style", + "keywords": [ + "Static code analysis", + "fixer", + "standards", + "static analysis" + ], "support": { - "issues": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/issues", - "source": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/tree/v3.8.0" + "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.40.0" }, "funding": [ { @@ -10445,24 +10891,24 @@ "type": "github" } ], - "time": "2022-03-18T17:20:59+00:00" + "time": "2023-11-26T09:25:53+00:00" }, { "name": "laminas/laminas-diactoros", - "version": "2.25.2", + "version": "2.26.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-diactoros.git", - "reference": "9f3f4bf5b99c9538b6f1dbcc20f6fec357914f9e" + "reference": "6584d44eb8e477e89d453313b858daac6183cddc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-diactoros/zipball/9f3f4bf5b99c9538b6f1dbcc20f6fec357914f9e", - "reference": "9f3f4bf5b99c9538b6f1dbcc20f6fec357914f9e", + "url": "https://api.github.com/repos/laminas/laminas-diactoros/zipball/6584d44eb8e477e89d453313b858daac6183cddc", + "reference": "6584d44eb8e477e89d453313b858daac6183cddc", "shasum": "" }, "require": { - "php": "~8.0.0 || ~8.1.0 || ~8.2.0", + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", "psr/http-factory": "^1.0", "psr/http-message": "^1.1" }, @@ -10542,7 +10988,7 @@ "type": "community_bridge" } ], - "time": "2023-04-17T15:44:17+00:00" + "time": "2023-10-29T16:17:44+00:00" }, { "name": "lusitanian/oauth", @@ -10880,23 +11326,24 @@ }, { "name": "pdepend/pdepend", - "version": "2.12.1", + "version": "2.16.0", "source": { "type": "git", "url": "https://github.com/pdepend/pdepend.git", - "reference": "7a892d56ceafd804b4a2ecc85184640937ce9e84" + "reference": "8dfc0c46529e2073fa97986552f80646eedac562" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pdepend/pdepend/zipball/7a892d56ceafd804b4a2ecc85184640937ce9e84", - "reference": "7a892d56ceafd804b4a2ecc85184640937ce9e84", + "url": "https://api.github.com/repos/pdepend/pdepend/zipball/8dfc0c46529e2073fa97986552f80646eedac562", + "reference": "8dfc0c46529e2073fa97986552f80646eedac562", "shasum": "" }, "require": { "php": ">=5.3.7", - "symfony/config": "^2.3.0|^3|^4|^5|^6.0", - "symfony/dependency-injection": "^2.3.0|^3|^4|^5|^6.0", - "symfony/filesystem": "^2.3.0|^3|^4|^5|^6.0" + "symfony/config": "^2.3.0|^3|^4|^5|^6.0|^7.0", + "symfony/dependency-injection": "^2.3.0|^3|^4|^5|^6.0|^7.0", + "symfony/filesystem": "^2.3.0|^3|^4|^5|^6.0|^7.0", + "symfony/polyfill-mbstring": "^1.19" }, "require-dev": { "easy-doc/easy-doc": "0.0.0|^1.2.3", @@ -10923,9 +11370,15 @@ "BSD-3-Clause" ], "description": "Official version of pdepend to be handled with Composer", + "keywords": [ + "PHP Depend", + "PHP_Depend", + "dev", + "pdepend" + ], "support": { "issues": "https://github.com/pdepend/pdepend/issues", - "source": "https://github.com/pdepend/pdepend/tree/2.12.1" + "source": "https://github.com/pdepend/pdepend/tree/2.16.0" }, "funding": [ { @@ -10933,7 +11386,7 @@ "type": "tidelift" } ], - "time": "2022-09-08T19:30:37+00:00" + "time": "2023-11-29T08:52:35+00:00" }, { "name": "phar-io/manifest", @@ -11046,59 +11499,6 @@ }, "time": "2022-02-21T01:04:05+00:00" }, - { - "name": "php-cs-fixer/diff", - "version": "v2.0.2", - "source": { - "type": "git", - "url": "https://github.com/PHP-CS-Fixer/diff.git", - "reference": "29dc0d507e838c4580d018bd8b5cb412474f7ec3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/diff/zipball/29dc0d507e838c4580d018bd8b5cb412474f7ec3", - "reference": "29dc0d507e838c4580d018bd8b5cb412474f7ec3", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.7.23 || ^6.4.3 || ^7.0", - "symfony/process": "^3.3" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "sebastian/diff v3 backport support for PHP 5.6+", - "homepage": "https://github.com/PHP-CS-Fixer", - "keywords": [ - "diff" - ], - "support": { - "issues": "https://github.com/PHP-CS-Fixer/diff/issues", - "source": "https://github.com/PHP-CS-Fixer/diff/tree/v2.0.2" - }, - "abandoned": true, - "time": "2020-10-14T08:32:19+00:00" - }, { "name": "php-webdriver/webdriver", "version": "1.13.1", @@ -11226,192 +11626,24 @@ }, "time": "2019-12-27T09:44:58+00:00" }, - { - "name": "phpdocumentor/reflection-common", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-2.x": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" - } - ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", - "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" - ], - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" - }, - "time": "2020-06-27T09:03:43+00:00" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "5.3.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", - "shasum": "" - }, - "require": { - "ext-filter": "*", - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.3", - "webmozart/assert": "^1.9.1" - }, - "require-dev": { - "mockery/mockery": "~1.3.2", - "psalm/phar": "^4.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - }, - { - "name": "Jaap van Otterdijk", - "email": "account@ijaap.nl" - } - ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" - }, - "time": "2021-10-19T17:43:47+00:00" - }, - { - "name": "phpdocumentor/type-resolver", - "version": "1.7.2", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "b2fe4d22a5426f38e014855322200b97b5362c0d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/b2fe4d22a5426f38e014855322200b97b5362c0d", - "reference": "b2fe4d22a5426f38e014855322200b97b5362c0d", - "shasum": "" - }, - "require": { - "doctrine/deprecations": "^1.0", - "php": "^7.4 || ^8.0", - "phpdocumentor/reflection-common": "^2.0", - "phpstan/phpdoc-parser": "^1.13" - }, - "require-dev": { - "ext-tokenizer": "*", - "phpbench/phpbench": "^1.2", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-phpunit": "^1.1", - "phpunit/phpunit": "^9.5", - "rector/rector": "^0.13.9", - "vimeo/psalm": "^4.25" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-1.x": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", - "support": { - "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.7.2" - }, - "time": "2023-05-30T18:13:47+00:00" - }, { "name": "phpmd/phpmd", - "version": "2.13.0", + "version": "2.14.1", "source": { "type": "git", "url": "https://github.com/phpmd/phpmd.git", - "reference": "dad0228156856b3ad959992f9748514fa943f3e3" + "reference": "442fc2c34edcd5198b442d8647c7f0aec3afabe8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpmd/phpmd/zipball/dad0228156856b3ad959992f9748514fa943f3e3", - "reference": "dad0228156856b3ad959992f9748514fa943f3e3", + "url": "https://api.github.com/repos/phpmd/phpmd/zipball/442fc2c34edcd5198b442d8647c7f0aec3afabe8", + "reference": "442fc2c34edcd5198b442d8647c7f0aec3afabe8", "shasum": "" }, "require": { "composer/xdebug-handler": "^1.0 || ^2.0 || ^3.0", "ext-xml": "*", - "pdepend/pdepend": "^2.12.1", + "pdepend/pdepend": "^2.15.1", "php": ">=5.3.9" }, "require-dev": { @@ -11421,7 +11653,7 @@ "gregwar/rst": "^1.0", "mikey179/vfsstream": "^1.6.8", "phpunit/phpunit": "^4.8.36 || ^5.7.27", - "squizlabs/php_codesniffer": "^2.0" + "squizlabs/php_codesniffer": "^2.9.2 || ^3.7.2" }, "bin": [ "src/bin/phpmd" @@ -11458,6 +11690,7 @@ "description": "PHPMD is a spin-off project of PHP Depend and aims to be a PHP equivalent of the well known Java tool PMD.", "homepage": "https://phpmd.org/", "keywords": [ + "dev", "mess detection", "mess detector", "pdepend", @@ -11467,7 +11700,7 @@ "support": { "irc": "irc://irc.freenode.org/phpmd", "issues": "https://github.com/phpmd/phpmd/issues", - "source": "https://github.com/phpmd/phpmd/tree/2.13.0" + "source": "https://github.com/phpmd/phpmd/tree/2.14.1" }, "funding": [ { @@ -11475,135 +11708,20 @@ "type": "tidelift" } ], - "time": "2022-09-10T08:44:15+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.17.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "15873c65b207b07765dbc3c95d20fdf4a320cbe2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/15873c65b207b07765dbc3c95d20fdf4a320cbe2", - "reference": "15873c65b207b07765dbc3c95d20fdf4a320cbe2", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2 || ^2.0", - "php": "^7.2 || 8.0.* || 8.1.* || 8.2.*", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpstan/phpstan": "^1.9", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.17.0" - }, - "time": "2023-02-02T15:41:36+00:00" - }, - { - "name": "phpstan/phpdoc-parser", - "version": "1.23.0", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "a2b24135c35852b348894320d47b3902a94bc494" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/a2b24135c35852b348894320d47b3902a94bc494", - "reference": "a2b24135c35852b348894320d47b3902a94bc494", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/annotations": "^2.0", - "nikic/php-parser": "^4.15", - "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^1.5", - "phpstan/phpstan-phpunit": "^1.1", - "phpstan/phpstan-strict-rules": "^1.0", - "phpunit/phpunit": "^9.5", - "symfony/process": "^5.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "PHPStan\\PhpDocParser\\": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "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.23.0" - }, - "time": "2023-07-23T22:17:56+00:00" + "time": "2023-09-28T13:07:44+00:00" }, { "name": "phpstan/phpstan", - "version": "1.9.14", + "version": "1.10.46", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "e5fcc96289cf737304286a9b505fbed091f02e58" + "reference": "90d3d25c5b98b8068916bbf08ce42d5cb6c54e70" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e5fcc96289cf737304286a9b505fbed091f02e58", - "reference": "e5fcc96289cf737304286a9b505fbed091f02e58", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/90d3d25c5b98b8068916bbf08ce42d5cb6c54e70", + "reference": "90d3d25c5b98b8068916bbf08ce42d5cb6c54e70", "shasum": "" }, "require": { @@ -11632,8 +11750,11 @@ "static analysis" ], "support": { + "docs": "https://phpstan.org/user-guide/getting-started", + "forum": "https://github.com/phpstan/phpstan/discussions", "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/1.9.14" + "security": "https://github.com/phpstan/phpstan/security/policy", + "source": "https://github.com/phpstan/phpstan-src" }, "funding": [ { @@ -11649,20 +11770,20 @@ "type": "tidelift" } ], - "time": "2023-01-19T10:47:09+00:00" + "time": "2023-11-28T14:57:26+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "9.2.27", + "version": "9.2.29", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "b0a88255cb70d52653d80c890bd7f38740ea50d1" + "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/b0a88255cb70d52653d80c890bd7f38740ea50d1", - "reference": "b0a88255cb70d52653d80c890bd7f38740ea50d1", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/6a3a87ac2bbe33b25042753df8195ba4aa534c76", + "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76", "shasum": "" }, "require": { @@ -11719,7 +11840,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/9.2.27" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.29" }, "funding": [ { @@ -11727,7 +11848,7 @@ "type": "github" } ], - "time": "2023-07-26T13:44:30+00:00" + "time": "2023-09-19T04:57:46+00:00" }, { "name": "phpunit/php-file-iterator", @@ -11972,20 +12093,20 @@ }, { "name": "phpunit/phpunit", - "version": "9.5.22", + "version": "9.6.13", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "e329ac6e8744f461518272612a479fde958752fe" + "reference": "f3d767f7f9e191eab4189abe41ab37797e30b1be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/e329ac6e8744f461518272612a479fde958752fe", - "reference": "e329ac6e8744f461518272612a479fde958752fe", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f3d767f7f9e191eab4189abe41ab37797e30b1be", + "reference": "f3d767f7f9e191eab4189abe41ab37797e30b1be", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.3.1", + "doctrine/instantiator": "^1.3.1 || ^2", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", @@ -11996,30 +12117,26 @@ "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", "php": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.13", + "phpunit/php-code-coverage": "^9.2.28", "phpunit/php-file-iterator": "^3.0.5", "phpunit/php-invoker": "^3.1.1", "phpunit/php-text-template": "^2.0.3", "phpunit/php-timer": "^5.0.2", "sebastian/cli-parser": "^1.0.1", "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", + "sebastian/comparator": "^4.0.8", "sebastian/diff": "^4.0.3", "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", + "sebastian/exporter": "^4.0.5", "sebastian/global-state": "^5.0.1", "sebastian/object-enumerator": "^4.0.3", "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^3.0", + "sebastian/type": "^3.2", "sebastian/version": "^3.0.2" }, - "require-dev": { - "phpspec/prophecy-phpunit": "^2.0.1" - }, "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" + "ext-soap": "To be able to generate mocks based on WSDL files", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, "bin": [ "phpunit" @@ -12027,7 +12144,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.5-dev" + "dev-master": "9.6-dev" } }, "autoload": { @@ -12058,7 +12175,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.22" + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.13" }, "funding": [ { @@ -12068,22 +12186,26 @@ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" } ], - "time": "2022-08-20T08:25:46+00:00" + "time": "2023-09-19T05:39:22+00:00" }, { "name": "psy/psysh", - "version": "v0.11.19", + "version": "v0.11.22", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "1724ceff278daeeac5a006744633bacbb2dc4706" + "reference": "128fa1b608be651999ed9789c95e6e2a31b5802b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/1724ceff278daeeac5a006744633bacbb2dc4706", - "reference": "1724ceff278daeeac5a006744633bacbb2dc4706", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/128fa1b608be651999ed9789c95e6e2a31b5802b", + "reference": "128fa1b608be651999ed9789c95e6e2a31b5802b", "shasum": "" }, "require": { @@ -12112,7 +12234,11 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "0.11.x-dev" + "dev-0.11": "0.11.x-dev" + }, + "bamarni-bin": { + "bin-links": false, + "forward-command": false } }, "autoload": { @@ -12144,32 +12270,31 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.11.19" + "source": "https://github.com/bobthecow/psysh/tree/v0.11.22" }, - "time": "2023-07-15T19:42:19+00:00" + "time": "2023-10-14T21:56:36+00:00" }, { "name": "rector/rector", - "version": "0.15.11", + "version": "0.15.25", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "0034e743daf120f70359b9600a0946a17e3a6364" + "reference": "015935c7ed9e48a4f5895ba974f337e20a263841" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/0034e743daf120f70359b9600a0946a17e3a6364", - "reference": "0034e743daf120f70359b9600a0946a17e3a6364", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/015935c7ed9e48a4f5895ba974f337e20a263841", + "reference": "015935c7ed9e48a4f5895ba974f337e20a263841", "shasum": "" }, "require": { "php": "^7.2|^8.0", - "phpstan/phpstan": "^1.9.14" + "phpstan/phpstan": "^1.10.14" }, "conflict": { "rector/rector-doctrine": "*", "rector/rector-downgrade-php": "*", - "rector/rector-php-parser": "*", "rector/rector-phpunit": "*", "rector/rector-symfony": "*" }, @@ -12192,9 +12317,15 @@ "MIT" ], "description": "Instant Upgrade and Automated Refactoring of any PHP code", + "keywords": [ + "automation", + "dev", + "migration", + "refactoring" + ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/0.15.11" + "source": "https://github.com/rectorphp/rector/tree/0.15.25" }, "funding": [ { @@ -12202,7 +12333,7 @@ "type": "github" } ], - "time": "2023-02-02T16:53:15+00:00" + "time": "2023-04-20T16:07:39+00:00" }, { "name": "sebastian/cli-parser", @@ -12373,16 +12504,16 @@ }, { "name": "sebastian/comparator", - "version": "4.0.6", + "version": "4.0.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" + "reference": "fa0f136dd2334583309d32b62544682ee972b51a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", + "reference": "fa0f136dd2334583309d32b62544682ee972b51a", "shasum": "" }, "require": { @@ -12435,7 +12566,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" }, "funding": [ { @@ -12443,7 +12574,7 @@ "type": "github" } ], - "time": "2020-10-26T15:49:45+00:00" + "time": "2022-09-14T12:41:17+00:00" }, { "name": "sebastian/complexity", @@ -12710,16 +12841,16 @@ }, { "name": "sebastian/global-state", - "version": "5.0.5", + "version": "5.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" + "reference": "bde739e7565280bda77be70044ac1047bc007e34" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", - "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bde739e7565280bda77be70044ac1047bc007e34", + "reference": "bde739e7565280bda77be70044ac1047bc007e34", "shasum": "" }, "require": { @@ -12762,7 +12893,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.6" }, "funding": [ { @@ -12770,7 +12901,7 @@ "type": "github" } ], - "time": "2022-02-14T08:28:10+00:00" + "time": "2023-08-02T09:26:13+00:00" }, { "name": "sebastian/lines-of-code", @@ -13312,16 +13443,16 @@ }, { "name": "squizlabs/php_codesniffer", - "version": "3.7.1", + "version": "3.7.2", "source": { "type": "git", "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "1359e176e9307e906dc3d890bcc9603ff6d90619" + "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/1359e176e9307e906dc3d890bcc9603ff6d90619", - "reference": "1359e176e9307e906dc3d890bcc9603ff6d90619", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ed8e00df0a83aa96acf703f8c2979ff33341f879", + "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879", "shasum": "" }, "require": { @@ -13357,27 +13488,28 @@ "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", "keywords": [ "phpcs", - "standards" + "standards", + "static analysis" ], "support": { "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", "source": "https://github.com/squizlabs/PHP_CodeSniffer", "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" }, - "time": "2022-06-18T07:21:10+00:00" + "time": "2023-02-22T23:07:41+00:00" }, { "name": "symfony/dotenv", - "version": "v5.4.22", + "version": "v5.4.30", "source": { "type": "git", "url": "https://github.com/symfony/dotenv.git", - "reference": "77b7660bfcb85e8f28287d557d7af0046bcd2ca3" + "reference": "ceed2cd28442adcf3679a9a82dacd45baeefc458" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/77b7660bfcb85e8f28287d557d7af0046bcd2ca3", - "reference": "77b7660bfcb85e8f28287d557d7af0046bcd2ca3", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/ceed2cd28442adcf3679a9a82dacd45baeefc458", + "reference": "ceed2cd28442adcf3679a9a82dacd45baeefc458", "shasum": "" }, "require": { @@ -13419,7 +13551,7 @@ "environment" ], "support": { - "source": "https://github.com/symfony/dotenv/tree/v5.4.22" + "source": "https://github.com/symfony/dotenv/tree/v5.4.30" }, "funding": [ { @@ -13435,20 +13567,20 @@ "type": "tidelift" } ], - "time": "2023-03-09T20:36:58+00:00" + "time": "2023-10-26T16:37:39+00:00" }, { "name": "symfony/mime", - "version": "v5.4.23", + "version": "v5.4.26", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "ae0a1032a450a3abf305ee44fc55ed423fbf16e3" + "reference": "2ea06dfeee20000a319d8407cea1d47533d5a9d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/ae0a1032a450a3abf305ee44fc55ed423fbf16e3", - "reference": "ae0a1032a450a3abf305ee44fc55ed423fbf16e3", + "url": "https://api.github.com/repos/symfony/mime/zipball/2ea06dfeee20000a319d8407cea1d47533d5a9d2", + "reference": "2ea06dfeee20000a319d8407cea1d47533d5a9d2", "shasum": "" }, "require": { @@ -13463,7 +13595,7 @@ "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", "symfony/mailer": "<4.4", - "symfony/serializer": "<5.4.14|>=6.0,<6.0.14|>=6.1,<6.1.6" + "symfony/serializer": "<5.4.26|>=6,<6.2.13|>=6.3,<6.3.2" }, "require-dev": { "egulias/email-validator": "^2.1.10|^3.1|^4", @@ -13471,7 +13603,7 @@ "symfony/dependency-injection": "^4.4|^5.0|^6.0", "symfony/property-access": "^4.4|^5.1|^6.0", "symfony/property-info": "^4.4|^5.1|^6.0", - "symfony/serializer": "^5.4.14|~6.0.14|^6.1.6" + "symfony/serializer": "^5.4.26|~6.2.13|^6.3.2" }, "type": "library", "autoload": { @@ -13503,7 +13635,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v5.4.23" + "source": "https://github.com/symfony/mime/tree/v5.4.26" }, "funding": [ { @@ -13519,24 +13651,24 @@ "type": "tidelift" } ], - "time": "2023-04-19T09:49:13+00:00" + "time": "2023-07-27T06:29:31+00:00" }, { "name": "symfony/options-resolver", - "version": "v6.3.0", + "version": "v7.0.0", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "a10f19f5198d589d5c33333cffe98dc9820332dd" + "reference": "700ff4096e346f54cb628ea650767c8130f1001f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/a10f19f5198d589d5c33333cffe98dc9820332dd", - "reference": "a10f19f5198d589d5c33333cffe98dc9820332dd", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/700ff4096e346f54cb628ea650767c8130f1001f", + "reference": "700ff4096e346f54cb628ea650767c8130f1001f", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3" }, "type": "library", @@ -13570,7 +13702,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v6.3.0" + "source": "https://github.com/symfony/options-resolver/tree/v7.0.0" }, "funding": [ { @@ -13586,25 +13718,25 @@ "type": "tidelift" } ], - "time": "2023-05-12T14:21:09+00:00" + "time": "2023-08-08T10:20:21+00:00" }, { "name": "symfony/stopwatch", - "version": "v5.4.5", + "version": "v7.0.0", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "4d04b5c24f3c9a1a168a131f6cbe297155bc0d30" + "reference": "7bbfa3dd564a0ce12eb4acaaa46823c740f9cb7a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/4d04b5c24f3c9a1a168a131f6cbe297155bc0d30", - "reference": "4d04b5c24f3c9a1a168a131f6cbe297155bc0d30", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/7bbfa3dd564a0ce12eb4acaaa46823c740f9cb7a", + "reference": "7bbfa3dd564a0ce12eb4acaaa46823c740f9cb7a", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/service-contracts": "^1|^2|^3" + "php": ">=8.2", + "symfony/service-contracts": "^2.5|^3" }, "type": "library", "autoload": { @@ -13632,7 +13764,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v5.4.5" + "source": "https://github.com/symfony/stopwatch/tree/v7.0.0" }, "funding": [ { @@ -13648,31 +13780,32 @@ "type": "tidelift" } ], - "time": "2022-02-18T16:06:09+00:00" + "time": "2023-07-05T13:06:06+00:00" }, { "name": "symfony/yaml", - "version": "v6.3.0", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "a9a8337aa641ef2aa39c3e028f9107ec391e5927" + "reference": "4f9237a1bb42455d609e6687d2613dde5b41a587" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/a9a8337aa641ef2aa39c3e028f9107ec391e5927", - "reference": "a9a8337aa641ef2aa39c3e028f9107ec391e5927", + "url": "https://api.github.com/repos/symfony/yaml/zipball/4f9237a1bb42455d609e6687d2613dde5b41a587", + "reference": "4f9237a1bb42455d609e6687d2613dde5b41a587", "shasum": "" }, "require": { "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "^1.8" }, "conflict": { "symfony/console": "<5.4" }, "require-dev": { - "symfony/console": "^5.4|^6.0" + "symfony/console": "^5.4|^6.0|^7.0" }, "bin": [ "Resources/bin/yaml-lint" @@ -13703,7 +13836,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.3.0" + "source": "https://github.com/symfony/yaml/tree/v6.4.0" }, "funding": [ { @@ -13719,20 +13852,20 @@ "type": "tidelift" } ], - "time": "2023-04-28T13:28:14+00:00" + "time": "2023-11-06T11:00:25+00:00" }, { "name": "theseer/tokenizer", - "version": "1.2.1", + "version": "1.2.2", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" + "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b2ad5003ca10d4ee50a12da31de12a5774ba6b96", + "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96", "shasum": "" }, "require": { @@ -13761,7 +13894,7 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" + "source": "https://github.com/theseer/tokenizer/tree/1.2.2" }, "funding": [ { @@ -13769,7 +13902,7 @@ "type": "github" } ], - "time": "2021-07-28T10:34:58+00:00" + "time": "2023-11-20T00:12:19+00:00" }, { "name": "weew/helpers-array", @@ -13841,5 +13974,5 @@ "lib-libxml": "*" }, "platform-dev": [], - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.6.0" } From 838dc60a4d5326c8ecf38a7a2e82dd0f2aa05e13 Mon Sep 17 00:00:00 2001 From: Banvari Lal Date: Tue, 12 Dec 2023 13:57:17 +0530 Subject: [PATCH 032/104] AC-8964::ConfigurableProduct Stock status --- .../Model/Wishlist/ChildSku.php | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/app/code/Magento/ConfigurableProductGraphQl/Model/Wishlist/ChildSku.php b/app/code/Magento/ConfigurableProductGraphQl/Model/Wishlist/ChildSku.php index 84decab81c96a..90b67b19236bc 100644 --- a/app/code/Magento/ConfigurableProductGraphQl/Model/Wishlist/ChildSku.php +++ b/app/code/Magento/ConfigurableProductGraphQl/Model/Wishlist/ChildSku.php @@ -36,8 +36,17 @@ public function resolve( /** @var Product $product */ $product = $value['model']; - $optionProduct = $product->getCustomOption('simple_product')->getProduct(); - return $optionProduct->getSku(); + /** to handle no child sku selected at add to whishlist time */ + $optionsArray = json_decode($product->getCustomOption('info_buyRequest')->getValue(), true); + $superAttribute = $optionsArray['super_attribute']; + $totalSelected = array_filter($superAttribute); + + if(count($totalSelected) > 0) { + $optionProduct = $product->getCustomOption('simple_product')->getProduct(); + return $optionProduct->getSku(); + } else { + return ""; + } } } From b953dda642dc5b4cfb1975ea1c75e862e169bf7e Mon Sep 17 00:00:00 2001 From: Dan Wallis Date: Tue, 12 Dec 2023 10:38:49 +0000 Subject: [PATCH 033/104] Disable charts on dashboard by default --- app/code/Magento/Backend/etc/config.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/Backend/etc/config.xml b/app/code/Magento/Backend/etc/config.xml index f683b1dc81c90..e1f32f39a466f 100644 --- a/app/code/Magento/Backend/etc/config.xml +++ b/app/code/Magento/Backend/etc/config.xml @@ -23,7 +23,7 @@ general - 1 + 0 1 From 28d38f9db1a2854f89d847bb0b59f1cea1787c86 Mon Sep 17 00:00:00 2001 From: Banvari Lal Date: Tue, 12 Dec 2023 16:11:18 +0530 Subject: [PATCH 034/104] AC-8964::ConfigurableProduct Stock status --- .../ConfigurableProductGraphQl/Model/Wishlist/ChildSku.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/ConfigurableProductGraphQl/Model/Wishlist/ChildSku.php b/app/code/Magento/ConfigurableProductGraphQl/Model/Wishlist/ChildSku.php index 90b67b19236bc..d65883638004a 100644 --- a/app/code/Magento/ConfigurableProductGraphQl/Model/Wishlist/ChildSku.php +++ b/app/code/Magento/ConfigurableProductGraphQl/Model/Wishlist/ChildSku.php @@ -42,7 +42,7 @@ public function resolve( $superAttribute = $optionsArray['super_attribute']; $totalSelected = array_filter($superAttribute); - if(count($totalSelected) > 0) { + if (count($totalSelected) > 0) { $optionProduct = $product->getCustomOption('simple_product')->getProduct(); return $optionProduct->getSku(); } else { From 9843aa48594fbaecf965da32a8e9f42b3db51ee6 Mon Sep 17 00:00:00 2001 From: Banvari Lal Date: Tue, 12 Dec 2023 18:01:56 +0530 Subject: [PATCH 035/104] AC-8964::ConfigurableProduct Stock status --- .../ConfigurableProductGraphQl/Model/Wishlist/ChildSku.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/ConfigurableProductGraphQl/Model/Wishlist/ChildSku.php b/app/code/Magento/ConfigurableProductGraphQl/Model/Wishlist/ChildSku.php index d65883638004a..c18855a5a1c06 100644 --- a/app/code/Magento/ConfigurableProductGraphQl/Model/Wishlist/ChildSku.php +++ b/app/code/Magento/ConfigurableProductGraphQl/Model/Wishlist/ChildSku.php @@ -37,7 +37,7 @@ public function resolve( /** @var Product $product */ $product = $value['model']; - /** to handle no child sku selected at add to whishlist time */ + /** to handle no child sku selected at add to wishlist time */ $optionsArray = json_decode($product->getCustomOption('info_buyRequest')->getValue(), true); $superAttribute = $optionsArray['super_attribute']; $totalSelected = array_filter($superAttribute); From 0628512818eb414ff175ad90ea82f2a094ff1011 Mon Sep 17 00:00:00 2001 From: Banvari Lal Date: Wed, 20 Dec 2023 13:21:50 +0530 Subject: [PATCH 036/104] AC-8966::Bundle product does not show per item applied discounts --- .../QuoteGraphQl/Model/Resolver/CartItemPrices.php | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/app/code/Magento/QuoteGraphQl/Model/Resolver/CartItemPrices.php b/app/code/Magento/QuoteGraphQl/Model/Resolver/CartItemPrices.php index 4722b3db537a1..22a8392f78778 100644 --- a/app/code/Magento/QuoteGraphQl/Model/Resolver/CartItemPrices.php +++ b/app/code/Magento/QuoteGraphQl/Model/Resolver/CartItemPrices.php @@ -66,6 +66,16 @@ public function resolve(Field $field, $context, ResolveInfo $info, array $value $this->totals = $this->totalsCollector->collectQuoteTotals($cartItem->getQuote()); } $currencyCode = $cartItem->getQuote()->getQuoteCurrencyCode(); + + if ($cartItem->getProductType() == 'bundle') { + $discountValues = $this->getDiscountValues($cartItem, $currencyCode); + $discountAmount = 0; + foreach ((array) $discountValues as $discountValue) { + $discountAmount += $discountValue['amount']['value']; + } + } else { + $discountAmount = $cartItem->getDiscountAmount(); + } return [ 'model' => $cartItem, 'price' => [ @@ -86,7 +96,7 @@ public function resolve(Field $field, $context, ResolveInfo $info, array $value ], 'total_item_discount' => [ 'currency' => $currencyCode, - 'value' => $cartItem->getDiscountAmount(), + 'value' => $discountAmount, ], 'discounts' => $this->getDiscountValues($cartItem, $currencyCode) ]; From bb6e291f85a625d94174d2e9a21c447f766403cc Mon Sep 17 00:00:00 2001 From: Banvari Lal Date: Thu, 21 Dec 2023 13:44:37 +0530 Subject: [PATCH 037/104] AC-8966::Bundle product does not show per item applied discounts --- app/code/Magento/QuoteGraphQl/Model/Resolver/CartItemPrices.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/code/Magento/QuoteGraphQl/Model/Resolver/CartItemPrices.php b/app/code/Magento/QuoteGraphQl/Model/Resolver/CartItemPrices.php index 22a8392f78778..131d6c32c4a23 100644 --- a/app/code/Magento/QuoteGraphQl/Model/Resolver/CartItemPrices.php +++ b/app/code/Magento/QuoteGraphQl/Model/Resolver/CartItemPrices.php @@ -67,6 +67,7 @@ public function resolve(Field $field, $context, ResolveInfo $info, array $value } $currencyCode = $cartItem->getQuote()->getQuoteCurrencyCode(); + /** calculate bundle product discount */ if ($cartItem->getProductType() == 'bundle') { $discountValues = $this->getDiscountValues($cartItem, $currencyCode); $discountAmount = 0; From 47bb5f4bdd8c4ee9d3fd406b62b753da507e0aac Mon Sep 17 00:00:00 2001 From: glo63652 Date: Tue, 19 Dec 2023 19:02:37 +0530 Subject: [PATCH 038/104] AC-9147::Newsletter subscription flag for customer graphql type is in the wrong module --- app/code/Magento/CustomerGraphQl/etc/di.xml | 3 --- .../CustomerGraphQl/etc/schema.graphqls | 2 +- .../Cache/Subscriber/ResolverCacheIdentity.php | 0 .../Resolver/Cache/Subscriber/TagsStrategy.php | 2 +- .../Model/Resolver/IsSubscribed.php | 2 +- .../Unit/Model/Resolver/IsSubscribedTest.php | 4 ++-- app/code/Magento/NewsletterGraphQl/etc/di.xml | 18 ++++++++++++++++++ 7 files changed, 23 insertions(+), 8 deletions(-) rename app/code/Magento/{CustomerGraphQl => NewsletterGraphQl}/Model/Resolver/Cache/Subscriber/ResolverCacheIdentity.php (100%) rename app/code/Magento/{CustomerGraphQl => NewsletterGraphQl}/Model/Resolver/Cache/Subscriber/TagsStrategy.php (87%) rename app/code/Magento/{CustomerGraphQl => NewsletterGraphQl}/Model/Resolver/IsSubscribed.php (97%) rename app/code/Magento/{CustomerGraphQl => NewsletterGraphQl}/Test/Unit/Model/Resolver/IsSubscribedTest.php (97%) create mode 100644 app/code/Magento/NewsletterGraphQl/etc/di.xml diff --git a/app/code/Magento/CustomerGraphQl/etc/di.xml b/app/code/Magento/CustomerGraphQl/etc/di.xml index 6fbc996079086..e76469790594e 100644 --- a/app/code/Magento/CustomerGraphQl/etc/di.xml +++ b/app/code/Magento/CustomerGraphQl/etc/di.xml @@ -30,9 +30,6 @@ Magento\CustomerGraphQl\Model\Resolver\Cache\Customer\Address\TagsStrategy - - Magento\CustomerGraphQl\Model\Resolver\Cache\Subscriber\TagsStrategy - diff --git a/app/code/Magento/CustomerGraphQl/etc/schema.graphqls b/app/code/Magento/CustomerGraphQl/etc/schema.graphqls index f6b09489501e5..fd148e12e70af 100644 --- a/app/code/Magento/CustomerGraphQl/etc/schema.graphqls +++ b/app/code/Magento/CustomerGraphQl/etc/schema.graphqls @@ -136,7 +136,7 @@ type Customer @doc(description: "Defines the customer name, addresses, and other date_of_birth: String @doc(description: "The customer's date of birth.") taxvat: String @doc(description: "The customer's Value-added tax (VAT) number (for corporate customers).") id: Int @doc(description: "The ID assigned to the customer.") @deprecated(reason: "`id` is not needed as part of `Customer`, because on the server side, it can be identified based on the customer token used for authentication. There is no need to know customer ID on the client side.") - is_subscribed: Boolean @doc(description: "Indicates whether the customer is subscribed to the company's newsletter.") @resolver(class: "\\Magento\\CustomerGraphQl\\Model\\Resolver\\IsSubscribed") + is_subscribed: Boolean @doc(description: "Indicates whether the customer is subscribed to the company's newsletter.") @resolver(class: "\\Magento\\NewsletterGraphQl\\Model\\Resolver\\IsSubscribed") addresses: [CustomerAddress] @doc(description: "An array containing the customer's shipping and billing addresses.") @resolver(class: "\\Magento\\CustomerGraphQl\\Model\\Resolver\\CustomerAddresses") gender: Int @doc(description: "The customer's gender (Male - 1, Female - 2).") custom_attributes(attributeCodes: [ID!]): [AttributeValueInterface] @doc(description: "Customer's custom attributes.") @resolver(class: "Magento\\CustomerGraphQl\\Model\\Resolver\\CustomAttributeFilter") diff --git a/app/code/Magento/CustomerGraphQl/Model/Resolver/Cache/Subscriber/ResolverCacheIdentity.php b/app/code/Magento/NewsletterGraphQl/Model/Resolver/Cache/Subscriber/ResolverCacheIdentity.php similarity index 100% rename from app/code/Magento/CustomerGraphQl/Model/Resolver/Cache/Subscriber/ResolverCacheIdentity.php rename to app/code/Magento/NewsletterGraphQl/Model/Resolver/Cache/Subscriber/ResolverCacheIdentity.php diff --git a/app/code/Magento/CustomerGraphQl/Model/Resolver/Cache/Subscriber/TagsStrategy.php b/app/code/Magento/NewsletterGraphQl/Model/Resolver/Cache/Subscriber/TagsStrategy.php similarity index 87% rename from app/code/Magento/CustomerGraphQl/Model/Resolver/Cache/Subscriber/TagsStrategy.php rename to app/code/Magento/NewsletterGraphQl/Model/Resolver/Cache/Subscriber/TagsStrategy.php index 7b953b2534513..0bcacbcd63472 100644 --- a/app/code/Magento/CustomerGraphQl/Model/Resolver/Cache/Subscriber/TagsStrategy.php +++ b/app/code/Magento/NewsletterGraphQl/Model/Resolver/Cache/Subscriber/TagsStrategy.php @@ -5,7 +5,7 @@ */ declare(strict_types=1); -namespace Magento\CustomerGraphQl\Model\Resolver\Cache\Subscriber; +namespace Magento\NewsletterGraphQl\Model\Resolver\Cache\Subscriber; use Magento\Customer\Model\Customer; use Magento\Framework\App\Cache\Tag\StrategyInterface; diff --git a/app/code/Magento/CustomerGraphQl/Model/Resolver/IsSubscribed.php b/app/code/Magento/NewsletterGraphQl/Model/Resolver/IsSubscribed.php similarity index 97% rename from app/code/Magento/CustomerGraphQl/Model/Resolver/IsSubscribed.php rename to app/code/Magento/NewsletterGraphQl/Model/Resolver/IsSubscribed.php index e39ae2ba17db4..aba974b313ca4 100644 --- a/app/code/Magento/CustomerGraphQl/Model/Resolver/IsSubscribed.php +++ b/app/code/Magento/NewsletterGraphQl/Model/Resolver/IsSubscribed.php @@ -5,7 +5,7 @@ */ declare(strict_types=1); -namespace Magento\CustomerGraphQl\Model\Resolver; +namespace Magento\NewsletterGraphQl\Model\Resolver; use Magento\Customer\Api\Data\CustomerInterface; use Magento\Framework\App\ObjectManager; diff --git a/app/code/Magento/CustomerGraphQl/Test/Unit/Model/Resolver/IsSubscribedTest.php b/app/code/Magento/NewsletterGraphQl/Test/Unit/Model/Resolver/IsSubscribedTest.php similarity index 97% rename from app/code/Magento/CustomerGraphQl/Test/Unit/Model/Resolver/IsSubscribedTest.php rename to app/code/Magento/NewsletterGraphQl/Test/Unit/Model/Resolver/IsSubscribedTest.php index 6f8e69c9081ba..ad230e329ae72 100644 --- a/app/code/Magento/CustomerGraphQl/Test/Unit/Model/Resolver/IsSubscribedTest.php +++ b/app/code/Magento/NewsletterGraphQl/Test/Unit/Model/Resolver/IsSubscribedTest.php @@ -6,10 +6,10 @@ declare(strict_types=1); -namespace Magento\CustomerGraphQl\Test\Unit\Model\Resolver; +namespace Magento\NewsletterGraphQl\Test\Unit\Model\Resolver; use Magento\Customer\Api\Data\CustomerInterface; -use Magento\CustomerGraphQl\Model\Resolver\IsSubscribed; +use Magento\NewsletterGraphQl\Model\Resolver\IsSubscribed; use Magento\Framework\GraphQl\Config\Element\Field; use Magento\Framework\GraphQl\Schema\Type\ResolveInfo; use Magento\Framework\TestFramework\Unit\Helper\ObjectManager; diff --git a/app/code/Magento/NewsletterGraphQl/etc/di.xml b/app/code/Magento/NewsletterGraphQl/etc/di.xml new file mode 100644 index 0000000000000..ba6a00476fb1b --- /dev/null +++ b/app/code/Magento/NewsletterGraphQl/etc/di.xml @@ -0,0 +1,18 @@ + + + + + + + + Magento\NewsletterGraphQl\Model\Resolver\Cache\Subscriber\TagsStrategy + + + + + From afc6d4a6d3f2f67c52ee9d9a14874d75c925f4b1 Mon Sep 17 00:00:00 2001 From: glo5363 Date: Fri, 22 Dec 2023 13:12:34 +0530 Subject: [PATCH 039/104] #AC-9196::Update spomky-labs/otphp to its latest version available (11.2.0) --- composer.lock | 224 +++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 185 insertions(+), 39 deletions(-) diff --git a/composer.lock b/composer.lock index abf38bfca11fa..35e7fd459ee09 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": "aec0206abb7520976b68eddf877b128c", + "content-hash": "539ee58e4b0f8428b63a6872a2f498fe", "packages": [ { "name": "aws/aws-crt-php", @@ -1067,6 +1067,57 @@ ], "time": "2022-02-25T21:32:43+00:00" }, + { + "name": "elastic/transport", + "version": "v8.8.0", + "source": { + "type": "git", + "url": "git@github.com:elastic/elastic-transport-php.git", + "reference": "cdf9f63a16ec6bfb4c881ab89aa0e2a61fb7c20b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/elastic/elastic-transport-php/zipball/cdf9f63a16ec6bfb4c881ab89aa0e2a61fb7c20b", + "reference": "cdf9f63a16ec6bfb4c881ab89aa0e2a61fb7c20b", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.0", + "php": "^7.4 || ^8.0", + "php-http/discovery": "^1.14", + "php-http/httplug": "^2.3", + "psr/http-client": "^1.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0 || ^2.0", + "psr/log": "^1 || ^2 || ^3" + }, + "require-dev": { + "nyholm/psr7": "^1.5", + "php-http/mock-client": "^1.5", + "phpstan/phpstan": "^1.4", + "phpunit/phpunit": "^9.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Elastic\\Transport\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "HTTP transport PHP library for Elastic products", + "keywords": [ + "PSR_17", + "elastic", + "http", + "psr-18", + "psr-7", + "transport" + ], + "time": "2023-11-08T10:51:51+00:00" + }, { "name": "elasticsearch/elasticsearch", "version": "v8.5.3", @@ -7428,7 +7479,7 @@ "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.1", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.8" }, @@ -7554,8 +7605,8 @@ "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.1", "symfony/polyfill-php83": "^1.27" }, @@ -7572,9 +7623,6 @@ "symfony/mime": "^5.4|^6.0|^7.0", "symfony/rate-limiter": "^5.4|^6.0|^7.0" }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, "type": "library", "autoload": { "psr-4": { @@ -8554,6 +8602,86 @@ ], "time": "2023-01-26T09:26:14+00:00" }, + { + "name": "symfony/polyfill-php83", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php83.git", + "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11", + "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "symfony/polyfill-php80": "^1.14" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php83\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php83/tree/v1.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-08-16T06:22:46+00:00" + }, { "name": "symfony/process", "version": "v5.4.23", @@ -10671,7 +10799,7 @@ "shasum": "" }, "require": { - "composer/semver": "^3.4", + "composer/semver": "^3.3", "composer/xdebug-handler": "^3.0.3", "ext-json": "*", "ext-tokenizer": "*", @@ -10691,13 +10819,13 @@ "require-dev": { "facile-it/paraunit": "^1.3 || ^2.0", "justinrainbow/json-schema": "^5.2", - "keradus/cli-executor": "^2.1", + "keradus/cli-executor": "^2.0", "mikey179/vfsstream": "^1.6.11", - "php-coveralls/php-coveralls": "^2.7", + "php-coveralls/php-coveralls": "^2.5.3", "php-cs-fixer/accessible-object": "^1.1", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.4", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.4", - "phpspec/prophecy": "^1.17", + "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.2", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.2.1", + "phpspec/prophecy": "^1.16", "phpspec/prophecy-phpunit": "^2.0", "phpunit/phpunit": "^9.5", "symfony/phpunit-bridge": "^6.2.3 || ^7.0", @@ -10977,7 +11105,7 @@ "codeception/module-webdriver": "^3.0", "composer/composer": "^1.9||^2.0,!=2.2.16", "csharpru/vault-php": "^4.2.1", - "doctrine/annotations": "^1.13", + "doctrine/annotations": "^2.0", "ext-curl": "*", "ext-dom": "*", "ext-iconv": "*", @@ -10990,15 +11118,15 @@ "mustache/mustache": "~2.5", "nikic/php-parser": "^4.4", "php": ">=8.1", - "php-webdriver/webdriver": "^1.9.0 <1.14.0", - "spomky-labs/otphp": "^11.2", - "symfony/console": "^4.4||^5.4", - "symfony/dotenv": "^5.3", - "symfony/finder": "^5.0", - "symfony/http-foundation": "^5.0", - "symfony/mime": "^5.0", - "symfony/process": "^4.4||^5.4", - "symfony/string": "^5.4", + "php-webdriver/webdriver": "^1.14.0", + "spomky-labs/otphp": "^11.0", + "symfony/console": "^5.4||^6.0", + "symfony/dotenv": "^5.3||^6.0", + "symfony/finder": "^5.0||^6.0", + "symfony/http-foundation": "^5.0||^6.0", + "symfony/mime": "^5.0||^6.0", + "symfony/process": "^5.0||^6.0", + "symfony/string": "^5.4||^6.0", "weew/helpers-array": "^1.3" }, "require-dev": { @@ -11008,7 +11136,7 @@ "phpmd/phpmd": "^2.8.0", "phpunit/phpunit": "^9.5", "sebastian/phpcpd": "~6.0.0", - "squizlabs/php_codesniffer": "~3.6.0" + "squizlabs/php_codesniffer": "~3.7.0" }, "suggest": { "hoa/console": "Enables action and interactive console functionality" @@ -11361,7 +11489,7 @@ "ext-curl": "*", "ext-json": "*", "ext-zip": "*", - "php": "^5.6 || ~7.0 || ^8.0", + "php": "^7.3 || ^8.0", "symfony/polyfill-mbstring": "^1.12", "symfony/process": "^5.0 || ^6.0 || ^7.0" }, @@ -11369,13 +11497,14 @@ "facebook/webdriver": "*" }, "require-dev": { - "ondram/ci-detector": "^2.1 || ^3.5 || ^4.0", + "ergebnis/composer-normalize": "^2.20.0", + "ondram/ci-detector": "^4.0", "php-coveralls/php-coveralls": "^2.4", - "php-mock/php-mock-phpunit": "^1.1 || ^2.0", + "php-mock/php-mock-phpunit": "^2.0", "php-parallel-lint/php-parallel-lint": "^1.2", - "phpunit/phpunit": "^5.7 || ^7 || ^8 || ^9", + "phpunit/phpunit": "^9.3", "squizlabs/php_codesniffer": "^3.5", - "symfony/var-dumper": "^3.3 || ^4.0 || ^5.0 || ^6.0" + "symfony/var-dumper": "^5.0 || ^6.0" }, "suggest": { "ext-SimpleXML": "For Firefox profile creation" @@ -13339,12 +13468,12 @@ "version": "3.7.2", "source": { "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", + "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ed8e00df0a83aa96acf703f8c2979ff33341f879", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/ed8e00df0a83aa96acf703f8c2979ff33341f879", "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879", "shasum": "" }, @@ -13389,6 +13518,20 @@ "source": "https://github.com/squizlabs/PHP_CodeSniffer", "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" }, + "funding": [ + { + "url": "https://github.com/PHPCSStandards", + "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" + } + ], "time": "2023-02-22T23:07:41+00:00" }, { @@ -13406,8 +13549,11 @@ "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3" + "php": ">=8.1" + }, + "conflict": { + "symfony/console": "<5.4", + "symfony/process": "<5.4" }, "require-dev": { "symfony/console": "^5.4|^6.0|^7.0", @@ -13477,11 +13623,10 @@ "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16" + "symfony/polyfill-mbstring": "^1.0" }, "conflict": { "egulias/email-validator": "~3.0.0", @@ -13492,6 +13637,7 @@ }, "require-dev": { "egulias/email-validator": "^2.1.10|^3.1|^4", + "league/html-to-markdown": "^5.0", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", "symfony/dependency-injection": "^5.4|^6.0|^7.0", "symfony/property-access": "^5.4|^6.0|^7.0", @@ -13561,7 +13707,7 @@ "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.1", "symfony/deprecation-contracts": "^2.5|^3" }, "type": "library", @@ -13628,7 +13774,7 @@ "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.1", "symfony/service-contracts": "^2.5|^3" }, "type": "library", From 0be75a2ef6a4bfbba4a501fe8d5b5c4aa1e9384b Mon Sep 17 00:00:00 2001 From: glo63652 Date: Fri, 22 Dec 2023 17:30:41 +0530 Subject: [PATCH 040/104] di.xml changes --- .../Model/Resolver/Cache/Subscriber/ResolverCacheIdentity.php | 2 +- app/code/Magento/NewsletterGraphQl/etc/di.xml | 4 +--- .../GraphQl/CustomerGraphQl/Model/Resolver/CustomerTest.php | 2 +- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/app/code/Magento/NewsletterGraphQl/Model/Resolver/Cache/Subscriber/ResolverCacheIdentity.php b/app/code/Magento/NewsletterGraphQl/Model/Resolver/Cache/Subscriber/ResolverCacheIdentity.php index f5e10440ddddf..035454a302ef7 100644 --- a/app/code/Magento/NewsletterGraphQl/Model/Resolver/Cache/Subscriber/ResolverCacheIdentity.php +++ b/app/code/Magento/NewsletterGraphQl/Model/Resolver/Cache/Subscriber/ResolverCacheIdentity.php @@ -5,7 +5,7 @@ */ declare(strict_types=1); -namespace Magento\CustomerGraphQl\Model\Resolver\Cache\Subscriber; +namespace Magento\NewsletterGraphQl\Model\Resolver\Cache\Subscriber; use Magento\GraphQlResolverCache\Model\Resolver\Result\Cache\IdentityInterface; diff --git a/app/code/Magento/NewsletterGraphQl/etc/di.xml b/app/code/Magento/NewsletterGraphQl/etc/di.xml index ba6a00476fb1b..d01d2c777230a 100644 --- a/app/code/Magento/NewsletterGraphQl/etc/di.xml +++ b/app/code/Magento/NewsletterGraphQl/etc/di.xml @@ -9,9 +9,7 @@ - - Magento\NewsletterGraphQl\Model\Resolver\Cache\Subscriber\TagsStrategy - + Magento\NewsletterGraphQl\Model\Resolver\Cache\Subscriber\TagsStrategy diff --git a/dev/tests/api-functional/testsuite/Magento/GraphQl/CustomerGraphQl/Model/Resolver/CustomerTest.php b/dev/tests/api-functional/testsuite/Magento/GraphQl/CustomerGraphQl/Model/Resolver/CustomerTest.php index b1f3fbc4fc43b..a13d427efa752 100644 --- a/dev/tests/api-functional/testsuite/Magento/GraphQl/CustomerGraphQl/Model/Resolver/CustomerTest.php +++ b/dev/tests/api-functional/testsuite/Magento/GraphQl/CustomerGraphQl/Model/Resolver/CustomerTest.php @@ -12,7 +12,7 @@ use Magento\Customer\Model\Customer; use Magento\Customer\Test\Fixture\Customer as CustomerFixture; use Magento\CustomerGraphQl\Model\Resolver\Customer as CustomerResolver; -use Magento\CustomerGraphQl\Model\Resolver\IsSubscribed; +use Magento\NewsletterGraphQl\Model\Resolver\IsSubscribed; use Magento\Framework\ObjectManagerInterface; use Magento\Framework\Registry; use Magento\GraphQlResolverCache\Model\Resolver\Result\CacheKey\Calculator\ProviderInterface; From c37808b92d7c7cf12975a684b83b327fc04cfff9 Mon Sep 17 00:00:00 2001 From: glo5363 Date: Fri, 22 Dec 2023 21:01:57 +0530 Subject: [PATCH 041/104] #AC-9196::Update spomky-labs/otphp to its latest version available (11.2.0) --- composer.json | 4 +- composer.lock | 877 +++++++++++++++----------------------------------- 2 files changed, 261 insertions(+), 620 deletions(-) diff --git a/composer.json b/composer.json index eeb682d3196cb..d9c730b522e18 100644 --- a/composer.json +++ b/composer.json @@ -46,7 +46,7 @@ "colinmollenhour/credis": "^1.13", "colinmollenhour/php-redis-session-abstract": "^1.5", "composer/composer": "^2.0, !=2.2.16", - "elasticsearch/elasticsearch": "~7.17.0 || ~8.5.0", + "elasticsearch/elasticsearch": "^7.0", "ezyang/htmlpurifier": "^4.16", "guzzlehttp/guzzle": "^7.5", "laminas/laminas-captcha": "^2.12", @@ -82,7 +82,7 @@ "monolog/monolog": "^2.7", "opensearch-project/opensearch-php": "^1.0 || ^2.0, <2.0.1", "pelago/emogrifier": "^7.0", - "php-amqplib/php-amqplib": "^3.2", + "php-amqplib/php-amqplib": "^3.2, <3.6", "phpseclib/mcrypt_compat": "^2.0", "phpseclib/phpseclib": "^3.0", "ramsey/uuid": "^4.2", diff --git a/composer.lock b/composer.lock index 35e7fd459ee09..c97f7e9d168a8 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": "539ee58e4b0f8428b63a6872a2f498fe", + "content-hash": "fabaa9a74a0ad33978833f0081e3ca6a", "packages": [ { "name": "aws/aws-crt-php", @@ -62,16 +62,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.293.5", + "version": "3.294.5", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "f2002e52b382b45231da3f9552033f769acfebd8" + "reference": "2e34d45e970c77775e4c298e08732d64b647c41c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/f2002e52b382b45231da3f9552033f769acfebd8", - "reference": "f2002e52b382b45231da3f9552033f769acfebd8", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/2e34d45e970c77775e4c298e08732d64b647c41c", + "reference": "2e34d45e970c77775e4c298e08732d64b647c41c", "shasum": "" }, "require": { @@ -151,9 +151,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.293.5" + "source": "https://github.com/aws/aws-sdk-php/tree/3.294.5" }, - "time": "2023-12-06T19:09:15+00:00" + "time": "2023-12-21T19:10:21+00:00" }, { "name": "brick/math", @@ -303,16 +303,16 @@ }, { "name": "colinmollenhour/cache-backend-redis", - "version": "1.17.0", + "version": "1.17.1", "source": { "type": "git", "url": "https://github.com/colinmollenhour/Cm_Cache_Backend_Redis.git", - "reference": "dc2fd4fab8cb6b11e161f0eacdd5465c5b42b6f1" + "reference": "d403f4473e1b3cc616fa59d187e817543b6620c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/colinmollenhour/Cm_Cache_Backend_Redis/zipball/dc2fd4fab8cb6b11e161f0eacdd5465c5b42b6f1", - "reference": "dc2fd4fab8cb6b11e161f0eacdd5465c5b42b6f1", + "url": "https://api.github.com/repos/colinmollenhour/Cm_Cache_Backend_Redis/zipball/d403f4473e1b3cc616fa59d187e817543b6620c1", + "reference": "d403f4473e1b3cc616fa59d187e817543b6620c1", "shasum": "" }, "require": { @@ -342,9 +342,9 @@ "homepage": "https://github.com/colinmollenhour/Cm_Cache_Backend_Redis", "support": { "issues": "https://github.com/colinmollenhour/Cm_Cache_Backend_Redis/issues", - "source": "https://github.com/colinmollenhour/Cm_Cache_Backend_Redis/tree/1.17.0" + "source": "https://github.com/colinmollenhour/Cm_Cache_Backend_Redis/tree/1.17.1" }, - "time": "2023-10-25T17:06:02+00:00" + "time": "2023-12-21T21:56:18+00:00" }, { "name": "colinmollenhour/credis", @@ -439,16 +439,16 @@ }, { "name": "composer/ca-bundle", - "version": "1.3.7", + "version": "1.4.0", "source": { "type": "git", "url": "https://github.com/composer/ca-bundle.git", - "reference": "76e46335014860eec1aa5a724799a00a2e47cc85" + "reference": "b66d11b7479109ab547f9405b97205640b17d385" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/76e46335014860eec1aa5a724799a00a2e47cc85", - "reference": "76e46335014860eec1aa5a724799a00a2e47cc85", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/b66d11b7479109ab547f9405b97205640b17d385", + "reference": "b66d11b7479109ab547f9405b97205640b17d385", "shasum": "" }, "require": { @@ -460,7 +460,7 @@ "phpstan/phpstan": "^0.12.55", "psr/log": "^1.0", "symfony/phpunit-bridge": "^4.2 || ^5", - "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0 || ^6.0" + "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0" }, "type": "library", "extra": { @@ -495,7 +495,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/ca-bundle/issues", - "source": "https://github.com/composer/ca-bundle/tree/1.3.7" + "source": "https://github.com/composer/ca-bundle/tree/1.4.0" }, "funding": [ { @@ -511,7 +511,7 @@ "type": "tidelift" } ], - "time": "2023-08-30T09:31:38+00:00" + "time": "2023-12-18T12:05:55+00:00" }, { "name": "composer/class-map-generator", @@ -588,16 +588,16 @@ }, { "name": "composer/composer", - "version": "2.6.5", + "version": "2.6.6", "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "4b0fe89db9e65b1e64df633a992e70a7a215ab33" + "reference": "683557bd2466072777309d039534bb1332d0dda5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/4b0fe89db9e65b1e64df633a992e70a7a215ab33", - "reference": "4b0fe89db9e65b1e64df633a992e70a7a215ab33", + "url": "https://api.github.com/repos/composer/composer/zipball/683557bd2466072777309d039534bb1332d0dda5", + "reference": "683557bd2466072777309d039534bb1332d0dda5", "shasum": "" }, "require": { @@ -615,7 +615,7 @@ "seld/jsonlint": "^1.4", "seld/phar-utils": "^1.2", "seld/signal-handler": "^2.0", - "symfony/console": "^5.4.11 || ^6.0.11 || ^7", + "symfony/console": "^5.4.11 || ^6.0.11", "symfony/filesystem": "^5.4 || ^6.0 || ^7", "symfony/finder": "^5.4 || ^6.0 || ^7", "symfony/polyfill-php73": "^1.24", @@ -682,7 +682,7 @@ "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/composer/issues", "security": "https://github.com/composer/composer/security/policy", - "source": "https://github.com/composer/composer/tree/2.6.5" + "source": "https://github.com/composer/composer/tree/2.6.6" }, "funding": [ { @@ -698,7 +698,7 @@ "type": "tidelift" } ], - "time": "2023-10-06T08:11:52+00:00" + "time": "2023-12-08T17:32:26+00:00" }, { "name": "composer/metadata-minifier", @@ -1067,108 +1067,68 @@ ], "time": "2022-02-25T21:32:43+00:00" }, - { - "name": "elastic/transport", - "version": "v8.8.0", - "source": { - "type": "git", - "url": "git@github.com:elastic/elastic-transport-php.git", - "reference": "cdf9f63a16ec6bfb4c881ab89aa0e2a61fb7c20b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/elastic/elastic-transport-php/zipball/cdf9f63a16ec6bfb4c881ab89aa0e2a61fb7c20b", - "reference": "cdf9f63a16ec6bfb4c881ab89aa0e2a61fb7c20b", - "shasum": "" - }, - "require": { - "composer-runtime-api": "^2.0", - "php": "^7.4 || ^8.0", - "php-http/discovery": "^1.14", - "php-http/httplug": "^2.3", - "psr/http-client": "^1.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.0 || ^2.0", - "psr/log": "^1 || ^2 || ^3" - }, - "require-dev": { - "nyholm/psr7": "^1.5", - "php-http/mock-client": "^1.5", - "phpstan/phpstan": "^1.4", - "phpunit/phpunit": "^9.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "Elastic\\Transport\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "HTTP transport PHP library for Elastic products", - "keywords": [ - "PSR_17", - "elastic", - "http", - "psr-18", - "psr-7", - "transport" - ], - "time": "2023-11-08T10:51:51+00:00" - }, { "name": "elasticsearch/elasticsearch", - "version": "v8.5.3", + "version": "v7.17.2", "source": { "type": "git", "url": "git@github.com:elastic/elasticsearch-php.git", - "reference": "9d850932b8ab8129fd4baf597a1172e8f583b436" + "reference": "2d302233f2bb0926812d82823bb820d405e130fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/elastic/elasticsearch-php/zipball/9d850932b8ab8129fd4baf597a1172e8f583b436", - "reference": "9d850932b8ab8129fd4baf597a1172e8f583b436", + "url": "https://api.github.com/repos/elastic/elasticsearch-php/zipball/2d302233f2bb0926812d82823bb820d405e130fc", + "reference": "2d302233f2bb0926812d82823bb820d405e130fc", "shasum": "" }, "require": { - "elastic/transport": "^8.5", - "guzzlehttp/guzzle": "^7.0", - "php": "^7.4 || ^8.0", - "psr/http-client": "^1.0", - "psr/http-message": "^1.0", + "ext-json": ">=1.3.7", + "ezimuel/ringphp": "^1.1.2", + "php": "^7.3 || ^8.0", "psr/log": "^1|^2|^3" }, "require-dev": { "ext-yaml": "*", "ext-zip": "*", - "mockery/mockery": "^1.5", - "nyholm/psr7": "^1.5", - "php-http/mock-client": "^1.5", - "phpstan/phpstan": "^1.4", - "phpunit/phpunit": "^9.5", - "symfony/finder": "~4.0", - "symfony/http-client": "^5.0|^6.0" + "mockery/mockery": "^1.2", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.3", + "squizlabs/php_codesniffer": "^3.4", + "symfony/finder": "~4.0" + }, + "suggest": { + "ext-curl": "*", + "monolog/monolog": "Allows for client-level logging and tracing" }, "type": "library", "autoload": { + "files": [ + "src/autoload.php" + ], "psr-4": { - "Elastic\\Elasticsearch\\": "src/" + "Elasticsearch\\": "src/Elasticsearch/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "Apache-2.0", + "LGPL-2.1-only" + ], + "authors": [ + { + "name": "Zachary Tong" + }, + { + "name": "Enrico Zimuel" + } ], "description": "PHP Client for Elasticsearch", "keywords": [ "client", - "elastic", "elasticsearch", "search" ], - "time": "2022-11-22T14:15:58+00:00" + "time": "2023-04-21T15:31:12+00:00" }, { "name": "ezimuel/guzzlestreams", @@ -3870,16 +3830,16 @@ }, { "name": "laminas/laminas-validator", - "version": "2.43.0", + "version": "2.45.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-validator.git", - "reference": "8f6c2f5753dec64df924a86d18036113f3140f2b" + "reference": "2a60d288ffa1acb84321c85a066dcbf96da34a50" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/8f6c2f5753dec64df924a86d18036113f3140f2b", - "reference": "8f6c2f5753dec64df924a86d18036113f3140f2b", + "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/2a60d288ffa1acb84321c85a066dcbf96da34a50", + "reference": "2a60d288ffa1acb84321c85a066dcbf96da34a50", "shasum": "" }, "require": { @@ -3894,15 +3854,15 @@ "require-dev": { "laminas/laminas-coding-standard": "^2.5", "laminas/laminas-db": "^2.18", - "laminas/laminas-filter": "^2.32", - "laminas/laminas-i18n": "^2.23", - "laminas/laminas-session": "^2.16", - "laminas/laminas-uri": "^2.10.0", - "phpunit/phpunit": "^10.3.3", + "laminas/laminas-filter": "^2.33", + "laminas/laminas-i18n": "^2.24.1", + "laminas/laminas-session": "^2.17", + "laminas/laminas-uri": "^2.11.0", + "phpunit/phpunit": "^10.5.2", "psalm/plugin-phpunit": "^0.18.4", - "psr/http-client": "^1.0.2", + "psr/http-client": "^1.0.3", "psr/http-factory": "^1.0.2", - "vimeo/psalm": "^5.15" + "vimeo/psalm": "^5.17" }, "suggest": { "laminas/laminas-db": "Laminas\\Db component, required by the (No)RecordExists validator", @@ -3950,7 +3910,7 @@ "type": "community_bridge" } ], - "time": "2023-11-20T01:23:15+00:00" + "time": "2023-12-18T01:12:24+00:00" }, { "name": "laminas/laminas-view", @@ -5023,16 +4983,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.17.1", + "version": "v4.18.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d" + "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", - "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/1bcbb2179f97633e98bbbc87044ee2611c7d7999", + "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999", "shasum": "" }, "require": { @@ -5073,9 +5033,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.18.0" }, - "time": "2023-08-13T19:53:39+00:00" + "time": "2023-12-10T21:03:43+00:00" }, { "name": "opensearch-project/opensearch-php", @@ -5260,16 +5220,16 @@ }, { "name": "pelago/emogrifier", - "version": "v7.1.0", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/MyIntervals/emogrifier.git", - "reference": "1945460af992d0c14ad08e7b4567d7d0dd3a2f94" + "reference": "727bdf7255b51798307f17dec52ff8a91f1c7de3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/MyIntervals/emogrifier/zipball/1945460af992d0c14ad08e7b4567d7d0dd3a2f94", - "reference": "1945460af992d0c14ad08e7b4567d7d0dd3a2f94", + "url": "https://api.github.com/repos/MyIntervals/emogrifier/zipball/727bdf7255b51798307f17dec52ff8a91f1c7de3", + "reference": "727bdf7255b51798307f17dec52ff8a91f1c7de3", "shasum": "" }, "require": { @@ -5277,7 +5237,7 @@ "ext-libxml": "*", "php": "~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", "sabberworm/php-css-parser": "^8.4.0", - "symfony/css-selector": "^4.4.23 || ^5.4.0 || ^6.0.0" + "symfony/css-selector": "^4.4.23 || ^5.4.0 || ^6.0.0 || ^7.0.0" }, "require-dev": { "php-parallel-lint/php-parallel-lint": "1.3.2", @@ -5334,26 +5294,26 @@ "issues": "https://github.com/MyIntervals/emogrifier/issues", "source": "https://github.com/MyIntervals/emogrifier" }, - "time": "2023-10-20T15:34:30+00:00" + "time": "2023-12-06T02:00:20+00:00" }, { "name": "php-amqplib/php-amqplib", - "version": "v3.6.0", + "version": "v3.5.4", "source": { "type": "git", "url": "https://github.com/php-amqplib/php-amqplib.git", - "reference": "fb84e99589de0904a25861451b0552f806284ee5" + "reference": "1aecbd182b35eb039667c50d7d92d71f105be779" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-amqplib/php-amqplib/zipball/fb84e99589de0904a25861451b0552f806284ee5", - "reference": "fb84e99589de0904a25861451b0552f806284ee5", + "url": "https://api.github.com/repos/php-amqplib/php-amqplib/zipball/1aecbd182b35eb039667c50d7d92d71f105be779", + "reference": "1aecbd182b35eb039667c50d7d92d71f105be779", "shasum": "" }, "require": { "ext-mbstring": "*", "ext-sockets": "*", - "php": "^7.2||^8.0", + "php": "^7.1||^8.0", "phpseclib/phpseclib": "^2.0|^3.0" }, "conflict": { @@ -5413,196 +5373,9 @@ ], "support": { "issues": "https://github.com/php-amqplib/php-amqplib/issues", - "source": "https://github.com/php-amqplib/php-amqplib/tree/v3.6.0" - }, - "time": "2023-10-22T15:02:02+00:00" - }, - { - "name": "php-http/discovery", - "version": "1.19.1", - "source": { - "type": "git", - "url": "https://github.com/php-http/discovery.git", - "reference": "57f3de01d32085fea20865f9b16fb0e69347c39e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/discovery/zipball/57f3de01d32085fea20865f9b16fb0e69347c39e", - "reference": "57f3de01d32085fea20865f9b16fb0e69347c39e", - "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", - "symfony/phpunit-bridge": "^6.2" - }, - "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.19.1" - }, - "time": "2023-07-11T07:02:26+00:00" - }, - { - "name": "php-http/httplug", - "version": "2.4.0", - "source": { - "type": "git", - "url": "https://github.com/php-http/httplug.git", - "reference": "625ad742c360c8ac580fcc647a1541d29e257f67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/httplug/zipball/625ad742c360c8ac580fcc647a1541d29e257f67", - "reference": "625ad742c360c8ac580fcc647a1541d29e257f67", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0", - "php-http/promise": "^1.1", - "psr/http-client": "^1.0", - "psr/http-message": "^1.0 || ^2.0" - }, - "require-dev": { - "friends-of-phpspec/phpspec-code-coverage": "^4.1 || ^5.0 || ^6.0", - "phpspec/phpspec": "^5.1 || ^6.0 || ^7.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Http\\Client\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Eric GELOEN", - "email": "geloen.eric@gmail.com" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://sagikazarmark.hu" - } - ], - "description": "HTTPlug, the HTTP client abstraction for PHP", - "homepage": "http://httplug.io", - "keywords": [ - "client", - "http" - ], - "support": { - "issues": "https://github.com/php-http/httplug/issues", - "source": "https://github.com/php-http/httplug/tree/2.4.0" + "source": "https://github.com/php-amqplib/php-amqplib/tree/v3.5.4" }, - "time": "2023-04-14T15:10:03+00:00" - }, - { - "name": "php-http/promise", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/php-http/promise.git", - "reference": "44a67cb59f708f826f3bec35f22030b3edb90119" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/promise/zipball/44a67cb59f708f826f3bec35f22030b3edb90119", - "reference": "44a67cb59f708f826f3bec35f22030b3edb90119", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "friends-of-phpspec/phpspec-code-coverage": "^4.3.2 || ^6.3", - "phpspec/phpspec": "^5.1.2 || ^6.2 || ^7.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "Http\\Promise\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Joel Wurtz", - "email": "joel.wurtz@gmail.com" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - } - ], - "description": "Promise used for asynchronous HTTP requests", - "homepage": "http://httplug.io", - "keywords": [ - "promise" - ], - "support": { - "issues": "https://github.com/php-http/promise/issues", - "source": "https://github.com/php-http/promise/tree/1.2.1" - }, - "time": "2023-11-08T12:57:08+00:00" + "time": "2023-07-01T11:25:08+00:00" }, { "name": "phpseclib/mcrypt_compat", @@ -6490,16 +6263,16 @@ }, { "name": "seld/jsonlint", - "version": "1.10.0", + "version": "1.10.1", "source": { "type": "git", "url": "https://github.com/Seldaek/jsonlint.git", - "reference": "594fd6462aad8ecee0b45ca5045acea4776667f1" + "reference": "76d449a358ece77d6f1d6331c68453e657172202" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/594fd6462aad8ecee0b45ca5045acea4776667f1", - "reference": "594fd6462aad8ecee0b45ca5045acea4776667f1", + "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/76d449a358ece77d6f1d6331c68453e657172202", + "reference": "76d449a358ece77d6f1d6331c68453e657172202", "shasum": "" }, "require": { @@ -6526,7 +6299,7 @@ { "name": "Jordi Boggiano", "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "homepage": "https://seld.be" } ], "description": "JSON Linter", @@ -6538,7 +6311,7 @@ ], "support": { "issues": "https://github.com/Seldaek/jsonlint/issues", - "source": "https://github.com/Seldaek/jsonlint/tree/1.10.0" + "source": "https://github.com/Seldaek/jsonlint/tree/1.10.1" }, "funding": [ { @@ -6550,7 +6323,7 @@ "type": "tidelift" } ], - "time": "2023-05-11T13:16:46+00:00" + "time": "2023-12-18T13:03:25+00:00" }, { "name": "seld/phar-utils", @@ -7088,16 +6861,16 @@ }, { "name": "symfony/dependency-injection", - "version": "v6.4.0", + "version": "v6.4.1", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "5dc8ad5f2bbba7046f5947682bf7d868ce80d4e8" + "reference": "f88ff6428afbeb17cc648c8003bd608534750baf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/5dc8ad5f2bbba7046f5947682bf7d868ce80d4e8", - "reference": "5dc8ad5f2bbba7046f5947682bf7d868ce80d4e8", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/f88ff6428afbeb17cc648c8003bd608534750baf", + "reference": "f88ff6428afbeb17cc648c8003bd608534750baf", "shasum": "" }, "require": { @@ -7149,7 +6922,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v6.4.0" + "source": "https://github.com/symfony/dependency-injection/tree/v6.4.1" }, "funding": [ { @@ -7165,7 +6938,7 @@ "type": "tidelift" } ], - "time": "2023-10-31T08:40:20+00:00" + "time": "2023-12-01T14:56:37+00:00" }, { "name": "symfony/deprecation-contracts", @@ -7236,30 +7009,31 @@ }, { "name": "symfony/error-handler", - "version": "v6.3.5", + "version": "v7.0.0", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "1f69476b64fb47105c06beef757766c376b548c4" + "reference": "80b1258be1b84c12a345d0ec3881bbf2e5270cc2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/1f69476b64fb47105c06beef757766c376b548c4", - "reference": "1f69476b64fb47105c06beef757766c376b548c4", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/80b1258be1b84c12a345d0ec3881bbf2e5270cc2", + "reference": "80b1258be1b84c12a345d0ec3881bbf2e5270cc2", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" + "symfony/var-dumper": "^6.4|^7.0" }, "conflict": { - "symfony/deprecation-contracts": "<2.5" + "symfony/deprecation-contracts": "<2.5", + "symfony/http-kernel": "<6.4" }, "require-dev": { "symfony/deprecation-contracts": "^2.5|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" + "symfony/http-kernel": "^6.4|^7.0", + "symfony/serializer": "^6.4|^7.0" }, "bin": [ "Resources/bin/patch-type-declarations" @@ -7290,7 +7064,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.3.5" + "source": "https://github.com/symfony/error-handler/tree/v7.0.0" }, "funding": [ { @@ -7306,7 +7080,7 @@ "type": "tidelift" } ], - "time": "2023-09-12T06:57:20+00:00" + "time": "2023-10-20T16:35:23+00:00" }, { "name": "symfony/event-dispatcher", @@ -7466,20 +7240,20 @@ }, { "name": "symfony/filesystem", - "version": "v6.4.0", + "version": "v7.0.0", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "952a8cb588c3bc6ce76f6023000fb932f16a6e59" + "reference": "7da8ea2362a283771478c5f7729cfcb43a76b8b7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/952a8cb588c3bc6ce76f6023000fb932f16a6e59", - "reference": "952a8cb588c3bc6ce76f6023000fb932f16a6e59", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/7da8ea2362a283771478c5f7729cfcb43a76b8b7", + "reference": "7da8ea2362a283771478c5f7729cfcb43a76b8b7", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.8" }, @@ -7509,7 +7283,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.4.0" + "source": "https://github.com/symfony/filesystem/tree/v7.0.0" }, "funding": [ { @@ -7525,7 +7299,7 @@ "type": "tidelift" } ], - "time": "2023-07-26T17:27:13+00:00" + "time": "2023-07-27T06:33:22+00:00" }, { "name": "symfony/finder", @@ -7669,25 +7443,25 @@ }, { "name": "symfony/http-kernel", - "version": "v6.2.14", + "version": "v6.4.1", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "d05cebbc07478d37ff1e0f0079f06298a096b870" + "reference": "2953274c16a229b3933ef73a6898e18388e12e1b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/d05cebbc07478d37ff1e0f0079f06298a096b870", - "reference": "d05cebbc07478d37ff1e0f0079f06298a096b870", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/2953274c16a229b3933ef73a6898e18388e12e1b", + "reference": "2953274c16a229b3933ef73a6898e18388e12e1b", "shasum": "" }, "require": { "php": ">=8.1", "psr/log": "^1|^2|^3", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/error-handler": "^6.1", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4.21|^6.2.7", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.4|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", "symfony/polyfill-ctype": "^1.8" }, "conflict": { @@ -7695,15 +7469,18 @@ "symfony/cache": "<5.4", "symfony/config": "<6.1", "symfony/console": "<5.4", - "symfony/dependency-injection": "<6.2", + "symfony/dependency-injection": "<6.4", "symfony/doctrine-bridge": "<5.4", "symfony/form": "<5.4", "symfony/http-client": "<5.4", + "symfony/http-client-contracts": "<2.5", "symfony/mailer": "<5.4", "symfony/messenger": "<5.4", "symfony/translation": "<5.4", + "symfony/translation-contracts": "<2.5", "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", + "symfony/validator": "<6.4", + "symfony/var-dumper": "<6.3", "twig/twig": "<2.13" }, "provide": { @@ -7711,30 +7488,28 @@ }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^6.1", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^6.2", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "symfony/uid": "^5.4|^6.0", - "symfony/var-exporter": "^6.2", + "symfony/browser-kit": "^5.4|^6.0|^7.0", + "symfony/clock": "^6.2|^7.0", + "symfony/config": "^6.1|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/css-selector": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/dom-crawler": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/http-client-contracts": "^2.5|^3", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/property-access": "^5.4.5|^6.0.5|^7.0", + "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/serializer": "^6.3|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/translation": "^5.4|^6.0|^7.0", + "symfony/translation-contracts": "^2.5|^3", + "symfony/uid": "^5.4|^6.0|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/var-exporter": "^6.2|^7.0", "twig/twig": "^2.13|^3.0.4" }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, "type": "library", "autoload": { "psr-4": { @@ -7761,7 +7536,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.2.14" + "source": "https://github.com/symfony/http-kernel/tree/v6.4.1" }, "funding": [ { @@ -7777,7 +7552,7 @@ "type": "tidelift" } ], - "time": "2023-07-31T10:40:35+00:00" + "time": "2023-12-01T17:02:02+00:00" }, { "name": "symfony/intl", @@ -9000,16 +8775,16 @@ }, { "name": "symfony/var-exporter", - "version": "v7.0.0", + "version": "v7.0.1", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "d97726e8d254a2d5512b2b4ba204735d84e7167d" + "reference": "a3d7c877414fcd59ab7075ecdc3b8f9c00f7bcc3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/d97726e8d254a2d5512b2b4ba204735d84e7167d", - "reference": "d97726e8d254a2d5512b2b4ba204735d84e7167d", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/a3d7c877414fcd59ab7075ecdc3b8f9c00f7bcc3", + "reference": "a3d7c877414fcd59ab7075ecdc3b8f9c00f7bcc3", "shasum": "" }, "require": { @@ -9054,7 +8829,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v7.0.0" + "source": "https://github.com/symfony/var-exporter/tree/v7.0.1" }, "funding": [ { @@ -9070,7 +8845,7 @@ "type": "tidelift" } ], - "time": "2023-11-29T08:40:23+00:00" + "time": "2023-11-30T11:38:21+00:00" }, { "name": "tedivm/jshrink", @@ -9521,16 +9296,16 @@ }, { "name": "webonyx/graphql-php", - "version": "v15.8.0", + "version": "v15.8.1", "source": { "type": "git", "url": "https://github.com/webonyx/graphql-php.git", - "reference": "329315936f5af9b4c3f798f5d1afef72f3da0312" + "reference": "575ac95f13adfb38219a748572355385c101fdf7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/329315936f5af9b4c3f798f5d1afef72f3da0312", - "reference": "329315936f5af9b4c3f798f5d1afef72f3da0312", + "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/575ac95f13adfb38219a748572355385c101fdf7", + "reference": "575ac95f13adfb38219a748572355385c101fdf7", "shasum": "" }, "require": { @@ -9548,7 +9323,7 @@ "nyholm/psr7": "^1.5", "phpbench/phpbench": "^1.2", "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "1.10.41", + "phpstan/phpstan": "1.10.47", "phpstan/phpstan-phpunit": "1.3.15", "phpstan/phpstan-strict-rules": "1.5.2", "phpunit/phpunit": "^9.5 || ^10", @@ -9557,7 +9332,7 @@ "react/promise": "^2.9", "rector/rector": "^0.18", "symfony/polyfill-php81": "^1.23", - "symfony/var-exporter": "^5 || ^6", + "symfony/var-exporter": "^5 || ^6 || ^7", "thecodingmachine/safe": "^1.3 || ^2" }, "suggest": { @@ -9583,7 +9358,7 @@ ], "support": { "issues": "https://github.com/webonyx/graphql-php/issues", - "source": "https://github.com/webonyx/graphql-php/tree/v15.8.0" + "source": "https://github.com/webonyx/graphql-php/tree/v15.8.1" }, "funding": [ { @@ -9591,7 +9366,7 @@ "type": "open_collective" } ], - "time": "2023-11-14T15:30:40+00:00" + "time": "2023-12-05T17:23:35+00:00" }, { "name": "wikimedia/less.php", @@ -10786,20 +10561,20 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.39.1", + "version": "v3.41.1", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "857046d26b0d92dc13c4be769309026b100b517e" + "reference": "8b6ae8dcbaf23f09680643ab832a4a3a260265f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/857046d26b0d92dc13c4be769309026b100b517e", - "reference": "857046d26b0d92dc13c4be769309026b100b517e", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/8b6ae8dcbaf23f09680643ab832a4a3a260265f6", + "reference": "8b6ae8dcbaf23f09680643ab832a4a3a260265f6", "shasum": "" }, "require": { - "composer/semver": "^3.3", + "composer/semver": "^3.4", "composer/xdebug-handler": "^3.0.3", "ext-json": "*", "ext-tokenizer": "*", @@ -10810,25 +10585,23 @@ "symfony/filesystem": "^5.4 || ^6.0 || ^7.0", "symfony/finder": "^5.4 || ^6.0 || ^7.0", "symfony/options-resolver": "^5.4 || ^6.0 || ^7.0", - "symfony/polyfill-mbstring": "^1.27", - "symfony/polyfill-php80": "^1.27", - "symfony/polyfill-php81": "^1.27", + "symfony/polyfill-mbstring": "^1.28", + "symfony/polyfill-php80": "^1.28", + "symfony/polyfill-php81": "^1.28", "symfony/process": "^5.4 || ^6.0 || ^7.0", "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { "facile-it/paraunit": "^1.3 || ^2.0", "justinrainbow/json-schema": "^5.2", - "keradus/cli-executor": "^2.0", + "keradus/cli-executor": "^2.1", "mikey179/vfsstream": "^1.6.11", - "php-coveralls/php-coveralls": "^2.5.3", + "php-coveralls/php-coveralls": "^2.7", "php-cs-fixer/accessible-object": "^1.1", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.2", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.2.1", - "phpspec/prophecy": "^1.16", - "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.5", - "symfony/phpunit-bridge": "^6.2.3 || ^7.0", + "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.4", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.4", + "phpunit/phpunit": "^9.6", + "symfony/phpunit-bridge": "^6.3.8 || ^7.0", "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, "suggest": { @@ -10867,7 +10640,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.39.1" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.41.1" }, "funding": [ { @@ -10875,7 +10648,7 @@ "type": "github" } ], - "time": "2023-11-24T22:59:03+00:00" + "time": "2023-12-10T19:59:27+00:00" }, { "name": "laminas/laminas-diactoros", @@ -11087,12 +10860,12 @@ "source": { "type": "git", "url": "git@github.com:magento-gl/magento2-functional-testing-framework.git", - "reference": "e3403d2726827d44f84785ea6176a31565728743" + "reference": "e06343b8ea5538128a4a9573411e2146b42273aa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/magento-gl/magento2-functional-testing-framework/zipball/e3403d2726827d44f84785ea6176a31565728743", - "reference": "e3403d2726827d44f84785ea6176a31565728743", + "url": "https://api.github.com/repos/magento-gl/magento2-functional-testing-framework/zipball/e06343b8ea5538128a4a9573411e2146b42273aa", + "reference": "e06343b8ea5538128a4a9573411e2146b42273aa", "shasum": "" }, "require": { @@ -11185,7 +10958,7 @@ "support": { "source": "https://github.com/magento-gl/magento2-functional-testing-framework/tree/ACQE-5264-spomky-otphp-upgrade" }, - "time": "2023-07-28T04:14:07+00:00" + "time": "2023-12-22T06:31:59+00:00" }, { "name": "mustache/mustache", @@ -11298,16 +11071,16 @@ }, { "name": "pdepend/pdepend", - "version": "2.16.0", + "version": "2.16.2", "source": { "type": "git", "url": "https://github.com/pdepend/pdepend.git", - "reference": "8dfc0c46529e2073fa97986552f80646eedac562" + "reference": "f942b208dc2a0868454d01b29f0c75bbcfc6ed58" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pdepend/pdepend/zipball/8dfc0c46529e2073fa97986552f80646eedac562", - "reference": "8dfc0c46529e2073fa97986552f80646eedac562", + "url": "https://api.github.com/repos/pdepend/pdepend/zipball/f942b208dc2a0868454d01b29f0c75bbcfc6ed58", + "reference": "f942b208dc2a0868454d01b29f0c75bbcfc6ed58", "shasum": "" }, "require": { @@ -11320,7 +11093,6 @@ "require-dev": { "easy-doc/easy-doc": "0.0.0|^1.2.3", "gregwar/rst": "^1.0", - "phpunit/phpunit": "^4.8.36|^5.7.27", "squizlabs/php_codesniffer": "^2.0.0" }, "bin": [ @@ -11350,7 +11122,7 @@ ], "support": { "issues": "https://github.com/pdepend/pdepend/issues", - "source": "https://github.com/pdepend/pdepend/tree/2.16.0" + "source": "https://github.com/pdepend/pdepend/tree/2.16.2" }, "funding": [ { @@ -11358,7 +11130,7 @@ "type": "tidelift" } ], - "time": "2023-11-29T08:52:35+00:00" + "time": "2023-12-17T18:09:59+00:00" }, { "name": "phar-io/manifest", @@ -11601,22 +11373,22 @@ }, { "name": "phpmd/phpmd", - "version": "2.14.1", + "version": "2.15.0", "source": { "type": "git", "url": "https://github.com/phpmd/phpmd.git", - "reference": "442fc2c34edcd5198b442d8647c7f0aec3afabe8" + "reference": "74a1f56e33afad4128b886e334093e98e1b5e7c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpmd/phpmd/zipball/442fc2c34edcd5198b442d8647c7f0aec3afabe8", - "reference": "442fc2c34edcd5198b442d8647c7f0aec3afabe8", + "url": "https://api.github.com/repos/phpmd/phpmd/zipball/74a1f56e33afad4128b886e334093e98e1b5e7c0", + "reference": "74a1f56e33afad4128b886e334093e98e1b5e7c0", "shasum": "" }, "require": { "composer/xdebug-handler": "^1.0 || ^2.0 || ^3.0", "ext-xml": "*", - "pdepend/pdepend": "^2.15.1", + "pdepend/pdepend": "^2.16.1", "php": ">=5.3.9" }, "require-dev": { @@ -11625,7 +11397,6 @@ "ext-simplexml": "*", "gregwar/rst": "^1.0", "mikey179/vfsstream": "^1.6.8", - "phpunit/phpunit": "^4.8.36 || ^5.7.27", "squizlabs/php_codesniffer": "^2.9.2 || ^3.7.2" }, "bin": [ @@ -11673,7 +11444,7 @@ "support": { "irc": "irc://irc.freenode.org/phpmd", "issues": "https://github.com/phpmd/phpmd/issues", - "source": "https://github.com/phpmd/phpmd/tree/2.14.1" + "source": "https://github.com/phpmd/phpmd/tree/2.15.0" }, "funding": [ { @@ -11681,20 +11452,20 @@ "type": "tidelift" } ], - "time": "2023-09-28T13:07:44+00:00" + "time": "2023-12-11T08:22:20+00:00" }, { "name": "phpstan/phpstan", - "version": "1.10.46", + "version": "1.10.50", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "90d3d25c5b98b8068916bbf08ce42d5cb6c54e70" + "reference": "06a98513ac72c03e8366b5a0cb00750b487032e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/90d3d25c5b98b8068916bbf08ce42d5cb6c54e70", - "reference": "90d3d25c5b98b8068916bbf08ce42d5cb6c54e70", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/06a98513ac72c03e8366b5a0cb00750b487032e4", + "reference": "06a98513ac72c03e8366b5a0cb00750b487032e4", "shasum": "" }, "require": { @@ -11743,27 +11514,27 @@ "type": "tidelift" } ], - "time": "2023-11-28T14:57:26+00:00" + "time": "2023-12-13T10:59:42+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "9.2.29", + "version": "9.2.30", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76" + "reference": "ca2bd87d2f9215904682a9cb9bb37dda98e76089" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/6a3a87ac2bbe33b25042753df8195ba4aa534c76", - "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ca2bd87d2f9215904682a9cb9bb37dda98e76089", + "reference": "ca2bd87d2f9215904682a9cb9bb37dda98e76089", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.15", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=7.3", "phpunit/php-file-iterator": "^3.0.3", "phpunit/php-text-template": "^2.0.2", @@ -11813,7 +11584,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/9.2.29" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.30" }, "funding": [ { @@ -11821,7 +11592,7 @@ "type": "github" } ], - "time": "2023-09-19T04:57:46+00:00" + "time": "2023-12-22T06:47:57+00:00" }, { "name": "phpunit/php-file-iterator", @@ -12600,20 +12371,20 @@ }, { "name": "sebastian/complexity", - "version": "2.0.2", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/25f207c40d62b8b7aa32f5ab026c53561964053a", + "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a", "shasum": "" }, "require": { - "nikic/php-parser": "^4.7", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=7.3" }, "require-dev": { @@ -12645,7 +12416,7 @@ "homepage": "https://github.com/sebastianbergmann/complexity", "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.3" }, "funding": [ { @@ -12653,7 +12424,7 @@ "type": "github" } ], - "time": "2020-10-26T15:52:27+00:00" + "time": "2023-12-22T06:19:30+00:00" }, { "name": "sebastian/diff", @@ -12927,20 +12698,20 @@ }, { "name": "sebastian/lines-of-code", - "version": "1.0.3", + "version": "1.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/e1e4a170560925c26d424b6a03aed157e7dcc5c5", + "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5", "shasum": "" }, "require": { - "nikic/php-parser": "^4.6", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=7.3" }, "require-dev": { @@ -12972,7 +12743,7 @@ "homepage": "https://github.com/sebastianbergmann/lines-of-code", "support": { "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.4" }, "funding": [ { @@ -12980,7 +12751,7 @@ "type": "github" } ], - "time": "2020-11-28T06:42:11+00:00" + "time": "2023-12-22T06:20:34+00:00" }, { "name": "sebastian/object-enumerator", @@ -13465,16 +13236,16 @@ }, { "name": "squizlabs/php_codesniffer", - "version": "3.7.2", + "version": "3.8.0", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", - "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879" + "reference": "5805f7a4e4958dbb5e944ef1e6edae0a303765e7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/ed8e00df0a83aa96acf703f8c2979ff33341f879", - "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/5805f7a4e4958dbb5e944ef1e6edae0a303765e7", + "reference": "5805f7a4e4958dbb5e944ef1e6edae0a303765e7", "shasum": "" }, "require": { @@ -13484,7 +13255,7 @@ "php": ">=5.4.0" }, "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0" }, "bin": [ "bin/phpcs", @@ -13503,20 +13274,29 @@ "authors": [ { "name": "Greg Sherwood", - "role": "lead" + "role": "Former lead" + }, + { + "name": "Juliette Reinders Folmer", + "role": "Current lead" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors" } ], "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", + "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer", "keywords": [ "phpcs", "standards", "static analysis" ], "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" + "issues": "https://github.com/PHPCSStandards/PHP_CodeSniffer/issues", + "security": "https://github.com/PHPCSStandards/PHP_CodeSniffer/security/policy", + "source": "https://github.com/PHPCSStandards/PHP_CodeSniffer", + "wiki": "https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki" }, "funding": [ { @@ -13532,7 +13312,7 @@ "type": "open_collective" } ], - "time": "2023-02-22T23:07:41+00:00" + "time": "2023-12-08T12:32:31+00:00" }, { "name": "symfony/dotenv", @@ -13694,20 +13474,20 @@ }, { "name": "symfony/options-resolver", - "version": "v6.4.0", + "version": "v7.0.0", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "22301f0e7fdeaacc14318928612dee79be99860e" + "reference": "700ff4096e346f54cb628ea650767c8130f1001f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/22301f0e7fdeaacc14318928612dee79be99860e", - "reference": "22301f0e7fdeaacc14318928612dee79be99860e", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/700ff4096e346f54cb628ea650767c8130f1001f", + "reference": "700ff4096e346f54cb628ea650767c8130f1001f", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3" }, "type": "library", @@ -13741,7 +13521,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v6.4.0" + "source": "https://github.com/symfony/options-resolver/tree/v7.0.0" }, "funding": [ { @@ -13757,11 +13537,11 @@ "type": "tidelift" } ], - "time": "2023-08-08T10:16:24+00:00" + "time": "2023-08-08T10:20:21+00:00" }, { "name": "symfony/stopwatch", - "version": "v6.4.0", + "version": "v7.0.0", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", @@ -13774,7 +13554,7 @@ "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/service-contracts": "^2.5|^3" }, "type": "library", @@ -13803,7 +13583,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v6.4.0" + "source": "https://github.com/symfony/stopwatch/tree/v7.0.0" }, "funding": [ { @@ -13893,145 +13673,6 @@ ], "time": "2023-11-06T11:00:25+00:00" }, - { - "name": "thecodingmachine/safe", - "version": "v2.5.0", - "source": { - "type": "git", - "url": "https://github.com/thecodingmachine/safe.git", - "reference": "3115ecd6b4391662b4931daac4eba6b07a2ac1f0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thecodingmachine/safe/zipball/3115ecd6b4391662b4931daac4eba6b07a2ac1f0", - "reference": "3115ecd6b4391662b4931daac4eba6b07a2ac1f0", - "shasum": "" - }, - "require": { - "php": "^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^1.5", - "phpunit/phpunit": "^9.5", - "squizlabs/php_codesniffer": "^3.2", - "thecodingmachine/phpstan-strict-rules": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "files": [ - "deprecated/apc.php", - "deprecated/array.php", - "deprecated/datetime.php", - "deprecated/libevent.php", - "deprecated/misc.php", - "deprecated/password.php", - "deprecated/mssql.php", - "deprecated/stats.php", - "deprecated/strings.php", - "lib/special_cases.php", - "deprecated/mysqli.php", - "generated/apache.php", - "generated/apcu.php", - "generated/array.php", - "generated/bzip2.php", - "generated/calendar.php", - "generated/classobj.php", - "generated/com.php", - "generated/cubrid.php", - "generated/curl.php", - "generated/datetime.php", - "generated/dir.php", - "generated/eio.php", - "generated/errorfunc.php", - "generated/exec.php", - "generated/fileinfo.php", - "generated/filesystem.php", - "generated/filter.php", - "generated/fpm.php", - "generated/ftp.php", - "generated/funchand.php", - "generated/gettext.php", - "generated/gmp.php", - "generated/gnupg.php", - "generated/hash.php", - "generated/ibase.php", - "generated/ibmDb2.php", - "generated/iconv.php", - "generated/image.php", - "generated/imap.php", - "generated/info.php", - "generated/inotify.php", - "generated/json.php", - "generated/ldap.php", - "generated/libxml.php", - "generated/lzf.php", - "generated/mailparse.php", - "generated/mbstring.php", - "generated/misc.php", - "generated/mysql.php", - "generated/network.php", - "generated/oci8.php", - "generated/opcache.php", - "generated/openssl.php", - "generated/outcontrol.php", - "generated/pcntl.php", - "generated/pcre.php", - "generated/pgsql.php", - "generated/posix.php", - "generated/ps.php", - "generated/pspell.php", - "generated/readline.php", - "generated/rpminfo.php", - "generated/rrd.php", - "generated/sem.php", - "generated/session.php", - "generated/shmop.php", - "generated/sockets.php", - "generated/sodium.php", - "generated/solr.php", - "generated/spl.php", - "generated/sqlsrv.php", - "generated/ssdeep.php", - "generated/ssh2.php", - "generated/stream.php", - "generated/strings.php", - "generated/swoole.php", - "generated/uodbc.php", - "generated/uopz.php", - "generated/url.php", - "generated/var.php", - "generated/xdiff.php", - "generated/xml.php", - "generated/xmlrpc.php", - "generated/yaml.php", - "generated/yaz.php", - "generated/zip.php", - "generated/zlib.php" - ], - "classmap": [ - "lib/DateTime.php", - "lib/DateTimeImmutable.php", - "lib/Exceptions/", - "deprecated/Exceptions/", - "generated/Exceptions/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PHP core functions that throw exceptions instead of returning FALSE on error", - "support": { - "issues": "https://github.com/thecodingmachine/safe/issues", - "source": "https://github.com/thecodingmachine/safe/tree/v2.5.0" - }, - "time": "2023-04-05T11:54:14+00:00" - }, { "name": "theseer/tokenizer", "version": "1.2.2", From ef0ed205f1216f87bca7c3ac4cb30849f531ee3e Mon Sep 17 00:00:00 2001 From: Guillaume Quintard Date: Mon, 25 Dec 2023 01:02:45 -0800 Subject: [PATCH 042/104] [vcl] Better debug Detecting if the response is a hit usingthe x-varnish header is flaky and notably doesn't work in a multi-tier setup. On top of this, HIT/MISS is a false dichotomy (https://info.varnish-software.com/blog/using-obj-hits) and while I'd like something more detailed like https://docs.varnish-software.com/tutorials/hit-miss-logging/ (tech version of the blog), I recognize that it's "a lot" of VCL, so this commit only differentiates between hits, misses and passes, the latter being pretty useful to identify while debugging. --- app/code/Magento/PageCache/etc/varnish6.vcl | 4 +- dev/tests/varnish/README.md | 11 +++++ dev/tests/varnish/debug.vtc | 53 +++++++++++++++++++++ 3 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 dev/tests/varnish/README.md create mode 100644 dev/tests/varnish/debug.vtc diff --git a/app/code/Magento/PageCache/etc/varnish6.vcl b/app/code/Magento/PageCache/etc/varnish6.vcl index ee89dc8d22d7e..0f81e2e493a71 100644 --- a/app/code/Magento/PageCache/etc/varnish6.vcl +++ b/app/code/Magento/PageCache/etc/varnish6.vcl @@ -219,7 +219,9 @@ sub vcl_backend_response { } sub vcl_deliver { - if (resp.http.x-varnish ~ " ") { + if (obj.uncacheable) { + set resp.http.X-Magento-Cache-Debug = "UNCACHEABLE"; + } else if (obj.hits) { set resp.http.X-Magento-Cache-Debug = "HIT"; set resp.http.Grace = req.http.grace; } else { diff --git a/dev/tests/varnish/README.md b/dev/tests/varnish/README.md new file mode 100644 index 0000000000000..00e0ce0adeda5 --- /dev/null +++ b/dev/tests/varnish/README.md @@ -0,0 +1,11 @@ +Files in this directory are Varnish Test Cases (VTC) and check the behavior of the VCL file shipped by `magento2`. + +Varnish needs to be installed, but then the test scenarios can be run individually or all at once: + +``` shell +varnishtest *.vtc +``` + +Documentation: +- varnishtest itself: https://varnish-cache.org/docs/trunk/reference/varnishtest.html +- VTC syntax: https://varnish-cache.org/docs/trunk/reference/vtc.html diff --git a/dev/tests/varnish/debug.vtc b/dev/tests/varnish/debug.vtc new file mode 100644 index 0000000000000..a2216bd83ff9c --- /dev/null +++ b/dev/tests/varnish/debug.vtc @@ -0,0 +1,53 @@ +varnishtest "X-Magento-Cache-Debug header" + +server s1 { + # first request will be the probe, handle it and be on our way + rxreq + expect req.url == "/health_check.php" + txresp + + # the probe expects the connection to close + close + accept + + rxreq + txresp -hdr "answer-to: POST" + + rxreq + txresp -hdr "answer-to: GET" +} -start + +# generate usable VCL pointing towards s1 +# mostly, we replace the place-holders, but we also jack up the probe +# interval to avoid further interference +shell { + # testdir is automatically set to the directory containing the present vtc + sed ${testdir}/../../../app/code/Magento/PageCache/etc/varnish6.vcl > ${tmpdir}/output.vcl \ + -e 's@\.interval = 5s;@.interval = 5m; .initial = 10;@' \ + -e 's@/\* {{ host }} \*/@${s1_addr}@' \ + -e 's@/\* {{ port }} \*/@${s1_port}@' \ + -e 's@/\* {{ ssl_offloaded_header }} \*/@unused@' \ + -e 's@/\* {{ grace_period }} \*/@0@' +} + +varnish v1 -arg "-f" -arg "${tmpdir}/output.vcl" -start + +# make surethe probe request fired +delay 1 + +client c1 { + txreq -method "POST" + rxresp + expect resp.http.answer-to == "POST" + expect resp.http.X-Magento-Cache-Debug == "UNCACHEABLE" + + txreq + rxresp + expect resp.http.answer-to == "GET" + expect resp.http.X-Magento-Cache-Debug == "MISS" + + txreq + rxresp + expect resp.http.answer-to == "GET" + expect resp.http.X-Magento-Cache-Debug == "HIT" +} -run From fc7ec5eab0285dafc84451af1af690211bfee3aa Mon Sep 17 00:00:00 2001 From: glo63652 Date: Wed, 27 Dec 2023 13:50:36 +0530 Subject: [PATCH 043/104] AC:9147::Newsletter subscription flag for customer graphql type is in the wrong module --- .../Magento/CustomerGraphQl/etc/graphql/di.xml | 6 ------ .../FactorProvider/ParentCustomerEntityId.php | 2 +- app/code/Magento/NewsletterGraphQl/etc/di.xml | 2 +- .../NewsletterGraphQl/etc/graphql/di.xml | 18 ++++++++++++++++++ 4 files changed, 20 insertions(+), 8 deletions(-) rename app/code/Magento/{CustomerGraphQl => NewsletterGraphQl}/Model/Resolver/CacheKey/FactorProvider/ParentCustomerEntityId.php (94%) diff --git a/app/code/Magento/CustomerGraphQl/etc/graphql/di.xml b/app/code/Magento/CustomerGraphQl/etc/graphql/di.xml index 7aeb9ca1bee64..0636098cd6d2d 100644 --- a/app/code/Magento/CustomerGraphQl/etc/graphql/di.xml +++ b/app/code/Magento/CustomerGraphQl/etc/graphql/di.xml @@ -176,9 +176,6 @@ Magento\CustomerGraphQl\Model\Resolver\Cache\Customer\ResolverCacheIdentity - - Magento\CustomerGraphQl\Model\Resolver\Cache\Subscriber\ResolverCacheIdentity - @@ -208,9 +205,6 @@ Magento\CustomerGraphQl\Model\Resolver\CacheKey\FactorProvider\CurrentCustomerId - - Magento\CustomerGraphQl\Model\Resolver\CacheKey\FactorProvider\ParentCustomerEntityId - diff --git a/app/code/Magento/CustomerGraphQl/Model/Resolver/CacheKey/FactorProvider/ParentCustomerEntityId.php b/app/code/Magento/NewsletterGraphQl/Model/Resolver/CacheKey/FactorProvider/ParentCustomerEntityId.php similarity index 94% rename from app/code/Magento/CustomerGraphQl/Model/Resolver/CacheKey/FactorProvider/ParentCustomerEntityId.php rename to app/code/Magento/NewsletterGraphQl/Model/Resolver/CacheKey/FactorProvider/ParentCustomerEntityId.php index 2030c24fb1840..a14841980ae50 100644 --- a/app/code/Magento/CustomerGraphQl/Model/Resolver/CacheKey/FactorProvider/ParentCustomerEntityId.php +++ b/app/code/Magento/NewsletterGraphQl/Model/Resolver/CacheKey/FactorProvider/ParentCustomerEntityId.php @@ -5,7 +5,7 @@ */ declare(strict_types=1); -namespace Magento\CustomerGraphQl\Model\Resolver\CacheKey\FactorProvider; +namespace Magento\NewsletterGraphQl\Model\Resolver\CacheKey\FactorProvider; use Magento\Customer\Api\Data\CustomerInterface; use Magento\GraphQl\Model\Query\ContextInterface; diff --git a/app/code/Magento/NewsletterGraphQl/etc/di.xml b/app/code/Magento/NewsletterGraphQl/etc/di.xml index d01d2c777230a..04c54e2f6db7d 100644 --- a/app/code/Magento/NewsletterGraphQl/etc/di.xml +++ b/app/code/Magento/NewsletterGraphQl/etc/di.xml @@ -8,7 +8,7 @@ - + Magento\NewsletterGraphQl\Model\Resolver\Cache\Subscriber\TagsStrategy diff --git a/app/code/Magento/NewsletterGraphQl/etc/graphql/di.xml b/app/code/Magento/NewsletterGraphQl/etc/graphql/di.xml index 814913202f1a2..483577018dd71 100644 --- a/app/code/Magento/NewsletterGraphQl/etc/graphql/di.xml +++ b/app/code/Magento/NewsletterGraphQl/etc/graphql/di.xml @@ -25,4 +25,22 @@ + + + + + Magento\NewsletterGraphQl\Model\Resolver\Cache\Subscriber\ResolverCacheIdentity + + + + + + + + + Magento\NewsletterGraphQl\Model\Resolver\CacheKey\FactorProvider\ParentCustomerEntityId + + + + From 6c7b111becab69c18bb27a01d1aad7dacb90f9a9 Mon Sep 17 00:00:00 2001 From: glo63652 Date: Wed, 27 Dec 2023 17:12:10 +0530 Subject: [PATCH 044/104] AC-9147::Newsletter subscription flag for customer graphql type is in the wrong module --- app/code/Magento/NewsletterGraphQl/etc/module.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/code/Magento/NewsletterGraphQl/etc/module.xml b/app/code/Magento/NewsletterGraphQl/etc/module.xml index 8bda85d80c830..a3b308def2380 100644 --- a/app/code/Magento/NewsletterGraphQl/etc/module.xml +++ b/app/code/Magento/NewsletterGraphQl/etc/module.xml @@ -9,6 +9,7 @@ + From 66a817961c102a0c677282acb8c79f1ee58b6373 Mon Sep 17 00:00:00 2001 From: engcom-Hotel Date: Thu, 28 Dec 2023 12:53:36 +0530 Subject: [PATCH 045/104] Removing non RFC3986 authorized characters --- lib/internal/Magento/Framework/Encryption/UrlCoder.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/internal/Magento/Framework/Encryption/UrlCoder.php b/lib/internal/Magento/Framework/Encryption/UrlCoder.php index f63e64bb66e6c..4911ea0198151 100644 --- a/lib/internal/Magento/Framework/Encryption/UrlCoder.php +++ b/lib/internal/Magento/Framework/Encryption/UrlCoder.php @@ -44,6 +44,6 @@ public function encode($url) */ public function decode($url) { - return $this->_url->sessionUrlVar(base64_decode(strtr($url, '-_,', '+/='))); + return $this->_url->sessionUrlVar(base64_decode(strtr($url, '-_~', '+/='))); } } From 7457764e12d3f25810681e95887e0960e8abff95 Mon Sep 17 00:00:00 2001 From: engcom-Hotel Date: Thu, 28 Dec 2023 13:53:32 +0530 Subject: [PATCH 046/104] Removing non RFC3986 authorized characters --- lib/internal/Magento/Framework/Encryption/UrlCoder.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/internal/Magento/Framework/Encryption/UrlCoder.php b/lib/internal/Magento/Framework/Encryption/UrlCoder.php index 4911ea0198151..bf872c550b2ae 100644 --- a/lib/internal/Magento/Framework/Encryption/UrlCoder.php +++ b/lib/internal/Magento/Framework/Encryption/UrlCoder.php @@ -26,7 +26,7 @@ public function __construct(\Magento\Framework\UrlInterface $url) } /** - * base64_encode() for URLs encoding + * The base64_encode() for URLs encoding * * @param string $url * @return string @@ -37,7 +37,7 @@ public function encode($url) } /** - * base64_decode() for URLs decoding + * The base64_decode() for URLs decoding * * @param string $url * @return string From e7760e6e3c6827b41b7cd1fb9edd8c81879ecfc6 Mon Sep 17 00:00:00 2001 From: glo63652 Date: Tue, 2 Jan 2024 12:11:02 +0530 Subject: [PATCH 047/104] AC-9147::Newsletter subscription flag for customer graphql type is in the wrong module --- app/code/Magento/NewsletterGraphQl/composer.json | 7 +++---- app/code/Magento/NewsletterGraphQl/etc/module.xml | 1 - 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/app/code/Magento/NewsletterGraphQl/composer.json b/app/code/Magento/NewsletterGraphQl/composer.json index 3fe7f7aaf289a..9a77101097765 100644 --- a/app/code/Magento/NewsletterGraphQl/composer.json +++ b/app/code/Magento/NewsletterGraphQl/composer.json @@ -10,10 +10,9 @@ "magento/framework": "*", "magento/module-customer": "*", "magento/module-newsletter": "*", - "magento/module-store": "*" - }, - "suggest": { - "magento/module-graph-ql": "*" + "magento/module-store": "*", + "magento/module-graph-ql": "*", + "magento/module-graph-ql-cache": "*" }, "license": [ "OSL-3.0", diff --git a/app/code/Magento/NewsletterGraphQl/etc/module.xml b/app/code/Magento/NewsletterGraphQl/etc/module.xml index a3b308def2380..8bda85d80c830 100644 --- a/app/code/Magento/NewsletterGraphQl/etc/module.xml +++ b/app/code/Magento/NewsletterGraphQl/etc/module.xml @@ -9,7 +9,6 @@ - From 2f199b594b554bec6bc6f8a555bf5d25aa1828ab Mon Sep 17 00:00:00 2001 From: glo63652 Date: Tue, 2 Jan 2024 13:50:35 +0530 Subject: [PATCH 048/104] AC-9147::Newsletter subscription flag for customer graphql type is in the wrong module --- app/code/Magento/NewsletterGraphQl/composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/NewsletterGraphQl/composer.json b/app/code/Magento/NewsletterGraphQl/composer.json index 9a77101097765..ff8c96c66a8bd 100644 --- a/app/code/Magento/NewsletterGraphQl/composer.json +++ b/app/code/Magento/NewsletterGraphQl/composer.json @@ -12,7 +12,7 @@ "magento/module-newsletter": "*", "magento/module-store": "*", "magento/module-graph-ql": "*", - "magento/module-graph-ql-cache": "*" + "magento/module-graph-ql-resolver-cache": "*" }, "license": [ "OSL-3.0", From da53de62afe5ba0afa91b1e60cca5b5b7c04fbb8 Mon Sep 17 00:00:00 2001 From: Banvari Lal Date: Thu, 4 Jan 2024 12:17:51 +0530 Subject: [PATCH 049/104] AC-7918::Order item should contain product images --- .../Model/Resolver/ProductResolver.php | 53 +++++++++++++++++++ .../Magento/SalesGraphQl/etc/schema.graphqls | 1 + 2 files changed, 54 insertions(+) create mode 100644 app/code/Magento/SalesGraphQl/Model/Resolver/ProductResolver.php diff --git a/app/code/Magento/SalesGraphQl/Model/Resolver/ProductResolver.php b/app/code/Magento/SalesGraphQl/Model/Resolver/ProductResolver.php new file mode 100644 index 0000000000000..bb4d9ba588430 --- /dev/null +++ b/app/code/Magento/SalesGraphQl/Model/Resolver/ProductResolver.php @@ -0,0 +1,53 @@ +productDataProvider = $productDataProvider; + } + + /** + * @inheritdoc + */ + public function resolve( + Field $field, + $context, + ResolveInfo $info, + array $value = null, + array $args = null + ) { + if (!isset($value['associatedProduct'])) { + throw new LocalizedException(__('Missing key "associatedProduct" in Order Item value data')); + } + /** @var Product $product */ + $product = $value['associatedProduct']; + + return $this->productDataProvider->getProductDataById((int) $product->getId()); + } +} \ No newline at end of file diff --git a/app/code/Magento/SalesGraphQl/etc/schema.graphqls b/app/code/Magento/SalesGraphQl/etc/schema.graphqls index 41c6ad4e7e688..f040cdf18ba13 100644 --- a/app/code/Magento/SalesGraphQl/etc/schema.graphqls +++ b/app/code/Magento/SalesGraphQl/etc/schema.graphqls @@ -107,6 +107,7 @@ interface OrderItemInterface @doc(description: "Order item details.") @typeResol quantity_invoiced: Float @doc(description: "The number of invoiced items.") quantity_canceled: Float @doc(description: "The number of canceled items.") quantity_returned: Float @doc(description: "The number of returned items.") + product: ProductInterface @doc(description: "The ProductInterface object, which contains details about the base product") @resolver(class: "Magento\\SalesGraphQl\\Model\\Resolver\\ProductResolver") } type OrderItem implements OrderItemInterface { From 76030983b82ad1d009c762e2d8b1b9452440380c Mon Sep 17 00:00:00 2001 From: Banvari Lal Date: Thu, 4 Jan 2024 15:57:14 +0530 Subject: [PATCH 050/104] AC-7918::Order item should contain product images --- .../Magento/SalesGraphQl/Model/Resolver/ProductResolver.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/SalesGraphQl/Model/Resolver/ProductResolver.php b/app/code/Magento/SalesGraphQl/Model/Resolver/ProductResolver.php index bb4d9ba588430..971aa6e4569b8 100644 --- a/app/code/Magento/SalesGraphQl/Model/Resolver/ProductResolver.php +++ b/app/code/Magento/SalesGraphQl/Model/Resolver/ProductResolver.php @@ -50,4 +50,4 @@ public function resolve( return $this->productDataProvider->getProductDataById((int) $product->getId()); } -} \ No newline at end of file +} From b12ab975b24e5ac3b16a835d5222f0a406141146 Mon Sep 17 00:00:00 2001 From: Banvari Lal Date: Thu, 4 Jan 2024 17:16:29 +0530 Subject: [PATCH 051/104] AC-7918::Order item should contain product images --- app/code/Magento/SalesGraphQl/composer.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/code/Magento/SalesGraphQl/composer.json b/app/code/Magento/SalesGraphQl/composer.json index 7215c8fefa8eb..76e29e9455804 100644 --- a/app/code/Magento/SalesGraphQl/composer.json +++ b/app/code/Magento/SalesGraphQl/composer.json @@ -11,7 +11,8 @@ "magento/module-tax": "*", "magento/module-quote": "*", "magento/module-graph-ql": "*", - "magento/module-shipping": "*" + "magento/module-shipping": "*", + "magento/module-catalog-graph-ql": "*" }, "license": [ "OSL-3.0", From 940280dfe5a1abc65fa6f02e1f2aee161ab92653 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A0=D0=BE=D1=81=D1=82=D0=B8=D1=81=D0=BB=D0=B0=D0=B2=20?= =?UTF-8?q?=D0=A1=D1=83=D0=BB=D0=B5=D0=B9=D0=BC=D0=B0=D0=BD=D0=BE=D0=B2?= Date: Sat, 6 Jan 2024 14:12:08 +0200 Subject: [PATCH 052/104] functionality refactoring, test coverage --- .../Magento/Sales/Model/AdminOrder/Create.php | 105 ++++++++---------- ...yMoveItemToOrderItemsAndBackToCartTest.xml | 79 +++++++++++++ 2 files changed, 126 insertions(+), 58 deletions(-) create mode 100644 app/code/Magento/Sales/Test/Mftf/Test/AdminCreateOrderToVerifyMoveItemToOrderItemsAndBackToCartTest.xml diff --git a/app/code/Magento/Sales/Model/AdminOrder/Create.php b/app/code/Magento/Sales/Model/AdminOrder/Create.php index 2d4eefd40455e..ffebeb2d0e3cf 100644 --- a/app/code/Magento/Sales/Model/AdminOrder/Create.php +++ b/app/code/Magento/Sales/Model/AdminOrder/Create.php @@ -301,40 +301,41 @@ class Create extends \Magento\Framework\DataObject implements \Magento\Checkout\ * @SuppressWarnings(PHPMD.ExcessiveParameterList) */ public function __construct( - \Magento\Framework\ObjectManagerInterface $objectManager, - \Magento\Framework\Event\ManagerInterface $eventManager, - \Magento\Framework\Registry $coreRegistry, - \Magento\Sales\Model\Config $salesConfig, - \Magento\Backend\Model\Session\Quote $quoteSession, - \Psr\Log\LoggerInterface $logger, - \Magento\Framework\DataObject\Copy $objectCopyService, - \Magento\Framework\Message\ManagerInterface $messageManager, - Product\Quote\Initializer $quoteInitializer, - \Magento\Customer\Api\CustomerRepositoryInterface $customerRepository, - \Magento\Customer\Api\AddressRepositoryInterface $addressRepository, - \Magento\Customer\Api\Data\AddressInterfaceFactory $addressFactory, - \Magento\Customer\Model\Metadata\FormFactory $metadataFormFactory, - \Magento\Customer\Api\GroupRepositoryInterface $groupRepository, - \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, - \Magento\Sales\Model\AdminOrder\EmailSender $emailSender, + \Magento\Framework\ObjectManagerInterface $objectManager, + \Magento\Framework\Event\ManagerInterface $eventManager, + \Magento\Framework\Registry $coreRegistry, + \Magento\Sales\Model\Config $salesConfig, + \Magento\Backend\Model\Session\Quote $quoteSession, + \Psr\Log\LoggerInterface $logger, + \Magento\Framework\DataObject\Copy $objectCopyService, + \Magento\Framework\Message\ManagerInterface $messageManager, + Product\Quote\Initializer $quoteInitializer, + \Magento\Customer\Api\CustomerRepositoryInterface $customerRepository, + \Magento\Customer\Api\AddressRepositoryInterface $addressRepository, + \Magento\Customer\Api\Data\AddressInterfaceFactory $addressFactory, + \Magento\Customer\Model\Metadata\FormFactory $metadataFormFactory, + \Magento\Customer\Api\GroupRepositoryInterface $groupRepository, + \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, + \Magento\Sales\Model\AdminOrder\EmailSender $emailSender, \Magento\CatalogInventory\Api\StockRegistryInterface $stockRegistry, - \Magento\Quote\Model\Quote\Item\Updater $quoteItemUpdater, - \Magento\Framework\DataObject\Factory $objectFactory, - \Magento\Quote\Api\CartRepositoryInterface $quoteRepository, - \Magento\Customer\Api\AccountManagementInterface $accountManagement, - \Magento\Customer\Api\Data\CustomerInterfaceFactory $customerFactory, - \Magento\Customer\Model\Customer\Mapper $customerMapper, - \Magento\Quote\Api\CartManagementInterface $quoteManagement, - \Magento\Framework\Api\DataObjectHelper $dataObjectHelper, - \Magento\Sales\Api\OrderManagementInterface $orderManagement, - \Magento\Quote\Model\QuoteFactory $quoteFactory, - array $data = [], - \Magento\Framework\Serialize\Serializer\Json $serializer = null, - ExtensibleDataObjectConverter $dataObjectConverter = null, - StoreManagerInterface $storeManager = null, - CustomAttributeListInterface $customAttributeList = null, - OrderRepositoryInterface $orderRepositoryInterface = null - ) { + \Magento\Quote\Model\Quote\Item\Updater $quoteItemUpdater, + \Magento\Framework\DataObject\Factory $objectFactory, + \Magento\Quote\Api\CartRepositoryInterface $quoteRepository, + \Magento\Customer\Api\AccountManagementInterface $accountManagement, + \Magento\Customer\Api\Data\CustomerInterfaceFactory $customerFactory, + \Magento\Customer\Model\Customer\Mapper $customerMapper, + \Magento\Quote\Api\CartManagementInterface $quoteManagement, + \Magento\Framework\Api\DataObjectHelper $dataObjectHelper, + \Magento\Sales\Api\OrderManagementInterface $orderManagement, + \Magento\Quote\Model\QuoteFactory $quoteFactory, + array $data = [], + \Magento\Framework\Serialize\Serializer\Json $serializer = null, + ExtensibleDataObjectConverter $dataObjectConverter = null, + StoreManagerInterface $storeManager = null, + CustomAttributeListInterface $customAttributeList = null, + OrderRepositoryInterface $orderRepositoryInterface = null + ) + { $this->_objectManager = $objectManager; $this->_eventManager = $eventManager; $this->_coreRegistry = $coreRegistry; @@ -888,7 +889,12 @@ public function moveQuoteItem($item, $moveTo, $qty) } $cartItems = $cart->getAllVisibleItems(); - $canBeRestored = (bool)$this->restoreTransferredItem('cart', $cartItems, $product); + $cartItemsToRestore = []; + foreach ($cartItems as $value) { + $cartItemsToRestore[$value->getData('item_id')] = $value->getData('item_id'); + } + $canBeRestored = $this->restoreTransferredItem('cart', $cartItemsToRestore); + if (!$canBeRestored) { $cartItem = $cart->addProduct($product, $info); if (is_string($cartItem)) { @@ -939,7 +945,7 @@ public function moveQuoteItem($item, $moveTo, $qty) $this->getSession()->getStoreId() ); $wishlistItems = $wishlist->getItemCollection()->getItems(); - $canBeRestored = (bool)$this->restoreTransferredItem('wishlist', $wishlistItems, null); + $canBeRestored = $this->restoreTransferredItem('wishlist', $wishlistItems); if (!$canBeRestored) { $wishlist->addNewItem($item->getProduct(), $info); } @@ -990,7 +996,7 @@ public function applySidebarData($data) $this->moveQuoteItem($item, 'order', $qty); $transferredItems = $this->_session->getTransferredItems() ?? []; $transferredItems['cart'][$itemId] = $itemId; - $this->_session->setTransferredItems($transferredItems) ; + $this->_session->setTransferredItems($transferredItems); } } } @@ -1006,7 +1012,7 @@ public function applySidebarData($data) $this->addProduct($item->getProduct(), $item->getBuyRequest()->toArray()); $transferredItems = $this->_session->getTransferredItems() ?? []; $transferredItems['wishlist'][$itemId] = $itemId; - $this->_session->setTransferredItems($transferredItems) ; + $this->_session->setTransferredItems($transferredItems); } } } @@ -2108,34 +2114,17 @@ private function removeTransferredItems(): void * * @param string $area * @param \Magento\Quote\Model\Quote\Item[]|\Magento\Wishlist\Model\Item[] $items - * @param \Magento\Catalog\Model\Product|null $product Product * @return bool */ - private function restoreTransferredItem($area, $items, $product = null): bool + private function restoreTransferredItem(string $area, array $items): bool { $transferredItems = $this->_session->getTransferredItems() ?? []; if (!isset($transferredItems[$area])) { return false; } - $itemToRestoreId = null; - switch ($area) { - case 'wishlist': - $itemToRestore = array_intersect_key($items, $transferredItems['wishlist']); - if ($itemToRestore) { - $itemToRestoreId = array_key_first($itemToRestore); - } - break; - case 'cart': - $cart = $this->getCustomerCart(); - $cartItem = $cart->getItemByProduct($product); - $canBeRestored = $cartItem ? in_array($cartItem->getId(), $transferredItems['cart']) : false; - if ($canBeRestored) { - $itemToRestoreId = $cartItem->getItemId(); - } - break; - default: - break; - } + $itemToRestore = array_intersect_key($items, $transferredItems[$area]); + $itemToRestoreId = array_key_first($itemToRestore); + if ($itemToRestoreId) { unset($transferredItems[$area][$itemToRestoreId]); $this->_session->setTransferredItems($transferredItems); diff --git a/app/code/Magento/Sales/Test/Mftf/Test/AdminCreateOrderToVerifyMoveItemToOrderItemsAndBackToCartTest.xml b/app/code/Magento/Sales/Test/Mftf/Test/AdminCreateOrderToVerifyMoveItemToOrderItemsAndBackToCartTest.xml new file mode 100644 index 0000000000000..2c5312e45e8fc --- /dev/null +++ b/app/code/Magento/Sales/Test/Mftf/Test/AdminCreateOrderToVerifyMoveItemToOrderItemsAndBackToCartTest.xml @@ -0,0 +1,79 @@ + + + + + + + + + <description value="Create Order to verify moving an item from an order to the cart and back works correctly test"/> + <severity value="AVERAGE"/> + <testCaseId value="https://github.com/magento/magento2/issues/37538"/> + <group value="sales"/> + </annotations> + <before> + <actionGroup ref="AdminLoginActionGroup" stepKey="LoginAsAdmin"/> + <createData entity="Simple_US_Customer" stepKey="createCustomer"/> + <createData entity="SimpleProduct2" stepKey="createSimpleProduct"> + <field key="price">10</field> + </createData> + <createData entity="SalesRuleSpecificCouponWithFixedDiscount" stepKey="createCartPriceRule"/> + <createData entity="SimpleSalesRuleCoupon" stepKey="createCouponForCartPriceRule"> + <requiredEntity createDataKey="createCartPriceRule"/> + </createData> + <magentoCLI + command="config:set {{EnablePaymentBankTransferConfigData.path}} {{EnablePaymentBankTransferConfigData.value}}" + stepKey="enableBankTransferPayment"/> + <magentoCLI command="config:set {{EnableFlatRateConfigData.path}} {{EnableFlatRateConfigData.value}}" + stepKey="enableFlatRate"/> + </before> + <after> + <magentoCLI + command="config:set {{DisablePaymentBankTransferConfigData.path}} {{DisablePaymentBankTransferConfigData.value}}" + stepKey="disableBankTransferPayment"/> + <deleteData createDataKey="createCartPriceRule" stepKey="deleteCartPriceRule"/> + <actionGroup ref="StorefrontCustomerLogoutActionGroup" stepKey="logoutCustomer" /> + <deleteData createDataKey="createCustomer" stepKey="deleteCustomer"/> + <deleteData createDataKey="createSimpleProduct" stepKey="deleteSimpleProduct"/> + <actionGroup ref="AdminLogoutActionGroup" stepKey="logout"/> + </after> + <actionGroup ref="AdminNavigateToNewOrderPageExistingCustomerActionGroup" stepKey="goToCreateOrderPage"> + <argument name="customer" value="$$createCustomer$$"/> + </actionGroup> + + <!-- Add product to order --> + <actionGroup ref="AddSimpleProductToOrderActionGroup" stepKey="addProductToOrder"> + <argument name="product" value="$$createSimpleProduct$$"/> + </actionGroup> + + <!-- move the product to SHOPPING CART --> + <actionGroup ref="AdminSelectValueFromActionSelectInItemsOrderedGridOnCreateOrderPageActionGroup" stepKey="moveSimpleProductToShoppingCart"> + <argument name="product" value="$$createSimpleProduct$$"/> + <argument name="option" value="Move to Shopping Cart"/> + </actionGroup> + <actionGroup ref="AdminClickUpdateItemsAndQuantitesOnCreateOrderPageActionGroup" stepKey="clickOnUpdateItemsAndQuantity"/> + <comment userInput="Comment is added to preserve the step key for backward compatibility" stepKey="waitForAdminCreateOrderWishListSectionPageLoad"/> + + <!-- Again move product to Order. --> + <checkOption selector="{{AdminCustomerActivitiesShoppingCartSection.addToOrder}}" stepKey="checkOptionAddToOrder"/> + <actionGroup ref="AdminClickUpdateChangesOnCreateOrderPageActionGroup" stepKey="clickUpdateChangesBtn"/> + <comment userInput="Comment is added to preserve the step key for backward compatibility" stepKey="waitForOrderUpdating"/> + + <!-- Put the items back into the cart. --> + <actionGroup ref="AdminSelectValueFromActionSelectInItemsOrderedGridOnCreateOrderPageActionGroup" stepKey="moveSimpleProductToShoppingCartBack"> + <argument name="product" value="$$createSimpleProduct$$"/> + <argument name="option" value="Move to Shopping Cart"/> + </actionGroup> + <actionGroup ref="AdminClickUpdateItemsAndQuantitesOnCreateOrderPageActionGroup" stepKey="clickOnUpdateItemsAndQuantity2"/> + <comment userInput="Comment is added to preserve the step key for backward compatibility" stepKey="waitForAdminCreateOrderWishListSectionPageLoad2"/> + + <!-- Check to see if the item exists in the cart --> + <see selector="{{AdminCreateOrderShoppingCartSection.shoppingCartBlock}}" userInput="$$createSimpleProduct.name$$" stepKey="seeProductInShoppingCart"/> + </test> +</tests> From aa804067ebdb601a8e09e150437bf6c2deb2e77a Mon Sep 17 00:00:00 2001 From: glo63652 <glo63652@adobe.com> Date: Tue, 9 Jan 2024 15:26:00 +0530 Subject: [PATCH 053/104] AC-10787-v1:: Use alternate payment method instead of Braintree for the test StorefrontAddProductToCartAndGoToCheckoutWithInvalidCreditCardTest --- ...StorefrontCheckoutPaymentMethodSection.xml | 1 + ...inPayPalPayflowProWithValutActionGroup.xml | 10 +++---- .../PayPalPayflowProConfigSection.xml | 5 ++-- .../FillPayFlowCreditCardActionGroup.xml | 23 +++++++++++++++ .../Mftf/Section/PayFlowCreditCardSection.xml | 17 +++++++++++ ...dGoToCheckoutWithInvalidCreditCardTest.xml | 28 +++++++++---------- 6 files changed, 61 insertions(+), 23 deletions(-) create mode 100644 app/code/Magento/Sales/Test/Mftf/ActionGroup/FillPayFlowCreditCardActionGroup.xml create mode 100644 app/code/Magento/Sales/Test/Mftf/Section/PayFlowCreditCardSection.xml diff --git a/app/code/Magento/Checkout/Test/Mftf/Section/StorefrontCheckoutPaymentMethodSection.xml b/app/code/Magento/Checkout/Test/Mftf/Section/StorefrontCheckoutPaymentMethodSection.xml index 363b3d304c9c0..4304c183da166 100644 --- a/app/code/Magento/Checkout/Test/Mftf/Section/StorefrontCheckoutPaymentMethodSection.xml +++ b/app/code/Magento/Checkout/Test/Mftf/Section/StorefrontCheckoutPaymentMethodSection.xml @@ -12,6 +12,7 @@ <element name="billingAddress" type="text" selector=".checkout-billing-address"/> <element name="checkPaymentMethodByName" type="radio" selector="//div[@id='checkout-payment-method-load']//div[@class='payment-method']//label//span[contains(., '{{methodName}}')]/../..//input" parameterized="true"/> <element name="checkCreditCard" type="radio" selector="//div[@id='checkout-payment-method-load']//div[@class='payment-method payment-method-braintree']//label//span[contains(., 'Credit Card')]/../..//input"/> + <element name="checkPayFlowCreditCard" type="radio" selector="//div[@id='checkout-payment-method-load']//div[@class='items payment-methods']//div[@class='payment-group']//label//span[contains(., 'Credit Card (Payflow Pro)')]/../..//input"/> <element name="billingAddressSameAsShipping" type="checkbox" selector=".payment-method._active [name='billing-address-same-as-shipping']"/> <element name="billingAddressSameAsShippingShared" type="checkbox" selector="#billing-address-same-as-shipping-shared"/> <element name="paymentOnAccount" type="radio" selector="#companycredit" deprecated="Use StorefrontCheckoutPaymentSection.paymentOnAccount B2B repository"/> diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminPayPalPayflowProWithValutActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminPayPalPayflowProWithValutActionGroup.xml index c97e580a2c93a..d7b7765ab8225 100644 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminPayPalPayflowProWithValutActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminPayPalPayflowProWithValutActionGroup.xml @@ -13,7 +13,7 @@ <description>Goes to the 'Configuration' page for 'Payment Methods'. Fills in the provided Sample PayPal Payflow pro credentials and other details. Clicks on Save.</description> </annotations> <arguments> - <argument name="credentials" defaultValue="SamplePaypalPaymentsProConfig"/> + <argument name="credentials" defaultValue="_CREDS"/> <argument name="countryCode" type="string" defaultValue="us"/> </arguments> <amOnPage url="{{AdminConfigPaymentMethodsPage.url}}" stepKey="navigateToPaymentConfigurationPage"/> @@ -22,10 +22,10 @@ <scrollTo selector="{{PayPalPayflowProConfigSection.paymentGateway(countryCode)}}" stepKey="scrollToConfigure"/> <click selector ="{{PayPalPayflowProConfigSection.configureBtn(countryCode)}}" stepKey="clickPayPalPaymentsProConfigureBtn"/> <scrollTo selector="{{PayPalPayflowProConfigSection.partner(countryCode)}}" stepKey="scrollToBottom"/> - <fillField selector ="{{PayPalPayflowProConfigSection.partner(countryCode)}}" userInput="{{credentials.paypal_paymentspro_parner}}" stepKey="inputPartner"/> - <fillField selector ="{{PayPalPayflowProConfigSection.user(countryCode)}}" userInput="{{credentials.paypal_paymentspro_user}}" stepKey="inputUser"/> - <fillField selector ="{{PayPalPayflowProConfigSection.vendor(countryCode)}}" userInput="{{credentials.paypal_paymentspro_vendor}}" stepKey="inputVendor"/> - <fillField selector ="{{PayPalPayflowProConfigSection.password(countryCode)}}" userInput="{{credentials.paypal_paymentspro_password}}" stepKey="inputPassword"/> + <fillField selector ="{{PayPalPayflowProConfigSection.partner(countryCode)}}" userInput="{{credentials.magento/payflow_pro_partner}}" stepKey="inputPartner"/> + <fillField selector ="{{PayPalPayflowProConfigSection.user(countryCode)}}" userInput="{{credentials.magento/payflow_pro_user}}" stepKey="inputUser"/> + <fillField selector ="{{PayPalPayflowProConfigSection.vendor(countryCode)}}" userInput="{{credentials.magento/payflow_pro_vendor}}" stepKey="inputVendor"/> + <fillField selector ="{{PayPalPayflowProConfigSection.password(countryCode)}}" userInput="{{credentials.magento/payflow_pro_pwd}}" stepKey="inputPassword"/> <selectOption selector="{{PayPalPayflowProConfigSection.testmode(countryCode)}}" userInput="Yes" stepKey="enableTestMode"/> <selectOption selector ="{{PayPalPayflowProConfigSection.enableSolution(countryCode)}}" userInput="Yes" stepKey="enableSolution"/> <selectOption selector ="{{PayPalPayflowProConfigSection.enableVault(countryCode)}}" userInput="Yes" stepKey="enableSolutionValut"/> diff --git a/app/code/Magento/Paypal/Test/Mftf/Section/OtherPayPalPaymentsConfigSection/PayPalPayflowProConfigSection.xml b/app/code/Magento/Paypal/Test/Mftf/Section/OtherPayPalPaymentsConfigSection/PayPalPayflowProConfigSection.xml index 9f4b2a6a47f19..4548653c1e7e6 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Section/OtherPayPalPaymentsConfigSection/PayPalPayflowProConfigSection.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Section/OtherPayPalPaymentsConfigSection/PayPalPayflowProConfigSection.xml @@ -8,7 +8,7 @@ <sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd"> <section name="PayPalPayflowProConfigSection"> - <element name="configureBtn" type="button" selector="#payment_{{countryCode}}_paypal_payment_gateways_paypal_payflowpro_with_express_checkout-head" parameterized="true"/> + <element name="configureBtn" type="button" selector="//*[@id='row_payment_{{countryCode}}_paypal_payment_gateways']//*[@id='payment_{{countryCode}}_paypal_payment_gateways']//*[@id='row_payment_{{countryCode}}_paypal_payment_gateways_paypal_payflowpro_with_express_checkout']//*[@id='payment_{{countryCode}}_paypal_payment_gateways_paypal_payflowpro_with_express_checkout-head']" parameterized="true"/> <element name="partner" type="button" selector="#payment_{{countryCode}}_paypal_payment_gateways_paypal_payflowpro_with_express_checkout_paypal_payflow_required_paypal_payflow_api_settings_partner" parameterized="true"/> <element name="user" type="button" selector="#payment_{{countryCode}}_paypal_payment_gateways_paypal_payflowpro_with_express_checkout_paypal_payflow_required_paypal_payflow_api_settings_user" parameterized="true"/> <element name="vendor" type="button" selector="#payment_{{countryCode}}_paypal_payment_gateways_paypal_payflowpro_with_express_checkout_paypal_payflow_required_paypal_payflow_api_settings_vendor" parameterized="true"/> @@ -16,6 +16,5 @@ <element name="testmode" type="button" selector="#payment_{{countryCode}}_paypal_payment_gateways_paypal_payflowpro_with_express_checkout_paypal_payflow_required_paypal_payflow_api_settings_sandbox_flag" parameterized="true"/> <element name="enableSolution" type="button" selector="#payment_{{countryCode}}_paypal_payment_gateways_paypal_payflowpro_with_express_checkout_paypal_payflow_required_enable_paypal_payflow" parameterized="true"/> <element name="enableVault" type="button" selector="#payment_{{countryCode}}_paypal_payment_gateways_paypal_payflowpro_with_express_checkout_paypal_payflow_required_payflowpro_cc_vault_active" parameterized="true"/> - <element name="paymentGateway" type="button" selector="#payment_{{countryCode}}_paypal_payment_gateways-head" parameterized="true"/> - </section> + <element name="paymentGateway" type="button" selector="//*[@id='payment_{{countryCode}}_other_paypal_payment_solutions']//*[@id='payment_{{countryCode}}_paypal_payment_gateways-head']" parameterized="true"/> </section> </sections> diff --git a/app/code/Magento/Sales/Test/Mftf/ActionGroup/FillPayFlowCreditCardActionGroup.xml b/app/code/Magento/Sales/Test/Mftf/ActionGroup/FillPayFlowCreditCardActionGroup.xml new file mode 100644 index 0000000000000..13849c0fd45a1 --- /dev/null +++ b/app/code/Magento/Sales/Test/Mftf/ActionGroup/FillPayFlowCreditCardActionGroup.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> + +<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> + <actionGroup name="FillPayFlowCreditCardActionGroup"> + <annotations> + <description>Fills in the provided Credit Card details.</description> + </annotations> + <arguments> + <argument name="creditCardDetails" defaultValue="VisaDefaultCard"/> + </arguments> + <fillField selector ="{{PayFlowCreditCardSection.creditCardNumber}}" userInput="{{creditCardDetails.cardNumber}}" stepKey="inputCreditcardNumber"/> + <click selector ="{{PayFlowCreditCardSection.expirationMonth(creditCardDetails.month)}}" stepKey="inputExpiryMonth"/> + <click selector ="{{PayFlowCreditCardSection.expirationYear(creditCardDetails.year)}}" stepKey="inputExpiryYear"/> + <fillField selector ="{{PayFlowCreditCardSection.cvv}}" userInput="{{creditCardDetails.cvv}}" stepKey="inputCvv"/> + </actionGroup> +</actionGroups> diff --git a/app/code/Magento/Sales/Test/Mftf/Section/PayFlowCreditCardSection.xml b/app/code/Magento/Sales/Test/Mftf/Section/PayFlowCreditCardSection.xml new file mode 100644 index 0000000000000..6a93bdd057144 --- /dev/null +++ b/app/code/Magento/Sales/Test/Mftf/Section/PayFlowCreditCardSection.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> + +<sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd"> + <section name="PayFlowCreditCardSection"> + <element name="creditCardNumber" type="input" selector="//*[@id='co-transparent-form']//*[@id='payment_form_payflowpro']//*[@id='payflowpro_cc_number']"/> + <element name="expirationMonth" type="select" selector="//*[@id='co-transparent-form']//*[@id='payment_form_payflowpro']//*[@id='payflowpro_cc_type_exp_div']//*[@id='payflowpro_expiration']/option[contains(., {{creditCardDetails.month}})]" parameterized="true"/> + <element name="expirationYear" type="select" selector="//*[@id='co-transparent-form']//*[@id='payment_form_payflowpro']//*[@id='payflowpro_cc_type_exp_div']//*[@id='payflowpro_expiration_yr']/option[contains(.,{{creditCardDetails.year}})]" parameterized="true"/> + <element name="cvv" type="input" selector="//*[@id='co-transparent-form']//*[@id='payment_form_payflowpro']//*[@id='payflowpro_cc_type_cvv_div']//*[@id='payflowpro_cc_cid']"/> + </section> +</sections> diff --git a/app/code/Magento/Sales/Test/Mftf/Test/StorefrontAddProductToCartAndGoToCheckoutWithInvalidCreditCardTest.xml b/app/code/Magento/Sales/Test/Mftf/Test/StorefrontAddProductToCartAndGoToCheckoutWithInvalidCreditCardTest.xml index d4fcfb9dfcb05..231d2fd44a11b 100644 --- a/app/code/Magento/Sales/Test/Mftf/Test/StorefrontAddProductToCartAndGoToCheckoutWithInvalidCreditCardTest.xml +++ b/app/code/Magento/Sales/Test/Mftf/Test/StorefrontAddProductToCartAndGoToCheckoutWithInvalidCreditCardTest.xml @@ -9,13 +9,12 @@ xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd"> <test name="StorefrontAddProductToCartAndGoToCheckoutWithInvalidCreditCardTest"> <annotations> - <features value="Braintree"/> - <stories value="Checkout with invalid credit card details through Braintree credit card payment method"/> - <title value="Checkout with invalid credit card details through Braintree credit card payment method"/> - <description value="Checkout with invalid credit card details through Braintree credit card payment method"/> + <features value="payflow"/> + <stories value="Checkout with invalid credit card details through Paypal payflow credit card payment method"/> + <title value="Checkout with invalid credit card details through Paypal payflow credit card payment method"/> + <description value="Checkout with invalid credit card details through Paypal payflow credit card payment method"/> <severity value="MINOR"/> <testCaseId value="AC-8920"/> - <group value="pr_exclude"/> </annotations> <before> <actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/> @@ -35,14 +34,14 @@ <actionGroup ref="CliCacheFlushActionGroup" stepKey="flushCache"> <argument name="tags" value=""/> </actionGroup> - <!-- Enable Braintree --> - <actionGroup ref="AdminBraintreeEnableActionGroup" stepKey="ConfigBraintree"> - <argument name="credentials" value="SampleBraintreeConfig"/> + <!-- Paypal Payflow --> + <actionGroup ref="AdminPayPalPayflowProWithValutActionGroup" stepKey="ConfigPayflow"> + <argument name="credentials" value="_CREDS"/> </actionGroup> </before> <after> <magentoCLI command="config:set paypal/general/merchant_country US" stepKey="setMerchantCountry"/> - <magentoCLI command="config:set payment/braintree/active 0" stepKey="disablePayPalExpress"/> + <createData entity="RollbackPaypalPayflowPro" stepKey="rollbackPaypalPayflowProConfig"/> <actionGroup ref="StorefrontCustomerLogoutActionGroup" stepKey="logoutCustomer" /> <deleteData createDataKey="createCustomer" stepKey="deleteCustomer"/> <deleteData createDataKey="simpleProduct" stepKey="deleteSimpleProduct"/> @@ -59,16 +58,15 @@ <!-- Select Shipping method and fill the credit card details --> <actionGroup ref="CheckoutSelectFlatRateShippingMethodActionGroup" stepKey="selectFlatRate"/> <actionGroup ref="StorefrontCheckoutClickNextOnShippingStepActionGroup" stepKey="goToReview"/> - <actionGroup ref="CheckoutSelectCreditCardPaymentActionGroup" stepKey="selectCreditCard"/> + <click selector="{{StorefrontCheckoutPaymentMethodSection.checkPayFlowCreditCard}}" stepKey="selectCreditCardPaymentMethod"/> <checkOption selector="{{StorefrontCheckoutPaymentMethodSection.billingAddressSameAsShipping}}" stepKey="checkBillingAddressSameAsShippingCheckbox"/> - <actionGroup ref="FillBraintreeCreditCardActionGroup" stepKey="fillCreditCardDetails"> - <argument name="creditCardDetails" value="InvalidCreditCard"/> + <actionGroup ref="FillPayFlowCreditCardActionGroup" stepKey="fillCreditCardDetails"> + <argument name="creditCardDetails" value="VisaDefaultCard"/> </actionGroup> <!-- Place Order and assert the error message --> <click selector="{{CheckoutPaymentSection.placeOrder}}" stepKey="clickPlaceOrder"/> - <actionGroup ref="StorefrontAssertCheckoutErrorMessageActionGroup" stepKey="assertErrorMessage"> - <argument name="message" value="Your payment could not be taken. Please try again or use a different payment method. Credit card number is not an accepted test number."/> - </actionGroup> + <waitForElementVisible selector="//*[@class='modals-wrapper']//aside[@class='modal-popup confirm _show']//div[@class='modal-inner-wrap']" stepKey="seeErrorMessage"/> + <click selector="//*[@class='modals-wrapper']//aside[@class='modal-popup confirm _show']//div[@class='modal-inner-wrap']//footer/button" stepKey="clickOk"/> <wait time="6" stepKey="waitForPageLoad" /> <seeCurrentUrlMatches regex="~\/checkout/#payment~" stepKey="seeCurrentUrl"/> </test> From cd9b6d56c6723bdd2e18e0359bce62f30d81140b Mon Sep 17 00:00:00 2001 From: glo63652 <glo63652@adobe.com> Date: Tue, 9 Jan 2024 16:52:30 +0530 Subject: [PATCH 054/104] AC-10787-v1:: Use alternate payment method instead of Braintree for the test StorefrontAddProductToCartAndGoToCheckoutWithInvalidCreditCardTest --- ...koutSelectCreditCardPaymentActionGroup.xml | 21 ------------- ...StorefrontCheckoutPaymentMethodSection.xml | 1 - .../AdminBraintreeEnableActionGroup.xml | 31 ------------------- .../AdminPayPalPayflowProActionGroup.xml | 17 ++++++++++ .../FillBraintreeCreditCardActionGroup.xml | 28 ----------------- .../Sales/Test/Mftf/Data/BraintreeData.xml | 22 ------------- .../Mftf/Page/AdminConfigBraintreePage.xml | 12 ------- .../Mftf/Section/BraintreeConfigSection.xml | 19 ------------ .../Section/BraintreeCreditCardSection.xml | 19 ------------ ...dGoToCheckoutWithInvalidCreditCardTest.xml | 2 +- 10 files changed, 18 insertions(+), 154 deletions(-) delete mode 100644 app/code/Magento/Checkout/Test/Mftf/ActionGroup/CheckoutSelectCreditCardPaymentActionGroup.xml delete mode 100644 app/code/Magento/Sales/Test/Mftf/ActionGroup/AdminBraintreeEnableActionGroup.xml create mode 100644 app/code/Magento/Sales/Test/Mftf/ActionGroup/AdminPayPalPayflowProActionGroup.xml delete mode 100644 app/code/Magento/Sales/Test/Mftf/ActionGroup/FillBraintreeCreditCardActionGroup.xml delete mode 100644 app/code/Magento/Sales/Test/Mftf/Data/BraintreeData.xml delete mode 100644 app/code/Magento/Sales/Test/Mftf/Page/AdminConfigBraintreePage.xml delete mode 100644 app/code/Magento/Sales/Test/Mftf/Section/BraintreeConfigSection.xml delete mode 100644 app/code/Magento/Sales/Test/Mftf/Section/BraintreeCreditCardSection.xml diff --git a/app/code/Magento/Checkout/Test/Mftf/ActionGroup/CheckoutSelectCreditCardPaymentActionGroup.xml b/app/code/Magento/Checkout/Test/Mftf/ActionGroup/CheckoutSelectCreditCardPaymentActionGroup.xml deleted file mode 100644 index f892b55a5abf3..0000000000000 --- a/app/code/Magento/Checkout/Test/Mftf/ActionGroup/CheckoutSelectCreditCardPaymentActionGroup.xml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ ---> - -<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> - <actionGroup name="CheckoutSelectCreditCardPaymentActionGroup"> - <annotations> - <description>Selects the 'Credit card' Payment Method on the Storefront Checkout page.</description> - </annotations> - - <waitForPageLoad stepKey="waitForLoadingMask"/> - <waitForPageLoad stepKey="waitForPageLoad"/> - <click selector="{{StorefrontCheckoutPaymentMethodSection.checkCreditCard}}" stepKey="selectCreditCardPaymentMethod"/> - <waitForPageLoad stepKey="waitForLoadingMaskAfterPaymentMethodSelection"/> - </actionGroup> -</actionGroups> diff --git a/app/code/Magento/Checkout/Test/Mftf/Section/StorefrontCheckoutPaymentMethodSection.xml b/app/code/Magento/Checkout/Test/Mftf/Section/StorefrontCheckoutPaymentMethodSection.xml index 4304c183da166..2030a8189a9bc 100644 --- a/app/code/Magento/Checkout/Test/Mftf/Section/StorefrontCheckoutPaymentMethodSection.xml +++ b/app/code/Magento/Checkout/Test/Mftf/Section/StorefrontCheckoutPaymentMethodSection.xml @@ -11,7 +11,6 @@ <section name="StorefrontCheckoutPaymentMethodSection"> <element name="billingAddress" type="text" selector=".checkout-billing-address"/> <element name="checkPaymentMethodByName" type="radio" selector="//div[@id='checkout-payment-method-load']//div[@class='payment-method']//label//span[contains(., '{{methodName}}')]/../..//input" parameterized="true"/> - <element name="checkCreditCard" type="radio" selector="//div[@id='checkout-payment-method-load']//div[@class='payment-method payment-method-braintree']//label//span[contains(., 'Credit Card')]/../..//input"/> <element name="checkPayFlowCreditCard" type="radio" selector="//div[@id='checkout-payment-method-load']//div[@class='items payment-methods']//div[@class='payment-group']//label//span[contains(., 'Credit Card (Payflow Pro)')]/../..//input"/> <element name="billingAddressSameAsShipping" type="checkbox" selector=".payment-method._active [name='billing-address-same-as-shipping']"/> <element name="billingAddressSameAsShippingShared" type="checkbox" selector="#billing-address-same-as-shipping-shared"/> diff --git a/app/code/Magento/Sales/Test/Mftf/ActionGroup/AdminBraintreeEnableActionGroup.xml b/app/code/Magento/Sales/Test/Mftf/ActionGroup/AdminBraintreeEnableActionGroup.xml deleted file mode 100644 index 341363a950895..0000000000000 --- a/app/code/Magento/Sales/Test/Mftf/ActionGroup/AdminBraintreeEnableActionGroup.xml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ ---> - -<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> - <actionGroup name="AdminBraintreeEnableActionGroup"> - <annotations> - <description>Goes to the 'Configuration' page for 'Payment Methods'. Fills in the provided Sample Braintree credentials and other details. Clicks on Save.</description> - </annotations> - <arguments> - <argument name="credentials" defaultValue="SampleBraintreeConfig"/> - <argument name="countryCode" type="string" defaultValue="us"/> - </arguments> - <amOnPage url="{{AdminConfigBraintreePage.url}}" stepKey="navigateToPaymentConfigurationPage"/> - <waitForPageLoad stepKey="waitForPageLoad1"/> - <click selector="{{BraintreeConfigSection.configureBtn(countryCode)}}" stepKey="clickBraintreeConfigureBtn"/> - <selectOption selector ="{{BraintreeConfigSection.environment(countryCode)}}" userInput="Sandbox" stepKey="inputTypeOfEnvironment"/> - <selectOption selector ="{{BraintreeConfigSection.paymentAction(countryCode)}}" userInput="Authorize" stepKey="inputPaymentAction"/> - <fillField selector ="{{BraintreeConfigSection.merchantID(countryCode)}}" userInput="{{credentials.braintree_merchant_id}}" stepKey="inputMerchantId"/> - <fillField selector ="{{BraintreeConfigSection.publicKey(countryCode)}}" userInput="{{credentials.braintree_public_key}}" stepKey="inputPublicKey"/> - <fillField selector ="{{BraintreeConfigSection.privateKey(countryCode)}}" userInput="{{credentials.braintree_private_key}}" stepKey="inputPrivateKey"/> - <selectOption selector ="{{BraintreeConfigSection.enableCard(countryCode)}}" userInput="Yes" stepKey="enableCardPayment"/> - <click selector="{{AdminConfigSection.saveButton}}" stepKey="saveConfig"/> - <waitForPageLoad stepKey="waitForPageLoad2"/> - </actionGroup> -</actionGroups> diff --git a/app/code/Magento/Sales/Test/Mftf/ActionGroup/AdminPayPalPayflowProActionGroup.xml b/app/code/Magento/Sales/Test/Mftf/ActionGroup/AdminPayPalPayflowProActionGroup.xml new file mode 100644 index 0000000000000..661847c76a793 --- /dev/null +++ b/app/code/Magento/Sales/Test/Mftf/ActionGroup/AdminPayPalPayflowProActionGroup.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + /** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +--> + +<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> + <actionGroup name="AdminPayPalPayflowProActionGroup" extends="AdminPayPalPayflowProWithValutActionGroup"> + <annotations> + <description>Go to the 'Configuration' page for 'Payment Methods'. Fill in the provided Sample PayPal Payflow pro credentials and other details. Clicks on Save.</description> + </annotations> + <remove keyForRemoval="enableSolutionValut"/> + </actionGroup> +</actionGroups> diff --git a/app/code/Magento/Sales/Test/Mftf/ActionGroup/FillBraintreeCreditCardActionGroup.xml b/app/code/Magento/Sales/Test/Mftf/ActionGroup/FillBraintreeCreditCardActionGroup.xml deleted file mode 100644 index 642f3db587149..0000000000000 --- a/app/code/Magento/Sales/Test/Mftf/ActionGroup/FillBraintreeCreditCardActionGroup.xml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ ---> - -<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> - <actionGroup name="FillBraintreeCreditCardActionGroup"> - <annotations> - <description>Fills in the provided Braintree Credit Card details.</description> - </annotations> - <arguments> - <argument name="creditCardDetails" defaultValue="InvalidCreditCard"/> - </arguments> - <switchToIFrame selector="{{BraintreeCreditCardSection.ccNumberIframe}}" stepKey="switchToCcNumberIframe"/> - <fillField selector ="{{BraintreeCreditCardSection.creditCardNumber}}" userInput="{{creditCardDetails.cardNumber}}" stepKey="inputCreditcardNumber"/> - <switchToIFrame stepKey="switchBack1"/> - <switchToIFrame selector="{{BraintreeCreditCardSection.ccExpiryIframe}}" stepKey="switchToExpiryIframe"/> - <fillField selector ="{{BraintreeCreditCardSection.expirationDate}}" userInput="{{creditCardDetails.expiry}}" stepKey="inputExpiryDate"/> - <switchToIFrame stepKey="switchBack2"/> - <switchToIFrame selector="{{BraintreeCreditCardSection.ccCvvIframe}}" stepKey="switchToCvvIframe"/> - <fillField selector ="{{BraintreeCreditCardSection.cvv}}" userInput="{{creditCardDetails.cvv}}" stepKey="inputCvv"/> - <switchToIFrame stepKey="switchBack3"/> - </actionGroup> -</actionGroups> diff --git a/app/code/Magento/Sales/Test/Mftf/Data/BraintreeData.xml b/app/code/Magento/Sales/Test/Mftf/Data/BraintreeData.xml deleted file mode 100644 index 61e93eac49019..0000000000000 --- a/app/code/Magento/Sales/Test/Mftf/Data/BraintreeData.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ ---> -<entities xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="urn:magento:mftf:DataGenerator/etc/dataProfileSchema.xsd"> - <entity name="SampleBraintreeConfig" type="braintree_config"> - <data key="braintree_username">MagentoPB</data> - <data key="braintree_password">123123q</data> - <data key="braintree_merchant_id">d4pdjhxgjfrsmzbf</data> - <data key="braintree_public_key">m7q4wmh43xrgyrst</data> - <data key="braintree_private_key">67de364080b1b4e2492d7a3de413a572</data> - </entity> - <entity name="InvalidCreditCard" type="data"> - <data key="cardNumber">4032031062519193</data> - <data key="expiry">12/25</data> - <data key="cvv">123</data> - </entity> -</entities> diff --git a/app/code/Magento/Sales/Test/Mftf/Page/AdminConfigBraintreePage.xml b/app/code/Magento/Sales/Test/Mftf/Page/AdminConfigBraintreePage.xml deleted file mode 100644 index 32993662f45a2..0000000000000 --- a/app/code/Magento/Sales/Test/Mftf/Page/AdminConfigBraintreePage.xml +++ /dev/null @@ -1,12 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ ---> -<pages xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/PageObject.xsd"> - <page name="AdminConfigBraintreePage" url="admin/system_config/edit/section/payment/" area="admin" module="Magento_Config"> - <section name="OtherPaymentsConfigSection"/> - </page> -</pages> diff --git a/app/code/Magento/Sales/Test/Mftf/Section/BraintreeConfigSection.xml b/app/code/Magento/Sales/Test/Mftf/Section/BraintreeConfigSection.xml deleted file mode 100644 index 6b6dec48ba3d5..0000000000000 --- a/app/code/Magento/Sales/Test/Mftf/Section/BraintreeConfigSection.xml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ ---> -<sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd"> - <section name="BraintreeConfigSection"> - <element name="configureBtn" type="button" selector="#payment_{{countryCode}}_braintree_section_braintree-head" parameterized="true"/> - <element name="environment" type="input" selector="#payment_{{countryCode}}_braintree_section_braintree_braintree_required_environment" parameterized="true"/> - <element name="paymentAction" type="input" selector="#payment_{{countryCode}}_braintree_section_braintree_braintree_required_payment_action" parameterized="true"/> - <element name="merchantID" type="input" selector="#payment_{{countryCode}}_braintree_section_braintree_braintree_required_sandbox_merchant_id" parameterized="true"/> - <element name="publicKey" type="input" selector="#payment_{{countryCode}}_braintree_section_braintree_braintree_required_sandbox_public_key" parameterized="true"/> - <element name="privateKey" type="input" selector="#payment_{{countryCode}}_braintree_section_braintree_braintree_required_sandbox_private_key" parameterized="true"/> - <element name="enableCard" type="input" selector="#payment_{{countryCode}}_braintree_section_braintree_active" parameterized="true"/> - </section> -</sections> diff --git a/app/code/Magento/Sales/Test/Mftf/Section/BraintreeCreditCardSection.xml b/app/code/Magento/Sales/Test/Mftf/Section/BraintreeCreditCardSection.xml deleted file mode 100644 index 0034427ab6c0a..0000000000000 --- a/app/code/Magento/Sales/Test/Mftf/Section/BraintreeCreditCardSection.xml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ ---> - -<sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd"> - <section name="BraintreeCreditCardSection"> - <element name="ccNumberIframe" type="iframe" selector="//*[@id='braintree-hosted-field-number']"/> - <element name="ccExpiryIframe" type="iframe" selector="//*[@id='braintree-hosted-field-expirationDate']"/> - <element name="ccCvvIframe" type="iframe" selector="//*[@id='braintree-hosted-field-cvv']"/> - <element name="creditCardNumber" type="input" selector="//input[@id='credit-card-number']"/> - <element name="expirationDate" type="input" selector="//input[@id='expiration']"/> - <element name="cvv" type="input" selector="//input[@id='cvv']"/> - </section> -</sections> diff --git a/app/code/Magento/Sales/Test/Mftf/Test/StorefrontAddProductToCartAndGoToCheckoutWithInvalidCreditCardTest.xml b/app/code/Magento/Sales/Test/Mftf/Test/StorefrontAddProductToCartAndGoToCheckoutWithInvalidCreditCardTest.xml index 231d2fd44a11b..76c7c3a056092 100644 --- a/app/code/Magento/Sales/Test/Mftf/Test/StorefrontAddProductToCartAndGoToCheckoutWithInvalidCreditCardTest.xml +++ b/app/code/Magento/Sales/Test/Mftf/Test/StorefrontAddProductToCartAndGoToCheckoutWithInvalidCreditCardTest.xml @@ -35,7 +35,7 @@ <argument name="tags" value=""/> </actionGroup> <!-- Paypal Payflow --> - <actionGroup ref="AdminPayPalPayflowProWithValutActionGroup" stepKey="ConfigPayflow"> + <actionGroup ref="AdminPayPalPayflowProActionGroup" stepKey="ConfigPayflow"> <argument name="credentials" value="_CREDS"/> </actionGroup> </before> From 1ff9cc35be11892d68d164caafe264586f636dcf Mon Sep 17 00:00:00 2001 From: glo63652 <glo63652@adobe.com> Date: Tue, 9 Jan 2024 17:24:00 +0530 Subject: [PATCH 055/104] AC-10787-v1:: Use alternate payment method instead of Braintree for the test StorefrontAddProductToCartAndGoToCheckoutWithInvalidCreditCardTest --- ...inPayPalPayflowProWithValutActionGroup.xml | 8 +++---- .../AdminPayPalPayflowProActionGroup.xml | 23 +++++++++++++++++-- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminPayPalPayflowProWithValutActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminPayPalPayflowProWithValutActionGroup.xml index d7b7765ab8225..b67f6f6c12f87 100644 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminPayPalPayflowProWithValutActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminPayPalPayflowProWithValutActionGroup.xml @@ -22,10 +22,10 @@ <scrollTo selector="{{PayPalPayflowProConfigSection.paymentGateway(countryCode)}}" stepKey="scrollToConfigure"/> <click selector ="{{PayPalPayflowProConfigSection.configureBtn(countryCode)}}" stepKey="clickPayPalPaymentsProConfigureBtn"/> <scrollTo selector="{{PayPalPayflowProConfigSection.partner(countryCode)}}" stepKey="scrollToBottom"/> - <fillField selector ="{{PayPalPayflowProConfigSection.partner(countryCode)}}" userInput="{{credentials.magento/payflow_pro_partner}}" stepKey="inputPartner"/> - <fillField selector ="{{PayPalPayflowProConfigSection.user(countryCode)}}" userInput="{{credentials.magento/payflow_pro_user}}" stepKey="inputUser"/> - <fillField selector ="{{PayPalPayflowProConfigSection.vendor(countryCode)}}" userInput="{{credentials.magento/payflow_pro_vendor}}" stepKey="inputVendor"/> - <fillField selector ="{{PayPalPayflowProConfigSection.password(countryCode)}}" userInput="{{credentials.magento/payflow_pro_pwd}}" stepKey="inputPassword"/> + <fillField selector ="{{PayPalPayflowProConfigSection.partner(countryCode)}}" userInput="{{credentials.paypal_paymentspro_parner}}" stepKey="inputPartner"/> + <fillField selector ="{{PayPalPayflowProConfigSection.user(countryCode)}}" userInput="{{credentials.paypal_paymentspro_user}}" stepKey="inputUser"/> + <fillField selector ="{{PayPalPayflowProConfigSection.vendor(countryCode)}}" userInput="{{credentials.paypal_paymentspro_vendor}}" stepKey="inputVendor"/> + <fillField selector ="{{PayPalPayflowProConfigSection.password(countryCode)}}" userInput="{{credentials.paypal_paymentspro_password}}" stepKey="inputPassword"/> <selectOption selector="{{PayPalPayflowProConfigSection.testmode(countryCode)}}" userInput="Yes" stepKey="enableTestMode"/> <selectOption selector ="{{PayPalPayflowProConfigSection.enableSolution(countryCode)}}" userInput="Yes" stepKey="enableSolution"/> <selectOption selector ="{{PayPalPayflowProConfigSection.enableVault(countryCode)}}" userInput="Yes" stepKey="enableSolutionValut"/> diff --git a/app/code/Magento/Sales/Test/Mftf/ActionGroup/AdminPayPalPayflowProActionGroup.xml b/app/code/Magento/Sales/Test/Mftf/ActionGroup/AdminPayPalPayflowProActionGroup.xml index 661847c76a793..e725758c2c8a4 100644 --- a/app/code/Magento/Sales/Test/Mftf/ActionGroup/AdminPayPalPayflowProActionGroup.xml +++ b/app/code/Magento/Sales/Test/Mftf/ActionGroup/AdminPayPalPayflowProActionGroup.xml @@ -8,10 +8,29 @@ <actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> - <actionGroup name="AdminPayPalPayflowProActionGroup" extends="AdminPayPalPayflowProWithValutActionGroup"> + <actionGroup name="AdminPayPalPayflowProActionGroup"> <annotations> <description>Go to the 'Configuration' page for 'Payment Methods'. Fill in the provided Sample PayPal Payflow pro credentials and other details. Clicks on Save.</description> </annotations> - <remove keyForRemoval="enableSolutionValut"/> + <arguments> + <argument name="credentials" defaultValue="_CREDS"/> + <argument name="countryCode" type="string" defaultValue="us"/> + </arguments> + <amOnPage url="{{AdminConfigPaymentMethodsPage.url}}" stepKey="navigateToPaymentConfigurationPage"/> + <waitForPageLoad stepKey="waitForConfigPageLoad"/> + <click selector ="{{OtherPayPalPaymentsConfigSection.expandTab(countryCode)}}" stepKey="expandOtherPaypalConfigButton"/> + <scrollTo selector="{{PayPalPayflowProConfigSection.paymentGateway(countryCode)}}" stepKey="scrollToConfigure"/> + <click selector ="{{PayPalPayflowProConfigSection.configureBtn(countryCode)}}" stepKey="clickPayPalPaymentsProConfigureBtn"/> + <scrollTo selector="{{PayPalPayflowProConfigSection.partner(countryCode)}}" stepKey="scrollToBottom"/> + <fillField selector ="{{PayPalPayflowProConfigSection.partner(countryCode)}}" userInput="{{credentials.magento/payflow_pro_partner}}" stepKey="inputPartner"/> + <fillField selector ="{{PayPalPayflowProConfigSection.user(countryCode)}}" userInput="{{credentials.magento/payflow_pro_user}}" stepKey="inputUser"/> + <fillField selector ="{{PayPalPayflowProConfigSection.vendor(countryCode)}}" userInput="{{credentials.magento/payflow_pro_vendor}}" stepKey="inputVendor"/> + <fillField selector ="{{PayPalPayflowProConfigSection.password(countryCode)}}" userInput="{{credentials.magento/payflow_pro_pwd}}" stepKey="inputPassword"/> + <selectOption selector="{{PayPalPayflowProConfigSection.testmode(countryCode)}}" userInput="Yes" stepKey="enableTestMode"/> + <selectOption selector ="{{PayPalPayflowProConfigSection.enableSolution(countryCode)}}" userInput="Yes" stepKey="enableSolution"/> + <selectOption selector ="{{PayPalPayflowProConfigSection.enableVault(countryCode)}}" userInput="Yes" stepKey="enableSolutionValut"/> + <click selector="{{AdminConfigSection.saveButton}}" stepKey="saveConfig"/> + <waitForPageLoad stepKey="waitForSaving"/> + <see selector="{{AdminMessagesSection.success}}" userInput="You saved the configuration." stepKey="seeSuccess"/> </actionGroup> </actionGroups> From 53ec8bea6f85d93448c46b16d98e77a681dd4d5c Mon Sep 17 00:00:00 2001 From: glo63652 <glo63652@adobe.com> Date: Tue, 9 Jan 2024 17:25:42 +0530 Subject: [PATCH 056/104] AC-10787-v1:: Use alternate payment method instead of Braintree for the test StorefrontAddProductToCartAndGoToCheckoutWithInvalidCreditCardTest --- .../ActionGroup/AdminPayPalPayflowProWithValutActionGroup.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminPayPalPayflowProWithValutActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminPayPalPayflowProWithValutActionGroup.xml index b67f6f6c12f87..c97e580a2c93a 100644 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminPayPalPayflowProWithValutActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminPayPalPayflowProWithValutActionGroup.xml @@ -13,7 +13,7 @@ <description>Goes to the 'Configuration' page for 'Payment Methods'. Fills in the provided Sample PayPal Payflow pro credentials and other details. Clicks on Save.</description> </annotations> <arguments> - <argument name="credentials" defaultValue="_CREDS"/> + <argument name="credentials" defaultValue="SamplePaypalPaymentsProConfig"/> <argument name="countryCode" type="string" defaultValue="us"/> </arguments> <amOnPage url="{{AdminConfigPaymentMethodsPage.url}}" stepKey="navigateToPaymentConfigurationPage"/> From 98f27a2167c140efe3c1a7b31a501b026506b03b Mon Sep 17 00:00:00 2001 From: glo63652 <glo63652@adobe.com> Date: Tue, 9 Jan 2024 18:08:47 +0530 Subject: [PATCH 057/104] AC-10787-v1:: Use alternate payment method instead of Braintree for the test StorefrontAddProductToCartAndGoToCheckoutWithInvalidCreditCardTest --- ...inPayPalPayflowProWithValutActionGroup.xml | 10 +++--- .../AdminPayPalPayflowProActionGroup.xml | 36 ------------------- 2 files changed, 5 insertions(+), 41 deletions(-) delete mode 100644 app/code/Magento/Sales/Test/Mftf/ActionGroup/AdminPayPalPayflowProActionGroup.xml diff --git a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminPayPalPayflowProWithValutActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminPayPalPayflowProWithValutActionGroup.xml index c97e580a2c93a..d7b7765ab8225 100644 --- a/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminPayPalPayflowProWithValutActionGroup.xml +++ b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/AdminPayPalPayflowProWithValutActionGroup.xml @@ -13,7 +13,7 @@ <description>Goes to the 'Configuration' page for 'Payment Methods'. Fills in the provided Sample PayPal Payflow pro credentials and other details. Clicks on Save.</description> </annotations> <arguments> - <argument name="credentials" defaultValue="SamplePaypalPaymentsProConfig"/> + <argument name="credentials" defaultValue="_CREDS"/> <argument name="countryCode" type="string" defaultValue="us"/> </arguments> <amOnPage url="{{AdminConfigPaymentMethodsPage.url}}" stepKey="navigateToPaymentConfigurationPage"/> @@ -22,10 +22,10 @@ <scrollTo selector="{{PayPalPayflowProConfigSection.paymentGateway(countryCode)}}" stepKey="scrollToConfigure"/> <click selector ="{{PayPalPayflowProConfigSection.configureBtn(countryCode)}}" stepKey="clickPayPalPaymentsProConfigureBtn"/> <scrollTo selector="{{PayPalPayflowProConfigSection.partner(countryCode)}}" stepKey="scrollToBottom"/> - <fillField selector ="{{PayPalPayflowProConfigSection.partner(countryCode)}}" userInput="{{credentials.paypal_paymentspro_parner}}" stepKey="inputPartner"/> - <fillField selector ="{{PayPalPayflowProConfigSection.user(countryCode)}}" userInput="{{credentials.paypal_paymentspro_user}}" stepKey="inputUser"/> - <fillField selector ="{{PayPalPayflowProConfigSection.vendor(countryCode)}}" userInput="{{credentials.paypal_paymentspro_vendor}}" stepKey="inputVendor"/> - <fillField selector ="{{PayPalPayflowProConfigSection.password(countryCode)}}" userInput="{{credentials.paypal_paymentspro_password}}" stepKey="inputPassword"/> + <fillField selector ="{{PayPalPayflowProConfigSection.partner(countryCode)}}" userInput="{{credentials.magento/payflow_pro_partner}}" stepKey="inputPartner"/> + <fillField selector ="{{PayPalPayflowProConfigSection.user(countryCode)}}" userInput="{{credentials.magento/payflow_pro_user}}" stepKey="inputUser"/> + <fillField selector ="{{PayPalPayflowProConfigSection.vendor(countryCode)}}" userInput="{{credentials.magento/payflow_pro_vendor}}" stepKey="inputVendor"/> + <fillField selector ="{{PayPalPayflowProConfigSection.password(countryCode)}}" userInput="{{credentials.magento/payflow_pro_pwd}}" stepKey="inputPassword"/> <selectOption selector="{{PayPalPayflowProConfigSection.testmode(countryCode)}}" userInput="Yes" stepKey="enableTestMode"/> <selectOption selector ="{{PayPalPayflowProConfigSection.enableSolution(countryCode)}}" userInput="Yes" stepKey="enableSolution"/> <selectOption selector ="{{PayPalPayflowProConfigSection.enableVault(countryCode)}}" userInput="Yes" stepKey="enableSolutionValut"/> diff --git a/app/code/Magento/Sales/Test/Mftf/ActionGroup/AdminPayPalPayflowProActionGroup.xml b/app/code/Magento/Sales/Test/Mftf/ActionGroup/AdminPayPalPayflowProActionGroup.xml deleted file mode 100644 index e725758c2c8a4..0000000000000 --- a/app/code/Magento/Sales/Test/Mftf/ActionGroup/AdminPayPalPayflowProActionGroup.xml +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - /** - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ ---> - -<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd"> - <actionGroup name="AdminPayPalPayflowProActionGroup"> - <annotations> - <description>Go to the 'Configuration' page for 'Payment Methods'. Fill in the provided Sample PayPal Payflow pro credentials and other details. Clicks on Save.</description> - </annotations> - <arguments> - <argument name="credentials" defaultValue="_CREDS"/> - <argument name="countryCode" type="string" defaultValue="us"/> - </arguments> - <amOnPage url="{{AdminConfigPaymentMethodsPage.url}}" stepKey="navigateToPaymentConfigurationPage"/> - <waitForPageLoad stepKey="waitForConfigPageLoad"/> - <click selector ="{{OtherPayPalPaymentsConfigSection.expandTab(countryCode)}}" stepKey="expandOtherPaypalConfigButton"/> - <scrollTo selector="{{PayPalPayflowProConfigSection.paymentGateway(countryCode)}}" stepKey="scrollToConfigure"/> - <click selector ="{{PayPalPayflowProConfigSection.configureBtn(countryCode)}}" stepKey="clickPayPalPaymentsProConfigureBtn"/> - <scrollTo selector="{{PayPalPayflowProConfigSection.partner(countryCode)}}" stepKey="scrollToBottom"/> - <fillField selector ="{{PayPalPayflowProConfigSection.partner(countryCode)}}" userInput="{{credentials.magento/payflow_pro_partner}}" stepKey="inputPartner"/> - <fillField selector ="{{PayPalPayflowProConfigSection.user(countryCode)}}" userInput="{{credentials.magento/payflow_pro_user}}" stepKey="inputUser"/> - <fillField selector ="{{PayPalPayflowProConfigSection.vendor(countryCode)}}" userInput="{{credentials.magento/payflow_pro_vendor}}" stepKey="inputVendor"/> - <fillField selector ="{{PayPalPayflowProConfigSection.password(countryCode)}}" userInput="{{credentials.magento/payflow_pro_pwd}}" stepKey="inputPassword"/> - <selectOption selector="{{PayPalPayflowProConfigSection.testmode(countryCode)}}" userInput="Yes" stepKey="enableTestMode"/> - <selectOption selector ="{{PayPalPayflowProConfigSection.enableSolution(countryCode)}}" userInput="Yes" stepKey="enableSolution"/> - <selectOption selector ="{{PayPalPayflowProConfigSection.enableVault(countryCode)}}" userInput="Yes" stepKey="enableSolutionValut"/> - <click selector="{{AdminConfigSection.saveButton}}" stepKey="saveConfig"/> - <waitForPageLoad stepKey="waitForSaving"/> - <see selector="{{AdminMessagesSection.success}}" userInput="You saved the configuration." stepKey="seeSuccess"/> - </actionGroup> -</actionGroups> From e1d52315801d4d692d9e7423c01bf28b77407570 Mon Sep 17 00:00:00 2001 From: glo63652 <glo63652@adobe.com> Date: Tue, 9 Jan 2024 18:16:00 +0530 Subject: [PATCH 058/104] AC-10787-v1:: Use alternate payment method instead of Braintree for the test StorefrontAddProductToCartAndGoToCheckoutWithInvalidCreditCardTest --- .../Test/Mftf/ActionGroup/FillPayFlowCreditCardActionGroup.xml | 0 .../Test/Mftf/Section/PayFlowCreditCardSection.xml | 0 ...ntAddProductToCartAndGoToCheckoutWithInvalidCreditCardTest.xml | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename app/code/Magento/{Sales => Paypal}/Test/Mftf/ActionGroup/FillPayFlowCreditCardActionGroup.xml (100%) rename app/code/Magento/{Sales => Paypal}/Test/Mftf/Section/PayFlowCreditCardSection.xml (100%) rename app/code/Magento/{Sales => Paypal}/Test/Mftf/Test/StorefrontAddProductToCartAndGoToCheckoutWithInvalidCreditCardTest.xml (100%) diff --git a/app/code/Magento/Sales/Test/Mftf/ActionGroup/FillPayFlowCreditCardActionGroup.xml b/app/code/Magento/Paypal/Test/Mftf/ActionGroup/FillPayFlowCreditCardActionGroup.xml similarity index 100% rename from app/code/Magento/Sales/Test/Mftf/ActionGroup/FillPayFlowCreditCardActionGroup.xml rename to app/code/Magento/Paypal/Test/Mftf/ActionGroup/FillPayFlowCreditCardActionGroup.xml diff --git a/app/code/Magento/Sales/Test/Mftf/Section/PayFlowCreditCardSection.xml b/app/code/Magento/Paypal/Test/Mftf/Section/PayFlowCreditCardSection.xml similarity index 100% rename from app/code/Magento/Sales/Test/Mftf/Section/PayFlowCreditCardSection.xml rename to app/code/Magento/Paypal/Test/Mftf/Section/PayFlowCreditCardSection.xml diff --git a/app/code/Magento/Sales/Test/Mftf/Test/StorefrontAddProductToCartAndGoToCheckoutWithInvalidCreditCardTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/StorefrontAddProductToCartAndGoToCheckoutWithInvalidCreditCardTest.xml similarity index 100% rename from app/code/Magento/Sales/Test/Mftf/Test/StorefrontAddProductToCartAndGoToCheckoutWithInvalidCreditCardTest.xml rename to app/code/Magento/Paypal/Test/Mftf/Test/StorefrontAddProductToCartAndGoToCheckoutWithInvalidCreditCardTest.xml From 3d70958f8fa4680d09813909ebb3a2d963368a26 Mon Sep 17 00:00:00 2001 From: Mykola Silin <msilin@gomage.com> Date: Tue, 9 Jan 2024 21:28:07 +0200 Subject: [PATCH 059/104] Fix static test --- app/code/Magento/Newsletter/Controller/Subscriber/NewAction.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/code/Magento/Newsletter/Controller/Subscriber/NewAction.php b/app/code/Magento/Newsletter/Controller/Subscriber/NewAction.php index 82e7f2e23dbd1..cea0787538eb8 100644 --- a/app/code/Magento/Newsletter/Controller/Subscriber/NewAction.php +++ b/app/code/Magento/Newsletter/Controller/Subscriber/NewAction.php @@ -74,6 +74,7 @@ class NewAction extends SubscriberController implements HttpPostActionInterface * @param EmailValidator|null $emailValidator * @param CustomerRepositoryInterface|null $customerRepository * @param NewsletterConfig|null $newsletterConfig + * @SuppressWarnings(PHPMD.ExcessiveParameterList) */ public function __construct( Context $context, From c8cb84900f49ea87e1435199be49b1ec114eb83d Mon Sep 17 00:00:00 2001 From: glo63652 <glo63652@adobe.com> Date: Wed, 10 Jan 2024 10:25:57 +0530 Subject: [PATCH 060/104] AC-10787-v1:: Use alternate payment method instead of Braintree for the test StorefrontAddProductToCartAndGoToCheckoutWithInvalidCreditCardTest --- ...AddProductToCartAndGoToCheckoutWithInvalidCreditCardTest.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/StorefrontAddProductToCartAndGoToCheckoutWithInvalidCreditCardTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/StorefrontAddProductToCartAndGoToCheckoutWithInvalidCreditCardTest.xml index 76c7c3a056092..3ef8b2ffcfac1 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Test/StorefrontAddProductToCartAndGoToCheckoutWithInvalidCreditCardTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/StorefrontAddProductToCartAndGoToCheckoutWithInvalidCreditCardTest.xml @@ -25,7 +25,7 @@ </createData> <!-- New Product --> <createData entity="SimpleProduct2" stepKey="simpleProduct"> - <field key="price">100</field> + <field key="price">9000000</field> </createData> <!-- Reindex and cache flush --> <actionGroup ref="CliIndexerReindexActionGroup" stepKey="reindex"> From 2efd6674d8d51ef2394938d2a08ed36e4f59863f Mon Sep 17 00:00:00 2001 From: glo63652 <glo63652@adobe.com> Date: Wed, 10 Jan 2024 12:49:56 +0530 Subject: [PATCH 061/104] AC-10787-v1:: Use alternate payment method instead of Braintree for the test StorefrontAddProductToCartAndGoToCheckoutWithInvalidCreditCardTest --- ...tWithPayPalPayflowProCreditCardWithSeveralProductsTest.xml | 2 +- ...dProductToCartAndGoToCheckoutWithInvalidCreditCardTest.xml | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/StoreFrontGuestCheckoutWithPayPalPayflowProCreditCardWithSeveralProductsTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/StoreFrontGuestCheckoutWithPayPalPayflowProCreditCardWithSeveralProductsTest.xml index c728ed062b616..33b7ab4689c1c 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Test/StoreFrontGuestCheckoutWithPayPalPayflowProCreditCardWithSeveralProductsTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/StoreFrontGuestCheckoutWithPayPalPayflowProCreditCardWithSeveralProductsTest.xml @@ -23,7 +23,7 @@ <createData entity="Simple_US_Customer" stepKey="createCustomer"/> <actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/> <actionGroup ref="AdminPayPalPayflowProActionGroup" stepKey="configPaypalPayflowPro"> - <argument name="credentials" value="SamplePaypalPaymentsProConfig"/> + <argument name="credentials" value="_CREDS"/> </actionGroup> </before> <after> diff --git a/app/code/Magento/Paypal/Test/Mftf/Test/StorefrontAddProductToCartAndGoToCheckoutWithInvalidCreditCardTest.xml b/app/code/Magento/Paypal/Test/Mftf/Test/StorefrontAddProductToCartAndGoToCheckoutWithInvalidCreditCardTest.xml index 3ef8b2ffcfac1..34fd40095291d 100644 --- a/app/code/Magento/Paypal/Test/Mftf/Test/StorefrontAddProductToCartAndGoToCheckoutWithInvalidCreditCardTest.xml +++ b/app/code/Magento/Paypal/Test/Mftf/Test/StorefrontAddProductToCartAndGoToCheckoutWithInvalidCreditCardTest.xml @@ -63,10 +63,8 @@ <actionGroup ref="FillPayFlowCreditCardActionGroup" stepKey="fillCreditCardDetails"> <argument name="creditCardDetails" value="VisaDefaultCard"/> </actionGroup> - <!-- Place Order and assert the error message --> + <!-- Place Order and assert the url --> <click selector="{{CheckoutPaymentSection.placeOrder}}" stepKey="clickPlaceOrder"/> - <waitForElementVisible selector="//*[@class='modals-wrapper']//aside[@class='modal-popup confirm _show']//div[@class='modal-inner-wrap']" stepKey="seeErrorMessage"/> - <click selector="//*[@class='modals-wrapper']//aside[@class='modal-popup confirm _show']//div[@class='modal-inner-wrap']//footer/button" stepKey="clickOk"/> <wait time="6" stepKey="waitForPageLoad" /> <seeCurrentUrlMatches regex="~\/checkout/#payment~" stepKey="seeCurrentUrl"/> </test> From 6c20e8bae488ae9ab0eeeafd0d10eb5384729d8a Mon Sep 17 00:00:00 2001 From: engcom-Echo <engcom-vendorworker-echo@adobe.com> Date: Tue, 16 Jan 2024 12:53:36 +0530 Subject: [PATCH 062/104] Fix static test --- app/code/Magento/Sales/Model/AdminOrder/Create.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/code/Magento/Sales/Model/AdminOrder/Create.php b/app/code/Magento/Sales/Model/AdminOrder/Create.php index ffebeb2d0e3cf..2e4e57ccbe98f 100644 --- a/app/code/Magento/Sales/Model/AdminOrder/Create.php +++ b/app/code/Magento/Sales/Model/AdminOrder/Create.php @@ -334,8 +334,7 @@ public function __construct( StoreManagerInterface $storeManager = null, CustomAttributeListInterface $customAttributeList = null, OrderRepositoryInterface $orderRepositoryInterface = null - ) - { + ) { $this->_objectManager = $objectManager; $this->_eventManager = $eventManager; $this->_coreRegistry = $coreRegistry; @@ -827,6 +826,7 @@ public function getCustomerGroupId() * @return $this * @throws \Magento\Framework\Exception\LocalizedException * @SuppressWarnings(PHPMD.CyclomaticComplexity) + * @SuppressWarnings(PHPMD.NPathComplexity) * @SuppressWarnings(PHPMD.ExcessiveMethodLength) * phpcs:disable Generic.Metrics.NestingLevel */ From cfa9789b29bf7aa11f26ebebfa7eeaf9ba8dcaf5 Mon Sep 17 00:00:00 2001 From: Guillaume Quintard <guillaume.quintard@gmail.com> Date: Tue, 21 Nov 2023 16:31:49 -0800 Subject: [PATCH 063/104] [vcl] don't manually interfere with compression Varnish already has [default compression handling](https://varnish-cache.org/docs/trunk/users-guide/compression.html#default-behaviour). This code only kicks into gear in case of a `miss` or a `pass`, and in those cases, the backend should be responsible for these. --- app/code/Magento/PageCache/etc/varnish4.vcl | 15 --------------- app/code/Magento/PageCache/etc/varnish5.vcl | 15 --------------- app/code/Magento/PageCache/etc/varnish6.vcl | 15 --------------- 3 files changed, 45 deletions(-) diff --git a/app/code/Magento/PageCache/etc/varnish4.vcl b/app/code/Magento/PageCache/etc/varnish4.vcl index 7622025cc296e..f635787c012f2 100644 --- a/app/code/Magento/PageCache/etc/varnish4.vcl +++ b/app/code/Magento/PageCache/etc/varnish4.vcl @@ -76,21 +76,6 @@ sub vcl_recv { # collect all cookies std.collect(req.http.Cookie); - # Compression filter. See https://www.varnish-cache.org/trac/wiki/FAQ/Compression - if (req.http.Accept-Encoding) { - if (req.url ~ "\.(jpg|jpeg|png|gif|gz|tgz|bz2|tbz|mp3|ogg|swf|flv)$") { - # No point in compressing these - unset req.http.Accept-Encoding; - } elsif (req.http.Accept-Encoding ~ "gzip") { - set req.http.Accept-Encoding = "gzip"; - } elsif (req.http.Accept-Encoding ~ "deflate" && req.http.user-agent !~ "MSIE") { - set req.http.Accept-Encoding = "deflate"; - } else { - # unknown algorithm - unset req.http.Accept-Encoding; - } - } - # Remove all marketing get parameters to minimize the cache objects if (req.url ~ "(\?|&)(gclid|cx|ie|cof|siteurl|zanpid|origin|fbclid|mc_[a-z]+|utm_[a-z]+|_bta_[a-z]+)=") { set req.url = regsuball(req.url, "(gclid|cx|ie|cof|siteurl|zanpid|origin|fbclid|mc_[a-z]+|utm_[a-z]+|_bta_[a-z]+)=[-_A-z0-9+()%.]+&?", ""); diff --git a/app/code/Magento/PageCache/etc/varnish5.vcl b/app/code/Magento/PageCache/etc/varnish5.vcl index 335ffe289e721..0715661e018cf 100644 --- a/app/code/Magento/PageCache/etc/varnish5.vcl +++ b/app/code/Magento/PageCache/etc/varnish5.vcl @@ -77,21 +77,6 @@ sub vcl_recv { # collect all cookies std.collect(req.http.Cookie); - # Compression filter. See https://www.varnish-cache.org/trac/wiki/FAQ/Compression - if (req.http.Accept-Encoding) { - if (req.url ~ "\.(jpg|jpeg|png|gif|gz|tgz|bz2|tbz|mp3|ogg|swf|flv)$") { - # No point in compressing these - unset req.http.Accept-Encoding; - } elsif (req.http.Accept-Encoding ~ "gzip") { - set req.http.Accept-Encoding = "gzip"; - } elsif (req.http.Accept-Encoding ~ "deflate" && req.http.user-agent !~ "MSIE") { - set req.http.Accept-Encoding = "deflate"; - } else { - # unknown algorithm - unset req.http.Accept-Encoding; - } - } - # Remove all marketing get parameters to minimize the cache objects if (req.url ~ "(\?|&)(gclid|cx|ie|cof|siteurl|zanpid|origin|fbclid|mc_[a-z]+|utm_[a-z]+|_bta_[a-z]+)=") { set req.url = regsuball(req.url, "(gclid|cx|ie|cof|siteurl|zanpid|origin|fbclid|mc_[a-z]+|utm_[a-z]+|_bta_[a-z]+)=[-_A-z0-9+()%.]+&?", ""); diff --git a/app/code/Magento/PageCache/etc/varnish6.vcl b/app/code/Magento/PageCache/etc/varnish6.vcl index ee89dc8d22d7e..43c511024e0b3 100644 --- a/app/code/Magento/PageCache/etc/varnish6.vcl +++ b/app/code/Magento/PageCache/etc/varnish6.vcl @@ -81,21 +81,6 @@ sub vcl_recv { # collect all cookies std.collect(req.http.Cookie); - # Compression filter. See https://www.varnish-cache.org/trac/wiki/FAQ/Compression - if (req.http.Accept-Encoding) { - if (req.url ~ "\.(jpg|jpeg|png|gif|gz|tgz|bz2|tbz|mp3|ogg|swf|flv)$") { - # No point in compressing these - unset req.http.Accept-Encoding; - } elsif (req.http.Accept-Encoding ~ "gzip") { - set req.http.Accept-Encoding = "gzip"; - } elsif (req.http.Accept-Encoding ~ "deflate" && req.http.user-agent !~ "MSIE") { - set req.http.Accept-Encoding = "deflate"; - } else { - # unknown algorithm - unset req.http.Accept-Encoding; - } - } - # Remove all marketing get parameters to minimize the cache objects if (req.url ~ "(\?|&)(gclid|cx|ie|cof|siteurl|zanpid|origin|fbclid|mc_[a-z]+|utm_[a-z]+|_bta_[a-z]+)=") { set req.url = regsuball(req.url, "(gclid|cx|ie|cof|siteurl|zanpid|origin|fbclid|mc_[a-z]+|utm_[a-z]+|_bta_[a-z]+)=[-_A-z0-9+()%.]+&?", ""); From 902fa38da6291ecb2dfd0c78ac7fcf7832cfca97 Mon Sep 17 00:00:00 2001 From: Guillaume Quintard <guillaume.quintard@gmail.com> Date: Sat, 6 Jan 2024 12:03:41 -0800 Subject: [PATCH 064/104] add a test to make sure Varnish handles the AE header correctly --- dev/tests/varnish/compression.vtc | 65 +++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 dev/tests/varnish/compression.vtc diff --git a/dev/tests/varnish/compression.vtc b/dev/tests/varnish/compression.vtc new file mode 100644 index 0000000000000..aa98c601a1f13 --- /dev/null +++ b/dev/tests/varnish/compression.vtc @@ -0,0 +1,65 @@ +varnishtest "Compression handling" + +server s1 { + # first request will be the probe, handle it and be on our way + rxreq + expect req.url == "/health_check.php" + txresp + + # the probe expects the connection to close + close + accept + + # reply with a 200 + loop 4 { + rxreq + txresp -hdr "answer-to: POST" + } + + rxreq + txresp -hdr "answer-to: GET" +} -start + +# generate usable VCL pointing towards s1 +# mostly, we replace the place-holders, but we also jack up the probe +# interval to avoid further interference +shell { + # testdir is automatically set to the directory containing the present vtc + sed ${testdir}/../../../app/code/Magento/PageCache/etc/varnish6.vcl > ${tmpdir}/output.vcl \ + -e 's@\.interval = 5s;@.interval = 5m; .initial = 10;@' \ + -e 's@/\* {{ host }} \*/@${s1_addr}@' \ + -e 's@/\* {{ port }} \*/@${s1_port}@' \ + -e 's@/\* {{ ssl_offloaded_header }} \*/@unused@' \ + -e 's@/\* {{ grace_period }} \*/@0@' +} + +# little trick here: we leverage the fact that subroutines with the same name +# are concatenated in the order they are seen. This allows us to tweak the +# backend response before the official VCL processes it, so we can tell +# client c1 which AE header was sent to the backend +varnish v1 -vcl { + sub vcl_backend_response { + set beresp.http.sent-accept-encoding = bereq.http.accept-encoding; + } + include "${tmpdir}/output.vcl"; +}-start + +# make sur ethe probe request fired +delay 1 + +client c1 { + # Uncacheable (it's a POST), Varnish should send it verbatim to s1 + txreq -method "POST" -hdr "accept-encoding: something completely random" + rxresp + expect resp.http.sent-accept-encoding == "something completely random" + + # cacheable GET + txreq -hdr "accept-encoding: will be overridden" + rxresp + expect resp.http.sent-accept-encoding == "gzip" + + # same thing, but the extension suggest an already compressed response + txreq -url "/foo.tgz" -hdr "accept-encoding: will be overridden" + rxresp + expect resp.http.sent-accept-encoding == "gzip" +} -run From 1e7a58fdbe5273b64b4d8ef05825f7fbe6018125 Mon Sep 17 00:00:00 2001 From: Guillaume Quintard <guillaume.quintard@gmail.com> Date: Tue, 16 Jan 2024 23:35:01 -0800 Subject: [PATCH 065/104] [varnish] fix compression.vtc on mac --- dev/tests/varnish/compression.vtc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/dev/tests/varnish/compression.vtc b/dev/tests/varnish/compression.vtc index aa98c601a1f13..8920235005c64 100644 --- a/dev/tests/varnish/compression.vtc +++ b/dev/tests/varnish/compression.vtc @@ -25,12 +25,13 @@ server s1 { # interval to avoid further interference shell { # testdir is automatically set to the directory containing the present vtc - sed ${testdir}/../../../app/code/Magento/PageCache/etc/varnish6.vcl > ${tmpdir}/output.vcl \ + sed \ -e 's@\.interval = 5s;@.interval = 5m; .initial = 10;@' \ -e 's@/\* {{ host }} \*/@${s1_addr}@' \ -e 's@/\* {{ port }} \*/@${s1_port}@' \ -e 's@/\* {{ ssl_offloaded_header }} \*/@unused@' \ - -e 's@/\* {{ grace_period }} \*/@0@' + -e 's@/\* {{ grace_period }} \*/@0@' \ + ${testdir}/../../../app/code/Magento/PageCache/etc/varnish6.vcl > ${tmpdir}/output.vcl } # little trick here: we leverage the fact that subroutines with the same name From b57b1d198c1dad2735e2893756eec186c8e8e6d3 Mon Sep 17 00:00:00 2001 From: Guillaume Quintard <guillaume.quintard@gmail.com> Date: Tue, 16 Jan 2024 23:43:26 -0800 Subject: [PATCH 066/104] [varnish] fix debug.vtc on mac --- dev/tests/varnish/debug.vtc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/dev/tests/varnish/debug.vtc b/dev/tests/varnish/debug.vtc index a2216bd83ff9c..836e48c01496e 100644 --- a/dev/tests/varnish/debug.vtc +++ b/dev/tests/varnish/debug.vtc @@ -22,12 +22,13 @@ server s1 { # interval to avoid further interference shell { # testdir is automatically set to the directory containing the present vtc - sed ${testdir}/../../../app/code/Magento/PageCache/etc/varnish6.vcl > ${tmpdir}/output.vcl \ + sed \ -e 's@\.interval = 5s;@.interval = 5m; .initial = 10;@' \ -e 's@/\* {{ host }} \*/@${s1_addr}@' \ -e 's@/\* {{ port }} \*/@${s1_port}@' \ -e 's@/\* {{ ssl_offloaded_header }} \*/@unused@' \ - -e 's@/\* {{ grace_period }} \*/@0@' + -e 's@/\* {{ grace_period }} \*/@0@' \ + ${testdir}/../../../app/code/Magento/PageCache/etc/varnish6.vcl > ${tmpdir}/output.vcl } varnish v1 -arg "-f" -arg "${tmpdir}/output.vcl" -start From 63e8de1f2d5f9f0a1ca36c98e1d238664f59194e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A0=D0=BE=D1=81=D1=82=D0=B8=D1=81=D0=BB=D0=B0=D0=B2=20?= =?UTF-8?q?=D0=A1=D1=83=D0=BB=D0=B5=D0=B9=D0=BC=D0=B0=D0=BD=D0=BE=D0=B2?= <rostilosfl@gmail.com> Date: Thu, 18 Jan 2024 15:52:47 +0200 Subject: [PATCH 067/104] codestyle fixes --- .../Magento/Sales/Model/AdminOrder/Create.php | 71 +++++++++---------- 1 file changed, 35 insertions(+), 36 deletions(-) diff --git a/app/code/Magento/Sales/Model/AdminOrder/Create.php b/app/code/Magento/Sales/Model/AdminOrder/Create.php index ffebeb2d0e3cf..c3a5c52ade9d2 100644 --- a/app/code/Magento/Sales/Model/AdminOrder/Create.php +++ b/app/code/Magento/Sales/Model/AdminOrder/Create.php @@ -301,41 +301,40 @@ class Create extends \Magento\Framework\DataObject implements \Magento\Checkout\ * @SuppressWarnings(PHPMD.ExcessiveParameterList) */ public function __construct( - \Magento\Framework\ObjectManagerInterface $objectManager, - \Magento\Framework\Event\ManagerInterface $eventManager, - \Magento\Framework\Registry $coreRegistry, - \Magento\Sales\Model\Config $salesConfig, - \Magento\Backend\Model\Session\Quote $quoteSession, - \Psr\Log\LoggerInterface $logger, - \Magento\Framework\DataObject\Copy $objectCopyService, - \Magento\Framework\Message\ManagerInterface $messageManager, - Product\Quote\Initializer $quoteInitializer, - \Magento\Customer\Api\CustomerRepositoryInterface $customerRepository, - \Magento\Customer\Api\AddressRepositoryInterface $addressRepository, - \Magento\Customer\Api\Data\AddressInterfaceFactory $addressFactory, - \Magento\Customer\Model\Metadata\FormFactory $metadataFormFactory, - \Magento\Customer\Api\GroupRepositoryInterface $groupRepository, - \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, - \Magento\Sales\Model\AdminOrder\EmailSender $emailSender, + \Magento\Framework\ObjectManagerInterface $objectManager, + \Magento\Framework\Event\ManagerInterface $eventManager, + \Magento\Framework\Registry $coreRegistry, + \Magento\Sales\Model\Config $salesConfig, + \Magento\Backend\Model\Session\Quote $quoteSession, + \Psr\Log\LoggerInterface $logger, + \Magento\Framework\DataObject\Copy $objectCopyService, + \Magento\Framework\Message\ManagerInterface $messageManager, + Product\Quote\Initializer $quoteInitializer, + \Magento\Customer\Api\CustomerRepositoryInterface $customerRepository, + \Magento\Customer\Api\AddressRepositoryInterface $addressRepository, + \Magento\Customer\Api\Data\AddressInterfaceFactory $addressFactory, + \Magento\Customer\Model\Metadata\FormFactory $metadataFormFactory, + \Magento\Customer\Api\GroupRepositoryInterface $groupRepository, + \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, + \Magento\Sales\Model\AdminOrder\EmailSender $emailSender, \Magento\CatalogInventory\Api\StockRegistryInterface $stockRegistry, - \Magento\Quote\Model\Quote\Item\Updater $quoteItemUpdater, - \Magento\Framework\DataObject\Factory $objectFactory, - \Magento\Quote\Api\CartRepositoryInterface $quoteRepository, - \Magento\Customer\Api\AccountManagementInterface $accountManagement, - \Magento\Customer\Api\Data\CustomerInterfaceFactory $customerFactory, - \Magento\Customer\Model\Customer\Mapper $customerMapper, - \Magento\Quote\Api\CartManagementInterface $quoteManagement, - \Magento\Framework\Api\DataObjectHelper $dataObjectHelper, - \Magento\Sales\Api\OrderManagementInterface $orderManagement, - \Magento\Quote\Model\QuoteFactory $quoteFactory, - array $data = [], - \Magento\Framework\Serialize\Serializer\Json $serializer = null, - ExtensibleDataObjectConverter $dataObjectConverter = null, - StoreManagerInterface $storeManager = null, - CustomAttributeListInterface $customAttributeList = null, - OrderRepositoryInterface $orderRepositoryInterface = null - ) - { + \Magento\Quote\Model\Quote\Item\Updater $quoteItemUpdater, + \Magento\Framework\DataObject\Factory $objectFactory, + \Magento\Quote\Api\CartRepositoryInterface $quoteRepository, + \Magento\Customer\Api\AccountManagementInterface $accountManagement, + \Magento\Customer\Api\Data\CustomerInterfaceFactory $customerFactory, + \Magento\Customer\Model\Customer\Mapper $customerMapper, + \Magento\Quote\Api\CartManagementInterface $quoteManagement, + \Magento\Framework\Api\DataObjectHelper $dataObjectHelper, + \Magento\Sales\Api\OrderManagementInterface $orderManagement, + \Magento\Quote\Model\QuoteFactory $quoteFactory, + array $data = [], + \Magento\Framework\Serialize\Serializer\Json $serializer = null, + ExtensibleDataObjectConverter $dataObjectConverter = null, + StoreManagerInterface $storeManager = null, + CustomAttributeListInterface $customAttributeList = null, + OrderRepositoryInterface $orderRepositoryInterface = null + ) { $this->_objectManager = $objectManager; $this->_eventManager = $eventManager; $this->_coreRegistry = $coreRegistry; @@ -890,8 +889,8 @@ public function moveQuoteItem($item, $moveTo, $qty) $cartItems = $cart->getAllVisibleItems(); $cartItemsToRestore = []; - foreach ($cartItems as $value) { - $cartItemsToRestore[$value->getData('item_id')] = $value->getData('item_id'); + foreach ($cartItems as $cartItem) { + $cartItemsToRestore[$cartItem->getItemId()] = $cartItem->getItemId(); } $canBeRestored = $this->restoreTransferredItem('cart', $cartItemsToRestore); From f4ba4fb8248fcb22d81ffb1965e014893bcf2447 Mon Sep 17 00:00:00 2001 From: Atul-glo35265 <glo35265@adobe.com> Date: Wed, 20 Dec 2023 21:05:40 +0530 Subject: [PATCH 068/104] AC-10720::Migration from outdated jquery/fileUpload library AC-10720::Migration from outdated jquery/fileUpload library - MediaGalleryUi::image-uploader.js AC-10720::Migration from outdated jquery/fileUpload library - Resolve Static and Functional test failures AC-10720::Migration from outdated jquery/fileUpload library - Resolve Static and Functional test failures AC-10720::Migration from outdated jquery/fileUpload library - Resolve Static and Functional test failures AC-10720::Migration from outdated jquery/fileUpload library - Resolve Static and Functional test failures AC-10720::Migration from outdated jquery/fileUpload library - Resolve Static and Functional test failures AC-10720::Migration from outdated jquery/fileUpload library - Implementation in Backend, Ui and ConfigurableProduct Modules AC-10720::Migration from outdated jquery/fileUpload library - Implementation in Backend, Ui and ConfigurableProduct Modules AC-10720::Migration from outdated jquery/fileUpload library - Implementation in Backend, Ui and ConfigurableProduct Modules AC-10720::Migration from outdated jquery/fileUpload library - Theme::css.phtml, Theme::js.phtml AC-10720::Migration from outdated jquery/fileUpload library - Theme, AC-10720::Migration from outdated jquery/fileUpload library - Resolving Mftf Tests AC-10720::Migration from outdated jquery/fileUpload library - Resolving Mftf Tests AC-10720::Migration from outdated jquery/fileUpload library - Resolving Mftf Tests AC-10720::Migration from outdated jquery/fileUpload library - Resolving Mftf Tests AC-10720::Migration from outdated jquery/fileUpload library - Resolving Mftf Tests AC-10720::Migration from outdated jquery/fileUpload library - Resolving Mftf Tests AC-10720::Migration from outdated jquery/fileUpload library - Resolving Mftf Tests AC-10720::Migration from outdated jquery/fileUpload library - Resolving Mftf Tests AC-10720::Migration from outdated jquery/fileUpload library - Resolving Mftf Tests AC-10720::Migration from outdated jquery/fileUpload library - Resolving Mftf Tests AC-10720::Migration from outdated jquery/fileUpload library - Resolving Mftf Tests AC-10720::Migration from outdated jquery/fileUpload library - Resolving Mftf Tests AC-10720::Migration from outdated jquery/fileUpload library - Resolving Static Tests AC-10720::Migration from outdated jquery/fileUpload library - Fix Jasmine Test AC-10720::Migration from outdated jquery/fileUpload library - Fix Jasmine Test AC-10720::Migration from outdated jquery/fileUpload library - Fix Jasmine Test AC-10720::Migration from outdated jquery/fileUpload library - Fix Jasmine Test AC-10720::Migration from outdated jquery/fileUpload library - Fix Jasmine Test AC-10720::Migration from outdated jquery/fileUpload library - Fix Jasmine Test AC-10720::Migration from outdated jquery/fileUpload library - Removing unused files AC-10720::Migration from outdated jquery/fileUpload library - Removing unused files --- .../adminhtml/templates/media/uploader.phtml | 3 +- .../view/adminhtml/web/js/media-uploader.js | 205 ++++++++++-------- .../Section/AdminCategoryContentSection.xml | 2 +- .../Section/AdminProductImagesSection.xml | 2 +- .../web/catalog/base-image-uploader.js | 148 +++++++------ .../Catalog/view/base/layout/default.xml | 3 + .../TinyMCESection/MediaGallerySection.xml | 4 +- .../templates/browser/content/uploader.phtml | 8 +- ...reateProductConfigurationsPanelSection.xml | 2 +- .../AdminProductFormConfigurationsSection.xml | 2 +- .../product/edit/attribute/steps/bulk.phtml | 17 +- .../adminhtml/web/js/variations/steps/bulk.js | 184 +++++++++------- ...FrontCustomerAdvancedAttributesSection.xml | 8 +- ...dminEnhancedMediaGalleryActionsSection.xml | 2 +- .../Ui/Component/Control/UploadAssets.php | 2 +- .../view/adminhtml/web/js/image-uploader.js | 182 ++++++++++------ .../web/template/image-uploader.html | 6 +- .../view/adminhtml/web/js/new-video-dialog.js | 27 +-- .../System/Design/Theme/Edit/Tab/Css.php | 5 +- .../System/Design/Theme/Edit/Tab/Js.php | 3 +- .../Mftf/Section/AdminDesignConfigSection.xml | 2 +- .../templates/browser/content/uploader.phtml | 153 +++++++++---- .../view/adminhtml/templates/tabs/css.phtml | 142 ++++++++---- .../view/adminhtml/templates/tabs/js.phtml | 192 ++++++++++------ .../Theme/view/base/requirejs-config.js | 1 + .../base/web/js/form/element/file-uploader.js | 127 ++++++++++- .../web/js/form/element/image-uploader.js | 2 +- .../adminhtml/web/js/media-uploader.test.js | 70 +++--- .../js/form/element/file-uploader.test.js | 28 ++- lib/web/jquery/uppy/dist/uppy-custom.css | 22 ++ lib/web/jquery/uppy/dist/uppy.min.js | 63 ++++++ 31 files changed, 1076 insertions(+), 541 deletions(-) create mode 100644 lib/web/jquery/uppy/dist/uppy-custom.css create mode 100644 lib/web/jquery/uppy/dist/uppy.min.js diff --git a/app/code/Magento/Backend/view/adminhtml/templates/media/uploader.phtml b/app/code/Magento/Backend/view/adminhtml/templates/media/uploader.phtml index bfc1e6a522b7a..02d800d2cde98 100644 --- a/app/code/Magento/Backend/view/adminhtml/templates/media/uploader.phtml +++ b/app/code/Magento/Backend/view/adminhtml/templates/media/uploader.phtml @@ -20,8 +20,7 @@ > <div class="fileinput-button form-buttons button"> <span><?= $block->escapeHtml(__('Browse Files...')) ?></span> - <input id="fileupload" type="file" name="<?= $block->escapeHtmlAttr($block->getConfig()->getFileField()) ?>" - data-url="<?= $block->escapeHtmlAttr($block->getConfig()->getUrl()) ?>" multiple="multiple" /> + <div id="fileUploader" data-url="<?= $block->escapeHtmlAttr($block->getConfig()->getUrl()) ?>"></div> </div> <div class="clear"></div> <script id="<?= $block->getHtmlId() ?>-template" type="text/x-magento-template" data-template="uploader"> diff --git a/app/code/Magento/Backend/view/adminhtml/web/js/media-uploader.js b/app/code/Magento/Backend/view/adminhtml/web/js/media-uploader.js index f3b0990e13534..e09a607eff496 100644 --- a/app/code/Magento/Backend/view/adminhtml/web/js/media-uploader.js +++ b/app/code/Magento/Backend/view/adminhtml/web/js/media-uploader.js @@ -4,6 +4,8 @@ * See COPYING.txt for license details. */ +/* eslint-disable no-undef */ + /** * @api */ @@ -15,11 +17,11 @@ define([ 'Magento_Ui/js/modal/alert', 'Magento_Ui/js/form/element/file-uploader', 'mage/translate', - 'jquery/file-uploader' + 'jquery/uppy-core' ], function ($, mageTemplate, alert, FileUploader) { 'use strict'; - var fileUploader = new FileUploader({ + let fileUploader = new FileUploader({ dataScope: '', isMultipleFiles: true }); @@ -33,113 +35,142 @@ define([ * @private */ _create: function () { - var self = this, + let self = this, + arrayFromObj = Array.from, progressTmpl = mageTemplate('[data-template="uploader"]'), - isResizeEnabled = this.options.isResizeEnabled, - resizeConfiguration = { - action: 'resizeImage', - maxWidth: this.options.maxWidth, - maxHeight: this.options.maxHeight + uploaderElement = '#fileUploader', + targetElement = this.element.find('.fileinput-button.form-buttons')[0], + uploadUrl = $(uploaderElement).attr('data-url'), + fileId = null, + allowedExt = ['jpeg', 'jpg', 'png', 'gif'], + allowedResize = false, + options = { + proudlyDisplayPoweredByUppy: false, + target: targetElement, + hideUploadButton: true, + hideRetryButton: true, + hideCancelButton: true, + inline: true, + debug:true, + showRemoveButtonAfterComplete: true, + showProgressDetails: false, + showSelectedFiles: false, + hideProgressAfterFinish: true }; - if (!isResizeEnabled) { - resizeConfiguration = { - action: 'resizeImage' - }; - } + $(document).on('click', uploaderElement ,function () { + $(uploaderElement).closest('.fileinput-button.form-buttons') + .find('.uppy-Dashboard-browse').trigger('click'); + }); - this.element.find('input[type=file]').fileupload({ - dataType: 'json', - formData: { - 'form_key': window.FORM_KEY - }, - dropZone: this.element.find('input[type=file]').closest('[role="dialog"]'), - sequentialUploads: true, - acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i, - maxFileSize: this.options.maxFileSize, - - /** - * @param {Object} e - * @param {Object} data - */ - add: function (e, data) { - var fileSize, - tmpl; + const uppy = new Uppy.Uppy({ + autoProceed: true, - $.each(data.files, function (index, file) { - fileSize = typeof file.size == 'undefined' ? - $.mage.__('We could not detect a size.') : - byteConvert(file.size); + onBeforeFileAdded: (currentFile) => { + let fileSize, + tmpl; - data.fileId = Math.random().toString(33).substr(2, 18); + fileSize = typeof currentFile.size == 'undefined' ? + $.mage.__('We could not detect a size.') : + byteConvert(currentFile.size); - tmpl = progressTmpl({ - data: { - name: file.name, - size: fileSize, - id: data.fileId - } - }); + fileId = Math.random().toString(33).substr(2, 18); - $(tmpl).appendTo(self.element); + tmpl = progressTmpl({ + data: { + name: currentFile.name, + size: fileSize, + id: fileId + } }); - $(this).fileupload('process', data).done(function () { - data.submit(); - }); + // code to allow duplicate files from same folder + const modifiedFile = { + ...currentFile, + id: currentFile.id + '-' + fileId, + tempFileId: fileId + }; + + // check if resize allowed for file extension + allowedResize = $.inArray(currentFile.extension, allowedExt) !== -1; + + $(tmpl).appendTo(self.element); + return modifiedFile; }, - /** - * @param {Object} e - * @param {Object} data - */ - done: function (e, data) { - if (data.result && !data.result.error) { - self.element.trigger('addItem', data.result); - } else { - fileUploader.aggregateError(data.files[0].name, data.result.error); + meta: { + 'form_key': window.FORM_KEY, + isAjax : true + } + }); + + // initialize Uppy upload + uppy.use(Uppy.Dashboard, options); + + // Resize Image as per configuration + if (this.options.isResizeEnabled) { + uppy.use(Uppy.Compressor, { + maxWidth: this.options.maxWidth, + maxHeight: this.options.maxHeight, + quality: 0.92, + beforeDraw() { + if (!allowedResize) { + this.abort(); + } } + }); + } - self.element.find('#' + data.fileId).remove(); + // drop area for file upload + uppy.use(Uppy.DropTarget, { + target: targetElement, + onDragOver: () => { + // override Array.from method of legacy-build.min.js file + Array.from = null; }, + onDragLeave: () => { + Array.from = arrayFromObj; + } + }); - /** - * @param {Object} e - * @param {Object} data - */ - progress: function (e, data) { - var progress = parseInt(data.loaded / data.total * 100, 10), - progressSelector = '#' + data.fileId + ' .progressbar-container .progressbar'; + // upload files on server + uppy.use(Uppy.XHRUpload, { + endpoint: uploadUrl, + fieldName: 'image' + }); - self.element.find(progressSelector).css('width', progress + '%'); - }, + uppy.on('upload-success', (file, response) => { + if (response.body && !response.body.error) { + self.element.trigger('addItem', response.body); + } else { + fileUploader.aggregateError(file.name, response.body.error); + } - /** - * @param {Object} e - * @param {Object} data - */ - fail: function (e, data) { - var progressSelector = '#' + data.fileId; - - self.element.find(progressSelector).removeClass('upload-progress').addClass('upload-failure') - .delay(2000) - .hide('highlight') - .remove(); - }, + self.element.find('#' + file.tempFileId).remove(); + }); - stop: fileUploader.uploaderConfig.stop + uppy.on('upload-progress', (file, progress) => { + let progressWidth = parseInt(progress.bytesUploaded / progress.bytesTotal * 100, 10), + progressSelector = '#' + file.tempFileId + ' .progressbar-container .progressbar'; + + self.element.find(progressSelector).css('width', progressWidth + '%'); }); - this.element.find('input[type=file]').fileupload('option', { - processQueue: [{ - action: 'loadImage', - fileTypes: /^image\/(gif|jpeg|png)$/ - }, - resizeConfiguration, - { - action: 'saveImage' - }] + uppy.on('upload-error', (error, file) => { + let progressSelector = '#' + file.tempFileId; + + self.element.find(progressSelector).removeClass('upload-progress').addClass('upload-failure') + .delay(2000) + .hide('highlight') + .remove(); }); + + uppy.on('complete', () => { + fileUploader.uploaderConfig.stop(); + $(window).trigger('reload.MediaGallery'); + Array.from = arrayFromObj; + }); + } }); diff --git a/app/code/Magento/Catalog/Test/Mftf/Section/AdminCategoryContentSection.xml b/app/code/Magento/Catalog/Test/Mftf/Section/AdminCategoryContentSection.xml index bf0228c89d499..ce07f34e503bf 100644 --- a/app/code/Magento/Catalog/Test/Mftf/Section/AdminCategoryContentSection.xml +++ b/app/code/Magento/Catalog/Test/Mftf/Section/AdminCategoryContentSection.xml @@ -12,7 +12,7 @@ <element name="sectionHeader" type="button" selector="div[data-index='content']" timeout="30"/> <element name="uploadButton" type="button" selector="//*[@class='file-uploader-area']/label[text()='Upload']"/> <element name="selectFromGalleryButton" type="button" selector="//*[@class='file-uploader-area']/label[text()='Select from Gallery']"/> - <element name="uploadImageFile" type="input" selector=".file-uploader-area>input"/> + <element name="uploadImageFile" type="input" selector=".file-uploader-area .uppy-Dashboard-input"/> <element name="imageFileName" type="text" selector=".file-uploader-filename"/> <element name="imageFileMeta" type="text" selector=".file-uploader-meta"/> <element name="removeImageButton" type="button" selector=".file-uploader-summary .action-remove"/> diff --git a/app/code/Magento/Catalog/Test/Mftf/Section/AdminProductImagesSection.xml b/app/code/Magento/Catalog/Test/Mftf/Section/AdminProductImagesSection.xml index 58a8a77781f77..add6653cf22b6 100644 --- a/app/code/Magento/Catalog/Test/Mftf/Section/AdminProductImagesSection.xml +++ b/app/code/Magento/Catalog/Test/Mftf/Section/AdminProductImagesSection.xml @@ -10,7 +10,7 @@ xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd"> <section name="AdminProductImagesSection"> <element name="productImagesToggle" type="button" selector="div[data-index=gallery] .admin__collapsible-title"/> - <element name="imageFileUpload" type="input" selector="#fileupload"/> + <element name="imageFileUpload" type="input" selector="div.image div.fileinput-button .uppy-Dashboard-input"/> <element name="imageUploadButton" type="button" selector="div.image div.fileinput-button"/> <element name="imageFile" type="text" selector="//*[@id='media_gallery_content']//img[contains(@src, '{{url}}')]" parameterized="true"/> <element name="imageFileRoleByImage" type="text" selector="//*[@id='media_gallery_content']//img[contains(@src, '{{url}}')]/ancestor::div[@data-role='image']//*[@data-role-code='{{roleCode}}']" parameterized="true"/> diff --git a/app/code/Magento/Catalog/view/adminhtml/web/catalog/base-image-uploader.js b/app/code/Magento/Catalog/view/adminhtml/web/catalog/base-image-uploader.js index 648a18a3c0968..478fdfcaf1646 100644 --- a/app/code/Magento/Catalog/view/adminhtml/web/catalog/base-image-uploader.js +++ b/app/code/Magento/Catalog/view/adminhtml/web/catalog/base-image-uploader.js @@ -8,7 +8,7 @@ define([ 'mage/template', 'Magento_Ui/js/modal/alert', 'jquery/ui', - 'jquery/file-uploader', + 'jquery/uppy-core', 'mage/translate', 'mage/backend/notification' ], function ($, mageTemplate, alert) { @@ -136,38 +136,35 @@ define([ } }).disableSelection(); - this.element.find('input[type="file"]').fileupload({ - dataType: 'json', - dropZone: $dropPlaceholder.closest('[data-attribute-code]'), - acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i, - maxFileSize: this.element.data('maxFileSize'), - - /** - * @param {jQuery.Event} event - * @param {Object} data - */ - done: function (event, data) { - $dropPlaceholder.find('.progress-bar').text('').removeClass('in-progress'); - - if (!data.result) { - return; - } - - if (!data.result.error) { - $galleryContainer.trigger('addItem', data.result); - } else { - alert({ - content: $.mage.__('We don\'t recognize or support this file extension type.') - }); - } + // uppy implemetation + let targetElement = this.element.find('input[type="file"]').parent()[0], + url = '{$block->escapeJs($block->getJsUploadUrl())}', + fileId = null, + arrayFromObj = Array.from, + fileObj = [], + options = { + proudlyDisplayPoweredByUppy: false, + target: targetElement, + hideUploadButton: false, + hideRetryButton: true, + hideCancelButton: true, + inline: true, + showRemoveButtonAfterComplete: true, + showProgressDetails: false, + showSelectedFiles: false, + allowMultipleUploads: false, + hideProgressAfterFinish: true + }; + + const uppy = new Uppy.Uppy({ + restrictions: { + allowedFileTypes: ['.gif', '.jpeg', '.jpg', '.png'], + maxFileSize: this.element.data('maxFileSize') }, - /** - * @param {jQuery.Event} e - * @param {Object} data - */ - change: function (e, data) { - if (data.files.length > this.options.maxImageUploadCount) { + onBeforeFileAdded: (currentFile) => { + + if (fileObj.length > this.options.maxImageUploadCount) { $('body').notification('clear').notification('add', { error: true, message: $.mage.__('You can\'t upload more than ' + this.options.maxImageUploadCount + @@ -180,48 +177,77 @@ define([ $('.page-main-actions').after(message); } }); - return false; } - }.bind(this), - /** - * @param {jQuery.Event} event - * @param {*} data - */ - add: function (event, data) { - $(this).fileupload('process', data).done(function () { - data.submit(); - }); + fileId = Math.random().toString(36).substr(2, 9); + // code to allow duplicate files from same folder + const modifiedFile = { + ...currentFile, + id: currentFile.id + '-' + fileId, + tempFileId: fileId + }; + + var uploaderContainer = this.element.find('input[type="file"]').closest('.image-placeholder'); + uploaderContainer.addClass('loading'); + fileObj.push(currentFile); + return modifiedFile; }, - /** - * @param {jQuery.Event} e - * @param {Object} data - */ - progress: function (e, data) { - var progress = parseInt(data.loaded / data.total * 100, 10); + meta: { + 'form_key': window.FORM_KEY, + isAjax : true + } + }); + + // initialize Uppy upload + uppy.use(Uppy.Dashboard, options); - $dropPlaceholder.find('.progress-bar').addClass('in-progress').text(progress + '%'); + // drop area for file upload + uppy.use(Uppy.DropTarget, { + target: $dropPlaceholder.closest('[data-attribute-code]')[0], + onDragOver: () => { + // override Array.from method of legacy-build.min.js file + Array.from = null; }, + onDragLeave: () => { + Array.from = arrayFromObj; + } + }); - /** - * @param {jQuery.Event} event - */ - start: function (event) { - var uploaderContainer = $(event.target).closest('.image-placeholder'); - uploaderContainer.addClass('loading'); - }, + // upload files on server + uppy.use(Uppy.XHRUpload, { + endpoint: url, + fieldName: 'image' + }); - /** - * @param {jQuery.Event} event - */ - stop: function (event) { - var uploaderContainer = $(event.target).closest('.image-placeholder'); + uppy.on('upload-progress', (file, progress) => { + let progressWidth = parseInt(progress.bytesUploaded / progress.bytesTotal * 100, 10); + + $dropPlaceholder.find('.progress-bar').addClass('in-progress').text(progressWidth + '%'); + }); + + uppy.on('upload-success', (file, response) => { + $dropPlaceholder.find('.progress-bar').text('').removeClass('in-progress'); - uploaderContainer.removeClass('loading'); + if (!response.body) { + return; } + + if (!response.body.error) { + $galleryContainer.trigger('addItem', response.body); + } else { + alert({ + content: $.mage.__('We don\'t recognize or support this file extension type.') + }); + } + }); + + uppy.on('complete', () => { + var uploaderContainer = this.element.find('input[type="file"]').closest('.image-placeholder'); + uploaderContainer.removeClass('loading'); + Array.from = arrayFromObj; }); } }); diff --git a/app/code/Magento/Catalog/view/base/layout/default.xml b/app/code/Magento/Catalog/view/base/layout/default.xml index 9b6d27744bcc9..d5f9d8bb286ed 100644 --- a/app/code/Magento/Catalog/view/base/layout/default.xml +++ b/app/code/Magento/Catalog/view/base/layout/default.xml @@ -6,6 +6,9 @@ */ --> <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd"> + <head> + <css src="jquery/uppy/dist/uppy-custom.css"/> + </head> <body> <block class="Magento\Framework\Pricing\Render" name="product.price.render.default"> <arguments> diff --git a/app/code/Magento/Cms/Test/Mftf/Section/TinyMCESection/MediaGallerySection.xml b/app/code/Magento/Cms/Test/Mftf/Section/TinyMCESection/MediaGallerySection.xml index a6281be044d84..11084eea441c2 100644 --- a/app/code/Magento/Cms/Test/Mftf/Section/TinyMCESection/MediaGallerySection.xml +++ b/app/code/Magento/Cms/Test/Mftf/Section/TinyMCESection/MediaGallerySection.xml @@ -10,7 +10,7 @@ <section name="MediaGallerySection"> <element name="Browse" type="button" selector=".tox-browse-url"/> <element name="browseForImage" type="button" selector="#srcbrowser"/> - <element name="BrowseUploadImage" type="file" selector=".fileupload"/> + <element name="BrowseUploadImage" type="file" selector="#fileUploader + .uppy-Root .uppy-Dashboard-input"/> <element name="image" type="text" selector="//small[text()='{{var1}}']" parameterized="true"/> <element name="imageOrImageCopy" type="text" selector="//div[contains(@class,'media-gallery-modal')]//img[contains(@alt, '{{arg1}}.{{arg2}}')]|//img[contains(@alt,'{{arg1}}_') and contains(@alt,'.{{arg2}}')]" parameterized="true"/> <element name="lastImageOrImageCopy" type="text" selector="(//div[contains(@class,'media-gallery-modal')]//img[contains(@alt, '{{arg1}}.{{arg2}}')]|//img[contains(@alt,'{{arg1}}_') and contains(@alt,'.{{arg2}}')])[last()]" parameterized="true"/> @@ -20,6 +20,8 @@ <element name="ImageDescriptionTinyMCE" type="input" selector="#alt" /> <element name="Height" type="input" selector="//label[text()='Height']/parent::div//input"/> <element name="UploadImage" type="file" selector=".fileupload"/> + <element name="UploadImageSelector" type="file" selector="#fileUploader"/> + <element name="UploadImageWithUploaderId" type="file" selector="#fileUploader + .uppy-Root .uppy-Dashboard-input"/> <element name="OkBtn" type="button" selector=".tox-dialog__footer button[title='Save']"/> <element name="insertBtn" type="button" selector="#insert"/> <element name="InsertFile" type="text" selector="#insert_files" timeout="30"/> diff --git a/app/code/Magento/Cms/view/adminhtml/templates/browser/content/uploader.phtml b/app/code/Magento/Cms/view/adminhtml/templates/browser/content/uploader.phtml index a647558b39fc2..b09d0cd62fa43 100644 --- a/app/code/Magento/Cms/view/adminhtml/templates/browser/content/uploader.phtml +++ b/app/code/Magento/Cms/view/adminhtml/templates/browser/content/uploader.phtml @@ -22,9 +22,11 @@ $blockHtmlId = $block->getHtmlId(); > <span class="fileinput-button form-buttons"> <span><?= $block->escapeHtml(__('Upload Images')) ?></span> - <input class="fileupload" type="file" - name="<?= $block->escapeHtmlAttr($block->getConfig()->getFileField()) ?>" - data-url="<?= $block->escapeUrl($block->getConfig()->getUrl()) ?>" multiple> + <button id="fileUploader" + name="<?= $block->escapeHtmlAttr($block->getConfig()->getFileField()) ?>" + value="Upload Images" + data-url="<?= $block->escapeUrl($block->getConfig()->getUrl()) ?>" + ><?= $block->escapeHtml(__('Upload Images')) ?></button> </span> <div class="clear"></div> <script type="text/x-magento-template" id="<?= /* @noEscape */ $blockHtmlId ?>-template"> diff --git a/app/code/Magento/ConfigurableProduct/Test/Mftf/Section/AdminCreateProductConfigurationsPanelSection.xml b/app/code/Magento/ConfigurableProduct/Test/Mftf/Section/AdminCreateProductConfigurationsPanelSection.xml index a0de07cd5c5ad..065f9aed5801b 100644 --- a/app/code/Magento/ConfigurableProduct/Test/Mftf/Section/AdminCreateProductConfigurationsPanelSection.xml +++ b/app/code/Magento/ConfigurableProduct/Test/Mftf/Section/AdminCreateProductConfigurationsPanelSection.xml @@ -32,7 +32,7 @@ <element name="attributeCheckboxByIndex" type="input" selector="li.attribute-option:nth-of-type({{var1}}) input" parameterized="true"/> <element name="applySingleSetOfImages" type="radio" selector=".admin__field-label[for='apply-single-set-radio']" timeout="30"/> - <element name="imageFileUpload" type="input" selector=".steps-wizard-section input[type='file'][name='image']"/> + <element name="imageFileUpload" type="input" selector=".steps-wizard-section .uppy-Dashboard-input"/> <element name="imageUploadButton" type="button" selector=".steps-wizard-section div.gallery"/> <element name="applyUniquePricesByAttributeToEachSku" type="radio" selector=".admin__field-label[for='apply-unique-prices-radio']"/> diff --git a/app/code/Magento/ConfigurableProduct/Test/Mftf/Section/AdminProductFormConfigurationsSection/AdminProductFormConfigurationsSection.xml b/app/code/Magento/ConfigurableProduct/Test/Mftf/Section/AdminProductFormConfigurationsSection/AdminProductFormConfigurationsSection.xml index 357ae0185f170..df37db09f8e89 100644 --- a/app/code/Magento/ConfigurableProduct/Test/Mftf/Section/AdminProductFormConfigurationsSection/AdminProductFormConfigurationsSection.xml +++ b/app/code/Magento/ConfigurableProduct/Test/Mftf/Section/AdminProductFormConfigurationsSection/AdminProductFormConfigurationsSection.xml @@ -50,7 +50,7 @@ <element name="variationLabel" type="text" selector="//div[@data-index='configurable-matrix']/label"/> <element name="stepsWizardTitle" type="text" selector="div.content:not([style='display: none;']) .steps-wizard-title"/> <element name="attributeEntityByName" type="text" selector="//div[@class='attribute-entity']//div[normalize-space(.)='{{attributeLabel}}']" parameterized="true"/> - <element name="fileUploaderInput" type="file" selector="//input[@type='file' and @class='file-uploader-input']"/> + <element name="fileUploaderInput" type="file" selector="//input[@type='file' and @class='uppy-Dashboard-input']"/> <element name="variationImageSource" type="text" selector="[data-index='configurable-matrix'] [data-index='thumbnail_image_container'] img[src*='{{imageName}}']" parameterized="true"/> <element name="variationProductLinkByName" type="text" selector="//div[@data-index='configurable-matrix']//*[@data-index='name_container']//a[contains(text(), '{{productName}}')]" parameterized="true"/> <element name="unAssignSource" type="button" selector="//span[text()='{{source_name}}']/../../..//button[@class='action-delete']//span[text()='Unassign']" parameterized="true"/> diff --git a/app/code/Magento/ConfigurableProduct/view/adminhtml/templates/catalog/product/edit/attribute/steps/bulk.phtml b/app/code/Magento/ConfigurableProduct/view/adminhtml/templates/catalog/product/edit/attribute/steps/bulk.phtml index 11ee28d28015c..10888f904b16d 100644 --- a/app/code/Magento/ConfigurableProduct/view/adminhtml/templates/catalog/product/edit/attribute/steps/bulk.phtml +++ b/app/code/Magento/ConfigurableProduct/view/adminhtml/templates/catalog/product/edit/attribute/steps/bulk.phtml @@ -12,6 +12,7 @@ <?php /** @var \Magento\Framework\Json\Helper\Data $jsonHelper */ $jsonHelper = $block->getData('jsonHelper'); +$uploadUrl = $block->getUrl('catalog/product_gallery/upload'); ?> <div data-bind="scope: '<?= /* @noEscape */ $block->getComponentName() ?>'" data-role="bulk-step"> <h2 class="steps-wizard-title"><?= $block->escapeHtml(__('Step 3: Bulk Images, Price and Quantity')) ?></h2> @@ -82,13 +83,7 @@ $jsonHelper = $block->getData('jsonHelper'); <div data-role="uploader" class="uploader"> <div class="image-browse"> <span><?= $block->escapeHtml(__('Browse Files...')) ?></span> - <input type="file" - id="" - name="image" - class="admin__control-file" - multiple="multiple" - data-url="<?= /* @noEscape */ $block->getUrl('catalog/product_gallery/upload') - ?>" /> + <span class="browse-file" data-url="<?= /* @noEscape */ $uploadUrl ?>"></span> </div> </div> <div class="product-image-wrapper"> @@ -333,9 +328,7 @@ $jsonHelper = $block->getData('jsonHelper'); <div data-role="uploader" class="uploader"> <div class="image-browse"> <span><?= $block->escapeHtml(__('Browse Files...')); ?></span> - <input type="file" name="image" multiple="multiple" - data-url="<?= - /* @noEscape */ $block->getUrl('catalog/product_gallery/upload') ?>" /> + <span class="browse-file" data-url="<?= /* @noEscape */ $uploadUrl ?>"></span> </div> </div> <div class="product-image-wrapper"> @@ -497,7 +490,9 @@ $jsonHelper = $block->getData('jsonHelper'); data-role="type-selector" type="checkbox" // @codingStandardsIgnoreLine - value="<?= $block->escapeHtmlAttr($attribute->getAttributeCode()) ?>" + value="<?= + $block->escapeHtmlAttr($attribute->getAttributeCode()) + ?>" /> <?= $block->escapeHtml($attribute->getFrontendLabel())?> </label> diff --git a/app/code/Magento/ConfigurableProduct/view/adminhtml/web/js/variations/steps/bulk.js b/app/code/Magento/ConfigurableProduct/view/adminhtml/web/js/variations/steps/bulk.js index eed887037bc96..478b4b49df0fb 100644 --- a/app/code/Magento/ConfigurableProduct/view/adminhtml/web/js/variations/steps/bulk.js +++ b/app/code/Magento/ConfigurableProduct/view/adminhtml/web/js/variations/steps/bulk.js @@ -3,6 +3,8 @@ * See COPYING.txt for license details. */ +/* eslint-disable no-undef */ + /* global FORM_KEY, byteConvert */ define([ 'uiComponent', @@ -13,7 +15,7 @@ define([ 'mage/template', 'Magento_Ui/js/modal/alert', 'Magento_Catalog/js/product-gallery', - 'jquery/file-uploader', + 'jquery/uppy-core', 'mage/translate', 'Magento_ConfigurableProduct/js/variations/variations' ], function (Component, $, ko, _, Collapsible, mageTemplate, alert) { @@ -368,8 +370,9 @@ define([ bindGalleries: function () { $('[data-role=bulk-step] [data-role=gallery]').each(function (index, element) { var gallery = $(element), - uploadInput = $(gallery.find('[name=image]')), - dropZone = $(gallery).find('.image-placeholder'); + uploadInput = $(gallery.find('.uploader'))[0], + uploadUrl = $(gallery.find('.browse-file')).attr('data-url'), + dropZone = $(gallery).find('.image-placeholder')[0]; if (!gallery.data('gallery-initialized')) { gallery.mage('productGallery', { @@ -378,99 +381,122 @@ define([ dialogContainerTmpl: '[data-role=img-dialog-container-tmpl]' }); - uploadInput.fileupload({ - dataType: 'json', - dropZone: dropZone, - process: [{ - action: 'load', - fileTypes: /^image\/(gif|jpeg|png)$/ - }, { - action: 'resize', - maxWidth: 1920, - maxHeight: 1200 - }, { - action: 'save' - }], - formData: { - 'form_key': FORM_KEY - }, - sequentialUploads: true, - acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i, - - /** - * @param {jQuery.Event} e - * @param {Object} data - */ - add: function (e, data) { - var progressTmpl = mageTemplate('[data-template=uploader]'), + // uppy implementation + let targetElement = uploadInput, + fileId = null, + arrayFromObj = Array.from, + options = { + proudlyDisplayPoweredByUppy: false, + target: targetElement, + hideUploadButton: true, + hideRetryButton: true, + hideCancelButton: true, + inline: true, + debug:true, + showRemoveButtonAfterComplete: true, + showProgressDetails: false, + showSelectedFiles: false, + allowMultipleUploads: false, + hideProgressAfterFinish: true + }; + + gallery.find('.product-image-wrapper').on('click', function () { + gallery.find('.uppy-Dashboard-browse').trigger('click'); + }); + + const uppy = new Uppy.Uppy({ + autoProceed: true, + + onBeforeFileAdded: (currentFile) => { + let progressTmpl = mageTemplate('[data-template=uploader]'), fileSize, tmpl; - $.each(data.files, function (i, file) { - fileSize = typeof file.size == 'undefined' ? - $.mage.__('We could not detect a size.') : - byteConvert(file.size); - - data.fileId = Math.random().toString(33).substr(2, 18); + fileSize = typeof currentFile.size == 'undefined' ? + $.mage.__('We could not detect a size.') : + byteConvert(currentFile.size); - tmpl = progressTmpl({ - data: { - name: file.name, - size: fileSize, - id: data.fileId - } - }); + fileId = Math.random().toString(33).substr(2, 18); - $(tmpl).appendTo(gallery.find('[data-role=uploader]')); + tmpl = progressTmpl({ + data: { + name: currentFile.name, + size: fileSize, + id: fileId + } }); - $(this).fileupload('process', data).done(function () { - data.submit(); - }); - }, + // code to allow duplicate files from same folder + const modifiedFile = { + ...currentFile, + id: currentFile.id + '-' + fileId, + tempFileId: fileId + }; - /** - * @param {jQuery.Event} e - * @param {Object} data - */ - done: function (e, data) { - if (data.result && !data.result.error) { - gallery.trigger('addItem', data.result); - } else { - $('#' + data.fileId) - .delay(2000) - .hide('highlight'); - alert({ - content: $.mage.__('We don\'t recognize or support this file extension type.') - }); - } - $('#' + data.fileId).remove(); + $(tmpl).appendTo(gallery.find('[data-role=uploader]')); + return modifiedFile; }, - /** - * @param {jQuery.Event} e - * @param {Object} data - */ - progress: function (e, data) { - var progress = parseInt(data.loaded / data.total * 100, 10), - progressSelector = '#' + data.fileId + ' .progressbar-container .progressbar'; + meta: { + 'form_key': FORM_KEY + } + }); + + // initialize Uppy upload + uppy.use(Uppy.Dashboard, options); - $(progressSelector).css('width', progress + '%'); + // drop area for file upload + uppy.use(Uppy.DropTarget, { + target: dropZone, + onDragOver: () => { + // override Array.from method of legacy-build.min.js file + Array.from = null; }, + onDragLeave: () => { + Array.from = arrayFromObj; + } + }); - /** - * @param {jQuery.Event} e - * @param {Object} data - */ - fail: function (e, data) { - var progressSelector = '#' + data.fileId; + // upload files on server + uppy.use(Uppy.XHRUpload, { + endpoint: uploadUrl, + fieldName: 'image' + }); - $(progressSelector).removeClass('upload-progress').addClass('upload-failure') + uppy.on('upload-success', (file, response) => { + if (response.body && !response.body.error) { + gallery.trigger('addItem', response.body); + } else { + $('#' + file.tempFileId) .delay(2000) - .hide('highlight') - .remove(); + .hide('highlight'); + alert({ + content: $.mage.__('We don\'t recognize or support this file extension type.') + }); } + $('#' + file.tempFileId).remove(); + }); + + uppy.on('upload-progress', (file, progress) => { + let progressWidth = parseInt(progress.bytesUploaded / progress.bytesTotal * 100, 10), + progressSelector = '#' + file.tempFileId + ' .progressbar-container .progressbar'; + + $(progressSelector).css('width', progressWidth + '%'); }); + + uppy.on('upload-error', (error, file) => { + let progressSelector = '#' + file.tempFileId; + + $(progressSelector).removeClass('upload-progress').addClass('upload-failure') + .delay(2000) + .hide('highlight') + .remove(); + }); + + uppy.on('complete', () => { + Array.from = arrayFromObj; + }); + gallery.data('gallery-initialized', 1); } }); diff --git a/app/code/Magento/Customer/Test/Mftf/Section/StorefrontCustomerCreateFormSection/StoreFrontCustomerAdvancedAttributesSection.xml b/app/code/Magento/Customer/Test/Mftf/Section/StorefrontCustomerCreateFormSection/StoreFrontCustomerAdvancedAttributesSection.xml index 2ad315fa840e8..600fbeda0b939 100644 --- a/app/code/Magento/Customer/Test/Mftf/Section/StorefrontCustomerCreateFormSection/StoreFrontCustomerAdvancedAttributesSection.xml +++ b/app/code/Magento/Customer/Test/Mftf/Section/StorefrontCustomerCreateFormSection/StoreFrontCustomerAdvancedAttributesSection.xml @@ -20,9 +20,9 @@ <element name="yesNoOptionAttribute" type="select" selector="//select[@id='{{var}}']/option[2]" parameterized="true"/> <element name="selectedOption" type="text" selector="//select[@id='{{var}}']/option[@selected='selected']" parameterized="true"/> <element name="attributeLabel" type="text" selector="//span[text()='{{attributeLabel}}']" parameterized="true"/> - <element name="fileAttribute" type="file" selector="//input[@type='file' and @name='{{attributeCode}}']" parameterized="true" timeout="30"/> - <element name="customFileAttributeUploadButton" type="input" selector=".file-uploader-area input[name='{{attributeCode}}'] ~ .file-uploader-button" parameterized="true"/> - <element name="fileUploaderPreviewLink" type="block" selector="//input[@type='file' and @name='{{attributeCode}}']/ancestor::div[contains(@class, 'file-uploader')]//div[contains(@class, 'file-uploader-preview')]//a[contains(@class, 'preview-link')]" parameterized="true"/> - <element name="fileUploaderPreviewImage" type="block" selector="//input[@type='file' and @name='{{attributeCode}}']/ancestor::div[contains(@class, 'file-uploader')]//div[contains(@class, 'file-uploader-preview')]//img" parameterized="true"/> + <element name="fileAttribute" type="file" selector="//div[@upload-area-id='{{attributeCode}}']//div[contains(@class,'uppy-Root')]//input[contains(@class,'uppy-Dashboard-input')]" parameterized="true" timeout="30"/> + <element name="customFileAttributeUploadButton" type="input" selector=".file-uploader-area[upload-area-id='{{attributeCode}}'] .file-uploader-button" parameterized="true"/> + <element name="fileUploaderPreviewLink" type="block" selector="//div[@upload-area-id='{{attributeCode}}']/ancestor::div[contains(@class, 'file-uploader')]//div[contains(@class, 'file-uploader-preview')]//a[contains(@class, 'preview-link')]" parameterized="true"/> + <element name="fileUploaderPreviewImage" type="block" selector="//div[@upload-area-id='{{attributeCode}}']/ancestor::div[contains(@class, 'file-uploader')]//div[contains(@class, 'file-uploader-preview')]//img" parameterized="true"/> </section> </sections> diff --git a/app/code/Magento/MediaGalleryUi/Test/Mftf/Section/AdminEnhancedMediaGalleryActionsSection.xml b/app/code/Magento/MediaGalleryUi/Test/Mftf/Section/AdminEnhancedMediaGalleryActionsSection.xml index 36a6a94edcd18..aec4661655d01 100644 --- a/app/code/Magento/MediaGalleryUi/Test/Mftf/Section/AdminEnhancedMediaGalleryActionsSection.xml +++ b/app/code/Magento/MediaGalleryUi/Test/Mftf/Section/AdminEnhancedMediaGalleryActionsSection.xml @@ -10,7 +10,7 @@ <section name="AdminEnhancedMediaGalleryActionsSection"> <element name="editViewButtonPartial" type="button" selector="/following-sibling::div/button[@class='action-edit']"/> <element name="deleteViewButton" type="button" selector="//div[@data-bind='afterRender: \$data.setToolbarNode']//li[contains(@class,'_edit')]//input/following-sibling::div/button[@class='action-delete']"/> - <element name="upload" type="input" selector="#image-uploader-input"/> + <element name="upload" type="input" selector="#image-uploader-form .uppy-Dashboard-input"/> <element name="cancel" type="button" selector="[data-ui-id='cancel-button']"/> <element name="notDisabledButtons" type="button" selector="//div[@class='page-actions floating-header']/button[not(@disabled='disabled') and not(@id='cancel')]"/> <element name="createFolder" type="button" selector="[data-ui-id='create-folder-button']"/> diff --git a/app/code/Magento/MediaGalleryUi/Ui/Component/Control/UploadAssets.php b/app/code/Magento/MediaGalleryUi/Ui/Component/Control/UploadAssets.php index 32bbdba88a599..4be2a8c968b6c 100644 --- a/app/code/Magento/MediaGalleryUi/Ui/Component/Control/UploadAssets.php +++ b/app/code/Magento/MediaGalleryUi/Ui/Component/Control/UploadAssets.php @@ -38,7 +38,7 @@ public function getButtonData(): array { $buttonData = [ 'label' => __('Upload Image'), - 'on_click' => 'jQuery("#image-uploader-input").click();', + 'on_click' => 'jQuery("#image-uploader-form .uppy-Dashboard-browse").click();', 'class' => 'action-default scalable add media-gallery-actions-buttons', 'sort_order' => 20, ]; diff --git a/app/code/Magento/MediaGalleryUi/view/adminhtml/web/js/image-uploader.js b/app/code/Magento/MediaGalleryUi/view/adminhtml/web/js/image-uploader.js index 58fff640f9db3..88e2f5010fa58 100644 --- a/app/code/Magento/MediaGalleryUi/view/adminhtml/web/js/image-uploader.js +++ b/app/code/Magento/MediaGalleryUi/view/adminhtml/web/js/image-uploader.js @@ -3,13 +3,15 @@ * See COPYING.txt for license details. */ +/* eslint-disable no-undef */ + define([ 'uiComponent', 'jquery', 'underscore', 'Magento_Ui/js/lib/validation/validator', 'mage/translate', - 'jquery/file-uploader' + 'jquery/uppy-core' ], function (Component, $, _, validator, $t) { 'use strict'; @@ -54,85 +56,141 @@ define([ * Initializes file upload library */ initializeFileUpload: function () { - $(this.imageUploadInputSelector).fileupload({ - url: this.imageUploadUrl, - acceptFileTypes: this.acceptFileTypes, - allowedExtensions: this.allowedExtensions, - maxFileSize: this.maxFileSize, - /** - * Extending the form data - * - * @param {Object} form - * @returns {Array} - */ - formData: function (form) { - return form.serializeArray().concat( - [{ - name: 'isAjax', - value: true - }, - { - name: 'form_key', - value: window.FORM_KEY - }, - { - name: 'target_folder', - value: this.getTargetFolder() - }] - ); - }.bind(this), - - add: function (e, data) { - if (!this.isSizeExceeded(data.files[0]).passed) { + let id = this.imageUploadInputSelector, + arrayFromObj = Array.from, + options = { + proudlyDisplayPoweredByUppy: false, + target: id, + hideUploadButton: true, + hideRetryButton: true, + hideCancelButton: true, + inline: true, + showRemoveButtonAfterComplete: true, + showProgressDetails: false, + showSelectedFiles: false, + hideProgressAfterFinish: true + }, + + uppyDashboard = new Uppy.Uppy({ + autoProceed: true, + + // validation before file get added + onBeforeFileAdded: (currentFile) => { + if (!this.isSizeExceeded(currentFile).passed) { this.addValidationErrorMessage( $t('Cannot upload "%1". File exceeds maximum file size limit.') - .replace('%1', data.files[0].name) + .replace('%1', currentFile.name) ); - - return; - } else if (!this.isFileNameLengthExceeded(data.files[0]).passed) { + return false; + } else if (!this.isFileNameLengthExceeded(currentFile).passed) { this.addValidationErrorMessage( $t('Cannot upload "%1". Filename is too long, must be 90 characters or less.') - .replace('%1', data.files[0].name) + .replace('%1', currentFile.name) ); - - return; + return false; } + // code to allow duplicate files from same folder + const modifiedFile = { + ...currentFile, + id: currentFile.id + '-' + Date.now() + }; + this.showLoader(); this.count(1); - data.submit(); - }.bind(this), + return modifiedFile; + }, + meta: { + 'isAjax': true, + 'form_key': window.FORM_KEY + } + }); - stop: function () { - this.openNewestImages(); - this.mediaGridMessages().scheduleCleanup(); - }.bind(this), + // initialize Uppy upload + uppyDashboard.use(Uppy.Dashboard, options); + + // drop area for file upload + uppyDashboard.use(Uppy.DropTarget, { + target: document.body, + onDragOver: () => { + // override Array.from method of legacy-build.min.js file + Array.from = null; + }, + onDragLeave: () => { + Array.from = arrayFromObj; + } + }); - start: function () { - this.mediaGridMessages().clear(); - }.bind(this), + // upload files on server + uppyDashboard.use(Uppy.XHRUpload, { + endpoint: this.imageUploadUrl, + fieldName: 'image' + }); - done: function (e, data) { - var response = data.jqXHR.responseJSON; + uppyDashboard.on('file-added', () => { + uppyDashboard.setMeta({ + target_folder: this.getTargetFolder() + }); + }); - if (!response) { - this.showErrorMessage(data, $t('Could not upload the asset.')); + uppyDashboard.on('upload-success', (file, response) => { + let data = { + files : [file] + }; - return; - } + if (!response) { + this.showErrorMessage(data, $t('Could not upload the asset.')); + return; + } - if (!response.success) { - this.showErrorMessage(data, response.message); + if (!response.body.success) { + this.showErrorMessage(data, response.body.message); + return; + } - return; - } - this.showSuccessMessage(data); - this.hideLoader(); - this.actions().reloadGrid(); - }.bind(this) + this.showSuccessMessage(data); + this.hideLoader(); + this.actions().reloadGrid(); }); + + uppyDashboard.on('complete', () => { + this.openNewestImages(); + this.mediaGridMessages().scheduleCleanup(); + Array.from = arrayFromObj; + }); + + // handle network failure or some other upload issue + uppyDashboard.on('error', () => { + this.showUploadErrorMessage(); + }); + }, + + /** + * Show upload error message + */ + showUploadErrorMessage: function () { + let bodyObj = $('body'); + + bodyObj.notification('clear'); + bodyObj.notification('add', { + error: true, + message: $.mage.__( + 'A technical problem with the server created an error. ' + + 'Try again to continue what you were doing. If the problem persists, try again later.' + ), + + /** + * @param {String} message + */ + insertMethod: function (message) { + let $wrapper = $('<div></div>').html(message); + + $('.page-main-actions').after($wrapper); + } + }); + + this.hideLoader(); }, /** @@ -184,7 +242,7 @@ define([ }, /** - * Show error meassages with file name. + * Show error messages with file name. * * @param {Object} data * @param {String} message diff --git a/app/code/Magento/MediaGalleryUi/view/adminhtml/web/template/image-uploader.html b/app/code/Magento/MediaGalleryUi/view/adminhtml/web/template/image-uploader.html index 2301eb641d550..103b83f305b27 100644 --- a/app/code/Magento/MediaGalleryUi/view/adminhtml/web/template/image-uploader.html +++ b/app/code/Magento/MediaGalleryUi/view/adminhtml/web/template/image-uploader.html @@ -5,10 +5,8 @@ */ --> <div class="media-gallery-image-uploader-container"> - <form id="image-uploader-form" class="no-display" method="POST" enctype="multipart/form-data"> - <input afterRender="initializeFileUpload" id="image-uploader-input" type="file" name="image" - multiple="multiple"/> - </form> + <form id="image-uploader-form" class="no-display" afterRender="initializeFileUpload" + method="POST" enctype="multipart/form-data"></form> <div data-role="spinner" class="admin__data-grid-loading-mask" visible="loader"> <div class="spinner"> <span repeat="8"></span> diff --git a/app/code/Magento/ProductVideo/view/adminhtml/web/js/new-video-dialog.js b/app/code/Magento/ProductVideo/view/adminhtml/web/js/new-video-dialog.js index f3ae311613560..499125bf96393 100644 --- a/app/code/Magento/ProductVideo/view/adminhtml/web/js/new-video-dialog.js +++ b/app/code/Magento/ProductVideo/view/adminhtml/web/js/new-video-dialog.js @@ -615,21 +615,18 @@ define([ * @private */ _uploadFile: function (data, callback) { - var fu = this.element.find(this._videoPreviewInputSelector), - tmpInput = document.createElement('input'), - fileUploader = null; - - $(tmpInput).attr({ - 'name': fu.attr('name'), - 'value': fu.val(), - 'type': 'file', - 'data-ui-ud': fu.attr('data-ui-ud') - }).css('display', 'none'); - fu.parent().append(tmpInput); - fileUploader = $(tmpInput).fileupload(); - fileUploader.fileupload('send', data).done(function (result, textStatus, jqXHR) { - tmpInput.remove(); - callback.call(null, result, textStatus, jqXHR); + let form = this.element.find(this._videoFormSelector).get(0), + formData = new FormData(form); + + $.ajax({ + type: 'post', + url: data.url, + processData: false, + contentType: false, + data: formData, + success: function (result, textStatus, jqXHR) { + callback.call(null, result, textStatus, jqXHR); + } }); }, diff --git a/app/code/Magento/Theme/Block/Adminhtml/System/Design/Theme/Edit/Tab/Css.php b/app/code/Magento/Theme/Block/Adminhtml/System/Design/Theme/Edit/Tab/Css.php index 5e3bb8774d246..62103f59bfa95 100644 --- a/app/code/Magento/Theme/Block/Adminhtml/System/Design/Theme/Edit/Tab/Css.php +++ b/app/code/Magento/Theme/Block/Adminhtml/System/Design/Theme/Edit/Tab/Css.php @@ -21,7 +21,7 @@ class Css extends \Magento\Theme\Block\Adminhtml\System\Design\Theme\Edit\AbstractTab { /** - * Uploader service + * Class for Uploader service * * @var \Magento\Theme\Model\Uploader\Service */ @@ -149,12 +149,13 @@ protected function _addCustomCssFieldset() $themeFieldset->addField( 'css_file_uploader', - 'css_file', + 'button', [ 'name' => 'css_file_uploader', 'label' => __('Select CSS File to Upload'), 'title' => __('Select CSS File to Upload'), 'accept' => 'text/css', + 'value' => __('Browse CSS File'), 'note' => $this->_getUploadCssFileNote() ] ); diff --git a/app/code/Magento/Theme/Block/Adminhtml/System/Design/Theme/Edit/Tab/Js.php b/app/code/Magento/Theme/Block/Adminhtml/System/Design/Theme/Edit/Tab/Js.php index 14a661e672195..9228d6176e58c 100644 --- a/app/code/Magento/Theme/Block/Adminhtml/System/Design/Theme/Edit/Tab/Js.php +++ b/app/code/Magento/Theme/Block/Adminhtml/System/Design/Theme/Edit/Tab/Js.php @@ -53,13 +53,14 @@ protected function _addThemeJsFieldset() $themeFieldset->addField( 'js_files_uploader', - 'js_files', + 'button', [ 'name' => 'js_files_uploader', 'label' => __('Select JS Files to Upload'), 'title' => __('Select JS Files to Upload'), 'accept' => 'application/x-javascript', 'multiple' => '', + 'value' => __('Browse JS Files'), 'note' => $this->_getUploadJsFileNote() ] ); diff --git a/app/code/Magento/Theme/Test/Mftf/Section/AdminDesignConfigSection.xml b/app/code/Magento/Theme/Test/Mftf/Section/AdminDesignConfigSection.xml index 820917661b2ce..cae5df311173a 100644 --- a/app/code/Magento/Theme/Test/Mftf/Section/AdminDesignConfigSection.xml +++ b/app/code/Magento/Theme/Test/Mftf/Section/AdminDesignConfigSection.xml @@ -23,7 +23,7 @@ <element name="useDefaultByFieldsetName" type="input" selector="//*[contains(@class,'fieldset-wrapper')][child::*[contains(@class,'fieldset-wrapper-title')]//*[contains(text(),'{{arg1}}')]]//*[contains(@class,'file-uploader')]//span[contains(text(), 'Use Default Value')]" parameterized="true" /> <element name="logoSectionHeader" type="text" selector="[data-index='email']"/> <element name="logoSection" type="text" selector="[data-index='email'] .admin__fieldset-wrapper-content"/> - <element name="logoUpload" type ="input" selector="[name='email_logo']" /> + <element name="logoUpload" type ="input" selector="[upload-area-id='email_logo'] .uppy-Root .uppy-Dashboard-input" /> <element name="logoWrapperOpen" type ="text" selector="[data-index='email'] [data-state-collapsible ='closed']"/> <element name="logoPreview" type ="text" selector="[alt ='magento-logo.png']"/> <element name="logoImageAlt" type ="text" selector="[name='email_logo_alt']"/> diff --git a/app/code/Magento/Theme/view/adminhtml/templates/browser/content/uploader.phtml b/app/code/Magento/Theme/view/adminhtml/templates/browser/content/uploader.phtml index 1e23c7aadc46a..805b8252a3705 100644 --- a/app/code/Magento/Theme/view/adminhtml/templates/browser/content/uploader.phtml +++ b/app/code/Magento/Theme/view/adminhtml/templates/browser/content/uploader.phtml @@ -11,9 +11,11 @@ <div id="<?= $block->getHtmlId() ?>" class="uploader"> <span class="fileinput-button form-buttons"> - <span><?= $block->escapeHtml(__('Browse Files')) ?></span> - <input id="fileupload" type="file" name="<?= $block->escapeHtmlAttr($block->getConfig()->getFileField()) ?>" - data-url="<?= $block->escapeUrl($block->getConfig()->getUrl()) ?>" multiple> + <button id="fileupload" title="Browse Files" type="button" + name="<?= $block->escapeHtmlAttr($block->getConfig()->getFileField()) ?>" + data-url="<?= $block->escapeUrl($block->getConfig()->getUrl()) ?>"> + <span>Browse Files</span> + </button> </span> <div class="clear"></div> <script id="<?= $block->getHtmlId() ?>-template" type="text/x-magento-template"> @@ -35,67 +37,126 @@ require([ 'jquery', 'mage/template', - 'jquery/file-uploader', + 'jquery/uppy-core', 'domReady!', 'mage/translate' ], function ($, mageTemplate) { - - $('#fileupload').fileupload({ - dataType: 'json', - formData: { - isAjax: 'true', - form_key: FORM_KEY + let targetElement = $('#fileupload').parent()[0], + url = $('#fileupload').attr('data-url'), + arrayFromObj = Array.from, + inputFileName = $('#fileupload').attr('name'), + fileId = null, + options = { + proudlyDisplayPoweredByUppy: false, + target: targetElement, + hideUploadButton: false, + hideRetryButton: true, + hideCancelButton: true, + inline: true, + showRemoveButtonAfterComplete: true, + showProgressDetails: false, + showSelectedFiles: false, + allowMultipleUploads: false, + hideProgressAfterFinish: true + }; + const uppy = new Uppy.Uppy({ + autoProceed: true, + restrictions: { + maxFileSize: {$block->escapeJs($block->getFileSizeService()->getMaxFileSize())} }, - sequentialUploads: true, - maxFileSize: {$block->escapeJs($block->getFileSizeService()->getMaxFileSize())} , - add: function (e, data) { + + onBeforeFileAdded: (currentFile) => { var progressTmpl = mageTemplate('#{$block->getHtmlId()}-template'), fileSize, tmpl; - $.each(data.files, function (index, file) { - fileSize = typeof file.size == "undefined" ? + fileSize = typeof currentFile.size == "undefined" ? $.mage.__('We could not detect a size.') : - byteConvert(file.size); + byteConvert(currentFile.size); - data.fileId = Math.random().toString(36).substr(2, 9); + fileId = Math.random().toString(36).substr(2, 9); - tmpl = progressTmpl({ - data: { - name: file.name, - size: fileSize, - id: data.fileId - } - }); - - $(tmpl).appendTo('#{$block->getHtmlId()}'); + tmpl = progressTmpl({ + data: { + name: currentFile.name, + size: fileSize, + id: fileId + } }); - $(this).fileupload('process', data).done(function () { - data.submit(); - }); - }, - done: function (e, data) { - var progressSelector = '#' + data.fileId + ' .progressbar-container .progressbar'; - $(progressSelector).css('width', '100%'); - if (data.result && !data.result.hasOwnProperty('errorcode')) { - $(progressSelector).removeClass('upload-progress').addClass('upload-success'); - MediabrowserInstance.handleUploadComplete(); - } else { - $(progressSelector).removeClass('upload-progress').addClass('upload-failure'); - } + // code to allow duplicate files from same folder + const modifiedFile = { + ...currentFile, + id: currentFile.id + '-' + fileId, + tempFileId: fileId + }; + + $(tmpl).appendTo('#{$block->getHtmlId()}'); + + return modifiedFile; }, - progress: function (e, data) { - var progress = parseInt(data.loaded / data.total * 100, 10); - var progressSelector = '#' + data.fileId + ' .progressbar-container .progressbar'; - $(progressSelector).css('width', progress + '%'); + meta: { + isAjax: 'true', + form_key: FORM_KEY + } + }); + + // initialize Uppy upload + uppy.use(Uppy.Dashboard, options); + + // drop area for file upload + uppy.use(Uppy.DropTarget, { + target: targetElement, + onDragOver: () => { + // override Array.from method of legacy-build.min.js file + Array.from = null; }, - fail: function (e, data) { - var progressSelector = '#' + data.fileId + ' .progressbar-container .progressbar'; - $(progressSelector).removeClass('upload-progress').addClass('upload-failure'); + onDragLeave: () => { + Array.from = arrayFromObj; } }); + // upload files on server + uppy.use(Uppy.XHRUpload, { + endpoint: url, + fieldName: inputFileName + }); + + uppy.on('upload-progress', (file, progress) => { + let progressWidth = parseInt(progress.bytesUploaded / progress.bytesTotal * 100, 10), + progressSelector = '#' + file.tempFileId + ' .progressbar-container .progressbar'; + + $(progressSelector).css('width', progressWidth + '%'); + }); + + uppy.on('upload-success', (file, response) => { + var progressSelector = '#' + file.tempFileId + ' .progressbar-container .progressbar'; + $(progressSelector).css('width', '100%'); + + if (response.body && !response.body.hasOwnProperty('errorcode')) { + $(progressSelector).removeClass('upload-progress').addClass('upload-success'); + MediabrowserInstance.handleUploadComplete(); + } else { + $(progressSelector).removeClass('upload-progress').addClass('upload-failure'); + } + }); + + uppy.on('upload-error', (file, error) => { + let progressSelector = '#' + file.tempFileId + ' .progressbar-container .progressbar'; + $(progressSelector).removeClass('upload-progress').addClass('upload-failure'); + }); + + uppy.on('restriction-failed', (file, error) => { + console.error(error); + }); + + uppy.on('complete', () => { + Array.from = arrayFromObj; + }); + + $('#fileupload').on('click', function () { + $('#fileupload').parent().find('.uppy-Dashboard-browse').trigger('click'); + }); }); script; diff --git a/app/code/Magento/Theme/view/adminhtml/templates/tabs/css.phtml b/app/code/Magento/Theme/view/adminhtml/templates/tabs/css.phtml index 827a00f9220ca..6f7ec5e37a399 100644 --- a/app/code/Magento/Theme/view/adminhtml/templates/tabs/css.phtml +++ b/app/code/Magento/Theme/view/adminhtml/templates/tabs/css.phtml @@ -16,69 +16,123 @@ require([ "jquery", "Magento_Ui/js/modal/alert", - "jquery/file-uploader", + "jquery/uppy-core", "mage/translate" ], function($, alert){ + let targetElement = $('#css_file_uploader').parent()[0], + arrayFromObj = Array.from, + url = '{$block->escapeJs($block->getUrl('*/system_design_theme/uploadcss'))}', + options = { + proudlyDisplayPoweredByUppy: false, + target: targetElement, + hideUploadButton: false, + hideRetryButton: true, + hideCancelButton: true, + inline: true, + showRemoveButtonAfterComplete: true, + showProgressDetails: false, + showSelectedFiles: false, + allowMultipleUploads: false, + hideProgressAfterFinish: true + }; + const uppy = new Uppy.Uppy({ + restrictions: { + allowedFileTypes: ['.css'] + }, - $( '#css_file_uploader' ).fileupload({ - dataType: 'json', - replaceFileInput: false, - url : '{$block->escapeJs($block->getUrl('*/system_design_theme/uploadcss'))}', - acceptFileTypes: /(.|\/)(css)$/i, - - /** - * Add data - * @param e - * @param data - */ - add: function (e, data) { + onBeforeFileAdded: (currentFile) => { var uploadButton = $('#css_uploader_button'); /** Unbind click event on file change */ uploadButton.off('click'); uploadButton.prop('disabled', false); - uploadButton.on('click', function () { - $('#messages').html(''); - $(this).attr('disabled', 'disabled'); - data.submit(); - }); + // code to allow duplicate files from same folder + const modifiedFile = { + ...currentFile, + id: currentFile.id + '-' + Date.now() + }; + return modifiedFile; }, - /** - * On done event - * @param e - * @param data - */ - done: function (e, data) { - var contentArea = $('#custom_css_content'); - $(this).val(''); - - $('#css_uploader_button').attr('disabled', 'disabled'); - - if (!data.result.error) { - contentArea.trigger('focusin'); - contentArea.val(data.result.content); - contentArea.trigger('focusout'); - } + meta: { + 'form_key': window.FORM_KEY, + isAjax : true, + "theme['theme_id']" : $('#theme_id').val(), + "theme['theme_title']" : $('#theme_title').val() + } + }); + + // initialize Uppy upload + uppy.use(Uppy.Dashboard, options); + + // drop area for file upload + uppy.use(Uppy.DropTarget, { + target: targetElement, + onDragOver: () => { + // override Array.from method of legacy-build.min.js file + Array.from = null; }, + onDragLeave: () => { + Array.from = arrayFromObj; + } + }); + + + // upload files on server + uppy.use(Uppy.XHRUpload, { + endpoint: url, + fieldName: 'css_file_uploader' + }); - /** - * Fail event - * @param e - * @param data - */ - fail: function(e, data) { - $(this).val(''); + uppy.on('file-added', (file) => { + if($('#css_file_uploader').parent().find('.file-name').length > 0){ + $('#css_file_uploader').parent().find('.file-name').html(file.name); + }else{ + $('<span class="file-name">'+file.name+'</span>').insertAfter('#css_file_uploader'); + } + }); + + uppy.on('upload-success', (file, response) => { + var contentArea = $('#custom_css_content'); + $('#css_file_uploader').parent().find('.file-name').html(''); + + $('#css_uploader_button').attr('disabled', 'disabled'); + + if (!response.body.error) { + contentArea.trigger('focusin'); + contentArea.val(response.body.content); + contentArea.trigger('focusout'); + }else{ alert({ - content: $.mage.__("We don't recognize this file extension.") + content: $.mage.__(response.body.message) }); } }); - $(document).on('beforeSubmit', function() { - $('#css_file_uploader').val(''); + uppy.on('upload-error', (file, error) => { + $('#css_file_uploader').parent().find('.file-name').html(''); + alert({ + content: $.mage.__("We don't recognize this file extension.") + }); + }); + + uppy.on('complete', () => { + Array.from = arrayFromObj; }); + $(document).on('click', '#css_file_uploader', function () { + $('#css_file_uploader').parent().find('.uppy-Dashboard-browse').trigger('click'); + }); + + $(document).on('click', '#css_uploader_button', function () { + $('#messages').html(''); + $(this).attr('disabled', 'disabled'); + $('.uppy-StatusBar-actionBtn--upload').trigger('click'); + }); + + $(document).on('beforeSubmit', function() { + $('#css_file_uploader').parent().find('.file-name').html(''); + }); }); script; diff --git a/app/code/Magento/Theme/view/adminhtml/templates/tabs/js.phtml b/app/code/Magento/Theme/view/adminhtml/templates/tabs/js.phtml index a02f9e50cf237..1d62657b761c0 100644 --- a/app/code/Magento/Theme/view/adminhtml/templates/tabs/js.phtml +++ b/app/code/Magento/Theme/view/adminhtml/templates/tabs/js.phtml @@ -17,117 +17,165 @@ require([ "jquery", "mage/template", "Magento_Ui/js/modal/alert", - "jquery/file-uploader", + "jquery/uppy-core", "Magento_Theme/js/sortable", "mage/translate" ], function ($, mageTemplate, alert) { + let targetElement = $('#js_files_uploader').parent()[0], + url = '{$block->escapeJs($block->getJsUploadUrl())}', + fileId = null, + arrayFromObj = Array.from, + options = { + proudlyDisplayPoweredByUppy: false, + target: targetElement, + hideUploadButton: false, + hideRetryButton: true, + hideCancelButton: true, + inline: true, + showRemoveButtonAfterComplete: true, + showProgressDetails: false, + showSelectedFiles: false, + allowMultipleUploads: false, + hideProgressAfterFinish: true + }; + + const uppy = new Uppy.Uppy({ + restrictions: { + allowedFileTypes: ['.js'] + }, - $('#js_files_uploader').fileupload({ - dataType: 'json', - replaceFileInput: false, - sequentialUploads: true, - url: '{$block->escapeJs($block->getJsUploadUrl())}', - - /** - * Add data - * @param e - * @param data - */ - add: function (e, data) { + onBeforeFileAdded: (currentFile) => { var progressTmpl = mageTemplate('#js-file-uploader-template'), fileSize, tmpl; - $.each(data.files, function (index, file) { - fileSize = typeof file.size == "undefined" ? + fileSize = typeof currentFile.size == "undefined" ? $.mage.__('We could not detect a size.') : - byteConvert(file.size); - - data.fileId = Math.random().toString(36).substr(2, 9); + byteConvert(currentFile.size); - tmpl = progressTmpl({ - data: { - name: file.name, - size: fileSize, - id: data.fileId - } - }); + fileId = Math.random().toString(36).substr(2, 9); - $(tmpl).appendTo('#js-file-uploader'); + tmpl = progressTmpl({ + data: { + name: currentFile.name, + size: fileSize, + id: fileId + } }); + // code to allow duplicate files from same folder + const modifiedFile = { + ...currentFile, + id: currentFile.id + '-' + fileId, + tempFileId: fileId + }; + + $(tmpl).appendTo('#js-file-uploader'); + var uploadButton = $('#js_uploader_button'); uploadButton.prop('disabled', false); - uploadButton.on('click', function () { - $('#messages').html(''); - $(this).attr('disabled', 'disabled'); + return modifiedFile; + }, - data.submit(); - }); + meta: { + 'form_key': window.FORM_KEY, + isAjax : true + } + }); + + // initialize Uppy upload + uppy.use(Uppy.Dashboard, options); + + // drop area for file upload + uppy.use(Uppy.DropTarget, { + target: targetElement, + onDragOver: () => { + // override Array.from method of legacy-build.min.js file + Array.from = null; }, + onDragLeave: () => { + Array.from = arrayFromObj; + } + }); - /** - * On done event - * @param e - * @param data - */ - done: function (e, data) { - $('#no-js-files-found').remove(); - var progressSelector = '#' + data.fileId + ' .progressbar-container .progressbar'; - $(progressSelector).css('width', '100%'); + // upload files on server + uppy.use(Uppy.XHRUpload, { + endpoint: url, + fieldName: 'js_files_uploader' + }); - $(this).val(''); + uppy.on('file-added', (file) => { + if($('#js_files_uploader').parent().find('.file-name').length > 0){ + $('#js_files_uploader').parent().find('.file-name').html(file.name); + }else{ + $('<span class="file-name">'+file.name+'</span>').insertAfter('#js_files_uploader'); + } + }); - if (!data.result.error) { - $(progressSelector).removeClass('upload-progress').addClass('upload-success'); + uppy.on('upload-progress', (file, progress) => { + let progressWidth = parseInt(progress.bytesUploaded / progress.bytesTotal * 100, 10), + progressSelector = '#' + file.tempFileId + ' .progressbar-container .progressbar'; - $('#' + data.fileId).delay(2000).fadeOut(2000); - $('body').trigger('refreshJsList', { - jsList: data.result.files - }); - } else { - $(progressSelector).removeClass('upload-progress').addClass('upload-failure'); - } + $(progressSelector).css('width', progressWidth + '%'); + }); - $('.ui-sortable').sortable('initButtons'); - }, + uppy.on('upload-success', (file, response) => { + $('#no-js-files-found').remove(); - /** - * On progress - * @param e - * @param data - */ - progress: function (e, data) { - var progress = parseInt(data.loaded / data.total * 100, 10); - var progressSelector = '#' + data.fileId + ' .progressbar-container .progressbar'; - $(progressSelector).css('width', progress + '%'); - }, + var progressSelector = '#' + file.tempFileId + ' .progressbar-container .progressbar'; + $(progressSelector).css('width', '100%'); + + $(this).val(''); + $('#js_files_uploader').parent().find('.file-name').html(''); - /** - * Fail event - * @param e - * @param data - */ - fail: function (e, data) { - var progressSelector = '#' + data.fileId + ' .progressbar-container .progressbar'; + if (!response.body.error) { + $(progressSelector).removeClass('upload-progress').addClass('upload-success'); + + $('#' + file.tempFileId).delay(2000).fadeOut(2000); + $('body').trigger('refreshJsList', { + jsList: response.body.files + }); + } else { $(progressSelector).removeClass('upload-progress').addClass('upload-failure'); $(this).val(''); + $('#js_files_uploader').parent().find('.file-name').html(''); alert({ - content: $.mage.__("We don't recognize this file extension.") + content: $.mage.__(response.body.message) }); } + + $('.ui-sortable').sortable('initButtons'); }); - $('#js_files_uploader').on('click', function () { + uppy.on('upload-error', (file, error) => { + var progressSelector = '#' + file.tempFileId + ' .progressbar-container .progressbar'; + $(progressSelector).removeClass('upload-progress').addClass('upload-failure'); + + $(this).val(''); + $('#js_files_uploader').parent().find('.file-name').html(''); + alert({ + content: $.mage.__("We don't recognize this file extension.") + }); + }); + + uppy.on('complete', () => { + Array.from = arrayFromObj; + }); + + $('#js_files_uploader').on('click', function () { + $('#js_files_uploader').parent().find('.uppy-Dashboard-browse').trigger('click'); + /** Unbind click event on file change */ $('#js-file-uploader').html(''); $('#js_uploader_button').off('click'); }); - + $(document).on('click', '#js_uploader_button', function () { + $('.uppy-StatusBar-actionBtn--upload').trigger('click'); + }); }); script; diff --git a/app/code/Magento/Theme/view/base/requirejs-config.js b/app/code/Magento/Theme/view/base/requirejs-config.js index 5b5ce93602b09..83acf9ccd3ef8 100644 --- a/app/code/Magento/Theme/view/base/requirejs-config.js +++ b/app/code/Magento/Theme/view/base/requirejs-config.js @@ -67,6 +67,7 @@ var config = { paths: { 'jquery/validate': 'jquery/jquery.validate', 'jquery/file-uploader': 'jquery/fileUploader/jquery.fileuploader', + 'jquery/uppy-core': 'jquery/uppy/dist/uppy.min', 'prototype': 'legacy-build.min', 'jquery/jquery-storageapi': 'js-storage/storage-wrapper', 'text': 'mage/requirejs/text', diff --git a/app/code/Magento/Ui/view/base/web/js/form/element/file-uploader.js b/app/code/Magento/Ui/view/base/web/js/form/element/file-uploader.js index 988ff2ffe76f5..9d86f100583c0 100644 --- a/app/code/Magento/Ui/view/base/web/js/form/element/file-uploader.js +++ b/app/code/Magento/Ui/view/base/web/js/form/element/file-uploader.js @@ -7,6 +7,7 @@ * @api */ /* global Base64 */ +/* eslint-disable no-undef */ define([ 'jquery', 'underscore', @@ -16,7 +17,7 @@ define([ 'Magento_Ui/js/form/element/abstract', 'mage/backend/notification', 'mage/translate', - 'jquery/file-uploader', + 'jquery/uppy-core', 'mage/adminhtml/tools' ], function ($, _, utils, uiAlert, validator, Element, notification, $t) { 'use strict'; @@ -51,8 +52,6 @@ define([ * @returns {FileUploader} Chainable. */ initUploader: function (fileInput) { - this.$fileInput = fileInput; - _.extend(this.uploaderConfig, { dropZone: $(fileInput).closest(this.dropZone), change: this.onFilesChoosed.bind(this), @@ -64,11 +63,131 @@ define([ stop: this.onLoadingStop.bind(this) }); - $(fileInput).fileupload(this.uploaderConfig); + // uppy implementation + if (fileInput !== undefined) { + let targetElement = $(fileInput).closest('.file-uploader-area')[0], + dropTargetElement = $(fileInput).closest(this.dropZone)[0], + fileObj = [], + formKey = window.FORM_KEY !== undefined ? window.FORM_KEY : $.cookie('form_key'), + fileInputName = this.fileInputName, + arrayFromObj = Array.from, + options = { + proudlyDisplayPoweredByUppy: false, + target: targetElement, + hideUploadButton: true, + hideRetryButton: true, + hideCancelButton: true, + inline: true, + showRemoveButtonAfterComplete: true, + showProgressDetails: false, + showSelectedFiles: false, + allowMultipleUploads: false, + hideProgressAfterFinish: true + }; + + if (fileInputName === undefined){ + fileInputName = $(fileInput).attr('name'); + } + // handle input type file + this.replaceInputTypeFile(fileInput); + + const uppy = new Uppy.Uppy({ + autoProceed: true, + + onBeforeFileAdded: (currentFile) => { + let file = currentFile, + allowed = this.isFileAllowed(file); + + if (this.disabled()) { + this.notifyError($t('The file upload field is disabled.')); + return false; + } + + if (!allowed.passed) { + fileObj.push(currentFile); + this.aggregateError(file.name, allowed.message); + if (this.aggregatedErrors.length === fileObj.length) { + this.uploaderConfig.stop(); + } + return false; + } + + // code to allow duplicate files from same folder + const modifiedFile = { + ...currentFile, + id: currentFile.id + '-' + Date.now() + }; + + this.onLoadingStart(); + return modifiedFile; + }, + + meta: { + 'form_key': formKey, + 'param_name': fileInputName, + isAjax : true + } + }); + + // initialize Uppy upload + uppy.use(Uppy.Dashboard, options); + + // drop area for file upload + uppy.use(Uppy.DropTarget, { + target: dropTargetElement, + onDragOver: () => { + // override Array.from method of legacy-build.min.js file + Array.from = null; + }, + onDragLeave: () => { + Array.from = arrayFromObj; + } + }); + + // upload files on server + uppy.use(Uppy.XHRUpload, { + endpoint: this.uploaderConfig.url, + fieldName: fileInputName + }); + + uppy.on('upload-success', (file, response) => { + let data = { + files : [response.body], + result : response.body + }; + + this.onFileUploaded('', data); + }); + + uppy.on('upload-error', (file, error) => { + console.error(error.message); + console.error(error.status); + }); + + uppy.on('complete', () => { + this.onLoadingStop(); + Array.from = arrayFromObj; + }); + } return this; }, + /** + * Replace Input type File with Span + * and bind click event + */ + replaceInputTypeFile: function (fileInput) { + let fileId = fileInput.id, fileName = fileInput.name, + spanElement = '<span id=\'' + fileId + '\'></span>'; + + $('#' + fileId).closest('.file-uploader-area').attr('upload-area-id', fileName); + $(fileInput).replaceWith(spanElement); + $('#' + fileId).closest('.file-uploader-area').find('.file-uploader-button:first').on('click', function () { + $('#' + fileId).closest('.file-uploader-area').find('.uppy-Dashboard-browse').trigger('click'); + }); + }, + /** * Defines initial value of the instance. * diff --git a/app/code/Magento/Ui/view/base/web/js/form/element/image-uploader.js b/app/code/Magento/Ui/view/base/web/js/form/element/image-uploader.js index a907e34d2abc4..259a6468a03ae 100644 --- a/app/code/Magento/Ui/view/base/web/js/form/element/image-uploader.js +++ b/app/code/Magento/Ui/view/base/web/js/form/element/image-uploader.js @@ -133,7 +133,7 @@ define([ * @param {Event} e */ triggerImageUpload: function (imageUploader, e) { - $(e.target).closest('.file-uploader').find('input[type="file"]').trigger('click'); + $(e.target).closest('.file-uploader').find('.uppy-Dashboard-browse').trigger('click'); }, /** diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Backend/view/adminhtml/web/js/media-uploader.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Backend/view/adminhtml/web/js/media-uploader.test.js index 90942cc7b15f3..39dc052ceb5dd 100644 --- a/dev/tests/js/jasmine/tests/app/code/Magento/Backend/view/adminhtml/web/js/media-uploader.test.js +++ b/dev/tests/js/jasmine/tests/app/code/Magento/Backend/view/adminhtml/web/js/media-uploader.test.js @@ -7,44 +7,52 @@ define([ 'jquery', - 'squire' -], function ($, Squire) { + 'Magento_Backend/js/media-uploader' +], function ($, mediaUploader) { 'use strict'; - describe('Magento_Backend/js/media-uploader', function () { - let injector = new Squire(), - mediaUploaderComponent; - - beforeEach(function (done) { - injector.require([ - 'Magento_Backend/js/media-uploader', - 'knockoutjs/knockout-es5' - ], function (mediaUploader) { - mediaUploaderComponent = new mediaUploader({}); - done(); + describe('Magento_Backend/js/media-uploader::_create()', function () { + + beforeEach(function () { + window.Uppy = { + Uppy: jasmine.createSpy('Uppy'), + Dashboard: jasmine.createSpy('Dashboard'), + Compressor: jasmine.createSpy('Compressor'), + DropTarget: jasmine.createSpy('DropTarget'), + XHRUpload: jasmine.createSpy('XHRUpload') + }; + + window.FORM_KEY = 'form_key'; + + window.Uppy.Uppy.and.returnValue({ + use: jasmine.createSpy('uppyUse'), + on: jasmine.createSpy('uppyOn') }); - }); - afterEach(function () { - try { - injector.clean(); - injector.remove(); - } catch (e) { - } + window.byteConvert = jasmine.createSpy('byteConvert'); + + spyOn($.fn, 'appendTo'); + + $('<div>').mediaUploader(); }); - describe('_create() method', function () { - it('_create method to be trigger and check the dropzone attribute key and value', function () { - spyOn(jQuery.fn, 'fileupload'); - mediaUploaderComponent._create(); - expect(jQuery.fn.fileupload).toHaveBeenCalledWith( - jasmine.objectContaining({ - dropZone: mediaUploaderComponent. - element.find('input[type=file]') - .closest('[role="dialog"]') - } - )); + it('Uppy instance should get created with correct options', function () { + expect(window.Uppy.Uppy).toHaveBeenCalledWith({ + autoProceed: true, + onBeforeFileAdded: jasmine.any(Function), + meta: { + 'form_key': jasmine.any(String), + isAjax: true + } }); }); + + it('Uppy should get configured with necessary plugins', function () { + const uppyInstance = window.Uppy.Uppy.calls.mostRecent().returnValue; + + expect(uppyInstance.use).toHaveBeenCalledWith(window.Uppy.Dashboard, jasmine.any(Object)); + expect(uppyInstance.use).toHaveBeenCalledWith(window.Uppy.DropTarget, jasmine.any(Object)); + expect(uppyInstance.use).toHaveBeenCalledWith(window.Uppy.XHRUpload, jasmine.any(Object)); + }); }); }); diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/element/file-uploader.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/element/file-uploader.test.js index d7516c64fedcb..a10b07e01035b 100644 --- a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/element/file-uploader.test.js +++ b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/element/file-uploader.test.js @@ -58,15 +58,35 @@ define([ }); describe('initUploader method', function () { + let uppyMock; + + beforeEach(function () { + uppyMock = { + use: jasmine.createSpy('uppy.use'), + on: jasmine.createSpy('uppy.on'), + fileInput: jasmine.createSpyObj('fileInput', ['closest']), + Dashboard: jasmine.createSpy('Dashboard'), + DropTarget: jasmine.createSpy('DropTarget'), + XHRUpload: jasmine.createSpy('XHRUpload') + }; + + window.Uppy = { Uppy: function () { return uppyMock; } }; + }); + it('creates instance of file uploader', function () { - var elem = document.createElement('input'); + let fileInputMock = document.createElement('input'); - spyOn(jQuery.fn, 'fileupload'); + spyOn(component, 'initUploader').and.callThrough(); + spyOn(component, 'replaceInputTypeFile'); - component.initUploader(elem); + component.initUploader(fileInputMock); - expect(jQuery.fn.fileupload).toHaveBeenCalled(); + expect(component.initUploader).toHaveBeenCalledWith(fileInputMock); + expect(component.replaceInputTypeFile).toHaveBeenCalledWith(fileInputMock); + expect(uppyMock.use).toHaveBeenCalledWith(Uppy.Dashboard, jasmine.any(Object)); + expect(uppyMock.use).toHaveBeenCalledWith(Uppy.DropTarget, jasmine.any(Object)); + expect(uppyMock.use).toHaveBeenCalledWith(Uppy.XHRUpload, jasmine.any(Object)); }); }); diff --git a/lib/web/jquery/uppy/dist/uppy-custom.css b/lib/web/jquery/uppy/dist/uppy-custom.css new file mode 100644 index 0000000000000..cef2474581215 --- /dev/null +++ b/lib/web/jquery/uppy/dist/uppy-custom.css @@ -0,0 +1,22 @@ +/** css related to Uppy **/ +.uppy-Dashboard-progressindicators, +.uppy-Dashboard-close, +.uppy-Dashboard-dropFilesHereHint, +.uppy-Dashboard-inner{ + display:none; +} + +.image.image-placeholder #fileUploader{ + border:500px solid transparent; + bottom:0; + cursor:pointer; + font-size:10em; + height:100%; + left:0; + opacity:0; + position:absolute; + right:0; + top:0; + width:100%; + z-index:3 +} diff --git a/lib/web/jquery/uppy/dist/uppy.min.js b/lib/web/jquery/uppy/dist/uppy.min.js new file mode 100644 index 0000000000000..126c6ddd55338 --- /dev/null +++ b/lib/web/jquery/uppy/dist/uppy.min.js @@ -0,0 +1,63 @@ +"use strict";(()=>{var Bb=Object.create;var Cl=Object.defineProperty;var zb=Object.getOwnPropertyDescriptor;var jb=Object.getOwnPropertyNames;var Hb=Object.getPrototypeOf,$b=Object.prototype.hasOwnProperty;var n=(i,e)=>Cl(i,"name",{value:e,configurable:!0});var he=(i,e)=>()=>(e||i((e={exports:{}}).exports,e),e.exports),Tl=(i,e)=>{for(var t in e)Cl(i,t,{get:e[t],enumerable:!0})},qb=(i,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of jb(e))!$b.call(i,s)&&s!==t&&Cl(i,s,{get:()=>e[s],enumerable:!(r=zb(e,s))||r.enumerable});return i};var de=(i,e,t)=>(t=i!=null?Bb(Hb(i)):{},qb(e||!i||!i.__esModule?Cl(t,"default",{value:i,enumerable:!0}):t,i));var yh=he((Zx,of)=>{of.exports=n(function(){var e={},t=e._fns={};e.emit=n(function(a,l,h,p,d,f,y){var b=r(a);b.length&&s(a,b,[l,h,p,d,f,y])},"emit"),e.on=n(function(a,l){t[a]||(t[a]=[]),t[a].push(l)},"on"),e.once=n(function(a,l){function h(){l.apply(this,arguments),e.off(a,h)}n(h,"one"),this.on(a,h)},"once"),e.off=n(function(a,l){var h=[];if(a&&l){var p=this._fns[a],d=0,f=p?p.length:0;for(d;d<f;d++)p[d]!==l&&h.push(p[d])}h.length?this._fns[a]=h:delete this._fns[a]},"off");function r(o){var a=t[o]?t[o]:[],l=o.indexOf(":"),h=l===-1?[o]:[o.substring(0,l),o.substring(l+1)],p=Object.keys(t),d=0,f=p.length;for(d;d<f;d++){var y=p[d];if(y==="*"&&(a=a.concat(t[y])),h.length===2&&h[0]===y){a=a.concat(t[y]);break}}return a}n(r,"getListeners");function s(o,a,l){var h=0,p=a.length;for(h;h<p&&a[h];h++)a[h].event=o,a[h].apply(a[h],l)}return n(s,"emitAll"),e},"createNamespaceEmitter")});var Al=he((rF,nf)=>{function Yb(i){var e=typeof i;return i!=null&&(e=="object"||e=="function")}n(Yb,"isObject");nf.exports=Yb});var lf=he((oF,af)=>{var Qb=typeof global=="object"&&global&&global.Object===Object&&global;af.exports=Qb});var vh=he((nF,uf)=>{var Jb=lf(),Zb=typeof self=="object"&&self&&self.Object===Object&&self,e1=Jb||Zb||Function("return this")();uf.exports=e1});var df=he((aF,hf)=>{var t1=vh(),i1=n(function(){return t1.Date.now()},"now");hf.exports=i1});var pf=he((uF,cf)=>{var r1=/\s/;function s1(i){for(var e=i.length;e--&&r1.test(i.charAt(e)););return e}n(s1,"trimmedEndIndex");cf.exports=s1});var mf=he((dF,ff)=>{var o1=pf(),n1=/^\s+/;function a1(i){return i&&i.slice(0,o1(i)+1).replace(n1,"")}n(a1,"baseTrim");ff.exports=a1});var bh=he((pF,gf)=>{var l1=vh(),u1=l1.Symbol;gf.exports=u1});var wf=he((fF,bf)=>{var yf=bh(),vf=Object.prototype,h1=vf.hasOwnProperty,d1=vf.toString,cn=yf?yf.toStringTag:void 0;function c1(i){var e=h1.call(i,cn),t=i[cn];try{i[cn]=void 0;var r=!0}catch{}var s=d1.call(i);return r&&(e?i[cn]=t:delete i[cn]),s}n(c1,"getRawTag");bf.exports=c1});var Pf=he((gF,Sf)=>{var p1=Object.prototype,f1=p1.toString;function m1(i){return f1.call(i)}n(m1,"objectToString");Sf.exports=m1});var Ef=he((vF,Ff)=>{var _f=bh(),g1=wf(),y1=Pf(),v1="[object Null]",b1="[object Undefined]",xf=_f?_f.toStringTag:void 0;function w1(i){return i==null?i===void 0?b1:v1:xf&&xf in Object(i)?g1(i):y1(i)}n(w1,"baseGetTag");Ff.exports=w1});var Cf=he((wF,Of)=>{function S1(i){return i!=null&&typeof i=="object"}n(S1,"isObjectLike");Of.exports=S1});var Af=he((PF,Tf)=>{var P1=Ef(),_1=Cf(),x1="[object Symbol]";function F1(i){return typeof i=="symbol"||_1(i)&&P1(i)==x1}n(F1,"isSymbol");Tf.exports=F1});var Df=he((xF,kf)=>{var E1=mf(),Rf=Al(),O1=Af(),Uf=0/0,C1=/^[-+]0x[0-9a-f]+$/i,T1=/^0b[01]+$/i,A1=/^0o[0-7]+$/i,R1=parseInt;function U1(i){if(typeof i=="number")return i;if(O1(i))return Uf;if(Rf(i)){var e=typeof i.valueOf=="function"?i.valueOf():i;i=Rf(e)?e+"":e}if(typeof i!="string")return i===0?i:+i;i=E1(i);var t=T1.test(i);return t||A1.test(i)?R1(i.slice(2),t?2:8):C1.test(i)?Uf:+i}n(U1,"toNumber");kf.exports=U1});var Sh=he((EF,Nf)=>{var k1=Al(),wh=df(),If=Df(),D1="Expected a function",I1=Math.max,N1=Math.min;function M1(i,e,t){var r,s,o,a,l,h,p=0,d=!1,f=!1,y=!0;if(typeof i!="function")throw new TypeError(D1);e=If(e)||0,k1(t)&&(d=!!t.leading,f="maxWait"in t,o=f?I1(If(t.maxWait)||0,e):o,y="trailing"in t?!!t.trailing:y);function b(B){var z=r,K=s;return r=s=void 0,p=B,a=i.apply(K,z),a}n(b,"invokeFunc");function S(B){return p=B,l=setTimeout(F,e),d?b(B):a}n(S,"leadingEdge");function E(B){var z=B-h,K=B-p,oe=e-z;return f?N1(oe,o-K):oe}n(E,"remainingWait");function x(B){var z=B-h,K=B-p;return h===void 0||z>=e||z<0||f&&K>=o}n(x,"shouldInvoke");function F(){var B=wh();if(x(B))return U(B);l=setTimeout(F,E(B))}n(F,"timerExpired");function U(B){return l=void 0,y&&r?b(B):(r=s=void 0,a)}n(U,"trailingEdge");function j(){l!==void 0&&clearTimeout(l),p=0,r=h=s=l=void 0}n(j,"cancel");function G(){return l===void 0?a:U(wh())}n(G,"flush");function J(){var B=wh(),z=x(B);if(r=arguments,s=this,h=B,z){if(l===void 0)return S(h);if(f)return clearTimeout(l),l=setTimeout(F,e),b(h)}return l===void 0&&(l=setTimeout(F,e)),a}return n(J,"debounced"),J.cancel=j,J.flush=G,J}n(M1,"debounce");Nf.exports=M1});var Rl=he((CF,Mf)=>{var L1=Sh(),B1=Al(),z1="Expected a function";function j1(i,e,t){var r=!0,s=!0;if(typeof i!="function")throw new TypeError(z1);return B1(t)&&(r="leading"in t?!!t.leading:r,s="trailing"in t?!!t.trailing:s),L1(i,e,{leading:r,maxWait:e,trailing:s})}n(j1,"throttle");Mf.exports=j1});var Il=he((YF,Hf)=>{Hf.exports=n(function(e){if(typeof e!="number"||isNaN(e))throw new TypeError(`Expected a number, got ${typeof e}`);let t=e<0,r=["B","KB","MB","GB","TB","PB","EB","ZB","YB"];if(t&&(e=-e),e<1)return`${(t?"-":"")+e} B`;let s=Math.min(Math.floor(Math.log(e)/Math.log(1024)),r.length-1);e=Number(e/Math.pow(1024,s));let o=r[s];return e>=10||e%1===0?`${(t?"-":"")+e.toFixed(0)} ${o}`:`${(t?"-":"")+e.toFixed(1)} ${o}`},"prettierBytes")});var Vf=he((JF,qf)=>{"use strict";function $f(i,e){this.text=i=i||"",this.hasWild=~i.indexOf("*"),this.separator=e,this.parts=i.split(e)}n($f,"WildcardMatcher");$f.prototype.match=function(i){var e=!0,t=this.parts,r,s=t.length,o;if(typeof i=="string"||i instanceof String)if(!this.hasWild&&this.text!=i)e=!1;else{for(o=(i||"").split(this.separator),r=0;e&&r<s;r++)t[r]!=="*"&&(r<o.length?e=t[r]===o[r]:e=!1);e=e&&o}else if(typeof i.splice=="function")for(e=[],r=i.length;r--;)this.match(i[r])&&(e[e.length]=i[r]);else if(typeof i=="object"){e={};for(var a in i)this.match(a)&&(e[a]=i[a])}return e};qf.exports=function(i,e,t){var r=new $f(i,t||/[\/\.]/);return typeof e<"u"?r.match(e):r}});var Gf=he((e3,Wf)=>{var G1=Vf(),K1=/[\/\+\.]/;Wf.exports=function(i,e){function t(r){var s=G1(r,i,K1);return s&&s.length>=2}return n(t,"test"),e?t(e.split(";")[0]):t}});var bm=he((j3,vm)=>{function pi(i,e){typeof e=="boolean"&&(e={forever:e}),this._originalTimeouts=JSON.parse(JSON.stringify(i)),this._timeouts=i,this._options=e||{},this._maxRetryTime=e&&e.maxRetryTime||1/0,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._timer=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}n(pi,"RetryOperation");vm.exports=pi;pi.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts.slice(0)};pi.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timer&&clearTimeout(this._timer),this._timeouts=[],this._cachedTimeouts=null};pi.prototype.retry=function(i){if(this._timeout&&clearTimeout(this._timeout),!i)return!1;var e=new Date().getTime();if(i&&e-this._operationStart>=this._maxRetryTime)return this._errors.push(i),this._errors.unshift(new Error("RetryOperation timeout occurred")),!1;this._errors.push(i);var t=this._timeouts.shift();if(t===void 0)if(this._cachedTimeouts)this._errors.splice(0,this._errors.length-1),t=this._cachedTimeouts.slice(-1);else return!1;var r=this;return this._timer=setTimeout(function(){r._attempts++,r._operationTimeoutCb&&(r._timeout=setTimeout(function(){r._operationTimeoutCb(r._attempts)},r._operationTimeout),r._options.unref&&r._timeout.unref()),r._fn(r._attempts)},t),this._options.unref&&this._timer.unref(),!0};pi.prototype.attempt=function(i,e){this._fn=i,e&&(e.timeout&&(this._operationTimeout=e.timeout),e.cb&&(this._operationTimeoutCb=e.cb));var t=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){t._operationTimeoutCb()},t._operationTimeout)),this._operationStart=new Date().getTime(),this._fn(this._attempts)};pi.prototype.try=function(i){console.log("Using RetryOperation.try() is deprecated"),this.attempt(i)};pi.prototype.start=function(i){console.log("Using RetryOperation.start() is deprecated"),this.attempt(i)};pi.prototype.start=pi.prototype.try;pi.prototype.errors=function(){return this._errors};pi.prototype.attempts=function(){return this._attempts};pi.prototype.mainError=function(){if(this._errors.length===0)return null;for(var i={},e=null,t=0,r=0;r<this._errors.length;r++){var s=this._errors[r],o=s.message,a=(i[o]||0)+1;i[o]=a,a>=t&&(e=s,t=a)}return e}});var wm=he(Ss=>{var bw=bm();Ss.operation=function(i){var e=Ss.timeouts(i);return new bw(e,{forever:i&&(i.forever||i.retries===1/0),unref:i&&i.unref,maxRetryTime:i&&i.maxRetryTime})};Ss.timeouts=function(i){if(i instanceof Array)return[].concat(i);var e={retries:10,factor:2,minTimeout:1*1e3,maxTimeout:1/0,randomize:!1};for(var t in i)e[t]=i[t];if(e.minTimeout>e.maxTimeout)throw new Error("minTimeout is greater than maxTimeout");for(var r=[],s=0;s<e.retries;s++)r.push(this.createTimeout(s,e));return i&&i.forever&&!r.length&&r.push(this.createTimeout(s,e)),r.sort(function(o,a){return o-a}),r};Ss.createTimeout=function(i,e){var t=e.randomize?Math.random()+1:1,r=Math.round(t*Math.max(e.minTimeout,1)*Math.pow(e.factor,i));return r=Math.min(r,e.maxTimeout),r};Ss.wrap=function(i,e,t){if(e instanceof Array&&(t=e,e=null),!t){t=[];for(var r in i)typeof i[r]=="function"&&t.push(r)}for(var s=0;s<t.length;s++){var o=t[s],a=i[o];i[o]=n(function(h){var p=Ss.operation(e),d=Array.prototype.slice.call(arguments,1),f=d.pop();d.push(function(y){p.retry(y)||(y&&(arguments[0]=p.mainError()),f.apply(this,arguments))}),p.attempt(function(){h.apply(i,d)})},"retryWrapper").bind(i,a),i[o].options=e}}});var Pm=he((V3,Sm)=>{Sm.exports=wm()});var Dm=he((UE,zh)=>{"use strict";var $w=Object.prototype.hasOwnProperty,At="~";function In(){}n(In,"Events");Object.create&&(In.prototype=Object.create(null),new In().__proto__||(At=!1));function qw(i,e,t){this.fn=i,this.context=e,this.once=t||!1}n(qw,"EE");function km(i,e,t,r,s){if(typeof t!="function")throw new TypeError("The listener must be a function");var o=new qw(t,r||i,s),a=At?At+e:e;return i._events[a]?i._events[a].fn?i._events[a]=[i._events[a],o]:i._events[a].push(o):(i._events[a]=o,i._eventsCount++),i}n(km,"addListener");function Xl(i,e){--i._eventsCount===0?i._events=new In:delete i._events[e]}n(Xl,"clearEvent");function _t(){this._events=new In,this._eventsCount=0}n(_t,"EventEmitter");_t.prototype.eventNames=n(function(){var e=[],t,r;if(this._eventsCount===0)return e;for(r in t=this._events)$w.call(t,r)&&e.push(At?r.slice(1):r);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e},"eventNames");_t.prototype.listeners=n(function(e){var t=At?At+e:e,r=this._events[t];if(!r)return[];if(r.fn)return[r.fn];for(var s=0,o=r.length,a=new Array(o);s<o;s++)a[s]=r[s].fn;return a},"listeners");_t.prototype.listenerCount=n(function(e){var t=At?At+e:e,r=this._events[t];return r?r.fn?1:r.length:0},"listenerCount");_t.prototype.emit=n(function(e,t,r,s,o,a){var l=At?At+e:e;if(!this._events[l])return!1;var h=this._events[l],p=arguments.length,d,f;if(h.fn){switch(h.once&&this.removeListener(e,h.fn,void 0,!0),p){case 1:return h.fn.call(h.context),!0;case 2:return h.fn.call(h.context,t),!0;case 3:return h.fn.call(h.context,t,r),!0;case 4:return h.fn.call(h.context,t,r,s),!0;case 5:return h.fn.call(h.context,t,r,s,o),!0;case 6:return h.fn.call(h.context,t,r,s,o,a),!0}for(f=1,d=new Array(p-1);f<p;f++)d[f-1]=arguments[f];h.fn.apply(h.context,d)}else{var y=h.length,b;for(f=0;f<y;f++)switch(h[f].once&&this.removeListener(e,h[f].fn,void 0,!0),p){case 1:h[f].fn.call(h[f].context);break;case 2:h[f].fn.call(h[f].context,t);break;case 3:h[f].fn.call(h[f].context,t,r);break;case 4:h[f].fn.call(h[f].context,t,r,s);break;default:if(!d)for(b=1,d=new Array(p-1);b<p;b++)d[b-1]=arguments[b];h[f].fn.apply(h[f].context,d)}}return!0},"emit");_t.prototype.on=n(function(e,t,r){return km(this,e,t,r,!1)},"on");_t.prototype.once=n(function(e,t,r){return km(this,e,t,r,!0)},"once");_t.prototype.removeListener=n(function(e,t,r,s){var o=At?At+e:e;if(!this._events[o])return this;if(!t)return Xl(this,o),this;var a=this._events[o];if(a.fn)a.fn===t&&(!s||a.once)&&(!r||a.context===r)&&Xl(this,o);else{for(var l=0,h=[],p=a.length;l<p;l++)(a[l].fn!==t||s&&!a[l].once||r&&a[l].context!==r)&&h.push(a[l]);h.length?this._events[o]=h.length===1?h[0]:h:Xl(this,o)}return this},"removeListener");_t.prototype.removeAllListeners=n(function(e){var t;return e?(t=At?At+e:e,this._events[t]&&Xl(this,t)):(this._events=new In,this._eventsCount=0),this},"removeAllListeners");_t.prototype.off=_t.prototype.removeListener;_t.prototype.addListener=_t.prototype.on;_t.prefixed=At;_t.EventEmitter=_t;typeof zh<"u"&&(zh.exports=_t)});var Qt=he((nO,nu)=>{(function(){"use strict";var i={}.hasOwnProperty;function e(){for(var t=[],r=0;r<arguments.length;r++){var s=arguments[r];if(s){var o=typeof s;if(o==="string"||o==="number")t.push(s);else if(Array.isArray(s)){if(s.length){var a=e.apply(null,s);a&&t.push(a)}}else if(o==="object")if(s.toString===Object.prototype.toString)for(var l in s)i.call(s,l)&&s[l]&&t.push(l);else t.push(s.toString())}}return t.join(" ")}n(e,"classNames"),typeof nu<"u"&&nu.exports?(e.default=e,nu.exports=e):typeof define=="function"&&typeof define.amd=="object"&&define.amd?define("classnames",[],function(){return e}):window.classNames=e})()});var iy=he((xT,ty)=>{ty.exports=n(function(e,t){if(e===t)return!0;for(var r in e)if(!(r in t))return!1;for(var r in t)if(e[r]!==t[r])return!1;return!0},"isShallowEqual")});var oy=he((VT,sy)=>{sy.exports=n(function(e){if(typeof e!="number"||isNaN(e))throw new TypeError("Expected a number, got "+typeof e);var t=e<0,r=["B","KB","MB","GB","TB","PB","EB","ZB","YB"];if(t&&(e=-e),e<1)return(t?"-":"")+e+" B";var s=Math.min(Math.floor(Math.log(e)/Math.log(1024)),r.length-1);e=Number(e/Math.pow(1024,s));var o=r[s];return e>=10||e%1===0?(t?"-":"")+e.toFixed(0)+" "+o:(t?"-":"")+e.toFixed(1)+" "+o},"prettierBytes")});var Ay=he((Vd,Wd)=>{(function(i,e){typeof Vd=="object"&&typeof Wd<"u"?Wd.exports=e():typeof define=="function"&&define.amd?define(e):(i=i||self,i.Cropper=e())})(Vd,function(){"use strict";function i(v){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?i=n(function(c){return typeof c},"_typeof"):i=n(function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},"_typeof"),i(v)}n(i,"_typeof");function e(v,c){if(!(v instanceof c))throw new TypeError("Cannot call a class as a function")}n(e,"_classCallCheck");function t(v,c){for(var g=0;g<c.length;g++){var m=c[g];m.enumerable=m.enumerable||!1,m.configurable=!0,"value"in m&&(m.writable=!0),Object.defineProperty(v,m.key,m)}}n(t,"_defineProperties");function r(v,c,g){return c&&t(v.prototype,c),g&&t(v,g),v}n(r,"_createClass");function s(v,c,g){return c in v?Object.defineProperty(v,c,{value:g,enumerable:!0,configurable:!0,writable:!0}):v[c]=g,v}n(s,"_defineProperty");function o(v,c){var g=Object.keys(v);if(Object.getOwnPropertySymbols){var m=Object.getOwnPropertySymbols(v);c&&(m=m.filter(function(P){return Object.getOwnPropertyDescriptor(v,P).enumerable})),g.push.apply(g,m)}return g}n(o,"ownKeys");function a(v){for(var c=1;c<arguments.length;c++){var g=arguments[c]!=null?arguments[c]:{};c%2?o(Object(g),!0).forEach(function(m){s(v,m,g[m])}):Object.getOwnPropertyDescriptors?Object.defineProperties(v,Object.getOwnPropertyDescriptors(g)):o(Object(g)).forEach(function(m){Object.defineProperty(v,m,Object.getOwnPropertyDescriptor(g,m))})}return v}n(a,"_objectSpread2");function l(v){return h(v)||p(v)||d(v)||y()}n(l,"_toConsumableArray");function h(v){if(Array.isArray(v))return f(v)}n(h,"_arrayWithoutHoles");function p(v){if(typeof Symbol<"u"&&Symbol.iterator in Object(v))return Array.from(v)}n(p,"_iterableToArray");function d(v,c){if(v){if(typeof v=="string")return f(v,c);var g=Object.prototype.toString.call(v).slice(8,-1);if(g==="Object"&&v.constructor&&(g=v.constructor.name),g==="Map"||g==="Set")return Array.from(v);if(g==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(g))return f(v,c)}}n(d,"_unsupportedIterableToArray");function f(v,c){(c==null||c>v.length)&&(c=v.length);for(var g=0,m=new Array(c);g<c;g++)m[g]=v[g];return m}n(f,"_arrayLikeToArray");function y(){throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}n(y,"_nonIterableSpread");var b=typeof window<"u"&&typeof window.document<"u",S=b?window:{},E=b&&S.document.documentElement?"ontouchstart"in S.document.documentElement:!1,x=b?"PointerEvent"in S:!1,F="cropper",U="all",j="crop",G="move",J="zoom",B="e",z="w",K="s",oe="n",Be="ne",Je="nw",wt="se",We="sw",_e="".concat(F,"-crop"),ze="".concat(F,"-disabled"),xe="".concat(F,"-hidden"),ui="".concat(F,"-hide"),V="".concat(F,"-invisible"),R="".concat(F,"-modal"),I="".concat(F,"-move"),L="".concat(F,"Action"),Q="".concat(F,"Preview"),X="crop",ye="move",pe="none",ne="crop",re="cropend",Fe="cropmove",Ee="cropstart",Ft="dblclick",Et=E?"touchstart":"mousedown",te=E?"touchmove":"mousemove",Ot=E?"touchend touchcancel":"mouseup",Ge=x?"pointerdown":Et,lr=x?"pointermove":te,So=x?"pointerup pointercancel":Ot,Hr="ready",$r="resize",qr="wheel",ur="zoom",hr="image/jpeg",nt=/^e|w|s|n|se|sw|ne|nw|all|crop|move|zoom$/,at=/^data:/,wl=/^data:image\/jpeg;base64,/,Sl=/^img|canvas$/i,nn={viewMode:0,dragMode:X,initialAspectRatio:NaN,aspectRatio:NaN,data:null,preview:"",responsive:!0,restore:!0,checkCrossOrigin:!0,checkOrientation:!0,modal:!0,guides:!0,center:!0,highlight:!0,background:!0,autoCrop:!0,autoCropArea:.8,movable:!0,rotatable:!0,scalable:!0,zoomable:!0,zoomOnTouch:!0,zoomOnWheel:!0,wheelZoomRatio:.1,cropBoxMovable:!0,cropBoxResizable:!0,toggleDragModeOnDblclick:!0,minCanvasWidth:0,minCanvasHeight:0,minCropBoxWidth:0,minCropBoxHeight:0,minContainerWidth:200,minContainerHeight:100,ready:null,cropstart:null,cropmove:null,cropend:null,crop:null,zoom:null},Pl='<div class="cropper-container" touch-action="none"><div class="cropper-wrap-box"><div class="cropper-canvas"></div></div><div class="cropper-drag-box"></div><div class="cropper-crop-box"><span class="cropper-view-box"></span><span class="cropper-dashed dashed-h"></span><span class="cropper-dashed dashed-v"></span><span class="cropper-center"></span><span class="cropper-face"></span><span class="cropper-line line-e" data-cropper-action="e"></span><span class="cropper-line line-n" data-cropper-action="n"></span><span class="cropper-line line-w" data-cropper-action="w"></span><span class="cropper-line line-s" data-cropper-action="s"></span><span class="cropper-point point-e" data-cropper-action="e"></span><span class="cropper-point point-n" data-cropper-action="n"></span><span class="cropper-point point-w" data-cropper-action="w"></span><span class="cropper-point point-s" data-cropper-action="s"></span><span class="cropper-point point-ne" data-cropper-action="ne"></span><span class="cropper-point point-nw" data-cropper-action="nw"></span><span class="cropper-point point-sw" data-cropper-action="sw"></span><span class="cropper-point point-se" data-cropper-action="se"></span></div></div>',_l=Number.isNaN||S.isNaN;function ie(v){return typeof v=="number"&&!_l(v)}n(ie,"isNumber");var an=n(function(c){return c>0&&c<1/0},"isPositiveNumber");function Po(v){return typeof v>"u"}n(Po,"isUndefined");function Ni(v){return i(v)==="object"&&v!==null}n(Ni,"isObject");var hh=Object.prototype.hasOwnProperty;function Vr(v){if(!Ni(v))return!1;try{var c=v.constructor,g=c.prototype;return c&&g&&hh.call(g,"isPrototypeOf")}catch{return!1}}n(Vr,"isPlainObject");function St(v){return typeof v=="function"}n(St,"isFunction");var dh=Array.prototype.slice;function _o(v){return Array.from?Array.from(v):dh.call(v)}n(_o,"toArray");function Re(v,c){return v&&St(c)&&(Array.isArray(v)||ie(v.length)?_o(v).forEach(function(g,m){c.call(v,g,m,v)}):Ni(v)&&Object.keys(v).forEach(function(g){c.call(v,v[g],g,v)})),v}n(Re,"forEach");var Se=Object.assign||n(function(c){for(var g=arguments.length,m=new Array(g>1?g-1:0),P=1;P<g;P++)m[P-1]=arguments[P];return Ni(c)&&m.length>0&&m.forEach(function(w){Ni(w)&&Object.keys(w).forEach(function(_){c[_]=w[_]})}),c},"assign"),ln=/\.\d*(?:0|9){12}\d*$/;function Mi(v){var c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1e11;return ln.test(v)?Math.round(v*c)/c:v}n(Mi,"normalizeDecimalNumber");var xl=/^width|height|left|top|marginLeft|marginTop$/;function vi(v,c){var g=v.style;Re(c,function(m,P){xl.test(P)&&ie(m)&&(m="".concat(m,"px")),g[P]=m})}n(vi,"setStyle");function Fl(v,c){return v.classList?v.classList.contains(c):v.className.indexOf(c)>-1}n(Fl,"hasClass");function je(v,c){if(c){if(ie(v.length)){Re(v,function(m){je(m,c)});return}if(v.classList){v.classList.add(c);return}var g=v.className.trim();g?g.indexOf(c)<0&&(v.className="".concat(g," ").concat(c)):v.className=c}}n(je,"addClass");function bi(v,c){if(c){if(ie(v.length)){Re(v,function(g){bi(g,c)});return}if(v.classList){v.classList.remove(c);return}v.className.indexOf(c)>=0&&(v.className=v.className.replace(c,""))}}n(bi,"removeClass");function Wr(v,c,g){if(c){if(ie(v.length)){Re(v,function(m){Wr(m,c,g)});return}g?je(v,c):bi(v,c)}}n(Wr,"toggleClass");var yb=/([a-z\d])([A-Z])/g;function ch(v){return v.replace(yb,"$1-$2").toLowerCase()}n(ch,"toParamCase");function ph(v,c){return Ni(v[c])?v[c]:v.dataset?v.dataset[c]:v.getAttribute("data-".concat(ch(c)))}n(ph,"getData");function un(v,c,g){Ni(g)?v[c]=g:v.dataset?v.dataset[c]=g:v.setAttribute("data-".concat(ch(c)),g)}n(un,"setData");function vb(v,c){if(Ni(v[c]))try{delete v[c]}catch{v[c]=void 0}else if(v.dataset)try{delete v.dataset[c]}catch{v.dataset[c]=void 0}else v.removeAttribute("data-".concat(ch(c)))}n(vb,"removeData");var Vp=/\s\s*/,Wp=function(){var v=!1;if(b){var c=!1,g=n(function(){},"listener"),m=Object.defineProperty({},"once",{get:n(function(){return v=!0,c},"get"),set:n(function(w){c=w},"set")});S.addEventListener("test",g,m),S.removeEventListener("test",g,m)}return v}();function wi(v,c,g){var m=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},P=g;c.trim().split(Vp).forEach(function(w){if(!Wp){var _=v.listeners;_&&_[w]&&_[w][g]&&(P=_[w][g],delete _[w][g],Object.keys(_[w]).length===0&&delete _[w],Object.keys(_).length===0&&delete v.listeners)}v.removeEventListener(w,P,m)})}n(wi,"removeListener");function hi(v,c,g){var m=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},P=g;c.trim().split(Vp).forEach(function(w){if(m.once&&!Wp){var _=v.listeners,O=_===void 0?{}:_;P=n(function(){delete O[w][g],v.removeEventListener(w,P,m);for(var A=arguments.length,T=new Array(A),C=0;C<A;C++)T[C]=arguments[C];g.apply(v,T)},"handler"),O[w]||(O[w]={}),O[w][g]&&v.removeEventListener(w,O[w][g],m),O[w][g]=P,v.listeners=O}v.addEventListener(w,P,m)})}n(hi,"addListener");function xo(v,c,g){var m;return St(Event)&&St(CustomEvent)?m=new CustomEvent(c,{detail:g,bubbles:!0,cancelable:!0}):(m=document.createEvent("CustomEvent"),m.initCustomEvent(c,!0,!0,g)),v.dispatchEvent(m)}n(xo,"dispatchEvent");function Gp(v){var c=v.getBoundingClientRect();return{left:c.left+(window.pageXOffset-document.documentElement.clientLeft),top:c.top+(window.pageYOffset-document.documentElement.clientTop)}}n(Gp,"getOffset");var fh=S.location,bb=/^(\w+:)\/\/([^:/?#]*):?(\d*)/i;function Kp(v){var c=v.match(bb);return c!==null&&(c[1]!==fh.protocol||c[2]!==fh.hostname||c[3]!==fh.port)}n(Kp,"isCrossOriginURL");function Xp(v){var c="timestamp=".concat(new Date().getTime());return v+(v.indexOf("?")===-1?"?":"&")+c}n(Xp,"addTimestamp");function hn(v){var c=v.rotate,g=v.scaleX,m=v.scaleY,P=v.translateX,w=v.translateY,_=[];ie(P)&&P!==0&&_.push("translateX(".concat(P,"px)")),ie(w)&&w!==0&&_.push("translateY(".concat(w,"px)")),ie(c)&&c!==0&&_.push("rotate(".concat(c,"deg)")),ie(g)&&g!==1&&_.push("scaleX(".concat(g,")")),ie(m)&&m!==1&&_.push("scaleY(".concat(m,")"));var O=_.length?_.join(" "):"none";return{WebkitTransform:O,msTransform:O,transform:O}}n(hn,"getTransforms");function wb(v){var c=a({},v),g=[];return Re(v,function(m,P){delete c[P],Re(c,function(w){var _=Math.abs(m.startX-w.startX),O=Math.abs(m.startY-w.startY),D=Math.abs(m.endX-w.endX),A=Math.abs(m.endY-w.endY),T=Math.sqrt(_*_+O*O),C=Math.sqrt(D*D+A*A),k=(C-T)/T;g.push(k)})}),g.sort(function(m,P){return Math.abs(m)<Math.abs(P)}),g[0]}n(wb,"getMaxZoomRatio");function El(v,c){var g=v.pageX,m=v.pageY,P={endX:g,endY:m};return c?P:a({startX:g,startY:m},P)}n(El,"getPointer");function Sb(v){var c=0,g=0,m=0;return Re(v,function(P){var w=P.startX,_=P.startY;c+=w,g+=_,m+=1}),c/=m,g/=m,{pageX:c,pageY:g}}n(Sb,"getPointersCenter");function Gr(v){var c=v.aspectRatio,g=v.height,m=v.width,P=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"contain",w=an(m),_=an(g);if(w&&_){var O=g*c;P==="contain"&&O>m||P==="cover"&&O<m?g=m/c:m=g*c}else w?g=m/c:_&&(m=g*c);return{width:m,height:g}}n(Gr,"getAdjustedSizes");function Pb(v){var c=v.width,g=v.height,m=v.degree;if(m=Math.abs(m)%180,m===90)return{width:g,height:c};var P=m%90*Math.PI/180,w=Math.sin(P),_=Math.cos(P),O=c*_+g*w,D=c*w+g*_;return m>90?{width:D,height:O}:{width:O,height:D}}n(Pb,"getRotatedSizes");function _b(v,c,g,m){var P=c.aspectRatio,w=c.naturalWidth,_=c.naturalHeight,O=c.rotate,D=O===void 0?0:O,A=c.scaleX,T=A===void 0?1:A,C=c.scaleY,k=C===void 0?1:C,ue=g.aspectRatio,le=g.naturalWidth,Ce=g.naturalHeight,fe=m.fillColor,Ze=fe===void 0?"transparent":fe,lt=m.imageSmoothingEnabled,Ke=lt===void 0?!0:lt,dr=m.imageSmoothingQuality,Wt=dr===void 0?"low":dr,M=m.maxWidth,me=M===void 0?1/0:M,et=m.maxHeight,di=et===void 0?1/0:et,cr=m.minWidth,ps=cr===void 0?0:cr,fs=m.minHeight,Kr=fs===void 0?0:fs,Li=document.createElement("canvas"),jt=Li.getContext("2d"),ms=Gr({aspectRatio:ue,width:me,height:di}),Ol=Gr({aspectRatio:ue,width:ps,height:Kr},"cover"),mh=Math.min(ms.width,Math.max(Ol.width,le)),gh=Math.min(ms.height,Math.max(Ol.height,Ce)),Jp=Gr({aspectRatio:P,width:me,height:di}),Zp=Gr({aspectRatio:P,width:ps,height:Kr},"cover"),ef=Math.min(Jp.width,Math.max(Zp.width,w)),tf=Math.min(Jp.height,Math.max(Zp.height,_)),Mb=[-ef/2,-tf/2,ef,tf];return Li.width=Mi(mh),Li.height=Mi(gh),jt.fillStyle=Ze,jt.fillRect(0,0,mh,gh),jt.save(),jt.translate(mh/2,gh/2),jt.rotate(D*Math.PI/180),jt.scale(T,k),jt.imageSmoothingEnabled=Ke,jt.imageSmoothingQuality=Wt,jt.drawImage.apply(jt,[v].concat(l(Mb.map(function(Lb){return Math.floor(Mi(Lb))})))),jt.restore(),Li}n(_b,"getSourceCanvas");var Yp=String.fromCharCode;function xb(v,c,g){var m="";g+=c;for(var P=c;P<g;P+=1)m+=Yp(v.getUint8(P));return m}n(xb,"getStringFromCharCode");var Fb=/^data:.*,/;function Eb(v){var c=v.replace(Fb,""),g=atob(c),m=new ArrayBuffer(g.length),P=new Uint8Array(m);return Re(P,function(w,_){P[_]=g.charCodeAt(_)}),m}n(Eb,"dataURLToArrayBuffer");function Ob(v,c){for(var g=[],m=8192,P=new Uint8Array(v);P.length>0;)g.push(Yp.apply(null,_o(P.subarray(0,m)))),P=P.subarray(m);return"data:".concat(c,";base64,").concat(btoa(g.join("")))}n(Ob,"arrayBufferToDataURL");function Cb(v){var c=new DataView(v),g;try{var m,P,w;if(c.getUint8(0)===255&&c.getUint8(1)===216)for(var _=c.byteLength,O=2;O+1<_;){if(c.getUint8(O)===255&&c.getUint8(O+1)===225){P=O;break}O+=1}if(P){var D=P+4,A=P+10;if(xb(c,D,4)==="Exif"){var T=c.getUint16(A);if(m=T===18761,(m||T===19789)&&c.getUint16(A+2,m)===42){var C=c.getUint32(A+4,m);C>=8&&(w=A+C)}}}if(w){var k=c.getUint16(w,m),ue,le;for(le=0;le<k;le+=1)if(ue=w+le*12+2,c.getUint16(ue,m)===274){ue+=8,g=c.getUint16(ue,m),c.setUint16(ue,1,m);break}}}catch{g=1}return g}n(Cb,"resetAndGetOrientation");function Tb(v){var c=0,g=1,m=1;switch(v){case 2:g=-1;break;case 3:c=-180;break;case 4:m=-1;break;case 5:c=90,m=-1;break;case 6:c=90;break;case 7:c=90,g=-1;break;case 8:c=-90;break}return{rotate:c,scaleX:g,scaleY:m}}n(Tb,"parseOrientation");var Ab={render:n(function(){this.initContainer(),this.initCanvas(),this.initCropBox(),this.renderCanvas(),this.cropped&&this.renderCropBox()},"render"),initContainer:n(function(){var c=this.element,g=this.options,m=this.container,P=this.cropper;je(P,xe),bi(c,xe);var w={width:Math.max(m.offsetWidth,Number(g.minContainerWidth)||200),height:Math.max(m.offsetHeight,Number(g.minContainerHeight)||100)};this.containerData=w,vi(P,{width:w.width,height:w.height}),je(c,xe),bi(P,xe)},"initContainer"),initCanvas:n(function(){var c=this.containerData,g=this.imageData,m=this.options.viewMode,P=Math.abs(g.rotate)%180===90,w=P?g.naturalHeight:g.naturalWidth,_=P?g.naturalWidth:g.naturalHeight,O=w/_,D=c.width,A=c.height;c.height*O>c.width?m===3?D=c.height*O:A=c.width/O:m===3?A=c.width/O:D=c.height*O;var T={aspectRatio:O,naturalWidth:w,naturalHeight:_,width:D,height:A};T.left=(c.width-D)/2,T.top=(c.height-A)/2,T.oldLeft=T.left,T.oldTop=T.top,this.canvasData=T,this.limited=m===1||m===2,this.limitCanvas(!0,!0),this.initialImageData=Se({},g),this.initialCanvasData=Se({},T)},"initCanvas"),limitCanvas:n(function(c,g){var m=this.options,P=this.containerData,w=this.canvasData,_=this.cropBoxData,O=m.viewMode,D=w.aspectRatio,A=this.cropped&&_;if(c){var T=Number(m.minCanvasWidth)||0,C=Number(m.minCanvasHeight)||0;O>1?(T=Math.max(T,P.width),C=Math.max(C,P.height),O===3&&(C*D>T?T=C*D:C=T/D)):O>0&&(T?T=Math.max(T,A?_.width:0):C?C=Math.max(C,A?_.height:0):A&&(T=_.width,C=_.height,C*D>T?T=C*D:C=T/D));var k=Gr({aspectRatio:D,width:T,height:C});T=k.width,C=k.height,w.minWidth=T,w.minHeight=C,w.maxWidth=1/0,w.maxHeight=1/0}if(g)if(O>(A?0:1)){var ue=P.width-w.width,le=P.height-w.height;w.minLeft=Math.min(0,ue),w.minTop=Math.min(0,le),w.maxLeft=Math.max(0,ue),w.maxTop=Math.max(0,le),A&&this.limited&&(w.minLeft=Math.min(_.left,_.left+(_.width-w.width)),w.minTop=Math.min(_.top,_.top+(_.height-w.height)),w.maxLeft=_.left,w.maxTop=_.top,O===2&&(w.width>=P.width&&(w.minLeft=Math.min(0,ue),w.maxLeft=Math.max(0,ue)),w.height>=P.height&&(w.minTop=Math.min(0,le),w.maxTop=Math.max(0,le))))}else w.minLeft=-w.width,w.minTop=-w.height,w.maxLeft=P.width,w.maxTop=P.height},"limitCanvas"),renderCanvas:n(function(c,g){var m=this.canvasData,P=this.imageData;if(g){var w=Pb({width:P.naturalWidth*Math.abs(P.scaleX||1),height:P.naturalHeight*Math.abs(P.scaleY||1),degree:P.rotate||0}),_=w.width,O=w.height,D=m.width*(_/m.naturalWidth),A=m.height*(O/m.naturalHeight);m.left-=(D-m.width)/2,m.top-=(A-m.height)/2,m.width=D,m.height=A,m.aspectRatio=_/O,m.naturalWidth=_,m.naturalHeight=O,this.limitCanvas(!0,!1)}(m.width>m.maxWidth||m.width<m.minWidth)&&(m.left=m.oldLeft),(m.height>m.maxHeight||m.height<m.minHeight)&&(m.top=m.oldTop),m.width=Math.min(Math.max(m.width,m.minWidth),m.maxWidth),m.height=Math.min(Math.max(m.height,m.minHeight),m.maxHeight),this.limitCanvas(!1,!0),m.left=Math.min(Math.max(m.left,m.minLeft),m.maxLeft),m.top=Math.min(Math.max(m.top,m.minTop),m.maxTop),m.oldLeft=m.left,m.oldTop=m.top,vi(this.canvas,Se({width:m.width,height:m.height},hn({translateX:m.left,translateY:m.top}))),this.renderImage(c),this.cropped&&this.limited&&this.limitCropBox(!0,!0)},"renderCanvas"),renderImage:n(function(c){var g=this.canvasData,m=this.imageData,P=m.naturalWidth*(g.width/g.naturalWidth),w=m.naturalHeight*(g.height/g.naturalHeight);Se(m,{width:P,height:w,left:(g.width-P)/2,top:(g.height-w)/2}),vi(this.image,Se({width:m.width,height:m.height},hn(Se({translateX:m.left,translateY:m.top},m)))),c&&this.output()},"renderImage"),initCropBox:n(function(){var c=this.options,g=this.canvasData,m=c.aspectRatio||c.initialAspectRatio,P=Number(c.autoCropArea)||.8,w={width:g.width,height:g.height};m&&(g.height*m>g.width?w.height=w.width/m:w.width=w.height*m),this.cropBoxData=w,this.limitCropBox(!0,!0),w.width=Math.min(Math.max(w.width,w.minWidth),w.maxWidth),w.height=Math.min(Math.max(w.height,w.minHeight),w.maxHeight),w.width=Math.max(w.minWidth,w.width*P),w.height=Math.max(w.minHeight,w.height*P),w.left=g.left+(g.width-w.width)/2,w.top=g.top+(g.height-w.height)/2,w.oldLeft=w.left,w.oldTop=w.top,this.initialCropBoxData=Se({},w)},"initCropBox"),limitCropBox:n(function(c,g){var m=this.options,P=this.containerData,w=this.canvasData,_=this.cropBoxData,O=this.limited,D=m.aspectRatio;if(c){var A=Number(m.minCropBoxWidth)||0,T=Number(m.minCropBoxHeight)||0,C=O?Math.min(P.width,w.width,w.width+w.left,P.width-w.left):P.width,k=O?Math.min(P.height,w.height,w.height+w.top,P.height-w.top):P.height;A=Math.min(A,P.width),T=Math.min(T,P.height),D&&(A&&T?T*D>A?T=A/D:A=T*D:A?T=A/D:T&&(A=T*D),k*D>C?k=C/D:C=k*D),_.minWidth=Math.min(A,C),_.minHeight=Math.min(T,k),_.maxWidth=C,_.maxHeight=k}g&&(O?(_.minLeft=Math.max(0,w.left),_.minTop=Math.max(0,w.top),_.maxLeft=Math.min(P.width,w.left+w.width)-_.width,_.maxTop=Math.min(P.height,w.top+w.height)-_.height):(_.minLeft=0,_.minTop=0,_.maxLeft=P.width-_.width,_.maxTop=P.height-_.height))},"limitCropBox"),renderCropBox:n(function(){var c=this.options,g=this.containerData,m=this.cropBoxData;(m.width>m.maxWidth||m.width<m.minWidth)&&(m.left=m.oldLeft),(m.height>m.maxHeight||m.height<m.minHeight)&&(m.top=m.oldTop),m.width=Math.min(Math.max(m.width,m.minWidth),m.maxWidth),m.height=Math.min(Math.max(m.height,m.minHeight),m.maxHeight),this.limitCropBox(!1,!0),m.left=Math.min(Math.max(m.left,m.minLeft),m.maxLeft),m.top=Math.min(Math.max(m.top,m.minTop),m.maxTop),m.oldLeft=m.left,m.oldTop=m.top,c.movable&&c.cropBoxMovable&&un(this.face,L,m.width>=g.width&&m.height>=g.height?G:U),vi(this.cropBox,Se({width:m.width,height:m.height},hn({translateX:m.left,translateY:m.top}))),this.cropped&&this.limited&&this.limitCanvas(!0,!0),this.disabled||this.output()},"renderCropBox"),output:n(function(){this.preview(),xo(this.element,ne,this.getData())},"output")},Rb={initPreview:n(function(){var c=this.element,g=this.crossOrigin,m=this.options.preview,P=g?this.crossOriginUrl:this.url,w=c.alt||"The image to preview",_=document.createElement("img");if(g&&(_.crossOrigin=g),_.src=P,_.alt=w,this.viewBox.appendChild(_),this.viewBoxImage=_,!!m){var O=m;typeof m=="string"?O=c.ownerDocument.querySelectorAll(m):m.querySelector&&(O=[m]),this.previews=O,Re(O,function(D){var A=document.createElement("img");un(D,Q,{width:D.offsetWidth,height:D.offsetHeight,html:D.innerHTML}),g&&(A.crossOrigin=g),A.src=P,A.alt=w,A.style.cssText='display:block;width:100%;height:auto;min-width:0!important;min-height:0!important;max-width:none!important;max-height:none!important;image-orientation:0deg!important;"',D.innerHTML="",D.appendChild(A)})}},"initPreview"),resetPreview:n(function(){Re(this.previews,function(c){var g=ph(c,Q);vi(c,{width:g.width,height:g.height}),c.innerHTML=g.html,vb(c,Q)})},"resetPreview"),preview:n(function(){var c=this.imageData,g=this.canvasData,m=this.cropBoxData,P=m.width,w=m.height,_=c.width,O=c.height,D=m.left-g.left-c.left,A=m.top-g.top-c.top;!this.cropped||this.disabled||(vi(this.viewBoxImage,Se({width:_,height:O},hn(Se({translateX:-D,translateY:-A},c)))),Re(this.previews,function(T){var C=ph(T,Q),k=C.width,ue=C.height,le=k,Ce=ue,fe=1;P&&(fe=k/P,Ce=w*fe),w&&Ce>ue&&(fe=ue/w,le=P*fe,Ce=ue),vi(T,{width:le,height:Ce}),vi(T.getElementsByTagName("img")[0],Se({width:_*fe,height:O*fe},hn(Se({translateX:-D*fe,translateY:-A*fe},c))))}))},"preview")},Ub={bind:n(function(){var c=this.element,g=this.options,m=this.cropper;St(g.cropstart)&&hi(c,Ee,g.cropstart),St(g.cropmove)&&hi(c,Fe,g.cropmove),St(g.cropend)&&hi(c,re,g.cropend),St(g.crop)&&hi(c,ne,g.crop),St(g.zoom)&&hi(c,ur,g.zoom),hi(m,Ge,this.onCropStart=this.cropStart.bind(this)),g.zoomable&&g.zoomOnWheel&&hi(m,qr,this.onWheel=this.wheel.bind(this),{passive:!1,capture:!0}),g.toggleDragModeOnDblclick&&hi(m,Ft,this.onDblclick=this.dblclick.bind(this)),hi(c.ownerDocument,lr,this.onCropMove=this.cropMove.bind(this)),hi(c.ownerDocument,So,this.onCropEnd=this.cropEnd.bind(this)),g.responsive&&hi(window,$r,this.onResize=this.resize.bind(this))},"bind"),unbind:n(function(){var c=this.element,g=this.options,m=this.cropper;St(g.cropstart)&&wi(c,Ee,g.cropstart),St(g.cropmove)&&wi(c,Fe,g.cropmove),St(g.cropend)&&wi(c,re,g.cropend),St(g.crop)&&wi(c,ne,g.crop),St(g.zoom)&&wi(c,ur,g.zoom),wi(m,Ge,this.onCropStart),g.zoomable&&g.zoomOnWheel&&wi(m,qr,this.onWheel,{passive:!1,capture:!0}),g.toggleDragModeOnDblclick&&wi(m,Ft,this.onDblclick),wi(c.ownerDocument,lr,this.onCropMove),wi(c.ownerDocument,So,this.onCropEnd),g.responsive&&wi(window,$r,this.onResize)},"unbind")},kb={resize:n(function(){if(!this.disabled){var c=this.options,g=this.container,m=this.containerData,P=g.offsetWidth/m.width;if(P!==1||g.offsetHeight!==m.height){var w,_;c.restore&&(w=this.getCanvasData(),_=this.getCropBoxData()),this.render(),c.restore&&(this.setCanvasData(Re(w,function(O,D){w[D]=O*P})),this.setCropBoxData(Re(_,function(O,D){_[D]=O*P})))}}},"resize"),dblclick:n(function(){this.disabled||this.options.dragMode===pe||this.setDragMode(Fl(this.dragBox,_e)?ye:X)},"dblclick"),wheel:n(function(c){var g=this,m=Number(this.options.wheelZoomRatio)||.1,P=1;this.disabled||(c.preventDefault(),!this.wheeling&&(this.wheeling=!0,setTimeout(function(){g.wheeling=!1},50),c.deltaY?P=c.deltaY>0?1:-1:c.wheelDelta?P=-c.wheelDelta/120:c.detail&&(P=c.detail>0?1:-1),this.zoom(-P*m,c)))},"wheel"),cropStart:n(function(c){var g=c.buttons,m=c.button;if(!(this.disabled||(c.type==="mousedown"||c.type==="pointerdown"&&c.pointerType==="mouse")&&(ie(g)&&g!==1||ie(m)&&m!==0||c.ctrlKey))){var P=this.options,w=this.pointers,_;c.changedTouches?Re(c.changedTouches,function(O){w[O.identifier]=El(O)}):w[c.pointerId||0]=El(c),Object.keys(w).length>1&&P.zoomable&&P.zoomOnTouch?_=J:_=ph(c.target,L),nt.test(_)&&xo(this.element,Ee,{originalEvent:c,action:_})!==!1&&(c.preventDefault(),this.action=_,this.cropping=!1,_===j&&(this.cropping=!0,je(this.dragBox,R)))}},"cropStart"),cropMove:n(function(c){var g=this.action;if(!(this.disabled||!g)){var m=this.pointers;c.preventDefault(),xo(this.element,Fe,{originalEvent:c,action:g})!==!1&&(c.changedTouches?Re(c.changedTouches,function(P){Se(m[P.identifier]||{},El(P,!0))}):Se(m[c.pointerId||0]||{},El(c,!0)),this.change(c))}},"cropMove"),cropEnd:n(function(c){if(!this.disabled){var g=this.action,m=this.pointers;c.changedTouches?Re(c.changedTouches,function(P){delete m[P.identifier]}):delete m[c.pointerId||0],g&&(c.preventDefault(),Object.keys(m).length||(this.action=""),this.cropping&&(this.cropping=!1,Wr(this.dragBox,R,this.cropped&&this.options.modal)),xo(this.element,re,{originalEvent:c,action:g}))}},"cropEnd")},Db={change:n(function(c){var g=this.options,m=this.canvasData,P=this.containerData,w=this.cropBoxData,_=this.pointers,O=this.action,D=g.aspectRatio,A=w.left,T=w.top,C=w.width,k=w.height,ue=A+C,le=T+k,Ce=0,fe=0,Ze=P.width,lt=P.height,Ke=!0,dr;!D&&c.shiftKey&&(D=C&&k?C/k:1),this.limited&&(Ce=w.minLeft,fe=w.minTop,Ze=Ce+Math.min(P.width,m.width,m.left+m.width),lt=fe+Math.min(P.height,m.height,m.top+m.height));var Wt=_[Object.keys(_)[0]],M={x:Wt.endX-Wt.startX,y:Wt.endY-Wt.startY},me=n(function(di){switch(di){case B:ue+M.x>Ze&&(M.x=Ze-ue);break;case z:A+M.x<Ce&&(M.x=Ce-A);break;case oe:T+M.y<fe&&(M.y=fe-T);break;case K:le+M.y>lt&&(M.y=lt-le);break}},"check");switch(O){case U:A+=M.x,T+=M.y;break;case B:if(M.x>=0&&(ue>=Ze||D&&(T<=fe||le>=lt))){Ke=!1;break}me(B),C+=M.x,C<0&&(O=z,C=-C,A-=C),D&&(k=C/D,T+=(w.height-k)/2);break;case oe:if(M.y<=0&&(T<=fe||D&&(A<=Ce||ue>=Ze))){Ke=!1;break}me(oe),k-=M.y,T+=M.y,k<0&&(O=K,k=-k,T-=k),D&&(C=k*D,A+=(w.width-C)/2);break;case z:if(M.x<=0&&(A<=Ce||D&&(T<=fe||le>=lt))){Ke=!1;break}me(z),C-=M.x,A+=M.x,C<0&&(O=B,C=-C,A-=C),D&&(k=C/D,T+=(w.height-k)/2);break;case K:if(M.y>=0&&(le>=lt||D&&(A<=Ce||ue>=Ze))){Ke=!1;break}me(K),k+=M.y,k<0&&(O=oe,k=-k,T-=k),D&&(C=k*D,A+=(w.width-C)/2);break;case Be:if(D){if(M.y<=0&&(T<=fe||ue>=Ze)){Ke=!1;break}me(oe),k-=M.y,T+=M.y,C=k*D}else me(oe),me(B),M.x>=0?ue<Ze?C+=M.x:M.y<=0&&T<=fe&&(Ke=!1):C+=M.x,M.y<=0?T>fe&&(k-=M.y,T+=M.y):(k-=M.y,T+=M.y);C<0&&k<0?(O=We,k=-k,C=-C,T-=k,A-=C):C<0?(O=Je,C=-C,A-=C):k<0&&(O=wt,k=-k,T-=k);break;case Je:if(D){if(M.y<=0&&(T<=fe||A<=Ce)){Ke=!1;break}me(oe),k-=M.y,T+=M.y,C=k*D,A+=w.width-C}else me(oe),me(z),M.x<=0?A>Ce?(C-=M.x,A+=M.x):M.y<=0&&T<=fe&&(Ke=!1):(C-=M.x,A+=M.x),M.y<=0?T>fe&&(k-=M.y,T+=M.y):(k-=M.y,T+=M.y);C<0&&k<0?(O=wt,k=-k,C=-C,T-=k,A-=C):C<0?(O=Be,C=-C,A-=C):k<0&&(O=We,k=-k,T-=k);break;case We:if(D){if(M.x<=0&&(A<=Ce||le>=lt)){Ke=!1;break}me(z),C-=M.x,A+=M.x,k=C/D}else me(K),me(z),M.x<=0?A>Ce?(C-=M.x,A+=M.x):M.y>=0&&le>=lt&&(Ke=!1):(C-=M.x,A+=M.x),M.y>=0?le<lt&&(k+=M.y):k+=M.y;C<0&&k<0?(O=Be,k=-k,C=-C,T-=k,A-=C):C<0?(O=wt,C=-C,A-=C):k<0&&(O=Je,k=-k,T-=k);break;case wt:if(D){if(M.x>=0&&(ue>=Ze||le>=lt)){Ke=!1;break}me(B),C+=M.x,k=C/D}else me(K),me(B),M.x>=0?ue<Ze?C+=M.x:M.y>=0&&le>=lt&&(Ke=!1):C+=M.x,M.y>=0?le<lt&&(k+=M.y):k+=M.y;C<0&&k<0?(O=Je,k=-k,C=-C,T-=k,A-=C):C<0?(O=We,C=-C,A-=C):k<0&&(O=Be,k=-k,T-=k);break;case G:this.move(M.x,M.y),Ke=!1;break;case J:this.zoom(wb(_),c),Ke=!1;break;case j:if(!M.x||!M.y){Ke=!1;break}dr=Gp(this.cropper),A=Wt.startX-dr.left,T=Wt.startY-dr.top,C=w.minWidth,k=w.minHeight,M.x>0?O=M.y>0?wt:Be:M.x<0&&(A-=C,O=M.y>0?We:Je),M.y<0&&(T-=k),this.cropped||(bi(this.cropBox,xe),this.cropped=!0,this.limited&&this.limitCropBox(!0,!0));break}Ke&&(w.width=C,w.height=k,w.left=A,w.top=T,this.action=O,this.renderCropBox()),Re(_,function(et){et.startX=et.endX,et.startY=et.endY})},"change")},Ib={crop:n(function(){return this.ready&&!this.cropped&&!this.disabled&&(this.cropped=!0,this.limitCropBox(!0,!0),this.options.modal&&je(this.dragBox,R),bi(this.cropBox,xe),this.setCropBoxData(this.initialCropBoxData)),this},"crop"),reset:n(function(){return this.ready&&!this.disabled&&(this.imageData=Se({},this.initialImageData),this.canvasData=Se({},this.initialCanvasData),this.cropBoxData=Se({},this.initialCropBoxData),this.renderCanvas(),this.cropped&&this.renderCropBox()),this},"reset"),clear:n(function(){return this.cropped&&!this.disabled&&(Se(this.cropBoxData,{left:0,top:0,width:0,height:0}),this.cropped=!1,this.renderCropBox(),this.limitCanvas(!0,!0),this.renderCanvas(),bi(this.dragBox,R),je(this.cropBox,xe)),this},"clear"),replace:n(function(c){var g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return!this.disabled&&c&&(this.isImg&&(this.element.src=c),g?(this.url=c,this.image.src=c,this.ready&&(this.viewBoxImage.src=c,Re(this.previews,function(m){m.getElementsByTagName("img")[0].src=c}))):(this.isImg&&(this.replaced=!0),this.options.data=null,this.uncreate(),this.load(c))),this},"replace"),enable:n(function(){return this.ready&&this.disabled&&(this.disabled=!1,bi(this.cropper,ze)),this},"enable"),disable:n(function(){return this.ready&&!this.disabled&&(this.disabled=!0,je(this.cropper,ze)),this},"disable"),destroy:n(function(){var c=this.element;return c[F]?(c[F]=void 0,this.isImg&&this.replaced&&(c.src=this.originalUrl),this.uncreate(),this):this},"destroy"),move:n(function(c){var g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:c,m=this.canvasData,P=m.left,w=m.top;return this.moveTo(Po(c)?c:P+Number(c),Po(g)?g:w+Number(g))},"move"),moveTo:n(function(c){var g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:c,m=this.canvasData,P=!1;return c=Number(c),g=Number(g),this.ready&&!this.disabled&&this.options.movable&&(ie(c)&&(m.left=c,P=!0),ie(g)&&(m.top=g,P=!0),P&&this.renderCanvas(!0)),this},"moveTo"),zoom:n(function(c,g){var m=this.canvasData;return c=Number(c),c<0?c=1/(1-c):c=1+c,this.zoomTo(m.width*c/m.naturalWidth,null,g)},"zoom"),zoomTo:n(function(c,g,m){var P=this.options,w=this.canvasData,_=w.width,O=w.height,D=w.naturalWidth,A=w.naturalHeight;if(c=Number(c),c>=0&&this.ready&&!this.disabled&&P.zoomable){var T=D*c,C=A*c;if(xo(this.element,ur,{ratio:c,oldRatio:_/D,originalEvent:m})===!1)return this;if(m){var k=this.pointers,ue=Gp(this.cropper),le=k&&Object.keys(k).length?Sb(k):{pageX:m.pageX,pageY:m.pageY};w.left-=(T-_)*((le.pageX-ue.left-w.left)/_),w.top-=(C-O)*((le.pageY-ue.top-w.top)/O)}else Vr(g)&&ie(g.x)&&ie(g.y)?(w.left-=(T-_)*((g.x-w.left)/_),w.top-=(C-O)*((g.y-w.top)/O)):(w.left-=(T-_)/2,w.top-=(C-O)/2);w.width=T,w.height=C,this.renderCanvas(!0)}return this},"zoomTo"),rotate:n(function(c){return this.rotateTo((this.imageData.rotate||0)+Number(c))},"rotate"),rotateTo:n(function(c){return c=Number(c),ie(c)&&this.ready&&!this.disabled&&this.options.rotatable&&(this.imageData.rotate=c%360,this.renderCanvas(!0,!0)),this},"rotateTo"),scaleX:n(function(c){var g=this.imageData.scaleY;return this.scale(c,ie(g)?g:1)},"scaleX"),scaleY:n(function(c){var g=this.imageData.scaleX;return this.scale(ie(g)?g:1,c)},"scaleY"),scale:n(function(c){var g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:c,m=this.imageData,P=!1;return c=Number(c),g=Number(g),this.ready&&!this.disabled&&this.options.scalable&&(ie(c)&&(m.scaleX=c,P=!0),ie(g)&&(m.scaleY=g,P=!0),P&&this.renderCanvas(!0,!0)),this},"scale"),getData:n(function(){var c=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,g=this.options,m=this.imageData,P=this.canvasData,w=this.cropBoxData,_;if(this.ready&&this.cropped){_={x:w.left-P.left,y:w.top-P.top,width:w.width,height:w.height};var O=m.width/m.naturalWidth;if(Re(_,function(T,C){_[C]=T/O}),c){var D=Math.round(_.y+_.height),A=Math.round(_.x+_.width);_.x=Math.round(_.x),_.y=Math.round(_.y),_.width=A-_.x,_.height=D-_.y}}else _={x:0,y:0,width:0,height:0};return g.rotatable&&(_.rotate=m.rotate||0),g.scalable&&(_.scaleX=m.scaleX||1,_.scaleY=m.scaleY||1),_},"getData"),setData:n(function(c){var g=this.options,m=this.imageData,P=this.canvasData,w={};if(this.ready&&!this.disabled&&Vr(c)){var _=!1;g.rotatable&&ie(c.rotate)&&c.rotate!==m.rotate&&(m.rotate=c.rotate,_=!0),g.scalable&&(ie(c.scaleX)&&c.scaleX!==m.scaleX&&(m.scaleX=c.scaleX,_=!0),ie(c.scaleY)&&c.scaleY!==m.scaleY&&(m.scaleY=c.scaleY,_=!0)),_&&this.renderCanvas(!0,!0);var O=m.width/m.naturalWidth;ie(c.x)&&(w.left=c.x*O+P.left),ie(c.y)&&(w.top=c.y*O+P.top),ie(c.width)&&(w.width=c.width*O),ie(c.height)&&(w.height=c.height*O),this.setCropBoxData(w)}return this},"setData"),getContainerData:n(function(){return this.ready?Se({},this.containerData):{}},"getContainerData"),getImageData:n(function(){return this.sized?Se({},this.imageData):{}},"getImageData"),getCanvasData:n(function(){var c=this.canvasData,g={};return this.ready&&Re(["left","top","width","height","naturalWidth","naturalHeight"],function(m){g[m]=c[m]}),g},"getCanvasData"),setCanvasData:n(function(c){var g=this.canvasData,m=g.aspectRatio;return this.ready&&!this.disabled&&Vr(c)&&(ie(c.left)&&(g.left=c.left),ie(c.top)&&(g.top=c.top),ie(c.width)?(g.width=c.width,g.height=c.width/m):ie(c.height)&&(g.height=c.height,g.width=c.height*m),this.renderCanvas(!0)),this},"setCanvasData"),getCropBoxData:n(function(){var c=this.cropBoxData,g;return this.ready&&this.cropped&&(g={left:c.left,top:c.top,width:c.width,height:c.height}),g||{}},"getCropBoxData"),setCropBoxData:n(function(c){var g=this.cropBoxData,m=this.options.aspectRatio,P,w;return this.ready&&this.cropped&&!this.disabled&&Vr(c)&&(ie(c.left)&&(g.left=c.left),ie(c.top)&&(g.top=c.top),ie(c.width)&&c.width!==g.width&&(P=!0,g.width=c.width),ie(c.height)&&c.height!==g.height&&(w=!0,g.height=c.height),m&&(P?g.height=g.width/m:w&&(g.width=g.height*m)),this.renderCropBox()),this},"setCropBoxData"),getCroppedCanvas:n(function(){var c=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!this.ready||!window.HTMLCanvasElement)return null;var g=this.canvasData,m=_b(this.image,this.imageData,g,c);if(!this.cropped)return m;var P=this.getData(),w=P.x,_=P.y,O=P.width,D=P.height,A=m.width/Math.floor(g.naturalWidth);A!==1&&(w*=A,_*=A,O*=A,D*=A);var T=O/D,C=Gr({aspectRatio:T,width:c.maxWidth||1/0,height:c.maxHeight||1/0}),k=Gr({aspectRatio:T,width:c.minWidth||0,height:c.minHeight||0},"cover"),ue=Gr({aspectRatio:T,width:c.width||(A!==1?m.width:O),height:c.height||(A!==1?m.height:D)}),le=ue.width,Ce=ue.height;le=Math.min(C.width,Math.max(k.width,le)),Ce=Math.min(C.height,Math.max(k.height,Ce));var fe=document.createElement("canvas"),Ze=fe.getContext("2d");fe.width=Mi(le),fe.height=Mi(Ce),Ze.fillStyle=c.fillColor||"transparent",Ze.fillRect(0,0,le,Ce);var lt=c.imageSmoothingEnabled,Ke=lt===void 0?!0:lt,dr=c.imageSmoothingQuality;Ze.imageSmoothingEnabled=Ke,dr&&(Ze.imageSmoothingQuality=dr);var Wt=m.width,M=m.height,me=w,et=_,di,cr,ps,fs,Kr,Li;me<=-O||me>Wt?(me=0,di=0,ps=0,Kr=0):me<=0?(ps=-me,me=0,di=Math.min(Wt,O+me),Kr=di):me<=Wt&&(ps=0,di=Math.min(O,Wt-me),Kr=di),di<=0||et<=-D||et>M?(et=0,cr=0,fs=0,Li=0):et<=0?(fs=-et,et=0,cr=Math.min(M,D+et),Li=cr):et<=M&&(fs=0,cr=Math.min(D,M-et),Li=cr);var jt=[me,et,di,cr];if(Kr>0&&Li>0){var ms=le/O;jt.push(ps*ms,fs*ms,Kr*ms,Li*ms)}return Ze.drawImage.apply(Ze,[m].concat(l(jt.map(function(Ol){return Math.floor(Mi(Ol))})))),fe},"getCroppedCanvas"),setAspectRatio:n(function(c){var g=this.options;return!this.disabled&&!Po(c)&&(g.aspectRatio=Math.max(0,c)||NaN,this.ready&&(this.initCropBox(),this.cropped&&this.renderCropBox())),this},"setAspectRatio"),setDragMode:n(function(c){var g=this.options,m=this.dragBox,P=this.face;if(this.ready&&!this.disabled){var w=c===X,_=g.movable&&c===ye;c=w||_?c:pe,g.dragMode=c,un(m,L,c),Wr(m,_e,w),Wr(m,I,_),g.cropBoxMovable||(un(P,L,c),Wr(P,_e,w),Wr(P,I,_))}return this},"setDragMode")},Nb=S.Cropper,Qp=function(){function v(c){var g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(e(this,v),!c||!Sl.test(c.tagName))throw new Error("The first argument is required and must be an <img> or <canvas> element.");this.element=c,this.options=Se({},nn,Vr(g)&&g),this.cropped=!1,this.disabled=!1,this.pointers={},this.ready=!1,this.reloading=!1,this.replaced=!1,this.sized=!1,this.sizing=!1,this.init()}return n(v,"Cropper"),r(v,[{key:"init",value:n(function(){var g=this.element,m=g.tagName.toLowerCase(),P;if(!g[F]){if(g[F]=this,m==="img"){if(this.isImg=!0,P=g.getAttribute("src")||"",this.originalUrl=P,!P)return;P=g.src}else m==="canvas"&&window.HTMLCanvasElement&&(P=g.toDataURL());this.load(P)}},"init")},{key:"load",value:n(function(g){var m=this;if(g){this.url=g,this.imageData={};var P=this.element,w=this.options;if(!w.rotatable&&!w.scalable&&(w.checkOrientation=!1),!w.checkOrientation||!window.ArrayBuffer){this.clone();return}if(at.test(g)){wl.test(g)?this.read(Eb(g)):this.clone();return}var _=new XMLHttpRequest,O=this.clone.bind(this);this.reloading=!0,this.xhr=_,_.onabort=O,_.onerror=O,_.ontimeout=O,_.onprogress=function(){_.getResponseHeader("content-type")!==hr&&_.abort()},_.onload=function(){m.read(_.response)},_.onloadend=function(){m.reloading=!1,m.xhr=null},w.checkCrossOrigin&&Kp(g)&&P.crossOrigin&&(g=Xp(g)),_.open("GET",g),_.responseType="arraybuffer",_.withCredentials=P.crossOrigin==="use-credentials",_.send()}},"load")},{key:"read",value:n(function(g){var m=this.options,P=this.imageData,w=Cb(g),_=0,O=1,D=1;if(w>1){this.url=Ob(g,hr);var A=Tb(w);_=A.rotate,O=A.scaleX,D=A.scaleY}m.rotatable&&(P.rotate=_),m.scalable&&(P.scaleX=O,P.scaleY=D),this.clone()},"read")},{key:"clone",value:n(function(){var g=this.element,m=this.url,P=g.crossOrigin,w=m;this.options.checkCrossOrigin&&Kp(m)&&(P||(P="anonymous"),w=Xp(m)),this.crossOrigin=P,this.crossOriginUrl=w;var _=document.createElement("img");P&&(_.crossOrigin=P),_.src=w||m,_.alt=g.alt||"The image to crop",this.image=_,_.onload=this.start.bind(this),_.onerror=this.stop.bind(this),je(_,ui),g.parentNode.insertBefore(_,g.nextSibling)},"clone")},{key:"start",value:n(function(){var g=this,m=this.image;m.onload=null,m.onerror=null,this.sizing=!0;var P=S.navigator&&/(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(S.navigator.userAgent),w=n(function(A,T){Se(g.imageData,{naturalWidth:A,naturalHeight:T,aspectRatio:A/T}),g.sizing=!1,g.sized=!0,g.build()},"done");if(m.naturalWidth&&!P){w(m.naturalWidth,m.naturalHeight);return}var _=document.createElement("img"),O=document.body||document.documentElement;this.sizingImage=_,_.onload=function(){w(_.width,_.height),P||O.removeChild(_)},_.src=m.src,P||(_.style.cssText="left:0;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;opacity:0;position:absolute;top:0;z-index:-1;",O.appendChild(_))},"start")},{key:"stop",value:n(function(){var g=this.image;g.onload=null,g.onerror=null,g.parentNode.removeChild(g),this.image=null},"stop")},{key:"build",value:n(function(){if(!(!this.sized||this.ready)){var g=this.element,m=this.options,P=this.image,w=g.parentNode,_=document.createElement("div");_.innerHTML=Pl;var O=_.querySelector(".".concat(F,"-container")),D=O.querySelector(".".concat(F,"-canvas")),A=O.querySelector(".".concat(F,"-drag-box")),T=O.querySelector(".".concat(F,"-crop-box")),C=T.querySelector(".".concat(F,"-face"));this.container=w,this.cropper=O,this.canvas=D,this.dragBox=A,this.cropBox=T,this.viewBox=O.querySelector(".".concat(F,"-view-box")),this.face=C,D.appendChild(P),je(g,xe),w.insertBefore(O,g.nextSibling),this.isImg||bi(P,ui),this.initPreview(),this.bind(),m.initialAspectRatio=Math.max(0,m.initialAspectRatio)||NaN,m.aspectRatio=Math.max(0,m.aspectRatio)||NaN,m.viewMode=Math.max(0,Math.min(3,Math.round(m.viewMode)))||0,je(T,xe),m.guides||je(T.getElementsByClassName("".concat(F,"-dashed")),xe),m.center||je(T.getElementsByClassName("".concat(F,"-center")),xe),m.background&&je(O,"".concat(F,"-bg")),m.highlight||je(C,V),m.cropBoxMovable&&(je(C,I),un(C,L,U)),m.cropBoxResizable||(je(T.getElementsByClassName("".concat(F,"-line")),xe),je(T.getElementsByClassName("".concat(F,"-point")),xe)),this.render(),this.ready=!0,this.setDragMode(m.dragMode),m.autoCrop&&this.crop(),this.setData(m.data),St(m.ready)&&hi(g,Hr,m.ready,{once:!0}),xo(g,Hr)}},"build")},{key:"unbuild",value:n(function(){this.ready&&(this.ready=!1,this.unbind(),this.resetPreview(),this.cropper.parentNode.removeChild(this.cropper),bi(this.element,xe))},"unbuild")},{key:"uncreate",value:n(function(){this.ready?(this.unbuild(),this.ready=!1,this.cropped=!1):this.sizing?(this.sizingImage.onload=null,this.sizing=!1,this.sized=!1):this.reloading?(this.xhr.onabort=null,this.xhr.abort()):this.image&&this.stop()},"uncreate")}],[{key:"noConflict",value:n(function(){return window.Cropper=Nb,v},"noConflict")},{key:"setDefaults",value:n(function(g){Se(nn,Vr(g)&&g)},"setDefaults")}]),v}();return Se(Qp.prototype,Ab,Rb,Ub,kb,Db,Ib),Qp})});var sv=he((uD,Bu)=>{"use strict";Bu.exports=cc;Bu.exports.isMobile=cc;Bu.exports.default=cc;var wP=/(android|bb\d+|meego).+mobile|armv7l|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series[46]0|samsungbrowser|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i,SP=/CrOS/,PP=/android|ipad|playbook|silk/i;function cc(i){i||(i={});let e=i.ua;if(!e&&typeof navigator<"u"&&(e=navigator.userAgent),e&&e.headers&&typeof e.headers["user-agent"]=="string"&&(e=e.headers["user-agent"]),typeof e!="string")return!1;let t=wP.test(e)&&!SP.test(e)||!!i.tablet&&PP.test(e);return!t&&i.tablet&&i.featureDetect&&navigator&&navigator.maxTouchPoints>1&&e.indexOf("Macintosh")!==-1&&e.indexOf("Safari")!==-1&&(t=!0),t}n(cc,"isMobile")});var Kv=he((c9,Gv)=>{"use strict";Gv.exports=n(function(e,t){if(t=t.split(":")[0],e=+e,!e)return!1;switch(t){case"http":case"ws":return e!==80;case"https":case"wss":return e!==443;case"ftp":return e!==21;case"gopher":return e!==70;case"file":return!1}return e!==0},"required")});var Qv=he(Vc=>{"use strict";var U_=Object.prototype.hasOwnProperty,k_;function Xv(i){try{return decodeURIComponent(i.replace(/\+/g," "))}catch{return null}}n(Xv,"decode");function Yv(i){try{return encodeURIComponent(i)}catch{return null}}n(Yv,"encode");function D_(i){for(var e=/([^=?#&]+)=?([^&]*)/g,t={},r;r=e.exec(i);){var s=Xv(r[1]),o=Xv(r[2]);s===null||o===null||s in t||(t[s]=o)}return t}n(D_,"querystring");function I_(i,e){e=e||"";var t=[],r,s;typeof e!="string"&&(e="?");for(s in i)if(U_.call(i,s)){if(r=i[s],!r&&(r===null||r===k_||isNaN(r))&&(r=""),s=Yv(s),r=Yv(r),s===null||r===null)continue;t.push(s+"="+r)}return t.length?e+t.join("&"):""}n(I_,"querystringify");Vc.stringify=I_;Vc.parse=D_});var o0=he((g9,s0)=>{"use strict";var Zv=Kv(),Yu=Qv(),N_=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,e0=/[\n\r\t]/g,M_=/^[A-Za-z][A-Za-z0-9+-.]*:\/\//,t0=/:\d+$/,L_=/^([a-z][a-z0-9.+-]*:)?(\/\/)?([\\/]+)?([\S\s]*)/i,B_=/^[a-zA-Z]:/;function Gc(i){return(i||"").toString().replace(N_,"")}n(Gc,"trimLeft");var Wc=[["#","hash"],["?","query"],n(function(e,t){return rr(t.protocol)?e.replace(/\\/g,"/"):e},"sanitize"),["/","pathname"],["@","auth",1],[NaN,"host",void 0,1,1],[/:(\d*)$/,"port",void 0,1],[NaN,"hostname",void 0,1,1]],Jv={hash:1,query:1};function i0(i){var e;typeof window<"u"?e=window:typeof global<"u"?e=global:typeof self<"u"?e=self:e={};var t=e.location||{};i=i||t;var r={},s=typeof i,o;if(i.protocol==="blob:")r=new sr(unescape(i.pathname),{});else if(s==="string"){r=new sr(i,{});for(o in Jv)delete r[o]}else if(s==="object"){for(o in i)o in Jv||(r[o]=i[o]);r.slashes===void 0&&(r.slashes=M_.test(i.href))}return r}n(i0,"lolcation");function rr(i){return i==="file:"||i==="ftp:"||i==="http:"||i==="https:"||i==="ws:"||i==="wss:"}n(rr,"isSpecial");function r0(i,e){i=Gc(i),i=i.replace(e0,""),e=e||{};var t=L_.exec(i),r=t[1]?t[1].toLowerCase():"",s=!!t[2],o=!!t[3],a=0,l;return s?o?(l=t[2]+t[3]+t[4],a=t[2].length+t[3].length):(l=t[2]+t[4],a=t[2].length):o?(l=t[3]+t[4],a=t[3].length):l=t[4],r==="file:"?a>=2&&(l=l.slice(2)):rr(r)?l=t[4]:r?s&&(l=l.slice(2)):a>=2&&rr(e.protocol)&&(l=t[4]),{protocol:r,slashes:s||rr(r),slashesCount:a,rest:l}}n(r0,"extractProtocol");function z_(i,e){if(i==="")return e;for(var t=(e||"/").split("/").slice(0,-1).concat(i.split("/")),r=t.length,s=t[r-1],o=!1,a=0;r--;)t[r]==="."?t.splice(r,1):t[r]===".."?(t.splice(r,1),a++):a&&(r===0&&(o=!0),t.splice(r,1),a--);return o&&t.unshift(""),(s==="."||s==="..")&&t.push(""),t.join("/")}n(z_,"resolve");function sr(i,e,t){if(i=Gc(i),i=i.replace(e0,""),!(this instanceof sr))return new sr(i,e,t);var r,s,o,a,l,h,p=Wc.slice(),d=typeof e,f=this,y=0;for(d!=="object"&&d!=="string"&&(t=e,e=null),t&&typeof t!="function"&&(t=Yu.parse),e=i0(e),s=r0(i||"",e),r=!s.protocol&&!s.slashes,f.slashes=s.slashes||r&&e.slashes,f.protocol=s.protocol||e.protocol||"",i=s.rest,(s.protocol==="file:"&&(s.slashesCount!==2||B_.test(i))||!s.slashes&&(s.protocol||s.slashesCount<2||!rr(f.protocol)))&&(p[3]=[/(.*)/,"pathname"]);y<p.length;y++){if(a=p[y],typeof a=="function"){i=a(i,f);continue}o=a[0],h=a[1],o!==o?f[h]=i:typeof o=="string"?(l=o==="@"?i.lastIndexOf(o):i.indexOf(o),~l&&(typeof a[2]=="number"?(f[h]=i.slice(0,l),i=i.slice(l+a[2])):(f[h]=i.slice(l),i=i.slice(0,l)))):(l=o.exec(i))&&(f[h]=l[1],i=i.slice(0,l.index)),f[h]=f[h]||r&&a[3]&&e[h]||"",a[4]&&(f[h]=f[h].toLowerCase())}t&&(f.query=t(f.query)),r&&e.slashes&&f.pathname.charAt(0)!=="/"&&(f.pathname!==""||e.pathname!=="")&&(f.pathname=z_(f.pathname,e.pathname)),f.pathname.charAt(0)!=="/"&&rr(f.protocol)&&(f.pathname="/"+f.pathname),Zv(f.port,f.protocol)||(f.host=f.hostname,f.port=""),f.username=f.password="",f.auth&&(l=f.auth.indexOf(":"),~l?(f.username=f.auth.slice(0,l),f.username=encodeURIComponent(decodeURIComponent(f.username)),f.password=f.auth.slice(l+1),f.password=encodeURIComponent(decodeURIComponent(f.password))):f.username=encodeURIComponent(decodeURIComponent(f.auth)),f.auth=f.password?f.username+":"+f.password:f.username),f.origin=f.protocol!=="file:"&&rr(f.protocol)&&f.host?f.protocol+"//"+f.host:"null",f.href=f.toString()}n(sr,"Url");function j_(i,e,t){var r=this;switch(i){case"query":typeof e=="string"&&e.length&&(e=(t||Yu.parse)(e)),r[i]=e;break;case"port":r[i]=e,Zv(e,r.protocol)?e&&(r.host=r.hostname+":"+e):(r.host=r.hostname,r[i]="");break;case"hostname":r[i]=e,r.port&&(e+=":"+r.port),r.host=e;break;case"host":r[i]=e,t0.test(e)?(e=e.split(":"),r.port=e.pop(),r.hostname=e.join(":")):(r.hostname=e,r.port="");break;case"protocol":r.protocol=e.toLowerCase(),r.slashes=!t;break;case"pathname":case"hash":if(e){var s=i==="pathname"?"/":"#";r[i]=e.charAt(0)!==s?s+e:e}else r[i]=e;break;case"username":case"password":r[i]=encodeURIComponent(e);break;case"auth":var o=e.indexOf(":");~o?(r.username=e.slice(0,o),r.username=encodeURIComponent(decodeURIComponent(r.username)),r.password=e.slice(o+1),r.password=encodeURIComponent(decodeURIComponent(r.password))):r.username=encodeURIComponent(decodeURIComponent(e))}for(var a=0;a<Wc.length;a++){var l=Wc[a];l[4]&&(r[l[1]]=r[l[1]].toLowerCase())}return r.auth=r.password?r.username+":"+r.password:r.username,r.origin=r.protocol!=="file:"&&rr(r.protocol)&&r.host?r.protocol+"//"+r.host:"null",r.href=r.toString(),r}n(j_,"set");function H_(i){(!i||typeof i!="function")&&(i=Yu.stringify);var e,t=this,r=t.host,s=t.protocol;s&&s.charAt(s.length-1)!==":"&&(s+=":");var o=s+(t.protocol&&t.slashes||rr(t.protocol)?"//":"");return t.username?(o+=t.username,t.password&&(o+=":"+t.password),o+="@"):t.password?(o+=":"+t.password,o+="@"):t.protocol!=="file:"&&rr(t.protocol)&&!r&&t.pathname!=="/"&&(o+="@"),(r[r.length-1]===":"||t0.test(t.hostname)&&!t.port)&&(r+=":"),o+=r+t.pathname,e=typeof t.query=="object"?i(t.query):t.query,e&&(o+=e.charAt(0)!=="?"?"?"+e:e),t.hash&&(o+=t.hash),o}n(H_,"toString");sr.prototype={set:j_,toString:H_};sr.extractProtocol=r0;sr.location=i0;sr.trimLeft=Gc;sr.qs=Yu;s0.exports=sr});var cp=he((CI,dp)=>{typeof dp<"u"&&(dp.exports=ni);function ni(i){if(i)return j5(i)}n(ni,"Emitter");function j5(i){for(var e in ni.prototype)i[e]=ni.prototype[e];return i}n(j5,"mixin");ni.prototype.on=ni.prototype.addEventListener=function(i,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+i]=this._callbacks["$"+i]||[]).push(e),this};ni.prototype.once=function(i,e){function t(){this.off(i,t),e.apply(this,arguments)}return n(t,"on"),t.fn=e,this.on(i,t),this};ni.prototype.off=ni.prototype.removeListener=ni.prototype.removeAllListeners=ni.prototype.removeEventListener=function(i,e){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var t=this._callbacks["$"+i];if(!t)return this;if(arguments.length==1)return delete this._callbacks["$"+i],this;for(var r,s=0;s<t.length;s++)if(r=t[s],r===e||r.fn===e){t.splice(s,1);break}return t.length===0&&delete this._callbacks["$"+i],this};ni.prototype.emit=function(i){this._callbacks=this._callbacks||{};for(var e=new Array(arguments.length-1),t=this._callbacks["$"+i],r=1;r<arguments.length;r++)e[r-1]=arguments[r];if(t){t=t.slice(0);for(var r=0,s=t.length;r<s;++r)t[r].apply(this,e)}return this};ni.prototype.listeners=function(i){return this._callbacks=this._callbacks||{},this._callbacks["$"+i]||[]};ni.prototype.hasListeners=function(i){return!!this.listeners(i).length}});var J0=he((jp,Hp)=>{(function(i,e){typeof jp=="object"&&typeof Hp<"u"?Hp.exports=e():typeof define=="function"&&define.amd?define(e):(i=typeof globalThis<"u"?globalThis:i||self,i.Compressor=e())})(jp,function(){"use strict";function i(V,R){var I=Object.keys(V);if(Object.getOwnPropertySymbols){var L=Object.getOwnPropertySymbols(V);R&&(L=L.filter(function(Q){return Object.getOwnPropertyDescriptor(V,Q).enumerable})),I.push.apply(I,L)}return I}n(i,"ownKeys");function e(V){for(var R=1;R<arguments.length;R++){var I=arguments[R]!=null?arguments[R]:{};R%2?i(Object(I),!0).forEach(function(L){o(V,L,I[L])}):Object.getOwnPropertyDescriptors?Object.defineProperties(V,Object.getOwnPropertyDescriptors(I)):i(Object(I)).forEach(function(L){Object.defineProperty(V,L,Object.getOwnPropertyDescriptor(I,L))})}return V}n(e,"_objectSpread2");function t(V,R){if(!(V instanceof R))throw new TypeError("Cannot call a class as a function")}n(t,"_classCallCheck");function r(V,R){for(var I=0;I<R.length;I++){var L=R[I];L.enumerable=L.enumerable||!1,L.configurable=!0,"value"in L&&(L.writable=!0),Object.defineProperty(V,L.key,L)}}n(r,"_defineProperties");function s(V,R,I){return R&&r(V.prototype,R),I&&r(V,I),V}n(s,"_createClass");function o(V,R,I){return R in V?Object.defineProperty(V,R,{value:I,enumerable:!0,configurable:!0,writable:!0}):V[R]=I,V}n(o,"_defineProperty");function a(){return a=Object.assign||function(V){for(var R=1;R<arguments.length;R++){var I=arguments[R];for(var L in I)Object.prototype.hasOwnProperty.call(I,L)&&(V[L]=I[L])}return V},a.apply(this,arguments)}n(a,"_extends");var l={exports:{}};(function(V){typeof window>"u"||function(R){var I=R.HTMLCanvasElement&&R.HTMLCanvasElement.prototype,L=R.Blob&&function(){try{return!!new Blob}catch{return!1}}(),Q=L&&R.Uint8Array&&function(){try{return new Blob([new Uint8Array(100)]).size===100}catch{return!1}}(),X=R.BlobBuilder||R.WebKitBlobBuilder||R.MozBlobBuilder||R.MSBlobBuilder,ye=/^data:((.*?)(;charset=.*?)?)(;base64)?,/,pe=(L||X)&&R.atob&&R.ArrayBuffer&&R.Uint8Array&&function(ne){var re,Fe,Ee,Ft,Et,te,Ot,Ge,lr;if(re=ne.match(ye),!re)throw new Error("invalid data URI");for(Fe=re[2]?re[1]:"text/plain"+(re[3]||";charset=US-ASCII"),Ee=!!re[4],Ft=ne.slice(re[0].length),Ee?Et=atob(Ft):Et=decodeURIComponent(Ft),te=new ArrayBuffer(Et.length),Ot=new Uint8Array(te),Ge=0;Ge<Et.length;Ge+=1)Ot[Ge]=Et.charCodeAt(Ge);return L?new Blob([Q?Ot:te],{type:Fe}):(lr=new X,lr.append(te),lr.getBlob(Fe))};R.HTMLCanvasElement&&!I.toBlob&&(I.mozGetAsFile?I.toBlob=function(ne,re,Fe){var Ee=this;setTimeout(function(){Fe&&I.toDataURL&&pe?ne(pe(Ee.toDataURL(re,Fe))):ne(Ee.mozGetAsFile("blob",re))})}:I.toDataURL&&pe&&(I.msToBlob?I.toBlob=function(ne,re,Fe){var Ee=this;setTimeout(function(){(re&&re!=="image/png"||Fe)&&I.toDataURL&&pe?ne(pe(Ee.toDataURL(re,Fe))):ne(Ee.msToBlob(re))})}:I.toBlob=function(ne,re,Fe){var Ee=this;setTimeout(function(){ne(pe(Ee.toDataURL(re,Fe)))})})),V.exports?V.exports=pe:R.dataURLtoBlob=pe}(window)})(l);var h=l.exports,p=n(function(R){return typeof Blob>"u"?!1:R instanceof Blob||Object.prototype.toString.call(R)==="[object Blob]"},"isBlob"),d={strict:!0,checkOrientation:!0,maxWidth:1/0,maxHeight:1/0,minWidth:0,minHeight:0,width:void 0,height:void 0,resize:"none",quality:.8,mimeType:"auto",convertTypes:["image/png"],convertSize:5e6,beforeDraw:null,drew:null,success:null,error:null},f=typeof window<"u"&&typeof window.document<"u",y=f?window:{},b=n(function(R){return R>0&&R<1/0},"isPositiveNumber"),S=Array.prototype.slice;function E(V){return Array.from?Array.from(V):S.call(V)}n(E,"toArray");var x=/^image\/.+$/;function F(V){return x.test(V)}n(F,"isImageType");function U(V){var R=F(V)?V.substr(6):"";return R==="jpeg"&&(R="jpg"),".".concat(R)}n(U,"imageTypeToExtension");var j=String.fromCharCode;function G(V,R,I){var L="",Q;for(I+=R,Q=R;Q<I;Q+=1)L+=j(V.getUint8(Q));return L}n(G,"getStringFromCharCode");var J=y.btoa;function B(V,R){for(var I=[],L=8192,Q=new Uint8Array(V);Q.length>0;)I.push(j.apply(null,E(Q.subarray(0,L)))),Q=Q.subarray(L);return"data:".concat(R,";base64,").concat(J(I.join("")))}n(B,"arrayBufferToDataURL");function z(V){var R=new DataView(V),I;try{var L,Q,X;if(R.getUint8(0)===255&&R.getUint8(1)===216)for(var ye=R.byteLength,pe=2;pe+1<ye;){if(R.getUint8(pe)===255&&R.getUint8(pe+1)===225){Q=pe;break}pe+=1}if(Q){var ne=Q+4,re=Q+10;if(G(R,ne,4)==="Exif"){var Fe=R.getUint16(re);if(L=Fe===18761,(L||Fe===19789)&&R.getUint16(re+2,L)===42){var Ee=R.getUint32(re+4,L);Ee>=8&&(X=re+Ee)}}}if(X){var Ft=R.getUint16(X,L),Et,te;for(te=0;te<Ft;te+=1)if(Et=X+te*12+2,R.getUint16(Et,L)===274){Et+=8,I=R.getUint16(Et,L),R.setUint16(Et,1,L);break}}}catch{I=1}return I}n(z,"resetAndGetOrientation");function K(V){var R=0,I=1,L=1;switch(V){case 2:I=-1;break;case 3:R=-180;break;case 4:L=-1;break;case 5:R=90,L=-1;break;case 6:R=90;break;case 7:R=90,I=-1;break;case 8:R=-90;break}return{rotate:R,scaleX:I,scaleY:L}}n(K,"parseOrientation");var oe=/\.\d*(?:0|9){12}\d*$/;function Be(V){var R=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1e11;return oe.test(V)?Math.round(V*R)/R:V}n(Be,"normalizeDecimalNumber");function Je(V){var R=V.aspectRatio,I=V.height,L=V.width,Q=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"none",X=b(L),ye=b(I);if(X&&ye){var pe=I*R;(Q==="contain"||Q==="none")&&pe>L||Q==="cover"&&pe<L?I=L/R:L=I*R}else X?I=L/R:ye&&(L=I*R);return{width:L,height:I}}n(Je,"getAdjustedSizes");var wt=y.ArrayBuffer,We=y.FileReader,_e=y.URL||y.webkitURL,ze=/\.\w+$/,xe=y.Compressor,ui=function(){function V(R,I){t(this,V),this.file=R,this.image=new Image,this.options=e(e({},d),I),this.aborted=!1,this.result=null,this.init()}return n(V,"Compressor"),s(V,[{key:"init",value:n(function(){var I=this,L=this.file,Q=this.options;if(!p(L)){this.fail(new Error("The first argument must be a File or Blob object."));return}var X=L.type;if(!F(X)){this.fail(new Error("The first argument must be an image File or Blob object."));return}if(!_e||!We){this.fail(new Error("The current browser does not support image compression."));return}if(wt||(Q.checkOrientation=!1),_e&&!Q.checkOrientation)this.load({url:_e.createObjectURL(L)});else{var ye=new We,pe=Q.checkOrientation&&X==="image/jpeg";this.reader=ye,ye.onload=function(ne){var re=ne.target,Fe=re.result,Ee={};if(pe){var Ft=z(Fe);Ft>1||!_e?(Ee.url=B(Fe,X),Ft>1&&a(Ee,K(Ft))):Ee.url=_e.createObjectURL(L)}else Ee.url=Fe;I.load(Ee)},ye.onabort=function(){I.fail(new Error("Aborted to read the image with FileReader."))},ye.onerror=function(){I.fail(new Error("Failed to read the image with FileReader."))},ye.onloadend=function(){I.reader=null},pe?ye.readAsArrayBuffer(L):ye.readAsDataURL(L)}},"init")},{key:"load",value:n(function(I){var L=this,Q=this.file,X=this.image;X.onload=function(){L.draw(e(e({},I),{},{naturalWidth:X.naturalWidth,naturalHeight:X.naturalHeight}))},X.onabort=function(){L.fail(new Error("Aborted to load the image."))},X.onerror=function(){L.fail(new Error("Failed to load the image."))},y.navigator&&/(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(y.navigator.userAgent)&&(X.crossOrigin="anonymous"),X.alt=Q.name,X.src=I.url},"load")},{key:"draw",value:n(function(I){var L=this,Q=I.naturalWidth,X=I.naturalHeight,ye=I.rotate,pe=ye===void 0?0:ye,ne=I.scaleX,re=ne===void 0?1:ne,Fe=I.scaleY,Ee=Fe===void 0?1:Fe,Ft=this.file,Et=this.image,te=this.options,Ot=document.createElement("canvas"),Ge=Ot.getContext("2d"),lr=Math.abs(pe)%180===90,So=(te.resize==="contain"||te.resize==="cover")&&b(te.width)&&b(te.height),Hr=Math.max(te.maxWidth,0)||1/0,$r=Math.max(te.maxHeight,0)||1/0,qr=Math.max(te.minWidth,0)||0,ur=Math.max(te.minHeight,0)||0,hr=Q/X,nt=te.width,at=te.height;if(lr){var wl=[$r,Hr];Hr=wl[0],$r=wl[1];var Sl=[ur,qr];qr=Sl[0],ur=Sl[1];var nn=[at,nt];nt=nn[0],at=nn[1]}So&&(hr=nt/at);var Pl=Je({aspectRatio:hr,width:Hr,height:$r},"contain");Hr=Pl.width,$r=Pl.height;var _l=Je({aspectRatio:hr,width:qr,height:ur},"cover");if(qr=_l.width,ur=_l.height,So){var ie=Je({aspectRatio:hr,width:nt,height:at},te.resize);nt=ie.width,at=ie.height}else{var an=Je({aspectRatio:hr,width:nt,height:at}),Po=an.width;nt=Po===void 0?Q:Po;var Ni=an.height;at=Ni===void 0?X:Ni}nt=Math.floor(Be(Math.min(Math.max(nt,qr),Hr))),at=Math.floor(Be(Math.min(Math.max(at,ur),$r)));var hh=-nt/2,Vr=-at/2,St=nt,dh=at,_o=[];if(So){var Re=0,Se=0,ln=Q,Mi=X,xl=Je({aspectRatio:hr,width:Q,height:X},{contain:"cover",cover:"contain"}[te.resize]);ln=xl.width,Mi=xl.height,Re=(Q-ln)/2,Se=(X-Mi)/2,_o.push(Re,Se,ln,Mi)}if(_o.push(hh,Vr,St,dh),lr){var vi=[at,nt];nt=vi[0],at=vi[1]}Ot.width=nt,Ot.height=at,F(te.mimeType)||(te.mimeType=Ft.type);var Fl="transparent";if(Ft.size>te.convertSize&&te.convertTypes.indexOf(te.mimeType)>=0&&(te.mimeType="image/jpeg"),te.mimeType==="image/jpeg"&&(Fl="#fff"),Ge.fillStyle=Fl,Ge.fillRect(0,0,nt,at),te.beforeDraw&&te.beforeDraw.call(this,Ge,Ot),!this.aborted&&(Ge.save(),Ge.translate(nt/2,at/2),Ge.rotate(pe*Math.PI/180),Ge.scale(re,Ee),Ge.drawImage.apply(Ge,[Et].concat(_o)),Ge.restore(),te.drew&&te.drew.call(this,Ge,Ot),!this.aborted)){var je=n(function(Wr){L.aborted||L.done({naturalWidth:Q,naturalHeight:X,result:Wr})},"done");Ot.toBlob?Ot.toBlob(je,te.mimeType,te.quality):je(h(Ot.toDataURL(te.mimeType,te.quality)))}},"draw")},{key:"done",value:n(function(I){var L=I.naturalWidth,Q=I.naturalHeight,X=I.result,ye=this.file,pe=this.image,ne=this.options;if(_e&&!ne.checkOrientation&&_e.revokeObjectURL(pe.src),X)if(ne.strict&&X.size>ye.size&&ne.mimeType===ye.type&&!(ne.width>L||ne.height>Q||ne.minWidth>L||ne.minHeight>Q||ne.maxWidth<L||ne.maxHeight<Q))X=ye;else{var re=new Date;X.lastModified=re.getTime(),X.lastModifiedDate=re,X.name=ye.name,X.name&&X.type!==ye.type&&(X.name=X.name.replace(ze,U(X.type)))}else X=ye;this.result=X,ne.success&&ne.success.call(this,X)},"done")},{key:"fail",value:n(function(I){var L=this.options;if(L.error)L.error.call(this,I);else throw I},"fail")},{key:"abort",value:n(function(){this.aborted||(this.aborted=!0,this.reader?this.reader.abort():this.image.complete?this.fail(new Error("The compression process has been aborted.")):(this.image.onload=null,this.image.onabort()))},"abort")}],[{key:"noConflict",value:n(function(){return window.Compressor=xe,V},"noConflict")},{key:"setDefaults",value:n(function(I){a(d,I)},"setDefaults")}]),V}();return ui})});var qp={};Tl(qp,{Audio:()=>ns,AwsS3:()=>no,AwsS3Multipart:()=>Ri,BasePlugin:()=>ve,Box:()=>Xi,Compressor:()=>on,Core:()=>qx,Dashboard:()=>is,DefaultStore:()=>kl,DragDrop:()=>Gi,DropTarget:()=>Ns,Dropbox:()=>Yi,Facebook:()=>Qi,FileInput:()=>rs,Form:()=>go,GoldenRetriever:()=>bo,GoogleDrive:()=>Ji,ImageEditor:()=>ss,Informer:()=>qi,Instagram:()=>Zi,OneDrive:()=>er,ProgressBar:()=>os,ReduxDevTools:()=>wo,ReduxStore:()=>fg,RemoteSources:()=>zs,ScreenCapture:()=>as,StatusBar:()=>$i,ThumbnailGenerator:()=>Cr,Transloadit:()=>yi,Tus:()=>or,UIPlugin:()=>Z,Unsplash:()=>tr,Uppy:()=>Ah,Url:()=>Ti,Webcam:()=>ls,XHRUpload:()=>mo,Zoom:()=>ir,debugLogger:()=>mn,locales:()=>Wx,server:()=>Bh,views:()=>Vx});function Ct(i,e){return Object.prototype.hasOwnProperty.call(i,e)}n(Ct,"has");function rf(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError("attempted to use private field on non-instance");return i}n(rf,"_classPrivateFieldLooseBase");var Vb=0;function Wb(i){return"__private_"+Vb+++"_"+i}n(Wb,"_classPrivateFieldLooseKey");function Gb(i,e,t){let r=[];return i.forEach(s=>typeof s!="string"?r.push(s):e[Symbol.split](s).forEach((o,a,l)=>{o!==""&&r.push(o),a<l.length-1&&r.push(t)})),r}n(Gb,"insertReplacement");function sf(i,e){let t=/\$/g,r="$$$$",s=[i];if(e==null)return s;for(let o of Object.keys(e))if(o!=="_"){let a=e[o];typeof a=="string"&&(a=t[Symbol.replace](a,r)),s=Gb(s,new RegExp(`%\\{${o}\\}`,"g"),a)}return s}n(sf,"interpolate");var dn=Wb("apply"),Xr=class{constructor(e){Object.defineProperty(this,dn,{value:Kb}),this.locale={strings:{},pluralize(t){return t===1?0:1}},Array.isArray(e)?e.forEach(rf(this,dn)[dn],this):rf(this,dn)[dn](e)}translate(e,t){return this.translateArray(e,t).join("")}translateArray(e,t){if(!Ct(this.locale.strings,e))throw new Error(`missing string: ${e}`);let r=this.locale.strings[e];if(typeof r=="object"){if(t&&typeof t.smart_count<"u"){let o=this.locale.pluralize(t.smart_count);return sf(r[o],t)}throw new Error("Attempted to use a string with plural forms, but no value was given for %{smart_count}")}return sf(r,t)}};n(Xr,"Translator");function Kb(i){if(!(i!=null&&i.strings))return;let e=this.locale;this.locale={...e,strings:{...e.strings,...i.strings}},this.locale.pluralize=i.pluralize||e.pluralize}n(Kb,"_apply2");var Zf=de(yh(),1);var Xb="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var Pt=n((i=21)=>{let e="",t=i;for(;t--;)e+=Xb[Math.random()*64|0];return e},"nanoid");var em=de(Rl(),1);function Ul(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError("attempted to use private field on non-instance");return i}n(Ul,"_classPrivateFieldLooseBase");var H1=0;function Lf(i){return"__private_"+H1+++"_"+i}n(Lf,"_classPrivateFieldLooseKey");var $1={version:"3.1.0"},gs=Lf("callbacks"),Ph=Lf("publish"),pn=class{constructor(){Object.defineProperty(this,Ph,{value:q1}),this.state={},Object.defineProperty(this,gs,{writable:!0,value:new Set})}getState(){return this.state}setState(e){let t={...this.state},r={...this.state,...e};this.state=r,Ul(this,Ph)[Ph](t,r,e)}subscribe(e){return Ul(this,gs)[gs].add(e),()=>{Ul(this,gs)[gs].delete(e)}}};n(pn,"DefaultStore");function q1(){for(var i=arguments.length,e=new Array(i),t=0;t<i;t++)e[t]=arguments[t];Ul(this,gs)[gs].forEach(r=>{r(...e)})}n(q1,"_publish2");pn.VERSION=$1.version;var kl=pn;function Bi(i){let e=i.lastIndexOf(".");return e===-1||e===i.length-1?{name:i,extension:void 0}:{name:i.slice(0,e),extension:i.slice(e+1)}}n(Bi,"getFileNameAndExtension");var fn={__proto__:null,md:"text/markdown",markdown:"text/markdown",mp4:"video/mp4",mp3:"audio/mp3",svg:"image/svg+xml",jpg:"image/jpeg",png:"image/png",webp:"image/webp",gif:"image/gif",heic:"image/heic",heif:"image/heif",yaml:"text/yaml",yml:"text/yaml",csv:"text/csv",tsv:"text/tab-separated-values",tab:"text/tab-separated-values",avi:"video/x-msvideo",mks:"video/x-matroska",mkv:"video/x-matroska",mov:"video/quicktime",dicom:"application/dicom",doc:"application/msword",docm:"application/vnd.ms-word.document.macroenabled.12",docx:"application/vnd.openxmlformats-officedocument.wordprocessingml.document",dot:"application/msword",dotm:"application/vnd.ms-word.template.macroenabled.12",dotx:"application/vnd.openxmlformats-officedocument.wordprocessingml.template",xla:"application/vnd.ms-excel",xlam:"application/vnd.ms-excel.addin.macroenabled.12",xlc:"application/vnd.ms-excel",xlf:"application/x-xliff+xml",xlm:"application/vnd.ms-excel",xls:"application/vnd.ms-excel",xlsb:"application/vnd.ms-excel.sheet.binary.macroenabled.12",xlsm:"application/vnd.ms-excel.sheet.macroenabled.12",xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",xlt:"application/vnd.ms-excel",xltm:"application/vnd.ms-excel.template.macroenabled.12",xltx:"application/vnd.openxmlformats-officedocument.spreadsheetml.template",xlw:"application/vnd.ms-excel",txt:"text/plain",text:"text/plain",conf:"text/plain",log:"text/plain",pdf:"application/pdf",zip:"application/zip","7z":"application/x-7z-compressed",rar:"application/x-rar-compressed",tar:"application/x-tar",gz:"application/gzip",dmg:"application/x-apple-diskimage"};function ys(i){var e;if(i.type)return i.type;let t=i.name?(e=Bi(i.name).extension)==null?void 0:e.toLowerCase():null;return t&&t in fn?fn[t]:"application/octet-stream"}n(ys,"getFileType");function V1(i){return i.charCodeAt(0).toString(32)}n(V1,"encodeCharacter");function Bf(i){let e="";return i.replace(/[^A-Z0-9]/gi,t=>(e+=`-${V1(t)}`,"/"))+e}n(Bf,"encodeFilename");function zf(i){let e="uppy";return typeof i.name=="string"&&(e+=`-${Bf(i.name.toLowerCase())}`),i.type!==void 0&&(e+=`-${i.type}`),i.meta&&typeof i.meta.relativePath=="string"&&(e+=`-${Bf(i.meta.relativePath.toLowerCase())}`),i.data.size!==void 0&&(e+=`-${i.data.size}`),i.data.lastModified!==void 0&&(e+=`-${i.data.lastModified}`),e}n(zf,"generateFileID");function W1(i){return!i.isRemote||!i.remote?!1:new Set(["box","dropbox","drive","facebook","unsplash"]).has(i.remote.provider)}n(W1,"hasFileStableId");function Dl(i){if(W1(i))return i.id;let e=ys(i);return zf({...i,type:e})}n(Dl,"getSafeFileId");function _h(i){if(i==null&&typeof navigator<"u"&&(i=navigator.userAgent),!i)return!0;let e=/Edge\/(\d+\.\d+)/.exec(i);if(!e)return!0;let t=e[1],[r,s]=t.split(".");return r=parseInt(r,10),s=parseInt(s,10),r<15||r===15&&s<15063||r>18||r===18&&s>=18218}n(_h,"supportsUploadProgress");function xh(i,e){return e.name?e.name:i.split("/")[0]==="image"?`${i.split("/")[0]}.${i.split("/")[1]}`:"noname"}n(xh,"getFileName");function Fh(i){return i<10?`0${i}`:i.toString()}n(Fh,"pad");function Fo(){let i=new Date,e=Fh(i.getHours()),t=Fh(i.getMinutes()),r=Fh(i.getSeconds());return`${e}:${t}:${r}`}n(Fo,"getTimeStamp");var jf={debug:()=>{},warn:()=>{},error:function(){for(var i=arguments.length,e=new Array(i),t=0;t<i;t++)e[t]=arguments[t];return console.error(`[Uppy] [${Fo()}]`,...e)}},mn={debug:function(){for(var i=arguments.length,e=new Array(i),t=0;t<i;t++)e[t]=arguments[t];return console.debug(`[Uppy] [${Fo()}]`,...e)},warn:function(){for(var i=arguments.length,e=new Array(i),t=0;t<i;t++)e[t]=arguments[t];return console.warn(`[Uppy] [${Fo()}]`,...e)},error:function(){for(var i=arguments.length,e=new Array(i),t=0;t<i;t++)e[t]=arguments[t];return console.error(`[Uppy] [${Fo()}]`,...e)}};var Nl=de(Il(),1),Kf=de(Gf(),1);var Xf={maxFileSize:null,minFileSize:null,maxTotalFileSize:null,maxNumberOfFiles:null,minNumberOfFiles:null,allowedFileTypes:null,requiredMetaFields:[]},Tt=class extends Error{constructor(e,t){let{isUserFacing:r=!0,file:s}=t===void 0?{}:t;super(e),this.isRestriction=!0,this.isUserFacing=r,s!=null&&(this.file=s)}};n(Tt,"RestrictionError");var gn=class{constructor(e,t){this.i18n=t,this.getOpts=()=>{let r=e();if(r.restrictions.allowedFileTypes!=null&&!Array.isArray(r.restrictions.allowedFileTypes))throw new TypeError("`restrictions.allowedFileTypes` must be an array");return r}}validateAggregateRestrictions(e,t){let{maxTotalFileSize:r,maxNumberOfFiles:s}=this.getOpts().restrictions;if(s&&e.filter(a=>!a.isGhost).length+t.length>s)throw new Tt(`${this.i18n("youCanOnlyUploadX",{smart_count:s})}`);if(r){let o=e.reduce((a,l)=>a+l.size,0);for(let a of t)if(a.size!=null&&(o+=a.size,o>r))throw new Tt(this.i18n("exceedsSize",{size:(0,Nl.default)(r),file:a.name}))}}validateSingleFile(e){let{maxFileSize:t,minFileSize:r,allowedFileTypes:s}=this.getOpts().restrictions;if(s&&!s.some(a=>a.includes("/")?e.type?(0,Kf.default)(e.type.replace(/;.*?$/,""),a):!1:a[0]==="."&&e.extension?e.extension.toLowerCase()===a.slice(1).toLowerCase():!1)){let a=s.join(", ");throw new Tt(this.i18n("youCanOnlyUploadFileTypes",{types:a}),{file:e})}if(t&&e.size!=null&&e.size>t)throw new Tt(this.i18n("exceedsSize",{size:(0,Nl.default)(t),file:e.name}),{file:e});if(r&&e.size!=null&&e.size<r)throw new Tt(this.i18n("inferiorSize",{size:(0,Nl.default)(r)}),{file:e})}validate(e,t){t.forEach(r=>{this.validateSingleFile(r)}),this.validateAggregateRestrictions(e,t)}validateMinNumberOfFiles(e){let{minNumberOfFiles:t}=this.getOpts().restrictions;if(Object.keys(e).length<t)throw new Tt(this.i18n("youHaveToAtLeastSelectX",{smart_count:t}))}getMissingRequiredMetaFields(e){let t=new Tt(this.i18n("missingRequiredMetaFieldOnFile",{fileName:e.name})),{requiredMetaFields:r}=this.getOpts().restrictions,s=[];for(let o of r)(!Object.hasOwn(e.meta,o)||e.meta[o]==="")&&s.push(o);return{missingFields:s,error:t}}};n(gn,"Restricter");var Yf={strings:{addBulkFilesFailed:{0:"Failed to add %{smart_count} file due to an internal error",1:"Failed to add %{smart_count} files due to internal errors"},youCanOnlyUploadX:{0:"You can only upload %{smart_count} file",1:"You can only upload %{smart_count} files"},youHaveToAtLeastSelectX:{0:"You have to select at least %{smart_count} file",1:"You have to select at least %{smart_count} files"},exceedsSize:"%{file} exceeds maximum allowed size of %{size}",missingRequiredMetaField:"Missing required meta fields",missingRequiredMetaFieldOnFile:"Missing required meta fields in %{fileName}",inferiorSize:"This file is smaller than the allowed size of %{size}",youCanOnlyUploadFileTypes:"You can only upload: %{types}",noMoreFilesAllowed:"Cannot add more files",noDuplicates:"Cannot add the duplicate file '%{fileName}', it already exists",companionError:"Connection with Companion failed",authAborted:"Authentication aborted",companionUnauthorizeHint:"To unauthorize to your %{provider} account, please go to %{url}",failedToUpload:"Failed to upload %{file}",noInternetConnection:"No Internet connection",connectedToInternet:"Connected to the Internet",noFilesFound:"You have no files or folders here",noSearchResults:"Unfortunately, there are no results for this search",selectX:{0:"Select %{smart_count}",1:"Select %{smart_count}"},allFilesFromFolderNamed:"All files from folder %{name}",openFolderNamed:"Open folder %{name}",cancel:"Cancel",logOut:"Log out",filter:"Filter",resetFilter:"Reset filter",loading:"Loading...",loadedXFiles:"Loaded %{numFiles} files",authenticateWithTitle:"Please authenticate with %{pluginName} to select files",authenticateWith:"Connect to %{pluginName}",signInWithGoogle:"Sign in with Google",searchImages:"Search for images",enterTextToSearch:"Enter text to search for images",search:"Search",resetSearch:"Reset search",emptyFolderAdded:"No files were added from empty folder",addedNumFiles:"Added %{numFiles} file(s)",folderAlreadyAdded:'The folder "%{folder}" was already added',folderAdded:{0:"Added %{smart_count} file from %{folder}",1:"Added %{smart_count} files from %{folder}"},additionalRestrictionsFailed:"%{count} additional restrictions were not fulfilled"}};var Qf,Jf;function q(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError("attempted to use private field on non-instance");return i}n(q,"_classPrivateFieldLooseBase");var X1=0;function Xe(i){return"__private_"+X1+++"_"+i}n(Xe,"_classPrivateFieldLooseKey");var Y1={version:"3.7.1"},Ml=n(()=>({totalProgress:0,allowNewUpload:!0,error:null,recoveredState:null}),"getDefaultUploadState"),ht=Xe("plugins"),Gt=Xe("restricter"),yn=Xe("storeUnsubscribe"),pr=Xe("emitter"),vs=Xe("preProcessors"),bs=Xe("uploaders"),gr=Xe("postProcessors"),Kt=Xe("informAndEmit"),Pn=Xe("checkRequiredMetaFieldsOnFile"),Eh=Xe("checkRequiredMetaFields"),vn=Xe("assertNewUploadAllowed"),Th=Xe("transformFile"),bn=Xe("startIfAutoProceed"),wn=Xe("checkAndUpdateFileState"),Oh=Xe("addListeners"),Si=Xe("updateOnlineStatus"),fr=Xe("createUpload"),Ch=Xe("getUpload"),ws=Xe("removeUpload"),mr=Xe("runUpload");Qf=Symbol.for("uppy test: getPlugins");Jf=Symbol.for("uppy test: createUpload");var Sn=class{constructor(e){Object.defineProperty(this,mr,{value:lw}),Object.defineProperty(this,ws,{value:aw}),Object.defineProperty(this,Ch,{value:nw}),Object.defineProperty(this,fr,{value:ow}),Object.defineProperty(this,Oh,{value:sw}),Object.defineProperty(this,wn,{value:rw}),Object.defineProperty(this,bn,{value:iw}),Object.defineProperty(this,Th,{value:tw}),Object.defineProperty(this,vn,{value:ew}),Object.defineProperty(this,Eh,{value:Z1}),Object.defineProperty(this,Pn,{value:J1}),Object.defineProperty(this,Kt,{value:Q1}),Object.defineProperty(this,ht,{writable:!0,value:Object.create(null)}),Object.defineProperty(this,Gt,{writable:!0,value:void 0}),Object.defineProperty(this,yn,{writable:!0,value:void 0}),Object.defineProperty(this,pr,{writable:!0,value:(0,Zf.default)()}),Object.defineProperty(this,vs,{writable:!0,value:new Set}),Object.defineProperty(this,bs,{writable:!0,value:new Set}),Object.defineProperty(this,gr,{writable:!0,value:new Set}),this.calculateProgress=(0,em.default)((r,s)=>{let o=this.getFile(r?.id);if(r==null||!o){this.log(`Not setting progress for a file that has been removed: ${r?.id}`);return}if(o.progress.percentage===100){this.log(`Not setting progress for a file that has been already uploaded: ${r.id}`);return}let a=Number.isFinite(s.bytesTotal)&&s.bytesTotal>0;this.setFileState(r.id,{progress:{...o.progress,bytesUploaded:s.bytesUploaded,bytesTotal:s.bytesTotal,percentage:a?Math.round(s.bytesUploaded/s.bytesTotal*100):0}}),this.calculateTotalProgress()},500,{leading:!0,trailing:!0}),Object.defineProperty(this,Si,{writable:!0,value:this.updateOnlineStatus.bind(this)}),this.defaultLocale=Yf;let t={id:"uppy",autoProceed:!1,allowMultipleUploadBatches:!0,debug:!1,restrictions:Xf,meta:{},onBeforeFileAdded:(r,s)=>!Object.hasOwn(s,r.id),onBeforeUpload:r=>r,store:new kl,logger:jf,infoTimeout:5e3};this.opts={...t,...e,restrictions:{...t.restrictions,...e&&e.restrictions}},e&&e.logger&&e.debug?this.log("You are using a custom `logger`, but also set `debug: true`, which uses built-in logger to output logs to console. Ignoring `debug: true` and using your custom `logger`.","warning"):e&&e.debug&&(this.opts.logger=mn),this.log(`Using Core v${this.constructor.VERSION}`),this.i18nInit(),this.store=this.opts.store,this.setState({...Ml(),plugins:{},files:{},currentUploads:{},capabilities:{uploadProgress:_h(),individualCancellation:!0,resumableUploads:!1},meta:{...this.opts.meta},info:[]}),q(this,Gt)[Gt]=new gn(()=>this.opts,this.i18n),q(this,yn)[yn]=this.store.subscribe((r,s,o)=>{this.emit("state-update",r,s,o),this.updateAll(s)}),this.opts.debug&&typeof window<"u"&&(window[this.opts.id]=this),q(this,Oh)[Oh]()}emit(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),s=1;s<t;s++)r[s-1]=arguments[s];q(this,pr)[pr].emit(e,...r)}on(e,t){return q(this,pr)[pr].on(e,t),this}once(e,t){return q(this,pr)[pr].once(e,t),this}off(e,t){return q(this,pr)[pr].off(e,t),this}updateAll(e){this.iteratePlugins(t=>{t.update(e)})}setState(e){this.store.setState(e)}getState(){return this.store.getState()}patchFilesState(e){let t=this.getState().files;this.setState({files:{...t,...Object.fromEntries(Object.entries(e).map(r=>{let[s,o]=r;return[s,{...t[s],...o}]}))}})}setFileState(e,t){if(!this.getState().files[e])throw new Error(`Can\u2019t set state for ${e} (the file could have been removed)`);this.patchFilesState({[e]:t})}i18nInit(){let e=new Xr([this.defaultLocale,this.opts.locale]);this.i18n=e.translate.bind(e),this.i18nArray=e.translateArray.bind(e),this.locale=e.locale}setOptions(e){this.opts={...this.opts,...e,restrictions:{...this.opts.restrictions,...e&&e.restrictions}},e.meta&&this.setMeta(e.meta),this.i18nInit(),e.locale&&this.iteratePlugins(t=>{t.setOptions(e)}),this.setState()}resetProgress(){let e={percentage:0,bytesUploaded:0,uploadComplete:!1,uploadStarted:null},t={...this.getState().files},r={};Object.keys(t).forEach(s=>{r[s]={...t[s],progress:{...t[s].progress,...e}}}),this.setState({files:r,...Ml()}),this.emit("reset-progress")}clearUploadedFiles(){this.setState({...Ml(),files:{}})}addPreProcessor(e){q(this,vs)[vs].add(e)}removePreProcessor(e){return q(this,vs)[vs].delete(e)}addPostProcessor(e){q(this,gr)[gr].add(e)}removePostProcessor(e){return q(this,gr)[gr].delete(e)}addUploader(e){q(this,bs)[bs].add(e)}removeUploader(e){return q(this,bs)[bs].delete(e)}setMeta(e){let t={...this.getState().meta,...e},r={...this.getState().files};Object.keys(r).forEach(s=>{r[s]={...r[s],meta:{...r[s].meta,...e}}}),this.log("Adding metadata:"),this.log(e),this.setState({meta:t,files:r})}setFileMeta(e,t){let r={...this.getState().files};if(!r[e]){this.log("Was trying to set metadata for a file that has been removed: ",e);return}let s={...r[e].meta,...t};r[e]={...r[e],meta:s},this.setState({files:r})}getFile(e){return this.getState().files[e]}getFiles(){let{files:e}=this.getState();return Object.values(e)}getFilesByIds(e){return e.map(t=>this.getFile(t))}getObjectOfFilesPerState(){let{files:e,totalProgress:t,error:r}=this.getState(),s=Object.values(e),o=s.filter(S=>{let{progress:E}=S;return!E.uploadComplete&&E.uploadStarted}),a=s.filter(S=>!S.progress.uploadStarted),l=s.filter(S=>S.progress.uploadStarted||S.progress.preprocess||S.progress.postprocess),h=s.filter(S=>S.progress.uploadStarted),p=s.filter(S=>S.isPaused),d=s.filter(S=>S.progress.uploadComplete),f=s.filter(S=>S.error),y=o.filter(S=>!S.isPaused),b=s.filter(S=>S.progress.preprocess||S.progress.postprocess);return{newFiles:a,startedFiles:l,uploadStartedFiles:h,pausedFiles:p,completeFiles:d,erroredFiles:f,inProgressFiles:o,inProgressNotPausedFiles:y,processingFiles:b,isUploadStarted:h.length>0,isAllComplete:t===100&&d.length===s.length&&b.length===0,isAllErrored:!!r&&f.length===s.length,isAllPaused:o.length!==0&&p.length===o.length,isUploadInProgress:o.length>0,isSomeGhost:s.some(S=>S.isGhost)}}validateRestrictions(e,t){t===void 0&&(t=this.getFiles());try{q(this,Gt)[Gt].validate(t,[e])}catch(r){return r}return null}checkIfFileAlreadyExists(e){let{files:t}=this.getState();return!!(t[e]&&!t[e].isGhost)}addFile(e){q(this,vn)[vn](e);let{nextFilesState:t,validFilesToAdd:r,errors:s}=q(this,wn)[wn]([e]),o=s.filter(l=>l.isRestriction);if(q(this,Kt)[Kt](o),s.length>0)throw s[0];this.setState({files:t});let[a]=r;return this.emit("file-added",a),this.emit("files-added",r),this.log(`Added file: ${a.name}, ${a.id}, mime type: ${a.type}`),q(this,bn)[bn](),a.id}addFiles(e){q(this,vn)[vn]();let{nextFilesState:t,validFilesToAdd:r,errors:s}=q(this,wn)[wn](e),o=s.filter(l=>l.isRestriction);q(this,Kt)[Kt](o);let a=s.filter(l=>!l.isRestriction);if(a.length>0){let l=`Multiple errors occurred while adding files: +`;if(a.forEach(h=>{l+=` + * ${h.message}`}),this.info({message:this.i18n("addBulkFilesFailed",{smart_count:a.length}),details:l},"error",this.opts.infoTimeout),typeof AggregateError=="function")throw new AggregateError(a,l);{let h=new Error(l);throw h.errors=a,h}}this.setState({files:t}),r.forEach(l=>{this.emit("file-added",l)}),this.emit("files-added",r),r.length>5?this.log(`Added batch of ${r.length} files`):Object.values(r).forEach(l=>{this.log(`Added file: ${l.name} + id: ${l.id} + type: ${l.type}`)}),r.length>0&&q(this,bn)[bn]()}removeFiles(e,t){let{files:r,currentUploads:s}=this.getState(),o={...r},a={...s},l=Object.create(null);e.forEach(f=>{r[f]&&(l[f]=r[f],delete o[f])});function h(f){return l[f]===void 0}n(h,"fileIsNotRemoved"),Object.keys(a).forEach(f=>{let y=s[f].fileIDs.filter(h);if(y.length===0){delete a[f];return}let{capabilities:b}=this.getState();if(y.length!==s[f].fileIDs.length&&!b.individualCancellation)throw new Error("individualCancellation is disabled");a[f]={...s[f],fileIDs:y}});let p={currentUploads:a,files:o};Object.keys(o).length===0&&(p.allowNewUpload=!0,p.error=null,p.recoveredState=null),this.setState(p),this.calculateTotalProgress();let d=Object.keys(l);d.forEach(f=>{this.emit("file-removed",l[f],t)}),d.length>5?this.log(`Removed ${d.length} files`):this.log(`Removed files: ${d.join(", ")}`)}removeFile(e,t){t===void 0&&(t=null),this.removeFiles([e],t)}pauseResume(e){if(!this.getState().capabilities.resumableUploads||this.getFile(e).uploadComplete)return;let r=!(this.getFile(e).isPaused||!1);return this.setFileState(e,{isPaused:r}),this.emit("upload-pause",e,r),r}pauseAll(){let e={...this.getState().files};Object.keys(e).filter(r=>!e[r].progress.uploadComplete&&e[r].progress.uploadStarted).forEach(r=>{let s={...e[r],isPaused:!0};e[r]=s}),this.setState({files:e}),this.emit("pause-all")}resumeAll(){let e={...this.getState().files};Object.keys(e).filter(r=>!e[r].progress.uploadComplete&&e[r].progress.uploadStarted).forEach(r=>{let s={...e[r],isPaused:!1,error:null};e[r]=s}),this.setState({files:e}),this.emit("resume-all")}retryAll(){let e={...this.getState().files},t=Object.keys(e).filter(s=>e[s].error);if(t.forEach(s=>{let o={...e[s],isPaused:!1,error:null};e[s]=o}),this.setState({files:e,error:null}),this.emit("retry-all",t),t.length===0)return Promise.resolve({successful:[],failed:[]});let r=q(this,fr)[fr](t,{forceAllowNewUpload:!0});return q(this,mr)[mr](r)}cancelAll(e){let{reason:t="user"}=e===void 0?{}:e;if(this.emit("cancel-all",{reason:t}),t==="user"){let{files:r}=this.getState(),s=Object.keys(r);s.length&&this.removeFiles(s,"cancel-all"),this.setState(Ml())}}retryUpload(e){this.setFileState(e,{error:null,isPaused:!1}),this.emit("upload-retry",e);let t=q(this,fr)[fr]([e],{forceAllowNewUpload:!0});return q(this,mr)[mr](t)}logout(){this.iteratePlugins(e=>{e.provider&&e.provider.logout&&e.provider.logout()})}calculateTotalProgress(){let t=this.getFiles().filter(p=>p.progress.uploadStarted||p.progress.preprocess||p.progress.postprocess);if(t.length===0){this.emit("progress",0),this.setState({totalProgress:0});return}let r=t.filter(p=>p.progress.bytesTotal!=null),s=t.filter(p=>p.progress.bytesTotal==null);if(r.length===0){let p=t.length*100,d=s.reduce((y,b)=>y+b.progress.percentage,0),f=Math.round(d/p*100);this.setState({totalProgress:f});return}let o=r.reduce((p,d)=>p+d.progress.bytesTotal,0),a=o/r.length;o+=a*s.length;let l=0;r.forEach(p=>{l+=p.progress.bytesUploaded}),s.forEach(p=>{l+=a*(p.progress.percentage||0)/100});let h=o===0?0:Math.round(l/o*100);h>100&&(h=100),this.setState({totalProgress:h}),this.emit("progress",h)}updateOnlineStatus(){(typeof window.navigator.onLine<"u"?window.navigator.onLine:!0)?(this.emit("is-online"),this.wasOffline&&(this.emit("back-online"),this.info(this.i18n("connectedToInternet"),"success",3e3),this.wasOffline=!1)):(this.emit("is-offline"),this.info(this.i18n("noInternetConnection"),"error",0),this.wasOffline=!0)}getID(){return this.opts.id}use(e,t){if(typeof e!="function"){let a=`Expected a plugin class, but got ${e===null?"null":typeof e}. Please verify that the plugin was imported and spelled correctly.`;throw new TypeError(a)}let r=new e(this,t),s=r.id;if(!s)throw new Error("Your plugin must have an id");if(!r.type)throw new Error("Your plugin must have a type");let o=this.getPlugin(s);if(o){let a=`Already found a plugin named '${o.id}'. Tried to use: '${s}'. +Uppy plugins must have unique \`id\` options. See https://uppy.io/docs/plugins/#id.`;throw new Error(a)}return e.VERSION&&this.log(`Using ${s} v${e.VERSION}`),r.type in q(this,ht)[ht]?q(this,ht)[ht][r.type].push(r):q(this,ht)[ht][r.type]=[r],r.install(),this.emit("plugin-added",r),this}getPlugin(e){for(let t of Object.values(q(this,ht)[ht])){let r=t.find(s=>s.id===e);if(r!=null)return r}}[Qf](e){return q(this,ht)[ht][e]}iteratePlugins(e){Object.values(q(this,ht)[ht]).flat(1).forEach(e)}removePlugin(e){this.log(`Removing plugin ${e.id}`),this.emit("plugin-remove",e),e.uninstall&&e.uninstall();let t=q(this,ht)[ht][e.type],r=t.findIndex(a=>a.id===e.id);r!==-1&&t.splice(r,1);let o={plugins:{...this.getState().plugins,[e.id]:void 0}};this.setState(o)}close(e){let{reason:t}=e===void 0?{}:e;this.log(`Closing Uppy instance ${this.opts.id}: removing all files and uninstalling plugins`),this.cancelAll({reason:t}),q(this,yn)[yn](),this.iteratePlugins(r=>{this.removePlugin(r)}),typeof window<"u"&&window.removeEventListener&&(window.removeEventListener("online",q(this,Si)[Si]),window.removeEventListener("offline",q(this,Si)[Si]))}hideInfo(){let{info:e}=this.getState();this.setState({info:e.slice(1)}),this.emit("info-hidden")}info(e,t,r){t===void 0&&(t="info"),r===void 0&&(r=3e3);let s=typeof e=="object";this.setState({info:[...this.getState().info,{type:t,message:s?e.message:e,details:s?e.details:null}]}),setTimeout(()=>this.hideInfo(),r),this.emit("info-visible")}log(e,t){let{logger:r}=this.opts;switch(t){case"error":r.error(e);break;case"warning":r.warn(e);break;default:r.debug(e);break}}restore(e){return this.log(`Core: attempting to restore upload "${e}"`),this.getState().currentUploads[e]?q(this,mr)[mr](e):(q(this,ws)[ws](e),Promise.reject(new Error("Nonexistent upload")))}[Jf](){return q(this,fr)[fr](...arguments)}addResultData(e,t){if(!q(this,Ch)[Ch](e)){this.log(`Not setting result for an upload that has been removed: ${e}`);return}let{currentUploads:r}=this.getState(),s={...r[e],result:{...r[e].result,...t}};this.setState({currentUploads:{...r,[e]:s}})}upload(){var e;(e=q(this,ht)[ht].uploader)!=null&&e.length||this.log("No uploader type plugins are used","warning");let{files:t}=this.getState(),r=this.opts.onBeforeUpload(t);return r===!1?Promise.reject(new Error("Not starting the upload because onBeforeUpload returned false")):(r&&typeof r=="object"&&(t=r,this.setState({files:t})),Promise.resolve().then(()=>q(this,Gt)[Gt].validateMinNumberOfFiles(t)).catch(s=>{throw q(this,Kt)[Kt]([s]),s}).then(()=>{if(!q(this,Eh)[Eh](t))throw new Tt(this.i18n("missingRequiredMetaField"))}).catch(s=>{throw s}).then(()=>{let{currentUploads:s}=this.getState(),o=Object.values(s).flatMap(h=>h.fileIDs),a=[];Object.keys(t).forEach(h=>{let p=this.getFile(h);!p.progress.uploadStarted&&o.indexOf(h)===-1&&a.push(p.id)});let l=q(this,fr)[fr](a);return q(this,mr)[mr](l)}).catch(s=>{throw this.emit("error",s),this.log(s,"error"),s}))}};n(Sn,"Uppy");function Q1(i){for(let o of i){let{file:a,isRestriction:l}=o;l?this.emit("restriction-failed",a,o):this.emit("error",o),this.log(o,"warning")}let e=i.filter(o=>o.isUserFacing),t=4,r=e.slice(0,t),s=e.slice(t);r.forEach(o=>{let{message:a,details:l=""}=o;this.info({message:a,details:l},"error",this.opts.infoTimeout)}),s.length>0&&this.info({message:this.i18n("additionalRestrictionsFailed",{count:s.length})})}n(Q1,"_informAndEmit2");function J1(i){let{missingFields:e,error:t}=q(this,Gt)[Gt].getMissingRequiredMetaFields(i);return e.length>0?(this.setFileState(i.id,{missingRequiredMetaFields:e}),this.log(t.message),this.emit("restriction-failed",i,t),!1):!0}n(J1,"_checkRequiredMetaFieldsOnFile2");function Z1(i){let e=!0;for(let t of Object.values(i))q(this,Pn)[Pn](t)||(e=!1);return e}n(Z1,"_checkRequiredMetaFields2");function ew(i){let{allowNewUpload:e}=this.getState();if(e===!1){let t=new Tt(this.i18n("noMoreFilesAllowed"),{file:i});throw q(this,Kt)[Kt]([t]),t}}n(ew,"_assertNewUploadAllowed2");function tw(i){let e=i instanceof File?{name:i.name,type:i.type,size:i.size,data:i}:i,t=ys(e),r=xh(t,e),s=Bi(r).extension,o=!!e.isRemote,a=Dl(e),l=e.meta||{};l.name=r,l.type=t;let h=Number.isFinite(e.data.size)?e.data.size:null;return{source:e.source||"",id:a,name:r,extension:s||"",meta:{...this.getState().meta,...l},type:t,data:e.data,progress:{percentage:0,bytesUploaded:0,bytesTotal:h,uploadComplete:!1,uploadStarted:null},size:h,isRemote:o,remote:e.remote||"",preview:e.preview}}n(tw,"_transformFile2");function iw(){this.opts.autoProceed&&!this.scheduledAutoProceed&&(this.scheduledAutoProceed=setTimeout(()=>{this.scheduledAutoProceed=null,this.upload().catch(i=>{i.isRestriction||this.log(i.stack||i.message||i)})},4))}n(iw,"_startIfAutoProceed2");function rw(i){let{files:e}=this.getState(),t={...e},r=[],s=[];for(let a of i)try{var o;let l=q(this,Th)[Th](a);if((o=e[l.id])!=null&&o.isGhost){let{isGhost:p,...d}=e[l.id];l={...d,data:a.data},this.log(`Replaced the blob in the restored ghost file: ${l.name}, ${l.id}`)}let h=this.opts.onBeforeFileAdded(l,t);if(!h&&this.checkIfFileAlreadyExists(l.id))throw new Tt(this.i18n("noDuplicates",{fileName:l.name}),{file:a});if(h===!1)throw new Tt("Cannot add the file because onBeforeFileAdded returned false.",{isUserFacing:!1,file:a});typeof h=="object"&&h!==null&&(l=h),q(this,Gt)[Gt].validateSingleFile(l),t[l.id]=l,r.push(l)}catch(l){s.push(l)}try{q(this,Gt)[Gt].validateAggregateRestrictions(Object.values(e),r)}catch(a){return s.push(a),{nextFilesState:e,validFilesToAdd:[],errors:s}}return{nextFilesState:t,validFilesToAdd:r,errors:s}}n(rw,"_checkAndUpdateFileState2");function sw(){let i=n((r,s,o)=>{let a=r.message||"Unknown error";r.details&&(a+=` ${r.details}`),this.setState({error:a}),s!=null&&s.id in this.getState().files&&this.setFileState(s.id,{error:a,response:o})},"errorHandler");this.on("error",i),this.on("upload-error",(r,s,o)=>{if(i(s,r,o),typeof s=="object"&&s.message){this.log(s.message,"error");let a=new Error(this.i18n("failedToUpload",{file:r?.name}));a.isUserFacing=!0,a.details=s.message,s.details&&(a.details+=` ${s.details}`),q(this,Kt)[Kt]([a])}else q(this,Kt)[Kt]([s])});let e;this.on("upload-stalled",(r,s)=>{let{message:o}=r,a=s.map(l=>l.meta.name).join(", ");e||(this.info({message:o,details:a},"warning",this.opts.infoTimeout),e=setTimeout(()=>{e=null},this.opts.infoTimeout)),this.log(`${o} ${a}`.trim(),"warning")}),this.on("upload",()=>{this.setState({error:null})});let t=n(r=>{let s=r.filter(a=>{let l=a!=null&&this.getFile(a.id);return l||this.log(`Not setting progress for a file that has been removed: ${a?.id}`),l}),o=Object.fromEntries(s.map(a=>[a.id,{progress:{uploadStarted:Date.now(),uploadComplete:!1,percentage:0,bytesUploaded:0,bytesTotal:a.size}}]));this.patchFilesState(o)},"onUploadStarted");this.on("upload-start",r=>{r.forEach(s=>{this.emit("upload-started",s)}),t(r)}),this.on("upload-progress",this.calculateProgress),this.on("upload-success",(r,s)=>{if(r==null||!this.getFile(r.id)){this.log(`Not setting progress for a file that has been removed: ${r?.id}`);return}let o=this.getFile(r.id).progress;this.setFileState(r.id,{progress:{...o,postprocess:q(this,gr)[gr].size>0?{mode:"indeterminate"}:null,uploadComplete:!0,percentage:100,bytesUploaded:o.bytesTotal},response:s,uploadURL:s.uploadURL,isPaused:!1}),r.size==null&&this.setFileState(r.id,{size:s.bytesUploaded||o.bytesTotal}),this.calculateTotalProgress()}),this.on("preprocess-progress",(r,s)=>{if(r==null||!this.getFile(r.id)){this.log(`Not setting progress for a file that has been removed: ${r?.id}`);return}this.setFileState(r.id,{progress:{...this.getFile(r.id).progress,preprocess:s}})}),this.on("preprocess-complete",r=>{if(r==null||!this.getFile(r.id)){this.log(`Not setting progress for a file that has been removed: ${r?.id}`);return}let s={...this.getState().files};s[r.id]={...s[r.id],progress:{...s[r.id].progress}},delete s[r.id].progress.preprocess,this.setState({files:s})}),this.on("postprocess-progress",(r,s)=>{if(r==null||!this.getFile(r.id)){this.log(`Not setting progress for a file that has been removed: ${r?.id}`);return}this.setFileState(r.id,{progress:{...this.getState().files[r.id].progress,postprocess:s}})}),this.on("postprocess-complete",r=>{if(r==null||!this.getFile(r.id)){this.log(`Not setting progress for a file that has been removed: ${r?.id}`);return}let s={...this.getState().files};s[r.id]={...s[r.id],progress:{...s[r.id].progress}},delete s[r.id].progress.postprocess,this.setState({files:s})}),this.on("restored",()=>{this.calculateTotalProgress()}),this.on("dashboard:file-edit-complete",r=>{r&&q(this,Pn)[Pn](r)}),typeof window<"u"&&window.addEventListener&&(window.addEventListener("online",q(this,Si)[Si]),window.addEventListener("offline",q(this,Si)[Si]),setTimeout(q(this,Si)[Si],3e3))}n(sw,"_addListeners2");function ow(i,e){e===void 0&&(e={});let{forceAllowNewUpload:t=!1}=e,{allowNewUpload:r,currentUploads:s}=this.getState();if(!r&&!t)throw new Error("Cannot create a new upload: already uploading.");let o=Pt();return this.emit("upload",{id:o,fileIDs:i}),this.setState({allowNewUpload:this.opts.allowMultipleUploadBatches!==!1&&this.opts.allowMultipleUploads!==!1,currentUploads:{...s,[o]:{fileIDs:i,step:0,result:{}}}}),o}n(ow,"_createUpload2");function nw(i){let{currentUploads:e}=this.getState();return e[i]}n(nw,"_getUpload2");function aw(i){let e={...this.getState().currentUploads};delete e[i],this.setState({currentUploads:e})}n(aw,"_removeUpload2");async function lw(i){let e=n(()=>{let{currentUploads:o}=this.getState();return o[i]},"getCurrentUpload"),t=e(),r=[...q(this,vs)[vs],...q(this,bs)[bs],...q(this,gr)[gr]];try{for(let o=t.step||0;o<r.length&&t;o++){let a=r[o];this.setState({currentUploads:{...this.getState().currentUploads,[i]:{...t,step:o}}});let{fileIDs:l}=t;await a(l,i),t=e()}}catch(o){throw q(this,ws)[ws](i),o}if(t){t.fileIDs.forEach(h=>{let p=this.getFile(h);p&&p.progress.postprocess&&this.emit("postprocess-complete",p)});let o=t.fileIDs.map(h=>this.getFile(h)),a=o.filter(h=>!h.error),l=o.filter(h=>h.error);await this.addResultData(i,{successful:a,failed:l,uploadID:i}),t=e()}let s;return t&&(s=t.result,this.emit("complete",s),q(this,ws)[ws](i)),s==null&&this.log(`Not setting result for an upload that has been removed: ${i}`),s}n(lw,"_runUpload2");Sn.VERSION=Y1.version;var Ah=Sn;var Fn,ee,nm,uw,_n,tm,hw,Ll={},am=[],dw=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function yr(i,e){for(var t in e)i[t]=e[t];return i}n(yr,"s");function lm(i){var e=i.parentNode;e&&e.removeChild(i)}n(lm,"a");function u(i,e,t){var r,s,o,a={};for(o in e)o=="key"?r=e[o]:o=="ref"?s=e[o]:a[o]=e[o];if(arguments.length>2&&(a.children=arguments.length>3?Fn.call(arguments,2):t),typeof i=="function"&&i.defaultProps!=null)for(o in i.defaultProps)a[o]===void 0&&(a[o]=i.defaultProps[o]);return xn(i,a,r,s,null)}n(u,"h");function xn(i,e,t,r,s){var o={type:i,props:e,key:t,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:s??++nm};return s==null&&ee.vnode!=null&&ee.vnode(o),o}n(xn,"v");function um(){return{current:null}}n(um,"y");function Ht(i){return i.children}n(Ht,"p");function we(i,e){this.props=i,this.context=e}n(we,"d");function Eo(i,e){if(e==null)return i.__?Eo(i.__,i.__.__k.indexOf(i)+1):null;for(var t;e<i.__k.length;e++)if((t=i.__k[e])!=null&&t.__e!=null)return t.__e;return typeof i.type=="function"?Eo(i):null}n(Eo,"_");function hm(i){var e,t;if((i=i.__)!=null&&i.__c!=null){for(i.__e=i.__c.base=null,e=0;e<i.__k.length;e++)if((t=i.__k[e])!=null&&t.__e!=null){i.__e=i.__c.base=t.__e;break}return hm(i)}}n(hm,"k");function im(i){(!i.__d&&(i.__d=!0)&&_n.push(i)&&!Bl.__r++||tm!==ee.debounceRendering)&&((tm=ee.debounceRendering)||setTimeout)(Bl)}n(im,"b");function Bl(){for(var i;Bl.__r=_n.length;)i=_n.sort(function(e,t){return e.__v.__b-t.__v.__b}),_n=[],i.some(function(e){var t,r,s,o,a,l;e.__d&&(a=(o=(t=e).__v).__e,(l=t.__P)&&(r=[],(s=yr({},o)).__v=o.__v+1,Rh(l,o,s,t.__n,l.ownerSVGElement!==void 0,o.__h!=null?[a]:null,r,a??Eo(o),o.__h),fm(r,o),o.__e!=a&&hm(o)))})}n(Bl,"g");function dm(i,e,t,r,s,o,a,l,h,p){var d,f,y,b,S,E,x,F=r&&r.__k||am,U=F.length;for(t.__k=[],d=0;d<e.length;d++)if((b=t.__k[d]=(b=e[d])==null||typeof b=="boolean"?null:typeof b=="string"||typeof b=="number"||typeof b=="bigint"?xn(null,b,null,null,b):Array.isArray(b)?xn(Ht,{children:b},null,null,null):b.__b>0?xn(b.type,b.props,b.key,null,b.__v):b)!=null){if(b.__=t,b.__b=t.__b+1,(y=F[d])===null||y&&b.key==y.key&&b.type===y.type)F[d]=void 0;else for(f=0;f<U;f++){if((y=F[f])&&b.key==y.key&&b.type===y.type){F[f]=void 0;break}y=null}Rh(i,b,y=y||Ll,s,o,a,l,h,p),S=b.__e,(f=b.ref)&&y.ref!=f&&(x||(x=[]),y.ref&&x.push(y.ref,null,b),x.push(f,b.__c||S,b)),S!=null?(E==null&&(E=S),typeof b.type=="function"&&b.__k===y.__k?b.__d=h=cm(b,h,i):h=pm(i,b,y,F,S,h),typeof t.type=="function"&&(t.__d=h)):h&&y.__e==h&&h.parentNode!=i&&(h=Eo(y))}for(t.__e=E,d=U;d--;)F[d]!=null&&(typeof t.type=="function"&&F[d].__e!=null&&F[d].__e==t.__d&&(t.__d=Eo(r,d+1)),gm(F[d],F[d]));if(x)for(d=0;d<x.length;d++)mm(x[d],x[++d],x[++d])}n(dm,"w");function cm(i,e,t){for(var r,s=i.__k,o=0;s&&o<s.length;o++)(r=s[o])&&(r.__=i,e=typeof r.type=="function"?cm(r,e,t):pm(t,r,r,s,r.__e,e));return e}n(cm,"m");function ci(i,e){return e=e||[],i==null||typeof i=="boolean"||(Array.isArray(i)?i.some(function(t){ci(t,e)}):e.push(i)),e}n(ci,"x");function pm(i,e,t,r,s,o){var a,l,h;if(e.__d!==void 0)a=e.__d,e.__d=void 0;else if(t==null||s!=o||s.parentNode==null)e:if(o==null||o.parentNode!==i)i.appendChild(s),a=null;else{for(l=o,h=0;(l=l.nextSibling)&&h<r.length;h+=2)if(l==s)break e;i.insertBefore(s,o),a=o}return a!==void 0?a:s.nextSibling}n(pm,"A");function cw(i,e,t,r,s){var o;for(o in t)o==="children"||o==="key"||o in e||zl(i,o,null,t[o],r);for(o in e)s&&typeof e[o]!="function"||o==="children"||o==="key"||o==="value"||o==="checked"||t[o]===e[o]||zl(i,o,e[o],t[o],r)}n(cw,"C");function rm(i,e,t){e[0]==="-"?i.setProperty(e,t):i[e]=t==null?"":typeof t!="number"||dw.test(e)?t:t+"px"}n(rm,"$");function zl(i,e,t,r,s){var o;e:if(e==="style")if(typeof t=="string")i.style.cssText=t;else{if(typeof r=="string"&&(i.style.cssText=r=""),r)for(e in r)t&&e in t||rm(i.style,e,"");if(t)for(e in t)r&&t[e]===r[e]||rm(i.style,e,t[e])}else if(e[0]==="o"&&e[1]==="n")o=e!==(e=e.replace(/Capture$/,"")),e=e.toLowerCase()in i?e.toLowerCase().slice(2):e.slice(2),i.l||(i.l={}),i.l[e+o]=t,t?r||i.addEventListener(e,o?om:sm,o):i.removeEventListener(e,o?om:sm,o);else if(e!=="dangerouslySetInnerHTML"){if(s)e=e.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(e!=="href"&&e!=="list"&&e!=="form"&&e!=="tabIndex"&&e!=="download"&&e in i)try{i[e]=t??"";break e}catch{}typeof t=="function"||(t!=null&&(t!==!1||e[0]==="a"&&e[1]==="r")?i.setAttribute(e,t):i.removeAttribute(e))}}n(zl,"H");function sm(i){this.l[i.type+!1](ee.event?ee.event(i):i)}n(sm,"I");function om(i){this.l[i.type+!0](ee.event?ee.event(i):i)}n(om,"T");function Rh(i,e,t,r,s,o,a,l,h){var p,d,f,y,b,S,E,x,F,U,j,G,J,B=e.type;if(e.constructor!==void 0)return null;t.__h!=null&&(h=t.__h,l=e.__e=t.__e,e.__h=null,o=[l]),(p=ee.__b)&&p(e);try{e:if(typeof B=="function"){if(x=e.props,F=(p=B.contextType)&&r[p.__c],U=p?F?F.props.value:p.__:r,t.__c?E=(d=e.__c=t.__c).__=d.__E:("prototype"in B&&B.prototype.render?e.__c=d=new B(x,U):(e.__c=d=new we(x,U),d.constructor=B,d.render=fw),F&&F.sub(d),d.props=x,d.state||(d.state={}),d.context=U,d.__n=r,f=d.__d=!0,d.__h=[]),d.__s==null&&(d.__s=d.state),B.getDerivedStateFromProps!=null&&(d.__s==d.state&&(d.__s=yr({},d.__s)),yr(d.__s,B.getDerivedStateFromProps(x,d.__s))),y=d.props,b=d.state,f)B.getDerivedStateFromProps==null&&d.componentWillMount!=null&&d.componentWillMount(),d.componentDidMount!=null&&d.__h.push(d.componentDidMount);else{if(B.getDerivedStateFromProps==null&&x!==y&&d.componentWillReceiveProps!=null&&d.componentWillReceiveProps(x,U),!d.__e&&d.shouldComponentUpdate!=null&&d.shouldComponentUpdate(x,d.__s,U)===!1||e.__v===t.__v){d.props=x,d.state=d.__s,e.__v!==t.__v&&(d.__d=!1),d.__v=e,e.__e=t.__e,e.__k=t.__k,e.__k.forEach(function(z){z&&(z.__=e)}),d.__h.length&&a.push(d);break e}d.componentWillUpdate!=null&&d.componentWillUpdate(x,d.__s,U),d.componentDidUpdate!=null&&d.__h.push(function(){d.componentDidUpdate(y,b,S)})}if(d.context=U,d.props=x,d.__v=e,d.__P=i,j=ee.__r,G=0,"prototype"in B&&B.prototype.render)d.state=d.__s,d.__d=!1,j&&j(e),p=d.render(d.props,d.state,d.context);else do d.__d=!1,j&&j(e),p=d.render(d.props,d.state,d.context),d.state=d.__s;while(d.__d&&++G<25);d.state=d.__s,d.getChildContext!=null&&(r=yr(yr({},r),d.getChildContext())),f||d.getSnapshotBeforeUpdate==null||(S=d.getSnapshotBeforeUpdate(y,b)),J=p!=null&&p.type===Ht&&p.key==null?p.props.children:p,dm(i,Array.isArray(J)?J:[J],e,t,r,s,o,a,l,h),d.base=e.__e,e.__h=null,d.__h.length&&a.push(d),E&&(d.__E=d.__=null),d.__e=!1}else o==null&&e.__v===t.__v?(e.__k=t.__k,e.__e=t.__e):e.__e=pw(t.__e,e,t,r,s,o,a,h);(p=ee.diffed)&&p(e)}catch(z){e.__v=null,(h||o!=null)&&(e.__e=l,e.__h=!!h,o[o.indexOf(l)]=null),ee.__e(z,e,t)}}n(Rh,"j");function fm(i,e){ee.__c&&ee.__c(e,i),i.some(function(t){try{i=t.__h,t.__h=[],i.some(function(r){r.call(t)})}catch(r){ee.__e(r,t.__v)}})}n(fm,"z");function pw(i,e,t,r,s,o,a,l){var h,p,d,f=t.props,y=e.props,b=e.type,S=0;if(b==="svg"&&(s=!0),o!=null){for(;S<o.length;S++)if((h=o[S])&&"setAttribute"in h==!!b&&(b?h.localName===b:h.nodeType===3)){i=h,o[S]=null;break}}if(i==null){if(b===null)return document.createTextNode(y);i=s?document.createElementNS("http://www.w3.org/2000/svg",b):document.createElement(b,y.is&&y),o=null,l=!1}if(b===null)f===y||l&&i.data===y||(i.data=y);else{if(o=o&&Fn.call(i.childNodes),p=(f=t.props||Ll).dangerouslySetInnerHTML,d=y.dangerouslySetInnerHTML,!l){if(o!=null)for(f={},S=0;S<i.attributes.length;S++)f[i.attributes[S].name]=i.attributes[S].value;(d||p)&&(d&&(p&&d.__html==p.__html||d.__html===i.innerHTML)||(i.innerHTML=d&&d.__html||""))}if(cw(i,y,f,s,l),d)e.__k=[];else if(S=e.props.children,dm(i,Array.isArray(S)?S:[S],e,t,r,s&&b!=="foreignObject",o,a,o?o[0]:t.__k&&Eo(t,0),l),o!=null)for(S=o.length;S--;)o[S]!=null&&lm(o[S]);l||("value"in y&&(S=y.value)!==void 0&&(S!==i.value||b==="progress"&&!S||b==="option"&&S!==f.value)&&zl(i,"value",S,f.value,!1),"checked"in y&&(S=y.checked)!==void 0&&S!==i.checked&&zl(i,"checked",S,f.checked,!1))}return i}n(pw,"L");function mm(i,e,t){try{typeof i=="function"?i(e):i.current=e}catch(r){ee.__e(r,t)}}n(mm,"M");function gm(i,e,t){var r,s;if(ee.unmount&&ee.unmount(i),(r=i.ref)&&(r.current&&r.current!==i.__e||mm(r,null,e)),(r=i.__c)!=null){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(o){ee.__e(o,e)}r.base=r.__P=null}if(r=i.__k)for(s=0;s<r.length;s++)r[s]&&gm(r[s],e,typeof i.type!="function");t||i.__e==null||lm(i.__e),i.__e=i.__d=void 0}n(gm,"N");function fw(i,e,t){return this.constructor(i,t)}n(fw,"O");function Uh(i,e,t){var r,s,o;ee.__&&ee.__(i,e),s=(r=typeof t=="function")?null:t&&t.__k||e.__k,o=[],Rh(e,i=(!r&&t||e).__k=u(Ht,null,[i]),s||Ll,Ll,e.ownerSVGElement!==void 0,!r&&t?[t]:s?null:e.firstChild?Fn.call(e.childNodes):null,o,!r&&t?t:s?s.__e:e.firstChild,r),fm(o,i)}n(Uh,"P");function jl(i,e,t){var r,s,o,a=yr({},i.props);for(o in e)o=="key"?r=e[o]:o=="ref"?s=e[o]:a[o]=e[o];return arguments.length>2&&(a.children=arguments.length>3?Fn.call(arguments,2):t),xn(i.type,a,r||i.key,s||i.ref,null)}n(jl,"q");Fn=am.slice,ee={__e:function(i,e,t,r){for(var s,o,a;e=e.__;)if((s=e.__c)&&!s.__)try{if((o=s.constructor)&&o.getDerivedStateFromError!=null&&(s.setState(o.getDerivedStateFromError(i)),a=s.__d),s.componentDidCatch!=null&&(s.componentDidCatch(i,r||{}),a=s.__d),a)return s.__E=s}catch(l){i=l}throw i}},nm=0,uw=n(function(i){return i!=null&&i.constructor===void 0},"i"),we.prototype.setState=function(i,e){var t;t=this.__s!=null&&this.__s!==this.state?this.__s:this.__s=yr({},this.state),typeof i=="function"&&(i=i(yr({},t),this.props)),i&&yr(t,i),i!=null&&this.__v&&(e&&this.__h.push(e),im(this))},we.prototype.forceUpdate=function(i){this.__v&&(this.__e=!0,i&&this.__h.push(i),im(this))},we.prototype.render=Ht,_n=[],Bl.__r=0,hw=0;function En(i){return typeof i!="object"||i===null||!("nodeType"in i)?!1:i.nodeType===Node.ELEMENT_NODE}n(En,"isDOMElement");function On(i,e){return e===void 0&&(e=document),typeof i=="string"?e.querySelector(i):En(i)?i:null}n(On,"findDOMElement");function mw(i){for(var e;i&&!i.dir;)i=i.parentNode;return(e=i)==null?void 0:e.dir}n(mw,"getTextDirection");var Hl=mw;var ve=class{constructor(e,t){t===void 0&&(t={}),this.uppy=e,this.opts=t}getPluginState(){let{plugins:e}=this.uppy.getState();return e[this.id]||{}}setPluginState(e){let{plugins:t}=this.uppy.getState();this.uppy.setState({plugins:{...t,[this.id]:{...t[this.id],...e}}})}setOptions(e){this.opts={...this.opts,...e},this.setPluginState(),this.i18nInit()}i18nInit(){let e=new Xr([this.defaultLocale,this.uppy.locale,this.opts.locale]);this.i18n=e.translate.bind(e),this.i18nArray=e.translateArray.bind(e),this.setPluginState()}addTarget(){throw new Error("Extend the addTarget method to add your plugin to another plugin's target")}install(){}uninstall(){}render(){throw new Error("Extend the render method to add your plugin to a DOM element")}update(){}afterUpdate(){}};n(ve,"BasePlugin");function ym(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError("attempted to use private field on non-instance");return i}n(ym,"_classPrivateFieldLooseBase");var gw=0;function yw(i){return"__private_"+gw+++"_"+i}n(yw,"_classPrivateFieldLooseKey");function vw(i){let e=null,t=null;return function(){for(var r=arguments.length,s=new Array(r),o=0;o<r;o++)s[o]=arguments[o];return t=s,e||(e=Promise.resolve().then(()=>(e=null,i(...t)))),e}}n(vw,"debounce");var Cn=yw("updateUI"),Oo=class extends ve{constructor(){super(...arguments),Object.defineProperty(this,Cn,{writable:!0,value:void 0})}getTargetPlugin(e){let t;if(typeof e=="object"&&e instanceof Oo)t=e;else if(typeof e=="function"){let r=e;this.uppy.iteratePlugins(s=>{s instanceof r&&(t=s)})}return t}mount(e,t){let r=t.id,s=On(e);if(s){this.isTargetDOMEl=!0;let l=document.createElement("div");return l.classList.add("uppy-Root"),ym(this,Cn)[Cn]=vw(h=>{this.uppy.getPlugin(this.id)&&(Uh(this.render(h),l),this.afterUpdate())}),this.uppy.log(`Installing ${r} to a DOM element '${e}'`),this.opts.replaceTargetContent&&(s.innerHTML=""),Uh(this.render(this.uppy.getState()),l),this.el=l,s.appendChild(l),l.dir=this.opts.direction||Hl(l)||"ltr",this.onMount(),this.el}let o=this.getTargetPlugin(e);if(o)return this.uppy.log(`Installing ${r} to ${o.id}`),this.parent=o,this.el=o.addTarget(t),this.onMount(),this.el;this.uppy.log(`Not installing ${r}`);let a=`Invalid target option given to ${r}.`;throw typeof e=="function"?a+=" The given target is not a Plugin class. Please check that you're not specifying a React Component instead of a plugin. If you are using @uppy/* packages directly, make sure you have only 1 version of @uppy/core installed: run `npm ls @uppy/core` on the command line and verify that all the versions match and are deduped correctly.":a+="If you meant to target an HTML element, please make sure that the element exists. Check that the <script> tag initializing Uppy is right before the closing </body> tag at the end of the page. (see https://github.com/transloadit/uppy/issues/1042)\n\nIf you meant to target a plugin, please confirm that your `import` statements or `require` calls are correct.",new Error(a)}update(e){if(this.el!=null){var t,r;(t=(r=ym(this,Cn))[Cn])==null||t.call(r,e)}}unmount(){if(this.isTargetDOMEl){var e;(e=this.el)==null||e.remove()}this.onUnmount()}onMount(){}onUnmount(){}};n(Oo,"UIPlugin");var Z=Oo;var Bh={};Tl(Bh,{Provider:()=>be,RequestClient:()=>tt,SearchProvider:()=>Yr,Socket:()=>Co});var xm=de(Pm(),1);var ww=Object.prototype.toString,Sw=n(i=>ww.call(i)==="[object Error]","isError"),Pw=new Set(["Failed to fetch","NetworkError when attempting to fetch resource.","The Internet connection appears to be offline.","Load failed","Network request failed","fetch failed"]);function kh(i){return i&&Sw(i)&&i.name==="TypeError"&&typeof i.message=="string"?i.message==="Load failed"?i.stack===void 0:Pw.has(i.message):!1}n(kh,"isNetworkError");var Ps=class extends Error{constructor(e){super(),e instanceof Error?(this.originalError=e,{message:e}=e):(this.originalError=new Error(e),this.originalError.stack=this.stack),this.name="AbortError",this.message=e}};n(Ps,"AbortError");var _m=n((i,e,t)=>{let r=t.retries-(e-1);return i.attemptNumber=e,i.retriesLeft=r,i},"decorateErrorWithCounts");async function $l(i,e){return new Promise((t,r)=>{e={onFailedAttempt(){},retries:10,...e};let s=xm.default.operation(e),o=n(()=>{s.stop(),r(e.signal?.reason)},"abortHandler");e.signal&&!e.signal.aborted&&e.signal.addEventListener("abort",o,{once:!0});let a=n(()=>{e.signal?.removeEventListener("abort",o),s.stop()},"cleanUp");s.attempt(async l=>{try{let h=await i(l);a(),t(h)}catch(h){try{if(!(h instanceof Error))throw new TypeError(`Non-error was thrown: "${h}". You should only throw errors.`);if(h instanceof Ps)throw h.originalError;if(h instanceof TypeError&&!kh(h))throw h;if(await e.onFailedAttempt(_m(h,l,e)),!s.retry(h))throw s.mainError()}catch(p){_m(p,l,e),a(),r(p)}}})})}n($l,"pRetry");var ql=class extends Error{constructor(e,t){t===void 0&&(t=null),super("This looks like a network error, the endpoint might be blocked by an internet provider or a firewall."),this.cause=e,this.isNetworkError=!0,this.request=t}};n(ql,"NetworkError");var Pi=ql;function _s(){return fetch(...arguments).catch(i=>{throw i.name==="AbortError"?i:new Pi(i)})}n(_s,"fetchWithNetworkError");var Vl=class extends Error{constructor(e,t){super(e),this.cause=t?.cause,this.cause&&Ct(this.cause,"isNetworkError")?this.isNetworkError=this.cause.isNetworkError:this.isNetworkError=!1}};n(Vl,"ErrorWithCause");var vr=Vl;var Fm=de(Rl(),1);function _w(i,e,t){let{progress:r,bytesUploaded:s,bytesTotal:o}=e;r&&(i.uppy.log(`Upload progress: ${r}`),i.uppy.emit("upload-progress",t,{uploader:i,bytesUploaded:s,bytesTotal:o}))}n(_w,"emitSocketProgress");var Em=(0,Fm.default)(_w,300,{leading:!0,trailing:!0});function Dh(i){var e;let r=(e=/^(?:https?:\/\/|\/\/)?(?:[^@\n]+@)?(?:www\.)?([^\n]+)/i.exec(i))==null?void 0:e[1];return`${/^http:\/\//i.test(i)?"ws":"wss"}://${r}`}n(Dh,"getSocketHost");var Wl=class extends Error{constructor(){super("Authorization required"),this.name="AuthError",this.isAuthError=!0}};n(Wl,"AuthError");var Gl=Wl;var Om;function zi(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError("attempted to use private field on non-instance");return i}n(zi,"_classPrivateFieldLooseBase");var xw=0;function Kl(i){return"__private_"+xw+++"_"+i}n(Kl,"_classPrivateFieldLooseKey");var Fw={version:"3.6.1"};function Ew(i){return i.replace(/\/$/,"")}n(Ew,"stripSlash");var Cm=10,Ow=5*60*1e3,Cw=401,Rn=class extends Error{constructor(e){let{statusCode:t,message:r}=e;super(r),this.statusCode=void 0,this.statusCode=t}};n(Rn,"HttpError");async function Tw(i){if(i.status===Cw)throw new Gl;if(i.ok)return i.json();let e=`Failed request with status: ${i.status}. ${i.statusText}`;try{let t=await i.json();e=t.message?`${e} message: ${t.message}`:e,e=t.requestId?`${e} request-Id: ${t.requestId}`:e}catch{}throw new Rn({statusCode:i.status,message:e})}n(Tw,"handleJSONResponse");var Tn=new Map,br=Kl("companionHeaders"),xs=Kl("getUrl"),Ih=Kl("requestSocketToken"),An=Kl("awaitRemoteFileUpload");Om=Symbol.for("uppy test: getCompanionHeaders");var tt=class{constructor(e,t){Object.defineProperty(this,An,{value:Rw}),Object.defineProperty(this,xs,{value:Aw}),Object.defineProperty(this,br,{writable:!0,value:void 0}),Object.defineProperty(this,Ih,{writable:!0,value:async r=>{let{file:s,postBody:o,signal:a}=r;if(s.remote.url==null)throw new Error("Cannot connect to an undefined URL");return(await this.post(s.remote.url,{...s.remote.body,...o},a)).token}}),this.uppy=e,this.opts=t,this.onReceiveResponse=this.onReceiveResponse.bind(this),zi(this,br)[br]=t?.companionHeaders}setCompanionHeaders(e){zi(this,br)[br]=e}[Om](){return zi(this,br)[br]}get hostname(){let{companion:e}=this.uppy.getState(),t=this.opts.companionUrl;return Ew(e&&e[t]?e[t]:t)}async headers(){return{...{Accept:"application/json","Content-Type":"application/json","Uppy-Versions":`@uppy/companion-client=${tt.VERSION}`},...zi(this,br)[br]}}onReceiveResponse(e){let{headers:t}=e,s=this.uppy.getState().companion||{},o=this.opts.companionUrl;t.has("i-am")&&t.get("i-am")!==s[o]&&this.uppy.setState({companion:{...s,[o]:t.get("i-am")}})}async preflight(e){let t=Tn.get(this.hostname);if(t!=null)return t;let r=["accept","content-type","uppy-auth-token"],s=(async()=>{try{let a=(await fetch(zi(this,xs)[xs](e),{method:"OPTIONS"})).headers.get("access-control-allow-headers");if(a==null||a==="*")return Tn.set(this.hostname,r),r;this.uppy.log(`[CompanionClient] adding allowed preflight headers to companion cache: ${this.hostname} ${a}`);let l=a.split(",").map(h=>h.trim().toLowerCase());return Tn.set(this.hostname,l),l}catch(o){return this.uppy.log(`[CompanionClient] unable to make preflight request ${o}`,"warning"),Tn.delete(this.hostname),r}})();return Tn.set(this.hostname,s),s}async preflightAndHeaders(e){let[t,r]=await Promise.all([this.preflight(e),this.headers()]);return Object.fromEntries(Object.entries(r).filter(s=>{let[o]=s;return t.includes(o.toLowerCase())?!0:(this.uppy.log(`[CompanionClient] excluding disallowed header ${o}`),!1)}))}async request(e){let{path:t,method:r="GET",data:s,skipPostResponse:o,signal:a}=e;try{let l=await this.preflightAndHeaders(t),h=await _s(zi(this,xs)[xs](t),{method:r,signal:a,headers:l,credentials:this.opts.companionCookiesRule||"same-origin",body:s?JSON.stringify(s):null});return o||this.onReceiveResponse(h),await Tw(h)}catch(l){throw l instanceof Gl||l.name==="AbortError"?l:new vr(`Could not ${r} ${zi(this,xs)[xs](t)}`,{cause:l})}}async get(e,t){return t===void 0&&(t=void 0),typeof t=="boolean"&&(t={skipPostResponse:t}),this.request({...t,path:e})}async post(e,t,r){return r===void 0&&(r=void 0),typeof r=="boolean"&&(r={skipPostResponse:r}),this.request({...r,path:e,method:"POST",data:t})}async delete(e,t,r){return t===void 0&&(t=void 0),typeof r=="boolean"&&(r={skipPostResponse:r}),this.request({...r,path:e,method:"DELETE",data:t})}async uploadRemoteFile(e,t,r){var s=this;r===void 0&&(r={});try{let{signal:o,getQueue:a}=r;return await $l(async()=>{var l;let h=(l=this.uppy.getFile(e.id))==null?void 0:l.serverToken;if(h!=null)return this.uppy.log(`Connecting to exiting websocket ${h}`),zi(this,An)[An]({file:e,queue:a(),signal:o});let d=await a().wrapPromiseFunction(async function(){try{return await zi(s,Ih)[Ih](...arguments)}catch(f){if(f instanceof Gl)throw new Ps(f);if(f.cause==null)throw f;let y=f.cause,b=n(()=>[408,409,429,418,423].includes(y.statusCode)||y.statusCode>=500&&y.statusCode<=599&&![501,505].includes(y.statusCode),"isRetryableHttpError");throw y instanceof Rn&&!b()?new Ps(y):y}},{priority:-1})({file:e,postBody:t,signal:o}).abortOn(o);if(this.uppy.getFile(e.id))return this.uppy.setFileState(e.id,{serverToken:d}),zi(this,An)[An]({file:this.uppy.getFile(e.id),queue:a(),signal:o})},{retries:Cm,signal:o,onFailedAttempt:l=>this.uppy.log(`Retrying upload due to: ${l.message}`,"warning")})}catch(o){if(o.name==="AbortError")return;throw this.uppy.emit("upload-error",e,o),o}}};n(tt,"RequestClient");function Aw(i){return/^(https?:|)\/\//.test(i)?i:`${this.hostname}/${i}`}n(Aw,"_getUrl2");async function Rw(i){let{file:e,queue:t,signal:r}=i,s,{capabilities:o}=this.uppy.getState();try{return await new Promise((a,l)=>{let h=e.serverToken,p=Dh(e.remote.companionUrl),d,f,y,{isPaused:b}=e,S=n((z,K)=>{if(d==null||d.readyState!==d.OPEN){var oe;this.uppy.log(`Cannot send "${z}" to socket ${e.id} because the socket state was ${String((oe=d)==null?void 0:oe.readyState)}`,"warning");return}d.send(JSON.stringify({action:z,payload:K??{}}))},"socketSend");function E(){o.resumableUploads&&S(b?"pause":"resume")}n(E,"sendState");let x=n(async()=>{f&&f.abort(),f=new AbortController;let z=n(oe=>{var Be;this.uppy.setFileState(e.id,{serverToken:null}),(Be=f)==null||Be.abort==null||Be.abort(),l(oe)},"onFatalError");function K(){clearTimeout(y),!b&&(y=setTimeout(()=>z(new Error("Timeout waiting for message from Companion socket")),Ow))}n(K,"resetActivityTimeout");try{await t.wrapPromiseFunction(async()=>{await $l(n(async()=>new Promise((Be,Je)=>{d=new WebSocket(`${p}/api/${h}`),K(),d.addEventListener("close",()=>{d=void 0,Je(new Error("Socket closed unexpectedly"))}),d.addEventListener("error",We=>{this.uppy.log(`Companion socket error ${JSON.stringify(We)}, closing socket`,"warning"),d.close()}),d.addEventListener("open",()=>{E()}),d.addEventListener("message",We=>{K();try{let{action:ze,payload:xe}=JSON.parse(We.data);switch(ze){case"progress":{Em(this,xe,e);break}case"success":{var _e;this.uppy.emit("upload-success",e,{uploadURL:xe.url}),(_e=f)==null||_e.abort==null||_e.abort(),a();break}case"error":{let{message:ui}=xe.error;throw Object.assign(new Error(ui),{cause:xe.error})}default:this.uppy.log(`Companion socket unknown action ${ze}`,"warning")}}catch(ze){z(ze)}});let wt=n(()=>{this.uppy.log(`Closing socket ${e.id}`,"info"),clearTimeout(y),d&&d.close(),d=void 0},"closeSocket");f.signal.addEventListener("abort",()=>{wt()})}),"reconnectWebsocket"),{retries:Cm,signal:f.signal,onFailedAttempt:()=>{f.signal.aborted||this.uppy.log(`Retrying websocket ${e.id}`,"info")}})})().abortOn(f.signal)}catch(oe){if(f.signal.aborted)return;z(oe)}},"createWebsocket"),F=n(z=>{if(o.resumableUploads)if(b=z,d&&E(),z){var K;(K=f)==null||K.abort==null||K.abort()}else x()},"pause"),U=n(z=>{var K;o.individualCancellation&&z.id===e.id&&(S("cancel"),(K=f)==null||K.abort==null||K.abort(),this.uppy.log(`upload ${e.id} was removed`,"info"),a())},"onFileRemove"),j=n(z=>{var K;let{reason:oe}=z;oe==="user"&&S("cancel"),(K=f)==null||K.abort==null||K.abort(),this.uppy.log(`upload ${e.id} was canceled`,"info"),a()},"onCancelAll"),G=n((z,K)=>{z===e.id&&F(K)},"onFilePausedChange"),J=n(()=>F(!0),"onPauseAll"),B=n(()=>F(!1),"onResumeAll");this.uppy.on("file-removed",U),this.uppy.on("cancel-all",j),this.uppy.on("upload-pause",G),this.uppy.on("pause-all",J),this.uppy.on("resume-all",B),s=n(()=>{this.uppy.off("file-removed",U),this.uppy.off("cancel-all",j),this.uppy.off("upload-pause",G),this.uppy.off("pause-all",J),this.uppy.off("resume-all",B)},"removeEventHandlers"),r.addEventListener("abort",()=>{var z;(z=f)==null||z.abort()}),x()})}finally{s?.()}}n(Rw,"_awaitRemoteFileUpload2");tt.VERSION=Fw.version;var Nh={};Tl(Nh,{getItem:()=>kw,removeItem:()=>Dw,setItem:()=>Uw});function Uw(i,e){return new Promise(t=>{localStorage.setItem(i,e),t()})}n(Uw,"setItem");function kw(i){return Promise.resolve(localStorage.getItem(i))}n(kw,"getItem");function Dw(i){return new Promise(e=>{localStorage.removeItem(i),e()})}n(Dw,"removeItem");function wr(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError("attempted to use private field on non-instance");return i}n(wr,"_classPrivateFieldLooseBase");var Iw=0;function Mh(i){return"__private_"+Iw+++"_"+i}n(Mh,"_classPrivateFieldLooseKey");var Nw=n(i=>i.split("-").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "),"getName");function Mw(){return location.origin}n(Mw,"getOrigin");function Tm(i){if(typeof i=="string")return new RegExp(`^${i}$`);if(i instanceof RegExp)return i}n(Tm,"getRegex");function Lw(i,e){return(Array.isArray(e)?e.map(Tm):[Tm(e)]).some(r=>r?.test(i)||r?.test(`${i}/`))}n(Lw,"isOriginAllowed");var _i=Mh("refreshingTokenPromise"),Un=Mh("getAuthToken"),kn=Mh("removeAuthToken"),be=class extends tt{constructor(e,t){super(e,t),Object.defineProperty(this,kn,{value:zw}),Object.defineProperty(this,Un,{value:Bw}),Object.defineProperty(this,_i,{writable:!0,value:void 0}),this.provider=t.provider,this.id=this.provider,this.name=this.opts.name||Nw(this.id),this.pluginId=this.opts.pluginId,this.tokenKey=`companion-${this.pluginId}-auth-token`,this.companionKeysParams=this.opts.companionKeysParams,this.preAuthToken=null}async headers(){let[e,t]=await Promise.all([super.headers(),wr(this,Un)[Un]()]),r={};return t&&(r["uppy-auth-token"]=t),this.companionKeysParams&&(r["uppy-credentials-params"]=btoa(JSON.stringify({params:this.companionKeysParams}))),{...e,...r}}onReceiveResponse(e){super.onReceiveResponse(e);let t=this.uppy.getPlugin(this.pluginId),s=t.getPluginState().authenticated?e.status!==401:e.status<400;return t.setPluginState({authenticated:s}),e}async setAuthToken(e){return this.uppy.getPlugin(this.pluginId).storage.setItem(this.tokenKey,e)}async ensurePreAuth(){if(this.companionKeysParams&&!this.preAuthToken&&(await this.fetchPreAuthToken(),!this.preAuthToken))throw new Error("Could not load authentication data required for third-party login. Please try again later.")}authUrl(e){e===void 0&&(e={});let t=new URLSearchParams({state:btoa(JSON.stringify({origin:Mw()})),...e});return this.preAuthToken&&t.set("uppyPreAuthToken",this.preAuthToken),`${this.hostname}/${this.id}/connect?${t}`}async login(e){return await this.ensurePreAuth(),new Promise((t,r)=>{let s=this.authUrl(e),o=window.open(s,"_blank"),a=n(l=>{if(l.source!==o){let d="";try{d=JSON.stringify(l.data)}catch{}this.uppy.log(`ignoring event from unknown source ${d}`,"warning");return}let{companionAllowedHosts:h}=this.uppy.getPlugin(this.pluginId).opts;if(!Lw(l.origin,h)){r(new Error(`rejecting event from ${l.origin} vs allowed pattern ${h}`));return}let p=typeof l.data=="string"?JSON.parse(l.data):l.data;if(p.error){let{uppy:d}=this,f=d.i18n("authAborted");d.info({message:f},"warning",5e3),r(new Error("auth aborted"));return}if(!p.token){r(new Error("did not receive token from auth window"));return}o.close(),window.removeEventListener("message",a),this.setAuthToken(p.token).then(()=>t()).catch(r)},"handleToken");window.addEventListener("message",a)})}refreshTokenUrl(){return`${this.hostname}/${this.id}/refresh-token`}fileUrl(e){return`${this.hostname}/${this.id}/get/${e}`}async request(){await wr(this,_i)[_i];try{return await super.request(...arguments)}catch(e){let t=await wr(this,Un)[Un]();if(!e.isAuthError||!t)throw e;return wr(this,_i)[_i]==null&&(wr(this,_i)[_i]=(async()=>{try{this.uppy.log("[CompanionClient] Refreshing expired auth token","info");let r=await super.request({path:this.refreshTokenUrl(),method:"POST"});await this.setAuthToken(r.uppyAuthToken)}catch(r){throw r.isAuthError&&await wr(this,kn)[kn](),e}finally{wr(this,_i)[_i]=void 0}})()),await wr(this,_i)[_i],super.request(...arguments)}}async fetchPreAuthToken(){if(this.companionKeysParams)try{let e=await this.post(`${this.id}/preauth/`,{params:this.companionKeysParams});this.preAuthToken=e.token}catch(e){this.uppy.log(`[CompanionClient] unable to fetch preAuthToken ${e}`,"warning")}}list(e,t){return this.get(`${this.id}/list/${e||""}`,t)}async logout(e){let t=await this.get(`${this.id}/logout`,e);return await wr(this,kn)[kn](),t}static initPlugin(e,t,r){if(e.type="acquirer",e.files=[],r&&(e.opts={...r,...t}),t.serverUrl||t.serverPattern)throw new Error("`serverUrl` and `serverPattern` have been renamed to `companionUrl` and `companionAllowedHosts` respectively in the 0.30.5 release. Please consult the docs (for example, https://uppy.io/docs/instagram/ for the Instagram plugin) and use the updated options.`");if(t.companionAllowedHosts){let s=t.companionAllowedHosts;if(typeof s!="string"&&!Array.isArray(s)&&!(s instanceof RegExp))throw new TypeError(`${e.id}: the option "companionAllowedHosts" must be one of string, Array, RegExp`);e.opts.companionAllowedHosts=s}else/^(?!https?:\/\/).*$/i.test(t.companionUrl)?e.opts.companionAllowedHosts=`https://${t.companionUrl.replace(/^\/\//,"")}`:e.opts.companionAllowedHosts=new URL(t.companionUrl).origin;e.storage=e.opts.storage||Nh}};n(be,"Provider");async function Bw(){return this.uppy.getPlugin(this.pluginId).storage.getItem(this.tokenKey)}n(Bw,"_getAuthToken2");async function zw(){return this.uppy.getPlugin(this.pluginId).storage.removeItem(this.tokenKey)}n(zw,"_removeAuthToken2");var jw=n(i=>i.split("-").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" "),"getName"),Yr=class extends tt{constructor(e,t){super(e,t),this.provider=t.provider,this.id=this.provider,this.name=this.opts.name||jw(this.id),this.pluginId=this.opts.pluginId}fileUrl(e){return`${this.hostname}/search/${this.id}/get/${e}`}search(e,t){return this.get(`search/${this.id}/list?q=${encodeURIComponent(e)}${t?`&${t}`:""}`)}};n(Yr,"SearchProvider");var Um=de(yh(),1);var Am,Rm;function Me(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError("attempted to use private field on non-instance");return i}n(Me,"_classPrivateFieldLooseBase");var Hw=0;function Dn(i){return"__private_"+Hw+++"_"+i}n(Dn,"_classPrivateFieldLooseKey");var Sr=Dn("queued"),Fs=Dn("emitter"),xi=Dn("isOpen"),it=Dn("socket"),Lh=Dn("handleMessage");Am=Symbol.for("uppy test: getSocket");Rm=Symbol.for("uppy test: getQueued");var Co=class{constructor(e){Object.defineProperty(this,Sr,{writable:!0,value:[]}),Object.defineProperty(this,Fs,{writable:!0,value:(0,Um.default)()}),Object.defineProperty(this,xi,{writable:!0,value:!1}),Object.defineProperty(this,it,{writable:!0,value:void 0}),Object.defineProperty(this,Lh,{writable:!0,value:t=>{try{let r=JSON.parse(t.data);this.emit(r.action,r.payload)}catch(r){console.log(r)}}}),this.opts=e,(!e||e.autoOpen!==!1)&&this.open()}get isOpen(){return Me(this,xi)[xi]}[Am](){return Me(this,it)[it]}[Rm](){return Me(this,Sr)[Sr]}open(){Me(this,it)[it]==null&&(Me(this,it)[it]=new WebSocket(this.opts.target),Me(this,it)[it].onopen=()=>{for(Me(this,xi)[xi]=!0;Me(this,Sr)[Sr].length>0&&Me(this,xi)[xi];){let e=Me(this,Sr)[Sr].shift();this.send(e.action,e.payload)}},Me(this,it)[it].onclose=()=>{Me(this,xi)[xi]=!1,Me(this,it)[it]=null},Me(this,it)[it].onmessage=Me(this,Lh)[Lh])}close(){var e;(e=Me(this,it)[it])==null||e.close()}send(e,t){if(!Me(this,xi)[xi]){Me(this,Sr)[Sr].push({action:e,payload:t});return}Me(this,it)[it].send(JSON.stringify({action:e,payload:t}))}on(e,t){Me(this,Fs)[Fs].on(e,t)}emit(e,t){Me(this,Fs)[Fs].emit(e,t)}once(e,t){Me(this,Fs)[Fs].once(e,t)}};n(Co,"UppySocket");var td={};Tl(td,{ProviderViews:()=>Te,SearchProviderViews:()=>ji,defaultPickerIcon:()=>ko});var jh=de(Dm(),1);var To=class extends Error{constructor(e){super(e),this.name="TimeoutError"}};n(To,"TimeoutError");var Yl=class extends Error{constructor(e){super(),this.name="AbortError",this.message=e}};n(Yl,"AbortError");var Im=n(i=>globalThis.DOMException===void 0?new Yl(i):new DOMException(i),"getDOMException"),Nm=n(i=>{let e=i.reason===void 0?Im("This operation was aborted."):i.reason;return e instanceof Error?e:Im(e)},"getAbortedReason");function Hh(i,e,t,r){let s,o=new Promise((a,l)=>{if(typeof e!="number"||Math.sign(e)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${e}\``);if(e===Number.POSITIVE_INFINITY){a(i);return}if(r={customTimers:{setTimeout,clearTimeout},...r},r.signal){let{signal:h}=r;h.aborted&&l(Nm(h)),h.addEventListener("abort",()=>{l(Nm(h))})}s=r.customTimers.setTimeout.call(void 0,()=>{if(typeof t=="function"){try{a(t())}catch(d){l(d)}return}let h=typeof t=="string"?t:`Promise timed out after ${e} milliseconds`,p=t instanceof Error?t:new To(h);typeof i.cancel=="function"&&i.cancel(),l(p)},e),(async()=>{try{a(await i)}catch(h){l(h)}finally{r.customTimers.clearTimeout.call(void 0,s)}})()});return o.clear=()=>{clearTimeout(s),s=void 0},o}n(Hh,"pTimeout");function $h(i,e,t){let r=0,s=i.length;for(;s>0;){let o=Math.trunc(s/2),a=r+o;t(i[a],e)<=0?(r=++a,s-=o+1):s=o}return r}n($h,"lowerBound");var Es=function(i,e,t,r){if(t==="a"&&!r)throw new TypeError("Private accessor was defined without a getter");if(typeof e=="function"?i!==e||!r:!e.has(i))throw new TypeError("Cannot read private member from an object whose class did not declare it");return t==="m"?r:t==="a"?r.call(i):r?r.value:e.get(i)},Pr,Ql=class{constructor(){Pr.set(this,[])}enqueue(e,t){t={priority:0,...t};let r={priority:t.priority,run:e};if(this.size&&Es(this,Pr,"f")[this.size-1].priority>=t.priority){Es(this,Pr,"f").push(r);return}let s=$h(Es(this,Pr,"f"),r,(o,a)=>a.priority-o.priority);Es(this,Pr,"f").splice(s,0,r)}dequeue(){let e=Es(this,Pr,"f").shift();return e?.run}filter(e){return Es(this,Pr,"f").filter(t=>t.priority===e.priority).map(t=>t.run)}get size(){return Es(this,Pr,"f").length}};n(Ql,"PriorityQueue");Pr=new WeakMap;var Mm=Ql;var Ue=function(i,e,t,r,s){if(r==="m")throw new TypeError("Private method is not writable");if(r==="a"&&!s)throw new TypeError("Private accessor was defined without a setter");if(typeof e=="function"?i!==e||!s:!e.has(i))throw new TypeError("Cannot write private member to an object whose class did not declare it");return r==="a"?s.call(i,t):s?s.value=t:e.set(i,t),t},W=function(i,e,t,r){if(t==="a"&&!r)throw new TypeError("Private accessor was defined without a getter");if(typeof e=="function"?i!==e||!r:!e.has(i))throw new TypeError("Cannot read private member from an object whose class did not declare it");return t==="m"?r:t==="a"?r.call(i):r?r.value:e.get(i)},He,Mn,Ln,Jr,su,Bn,Jl,Fi,Nn,Xt,Zl,Yt,zn,Qr,eu,Lm,Bm,Hm,zm,jm,tu,qh,Vh,ou,$m,iu,jn=class extends Error{};n(jn,"AbortError");var ru=class extends jh.default{constructor(e){var t,r,s,o;if(super(),He.add(this),Mn.set(this,void 0),Ln.set(this,void 0),Jr.set(this,0),su.set(this,void 0),Bn.set(this,void 0),Jl.set(this,0),Fi.set(this,void 0),Nn.set(this,void 0),Xt.set(this,void 0),Zl.set(this,void 0),Yt.set(this,0),zn.set(this,void 0),Qr.set(this,void 0),eu.set(this,void 0),Object.defineProperty(this,"timeout",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),e={carryoverConcurrencyCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:Mm,...e},!(typeof e.intervalCap=="number"&&e.intervalCap>=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${(r=(t=e.intervalCap)===null||t===void 0?void 0:t.toString())!==null&&r!==void 0?r:""}\` (${typeof e.intervalCap})`);if(e.interval===void 0||!(Number.isFinite(e.interval)&&e.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${(o=(s=e.interval)===null||s===void 0?void 0:s.toString())!==null&&o!==void 0?o:""}\` (${typeof e.interval})`);Ue(this,Mn,e.carryoverConcurrencyCount,"f"),Ue(this,Ln,e.intervalCap===Number.POSITIVE_INFINITY||e.interval===0,"f"),Ue(this,su,e.intervalCap,"f"),Ue(this,Bn,e.interval,"f"),Ue(this,Xt,new e.queueClass,"f"),Ue(this,Zl,e.queueClass,"f"),this.concurrency=e.concurrency,this.timeout=e.timeout,Ue(this,eu,e.throwOnTimeout===!0,"f"),Ue(this,Qr,e.autoStart===!1,"f")}get concurrency(){return W(this,zn,"f")}set concurrency(e){if(!(typeof e=="number"&&e>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${e}\` (${typeof e})`);Ue(this,zn,e,"f"),W(this,He,"m",ou).call(this)}async add(e,t={}){return t={timeout:this.timeout,throwOnTimeout:W(this,eu,"f"),...t},new Promise((r,s)=>{W(this,Xt,"f").enqueue(async()=>{var o,a,l;Ue(this,Yt,(a=W(this,Yt,"f"),a++,a),"f"),Ue(this,Jr,(l=W(this,Jr,"f"),l++,l),"f");try{if(!((o=t.signal)===null||o===void 0)&&o.aborted)throw new jn("The task was aborted.");let h=e({signal:t.signal});t.timeout&&(h=Hh(Promise.resolve(h),t.timeout)),t.signal&&(h=Promise.race([h,W(this,He,"m",$m).call(this,t.signal)]));let p=await h;r(p),this.emit("completed",p)}catch(h){if(h instanceof To&&!t.throwOnTimeout){r();return}s(h),this.emit("error",h)}finally{W(this,He,"m",Hm).call(this)}},t),this.emit("add"),W(this,He,"m",tu).call(this)})}async addAll(e,t){return Promise.all(e.map(async r=>this.add(r,t)))}start(){return W(this,Qr,"f")?(Ue(this,Qr,!1,"f"),W(this,He,"m",ou).call(this),this):this}pause(){Ue(this,Qr,!0,"f")}clear(){Ue(this,Xt,new(W(this,Zl,"f")),"f")}async onEmpty(){W(this,Xt,"f").size!==0&&await W(this,He,"m",iu).call(this,"empty")}async onSizeLessThan(e){W(this,Xt,"f").size<e||await W(this,He,"m",iu).call(this,"next",()=>W(this,Xt,"f").size<e)}async onIdle(){W(this,Yt,"f")===0&&W(this,Xt,"f").size===0||await W(this,He,"m",iu).call(this,"idle")}get size(){return W(this,Xt,"f").size}sizeBy(e){return W(this,Xt,"f").filter(e).length}get pending(){return W(this,Yt,"f")}get isPaused(){return W(this,Qr,"f")}};n(ru,"PQueue");Mn=new WeakMap,Ln=new WeakMap,Jr=new WeakMap,su=new WeakMap,Bn=new WeakMap,Jl=new WeakMap,Fi=new WeakMap,Nn=new WeakMap,Xt=new WeakMap,Zl=new WeakMap,Yt=new WeakMap,zn=new WeakMap,Qr=new WeakMap,eu=new WeakMap,He=new WeakSet,Lm=n(function(){return W(this,Ln,"f")||W(this,Jr,"f")<W(this,su,"f")},"_PQueue_doesIntervalAllowAnother_get"),Bm=n(function(){return W(this,Yt,"f")<W(this,zn,"f")},"_PQueue_doesConcurrentAllowAnother_get"),Hm=n(function(){var e;Ue(this,Yt,(e=W(this,Yt,"f"),e--,e),"f"),W(this,He,"m",tu).call(this),this.emit("next")},"_PQueue_next"),zm=n(function(){W(this,He,"m",Vh).call(this),W(this,He,"m",qh).call(this),Ue(this,Nn,void 0,"f")},"_PQueue_onResumeInterval"),jm=n(function(){let e=Date.now();if(W(this,Fi,"f")===void 0){let t=W(this,Jl,"f")-e;if(t<0)Ue(this,Jr,W(this,Mn,"f")?W(this,Yt,"f"):0,"f");else return W(this,Nn,"f")===void 0&&Ue(this,Nn,setTimeout(()=>{W(this,He,"m",zm).call(this)},t),"f"),!0}return!1},"_PQueue_isIntervalPaused_get"),tu=n(function(){if(W(this,Xt,"f").size===0)return W(this,Fi,"f")&&clearInterval(W(this,Fi,"f")),Ue(this,Fi,void 0,"f"),this.emit("empty"),W(this,Yt,"f")===0&&this.emit("idle"),!1;if(!W(this,Qr,"f")){let e=!W(this,He,"a",jm);if(W(this,He,"a",Lm)&&W(this,He,"a",Bm)){let t=W(this,Xt,"f").dequeue();return t?(this.emit("active"),t(),e&&W(this,He,"m",qh).call(this),!0):!1}}return!1},"_PQueue_tryToStartAnother"),qh=n(function(){W(this,Ln,"f")||W(this,Fi,"f")!==void 0||(Ue(this,Fi,setInterval(()=>{W(this,He,"m",Vh).call(this)},W(this,Bn,"f")),"f"),Ue(this,Jl,Date.now()+W(this,Bn,"f"),"f"))},"_PQueue_initializeIntervalIfNeeded"),Vh=n(function(){W(this,Jr,"f")===0&&W(this,Yt,"f")===0&&W(this,Fi,"f")&&(clearInterval(W(this,Fi,"f")),Ue(this,Fi,void 0,"f")),Ue(this,Jr,W(this,Mn,"f")?W(this,Yt,"f"):0,"f"),W(this,He,"m",ou).call(this)},"_PQueue_onInterval"),ou=n(function(){for(;W(this,He,"m",tu).call(this););},"_PQueue_processQueue"),$m=n(async function(e){return new Promise((t,r)=>{e.addEventListener("abort",()=>{r(new jn("The task was aborted."))},{once:!0})})},"_PQueue_throwOnAbort"),iu=n(async function(e,t){return new Promise(r=>{let s=n(()=>{t&&!t()||(this.off(e,s),r())},"listener");this.on(e,s)})},"_PQueue_onEvent");var qm=ru;function Vw(){return u("svg",{width:"26",height:"26",viewBox:"0 0 26 26",xmlns:"http://www.w3.org/2000/svg"},u("g",{fill:"none","fill-rule":"evenodd"},u("circle",{fill:"#FFF",cx:"13",cy:"13",r:"13"}),u("path",{d:"M21.64 13.205c0-.639-.057-1.252-.164-1.841H13v3.481h4.844a4.14 4.14 0 01-1.796 2.716v2.259h2.908c1.702-1.567 2.684-3.875 2.684-6.615z",fill:"#4285F4","fill-rule":"nonzero"}),u("path",{d:"M13 22c2.43 0 4.467-.806 5.956-2.18l-2.908-2.259c-.806.54-1.837.86-3.048.86-2.344 0-4.328-1.584-5.036-3.711H4.957v2.332A8.997 8.997 0 0013 22z",fill:"#34A853","fill-rule":"nonzero"}),u("path",{d:"M7.964 14.71A5.41 5.41 0 017.682 13c0-.593.102-1.17.282-1.71V8.958H4.957A8.996 8.996 0 004 13c0 1.452.348 2.827.957 4.042l3.007-2.332z",fill:"#FBBC05","fill-rule":"nonzero"}),u("path",{d:"M13 7.58c1.321 0 2.508.454 3.44 1.345l2.582-2.58C17.463 4.891 15.426 4 13 4a8.997 8.997 0 00-8.043 4.958l3.007 2.332C8.672 9.163 10.656 7.58 13 7.58z",fill:"#EA4335","fill-rule":"nonzero"}),u("path",{d:"M4 4h18v18H4z"})))}n(Vw,"GoogleIcon");function Ww(i){let{pluginName:e,pluginIcon:t,i18nArray:r,handleAuth:s}=i,o=e==="Google Drive",a=u("span",{className:"uppy-Provider-authTitleName"},e,u("br",null));return u("div",{className:"uppy-Provider-auth"},u("div",{className:"uppy-Provider-authIcon"},t()),u("div",{className:"uppy-Provider-authTitle"},r("authenticateWithTitle",{pluginName:a})),o?u("button",{type:"button",className:"uppy-u-reset uppy-c-btn uppy-c-btn-primary uppy-Provider-authBtn uppy-Provider-btn-google",onClick:s,"data-uppy-super-focusable":!0},u(Vw,null),r("signInWithGoogle")):u("button",{type:"button",className:"uppy-u-reset uppy-c-btn uppy-c-btn-primary uppy-Provider-authBtn",onClick:s,"data-uppy-super-focusable":!0},r("authenticateWith",{pluginName:e})))}n(Ww,"AuthView");var Vm=Ww;var Wm=n(i=>{let{i18n:e,logout:t,username:r}=i;return[u("span",{className:"uppy-ProviderBrowser-user",key:"username"},r),u("button",{type:"button",onClick:t,className:"uppy-u-reset uppy-c-btn uppy-ProviderBrowser-userLogout",key:"logout"},e("logOut"))]},"default");var Gw=n(i=>{let{getFolder:e,title:t,isLast:r}=i;return u(Ht,null,u("button",{type:"button",className:"uppy-u-reset uppy-c-btn",onClick:e},t),r?"":" / ")},"Breadcrumb"),Gm=n(i=>{let{getFolder:e,title:t,breadcrumbsIcon:r,breadcrumbs:s}=i;return u("div",{className:"uppy-Provider-breadcrumbs"},u("div",{className:"uppy-Provider-breadcrumbsIcon"},r),s.map((o,a)=>u(Gw,{key:o.id,getFolder:()=>e(o.requestPath),title:a===0?t:o.name,isLast:a+1===s.length})))},"default");var Km=n(i=>{let e=[];return i.showBreadcrumbs&&e.push(Gm({getFolder:i.getFolder,breadcrumbs:i.breadcrumbs,breadcrumbsIcon:i.pluginIcon&&i.pluginIcon(),title:i.title})),e.push(Wm({logout:i.logout,username:i.username,i18n:i.i18n})),e},"default");var Zh=de(Qt(),1);function Hn(i){return{...i,type:i.mimeType,extension:i.name?Bi(i.name).extension:null}}n(Hn,"remoteFileObjToLocal");var uu,Rt,Wh,Xm,$n=0,ig=[],au=[],Ym=ee.__b,Qm=ee.__r,Jm=ee.diffed,Zm=ee.__c,eg=ee.unmount;function Kh(i,e){ee.__h&&ee.__h(Rt,i,$n||e),$n=0;var t=Rt.__H||(Rt.__H={__:[],__h:[]});return i>=t.__.length&&t.__.push({__V:au}),t.__[i]}n(Kh,"p");function Ao(i){return $n=1,Kw(sg,i)}n(Ao,"y");function Kw(i,e,t){var r=Kh(uu++,2);return r.t=i,r.__c||(r.__=[t?t(e):sg(void 0,e),function(s){var o=r.t(r.__[0],s);r.__[0]!==o&&(r.__=[o,r.__[1]],r.__c.setState({}))}],r.__c=Rt),r.__}n(Kw,"d");function Os(i,e){var t=Kh(uu++,3);!ee.__s&&rg(t.__H,e)&&(t.__=i,t.u=e,Rt.__H.__h.push(t))}n(Os,"_");function Xh(i){return $n=5,Ro(function(){return{current:i}},[])}n(Xh,"s");function Ro(i,e){var t=Kh(uu++,7);return rg(t.__H,e)?(t.__V=i(),t.u=e,t.__h=i,t.__V):t.__}n(Ro,"F");function qn(i,e){return $n=8,Ro(function(){return i},e)}n(qn,"T");function Xw(){for(var i;i=ig.shift();)if(i.__P)try{i.__H.__h.forEach(lu),i.__H.__h.forEach(Gh),i.__H.__h=[]}catch(e){i.__H.__h=[],ee.__e(e,i.__v)}}n(Xw,"b");ee.__b=function(i){Rt=null,Ym&&Ym(i)},ee.__r=function(i){Qm&&Qm(i),uu=0;var e=(Rt=i.__c).__H;e&&(Wh===Rt?(e.__h=[],Rt.__h=[],e.__.forEach(function(t){t.__V=au,t.u=void 0})):(e.__h.forEach(lu),e.__h.forEach(Gh),e.__h=[])),Wh=Rt},ee.diffed=function(i){Jm&&Jm(i);var e=i.__c;e&&e.__H&&(e.__H.__h.length&&(ig.push(e)!==1&&Xm===ee.requestAnimationFrame||((Xm=ee.requestAnimationFrame)||function(t){var r,s=n(function(){clearTimeout(o),tg&&cancelAnimationFrame(r),setTimeout(t)},"u"),o=setTimeout(s,100);tg&&(r=requestAnimationFrame(s))})(Xw)),e.__H.__.forEach(function(t){t.u&&(t.__H=t.u),t.__V!==au&&(t.__=t.__V),t.u=void 0,t.__V=au})),Wh=Rt=null},ee.__c=function(i,e){e.some(function(t){try{t.__h.forEach(lu),t.__h=t.__h.filter(function(r){return!r.__||Gh(r)})}catch(r){e.some(function(s){s.__h&&(s.__h=[])}),e=[],ee.__e(r,t.__v)}}),Zm&&Zm(i,e)},ee.unmount=function(i){eg&&eg(i);var e,t=i.__c;t&&t.__H&&(t.__H.__.forEach(function(r){try{lu(r)}catch(s){e=s}}),e&&ee.__e(e,t.__v))};var tg=typeof requestAnimationFrame=="function";function lu(i){var e=Rt,t=i.__c;typeof t=="function"&&(i.__c=void 0,t()),Rt=e}n(lu,"j");function Gh(i){var e=Rt;i.__c=i.__(),Rt=e}n(Gh,"k");function rg(i,e){return!i||i.length!==e.length||e.some(function(t,r){return t!==i[r]})}n(rg,"w");function sg(i,e){return typeof e=="function"?e(i):e}n(sg,"z");function Yh(){return Yh=Object.assign?Object.assign.bind():function(i){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[r]=t[r])}return i},Yh.apply(this,arguments)}n(Yh,"_extends");var Yw={position:"relative",width:"100%",minHeight:"100%"},Qw={position:"absolute",top:0,left:0,width:"100%",overflow:"visible"},hu=class extends we{constructor(e){super(e),this.handleScroll=()=>{this.setState({offset:this.base.scrollTop})},this.handleResize=()=>{this.resize()},this.focusElement=null,this.state={offset:0,height:0}}componentDidMount(){this.resize(),window.addEventListener("resize",this.handleResize)}componentWillUpdate(){this.base.contains(document.activeElement)&&(this.focusElement=document.activeElement)}componentDidUpdate(){this.focusElement&&this.focusElement.parentNode&&document.activeElement!==this.focusElement&&this.focusElement.focus(),this.focusElement=null,this.resize()}componentWillUnmount(){window.removeEventListener("resize",this.handleResize)}resize(){let{height:e}=this.state;e!==this.base.offsetHeight&&this.setState({height:this.base.offsetHeight})}render(e){let{data:t,rowHeight:r,renderRow:s,overscanCount:o=10,...a}=e,{offset:l,height:h}=this.state,p=Math.floor(l/r),d=Math.floor(h/r);o&&(p=Math.max(0,p-p%o),d+=o);let f=p+d+4,y=t.slice(p,f),b={...Yw,height:t.length*r},S={...Qw,top:p*r};return u("div",Yh({onScroll:this.handleScroll},a),u("div",{role:"presentation",style:b},u("div",{role:"presentation",style:S},y.map(s))))}};n(hu,"VirtualList");var du=hu;function Vn(i){let{search:e,searchOnInput:t,searchTerm:r,showButton:s,inputLabel:o,clearSearchLabel:a,buttonLabel:l,clearSearch:h,inputClassName:p,buttonCSSClassName:d}=i,[f,y]=Ao(r??""),b=qn(F=>{F.preventDefault(),e(f)},[e,f]),S=qn(F=>{let U=F.target.value;y(U),t&&e(U)},[y,t,e]),E=n(()=>{y(""),h&&h()},"handleReset"),[x]=Ao(()=>{let F=document.createElement("form");return F.setAttribute("tabindex","-1"),F.id=Pt(),F});return Os(()=>(document.body.appendChild(x),x.addEventListener("submit",b),()=>{x.removeEventListener("submit",b),document.body.removeChild(x)}),[x,b]),u(Ht,null,u("input",{className:`uppy-u-reset ${p}`,type:"search","aria-label":o,placeholder:o,value:f,onInput:S,form:x.id,"data-uppy-super-focusable":!0}),!s&&u("svg",{"aria-hidden":"true",focusable:"false",class:"uppy-c-icon uppy-ProviderBrowser-searchFilterIcon",width:"12",height:"12",viewBox:"0 0 12 12"},u("path",{d:"M8.638 7.99l3.172 3.172a.492.492 0 1 1-.697.697L7.91 8.656a4.977 4.977 0 0 1-2.983.983C2.206 9.639 0 7.481 0 4.819 0 2.158 2.206 0 4.927 0c2.721 0 4.927 2.158 4.927 4.82a4.74 4.74 0 0 1-1.216 3.17zm-3.71.685c2.176 0 3.94-1.726 3.94-3.856 0-2.129-1.764-3.855-3.94-3.855C2.75.964.984 2.69.984 4.819c0 2.13 1.765 3.856 3.942 3.856z"})),!s&&f&&u("button",{className:"uppy-u-reset uppy-ProviderBrowser-searchFilterReset",type:"button","aria-label":a,title:a,onClick:E},u("svg",{"aria-hidden":"true",focusable:"false",className:"uppy-c-icon",viewBox:"0 0 19 19"},u("path",{d:"M17.318 17.232L9.94 9.854 9.586 9.5l-.354.354-7.378 7.378h.707l-.62-.62v.706L9.318 9.94l.354-.354-.354-.354L1.94 1.854v.707l.62-.62h-.706l7.378 7.378.354.354.354-.354 7.378-7.378h-.707l.622.62v-.706L9.854 9.232l-.354.354.354.354 7.378 7.378.708-.707-7.38-7.378v.708l7.38-7.38.353-.353-.353-.353-.622-.622-.353-.353-.354.352-7.378 7.38h.708L2.56 1.23 2.208.88l-.353.353-.622.62-.353.355.352.353 7.38 7.38v-.708l-7.38 7.38-.353.353.352.353.622.622.353.353.354-.353 7.38-7.38h-.708l7.38 7.38z"}))),s&&u("button",{className:`uppy-u-reset uppy-c-btn uppy-c-btn-primary ${d}`,type:"submit",form:x.id},l))}n(Vn,"SearchFilterInput");var og=n(i=>{let{cancel:e,done:t,i18n:r,selected:s}=i;return u("div",{className:"uppy-ProviderBrowser-footer"},u("button",{className:"uppy-u-reset uppy-c-btn uppy-c-btn-primary",onClick:t,type:"button"},r("selectX",{smart_count:s})),u("button",{className:"uppy-u-reset uppy-c-btn uppy-c-btn-link",onClick:e,type:"button"},r("cancel")))},"default");var ug=de(Qt(),1);function Jw(){return u("svg",{"aria-hidden":"true",focusable:"false",className:"uppy-c-icon",width:11,height:14.5,viewBox:"0 0 44 58"},u("path",{d:"M27.437.517a1 1 0 0 0-.094.03H4.25C2.037.548.217 2.368.217 4.58v48.405c0 2.212 1.82 4.03 4.03 4.03H39.03c2.21 0 4.03-1.818 4.03-4.03V15.61a1 1 0 0 0-.03-.28 1 1 0 0 0 0-.093 1 1 0 0 0-.03-.032 1 1 0 0 0 0-.03 1 1 0 0 0-.032-.063 1 1 0 0 0-.03-.063 1 1 0 0 0-.032 0 1 1 0 0 0-.03-.063 1 1 0 0 0-.032-.03 1 1 0 0 0-.03-.063 1 1 0 0 0-.063-.062l-14.593-14a1 1 0 0 0-.062-.062A1 1 0 0 0 28 .708a1 1 0 0 0-.374-.157 1 1 0 0 0-.156 0 1 1 0 0 0-.03-.03l-.003-.003zM4.25 2.547h22.218v9.97c0 2.21 1.82 4.03 4.03 4.03h10.564v36.438a2.02 2.02 0 0 1-2.032 2.032H4.25c-1.13 0-2.032-.9-2.032-2.032V4.58c0-1.13.902-2.032 2.03-2.032zm24.218 1.345l10.375 9.937.75.718H30.5c-1.13 0-2.032-.9-2.032-2.03V3.89z"}))}n(Jw,"FileIcon");function Zw(){return u("svg",{"aria-hidden":"true",focusable:"false",className:"uppy-c-icon",style:{minWidth:16,marginRight:3},viewBox:"0 0 276.157 276.157"},u("path",{d:"M273.08 101.378c-3.3-4.65-8.86-7.32-15.254-7.32h-24.34V67.59c0-10.2-8.3-18.5-18.5-18.5h-85.322c-3.63 0-9.295-2.875-11.436-5.805l-6.386-8.735c-4.982-6.814-15.104-11.954-23.546-11.954H58.73c-9.292 0-18.638 6.608-21.737 15.372l-2.033 5.752c-.958 2.71-4.72 5.37-7.596 5.37H18.5C8.3 49.09 0 57.39 0 67.59v167.07c0 .886.16 1.73.443 2.52.152 3.306 1.18 6.424 3.053 9.064 3.3 4.652 8.86 7.32 15.255 7.32h188.487c11.395 0 23.27-8.425 27.035-19.18l40.677-116.188c2.11-6.035 1.43-12.164-1.87-16.816zM18.5 64.088h8.864c9.295 0 18.64-6.607 21.738-15.37l2.032-5.75c.96-2.712 4.722-5.373 7.597-5.373h29.565c3.63 0 9.295 2.876 11.437 5.806l6.386 8.735c4.982 6.815 15.104 11.954 23.546 11.954h85.322c1.898 0 3.5 1.602 3.5 3.5v26.47H69.34c-11.395 0-23.27 8.423-27.035 19.178L15 191.23V67.59c0-1.898 1.603-3.5 3.5-3.5zm242.29 49.15l-40.676 116.188c-1.674 4.78-7.812 9.135-12.877 9.135H18.75c-1.447 0-2.576-.372-3.02-.997-.442-.625-.422-1.814.057-3.18l40.677-116.19c1.674-4.78 7.812-9.134 12.877-9.134h188.487c1.448 0 2.577.372 3.02.997.443.625.423 1.814-.056 3.18z"}))}n(Zw,"FolderIcon");function e2(){return u("svg",{"aria-hidden":"true",focusable:"false",style:{width:16,marginRight:4},viewBox:"0 0 58 58"},u("path",{d:"M36.537 28.156l-11-7a1.005 1.005 0 0 0-1.02-.033C24.2 21.3 24 21.635 24 22v14a1 1 0 0 0 1.537.844l11-7a1.002 1.002 0 0 0 0-1.688zM26 34.18V23.82L34.137 29 26 34.18z"}),u("path",{d:"M57 6H1a1 1 0 0 0-1 1v44a1 1 0 0 0 1 1h56a1 1 0 0 0 1-1V7a1 1 0 0 0-1-1zM10 28H2v-9h8v9zm-8 2h8v9H2v-9zm10 10V8h34v42H12V40zm44-12h-8v-9h8v9zm-8 2h8v9h-8v-9zm8-22v9h-8V8h8zM2 8h8v9H2V8zm0 42v-9h8v9H2zm54 0h-8v-9h8v9z"}))}n(e2,"VideoIcon");var ng=n(i=>{let{itemIconString:e}=i;if(e!==null)switch(e){case"file":return u(Jw,null);case"folder":return u(Zw,null);case"video":return u(e2,null);default:{let{alt:t}=i;return u("img",{src:e,alt:t,loading:"lazy",width:16,height:16})}}},"default");var ag=de(Qt(),1);function t2(i){let{className:e,isDisabled:t,restrictionError:r,isChecked:s,title:o,itemIconEl:a,showTitles:l,toggleCheckbox:h,recordShiftKeyPress:p,id:d,children:f}=i,y=(0,ag.default)("uppy-u-reset","uppy-ProviderBrowserItem-checkbox","uppy-ProviderBrowserItem-checkbox--grid",{"uppy-ProviderBrowserItem-checkbox--is-checked":s});return u("li",{className:e,title:t?r?.message:null},u("input",{type:"checkbox",className:y,onChange:h,onKeyDown:p,onMouseDown:p,name:"listitem",id:d,checked:s,disabled:t,"data-uppy-super-focusable":!0}),u("label",{htmlFor:d,"aria-label":o,className:"uppy-u-reset uppy-ProviderBrowserItem-inner"},a,l&&o,f))}n(t2,"GridListItem");var Qh=t2;function i2(i){let{className:e,isDisabled:t,restrictionError:r,isCheckboxDisabled:s,isChecked:o,toggleCheckbox:a,recordShiftKeyPress:l,type:h,id:p,itemIconEl:d,title:f,handleFolderClick:y,showTitles:b,i18n:S}=i;return u("li",{className:e,title:t?r?.message:null},s?null:u("input",{type:"checkbox",className:`uppy-u-reset uppy-ProviderBrowserItem-checkbox ${o?"uppy-ProviderBrowserItem-checkbox--is-checked":""}`,onChange:a,onKeyDown:l,onMouseDown:l,name:"listitem",id:p,checked:o,"aria-label":h==="file"?null:S("allFilesFromFolderNamed",{name:f}),disabled:t,"data-uppy-super-focusable":!0}),h==="file"?u("label",{htmlFor:p,className:"uppy-u-reset uppy-ProviderBrowserItem-inner"},u("div",{className:"uppy-ProviderBrowserItem-iconWrap"},d),b&&f):u("button",{type:"button",className:"uppy-u-reset uppy-c-btn uppy-ProviderBrowserItem-inner",onClick:y,"aria-label":S("openFolderNamed",{name:f})},u("div",{className:"uppy-ProviderBrowserItem-iconWrap"},d),b&&u("span",null,f)))}n(i2,"ListItem");var lg=i2;function Wn(){return Wn=Object.assign?Object.assign.bind():function(i){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[r]=t[r])}return i},Wn.apply(this,arguments)}n(Wn,"_extends");var Jh=n(i=>{let{author:e,getItemIcon:t,isChecked:r,isDisabled:s,viewType:o}=i,a=t(),l=(0,ug.default)("uppy-ProviderBrowserItem",{"uppy-ProviderBrowserItem--selected":r},{"uppy-ProviderBrowserItem--disabled":s},{"uppy-ProviderBrowserItem--noPreview":a==="video"}),h=u(ng,{itemIconString:a});switch(o){case"grid":return u(Qh,Wn({},i,{className:l,itemIconEl:h}));case"list":return u(lg,Wn({},i,{className:l,itemIconEl:h}));case"unsplash":return u(Qh,Wn({},i,{className:l,itemIconEl:h}),u("a",{href:`${e.url}?utm_source=Companion&utm_medium=referral`,target:"_blank",rel:"noopener noreferrer",className:"uppy-ProviderBrowserItem-author",tabIndex:"-1"},e.name));default:throw new Error(`There is no such type ${o}`)}},"default");var r2="shared-with-me";function hg(i){let{currentSelection:e,uppyFiles:t,viewType:r,isChecked:s,toggleCheckbox:o,recordShiftKeyPress:a,showTitles:l,i18n:h,validateRestrictions:p,getNextFolder:d,columns:f,f:y}=i;if(y.isFolder){var b;return Jh({columns:f,showTitles:l,viewType:r,i18n:h,id:y.id,title:y.name,getItemIcon:()=>y.icon,isChecked:s(y),toggleCheckbox:E=>o(E,y),recordShiftKeyPress:a,type:"folder",isDisabled:(b=s(y))==null?void 0:b.loading,isCheckboxDisabled:y.id===r2,handleFolderClick:()=>d(y)})}let S=p(Hn(y),[...t,...e]);return Jh({id:y.id,title:y.name,author:y.author,getItemIcon:()=>y.icon,isChecked:s(y),toggleCheckbox:E=>o(E,y),recordShiftKeyPress:a,columns:f,showTitles:l,viewType:r,i18n:h,type:"file",isDisabled:S&&!s(y),restrictionError:S})}n(hg,"ListItem");function s2(i){let{currentSelection:e,folders:t,files:r,uppyFiles:s,viewType:o,headerComponent:a,showBreadcrumbs:l,isChecked:h,toggleCheckbox:p,recordShiftKeyPress:d,handleScroll:f,showTitles:y,i18n:b,validateRestrictions:S,isLoading:E,showSearchFilter:x,search:F,searchTerm:U,clearSearch:j,searchOnInput:G,searchInputLabel:J,clearSearchLabel:B,getNextFolder:z,cancel:K,done:oe,columns:Be,noResultsLabel:Je,loadAllFiles:wt}=i,We=e.length,_e=Ro(()=>[...t,...r],[t,r]);return u("div",{className:(0,Zh.default)("uppy-ProviderBrowser",`uppy-ProviderBrowser-viewType--${o}`)},a&&u("div",{className:"uppy-ProviderBrowser-header"},u("div",{className:(0,Zh.default)("uppy-ProviderBrowser-headerBar",!l&&"uppy-ProviderBrowser-headerBar--simple")},a)),x&&u("div",{class:"uppy-ProviderBrowser-searchFilter"},u(Vn,{search:F,searchTerm:U,clearSearch:j,inputLabel:J,clearSearchLabel:B,inputClassName:"uppy-ProviderBrowser-searchFilterInput",searchOnInput:G})),(()=>E?u("div",{className:"uppy-Provider-loading"},u("span",null,b("loading"))):!t.length&&!r.length?u("div",{className:"uppy-Provider-empty"},Je):wt?u("div",{className:"uppy-ProviderBrowser-body"},u("ul",{className:"uppy-ProviderBrowser-list"},u(du,{data:_e,renderRow:ze=>u(hg,{currentSelection:e,uppyFiles:s,viewType:o,isChecked:h,toggleCheckbox:p,recordShiftKeyPress:d,showTitles:y,i18n:b,validateRestrictions:S,getNextFolder:z,columns:Be,f:ze}),rowHeight:31}))):u("div",{className:"uppy-ProviderBrowser-body"},u("ul",{className:"uppy-ProviderBrowser-list",onScroll:f,role:"listbox",tabIndex:"-1"},_e.map(ze=>u(hg,{currentSelection:e,uppyFiles:s,viewType:o,isChecked:h,toggleCheckbox:p,recordShiftKeyPress:d,showTitles:y,i18n:b,validateRestrictions:S,getNextFolder:z,columns:Be,f:ze})))))(),We>0&&u(og,{selected:We,done:oe,cancel:K,i18n:b}))}n(s2,"Browser");var cu=s2;var dg=n(i=>{let{i18n:e,loading:t}=i;return u("div",{className:"uppy-Provider-loading"},u("span",null,e("loading")),typeof t=="string"&&u("span",{style:{marginTop:".7em"}},t))},"default");var Ei=class extends we{componentWillUnmount(){let{onUnmount:e}=this.props;e()}render(){let{children:e}=this.props;return ci(e)[0]}};n(Ei,"CloseWrapper");function Uo(i){return i?/^[^/]+\/(jpe?g|gif|png|svg|svg\+xml|bmp|webp|avif)$/.test(i):!1}n(Uo,"isPreviewSupported");var Zr=class{constructor(e,t){this.filterItems=r=>{let s=this.plugin.getPluginState();return!s.filterInput||s.filterInput===""?r:r.filter(o=>o.name.toLowerCase().indexOf(s.filterInput.toLowerCase())!==-1)},this.recordShiftKeyPress=r=>{this.isShiftKeyPressed=r.shiftKey},this.toggleCheckbox=(r,s)=>{r.stopPropagation(),r.preventDefault(),r.currentTarget.focus();let{folders:o,files:a}=this.plugin.getPluginState(),l=this.filterItems(o.concat(a));if(this.lastCheckbox&&this.isShiftKeyPressed){let{currentSelection:p}=this.plugin.getPluginState(),d=l.indexOf(this.lastCheckbox),f=l.indexOf(s),y=d<f?l.slice(d,f+1):l.slice(f,d+1),b=[];for(let S of y){let{uppy:E}=this.plugin,x=E.validateRestrictions(Hn(S),[...E.getFiles(),...b]);x?E.info({message:x.message},"error",E.opts.infoTimeout):b.push(S)}this.plugin.setPluginState({currentSelection:[...new Set([...p,...b])]});return}this.lastCheckbox=s;let{currentSelection:h}=this.plugin.getPluginState();this.isChecked(s)?this.plugin.setPluginState({currentSelection:h.filter(p=>p.id!==s.id)}):this.plugin.setPluginState({currentSelection:h.concat([s])})},this.isChecked=r=>{let{currentSelection:s}=this.plugin.getPluginState();return s.some(o=>o.id===r.id)},this.plugin=e,this.provider=t.provider,this.isHandlingScroll=!1,this.preFirstRender=this.preFirstRender.bind(this),this.handleError=this.handleError.bind(this),this.clearSelection=this.clearSelection.bind(this),this.cancelPicking=this.cancelPicking.bind(this)}preFirstRender(){this.plugin.setPluginState({didFirstRender:!0}),this.plugin.onFirstRender()}shouldHandleScroll(e){let{scrollHeight:t,scrollTop:r,offsetHeight:s}=e.target;return t-(r+s)<50&&!this.isHandlingScroll}clearSelection(){this.plugin.setPluginState({currentSelection:[],filterInput:""})}cancelPicking(){this.clearSelection();let e=this.plugin.uppy.getPlugin("Dashboard");e&&e.hideAllPanels()}handleError(e){var t;let{uppy:r}=this.plugin,s=r.i18n("companionError");r.log(e.toString()),!(e.isAuthError||((t=e.cause)==null?void 0:t.name)==="AbortError")&&r.info({message:s,details:e.toString()},"error",5e3)}getTagFile(e){let t={id:e.id,source:this.plugin.id,data:e,name:e.name||e.id,type:e.mimeType,isRemote:!0,meta:{},body:{fileId:e.id},remote:{companionUrl:this.plugin.opts.companionUrl,url:`${this.provider.fileUrl(e.requestPath)}`,body:{fileId:e.id},providerName:this.provider.name,provider:this.provider.provider}};Object.defineProperty(t.remote,"requestClient",{value:this.provider,enumerable:!1});let r=ys(t);return r&&Uo(r)&&(t.preview=e.thumbnail),e.author&&(e.author.name!=null&&(t.meta.authorName=String(e.author.name)),e.author.url&&(t.meta.authorUrl=e.author.url)),e.relDirPath!=null&&(t.meta.relativePath=e.relDirPath?`${e.relDirPath}/${t.name}`:null),e.absDirPath!=null&&(t.meta.absolutePath=e.absDirPath?`/${e.absDirPath}/${t.name}`:`/${t.name}`),t}setLoading(e){this.plugin.setPluginState({loading:e})}};n(Zr,"View");function Jt(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError("attempted to use private field on non-instance");return i}n(Jt,"_classPrivateFieldLooseBase");var o2=0;function Yn(i){return"__private_"+o2+++"_"+i}n(Yn,"_classPrivateFieldLooseKey");var n2={version:"3.7.0"};function a2(i){return i.slice(1).map(e=>e.name).join("/")}n(a2,"formatBreadcrumbs");function ed(i,e){return i?`${i}/${e}`:e}n(ed,"prependPath");function ko(){return u("svg",{"aria-hidden":"true",focusable:"false",width:"30",height:"30",viewBox:"0 0 30 30"},u("path",{d:"M15 30c8.284 0 15-6.716 15-15 0-8.284-6.716-15-15-15C6.716 0 0 6.716 0 15c0 8.284 6.716 15 15 15zm4.258-12.676v6.846h-8.426v-6.846H5.204l9.82-12.364 9.82 12.364H19.26z"}))}n(ko,"defaultPickerIcon");var Cs=Yn("abortController"),_r=Yn("withAbort"),Xn=Yn("list"),Gn=Yn("listFilesAndFolders"),Kn=Yn("recursivelyListAllFiles"),Te=class extends Zr{constructor(e,t){super(e,t),Object.defineProperty(this,Kn,{value:d2}),Object.defineProperty(this,Gn,{value:h2}),Object.defineProperty(this,Xn,{value:u2}),Object.defineProperty(this,_r,{value:l2}),Object.defineProperty(this,Cs,{writable:!0,value:void 0});let r={viewType:"list",showTitles:!0,showFilter:!0,showBreadcrumbs:!0,loadAllFiles:!1};this.opts={...r,...t},this.filterQuery=this.filterQuery.bind(this),this.clearFilter=this.clearFilter.bind(this),this.getFolder=this.getFolder.bind(this),this.getNextFolder=this.getNextFolder.bind(this),this.logout=this.logout.bind(this),this.handleAuth=this.handleAuth.bind(this),this.handleScroll=this.handleScroll.bind(this),this.donePicking=this.donePicking.bind(this),this.render=this.render.bind(this),this.plugin.setPluginState({authenticated:!1,files:[],folders:[],breadcrumbs:[],filterInput:"",isSearchVisible:!1,currentSelection:[]})}tearDown(){}async getFolder(e,t){this.setLoading(!0);try{await Jt(this,_r)[_r](async r=>{this.lastCheckbox=void 0;let{breadcrumbs:s}=this.plugin.getPluginState(),o=s.findIndex(h=>e===h.requestPath);o!==-1?s=s.slice(0,o+1):s=[...s,{requestPath:e,name:t}],this.nextPagePath=e;let a=[],l=[];do{let{files:h,folders:p}=await Jt(this,Gn)[Gn]({breadcrumbs:s,signal:r});a=a.concat(h),l=l.concat(p),this.setLoading(this.plugin.uppy.i18n("loadedXFiles",{numFiles:a.length+l.length}))}while(this.opts.loadAllFiles&&this.nextPagePath);this.plugin.setPluginState({folders:l,files:a,breadcrumbs:s,filterInput:""})})}catch(r){this.handleError(r)}finally{this.setLoading(!1)}}getNextFolder(e){this.getFolder(e.requestPath,e.name),this.lastCheckbox=void 0}async logout(){try{await Jt(this,_r)[_r](async e=>{let t=await this.provider.logout({signal:e});if(t.ok){if(!t.revoked){let s=this.plugin.uppy.i18n("companionUnauthorizeHint",{provider:this.plugin.title,url:t.manual_revoke_url});this.plugin.uppy.info(s,"info",7e3)}let r={authenticated:!1,files:[],folders:[],breadcrumbs:[],filterInput:""};this.plugin.setPluginState(r)}})}catch(e){this.handleError(e)}}filterQuery(e){this.plugin.setPluginState({filterInput:e})}clearFilter(){this.plugin.setPluginState({filterInput:""})}async handleAuth(){let e=`@uppy/provider-views=${Te.VERSION}`;try{await this.provider.login({uppyVersions:e}),this.plugin.setPluginState({authenticated:!0}),this.preFirstRender()}catch(t){this.plugin.uppy.log(`login failed: ${t.message}`)}}async handleScroll(e){if(this.shouldHandleScroll(e)&&this.nextPagePath){this.isHandlingScroll=!0;try{await Jt(this,_r)[_r](async t=>{let{files:r,folders:s,breadcrumbs:o}=this.plugin.getPluginState(),{files:a,folders:l}=await Jt(this,Gn)[Gn]({breadcrumbs:o,signal:t}),h=r.concat(a),p=s.concat(l);this.plugin.setPluginState({folders:p,files:h})})}catch(t){this.handleError(t)}finally{this.isHandlingScroll=!1}}}async donePicking(){this.setLoading(!0);try{await Jt(this,_r)[_r](async e=>{let{currentSelection:t}=this.plugin.getPluginState(),r=[],s=[];for(let o of t){let{requestPath:a}=o,l=n(h=>({...h,relDirPath:h.absDirPath.replace(o.absDirPath,"").replace(/^\//,"")}),"withRelDirPath");if(o.isFolder){let h=!0,p=0,d=new qm({concurrency:6}),f=n(b=>{for(let S of b){let E=this.getTagFile(S),x=Dl(E);this.plugin.uppy.checkIfFileAlreadyExists(x)||(s.push(l(S)),p++,this.setLoading(this.plugin.uppy.i18n("addedNumFiles",{numFiles:p}))),h=!1}},"onFiles");await Jt(this,Kn)[Kn]({requestPath:a,absDirPath:ed(o.absDirPath,o.name),relDirPath:o.name,queue:d,onFiles:f,signal:e}),await d.onIdle();let y;h?y=this.plugin.uppy.i18n("emptyFolderAdded"):p===0?y=this.plugin.uppy.i18n("folderAlreadyAdded",{folder:o.name}):y=this.plugin.uppy.i18n("folderAdded",{smart_count:p,folder:o.name}),r.push(y)}else s.push(l(o))}this.plugin.uppy.log("Adding files from a remote provider"),this.plugin.uppy.addFiles(s.map(o=>this.getTagFile(o))),this.plugin.setPluginState({filterInput:""}),r.forEach(o=>this.plugin.uppy.info(o)),this.clearSelection()})}catch(e){this.handleError(e)}finally{this.setLoading(!1)}}render(e,t){var r=this;t===void 0&&(t={});let{authenticated:s,didFirstRender:o}=this.plugin.getPluginState(),{i18n:a}=this.plugin.uppy;o||this.preFirstRender();let l={...this.opts,...t},{files:h,folders:p,filterInput:d,loading:f,currentSelection:y}=this.plugin.getPluginState(),{isChecked:b,toggleCheckbox:S,recordShiftKeyPress:E,filterItems:x}=this,F=d!=="",U=this.plugin.icon||ko,j={showBreadcrumbs:l.showBreadcrumbs,getFolder:this.getFolder,breadcrumbs:this.plugin.getPluginState().breadcrumbs,pluginIcon:U,title:this.plugin.title,logout:this.logout,username:this.username,i18n:a},G={isChecked:b,toggleCheckbox:S,recordShiftKeyPress:E,currentSelection:y,files:F?x(h):h,folders:F?x(p):p,username:this.username,getNextFolder:this.getNextFolder,getFolder:this.getFolder,loadAllFiles:this.opts.loadAllFiles,showSearchFilter:l.showFilter,search:this.filterQuery,clearSearch:this.clearFilter,searchTerm:d,searchOnInput:!0,searchInputLabel:a("filter"),clearSearchLabel:a("resetFilter"),noResultsLabel:a("noFilesFound"),logout:this.logout,handleScroll:this.handleScroll,done:this.donePicking,cancel:this.cancelPicking,headerComponent:Km(j),title:this.plugin.title,viewType:l.viewType,showTitles:l.showTitles,showBreadcrumbs:l.showBreadcrumbs,pluginIcon:U,i18n:this.plugin.uppy.i18n,uppyFiles:this.plugin.uppy.getFiles(),validateRestrictions:function(){return r.plugin.uppy.validateRestrictions(...arguments)}};return f?u(Ei,{onUnmount:this.clearSelection},u(dg,{i18n:this.plugin.uppy.i18n,loading:f})):s?u(Ei,{onUnmount:this.clearSelection},u(cu,G)):u(Ei,{onUnmount:this.clearSelection},u(Vm,{pluginName:this.plugin.title,pluginIcon:U,handleAuth:this.handleAuth,i18n:this.plugin.uppy.i18n,i18nArray:this.plugin.uppy.i18nArray}))}};n(Te,"ProviderView");async function l2(i){var e;(e=Jt(this,Cs)[Cs])==null||e.abort();let t=new AbortController;Jt(this,Cs)[Cs]=t;let r=n(()=>{t.abort(),this.clearSelection()},"cancelRequest");try{this.plugin.uppy.on("dashboard:close-panel",r),this.plugin.uppy.on("cancel-all",r),await i(t.signal)}finally{this.plugin.uppy.off("dashboard:close-panel",r),this.plugin.uppy.off("cancel-all",r),Jt(this,Cs)[Cs]=void 0}}n(l2,"_withAbort2");async function u2(i){let{requestPath:e,absDirPath:t,signal:r}=i,{username:s,nextPagePath:o,items:a}=await this.provider.list(e,{signal:r});return this.username=s||this.username,{items:a.map(l=>({...l,absDirPath:t})),nextPagePath:o}}n(u2,"_list2");async function h2(i){let{breadcrumbs:e,signal:t}=i,r=a2(e),{items:s,nextPagePath:o}=await Jt(this,Xn)[Xn]({requestPath:this.nextPagePath,absDirPath:r,signal:t});this.nextPagePath=o;let a=[],l=[];return s.forEach(h=>{h.isFolder?l.push(h):a.push(h)}),{files:a,folders:l}}n(h2,"_listFilesAndFolders2");async function d2(i){let{requestPath:e,absDirPath:t,relDirPath:r,queue:s,onFiles:o,signal:a}=i,l=e;for(;l;){let h=await Jt(this,Xn)[Xn]({requestPath:l,absDirPath:t,signal:a});l=h.nextPagePath;let p=h.items.filter(y=>!y.isFolder),d=h.items.filter(y=>y.isFolder);o(p);let f=d.map(async y=>s.add(async()=>Jt(this,Kn)[Kn]({requestPath:y.requestPath,absDirPath:ed(t,y.name),relDirPath:ed(r,y.name),queue:s,onFiles:o,signal:a})));await Promise.all(f)}}n(d2,"_recursivelyListAllFiles2");Te.VERSION=n2.version;function cg(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError("attempted to use private field on non-instance");return i}n(cg,"_classPrivateFieldLooseBase");var c2=0;function p2(i){return"__private_"+c2+++"_"+i}n(p2,"_classPrivateFieldLooseKey");var f2={version:"3.7.0"},Qn=p2("updateFilesAndInputMode"),ji=class extends Zr{constructor(e,t){super(e,t),Object.defineProperty(this,Qn,{value:m2});let r={viewType:"grid",showTitles:!1,showFilter:!1,showBreadcrumbs:!1};this.opts={...r,...t},this.search=this.search.bind(this),this.clearSearch=this.clearSearch.bind(this),this.resetPluginState=this.resetPluginState.bind(this),this.handleScroll=this.handleScroll.bind(this),this.donePicking=this.donePicking.bind(this),this.render=this.render.bind(this),this.defaultState={isInputMode:!0,files:[],folders:[],breadcrumbs:[],filterInput:"",currentSelection:[],searchTerm:null},this.plugin.setPluginState(this.defaultState)}tearDown(){}resetPluginState(){this.plugin.setPluginState(this.defaultState)}async search(e){let{searchTerm:t}=this.plugin.getPluginState();if(!(e&&e===t)){this.setLoading(!0);try{let r=await this.provider.search(e);cg(this,Qn)[Qn](r,[])}catch(r){this.handleError(r)}finally{this.setLoading(!1)}}}clearSearch(){this.plugin.setPluginState({currentSelection:[],files:[],searchTerm:null})}async handleScroll(e){let t=this.nextPageQuery||null;if(this.shouldHandleScroll(e)&&t){this.isHandlingScroll=!0;try{let{files:r,searchTerm:s}=this.plugin.getPluginState(),o=await this.provider.search(s,t);cg(this,Qn)[Qn](o,r)}catch(r){this.handleError(r)}finally{this.isHandlingScroll=!1}}}donePicking(){let{currentSelection:e}=this.plugin.getPluginState();this.plugin.uppy.log("Adding remote search provider files"),this.plugin.uppy.addFiles(e.map(t=>this.getTagFile(t))),this.resetPluginState()}render(e,t){var r=this;t===void 0&&(t={});let{didFirstRender:s,isInputMode:o,searchTerm:a}=this.plugin.getPluginState(),{i18n:l}=this.plugin.uppy;s||this.preFirstRender();let h={...this.opts,...t},{files:p,folders:d,filterInput:f,loading:y,currentSelection:b}=this.plugin.getPluginState(),{isChecked:S,toggleCheckbox:E,filterItems:x,recordShiftKeyPress:F}=this,U=f!=="",j={isChecked:S,toggleCheckbox:E,recordShiftKeyPress:F,currentSelection:b,files:U?x(p):p,folders:U?x(d):d,handleScroll:this.handleScroll,done:this.donePicking,cancel:this.cancelPicking,showSearchFilter:h.showFilter,search:this.search,clearSearch:this.clearSearch,searchTerm:a,searchOnInput:!1,searchInputLabel:l("search"),clearSearchLabel:l("resetSearch"),noResultsLabel:l("noSearchResults"),title:this.plugin.title,viewType:h.viewType,showTitles:h.showTitles,showFilter:h.showFilter,isLoading:y,showBreadcrumbs:h.showBreadcrumbs,pluginIcon:this.plugin.icon,i18n:l,uppyFiles:this.plugin.uppy.getFiles(),validateRestrictions:function(){return r.plugin.uppy.validateRestrictions(...arguments)}};return o?u(Ei,{onUnmount:this.resetPluginState},u("div",{className:"uppy-SearchProvider"},u(Vn,{search:this.search,clearSelection:this.clearSelection,inputLabel:l("enterTextToSearch"),buttonLabel:l("searchImages"),inputClassName:"uppy-c-textInput uppy-SearchProvider-input",buttonCSSClassName:"uppy-SearchProvider-searchButton",showButton:!0}))):u(Ei,{onUnmount:this.resetPluginState},u(cu,j))}};n(ji,"SearchProviderView");function m2(i,e){this.nextPageQuery=i.nextPageQuery,i.items.forEach(t=>{e.push(t)}),this.plugin.setPluginState({currentSelection:[],isInputMode:!1,files:e,searchTerm:i.searchedFor})}n(m2,"_updateFilesAndInputMode2");ji.VERSION=f2.version;var pg;function Hi(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError("attempted to use private field on non-instance");return i}n(Hi,"_classPrivateFieldLooseBase");var g2=0;function id(i){return"__private_"+g2+++"_"+i}n(id,"_classPrivateFieldLooseKey");var y2={version:"3.0.5"},v2="uppy/STATE_UPDATE",b2=n(i=>e=>e.uppy[i],"defaultSelector");function w2(i,e){let t=Object.keys(e),r={};return t.forEach(s=>{i[s]!==e[s]&&(r[s]=e[s])}),r}n(w2,"getPatch");var xr=id("id"),Jn=id("selector"),Fr=id("store");pg=Symbol.for("uppy test: get id");var Zn=class{constructor(e){Object.defineProperty(this,xr,{writable:!0,value:void 0}),Object.defineProperty(this,Jn,{writable:!0,value:void 0}),Object.defineProperty(this,Fr,{writable:!0,value:void 0}),Hi(this,Fr)[Fr]=e.store,Hi(this,xr)[xr]=e.id||Pt(),Hi(this,Jn)[Jn]=e.selector||b2(Hi(this,xr)[xr]),this.setState({})}setState(e){Hi(this,Fr)[Fr].dispatch({type:v2,id:Hi(this,xr)[xr],payload:e})}getState(){return Hi(this,Jn)[Jn](Hi(this,Fr)[Fr].getState())}subscribe(e){let t=this.getState();return Hi(this,Fr)[Fr].subscribe(()=>{let r=this.getState();if(t!==r){let s=w2(t,r);e(t,r,s),t=r}})}[pg](){return Hi(this,xr)[xr]}};n(Zn,"ReduxStore");Zn.VERSION=y2.version;var fg=Zn;function pu(i,e,t,r){return t===0||i===e?i:r===0?e:i+(e-i)*2**(-r/t)}n(pu,"emaFilter");var Ut={STATE_ERROR:"error",STATE_WAITING:"waiting",STATE_PREPROCESSING:"preprocessing",STATE_UPLOADING:"uploading",STATE_POSTPROCESSING:"postprocessing",STATE_COMPLETE:"complete"};var ud=de(Qt(),1);function ea(i){let e=[],t,r;for(let{progress:o}of Object.values(i)){let{preprocess:a,postprocess:l}=o;r==null&&(a||l)&&({mode:t,message:r}=a||l),a?.mode==="determinate"&&e.push(a.value),l?.mode==="determinate"&&e.push(l.value)}let s=e.reduce((o,a)=>o+a/e.length,0);return{mode:t,message:r,value:s}}n(ea,"calculateProcessingProgress");var nd=de(Qt(),1),od=de(Il(),1);function rd(i){let e=Math.floor(i/3600)%24,t=Math.floor(i/60)%60,r=Math.floor(i%60);return{hours:e,minutes:t,seconds:r}}n(rd,"secondsToTime");function sd(i){let e=rd(i),t=e.hours===0?"":`${e.hours}h`,r=e.minutes===0?"":`${e.hours===0?e.minutes:` ${e.minutes.toString(10).padStart(2,"0")}`}m`,s=e.hours!==0?"":`${e.minutes===0?e.seconds:` ${e.seconds.toString(10).padStart(2,"0")}`}s`;return`${t}${r}${s}`}n(sd,"prettyETA");var S2="\xB7",mg=n(()=>` ${S2} `,"renderDot");function gg(i){let{newFiles:e,isUploadStarted:t,recoveredState:r,i18n:s,uploadState:o,isSomeGhost:a,startUpload:l}=i,h=(0,nd.default)("uppy-u-reset","uppy-c-btn","uppy-StatusBar-actionBtn","uppy-StatusBar-actionBtn--upload",{"uppy-c-btn-primary":o===Ut.STATE_WAITING},{"uppy-StatusBar-actionBtn--disabled":a}),p=e&&t&&!r?s("uploadXNewFiles",{smart_count:e}):s("uploadXFiles",{smart_count:e});return u("button",{type:"button",className:h,"aria-label":s("uploadXFiles",{smart_count:e}),onClick:l,disabled:a,"data-uppy-super-focusable":!0},p)}n(gg,"UploadBtn");function yg(i){let{i18n:e,uppy:t}=i;return u("button",{type:"button",className:"uppy-u-reset uppy-c-btn uppy-StatusBar-actionBtn uppy-StatusBar-actionBtn--retry","aria-label":e("retryUpload"),onClick:()=>t.retryAll().catch(()=>{}),"data-uppy-super-focusable":!0,"data-cy":"retry"},u("svg",{"aria-hidden":"true",focusable:"false",className:"uppy-c-icon",width:"8",height:"10",viewBox:"0 0 8 10"},u("path",{d:"M4 2.408a2.75 2.75 0 1 0 2.75 2.75.626.626 0 0 1 1.25.018v.023a4 4 0 1 1-4-4.041V.25a.25.25 0 0 1 .389-.208l2.299 1.533a.25.25 0 0 1 0 .416l-2.3 1.533A.25.25 0 0 1 4 3.316v-.908z"})),e("retry"))}n(yg,"RetryBtn");function vg(i){let{i18n:e,uppy:t}=i;return u("button",{type:"button",className:"uppy-u-reset uppy-StatusBar-actionCircleBtn",title:e("cancel"),"aria-label":e("cancel"),onClick:()=>t.cancelAll(),"data-cy":"cancel","data-uppy-super-focusable":!0},u("svg",{"aria-hidden":"true",focusable:"false",className:"uppy-c-icon",width:"16",height:"16",viewBox:"0 0 16 16"},u("g",{fill:"none",fillRule:"evenodd"},u("circle",{fill:"#888",cx:"8",cy:"8",r:"8"}),u("path",{fill:"#FFF",d:"M9.283 8l2.567 2.567-1.283 1.283L8 9.283 5.433 11.85 4.15 10.567 6.717 8 4.15 5.433 5.433 4.15 8 6.717l2.567-2.567 1.283 1.283z"}))))}n(vg,"CancelBtn");function bg(i){let{isAllPaused:e,i18n:t,isAllComplete:r,resumableUploads:s,uppy:o}=i,a=t(e?"resume":"pause");function l(){return r?null:s?e?o.resumeAll():o.pauseAll():o.cancelAll()}return n(l,"togglePauseResume"),u("button",{title:a,"aria-label":a,className:"uppy-u-reset uppy-StatusBar-actionCircleBtn",type:"button",onClick:l,"data-cy":"togglePauseResume","data-uppy-super-focusable":!0},u("svg",{"aria-hidden":"true",focusable:"false",className:"uppy-c-icon",width:"16",height:"16",viewBox:"0 0 16 16"},u("g",{fill:"none",fillRule:"evenodd"},u("circle",{fill:"#888",cx:"8",cy:"8",r:"8"}),u("path",{fill:"#FFF",d:e?"M6 4.25L11.5 8 6 11.75z":"M5 4.5h2v7H5v-7zm4 0h2v7H9v-7z"}))))}n(bg,"PauseResumeButton");function wg(i){let{i18n:e,doneButtonHandler:t}=i;return u("button",{type:"button",className:"uppy-u-reset uppy-c-btn uppy-StatusBar-actionBtn uppy-StatusBar-actionBtn--done",onClick:t,"data-uppy-super-focusable":!0},e("done"))}n(wg,"DoneBtn");function Sg(){return u("svg",{className:"uppy-StatusBar-spinner","aria-hidden":"true",focusable:"false",width:"14",height:"14"},u("path",{d:"M13.983 6.547c-.12-2.509-1.64-4.893-3.939-5.936-2.48-1.127-5.488-.656-7.556 1.094C.524 3.367-.398 6.048.162 8.562c.556 2.495 2.46 4.52 4.94 5.183 2.932.784 5.61-.602 7.256-3.015-1.493 1.993-3.745 3.309-6.298 2.868-2.514-.434-4.578-2.349-5.153-4.84a6.226 6.226 0 0 1 2.98-6.778C6.34.586 9.74 1.1 11.373 3.493c.407.596.693 1.282.842 1.988.127.598.073 1.197.161 1.794.078.525.543 1.257 1.15.864.525-.341.49-1.05.456-1.592-.007-.15.02.3 0 0",fillRule:"evenodd"}))}n(Sg,"LoadingSpinner");function Pg(i){let{progress:e}=i,{value:t,mode:r,message:s}=e,o=Math.round(t*100),a="\xB7";return u("div",{className:"uppy-StatusBar-content"},u(Sg,null),r==="determinate"?`${o}% ${a} `:"",s)}n(Pg,"ProgressBarProcessing");function P2(i){let{numUploads:e,complete:t,totalUploadedSize:r,totalSize:s,totalETA:o,i18n:a}=i,l=e>1;return u("div",{className:"uppy-StatusBar-statusSecondary"},l&&a("filesUploadedOfTotal",{complete:t,smart_count:e}),u("span",{className:"uppy-StatusBar-additionalInfo"},l&&mg(),a("dataUploadedOfTotal",{complete:(0,od.default)(r),total:(0,od.default)(s)}),mg(),a("xTimeLeft",{time:sd(o)})))}n(P2,"ProgressDetails");function _g(i){let{i18n:e,complete:t,numUploads:r}=i;return u("div",{className:"uppy-StatusBar-statusSecondary"},e("filesUploadedOfTotal",{complete:t,smart_count:r}))}n(_g,"FileUploadCount");function _2(i){let{i18n:e,newFiles:t,startUpload:r}=i,s=(0,nd.default)("uppy-u-reset","uppy-c-btn","uppy-StatusBar-actionBtn","uppy-StatusBar-actionBtn--uploadNewlyAdded");return u("div",{className:"uppy-StatusBar-statusSecondary"},u("div",{className:"uppy-StatusBar-statusSecondaryHint"},e("xMoreFilesAdded",{smart_count:t})),u("button",{type:"button",className:s,"aria-label":e("uploadXFiles",{smart_count:t}),onClick:r},e("upload")))}n(_2,"UploadNewlyAddedFiles");function xg(i){let{i18n:e,supportsUploadProgress:t,totalProgress:r,showProgressDetails:s,isUploadStarted:o,isAllComplete:a,isAllPaused:l,newFiles:h,numUploads:p,complete:d,totalUploadedSize:f,totalSize:y,totalETA:b,startUpload:S}=i,E=h&&o;if(!o||a)return null;let x=e(l?"paused":"uploading");function F(){return!l&&!E&&s?t?u(P2,{numUploads:p,complete:d,totalUploadedSize:f,totalSize:y,totalETA:b,i18n:e}):u(_g,{i18n:e,complete:d,numUploads:p}):null}return n(F,"renderProgressDetails"),u("div",{className:"uppy-StatusBar-content","aria-label":x,title:x},l?null:u(Sg,null),u("div",{className:"uppy-StatusBar-status"},u("div",{className:"uppy-StatusBar-statusPrimary"},t?`${x}: ${r}%`:x),F(),E?u(_2,{i18n:e,newFiles:h,startUpload:S}):null))}n(xg,"ProgressBarUploading");function Fg(i){let{i18n:e}=i;return u("div",{className:"uppy-StatusBar-content",role:"status",title:e("complete")},u("div",{className:"uppy-StatusBar-status"},u("div",{className:"uppy-StatusBar-statusPrimary"},u("svg",{"aria-hidden":"true",focusable:"false",className:"uppy-StatusBar-statusIndicator uppy-c-icon",width:"15",height:"11",viewBox:"0 0 15 11"},u("path",{d:"M.414 5.843L1.627 4.63l3.472 3.472L13.202 0l1.212 1.213L5.1 10.528z"})),e("complete"))))}n(Fg,"ProgressBarComplete");function Eg(i){let{error:e,i18n:t,complete:r,numUploads:s}=i;function o(){let a=`${t("uploadFailed")} + + ${e}`;alert(a)}return n(o,"displayErrorAlert"),u("div",{className:"uppy-StatusBar-content",title:t("uploadFailed")},u("svg",{"aria-hidden":"true",focusable:"false",className:"uppy-StatusBar-statusIndicator uppy-c-icon",width:"11",height:"11",viewBox:"0 0 11 11"},u("path",{d:"M4.278 5.5L0 1.222 1.222 0 5.5 4.278 9.778 0 11 1.222 6.722 5.5 11 9.778 9.778 11 5.5 6.722 1.222 11 0 9.778z"})),u("div",{className:"uppy-StatusBar-status"},u("div",{className:"uppy-StatusBar-statusPrimary"},t("uploadFailed"),u("button",{className:"uppy-u-reset uppy-StatusBar-details","aria-label":t("showErrorDetails"),"data-microtip-position":"top-right","data-microtip-size":"medium",onClick:o,type:"button"},"?")),u(_g,{i18n:t,complete:r,numUploads:s})))}n(Eg,"ProgressBarError");var{STATE_ERROR:Og,STATE_WAITING:Cg,STATE_PREPROCESSING:ad,STATE_UPLOADING:fu,STATE_POSTPROCESSING:ld,STATE_COMPLETE:mu}=Ut;function hd(i){let{newFiles:e,allowNewUpload:t,isUploadInProgress:r,isAllPaused:s,resumableUploads:o,error:a,hideUploadButton:l,hidePauseResumeButton:h,hideCancelButton:p,hideRetryButton:d,recoveredState:f,uploadState:y,totalProgress:b,files:S,supportsUploadProgress:E,hideAfterFinish:x,isSomeGhost:F,doneButtonHandler:U,isUploadStarted:j,i18n:G,startUpload:J,uppy:B,isAllComplete:z,showProgressDetails:K,numUploads:oe,complete:Be,totalSize:Je,totalETA:wt,totalUploadedSize:We}=i;function _e(){switch(y){case ld:case ad:{let re=ea(S);return re.mode==="determinate"?re.value*100:b}case Og:return null;case fu:return E?b:null;default:return b}}n(_e,"getProgressValue");function ze(){switch(y){case ld:case ad:{let{mode:re}=ea(S);return re==="indeterminate"}case fu:return!E;default:return!1}}n(ze,"getIsIndeterminate");function xe(){if(f)return!1;switch(y){case Cg:return l||e===0;case mu:return x;default:return!1}}n(xe,"getIsHidden");let ui=_e(),V=xe(),R=ui??100,I=!a&&e&&!r&&!s&&t&&!l,L=!p&&y!==Cg&&y!==mu,Q=o&&!h&&y===fu,X=a&&!z&&!d,ye=U&&y===mu,pe=(0,ud.default)("uppy-StatusBar-progress",{"is-indeterminate":ze()}),ne=(0,ud.default)("uppy-StatusBar",`is-${y}`,{"has-ghosts":F});return u("div",{className:ne,"aria-hidden":V},u("div",{className:pe,style:{width:`${R}%`},role:"progressbar","aria-label":`${R}%`,"aria-valuetext":`${R}%`,"aria-valuemin":"0","aria-valuemax":"100","aria-valuenow":ui}),(()=>{switch(y){case ad:case ld:return u(Pg,{progress:ea(S)});case mu:return u(Fg,{i18n:G});case Og:return u(Eg,{error:a,i18n:G,numUploads:oe,complete:Be});case fu:return u(xg,{i18n:G,supportsUploadProgress:E,totalProgress:b,showProgressDetails:K,isUploadStarted:j,isAllComplete:z,isAllPaused:s,newFiles:e,numUploads:oe,complete:Be,totalUploadedSize:We,totalSize:Je,totalETA:wt,startUpload:J});default:return null}})(),u("div",{className:"uppy-StatusBar-actions"},f||I?u(gg,{newFiles:e,isUploadStarted:j,recoveredState:f,i18n:G,isSomeGhost:F,startUpload:J,uploadState:y}):null,X?u(yg,{i18n:G,uppy:B}):null,Q?u(bg,{isAllPaused:s,i18n:G,isAllComplete:z,resumableUploads:o,uppy:B}):null,L?u(vg,{i18n:G,uppy:B}):null,ye?u(wg,{i18n:G,doneButtonHandler:U}):null))}n(hd,"StatusBar");var Tg={strings:{uploading:"Uploading",complete:"Complete",uploadFailed:"Upload failed",paused:"Paused",retry:"Retry",cancel:"Cancel",pause:"Pause",resume:"Resume",done:"Done",filesUploadedOfTotal:{0:"%{complete} of %{smart_count} file uploaded",1:"%{complete} of %{smart_count} files uploaded"},dataUploadedOfTotal:"%{complete} of %{total}",xTimeLeft:"%{time} left",uploadXFiles:{0:"Upload %{smart_count} file",1:"Upload %{smart_count} files"},uploadXNewFiles:{0:"Upload +%{smart_count} file",1:"Upload +%{smart_count} files"},upload:"Upload",retryUpload:"Retry upload",xMoreFilesAdded:{0:"%{smart_count} more file added",1:"%{smart_count} more files added"},showErrorDetails:"Show error details"}};function ke(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError("attempted to use private field on non-instance");return i}n(ke,"_classPrivateFieldLooseBase");var x2=0;function Do(i){return"__private_"+x2+++"_"+i}n(Do,"_classPrivateFieldLooseKey");var F2={version:"3.2.5"},E2=2e3,O2=2e3;function C2(i,e,t,r){if(i)return Ut.STATE_ERROR;if(e)return Ut.STATE_COMPLETE;if(t)return Ut.STATE_WAITING;let s=Ut.STATE_WAITING,o=Object.keys(r);for(let a=0;a<o.length;a++){let{progress:l}=r[o[a]];if(l.uploadStarted&&!l.uploadComplete)return Ut.STATE_UPLOADING;l.preprocess&&s!==Ut.STATE_UPLOADING&&(s=Ut.STATE_PREPROCESSING),l.postprocess&&s!==Ut.STATE_UPLOADING&&s!==Ut.STATE_PREPROCESSING&&(s=Ut.STATE_POSTPROCESSING)}return s}n(C2,"getUploadingState");var fi=Do("lastUpdateTime"),Oi=Do("previousUploadedBytes"),Er=Do("previousSpeed"),Zt=Do("previousETA"),dd=Do("computeSmoothETA"),ta=Do("onUploadStart"),$i=class extends Z{constructor(e,t){super(e,t),Object.defineProperty(this,dd,{value:T2}),Object.defineProperty(this,fi,{writable:!0,value:void 0}),Object.defineProperty(this,Oi,{writable:!0,value:void 0}),Object.defineProperty(this,Er,{writable:!0,value:void 0}),Object.defineProperty(this,Zt,{writable:!0,value:void 0}),this.startUpload=()=>this.uppy.upload().catch(()=>{}),Object.defineProperty(this,ta,{writable:!0,value:()=>{let{recoveredState:s}=this.uppy.getState();if(ke(this,Er)[Er]=null,ke(this,Zt)[Zt]=null,s){ke(this,Oi)[Oi]=Object.values(s.files).reduce((o,a)=>{let{progress:l}=a;return o+l.bytesUploaded},0),this.uppy.emit("restore-confirmed");return}ke(this,fi)[fi]=performance.now(),ke(this,Oi)[Oi]=0}}),this.id=this.opts.id||"StatusBar",this.title="StatusBar",this.type="progressindicator",this.defaultLocale=Tg;let r={target:"body",hideUploadButton:!1,hideRetryButton:!1,hidePauseResumeButton:!1,hideCancelButton:!1,showProgressDetails:!1,hideAfterFinish:!0,doneButtonHandler:null};this.opts={...r,...t},this.i18nInit(),this.render=this.render.bind(this),this.install=this.install.bind(this)}render(e){let{capabilities:t,files:r,allowNewUpload:s,totalProgress:o,error:a,recoveredState:l}=e,{newFiles:h,startedFiles:p,completeFiles:d,isUploadStarted:f,isAllComplete:y,isAllErrored:b,isAllPaused:S,isUploadInProgress:E,isSomeGhost:x}=this.uppy.getObjectOfFilesPerState(),F=l?Object.values(r):h,U=!!t.resumableUploads,j=t.uploadProgress!==!1,G=0,J=0;p.forEach(z=>{G+=z.progress.bytesTotal||0,J+=z.progress.bytesUploaded||0});let B=ke(this,dd)[dd]({uploaded:J,total:G,remaining:G-J});return hd({error:a,uploadState:C2(a,y,l,e.files||{}),allowNewUpload:s,totalProgress:o,totalSize:G,totalUploadedSize:J,isAllComplete:!1,isAllPaused:S,isAllErrored:b,isUploadStarted:f,isUploadInProgress:E,isSomeGhost:x,recoveredState:l,complete:d.length,newFiles:F.length,numUploads:p.length,totalETA:B,files:r,i18n:this.i18n,uppy:this.uppy,startUpload:this.startUpload,doneButtonHandler:this.opts.doneButtonHandler,resumableUploads:U,supportsUploadProgress:j,showProgressDetails:this.opts.showProgressDetails,hideUploadButton:this.opts.hideUploadButton,hideRetryButton:this.opts.hideRetryButton,hidePauseResumeButton:this.opts.hidePauseResumeButton,hideCancelButton:this.opts.hideCancelButton,hideAfterFinish:this.opts.hideAfterFinish,isTargetDOMEl:this.isTargetDOMEl})}onMount(){let e=this.el;Hl(e)||(e.dir="ltr")}install(){let{target:e}=this.opts;e&&this.mount(e,this),this.uppy.on("upload",ke(this,ta)[ta]),ke(this,fi)[fi]=performance.now(),ke(this,Oi)[Oi]=this.uppy.getFiles().reduce((t,r)=>t+r.progress.bytesUploaded,0)}uninstall(){this.unmount(),this.uppy.off("upload",ke(this,ta)[ta])}};n($i,"StatusBar");function T2(i){var e,t;if(i.total===0||i.remaining===0)return 0;(t=(e=ke(this,fi))[fi])!=null||(e[fi]=performance.now());let r=performance.now()-ke(this,fi)[fi];if(r===0){var s;return Math.round(((s=ke(this,Zt)[Zt])!=null?s:0)/100)/10}let o=i.uploaded-ke(this,Oi)[Oi];if(ke(this,Oi)[Oi]=i.uploaded,o<=0){var a;return Math.round(((a=ke(this,Zt)[Zt])!=null?a:0)/100)/10}let l=o/r,h=ke(this,Er)[Er]==null?l:pu(l,ke(this,Er)[Er],E2,r);ke(this,Er)[Er]=h;let p=i.remaining/h,d=Math.max(ke(this,Zt)[Zt]-r,0),f=ke(this,Zt)[Zt]==null?p:pu(p,d,O2,r);return ke(this,Zt)[Zt]=f,ke(this,fi)[fi]=performance.now(),Math.round(f/100)/10}n(T2,"_computeSmoothETA2");$i.VERSION=F2.version;var Ag=300,Io=class extends we{constructor(){super(...arguments),this.ref=um()}componentWillEnter(e){this.ref.current.style.opacity="1",this.ref.current.style.transform="none",setTimeout(e,Ag)}componentWillLeave(e){this.ref.current.style.opacity="0",this.ref.current.style.transform="translateY(350%)",setTimeout(e,Ag)}render(){let{children:e}=this.props;return u("div",{className:"uppy-Informer-animated",ref:this.ref},e)}};n(Io,"FadeIn");function A2(i,e){return Object.assign(i,e)}n(A2,"assign");function R2(i,e){var t;return(t=i?.key)!=null?t:e}n(R2,"getKey");function U2(i,e){let t=i._ptgLinkedRefs||(i._ptgLinkedRefs={});return t[e]||(t[e]=r=>{i.refs[e]=r})}n(U2,"linkRef");function ia(i){let e={};for(let t=0;t<i.length;t++)if(i[t]!=null){let r=R2(i[t],t.toString(36));e[r]=i[t]}return e}n(ia,"getChildMapping");function k2(i,e){i=i||{},e=e||{};let t=n(a=>e.hasOwnProperty(a)?e[a]:i[a],"getValueForKey"),r={},s=[];for(let a in i)e.hasOwnProperty(a)?s.length&&(r[a]=s,s=[]):s.push(a);let o={};for(let a in e){if(r.hasOwnProperty(a))for(let l=0;l<r[a].length;l++){let h=r[a][l];o[r[a][l]]=t(h)}o[a]=t(a)}for(let a=0;a<s.length;a++)o[s[a]]=t(s[a]);return o}n(k2,"mergeChildMappings");var D2=n(i=>i,"identity"),ra=class extends we{constructor(e,t){super(e,t),this.refs={},this.state={children:ia(ci(ci(this.props.children))||[])},this.performAppear=this.performAppear.bind(this),this.performEnter=this.performEnter.bind(this),this.performLeave=this.performLeave.bind(this)}componentWillMount(){this.currentlyTransitioningKeys={},this.keysToAbortLeave=[],this.keysToEnter=[],this.keysToLeave=[]}componentDidMount(){let e=this.state.children;for(let t in e)e[t]&&this.performAppear(t)}componentWillReceiveProps(e){let t=ia(ci(e.children)||[]),r=this.state.children;this.setState(o=>({children:k2(o.children,t)}));let s;for(s in t)if(t.hasOwnProperty(s)){let o=r&&r.hasOwnProperty(s);t[s]&&o&&this.currentlyTransitioningKeys[s]?(this.keysToEnter.push(s),this.keysToAbortLeave.push(s)):t[s]&&!o&&!this.currentlyTransitioningKeys[s]&&this.keysToEnter.push(s)}for(s in r)if(r.hasOwnProperty(s)){let o=t&&t.hasOwnProperty(s);r[s]&&!o&&!this.currentlyTransitioningKeys[s]&&this.keysToLeave.push(s)}}componentDidUpdate(){let{keysToEnter:e}=this;this.keysToEnter=[],e.forEach(this.performEnter);let{keysToLeave:t}=this;this.keysToLeave=[],t.forEach(this.performLeave)}_finishAbort(e){let t=this.keysToAbortLeave.indexOf(e);t!==-1&&this.keysToAbortLeave.splice(t,1)}performAppear(e){this.currentlyTransitioningKeys[e]=!0;let t=this.refs[e];t!=null&&t.componentWillAppear?t.componentWillAppear(this._handleDoneAppearing.bind(this,e)):this._handleDoneAppearing(e)}_handleDoneAppearing(e){let t=this.refs[e];t!=null&&t.componentDidAppear&&t.componentDidAppear(),delete this.currentlyTransitioningKeys[e],this._finishAbort(e);let r=ia(ci(this.props.children)||[]);(!r||!r.hasOwnProperty(e))&&this.performLeave(e)}performEnter(e){this.currentlyTransitioningKeys[e]=!0;let t=this.refs[e];t!=null&&t.componentWillEnter?t.componentWillEnter(this._handleDoneEntering.bind(this,e)):this._handleDoneEntering(e)}_handleDoneEntering(e){let t=this.refs[e];t!=null&&t.componentDidEnter&&t.componentDidEnter(),delete this.currentlyTransitioningKeys[e],this._finishAbort(e);let r=ia(ci(this.props.children)||[]);(!r||!r.hasOwnProperty(e))&&this.performLeave(e)}performLeave(e){if(this.keysToAbortLeave.indexOf(e)!==-1)return;this.currentlyTransitioningKeys[e]=!0;let r=this.refs[e];r!=null&&r.componentWillLeave?r.componentWillLeave(this._handleDoneLeaving.bind(this,e)):this._handleDoneLeaving(e)}_handleDoneLeaving(e){if(this.keysToAbortLeave.indexOf(e)!==-1)return;let r=this.refs[e];r!=null&&r.componentDidLeave&&r.componentDidLeave(),delete this.currentlyTransitioningKeys[e];let s=ia(ci(this.props.children)||[]);if(s&&s.hasOwnProperty(e))this.performEnter(e);else{let o=A2({},this.state.children);delete o[e],this.setState({children:o})}}render(e,t){let{childFactory:r,transitionLeave:s,transitionName:o,transitionAppear:a,transitionEnter:l,transitionLeaveTimeout:h,transitionEnterTimeout:p,transitionAppearTimeout:d,component:f,...y}=e,{children:b}=t,S=Object.entries(b).map(E=>{let[x,F]=E;if(!F)return;let U=U2(this,x);return jl(r(F),{ref:U,key:x})}).filter(Boolean);return u(f,y,S)}};n(ra,"TransitionGroup");ra.defaultProps={component:"span",childFactory:D2};var Rg=ra;var I2={version:"3.0.4"},qi=class extends Z{constructor(e,t){super(e,t),this.render=s=>u("div",{className:"uppy uppy-Informer"},u(Rg,null,s.info.map(o=>u(Io,{key:o.message},u("p",{role:"alert"},o.message," ",o.details&&u("span",{"aria-label":o.details,"data-microtip-position":"top-left","data-microtip-size":"medium",role:"tooltip",onClick:()=>alert(`${o.message} + + ${o.details}`)},"?")))))),this.type="progressindicator",this.id=this.opts.id||"Informer",this.title="Informer";let r={};this.opts={...r,...t}}install(){let{target:e}=this.opts;e&&this.mount(e,this)}};n(qi,"Informer");qi.VERSION=I2.version;var N2=/^data:([^/]+\/[^,;]+(?:[^,]*?))(;base64)?,([\s\S]*)$/;function cd(i,e,t){var r,s;let o=N2.exec(i),a=(r=(s=e.mimeType)!=null?s:o?.[1])!=null?r:"plain/text",l;if(o?.[2]!=null){let h=atob(decodeURIComponent(o[3])),p=new Uint8Array(h.length);for(let d=0;d<h.length;d++)p[d]=h.charCodeAt(d);l=[p]}else o?.[3]!=null&&(l=[decodeURIComponent(o[3])]);return t?new File(l,e.name||"",{type:a}):new Blob(l,{type:a})}n(cd,"dataURItoBlob");function gu(i){return i.startsWith("blob:")}n(gu,"isObjectURL");function ge(i,e,t){return e in i?Object.defineProperty(i,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):i[e]=t,i}n(ge,"e");var zg=typeof self<"u"?self:global,la=typeof navigator<"u",M2=la&&typeof HTMLImageElement>"u",Ug=!(typeof global>"u"||typeof process>"u"||!process.versions||!process.versions.node),jg=zg.Buffer,Hg=!!jg,L2=n(i=>i!==void 0,"h");function $g(i){return i===void 0||(i instanceof Map?i.size===0:Object.values(i).filter(L2).length===0)}n($g,"f");function ut(i){let e=new Error(i);throw delete e.stack,e}n(ut,"l");function kg(i){let e=function(t){let r=0;return t.ifd0.enabled&&(r+=1024),t.exif.enabled&&(r+=2048),t.makerNote&&(r+=2048),t.userComment&&(r+=1024),t.gps.enabled&&(r+=512),t.interop.enabled&&(r+=100),t.ifd1.enabled&&(r+=1024),r+2048}(i);return i.jfif.enabled&&(e+=50),i.xmp.enabled&&(e+=2e4),i.iptc.enabled&&(e+=14e3),i.icc.enabled&&(e+=6e3),e}n(kg,"o");var pd=n(i=>String.fromCharCode.apply(null,i),"u"),Dg=typeof TextDecoder<"u"?new TextDecoder("utf-8"):void 0,$t=class{static from(e,t){return e instanceof this&&e.le===t?e:new $t(e,void 0,void 0,t)}constructor(e,t=0,r,s){if(typeof s=="boolean"&&(this.le=s),Array.isArray(e)&&(e=new Uint8Array(e)),e===0)this.byteOffset=0,this.byteLength=0;else if(e instanceof ArrayBuffer){r===void 0&&(r=e.byteLength-t);let o=new DataView(e,t,r);this._swapDataView(o)}else if(e instanceof Uint8Array||e instanceof DataView||e instanceof $t){r===void 0&&(r=e.byteLength-t),(t+=e.byteOffset)+r>e.byteOffset+e.byteLength&&ut("Creating view outside of available memory in ArrayBuffer");let o=new DataView(e.buffer,t,r);this._swapDataView(o)}else if(typeof e=="number"){let o=new DataView(new ArrayBuffer(e));this._swapDataView(o)}else ut("Invalid input argument for BufferView: "+e)}_swapArrayBuffer(e){this._swapDataView(new DataView(e))}_swapBuffer(e){this._swapDataView(new DataView(e.buffer,e.byteOffset,e.byteLength))}_swapDataView(e){this.dataView=e,this.buffer=e.buffer,this.byteOffset=e.byteOffset,this.byteLength=e.byteLength}_lengthToEnd(e){return this.byteLength-e}set(e,t,r=$t){return e instanceof DataView||e instanceof $t?e=new Uint8Array(e.buffer,e.byteOffset,e.byteLength):e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Uint8Array||ut("BufferView.set(): Invalid data argument."),this.toUint8().set(e,t),new r(this,t,e.byteLength)}subarray(e,t){return t=t||this._lengthToEnd(e),new $t(this,e,t)}toUint8(){return new Uint8Array(this.buffer,this.byteOffset,this.byteLength)}getUint8Array(e,t){return new Uint8Array(this.buffer,this.byteOffset+e,t)}getString(e=0,t=this.byteLength){return s=this.getUint8Array(e,t),Dg?Dg.decode(s):Hg?Buffer.from(s).toString("utf8"):decodeURIComponent(escape(pd(s)));var s}getLatin1String(e=0,t=this.byteLength){let r=this.getUint8Array(e,t);return pd(r)}getUnicodeString(e=0,t=this.byteLength){let r=[];for(let s=0;s<t&&e+s<this.byteLength;s+=2)r.push(this.getUint16(e+s));return pd(r)}getInt8(e){return this.dataView.getInt8(e)}getUint8(e){return this.dataView.getUint8(e)}getInt16(e,t=this.le){return this.dataView.getInt16(e,t)}getInt32(e,t=this.le){return this.dataView.getInt32(e,t)}getUint16(e,t=this.le){return this.dataView.getUint16(e,t)}getUint32(e,t=this.le){return this.dataView.getUint32(e,t)}getFloat32(e,t=this.le){return this.dataView.getFloat32(e,t)}getFloat64(e,t=this.le){return this.dataView.getFloat64(e,t)}getFloat(e,t=this.le){return this.dataView.getFloat32(e,t)}getDouble(e,t=this.le){return this.dataView.getFloat64(e,t)}getUintBytes(e,t,r){switch(t){case 1:return this.getUint8(e,r);case 2:return this.getUint16(e,r);case 4:return this.getUint32(e,r);case 8:return this.getUint64&&this.getUint64(e,r)}}getUint(e,t,r){switch(t){case 8:return this.getUint8(e,r);case 16:return this.getUint16(e,r);case 32:return this.getUint32(e,r);case 64:return this.getUint64&&this.getUint64(e,r)}}toString(e){return this.dataView.toString(e,this.constructor.name)}ensureChunk(){}};n($t,"c");function md(i,e){ut(`${i} '${e}' was not loaded, try using full build of exifr.`)}n(md,"p");var zo=class extends Map{constructor(e){super(),this.kind=e}get(e,t){return this.has(e)||md(this.kind,e),t&&(e in t||function(r,s){ut(`Unknown ${r} '${s}'.`)}(this.kind,e),t[e].enabled||md(this.kind,e)),super.get(e)}keyList(){return Array.from(this.keys())}};n(zo,"g");var xu=new zo("file parser"),ei=new zo("segment parser"),da=new zo("file reader"),B2=zg.fetch;function Ig(i,e){return(t=i).startsWith("data:")||t.length>1e4?yd(i,e,"base64"):Ug&&i.includes("://")?gd(i,e,"url",Pu):Ug?yd(i,e,"fs"):la?gd(i,e,"url",Pu):void ut("Invalid input argument");var t}n(Ig,"k");async function gd(i,e,t,r){return da.has(t)?yd(i,e,t):r?async function(s,o){let a=await o(s);return new $t(a)}(i,r):void ut(`Parser ${t} is not loaded`)}n(gd,"O");async function yd(i,e,t){let r=new(da.get(t))(i,e);return await r.read(),r}n(yd,"v");var Pu=n(i=>B2(i).then(e=>e.arrayBuffer()),"S"),ua=n(i=>new Promise((e,t)=>{let r=new FileReader;r.onloadend=()=>e(r.result||new ArrayBuffer),r.onerror=t,r.readAsArrayBuffer(i)}),"A"),yu=class extends Map{get tagKeys(){return this.allKeys||(this.allKeys=Array.from(this.keys())),this.allKeys}get tagValues(){return this.allValues||(this.allValues=Array.from(this.values())),this.allValues}};n(yu,"U");function qg(i,e,t){let r=new yu;for(let[s,o]of t)r.set(s,o);if(Array.isArray(e))for(let s of e)i.set(s,r);else i.set(e,r);return r}n(qg,"x");function Vg(i,e,t){let r,s=i.get(e);for(r of t)s.set(r[0],r[1])}n(Vg,"C");var ca=new Map,vd=new Map,bd=new Map,No=["chunked","firstChunkSize","firstChunkSizeNode","firstChunkSizeBrowser","chunkSize","chunkLimit"],Fu=["jfif","xmp","icc","iptc","ihdr"],ha=["tiff",...Fu],Ye=["ifd0","ifd1","exif","gps","interop"],Mo=[...ha,...Ye],Lo=["makerNote","userComment"],Eu=["translateKeys","translateValues","reviveValues","multiSegment"],Bo=[...Eu,"sanitize","mergeOutput","silentErrors"],na=class{get translate(){return this.translateKeys||this.translateValues||this.reviveValues}};n(na,"_");var es=class extends na{get needed(){return this.enabled||this.deps.size>0}constructor(e,t,r,s){if(super(),ge(this,"enabled",!1),ge(this,"skip",new Set),ge(this,"pick",new Set),ge(this,"deps",new Set),ge(this,"translateKeys",!1),ge(this,"translateValues",!1),ge(this,"reviveValues",!1),this.key=e,this.enabled=t,this.parse=this.enabled,this.applyInheritables(s),this.canBeFiltered=Ye.includes(e),this.canBeFiltered&&(this.dict=ca.get(e)),r!==void 0)if(Array.isArray(r))this.parse=this.enabled=!0,this.canBeFiltered&&r.length>0&&this.translateTagSet(r,this.pick);else if(typeof r=="object"){if(this.enabled=!0,this.parse=r.parse!==!1,this.canBeFiltered){let{pick:o,skip:a}=r;o&&o.length>0&&this.translateTagSet(o,this.pick),a&&a.length>0&&this.translateTagSet(a,this.skip)}this.applyInheritables(r)}else r===!0||r===!1?this.parse=this.enabled=r:ut(`Invalid options argument: ${r}`)}applyInheritables(e){let t,r;for(t of Eu)r=e[t],r!==void 0&&(this[t]=r)}translateTagSet(e,t){if(this.dict){let r,s,{tagKeys:o,tagValues:a}=this.dict;for(r of e)typeof r=="string"?(s=a.indexOf(r),s===-1&&(s=o.indexOf(Number(r))),s!==-1&&t.add(Number(o[s]))):t.add(r)}else for(let r of e)t.add(r)}finalizeFilters(){!this.enabled&&this.deps.size>0?(this.enabled=!0,_u(this.pick,this.deps)):this.enabled&&this.pick.size>0&&_u(this.pick,this.deps)}};n(es,"D");var kt={jfif:!1,tiff:!0,xmp:!1,icc:!1,iptc:!1,ifd0:!0,ifd1:!1,exif:!0,gps:!0,interop:!1,ihdr:void 0,makerNote:!1,userComment:!1,multiSegment:!1,skip:[],pick:[],translateKeys:!0,translateValues:!0,reviveValues:!0,sanitize:!0,mergeOutput:!0,silentErrors:!0,chunked:!0,firstChunkSize:void 0,firstChunkSizeNode:512,firstChunkSizeBrowser:65536,chunkSize:65536,chunkLimit:5},Ng=new Map,ts=class extends na{static useCached(e){let t=Ng.get(e);return t!==void 0||(t=new this(e),Ng.set(e,t)),t}constructor(e){super(),e===!0?this.setupFromTrue():e===void 0?this.setupFromUndefined():Array.isArray(e)?this.setupFromArray(e):typeof e=="object"?this.setupFromObject(e):ut(`Invalid options argument ${e}`),this.firstChunkSize===void 0&&(this.firstChunkSize=la?this.firstChunkSizeBrowser:this.firstChunkSizeNode),this.mergeOutput&&(this.ifd1.enabled=!1),this.filterNestedSegmentTags(),this.traverseTiffDependencyTree(),this.checkLoadedPlugins()}setupFromUndefined(){let e;for(e of No)this[e]=kt[e];for(e of Bo)this[e]=kt[e];for(e of Lo)this[e]=kt[e];for(e of Mo)this[e]=new es(e,kt[e],void 0,this)}setupFromTrue(){let e;for(e of No)this[e]=kt[e];for(e of Bo)this[e]=kt[e];for(e of Lo)this[e]=!0;for(e of Mo)this[e]=new es(e,!0,void 0,this)}setupFromArray(e){let t;for(t of No)this[t]=kt[t];for(t of Bo)this[t]=kt[t];for(t of Lo)this[t]=kt[t];for(t of Mo)this[t]=new es(t,!1,void 0,this);this.setupGlobalFilters(e,void 0,Ye)}setupFromObject(e){let t;for(t of(Ye.ifd0=Ye.ifd0||Ye.image,Ye.ifd1=Ye.ifd1||Ye.thumbnail,Object.assign(this,e),No))this[t]=fd(e[t],kt[t]);for(t of Bo)this[t]=fd(e[t],kt[t]);for(t of Lo)this[t]=fd(e[t],kt[t]);for(t of ha)this[t]=new es(t,kt[t],e[t],this);for(t of Ye)this[t]=new es(t,kt[t],e[t],this.tiff);this.setupGlobalFilters(e.pick,e.skip,Ye,Mo),e.tiff===!0?this.batchEnableWithBool(Ye,!0):e.tiff===!1?this.batchEnableWithUserValue(Ye,e):Array.isArray(e.tiff)?this.setupGlobalFilters(e.tiff,void 0,Ye):typeof e.tiff=="object"&&this.setupGlobalFilters(e.tiff.pick,e.tiff.skip,Ye)}batchEnableWithBool(e,t){for(let r of e)this[r].enabled=t}batchEnableWithUserValue(e,t){for(let r of e){let s=t[r];this[r].enabled=s!==!1&&s!==void 0}}setupGlobalFilters(e,t,r,s=r){if(e&&e.length){for(let a of s)this[a].enabled=!1;let o=Mg(e,r);for(let[a,l]of o)_u(this[a].pick,l),this[a].enabled=!0}else if(t&&t.length){let o=Mg(t,r);for(let[a,l]of o)_u(this[a].skip,l)}}filterNestedSegmentTags(){let{ifd0:e,exif:t,xmp:r,iptc:s,icc:o}=this;this.makerNote?t.deps.add(37500):t.skip.add(37500),this.userComment?t.deps.add(37510):t.skip.add(37510),r.enabled||e.skip.add(700),s.enabled||e.skip.add(33723),o.enabled||e.skip.add(34675)}traverseTiffDependencyTree(){let{ifd0:e,exif:t,gps:r,interop:s}=this;s.needed&&(t.deps.add(40965),e.deps.add(40965)),t.needed&&e.deps.add(34665),r.needed&&e.deps.add(34853),this.tiff.enabled=Ye.some(o=>this[o].enabled===!0)||this.makerNote||this.userComment;for(let o of Ye)this[o].finalizeFilters()}get onlyTiff(){return!Fu.map(e=>this[e].enabled).some(e=>e===!0)&&this.tiff.enabled}checkLoadedPlugins(){for(let e of ha)this[e].enabled&&!ei.has(e)&&md("segment parser",e)}};n(ts,"R");function Mg(i,e){let t,r,s,o,a=[];for(s of e){for(o of(t=ca.get(s),r=[],t))(i.includes(o[0])||i.includes(o[1]))&&r.push(o[0]);r.length&&a.push([s,r])}return a}n(Mg,"K");function fd(i,e){return i!==void 0?i:e!==void 0?e:void 0}n(fd,"W");function _u(i,e){for(let t of e)i.add(t)}n(_u,"X");ge(ts,"default",kt);var Ts=class{constructor(e){ge(this,"parsers",{}),ge(this,"output",{}),ge(this,"errors",[]),ge(this,"pushToErrors",t=>this.errors.push(t)),this.options=ts.useCached(e)}async read(e){this.file=await function(t,r){return typeof t=="string"?Ig(t,r):la&&!M2&&t instanceof HTMLImageElement?Ig(t.src,r):t instanceof Uint8Array||t instanceof ArrayBuffer||t instanceof DataView?new $t(t):la&&t instanceof Blob?gd(t,r,"blob",ua):void ut("Invalid input argument")}(e,this.options)}setup(){if(this.fileParser)return;let{file:e}=this,t=e.getUint16(0);for(let[r,s]of xu)if(s.canHandle(e,t))return this.fileParser=new s(this.options,this.file,this.parsers),e[r]=!0;this.file.close&&this.file.close(),ut("Unknown file format")}async parse(){let{output:e,errors:t}=this;return this.setup(),this.options.silentErrors?(await this.executeParsers().catch(this.pushToErrors),t.push(...this.fileParser.errors)):await this.executeParsers(),this.file.close&&this.file.close(),this.options.silentErrors&&t.length>0&&(e.errors=t),$g(r=e)?void 0:r;var r}async executeParsers(){let{output:e}=this;await this.fileParser.parse();let t=Object.values(this.parsers).map(async r=>{let s=await r.parse();r.assignToOutput(e,s)});this.options.silentErrors&&(t=t.map(r=>r.catch(this.pushToErrors))),await Promise.all(t)}async extractThumbnail(){this.setup();let{options:e,file:t}=this,r=ei.get("tiff",e);var s;if(t.tiff?s={start:0,type:"tiff"}:t.jpeg&&(s=await this.fileParser.getOrFindSegment("tiff")),s===void 0)return;let o=await this.fileParser.ensureSegmentChunk(s),a=this.parsers.tiff=new r(o,e,t),l=await a.extractThumbnail();return t.close&&t.close(),l}};n(Ts,"H");async function Wg(i,e){let t=new Ts(e);return await t.read(i),t.parse()}n(Wg,"Y");var z2=Object.freeze({__proto__:null,parse:Wg,Exifr:Ts,fileParsers:xu,segmentParsers:ei,fileReaders:da,tagKeys:ca,tagValues:vd,tagRevivers:bd,createDictionary:qg,extendDictionary:Vg,fetchUrlAsArrayBuffer:Pu,readBlobAsArrayBuffer:ua,chunkedProps:No,otherSegments:Fu,segments:ha,tiffBlocks:Ye,segmentsAndBlocks:Mo,tiffExtractables:Lo,inheritables:Eu,allFormatters:Bo,Options:ts}),Or=class{static findPosition(e,t){let r=e.getUint16(t+2)+2,s=typeof this.headerLength=="function"?this.headerLength(e,t,r):this.headerLength,o=t+s,a=r-s;return{offset:t,length:r,headerLength:s,start:o,size:a,end:o+a}}static parse(e,t={}){return new this(e,new ts({[this.type]:t}),e).parse()}normalizeInput(e){return e instanceof $t?e:new $t(e)}constructor(e,t={},r){ge(this,"errors",[]),ge(this,"raw",new Map),ge(this,"handleError",s=>{if(!this.options.silentErrors)throw s;this.errors.push(s.message)}),this.chunk=this.normalizeInput(e),this.file=r,this.type=this.constructor.type,this.globalOptions=this.options=t,this.localOptions=t[this.type],this.canTranslate=this.localOptions&&this.localOptions.translate}translate(){this.canTranslate&&(this.translated=this.translateBlock(this.raw,this.type))}get output(){return this.translated?this.translated:this.raw?Object.fromEntries(this.raw):void 0}translateBlock(e,t){let r=bd.get(t),s=vd.get(t),o=ca.get(t),a=this.options[t],l=a.reviveValues&&!!r,h=a.translateValues&&!!s,p=a.translateKeys&&!!o,d={};for(let[f,y]of e)l&&r.has(f)?y=r.get(f)(y):h&&s.has(f)&&(y=this.translateValue(y,s.get(f))),p&&o.has(f)&&(f=o.get(f)||f),d[f]=y;return d}translateValue(e,t){return t[e]||t.DEFAULT||e}assignToOutput(e,t){this.assignObjectToOutput(e,this.constructor.type,t)}assignObjectToOutput(e,t,r){if(this.globalOptions.mergeOutput)return Object.assign(e,r);e[t]?Object.assign(e[t],r):e[t]=r}};n(Or,"J");ge(Or,"headerLength",4),ge(Or,"type",void 0),ge(Or,"multiSegment",!1),ge(Or,"canHandle",()=>!1);function j2(i){return i===192||i===194||i===196||i===219||i===221||i===218||i===254}n(j2,"q");function H2(i){return i>=224&&i<=239}n(H2,"Q");function $2(i,e,t){for(let[r,s]of ei)if(s.canHandle(i,e,t))return r}n($2,"Z");var aa=class extends class{constructor(e,t,r){ge(this,"errors",[]),ge(this,"ensureSegmentChunk",async s=>{let o=s.start,a=s.size||65536;if(this.file.chunked)if(this.file.available(o,a))s.chunk=this.file.subarray(o,a);else try{s.chunk=await this.file.readChunk(o,a)}catch(l){ut(`Couldn't read segment: ${JSON.stringify(s)}. ${l.message}`)}else this.file.byteLength>o+a?s.chunk=this.file.subarray(o,a):s.size===void 0?s.chunk=this.file.subarray(o):ut("Segment unreachable: "+JSON.stringify(s));return s.chunk}),this.extendOptions&&this.extendOptions(e),this.options=e,this.file=t,this.parsers=r}injectSegment(e,t){this.options[e].enabled&&this.createParser(e,t)}createParser(e,t){let r=new(ei.get(e))(t,this.options,this.file);return this.parsers[e]=r}createParsers(e){for(let t of e){let{type:r,chunk:s}=t,o=this.options[r];if(o&&o.enabled){let a=this.parsers[r];a&&a.append||a||this.createParser(r,s)}}}async readSegments(e){let t=e.map(this.ensureSegmentChunk);await Promise.all(t)}}{constructor(...e){super(...e),ge(this,"appSegments",[]),ge(this,"jpegSegments",[]),ge(this,"unknownSegments",[])}static canHandle(e,t){return t===65496}async parse(){await this.findAppSegments(),await this.readSegments(this.appSegments),this.mergeMultiSegments(),this.createParsers(this.mergedAppSegments||this.appSegments)}setupSegmentFinderArgs(e){e===!0?(this.findAll=!0,this.wanted=new Set(ei.keyList())):(e=e===void 0?ei.keyList().filter(t=>this.options[t].enabled):e.filter(t=>this.options[t].enabled&&ei.has(t)),this.findAll=!1,this.remaining=new Set(e),this.wanted=new Set(e)),this.unfinishedMultiSegment=!1}async findAppSegments(e=0,t){this.setupSegmentFinderArgs(t);let{file:r,findAll:s,wanted:o,remaining:a}=this;if(!s&&this.file.chunked&&(s=Array.from(o).some(l=>{let h=ei.get(l),p=this.options[l];return h.multiSegment&&p.multiSegment}),s&&await this.file.readWhole()),e=this.findAppSegmentsInRange(e,r.byteLength),!this.options.onlyTiff&&r.chunked){let l=!1;for(;a.size>0&&!l&&(r.canReadNextChunk||this.unfinishedMultiSegment);){let{nextChunkOffset:h}=r,p=this.appSegments.some(d=>!this.file.available(d.offset||d.start,d.length||d.size));if(l=e>h&&!p?!await r.readNextChunk(e):!await r.readNextChunk(h),(e=this.findAppSegmentsInRange(e,r.byteLength))===void 0)return}}}findAppSegmentsInRange(e,t){t-=2;let r,s,o,a,l,h,{file:p,findAll:d,wanted:f,remaining:y,options:b}=this;for(;e<t;e++)if(p.getUint8(e)===255){if(r=p.getUint8(e+1),H2(r)){if(s=p.getUint16(e+2),o=$2(p,e,s),o&&f.has(o)&&(a=ei.get(o),l=a.findPosition(p,e),h=b[o],l.type=o,this.appSegments.push(l),!d&&(a.multiSegment&&h.multiSegment?(this.unfinishedMultiSegment=l.chunkNumber<l.chunkCount,this.unfinishedMultiSegment||y.delete(o)):y.delete(o),y.size===0)))break;b.recordUnknownSegments&&(l=Or.findPosition(p,e),l.marker=r,this.unknownSegments.push(l)),e+=s+1}else if(j2(r)){if(s=p.getUint16(e+2),r===218&&b.stopAfterSos!==!1)return;b.recordJpegSegments&&this.jpegSegments.push({offset:e,length:s,marker:r}),e+=s+1}}return e}mergeMultiSegments(){if(!this.appSegments.some(t=>t.multiSegment))return;let e=function(t,r){let s,o,a,l=new Map;for(let h=0;h<t.length;h++)s=t[h],o=s[r],l.has(o)?a=l.get(o):l.set(o,a=[]),a.push(s);return Array.from(l)}(this.appSegments,"type");this.mergedAppSegments=e.map(([t,r])=>{let s=ei.get(t,this.options);return s.handleMultiSegments?{type:t,chunk:s.handleMultiSegments(r)}:r[0]})}getSegment(e){return this.appSegments.find(t=>t.type===e)}async getOrFindSegment(e){let t=this.getSegment(e);return t===void 0&&(await this.findAppSegments(0,[e]),t=this.getSegment(e)),t}};n(aa,"ee");ge(aa,"type","jpeg"),xu.set("jpeg",aa);var q2=[void 0,1,1,2,4,8,1,1,2,4,8,4,8,4],vu=class extends Or{parseHeader(){var e=this.chunk.getUint16();e===18761?this.le=!0:e===19789&&(this.le=!1),this.chunk.le=this.le,this.headerParsed=!0}parseTags(e,t,r=new Map){let{pick:s,skip:o}=this.options[t];s=new Set(s);let a=s.size>0,l=o.size===0,h=this.chunk.getUint16(e);e+=2;for(let p=0;p<h;p++){let d=this.chunk.getUint16(e);if(a){if(s.has(d)&&(r.set(d,this.parseTag(e,d,t)),s.delete(d),s.size===0))break}else!l&&o.has(d)||r.set(d,this.parseTag(e,d,t));e+=12}return r}parseTag(e,t,r){let{chunk:s}=this,o=s.getUint16(e+2),a=s.getUint32(e+4),l=q2[o];if(l*a<=4?e+=8:e=s.getUint32(e+8),(o<1||o>13)&&ut(`Invalid TIFF value type. block: ${r.toUpperCase()}, tag: ${t.toString(16)}, type: ${o}, offset ${e}`),e>s.byteLength&&ut(`Invalid TIFF value offset. block: ${r.toUpperCase()}, tag: ${t.toString(16)}, type: ${o}, offset ${e} is outside of chunk size ${s.byteLength}`),o===1)return s.getUint8Array(e,a);if(o===2)return(h=function(p){for(;p.endsWith("\0");)p=p.slice(0,-1);return p}(h=s.getString(e,a)).trim())===""?void 0:h;var h;if(o===7)return s.getUint8Array(e,a);if(a===1)return this.parseTagValue(o,e);{let p=new(function(f){switch(f){case 1:return Uint8Array;case 3:return Uint16Array;case 4:return Uint32Array;case 5:return Array;case 6:return Int8Array;case 8:return Int16Array;case 9:return Int32Array;case 10:return Array;case 11:return Float32Array;case 12:return Float64Array;default:return Array}}(o))(a),d=l;for(let f=0;f<a;f++)p[f]=this.parseTagValue(o,e),e+=d;return p}}parseTagValue(e,t){let{chunk:r}=this;switch(e){case 1:return r.getUint8(t);case 3:return r.getUint16(t);case 4:return r.getUint32(t);case 5:return r.getUint32(t)/r.getUint32(t+4);case 6:return r.getInt8(t);case 8:return r.getInt16(t);case 9:return r.getInt32(t);case 10:return r.getInt32(t)/r.getInt32(t+4);case 11:return r.getFloat(t);case 12:return r.getDouble(t);case 13:return r.getUint32(t);default:ut(`Invalid tiff type ${e}`)}}};n(vu,"se");var jo=class extends vu{static canHandle(e,t){return e.getUint8(t+1)===225&&e.getUint32(t+4)===1165519206&&e.getUint16(t+8)===0}async parse(){this.parseHeader();let{options:e}=this;return e.ifd0.enabled&&await this.parseIfd0Block(),e.exif.enabled&&await this.safeParse("parseExifBlock"),e.gps.enabled&&await this.safeParse("parseGpsBlock"),e.interop.enabled&&await this.safeParse("parseInteropBlock"),e.ifd1.enabled&&await this.safeParse("parseThumbnailBlock"),this.createOutput()}safeParse(e){let t=this[e]();return t.catch!==void 0&&(t=t.catch(this.handleError)),t}findIfd0Offset(){this.ifd0Offset===void 0&&(this.ifd0Offset=this.chunk.getUint32(4))}findIfd1Offset(){if(this.ifd1Offset===void 0){this.findIfd0Offset();let e=this.chunk.getUint16(this.ifd0Offset),t=this.ifd0Offset+2+12*e;this.ifd1Offset=this.chunk.getUint32(t)}}parseBlock(e,t){let r=new Map;return this[t]=r,this.parseTags(e,t,r),r}async parseIfd0Block(){if(this.ifd0)return;let{file:e}=this;this.findIfd0Offset(),this.ifd0Offset<8&&ut("Malformed EXIF data"),!e.chunked&&this.ifd0Offset>e.byteLength&&ut(`IFD0 offset points to outside of file. +this.ifd0Offset: ${this.ifd0Offset}, file.byteLength: ${e.byteLength}`),e.tiff&&await e.ensureChunk(this.ifd0Offset,kg(this.options));let t=this.parseBlock(this.ifd0Offset,"ifd0");return t.size!==0?(this.exifOffset=t.get(34665),this.interopOffset=t.get(40965),this.gpsOffset=t.get(34853),this.xmp=t.get(700),this.iptc=t.get(33723),this.icc=t.get(34675),this.options.sanitize&&(t.delete(34665),t.delete(40965),t.delete(34853),t.delete(700),t.delete(33723),t.delete(34675)),t):void 0}async parseExifBlock(){if(this.exif||(this.ifd0||await this.parseIfd0Block(),this.exifOffset===void 0))return;this.file.tiff&&await this.file.ensureChunk(this.exifOffset,kg(this.options));let e=this.parseBlock(this.exifOffset,"exif");return this.interopOffset||(this.interopOffset=e.get(40965)),this.makerNote=e.get(37500),this.userComment=e.get(37510),this.options.sanitize&&(e.delete(40965),e.delete(37500),e.delete(37510)),this.unpack(e,41728),this.unpack(e,41729),e}unpack(e,t){let r=e.get(t);r&&r.length===1&&e.set(t,r[0])}async parseGpsBlock(){if(this.gps||(this.ifd0||await this.parseIfd0Block(),this.gpsOffset===void 0))return;let e=this.parseBlock(this.gpsOffset,"gps");return e&&e.has(2)&&e.has(4)&&(e.set("latitude",Lg(...e.get(2),e.get(1))),e.set("longitude",Lg(...e.get(4),e.get(3)))),e}async parseInteropBlock(){if(!this.interop&&(this.ifd0||await this.parseIfd0Block(),this.interopOffset!==void 0||this.exif||await this.parseExifBlock(),this.interopOffset!==void 0))return this.parseBlock(this.interopOffset,"interop")}async parseThumbnailBlock(e=!1){if(!this.ifd1&&!this.ifd1Parsed&&(!this.options.mergeOutput||e))return this.findIfd1Offset(),this.ifd1Offset>0&&(this.parseBlock(this.ifd1Offset,"ifd1"),this.ifd1Parsed=!0),this.ifd1}async extractThumbnail(){if(this.headerParsed||this.parseHeader(),this.ifd1Parsed||await this.parseThumbnailBlock(!0),this.ifd1===void 0)return;let e=this.ifd1.get(513),t=this.ifd1.get(514);return this.chunk.getUint8Array(e,t)}get image(){return this.ifd0}get thumbnail(){return this.ifd1}createOutput(){let e,t,r,s={};for(t of Ye)if(e=this[t],!$g(e))if(r=this.canTranslate?this.translateBlock(e,t):Object.fromEntries(e),this.options.mergeOutput){if(t==="ifd1")continue;Object.assign(s,r)}else s[t]=r;return this.makerNote&&(s.makerNote=this.makerNote),this.userComment&&(s.userComment=this.userComment),s}assignToOutput(e,t){if(this.globalOptions.mergeOutput)Object.assign(e,t);else for(let[r,s]of Object.entries(t))this.assignObjectToOutput(e,r,s)}};n(jo,"ie");function Lg(i,e,t,r){var s=i+e/60+t/3600;return r!=="S"&&r!=="W"||(s*=-1),s}n(Lg,"ne");ge(jo,"type","tiff"),ge(jo,"headerLength",10),ei.set("tiff",jo);var R4=Object.freeze({__proto__:null,default:z2,Exifr:Ts,fileParsers:xu,segmentParsers:ei,fileReaders:da,tagKeys:ca,tagValues:vd,tagRevivers:bd,createDictionary:qg,extendDictionary:Vg,fetchUrlAsArrayBuffer:Pu,readBlobAsArrayBuffer:ua,chunkedProps:No,otherSegments:Fu,segments:ha,tiffBlocks:Ye,segmentsAndBlocks:Mo,tiffExtractables:Lo,inheritables:Eu,allFormatters:Bo,Options:ts,parse:Wg}),wd={ifd0:!1,ifd1:!1,exif:!1,gps:!1,interop:!1,sanitize:!1,reviveValues:!0,translateKeys:!1,translateValues:!1,mergeOutput:!1},U4=Object.assign({},wd,{firstChunkSize:4e4,gps:[1,2,3,4]});var k4=Object.assign({},wd,{tiff:!1,ifd1:!0,mergeOutput:!1});var V2=Object.assign({},wd,{firstChunkSize:4e4,ifd0:[274]});async function W2(i){let e=new Ts(V2);await e.read(i);let t=await e.parse();if(t&&t.ifd0)return t.ifd0[274]}n(W2,"ce");var G2=Object.freeze({1:{dimensionSwapped:!1,scaleX:1,scaleY:1,deg:0,rad:0},2:{dimensionSwapped:!1,scaleX:-1,scaleY:1,deg:0,rad:0},3:{dimensionSwapped:!1,scaleX:1,scaleY:1,deg:180,rad:180*Math.PI/180},4:{dimensionSwapped:!1,scaleX:-1,scaleY:1,deg:180,rad:180*Math.PI/180},5:{dimensionSwapped:!0,scaleX:1,scaleY:-1,deg:90,rad:90*Math.PI/180},6:{dimensionSwapped:!0,scaleX:1,scaleY:1,deg:90,rad:90*Math.PI/180},7:{dimensionSwapped:!0,scaleX:1,scaleY:-1,deg:270,rad:270*Math.PI/180},8:{dimensionSwapped:!0,scaleX:1,scaleY:1,deg:270,rad:270*Math.PI/180}}),sa=!0,oa=!0;if(typeof navigator=="object"){let i=navigator.userAgent;if(i.includes("iPad")||i.includes("iPhone")){let e=i.match(/OS (\d+)_(\d+)/);if(e){let[,t,r]=e;sa=Number(t)+.1*Number(r)<13.4,oa=!1}}else if(i.includes("OS X 10")){let[,e]=i.match(/OS X 10[_.](\d+)/);sa=oa=Number(e)<15}if(i.includes("Chrome/")){let[,e]=i.match(/Chrome\/(\d+)/);sa=oa=Number(e)<81}else if(i.includes("Firefox/")){let[,e]=i.match(/Firefox\/(\d+)/);sa=oa=Number(e)<77}}async function Gg(i){let e=await W2(i);return Object.assign({canvas:sa,css:oa},G2[e])}n(Gg,"ye");var bu=class extends $t{constructor(...e){super(...e),ge(this,"ranges",new wu),this.byteLength!==0&&this.ranges.add(0,this.byteLength)}_tryExtend(e,t,r){if(e===0&&this.byteLength===0&&r){let s=new DataView(r.buffer||r,r.byteOffset,r.byteLength);this._swapDataView(s)}else{let s=e+t;if(s>this.byteLength){let{dataView:o}=this._extend(s);this._swapDataView(o)}}}_extend(e){let t;t=Hg?jg.allocUnsafe(e):new Uint8Array(e);let r=new DataView(t.buffer,t.byteOffset,t.byteLength);return t.set(new Uint8Array(this.buffer,this.byteOffset,this.byteLength),0),{uintView:t,dataView:r}}subarray(e,t,r=!1){return t=t||this._lengthToEnd(e),r&&this._tryExtend(e,t),this.ranges.add(e,t),super.subarray(e,t)}set(e,t,r=!1){r&&this._tryExtend(t,e.byteLength,e);let s=super.set(e,t);return this.ranges.add(t,s.byteLength),s}async ensureChunk(e,t){this.chunked&&(this.ranges.available(e,t)||await this.readChunk(e,t))}available(e,t){return this.ranges.available(e,t)}};n(bu,"be");var wu=class{constructor(){ge(this,"list",[])}get length(){return this.list.length}add(e,t,r=0){let s=e+t,o=this.list.filter(a=>Bg(e,a.offset,s)||Bg(e,a.end,s));if(o.length>0){e=Math.min(e,...o.map(l=>l.offset)),s=Math.max(s,...o.map(l=>l.end)),t=s-e;let a=o.shift();a.offset=e,a.length=t,a.end=s,this.list=this.list.filter(l=>!o.includes(l))}else this.list.push({offset:e,length:t,end:s})}available(e,t){let r=e+t;return this.list.some(s=>s.offset<=e&&r<=s.end)}};n(wu,"we");function Bg(i,e,t){return i<=e&&e<=t}n(Bg,"ke");var Su=class extends bu{constructor(e,t){super(0),ge(this,"chunksRead",0),this.input=e,this.options=t}async readWhole(){this.chunked=!1,await this.readChunk(this.nextChunkOffset)}async readChunked(){this.chunked=!0,await this.readChunk(0,this.options.firstChunkSize)}async readNextChunk(e=this.nextChunkOffset){if(this.fullyRead)return this.chunksRead++,!1;let t=this.options.chunkSize,r=await this.readChunk(e,t);return!!r&&r.byteLength===t}async readChunk(e,t){if(this.chunksRead++,(t=this.safeWrapAddress(e,t))!==0)return this._readChunk(e,t)}safeWrapAddress(e,t){return this.size!==void 0&&e+t>this.size?Math.max(0,this.size-e):t}get nextChunkOffset(){if(this.ranges.list.length!==0)return this.ranges.list[0].length}get canReadNextChunk(){return this.chunksRead<this.options.chunkLimit}get fullyRead(){return this.size!==void 0&&this.nextChunkOffset===this.size}read(){return this.options.chunked?this.readChunked():this.readWhole()}close(){}};n(Su,"Oe");da.set("blob",class extends Su{async readWhole(){this.chunked=!1;let i=await ua(this.input);this._swapArrayBuffer(i)}readChunked(){return this.chunked=!0,this.size=this.input.size,super.readChunked()}async _readChunk(i,e){let t=e?i+e:void 0,r=this.input.slice(i,t),s=await ua(r);return this.set(s,i,!0)}});var Kg={strings:{generatingThumbnails:"Generating thumbnails..."}};var K2={version:"3.0.6"};function X2(i,e,t){try{i.getContext("2d").getImageData(0,0,1,1)}catch(r){if(r.code===18)return Promise.reject(new Error("cannot read image, probably an svg with external resources"))}return i.toBlob?new Promise(r=>{i.toBlob(r,e,t)}).then(r=>{if(r===null)throw new Error("cannot read image, probably an svg with external resources");return r}):Promise.resolve().then(()=>cd(i.toDataURL(e,t),{})).then(r=>{if(r===null)throw new Error("could not extract blob, probably an old browser");return r})}n(X2,"canvasToBlob");function Y2(i,e){let t=i.width,r=i.height;(e.deg===90||e.deg===270)&&(t=i.height,r=i.width);let s=document.createElement("canvas");s.width=t,s.height=r;let o=s.getContext("2d");return o.translate(t/2,r/2),e.canvas&&(o.rotate(e.rad),o.scale(e.scaleX,e.scaleY)),o.drawImage(i,-i.width/2,-i.height/2,i.width,i.height),s}n(Y2,"rotateImage");function Q2(i){let e=i.width/i.height,t=5e6,r=4096,s=Math.floor(Math.sqrt(t*e)),o=Math.floor(t/Math.sqrt(t*e));if(s>r&&(s=r,o=Math.round(s/e)),o>r&&(o=r,s=Math.round(e*o)),i.width>s){let a=document.createElement("canvas");return a.width=s,a.height=o,a.getContext("2d").drawImage(i,0,0,s,o),a}return i}n(Q2,"protect");var Cr=class extends Z{constructor(e,t){super(e,t),this.onFileAdded=s=>{!s.preview&&s.data&&Uo(s.type)&&!s.isRemote&&this.addToQueue(s.id)},this.onCancelRequest=s=>{let o=this.queue.indexOf(s.id);o!==-1&&this.queue.splice(o,1)},this.onFileRemoved=s=>{let o=this.queue.indexOf(s.id);o!==-1&&this.queue.splice(o,1),s.preview&&gu(s.preview)&&URL.revokeObjectURL(s.preview)},this.onRestored=()=>{this.uppy.getFiles().filter(o=>o.isRestored).forEach(o=>{(!o.preview||gu(o.preview))&&this.addToQueue(o.id)})},this.onAllFilesRemoved=()=>{this.queue=[]},this.waitUntilAllProcessed=s=>{s.forEach(a=>{let l=this.uppy.getFile(a);this.uppy.emit("preprocess-progress",l,{mode:"indeterminate",message:this.i18n("generatingThumbnails")})});let o=n(()=>{s.forEach(a=>{let l=this.uppy.getFile(a);this.uppy.emit("preprocess-complete",l)})},"emitPreprocessCompleteForAll");return new Promise(a=>{this.queueProcessing?this.uppy.once("thumbnail:all-generated",()=>{o(),a()}):(o(),a())})},this.type="modifier",this.id=this.opts.id||"ThumbnailGenerator",this.title="Thumbnail Generator",this.queue=[],this.queueProcessing=!1,this.defaultThumbnailDimension=200,this.thumbnailType=this.opts.thumbnailType||"image/jpeg",this.defaultLocale=Kg;let r={thumbnailWidth:null,thumbnailHeight:null,waitForThumbnailsBeforeUpload:!1,lazy:!1};if(this.opts={...r,...t},this.i18nInit(),this.opts.lazy&&this.opts.waitForThumbnailsBeforeUpload)throw new Error("ThumbnailGenerator: The `lazy` and `waitForThumbnailsBeforeUpload` options are mutually exclusive. Please ensure at most one of them is set to `true`.")}createThumbnail(e,t,r){let s=URL.createObjectURL(e.data),o=new Promise((l,h)=>{let p=new Image;p.src=s,p.addEventListener("load",()=>{URL.revokeObjectURL(s),l(p)}),p.addEventListener("error",d=>{URL.revokeObjectURL(s),h(d.error||new Error("Could not create thumbnail"))})}),a=Gg(e.data).catch(()=>1);return Promise.all([o,a]).then(l=>{let[h,p]=l,d=this.getProportionalDimensions(h,t,r,p.deg),f=Y2(h,p),y=this.resizeImage(f,d.width,d.height);return X2(y,this.thumbnailType,80)}).then(l=>URL.createObjectURL(l))}getProportionalDimensions(e,t,r,s){let o=e.width/e.height;return(s===90||s===270)&&(o=e.height/e.width),t!=null?{width:t,height:Math.round(t/o)}:r!=null?{width:Math.round(r*o),height:r}:{width:this.defaultThumbnailDimension,height:Math.round(this.defaultThumbnailDimension/o)}}resizeImage(e,t,r){let s=Q2(e),o=Math.ceil(Math.log2(s.width/t));o<1&&(o=1);let a=t*2**(o-1),l=r*2**(o-1),h=2;for(;o--;){let p=document.createElement("canvas");p.width=a,p.height=l,p.getContext("2d").drawImage(s,0,0,a,l),s=p,a=Math.round(a/h),l=Math.round(l/h)}return s}setPreviewURL(e,t){this.uppy.setFileState(e,{preview:t})}addToQueue(e){this.queue.push(e),this.queueProcessing===!1&&this.processQueue()}processQueue(){if(this.queueProcessing=!0,this.queue.length>0){let e=this.uppy.getFile(this.queue.shift());return e?this.requestThumbnail(e).catch(()=>{}).then(()=>this.processQueue()):(this.uppy.log("[ThumbnailGenerator] file was removed before a thumbnail could be generated, but not removed from the queue. This is probably a bug","error"),Promise.resolve())}return this.queueProcessing=!1,this.uppy.log("[ThumbnailGenerator] Emptied thumbnail queue"),this.uppy.emit("thumbnail:all-generated"),Promise.resolve()}requestThumbnail(e){return Uo(e.type)&&!e.isRemote?this.createThumbnail(e,this.opts.thumbnailWidth,this.opts.thumbnailHeight).then(t=>{this.setPreviewURL(e.id,t),this.uppy.log(`[ThumbnailGenerator] Generated thumbnail for ${e.id}`),this.uppy.emit("thumbnail:generated",this.uppy.getFile(e.id),t)}).catch(t=>{this.uppy.log(`[ThumbnailGenerator] Failed thumbnail for ${e.id}:`,"warning"),this.uppy.log(t,"warning"),this.uppy.emit("thumbnail:error",this.uppy.getFile(e.id),t)}):Promise.resolve()}install(){this.uppy.on("file-removed",this.onFileRemoved),this.uppy.on("cancel-all",this.onAllFilesRemoved),this.opts.lazy?(this.uppy.on("thumbnail:request",this.onFileAdded),this.uppy.on("thumbnail:cancel",this.onCancelRequest)):(this.uppy.on("file-added",this.onFileAdded),this.uppy.on("restored",this.onRestored)),this.opts.waitForThumbnailsBeforeUpload&&this.uppy.addPreProcessor(this.waitUntilAllProcessed)}uninstall(){this.uppy.off("file-removed",this.onFileRemoved),this.uppy.off("cancel-all",this.onAllFilesRemoved),this.opts.lazy?(this.uppy.off("thumbnail:request",this.onFileAdded),this.uppy.off("thumbnail:cancel",this.onCancelRequest)):(this.uppy.off("file-added",this.onFileAdded),this.uppy.off("restored",this.onRestored)),this.opts.waitForThumbnailsBeforeUpload&&this.uppy.removePreProcessor(this.waitUntilAllProcessed)}};n(Cr,"ThumbnailGenerator");Cr.VERSION=K2.version;function Ou(i){if(typeof i=="string"){let e=document.querySelectorAll(i);return e.length===0?null:Array.from(e)}return typeof i=="object"&&En(i)?[i]:null}n(Ou,"findAllDOMElements");var Qe=Array.from;function Cu(i,e,t,r){let{onSuccess:s}=r;i.readEntries(o=>{let a=[...e,...o];o.length?queueMicrotask(()=>{Cu(i,a,t,{onSuccess:s})}):s(a)},o=>{t(o),s(e)})}n(Cu,"getFilesAndDirectoriesFromDirectory");function Xg(i,e){return i==null?i:{kind:i.isFile?"file":i.isDirectory?"directory":void 0,name:i.name,getFile(){return new Promise((t,r)=>i.file(t,r))},async*values(){let t=i.createReader();yield*await new Promise(s=>{Cu(t,[],e,{onSuccess:o=>s(o.map(a=>Xg(a,e)))})})},isSameEntry:void 0}}n(Xg,"getAsFileSystemHandleFromEntry");function Yg(i,e,t){try{return t===void 0&&(t=void 0),async function*(){let r=n(()=>`${e}/${i.name}`,"getNextRelativePath");if(i.kind==="file"){let s=await i.getFile();s!=null?(s.relativePath=e?r():null,yield s):t!=null&&(yield t)}else if(i.kind==="directory")for await(let s of i.values())yield*Yg(s,e?r():i.name);else t!=null&&(yield t)}()}catch(r){return Promise.reject(r)}}n(Yg,"createPromiseToAddFileOrParseDirectory");async function*Sd(i,e){let t=await Promise.all(Array.from(i.items,async r=>{var s;let o,a=n(()=>typeof r.getAsEntry=="function"?r.getAsEntry():r.webkitGetAsEntry(),"getAsEntry");return(s=o)!=null||(o=Xg(a(),e)),{fileSystemHandle:o,lastResortFile:r.getAsFile()}}));for(let{lastResortFile:r,fileSystemHandle:s}of t)if(s!=null)try{yield*Yg(s,"",r)}catch(o){r!=null?yield r:e(o)}else r!=null&&(yield r)}n(Sd,"getFilesFromDataTransfer");function Pd(i){let e=Qe(i.files);return Promise.resolve(e)}n(Pd,"fallbackApi");async function As(i,e){var t;let r=(t=e?.logDropError)!=null?t:Function.prototype;try{let s=[];for await(let o of Sd(i,r))s.push(o);return s}catch{return Pd(i)}}n(As,"getDroppedFiles");var Qg=Number.isNaN||n(function(e){return typeof e=="number"&&e!==e},"ponyfill");function J2(i,e){return!!(i===e||Qg(i)&&Qg(e))}n(J2,"isEqual");function Z2(i,e){if(i.length!==e.length)return!1;for(var t=0;t<i.length;t++)if(!J2(i[t],e[t]))return!1;return!0}n(Z2,"areInputsEqual");function _d(i,e){e===void 0&&(e=Z2);var t=null;function r(){for(var s=[],o=0;o<arguments.length;o++)s[o]=arguments[o];if(t&&t.lastThis===this&&e(s,t.lastArgs))return t.lastResult;var a=i.apply(this,s);return t={lastResult:a,lastArgs:s,lastThis:this},a}return n(r,"memoized"),r.clear=n(function(){t=null},"clear"),r}n(_d,"memoizeOne");var Tu=['a[href]:not([tabindex^="-"]):not([inert]):not([aria-hidden])','area[href]:not([tabindex^="-"]):not([inert]):not([aria-hidden])',"input:not([disabled]):not([inert]):not([aria-hidden])","select:not([disabled]):not([inert]):not([aria-hidden])","textarea:not([disabled]):not([inert]):not([aria-hidden])","button:not([disabled]):not([inert]):not([aria-hidden])",'iframe:not([tabindex^="-"]):not([inert]):not([aria-hidden])','object:not([tabindex^="-"]):not([inert]):not([aria-hidden])','embed:not([tabindex^="-"]):not([inert]):not([aria-hidden])','[contenteditable]:not([tabindex^="-"]):not([inert]):not([aria-hidden])','[tabindex]:not([tabindex^="-"]):not([inert]):not([aria-hidden])'];function pa(i,e){if(e){let t=i.querySelector(`[data-uppy-paneltype="${e}"]`);if(t)return t}return i}n(pa,"getActiveOverlayEl");function Jg(i,e){let t=e[0];t&&(t.focus(),i.preventDefault())}n(Jg,"focusOnFirstNode");function eS(i,e){let t=e[e.length-1];t&&(t.focus(),i.preventDefault())}n(eS,"focusOnLastNode");function tS(i){return i.contains(document.activeElement)}n(tS,"isFocusInOverlay");function xd(i,e,t){let r=pa(t,e),s=Qe(r.querySelectorAll(Tu)),o=s.indexOf(document.activeElement);tS(r)?i.shiftKey&&o===0?eS(i,s):!i.shiftKey&&o===s.length-1&&Jg(i,s):Jg(i,s)}n(xd,"trapFocus");function Zg(i,e,t){e===null||xd(i,e,t)}n(Zg,"forInline");var ey=de(Sh(),1);function Fd(){let i=!1;return(0,ey.default)(n((t,r)=>{let s=pa(t,r),o=s.contains(document.activeElement);if(o&&i)return;let a=s.querySelector("[data-uppy-super-focusable]");if(!(o&&!a))if(a)a.focus({preventScroll:!0}),i=!0;else{let l=s.querySelector(Tu);l?.focus({preventScroll:!0}),i=!1}},"superFocus"),260)}n(Fd,"createSuperFocus");var xy=de(Qt(),1);function fa(){let i=document.body;return!(!("draggable"in i)||!("ondragstart"in i&&"ondrop"in i)||!("FormData"in window)||!("FileReader"in window))}n(fa,"isDragDropSupported");var ay=de(Qt(),1),ly=de(iy(),1);function rS(){return u("svg",{"aria-hidden":"true",focusable:"false",width:"25",height:"25",viewBox:"0 0 25 25"},u("g",{fill:"#686DE0",fillRule:"evenodd"},u("path",{d:"M5 7v10h15V7H5zm0-1h15a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1z",fillRule:"nonzero"}),u("path",{d:"M6.35 17.172l4.994-5.026a.5.5 0 0 1 .707 0l2.16 2.16 3.505-3.505a.5.5 0 0 1 .707 0l2.336 2.31-.707.72-1.983-1.97-3.505 3.505a.5.5 0 0 1-.707 0l-2.16-2.159-3.938 3.939-1.409.026z",fillRule:"nonzero"}),u("circle",{cx:"7.5",cy:"9.5",r:"1.5"})))}n(rS,"iconImage");function sS(){return u("svg",{"aria-hidden":"true",focusable:"false",className:"uppy-c-icon",width:"25",height:"25",viewBox:"0 0 25 25"},u("path",{d:"M9.5 18.64c0 1.14-1.145 2-2.5 2s-2.5-.86-2.5-2c0-1.14 1.145-2 2.5-2 .557 0 1.079.145 1.5.396V7.25a.5.5 0 0 1 .379-.485l9-2.25A.5.5 0 0 1 18.5 5v11.64c0 1.14-1.145 2-2.5 2s-2.5-.86-2.5-2c0-1.14 1.145-2 2.5-2 .557 0 1.079.145 1.5.396V8.67l-8 2v7.97zm8-11v-2l-8 2v2l8-2zM7 19.64c.855 0 1.5-.484 1.5-1s-.645-1-1.5-1-1.5.484-1.5 1 .645 1 1.5 1zm9-2c.855 0 1.5-.484 1.5-1s-.645-1-1.5-1-1.5.484-1.5 1 .645 1 1.5 1z",fill:"#049BCF",fillRule:"nonzero"}))}n(sS,"iconAudio");function oS(){return u("svg",{"aria-hidden":"true",focusable:"false",className:"uppy-c-icon",width:"25",height:"25",viewBox:"0 0 25 25"},u("path",{d:"M16 11.834l4.486-2.691A1 1 0 0 1 22 10v6a1 1 0 0 1-1.514.857L16 14.167V17a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V9a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v2.834zM15 9H5v8h10V9zm1 4l5 3v-6l-5 3z",fill:"#19AF67",fillRule:"nonzero"}))}n(oS,"iconVideo");function nS(){return u("svg",{"aria-hidden":"true",focusable:"false",className:"uppy-c-icon",width:"25",height:"25",viewBox:"0 0 25 25"},u("path",{d:"M9.766 8.295c-.691-1.843-.539-3.401.747-3.726 1.643-.414 2.505.938 2.39 3.299-.039.79-.194 1.662-.537 3.148.324.49.66.967 1.055 1.51.17.231.382.488.629.757 1.866-.128 3.653.114 4.918.655 1.487.635 2.192 1.685 1.614 2.84-.566 1.133-1.839 1.084-3.416.249-1.141-.604-2.457-1.634-3.51-2.707a13.467 13.467 0 0 0-2.238.426c-1.392 4.051-4.534 6.453-5.707 4.572-.986-1.58 1.38-4.206 4.914-5.375.097-.322.185-.656.264-1.001.08-.353.306-1.31.407-1.737-.678-1.059-1.2-2.031-1.53-2.91zm2.098 4.87c-.033.144-.068.287-.104.427l.033-.01-.012.038a14.065 14.065 0 0 1 1.02-.197l-.032-.033.052-.004a7.902 7.902 0 0 1-.208-.271c-.197-.27-.38-.526-.555-.775l-.006.028-.002-.003c-.076.323-.148.632-.186.8zm5.77 2.978c1.143.605 1.832.632 2.054.187.26-.519-.087-1.034-1.113-1.473-.911-.39-2.175-.608-3.55-.608.845.766 1.787 1.459 2.609 1.894zM6.559 18.789c.14.223.693.16 1.425-.413.827-.648 1.61-1.747 2.208-3.206-2.563 1.064-4.102 2.867-3.633 3.62zm5.345-10.97c.088-1.793-.351-2.48-1.146-2.28-.473.119-.564 1.05-.056 2.405.213.566.52 1.188.908 1.859.18-.858.268-1.453.294-1.984z",fill:"#E2514A",fillRule:"nonzero"}))}n(nS,"iconPDF");function aS(){return u("svg",{"aria-hidden":"true",focusable:"false",width:"25",height:"25",viewBox:"0 0 25 25"},u("path",{d:"M10.45 2.05h1.05a.5.5 0 0 1 .5.5v.024a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5V2.55a.5.5 0 0 1 .5-.5zm2.05 1.024h1.05a.5.5 0 0 1 .5.5V3.6a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5v-.001zM10.45 0h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5V.5a.5.5 0 0 1 .5-.5zm2.05 1.025h1.05a.5.5 0 0 1 .5.5v.024a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.024a.5.5 0 0 1 .5-.5zm-2.05 3.074h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5zm2.05 1.025h1.05a.5.5 0 0 1 .5.5v.024a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.024a.5.5 0 0 1 .5-.5zm-2.05 1.024h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5zm2.05 1.025h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5zm-2.05 1.025h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5zm2.05 1.025h1.05a.5.5 0 0 1 .5.5v.024a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.024a.5.5 0 0 1 .5-.5zm-1.656 3.074l-.82 5.946c.52.302 1.174.458 1.976.458.803 0 1.455-.156 1.975-.458l-.82-5.946h-2.311zm0-1.025h2.312c.512 0 .946.378 1.015.885l.82 5.946c.056.412-.142.817-.501 1.026-.686.398-1.515.597-2.49.597-.974 0-1.804-.199-2.49-.597a1.025 1.025 0 0 1-.5-1.026l.819-5.946c.07-.507.503-.885 1.015-.885zm.545 6.6a.5.5 0 0 1-.397-.561l.143-.999a.5.5 0 0 1 .495-.429h.74a.5.5 0 0 1 .495.43l.143.998a.5.5 0 0 1-.397.561c-.404.08-.819.08-1.222 0z",fill:"#00C469",fillRule:"nonzero"}))}n(aS,"iconArchive");function lS(){return u("svg",{"aria-hidden":"true",focusable:"false",className:"uppy-c-icon",width:"25",height:"25",viewBox:"0 0 25 25"},u("g",{fill:"#A7AFB7",fillRule:"nonzero"},u("path",{d:"M5.5 22a.5.5 0 0 1-.5-.5v-18a.5.5 0 0 1 .5-.5h10.719a.5.5 0 0 1 .367.16l3.281 3.556a.5.5 0 0 1 .133.339V21.5a.5.5 0 0 1-.5.5h-14zm.5-1h13V7.25L16 4H6v17z"}),u("path",{d:"M15 4v3a1 1 0 0 0 1 1h3V7h-3V4h-1z"})))}n(lS,"iconFile");function uS(){return u("svg",{"aria-hidden":"true",focusable:"false",className:"uppy-c-icon",width:"25",height:"25",viewBox:"0 0 25 25"},u("path",{d:"M4.5 7h13a.5.5 0 1 1 0 1h-13a.5.5 0 0 1 0-1zm0 3h15a.5.5 0 1 1 0 1h-15a.5.5 0 1 1 0-1zm0 3h15a.5.5 0 1 1 0 1h-15a.5.5 0 1 1 0-1zm0 3h10a.5.5 0 1 1 0 1h-10a.5.5 0 1 1 0-1z",fill:"#5A5E69",fillRule:"nonzero"}))}n(uS,"iconText");function Rs(i){let e={color:"#838999",icon:lS()};if(!i)return e;let t=i.split("/")[0],r=i.split("/")[1];return t==="text"?{color:"#5a5e69",icon:uS()}:t==="image"?{color:"#686de0",icon:rS()}:t==="audio"?{color:"#068dbb",icon:sS()}:t==="video"?{color:"#19af67",icon:oS()}:t==="application"&&r==="pdf"?{color:"#e25149",icon:nS()}:t==="application"&&["zip","x-7z-compressed","x-rar-compressed","x-tar","x-gzip","x-apple-diskimage"].indexOf(r)!==-1?{color:"#00C469",icon:aS()}:e}n(Rs,"getIconByMime");function ma(i){let{file:e}=i;if(e.preview)return u("img",{className:"uppy-Dashboard-Item-previewImg",alt:e.name,src:e.preview});let{color:t,icon:r}=Rs(e.type);return u("div",{className:"uppy-Dashboard-Item-previewIconWrap"},u("span",{className:"uppy-Dashboard-Item-previewIcon",style:{color:t}},r),u("svg",{"aria-hidden":"true",focusable:"false",className:"uppy-Dashboard-Item-previewIconBg",width:"58",height:"76",viewBox:"0 0 58 76"},u("rect",{fill:"#FFF",width:"58",height:"76",rx:"3",fillRule:"evenodd"})))}n(ma,"FilePreview");var hS=n((i,e)=>(typeof e=="function"?e():e).filter(s=>s.id===i)[0].name,"metaFieldIdToName");function ga(i){let{file:e,toggleFileCard:t,i18n:r,metaFields:s}=i,{missingRequiredMetaFields:o}=e;if(!(o!=null&&o.length))return null;let a=o.map(l=>hS(l,s)).join(", ");return u("div",{className:"uppy-Dashboard-Item-errorMessage"},r("missingRequiredMetaFields",{smart_count:o.length,fields:a})," ",u("button",{type:"button",class:"uppy-u-reset uppy-Dashboard-Item-errorMessageBtn",onClick:()=>t(!0,e.id)},r("editFile")))}n(ga,"renderMissingMetaFieldsError");function Ed(i){let{file:e,i18n:t,toggleFileCard:r,metaFields:s,showLinkToFileUploadResult:o}=i,a="rgba(255, 255, 255, 0.5)",l=e.preview?a:Rs(i.file.type).color;return u("div",{className:"uppy-Dashboard-Item-previewInnerWrap",style:{backgroundColor:l}},o&&e.uploadURL&&u("a",{className:"uppy-Dashboard-Item-previewLink",href:e.uploadURL,rel:"noreferrer noopener",target:"_blank","aria-label":e.meta.name},u("span",{hidden:!0},e.meta.name)),u(ma,{file:e}),u(ga,{file:e,i18n:t,toggleFileCard:r,metaFields:s}))}n(Ed,"FilePreviewAndLink");function dS(i){if(!i.isUploaded){if(i.error&&!i.hideRetryButton){i.uppy.retryUpload(i.file.id);return}i.resumableUploads&&!i.hidePauseResumeButton?i.uppy.pauseResume(i.file.id):i.individualCancellation&&!i.hideCancelButton&&i.uppy.removeFile(i.file.id)}}n(dS,"onPauseResumeCancelRetry");function ry(i){return i.isUploaded?i.i18n("uploadComplete"):i.error?i.i18n("retryUpload"):i.resumableUploads?i.file.isPaused?i.i18n("resumeUpload"):i.i18n("pauseUpload"):i.individualCancellation?i.i18n("cancelUpload"):""}n(ry,"progressIndicatorTitle");function Od(i){return u("div",{className:"uppy-Dashboard-Item-progress"},u("button",{className:"uppy-u-reset uppy-c-btn uppy-Dashboard-Item-progressIndicator",type:"button","aria-label":ry(i),title:ry(i),onClick:()=>dS(i)},i.children))}n(Od,"ProgressIndicatorButton");function Au(i){let{children:e}=i;return u("svg",{"aria-hidden":"true",focusable:"false",width:"70",height:"70",viewBox:"0 0 36 36",className:"uppy-c-icon uppy-Dashboard-Item-progressIcon--circle"},e)}n(Au,"ProgressCircleContainer");function Cd(i){let{progress:e}=i,t=2*Math.PI*15;return u("g",null,u("circle",{className:"uppy-Dashboard-Item-progressIcon--bg",r:"15",cx:"18",cy:"18","stroke-width":"2",fill:"none"}),u("circle",{className:"uppy-Dashboard-Item-progressIcon--progress",r:"15",cx:"18",cy:"18",transform:"rotate(-90, 18, 18)",fill:"none","stroke-width":"2","stroke-dasharray":t,"stroke-dashoffset":t-t/100*e}))}n(Cd,"ProgressCircle");function Td(i){if(!i.file.progress.uploadStarted)return null;if(i.isUploaded)return u("div",{className:"uppy-Dashboard-Item-progress"},u("div",{className:"uppy-Dashboard-Item-progressIndicator"},u(Au,null,u("circle",{r:"15",cx:"18",cy:"18",fill:"#1bb240"}),u("polygon",{className:"uppy-Dashboard-Item-progressIcon--check",transform:"translate(2, 3)",points:"14 22.5 7 15.2457065 8.99985857 13.1732815 14 18.3547104 22.9729883 9 25 11.1005634"}))));if(!i.recoveredState)return i.error&&!i.hideRetryButton?u(Od,i,u("svg",{"aria-hidden":"true",focusable:"false",className:"uppy-c-icon uppy-Dashboard-Item-progressIcon--retry",width:"28",height:"31",viewBox:"0 0 16 19"},u("path",{d:"M16 11a8 8 0 1 1-8-8v2a6 6 0 1 0 6 6h2z"}),u("path",{d:"M7.9 3H10v2H7.9z"}),u("path",{d:"M8.536.5l3.535 3.536-1.414 1.414L7.12 1.914z"}),u("path",{d:"M10.657 2.621l1.414 1.415L8.536 7.57 7.12 6.157z"}))):i.resumableUploads&&!i.hidePauseResumeButton?u(Od,i,u(Au,null,u(Cd,{progress:i.file.progress.percentage}),i.file.isPaused?u("polygon",{className:"uppy-Dashboard-Item-progressIcon--play",transform:"translate(3, 3)",points:"12 20 12 10 20 15"}):u("g",{className:"uppy-Dashboard-Item-progressIcon--pause",transform:"translate(14.5, 13)"},u("rect",{x:"0",y:"0",width:"2",height:"10",rx:"0"}),u("rect",{x:"5",y:"0",width:"2",height:"10",rx:"0"})))):!i.resumableUploads&&i.individualCancellation&&!i.hideCancelButton?u(Od,i,u(Au,null,u(Cd,{progress:i.file.progress.percentage}),u("polygon",{className:"cancel",transform:"translate(2, 2)",points:"19.8856516 11.0625 16 14.9481516 12.1019737 11.0625 11.0625 12.1143484 14.9481516 16 11.0625 19.8980263 12.1019737 20.9375 16 17.0518484 19.8856516 20.9375 20.9375 19.8980263 17.0518484 16 20.9375 12"}))):u("div",{className:"uppy-Dashboard-Item-progress"},u("div",{className:"uppy-Dashboard-Item-progressIndicator"},u(Au,null,u(Cd,{progress:i.file.progress.percentage}))))}n(Td,"FileProgress");var ny=de(oy(),1);var Ad="...";function Ru(i,e){if(e===0)return"";if(i.length<=e)return i;if(e<=Ad.length+1)return`${i.slice(0,e-1)}\u2026`;let t=e-Ad.length,r=Math.ceil(t/2),s=Math.floor(t/2);return i.slice(0,r)+Ad+i.slice(-s)}n(Ru,"truncateString");var cS=n(i=>{let{author:e,name:t}=i.file.meta;function r(){return i.isSingleFile&&i.containerHeight>=350?90:i.containerWidth<=352?35:i.containerWidth<=576?60:e?20:30}return n(r,"getMaxNameLength"),u("div",{className:"uppy-Dashboard-Item-name",title:t},Ru(t,r()))},"renderFileName"),pS=n(i=>{let{author:e}=i.file.meta,{providerName:t}=i.file.remote,r="\xB7";return e?u("div",{className:"uppy-Dashboard-Item-author"},u("a",{href:`${e.url}?utm_source=Companion&utm_medium=referral`,target:"_blank",rel:"noopener noreferrer"},Ru(e.name,13)),t?u(Ht,null,` ${r} `,t,` ${r} `):null):null},"renderAuthor"),fS=n(i=>i.file.size&&u("div",{className:"uppy-Dashboard-Item-statusSize"},(0,ny.default)(i.file.size)),"renderFileSize"),mS=n(i=>i.file.isGhost&&u("span",null," \u2022 ",u("button",{className:"uppy-u-reset uppy-c-btn uppy-Dashboard-Item-reSelect",type:"button",onClick:i.toggleAddFilesPanel},i.i18n("reSelect"))),"ReSelectButton"),gS=n(i=>{let{file:e,onClick:t}=i;return e.error?u("button",{className:"uppy-u-reset uppy-c-btn uppy-Dashboard-Item-errorDetails","aria-label":e.error,"data-microtip-position":"bottom","data-microtip-size":"medium",onClick:t,type:"button"},"?"):null},"ErrorButton");function Rd(i){let{file:e}=i;return u("div",{className:"uppy-Dashboard-Item-fileInfo","data-uppy-file-source":e.source},u("div",{className:"uppy-Dashboard-Item-fileName"},cS(i),u(gS,{file:i.file,onClick:()=>alert(i.file.error)})),u("div",{className:"uppy-Dashboard-Item-status"},pS(i),fS(i),mS(i)),u(ga,{file:i.file,i18n:i.i18n,toggleFileCard:i.toggleFileCard,metaFields:i.metaFields}))}n(Rd,"FileInfo");function Ud(i,e){return e===void 0&&(e="Copy the URL below"),new Promise(t=>{let r=document.createElement("textarea");r.setAttribute("style",{position:"fixed",top:0,left:0,width:"2em",height:"2em",padding:0,border:"none",outline:"none",boxShadow:"none",background:"transparent"}),r.value=i,document.body.appendChild(r),r.select();let s=n(()=>{document.body.removeChild(r),window.prompt(e,i),t()},"magicCopyFailed");try{return document.execCommand("copy")?(document.body.removeChild(r),t()):s("copy command unavailable")}catch(o){return document.body.removeChild(r),s(o)}})}n(Ud,"copyToClipboard");function yS(i){let{file:e,uploadInProgressOrComplete:t,metaFields:r,canEditFile:s,i18n:o,onClick:a}=i;return!t&&r&&r.length>0||!t&&s(e)?u("button",{className:"uppy-u-reset uppy-c-btn uppy-Dashboard-Item-action uppy-Dashboard-Item-action--edit",type:"button","aria-label":o("editFileWithFilename",{file:e.meta.name}),title:o("editFileWithFilename",{file:e.meta.name}),onClick:()=>a()},u("svg",{"aria-hidden":"true",focusable:"false",className:"uppy-c-icon",width:"14",height:"14",viewBox:"0 0 14 14"},u("g",{fillRule:"evenodd"},u("path",{d:"M1.5 10.793h2.793A1 1 0 0 0 5 10.5L11.5 4a1 1 0 0 0 0-1.414L9.707.793a1 1 0 0 0-1.414 0l-6.5 6.5A1 1 0 0 0 1.5 8v2.793zm1-1V8L9 1.5l1.793 1.793-6.5 6.5H2.5z",fillRule:"nonzero"}),u("rect",{x:"1",y:"12.293",width:"11",height:"1",rx:".5"}),u("path",{fillRule:"nonzero",d:"M6.793 2.5L9.5 5.207l.707-.707L7.5 1.793z"})))):null}n(yS,"EditButton");function vS(i){let{i18n:e,onClick:t,file:r}=i;return u("button",{className:"uppy-u-reset uppy-Dashboard-Item-action uppy-Dashboard-Item-action--remove",type:"button","aria-label":e("removeFile",{file:r.meta.name}),title:e("removeFile",{file:r.meta.name}),onClick:()=>t()},u("svg",{"aria-hidden":"true",focusable:"false",className:"uppy-c-icon",width:"18",height:"18",viewBox:"0 0 18 18"},u("path",{d:"M9 0C4.034 0 0 4.034 0 9s4.034 9 9 9 9-4.034 9-9-4.034-9-9-9z"}),u("path",{fill:"#FFF",d:"M13 12.222l-.778.778L9 9.778 5.778 13 5 12.222 8.222 9 5 5.778 5.778 5 9 8.222 12.222 5l.778.778L9.778 9z"})))}n(vS,"RemoveButton");var bS=n((i,e)=>{Ud(e.file.uploadURL,e.i18n("copyLinkToClipboardFallback")).then(()=>{e.uppy.log("Link copied to clipboard."),e.uppy.info(e.i18n("copyLinkToClipboardSuccess"),"info",3e3)}).catch(e.uppy.log).then(()=>i.target.focus({preventScroll:!0}))},"copyLinkToClipboard");function wS(i){let{i18n:e}=i;return u("button",{className:"uppy-u-reset uppy-Dashboard-Item-action uppy-Dashboard-Item-action--copyLink",type:"button","aria-label":e("copyLink"),title:e("copyLink"),onClick:t=>bS(t,i)},u("svg",{"aria-hidden":"true",focusable:"false",className:"uppy-c-icon",width:"14",height:"14",viewBox:"0 0 14 12"},u("path",{d:"M7.94 7.703a2.613 2.613 0 0 1-.626 2.681l-.852.851a2.597 2.597 0 0 1-1.849.766A2.616 2.616 0 0 1 2.764 7.54l.852-.852a2.596 2.596 0 0 1 2.69-.625L5.267 7.099a1.44 1.44 0 0 0-.833.407l-.852.851a1.458 1.458 0 0 0 1.03 2.486c.39 0 .755-.152 1.03-.426l.852-.852c.231-.231.363-.522.406-.824l1.04-1.038zm4.295-5.937A2.596 2.596 0 0 0 10.387 1c-.698 0-1.355.272-1.849.766l-.852.851a2.614 2.614 0 0 0-.624 2.688l1.036-1.036c.041-.304.173-.6.407-.833l.852-.852c.275-.275.64-.426 1.03-.426a1.458 1.458 0 0 1 1.03 2.486l-.852.851a1.442 1.442 0 0 1-.824.406l-1.04 1.04a2.596 2.596 0 0 0 2.683-.628l.851-.85a2.616 2.616 0 0 0 0-3.697zm-6.88 6.883a.577.577 0 0 0 .82 0l3.474-3.474a.579.579 0 1 0-.819-.82L5.355 7.83a.579.579 0 0 0 0 .819z"})))}n(wS,"CopyLinkButton");function kd(i){let{uppy:e,file:t,uploadInProgressOrComplete:r,canEditFile:s,metaFields:o,showLinkToFileUploadResult:a,showRemoveButton:l,i18n:h,toggleFileCard:p,openFileEditor:d}=i;return u("div",{className:"uppy-Dashboard-Item-actionWrapper"},u(yS,{i18n:h,file:t,uploadInProgressOrComplete:r,canEditFile:s,metaFields:o,onClick:n(()=>{o&&o.length>0?p(!0,t.id):d(t)},"editAction")}),a&&t.uploadURL?u(wS,{file:t,uppy:e,i18n:h}):null,l?u(vS,{i18n:h,file:t,uppy:e,onClick:()=>i.uppy.removeFile(t.id,"removed-by-user")}):null)}n(kd,"Buttons");var Ho=class extends we{componentDidMount(){let{file:e}=this.props;e.preview||this.props.handleRequestThumbnail(e)}shouldComponentUpdate(e){return!(0,ly.default)(this.props,e)}componentDidUpdate(){let{file:e}=this.props;e.preview||this.props.handleRequestThumbnail(e)}componentWillUnmount(){let{file:e}=this.props;e.preview||this.props.handleCancelThumbnail(e)}render(){let{file:e}=this.props,t=e.progress.preprocess||e.progress.postprocess,r=e.progress.uploadComplete&&!t&&!e.error,s=e.progress.uploadStarted||t,o=e.progress.uploadStarted&&!e.progress.uploadComplete||t,a=e.error||!1,{isGhost:l}=e,h=(this.props.individualCancellation||!o)&&!r;r&&this.props.showRemoveButtonAfterComplete&&(h=!0);let p=(0,ay.default)({"uppy-Dashboard-Item":!0,"is-inprogress":o&&!this.props.recoveredState,"is-processing":t,"is-complete":r,"is-error":!!a,"is-resumable":this.props.resumableUploads,"is-noIndividualCancellation":!this.props.individualCancellation,"is-ghost":l});return u("div",{className:p,id:`uppy_${e.id}`,role:this.props.role},u("div",{className:"uppy-Dashboard-Item-preview"},u(Ed,{file:e,showLinkToFileUploadResult:this.props.showLinkToFileUploadResult,i18n:this.props.i18n,toggleFileCard:this.props.toggleFileCard,metaFields:this.props.metaFields}),u(Td,{uppy:this.props.uppy,file:e,error:a,isUploaded:r,hideRetryButton:this.props.hideRetryButton,hideCancelButton:this.props.hideCancelButton,hidePauseResumeButton:this.props.hidePauseResumeButton,recoveredState:this.props.recoveredState,showRemoveButtonAfterComplete:this.props.showRemoveButtonAfterComplete,resumableUploads:this.props.resumableUploads,individualCancellation:this.props.individualCancellation,i18n:this.props.i18n})),u("div",{className:"uppy-Dashboard-Item-fileInfoAndButtons"},u(Rd,{file:e,id:this.props.id,acquirers:this.props.acquirers,containerWidth:this.props.containerWidth,containerHeight:this.props.containerHeight,i18n:this.props.i18n,toggleAddFilesPanel:this.props.toggleAddFilesPanel,toggleFileCard:this.props.toggleFileCard,metaFields:this.props.metaFields,isSingleFile:this.props.isSingleFile}),u(kd,{file:e,metaFields:this.props.metaFields,showLinkToFileUploadResult:this.props.showLinkToFileUploadResult,showRemoveButton:h,canEditFile:this.props.canEditFile,uploadInProgressOrComplete:s,toggleFileCard:this.props.toggleFileCard,openFileEditor:this.props.openFileEditor,uppy:this.props.uppy,i18n:this.props.i18n})))}};n(Ho,"FileItem");function SS(i,e){let t=[],r=[];return i.forEach(s=>{r.length<e?r.push(s):(t.push(r),r=[s])}),r.length&&t.push(r),t}n(SS,"chunks");var uy=n(i=>{let{id:e,error:t,i18n:r,uppy:s,files:o,acquirers:a,resumableUploads:l,hideRetryButton:h,hidePauseResumeButton:p,hideCancelButton:d,showLinkToFileUploadResult:f,showRemoveButtonAfterComplete:y,isWide:b,metaFields:S,isSingleFile:E,toggleFileCard:x,handleRequestThumbnail:F,handleCancelThumbnail:U,recoveredState:j,individualCancellation:G,itemsPerRow:J,openFileEditor:B,canEditFile:z,toggleAddFilesPanel:K,containerWidth:oe,containerHeight:Be}=i,Je=J===1?71:200,wt=Ro(()=>{let _e=n((xe,ui)=>o[ui].isGhost-o[xe].isGhost,"sortByGhostComesFirst"),ze=Object.keys(o);return j&&ze.sort(_e),SS(ze,J)},[o,J,j]),We=n(_e=>u("div",{class:"uppy-Dashboard-filesInner",role:"presentation",key:_e[0]},_e.map(ze=>u(Ho,{key:ze,uppy:s,id:e,error:t,i18n:r,acquirers:a,resumableUploads:l,individualCancellation:G,hideRetryButton:h,hidePauseResumeButton:p,hideCancelButton:d,showLinkToFileUploadResult:f,showRemoveButtonAfterComplete:y,isWide:b,metaFields:S,recoveredState:j,isSingleFile:E,containerWidth:oe,containerHeight:Be,toggleFileCard:x,handleRequestThumbnail:F,handleCancelThumbnail:U,role:"listitem",openFileEditor:B,canEditFile:z,toggleAddFilesPanel:K,file:o[ze]}))),"renderRow");return E?u("div",{class:"uppy-Dashboard-files"},We(wt[0])):u(du,{class:"uppy-Dashboard-files",role:"list",data:wt,renderRow:We,rowHeight:Je})},"default");var hy;hy=Symbol.for("uppy test: disable unused locale key warning");var Uu=class extends we{constructor(){super(...arguments),this.triggerFileInputClick=()=>{this.fileInput.click()},this.triggerFolderInputClick=()=>{this.folderInput.click()},this.triggerVideoCameraInputClick=()=>{this.mobileVideoFileInput.click()},this.triggerPhotoCameraInputClick=()=>{this.mobilePhotoFileInput.click()},this.onFileInputChange=e=>{this.props.handleInputChange(e),e.target.value=null},this.renderHiddenInput=(e,t)=>u("input",{className:"uppy-Dashboard-input",hidden:!0,"aria-hidden":"true",tabIndex:-1,webkitdirectory:e,type:"file",name:"files[]",multiple:this.props.maxNumberOfFiles!==1,onChange:this.onFileInputChange,accept:this.props.allowedFileTypes,ref:t}),this.renderHiddenCameraInput=(e,t,r)=>{let o={photo:"image/*",video:"video/*"}[e];return u("input",{className:"uppy-Dashboard-input",hidden:!0,"aria-hidden":"true",tabIndex:-1,type:"file",name:`camera-${e}`,onChange:this.onFileInputChange,capture:t,accept:o,ref:r})},this.renderMyDeviceAcquirer=()=>u("div",{className:"uppy-DashboardTab",role:"presentation","data-uppy-acquirer-id":"MyDevice"},u("button",{type:"button",className:"uppy-u-reset uppy-c-btn uppy-DashboardTab-btn",role:"tab",tabIndex:0,"data-uppy-super-focusable":!0,onClick:this.triggerFileInputClick},u("div",{className:"uppy-DashboardTab-inner"},u("svg",{className:"uppy-DashboardTab-iconMyDevice","aria-hidden":"true",focusable:"false",width:"32",height:"32",viewBox:"0 0 32 32"},u("path",{d:"M8.45 22.087l-1.305-6.674h17.678l-1.572 6.674H8.45zm4.975-12.412l1.083 1.765a.823.823 0 00.715.386h7.951V13.5H8.587V9.675h4.838zM26.043 13.5h-1.195v-2.598c0-.463-.336-.75-.798-.75h-8.356l-1.082-1.766A.823.823 0 0013.897 8H7.728c-.462 0-.815.256-.815.718V13.5h-.956a.97.97 0 00-.746.37.972.972 0 00-.19.81l1.724 8.565c.095.44.484.755.933.755H24c.44 0 .824-.3.929-.727l2.043-8.568a.972.972 0 00-.176-.825.967.967 0 00-.753-.38z",fill:"currentcolor","fill-rule":"evenodd"}))),u("div",{className:"uppy-DashboardTab-name"},this.props.i18n("myDevice")))),this.renderPhotoCamera=()=>u("div",{className:"uppy-DashboardTab",role:"presentation","data-uppy-acquirer-id":"MobilePhotoCamera"},u("button",{type:"button",className:"uppy-u-reset uppy-c-btn uppy-DashboardTab-btn",role:"tab",tabIndex:0,"data-uppy-super-focusable":!0,onClick:this.triggerPhotoCameraInputClick},u("div",{className:"uppy-DashboardTab-inner"},u("svg",{"aria-hidden":"true",focusable:"false",width:"32",height:"32",viewBox:"0 0 32 32"},u("path",{d:"M23.5 9.5c1.417 0 2.5 1.083 2.5 2.5v9.167c0 1.416-1.083 2.5-2.5 2.5h-15c-1.417 0-2.5-1.084-2.5-2.5V12c0-1.417 1.083-2.5 2.5-2.5h2.917l1.416-2.167C13 7.167 13.25 7 13.5 7h5c.25 0 .5.167.667.333L20.583 9.5H23.5zM16 11.417a4.706 4.706 0 00-4.75 4.75 4.704 4.704 0 004.75 4.75 4.703 4.703 0 004.75-4.75c0-2.663-2.09-4.75-4.75-4.75zm0 7.825c-1.744 0-3.076-1.332-3.076-3.074 0-1.745 1.333-3.077 3.076-3.077 1.744 0 3.074 1.333 3.074 3.076s-1.33 3.075-3.074 3.075z",fill:"#02B383","fill-rule":"nonzero"}))),u("div",{className:"uppy-DashboardTab-name"},this.props.i18n("takePictureBtn")))),this.renderVideoCamera=()=>u("div",{className:"uppy-DashboardTab",role:"presentation","data-uppy-acquirer-id":"MobileVideoCamera"},u("button",{type:"button",className:"uppy-u-reset uppy-c-btn uppy-DashboardTab-btn",role:"tab",tabIndex:0,"data-uppy-super-focusable":!0,onClick:this.triggerVideoCameraInputClick},u("div",{className:"uppy-DashboardTab-inner"},u("svg",{"aria-hidden":"true",width:"32",height:"32",viewBox:"0 0 32 32"},u("path",{fill:"#FF675E",fillRule:"nonzero",d:"m21.254 14.277 2.941-2.588c.797-.313 1.243.818 1.09 1.554-.01 2.094.02 4.189-.017 6.282-.126.915-1.145 1.08-1.58.34l-2.434-2.142c-.192.287-.504 1.305-.738.468-.104-1.293-.028-2.596-.05-3.894.047-.312.381.823.426 1.069.063-.384.206-.744.362-1.09zm-12.939-3.73c3.858.013 7.717-.025 11.574.02.912.129 1.492 1.237 1.351 2.217-.019 2.412.04 4.83-.03 7.239-.17 1.025-1.166 1.59-2.029 1.429-3.705-.012-7.41.025-11.114-.019-.913-.129-1.492-1.237-1.352-2.217.018-2.404-.036-4.813.029-7.214.136-.82.83-1.473 1.571-1.454z "}))),u("div",{className:"uppy-DashboardTab-name"},this.props.i18n("recordVideoBtn")))),this.renderBrowseButton=(e,t)=>{let r=this.props.acquirers.length;return u("button",{type:"button",className:"uppy-u-reset uppy-c-btn uppy-Dashboard-browse",onClick:t,"data-uppy-super-focusable":r===0},e)},this.renderDropPasteBrowseTagline=e=>{let t=this.renderBrowseButton(this.props.i18n("browseFiles"),this.triggerFileInputClick),r=this.renderBrowseButton(this.props.i18n("browseFolders"),this.triggerFolderInputClick),s=this.props.fileManagerSelectionType,o=s.charAt(0).toUpperCase()+s.slice(1);return u("div",{class:"uppy-Dashboard-AddFiles-title"},this.props.disableLocalFiles?this.props.i18n("importFiles"):e>0?this.props.i18nArray(`dropPasteImport${o}`,{browseFiles:t,browseFolders:r,browse:t}):this.props.i18nArray(`dropPaste${o}`,{browseFiles:t,browseFolders:r,browse:t}))},this.renderAcquirer=e=>u("div",{className:"uppy-DashboardTab",role:"presentation","data-uppy-acquirer-id":e.id},u("button",{type:"button",className:"uppy-u-reset uppy-c-btn uppy-DashboardTab-btn",role:"tab",tabIndex:0,"data-cy":e.id,"aria-controls":`uppy-DashboardContent-panel--${e.id}`,"aria-selected":this.props.activePickerPanel.id===e.id,"data-uppy-super-focusable":!0,onClick:()=>this.props.showPanel(e.id)},u("div",{className:"uppy-DashboardTab-inner"},e.icon()),u("div",{className:"uppy-DashboardTab-name"},e.name))),this.renderAcquirers=e=>{let t=[...e],r=t.splice(e.length-2,e.length);return u(Ht,null,t.map(s=>this.renderAcquirer(s)),u("span",{role:"presentation",style:{"white-space":"nowrap"}},r.map(s=>this.renderAcquirer(s))))},this.renderSourcesList=(e,t)=>{let{showNativePhotoCameraButton:r,showNativeVideoCameraButton:s}=this.props,o=[],a="myDevice";t||(o.push({key:a,elements:this.renderMyDeviceAcquirer()}),r&&o.push({key:"nativePhotoCameraButton",elements:this.renderPhotoCamera()}),s&&o.push({key:"nativePhotoCameraButton",elements:this.renderVideoCamera()})),o.push(...e.map(f=>({key:f.id,elements:this.renderAcquirer(f)}))),o.length===1&&o[0].key===a&&(o=[]);let h=[...o],p=h.splice(o.length-2,o.length),d=n(f=>f.map(y=>{let{key:b,elements:S}=y;return u(Ht,{key:b},S)}),"renderList");return u(Ht,null,this.renderDropPasteBrowseTagline(o.length),u("div",{className:"uppy-Dashboard-AddFiles-list",role:"tablist"},d(h),u("span",{role:"presentation",style:{"white-space":"nowrap"}},d(p))))}}[hy](){this.props.i18nArray("dropPasteBoth"),this.props.i18nArray("dropPasteFiles"),this.props.i18nArray("dropPasteFolders"),this.props.i18nArray("dropPasteImportBoth"),this.props.i18nArray("dropPasteImportFiles"),this.props.i18nArray("dropPasteImportFolders")}renderPoweredByUppy(){let{i18nArray:e}=this.props,t=u("span",null,u("svg",{"aria-hidden":"true",focusable:"false",className:"uppy-c-icon uppy-Dashboard-poweredByIcon",width:"11",height:"11",viewBox:"0 0 11 11"},u("path",{d:"M7.365 10.5l-.01-4.045h2.612L5.5.806l-4.467 5.65h2.604l.01 4.044h3.718z",fillRule:"evenodd"})),u("span",{className:"uppy-Dashboard-poweredByUppy"},"Uppy")),r=e("poweredBy",{uppy:t});return u("a",{tabIndex:"-1",href:"https://uppy.io",rel:"noreferrer noopener",target:"_blank",className:"uppy-Dashboard-poweredBy"},r)}render(){let{showNativePhotoCameraButton:e,showNativeVideoCameraButton:t,nativeCameraFacingMode:r}=this.props;return u("div",{className:"uppy-Dashboard-AddFiles"},this.renderHiddenInput(!1,s=>{this.fileInput=s}),this.renderHiddenInput(!0,s=>{this.folderInput=s}),e&&this.renderHiddenCameraInput("photo",r,s=>{this.mobilePhotoFileInput=s}),t&&this.renderHiddenCameraInput("video",r,s=>{this.mobileVideoFileInput=s}),this.renderSourcesList(this.props.acquirers,this.props.disableLocalFiles),u("div",{className:"uppy-Dashboard-AddFiles-info"},this.props.note&&u("div",{className:"uppy-Dashboard-note"},this.props.note),this.props.proudlyDisplayPoweredByUppy&&this.renderPoweredByUppy(this.props)))}};n(Uu,"AddFiles");var ku=Uu;var dy=de(Qt(),1);var PS=n(i=>u("div",{className:(0,dy.default)("uppy-Dashboard-AddFilesPanel",i.className),"data-uppy-panelType":"AddFiles","aria-hidden":!i.showAddFilesPanel},u("div",{className:"uppy-DashboardContent-bar"},u("div",{className:"uppy-DashboardContent-title",role:"heading","aria-level":"1"},i.i18n("addingMoreFiles")),u("button",{className:"uppy-DashboardContent-back",type:"button",onClick:()=>i.toggleAddFilesPanel(!1)},i.i18n("back"))),u(ku,i)),"AddFilesPanel"),cy=PS;var py=de(Qt(),1);function _S(i){let{tagName:e}=i.target;if(e==="INPUT"||e==="TEXTAREA"){i.stopPropagation();return}i.preventDefault(),i.stopPropagation()}n(_S,"ignoreEvent");var Vi=_S;function xS(i){let{activePickerPanel:e,className:t,hideAllPanels:r,i18n:s,state:o,uppy:a}=i;return u("div",{className:(0,py.default)("uppy-DashboardContent-panel",t),role:"tabpanel","data-uppy-panelType":"PickerPanel",id:`uppy-DashboardContent-panel--${e.id}`,onDragOver:Vi,onDragLeave:Vi,onDrop:Vi,onPaste:Vi},u("div",{className:"uppy-DashboardContent-bar"},u("div",{className:"uppy-DashboardContent-title",role:"heading","aria-level":"1"},s("importFrom",{name:e.name})),u("button",{className:"uppy-DashboardContent-back",type:"button",onClick:r},s("cancel"))),u("div",{className:"uppy-DashboardContent-panelBody"},a.getPlugin(e.id).render(o)))}n(xS,"PickerPanelContent");var fy=xS;var my=de(Qt(),1);function FS(i){let e=i.files[i.fileCardFor],t=n(()=>{i.uppy.emit("file-editor:cancel",e),i.hideAllPanels()},"handleCancel");return u("div",{className:(0,my.default)("uppy-DashboardContent-panel",i.className),role:"tabpanel","data-uppy-panelType":"FileEditor",id:"uppy-DashboardContent-panel--editor"},u("div",{className:"uppy-DashboardContent-bar"},u("div",{className:"uppy-DashboardContent-title",role:"heading","aria-level":"1"},i.i18nArray("editing",{file:u("span",{className:"uppy-DashboardContent-titleFile"},e.meta?e.meta.name:e.name)})),u("button",{className:"uppy-DashboardContent-back",type:"button",onClick:t},i.i18n("cancel")),u("button",{className:"uppy-DashboardContent-save",type:"button",onClick:i.saveFileEditor},i.i18n("save"))),u("div",{className:"uppy-DashboardContent-panelBody"},i.editors.map(r=>i.uppy.getPlugin(r.id).render(i.state))))}n(FS,"EditorPanel");var gy=FS;var Wi={STATE_ERROR:"error",STATE_WAITING:"waiting",STATE_PREPROCESSING:"preprocessing",STATE_UPLOADING:"uploading",STATE_POSTPROCESSING:"postprocessing",STATE_COMPLETE:"complete",STATE_PAUSED:"paused"};function ES(i,e,t,r){if(r===void 0&&(r={}),i)return Wi.STATE_ERROR;if(e)return Wi.STATE_COMPLETE;if(t)return Wi.STATE_PAUSED;let s=Wi.STATE_WAITING,o=Object.keys(r);for(let a=0;a<o.length;a++){let{progress:l}=r[o[a]];if(l.uploadStarted&&!l.uploadComplete)return Wi.STATE_UPLOADING;l.preprocess&&s!==Wi.STATE_UPLOADING&&(s=Wi.STATE_PREPROCESSING),l.postprocess&&s!==Wi.STATE_UPLOADING&&s!==Wi.STATE_PREPROCESSING&&(s=Wi.STATE_POSTPROCESSING)}return s}n(ES,"getUploadingState");function OS(i){let{files:e,i18n:t,isAllComplete:r,isAllErrored:s,isAllPaused:o,inProgressNotPausedFiles:a,newFiles:l,processingFiles:h}=i;switch(ES(s,r,o,e)){case"uploading":return t("uploadingXFiles",{smart_count:a.length});case"preprocessing":case"postprocessing":return t("processingXFiles",{smart_count:h.length});case"paused":return t("uploadPaused");case"waiting":return t("xFilesSelected",{smart_count:l.length});case"complete":return t("uploadComplete");case"error":return t("error");default:}}n(OS,"UploadStatus");function CS(i){let{i18n:e,isAllComplete:t,hideCancelButton:r,maxNumberOfFiles:s,toggleAddFilesPanel:o,uppy:a}=i,{allowNewUpload:l}=i;return l&&s&&(l=i.totalFileCount<i.maxNumberOfFiles),u("div",{className:"uppy-DashboardContent-bar"},!t&&!r?u("button",{className:"uppy-DashboardContent-back",type:"button",onClick:()=>a.cancelAll()},e("cancel")):u("div",null),u("div",{className:"uppy-DashboardContent-title",role:"heading","aria-level":"1"},u(OS,i)),l?u("button",{className:"uppy-DashboardContent-addMore",type:"button","aria-label":e("addMoreFiles"),title:e("addMoreFiles"),onClick:()=>o(!0)},u("svg",{"aria-hidden":"true",focusable:"false",className:"uppy-c-icon",width:"15",height:"15",viewBox:"0 0 15 15"},u("path",{d:"M8 6.5h6a.5.5 0 0 1 .5.5v.5a.5.5 0 0 1-.5.5H8v6a.5.5 0 0 1-.5.5H7a.5.5 0 0 1-.5-.5V8h-6a.5.5 0 0 1-.5-.5V7a.5.5 0 0 1 .5-.5h6v-6A.5.5 0 0 1 7 0h.5a.5.5 0 0 1 .5.5v6z"})),u("span",{className:"uppy-DashboardContent-addMoreCaption"},e("addMore"))):u("div",null))}n(CS,"PanelTopBar");var yy=CS;var vy=de(Qt(),1);function Dd(i){let{computedMetaFields:e,requiredMetaFields:t,updateMeta:r,form:s,formState:o}=i,a={text:"uppy-u-reset uppy-c-textInput uppy-Dashboard-FileCard-input"};return e.map(l=>{let h=`uppy-Dashboard-FileCard-input-${l.id}`,p=t.includes(l.id);return u("fieldset",{key:l.id,className:"uppy-Dashboard-FileCard-fieldset"},u("label",{className:"uppy-Dashboard-FileCard-label",htmlFor:h},l.name),l.render!==void 0?l.render({value:o[l.id],onChange:d=>r(d,l.id),fieldCSSClasses:a,required:p,form:s.id},u):u("input",{className:a.text,id:h,form:s.id,type:l.type||"text",required:p,value:o[l.id],placeholder:l.placeholder,onInput:d=>r(d.target.value,l.id),"data-uppy-super-focusable":!0}))})}n(Dd,"RenderMetaFields");function Id(i){var e;let{files:t,fileCardFor:r,toggleFileCard:s,saveFileCard:o,metaFields:a,requiredMetaFields:l,openFileEditor:h,i18n:p,i18nArray:d,className:f,canEditFile:y}=i,b=n(()=>typeof a=="function"?a(t[r]):a,"getMetaFields"),S=t[r],E=(e=b())!=null?e:[],x=y(S),F={};E.forEach(K=>{var oe;F[K.id]=(oe=S.meta[K.id])!=null?oe:""});let[U,j]=Ao(F),G=qn(K=>{K.preventDefault(),o(U,r)},[o,U,r]),J=n((K,oe)=>{j({...U,[oe]:K})},"updateMeta"),B=n(()=>{s(!1)},"handleCancel"),[z]=Ao(()=>{let K=document.createElement("form");return K.setAttribute("tabindex","-1"),K.id=Pt(),K});return Os(()=>(document.body.appendChild(z),z.addEventListener("submit",G),()=>{z.removeEventListener("submit",G),document.body.removeChild(z)}),[z,G]),u("div",{className:(0,vy.default)("uppy-Dashboard-FileCard",f),"data-uppy-panelType":"FileCard",onDragOver:Vi,onDragLeave:Vi,onDrop:Vi,onPaste:Vi},u("div",{className:"uppy-DashboardContent-bar"},u("div",{className:"uppy-DashboardContent-title",role:"heading","aria-level":"1"},d("editing",{file:u("span",{className:"uppy-DashboardContent-titleFile"},S.meta?S.meta.name:S.name)})),u("button",{className:"uppy-DashboardContent-back",type:"button",form:z.id,title:p("finishEditingFile"),onClick:B},p("cancel"))),u("div",{className:"uppy-Dashboard-FileCard-inner"},u("div",{className:"uppy-Dashboard-FileCard-preview",style:{backgroundColor:Rs(S.type).color}},u(ma,{file:S}),x&&u("button",{type:"button",className:"uppy-u-reset uppy-c-btn uppy-Dashboard-FileCard-edit",onClick:K=>{G(K),h(S)}},p("editFile"))),u("div",{className:"uppy-Dashboard-FileCard-info"},u(Dd,{computedMetaFields:E,requiredMetaFields:l,updateMeta:J,form:z,formState:U})),u("div",{className:"uppy-Dashboard-FileCard-actions"},u("button",{className:"uppy-u-reset uppy-c-btn uppy-c-btn-primary uppy-Dashboard-FileCard-actionsBtn",type:"submit",form:z.id},p("saveChanges")),u("button",{className:"uppy-u-reset uppy-c-btn uppy-c-btn-link uppy-Dashboard-FileCard-actionsBtn",type:"button",onClick:B,form:z.id},p("cancel")))))}n(Id,"FileCard");var wy=de(Qt(),1);var $o="uppy-transition-slideDownUp",by=250,Du=class extends we{constructor(e){super(e),this.state={cachedChildren:null,className:""}}componentWillUpdate(e){let{cachedChildren:t}=this.state,r=ci(e.children)[0];if(t===r)return null;let s={cachedChildren:r};r&&!t&&(s.className=`${$o}-enter`,cancelAnimationFrame(this.animationFrame),clearTimeout(this.leaveTimeout),this.leaveTimeout=void 0,this.animationFrame=requestAnimationFrame(()=>{this.setState({className:`${$o}-enter ${$o}-enter-active`}),this.enterTimeout=setTimeout(()=>{this.setState({className:""})},by)})),t&&!r&&this.leaveTimeout===void 0&&(s.cachedChildren=t,s.className=`${$o}-leave`,cancelAnimationFrame(this.animationFrame),clearTimeout(this.enterTimeout),this.enterTimeout=void 0,this.animationFrame=requestAnimationFrame(()=>{this.setState({className:`${$o}-leave ${$o}-leave-active`}),this.leaveTimeout=setTimeout(()=>{this.setState({cachedChildren:null,className:""})},by)})),this.setState(s)}render(){let{cachedChildren:e,className:t}=this.state;return e?jl(e,{className:(0,wy.default)(t,e.props.className)}):null}};n(Du,"Slide");var ya=Du;function Us(){return Us=Object.assign?Object.assign.bind():function(i){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[r]=t[r])}return i},Us.apply(this,arguments)}n(Us,"_extends");var Sy=900,Py=700,Nd=576,_y=330;function Md(i){let e=i.totalFileCount===0,t=i.totalFileCount===1,r=i.containerWidth>Nd,s=i.containerHeight>_y,o=(0,xy.default)({"uppy-Dashboard":!0,"uppy-Dashboard--isDisabled":i.disabled,"uppy-Dashboard--animateOpenClose":i.animateOpenClose,"uppy-Dashboard--isClosing":i.isClosing,"uppy-Dashboard--isDraggingOver":i.isDraggingOver,"uppy-Dashboard--modal":!i.inline,"uppy-size--md":i.containerWidth>Nd,"uppy-size--lg":i.containerWidth>Py,"uppy-size--xl":i.containerWidth>Sy,"uppy-size--height-md":i.containerHeight>_y,"uppy-Dashboard--isAddFilesPanelVisible":i.showAddFilesPanel,"uppy-Dashboard--isInnerWrapVisible":i.areInsidesReadyToBeVisible,"uppy-Dashboard--singleFile":i.singleFileFullScreen&&t&&s}),a=1;i.containerWidth>Sy?a=5:i.containerWidth>Py?a=4:i.containerWidth>Nd&&(a=3);let l=i.showSelectedFiles&&!e,h=i.recoveredState?Object.keys(i.recoveredState.files).length:null,p=i.files?Object.keys(i.files).filter(y=>i.files[y].isGhost).length:null,d=n(()=>p>0?i.i18n("recoveredXFiles",{smart_count:p}):i.i18n("recoveredAllFiles"),"renderRestoredText");return u("div",{className:o,"data-uppy-theme":i.theme,"data-uppy-num-acquirers":i.acquirers.length,"data-uppy-drag-drop-supported":!i.disableLocalFiles&&fa(),"aria-hidden":i.inline?"false":i.isHidden,"aria-disabled":i.disabled,"aria-label":i.inline?i.i18n("dashboardTitle"):i.i18n("dashboardWindowTitle"),onPaste:i.handlePaste,onDragOver:i.handleDragOver,onDragLeave:i.handleDragLeave,onDrop:i.handleDrop},u("div",{"aria-hidden":"true",className:"uppy-Dashboard-overlay",tabIndex:-1,onClick:i.handleClickOutside}),u("div",{className:"uppy-Dashboard-inner","aria-modal":!i.inline&&"true",role:!i.inline&&"dialog",style:{width:i.inline&&i.width?i.width:"",height:i.inline&&i.height?i.height:""}},i.inline?null:u("button",{className:"uppy-u-reset uppy-Dashboard-close",type:"button","aria-label":i.i18n("closeModal"),title:i.i18n("closeModal"),onClick:i.closeModal},u("span",{"aria-hidden":"true"},"\xD7")),u("div",{className:"uppy-Dashboard-innerWrap"},u("div",{className:"uppy-Dashboard-dropFilesHereHint"},i.i18n("dropHint")),l&&u(yy,i),h&&u("div",{className:"uppy-Dashboard-serviceMsg"},u("svg",{className:"uppy-Dashboard-serviceMsg-icon","aria-hidden":"true",focusable:"false",width:"21",height:"16",viewBox:"0 0 24 19"},u("g",{transform:"translate(0 -1)",fill:"none",fillRule:"evenodd"},u("path",{d:"M12.857 1.43l10.234 17.056A1 1 0 0122.234 20H1.766a1 1 0 01-.857-1.514L11.143 1.429a1 1 0 011.714 0z",fill:"#FFD300"}),u("path",{fill:"#000",d:"M11 6h2l-.3 8h-1.4z"}),u("circle",{fill:"#000",cx:"12",cy:"17",r:"1"}))),u("strong",{className:"uppy-Dashboard-serviceMsg-title"},i.i18n("sessionRestored")),u("div",{className:"uppy-Dashboard-serviceMsg-text"},d())),l?u(uy,{id:i.id,error:i.error,i18n:i.i18n,uppy:i.uppy,files:i.files,acquirers:i.acquirers,resumableUploads:i.resumableUploads,hideRetryButton:i.hideRetryButton,hidePauseResumeButton:i.hidePauseResumeButton,hideCancelButton:i.hideCancelButton,showLinkToFileUploadResult:i.showLinkToFileUploadResult,showRemoveButtonAfterComplete:i.showRemoveButtonAfterComplete,isWide:i.isWide,metaFields:i.metaFields,toggleFileCard:i.toggleFileCard,handleRequestThumbnail:i.handleRequestThumbnail,handleCancelThumbnail:i.handleCancelThumbnail,recoveredState:i.recoveredState,individualCancellation:i.individualCancellation,openFileEditor:i.openFileEditor,canEditFile:i.canEditFile,toggleAddFilesPanel:i.toggleAddFilesPanel,isSingleFile:t,itemsPerRow:a}):u(ku,Us({},i,{isSizeMD:r})),u(ya,null,i.showAddFilesPanel?u(cy,Us({key:"AddFiles"},i,{isSizeMD:r})):null),u(ya,null,i.fileCardFor?u(Id,Us({key:"FileCard"},i)):null),u(ya,null,i.activePickerPanel?u(fy,Us({key:"Picker"},i)):null),u(ya,null,i.showFileEditor?u(gy,Us({key:"Editor"},i)):null),u("div",{className:"uppy-Dashboard-progressindicators"},i.progressindicators.map(y=>i.uppy.getPlugin(y.id).render(i.state))))))}n(Md,"Dashboard");var Fy={strings:{closeModal:"Close Modal",addMoreFiles:"Add more files",addingMoreFiles:"Adding more files",importFrom:"Import from %{name}",dashboardWindowTitle:"Uppy Dashboard Window (Press escape to close)",dashboardTitle:"Uppy Dashboard",copyLinkToClipboardSuccess:"Link copied to clipboard.",copyLinkToClipboardFallback:"Copy the URL below",copyLink:"Copy link",back:"Back",removeFile:"Remove file",editFile:"Edit file",editing:"Editing %{file}",error:"Error",finishEditingFile:"Finish editing file",saveChanges:"Save changes",myDevice:"My Device",dropHint:"Drop your files here",uploadComplete:"Upload complete",uploadPaused:"Upload paused",resumeUpload:"Resume upload",pauseUpload:"Pause upload",retryUpload:"Retry upload",cancelUpload:"Cancel upload",xFilesSelected:{0:"%{smart_count} file selected",1:"%{smart_count} files selected"},uploadingXFiles:{0:"Uploading %{smart_count} file",1:"Uploading %{smart_count} files"},processingXFiles:{0:"Processing %{smart_count} file",1:"Processing %{smart_count} files"},poweredBy:"Powered by %{uppy}",addMore:"Add more",editFileWithFilename:"Edit file %{file}",save:"Save",cancel:"Cancel",dropPasteFiles:"Drop files here or %{browseFiles}",dropPasteFolders:"Drop files here or %{browseFolders}",dropPasteBoth:"Drop files here, %{browseFiles} or %{browseFolders}",dropPasteImportFiles:"Drop files here, %{browseFiles} or import from:",dropPasteImportFolders:"Drop files here, %{browseFolders} or import from:",dropPasteImportBoth:"Drop files here, %{browseFiles}, %{browseFolders} or import from:",importFiles:"Import files from:",browseFiles:"browse files",browseFolders:"browse folders",recoveredXFiles:{0:"We could not fully recover 1 file. Please re-select it and resume the upload.",1:"We could not fully recover %{smart_count} files. Please re-select them and resume the upload."},recoveredAllFiles:"We restored all files. You can now resume the upload.",sessionRestored:"Session restored",reSelect:"Re-select",missingRequiredMetaFields:{0:"Missing required meta field: %{fields}.",1:"Missing required meta fields: %{fields}."},takePictureBtn:"Take Picture",recordVideoBtn:"Record Video"}};function Ae(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError("attempted to use private field on non-instance");return i}n(Ae,"_classPrivateFieldLooseBase");var TS=0;function Ci(i){return"__private_"+TS+++"_"+i}n(Ci,"_classPrivateFieldLooseKey");var AS={version:"3.7.1"},Ld=_d.default||_d,Ey=9,RS=27;function Oy(){let i={};return i.promise=new Promise((e,t)=>{i.resolve=e,i.reject=t}),i}n(Oy,"createPromise");var ks=Ci("disabledNodes"),Tr=Ci("generateLargeThumbnailIfSingleFile"),va=Ci("openFileEditorWhenFilesAdded"),Ds=Ci("attachRenderFunctionToTarget"),Bd=Ci("isTargetSupported"),zd=Ci("getAcquirers"),jd=Ci("getProgressIndicators"),Ar=Ci("getEditors"),Hd=Ci("addSpecifiedPluginsFromOptions"),$d=Ci("autoDiscoverPlugins"),Is=Ci("addSupportedPluginIfNoTarget"),is=class extends Z{constructor(e,t){var r;super(e,t),r=this,Object.defineProperty(this,ks,{writable:!0,value:null}),this.removeTarget=o=>{let l=this.getPluginState().targets.filter(h=>h.id!==o.id);this.setPluginState({targets:l})},this.addTarget=o=>{let a=o.id||o.constructor.name,l=o.title||a,h=o.type;if(h!=="acquirer"&&h!=="progressindicator"&&h!=="editor"){let y="Dashboard: can only be targeted by plugins of types: acquirer, progressindicator, editor";this.uppy.log(y,"error");return}let p={id:a,name:l,type:h},f=this.getPluginState().targets.slice();return f.push(p),this.setPluginState({targets:f}),this.el},this.hideAllPanels=()=>{let o=this.getPluginState(),a={activePickerPanel:!1,showAddFilesPanel:!1,activeOverlayType:null,fileCardFor:null,showFileEditor:!1};o.activePickerPanel===a.activePickerPanel&&o.showAddFilesPanel===a.showAddFilesPanel&&o.showFileEditor===a.showFileEditor&&o.activeOverlayType===a.activeOverlayType||(this.setPluginState(a),this.uppy.emit("dashboard:close-panel",o.activePickerPanel.id))},this.showPanel=o=>{let{targets:a}=this.getPluginState(),l=a.filter(h=>h.type==="acquirer"&&h.id===o)[0];this.setPluginState({activePickerPanel:l,activeOverlayType:"PickerPanel"}),this.uppy.emit("dashboard:show-panel",o)},this.canEditFile=o=>{let{targets:a}=this.getPluginState();return Ae(this,Ar)[Ar](a).some(h=>this.uppy.getPlugin(h.id).canEditFile(o))},this.openFileEditor=o=>{let{targets:a}=this.getPluginState(),l=Ae(this,Ar)[Ar](a);this.setPluginState({showFileEditor:!0,fileCardFor:o.id||null,activeOverlayType:"FileEditor"}),l.forEach(h=>{this.uppy.getPlugin(h.id).selectFile(o)})},this.saveFileEditor=()=>{let{targets:o}=this.getPluginState();Ae(this,Ar)[Ar](o).forEach(l=>{this.uppy.getPlugin(l.id).save()}),this.hideAllPanels()},this.openModal=()=>{let{promise:o,resolve:a}=Oy();if(this.savedScrollPosition=window.pageYOffset,this.savedActiveElement=document.activeElement,this.opts.disablePageScrollWhenModalOpen&&document.body.classList.add("uppy-Dashboard-isFixed"),this.opts.animateOpenClose&&this.getPluginState().isClosing){let l=n(()=>{this.setPluginState({isHidden:!1}),this.el.removeEventListener("animationend",l,!1),a()},"handler");this.el.addEventListener("animationend",l,!1)}else this.setPluginState({isHidden:!1}),a();return this.opts.browserBackButtonClose&&this.updateBrowserHistory(),document.addEventListener("keydown",this.handleKeyDownInModal),this.uppy.emit("dashboard:modal-open"),o},this.closeModal=function(o){o===void 0&&(o={});let{manualClose:a=!0}=o,{isHidden:l,isClosing:h}=r.getPluginState();if(l||h)return;let{promise:p,resolve:d}=Oy();if(r.opts.disablePageScrollWhenModalOpen&&document.body.classList.remove("uppy-Dashboard-isFixed"),r.opts.animateOpenClose){r.setPluginState({isClosing:!0});let y=n(()=>{r.setPluginState({isHidden:!0,isClosing:!1}),r.superFocus.cancel(),r.savedActiveElement.focus(),r.el.removeEventListener("animationend",y,!1),d()},"handler");r.el.addEventListener("animationend",y,!1)}else r.setPluginState({isHidden:!0}),r.superFocus.cancel(),r.savedActiveElement.focus(),d();if(document.removeEventListener("keydown",r.handleKeyDownInModal),a&&r.opts.browserBackButtonClose){var f;(f=history.state)!=null&&f[r.modalName]&&history.back()}return r.uppy.emit("dashboard:modal-closed"),p},this.isModalOpen=()=>!this.getPluginState().isHidden||!1,this.requestCloseModal=()=>this.opts.onRequestCloseModal?this.opts.onRequestCloseModal():this.closeModal(),this.setDarkModeCapability=o=>{let{capabilities:a}=this.uppy.getState();this.uppy.setState({capabilities:{...a,darkMode:o}})},this.handleSystemDarkModeChange=o=>{let a=o.matches;this.uppy.log(`[Dashboard] Dark mode is ${a?"on":"off"}`),this.setDarkModeCapability(a)},this.toggleFileCard=(o,a)=>{let l=this.uppy.getFile(a);o?this.uppy.emit("dashboard:file-edit-start",l):this.uppy.emit("dashboard:file-edit-complete",l),this.setPluginState({fileCardFor:o?a:null,activeOverlayType:o?"FileCard":null})},this.toggleAddFilesPanel=o=>{this.setPluginState({showAddFilesPanel:o,activeOverlayType:o?"AddFiles":null})},this.addFiles=o=>{let a=o.map(l=>({source:this.id,name:l.name,type:l.type,data:l,meta:{relativePath:l.relativePath||l.webkitRelativePath||null}}));try{this.uppy.addFiles(a)}catch(l){this.uppy.log(l)}},this.startListeningToResize=()=>{this.resizeObserver=new ResizeObserver(o=>{let a=o[0],{width:l,height:h}=a.contentRect;this.setPluginState({containerWidth:l,containerHeight:h,areInsidesReadyToBeVisible:!0})}),this.resizeObserver.observe(this.el.querySelector(".uppy-Dashboard-inner")),this.makeDashboardInsidesVisibleAnywayTimeout=setTimeout(()=>{let o=this.getPluginState(),a=!this.opts.inline&&o.isHidden;!o.areInsidesReadyToBeVisible&&!a&&(this.uppy.log("[Dashboard] resize event didn\u2019t fire on time: defaulted to mobile layout","warning"),this.setPluginState({areInsidesReadyToBeVisible:!0}))},1e3)},this.stopListeningToResize=()=>{this.resizeObserver.disconnect(),clearTimeout(this.makeDashboardInsidesVisibleAnywayTimeout)},this.recordIfFocusedOnUppyRecently=o=>{this.el.contains(o.target)?this.ifFocusedOnUppyRecently=!0:(this.ifFocusedOnUppyRecently=!1,this.superFocus.cancel())},this.disableInteractiveElements=o=>{var a;let l=["a[href]","input:not([disabled])","select:not([disabled])","textarea:not([disabled])","button:not([disabled])",'[role="button"]:not([disabled])'],h=(a=Ae(this,ks)[ks])!=null?a:Qe(this.el.querySelectorAll(l)).filter(p=>!p.classList.contains("uppy-Dashboard-close"));for(let p of h)p.tagName==="A"?p.setAttribute("aria-disabled",o):p.disabled=o;o?Ae(this,ks)[ks]=h:Ae(this,ks)[ks]=null,this.dashboardIsDisabled=o},this.updateBrowserHistory=()=>{var o;(o=history.state)!=null&&o[this.modalName]||history.pushState({...history.state,[this.modalName]:!0},""),window.addEventListener("popstate",this.handlePopState,!1)},this.handlePopState=o=>{var a;this.isModalOpen()&&(!o.state||!o.state[this.modalName])&&this.closeModal({manualClose:!1}),!this.isModalOpen()&&(a=o.state)!=null&&a[this.modalName]&&history.back()},this.handleKeyDownInModal=o=>{o.keyCode===RS&&this.requestCloseModal(o),o.keyCode===Ey&&xd(o,this.getPluginState().activeOverlayType,this.el)},this.handleClickOutside=()=>{this.opts.closeModalOnClickOutside&&this.requestCloseModal()},this.handlePaste=o=>{this.uppy.iteratePlugins(l=>{l.type==="acquirer"&&(l.handleRootPaste==null||l.handleRootPaste(o))});let a=Qe(o.clipboardData.files);a.length>0&&(this.uppy.log("[Dashboard] Files pasted"),this.addFiles(a))},this.handleInputChange=o=>{o.preventDefault();let a=Qe(o.target.files);a.length>0&&(this.uppy.log("[Dashboard] Files selected through input"),this.addFiles(a))},this.handleDragOver=o=>{var a,l;o.preventDefault(),o.stopPropagation();let h=n(()=>{let y=!0;return this.uppy.iteratePlugins(b=>{b.canHandleRootDrop!=null&&b.canHandleRootDrop(o)&&(y=!0)}),y},"canSomePluginHandleRootDrop"),p=n(()=>{let{types:y}=o.dataTransfer;return y.some(b=>b==="Files")},"doesEventHaveFiles"),d=h(o),f=p(o);if(!d&&!f||this.opts.disabled||this.opts.disableLocalFiles&&(f||!d)||!this.uppy.getState().allowNewUpload){o.dataTransfer.dropEffect="none",clearTimeout(this.removeDragOverClassTimeout);return}o.dataTransfer.dropEffect="copy",clearTimeout(this.removeDragOverClassTimeout),this.setPluginState({isDraggingOver:!0}),(a=(l=this.opts).onDragOver)==null||a.call(l,o)},this.handleDragLeave=o=>{var a,l;o.preventDefault(),o.stopPropagation(),clearTimeout(this.removeDragOverClassTimeout),this.removeDragOverClassTimeout=setTimeout(()=>{this.setPluginState({isDraggingOver:!1})},50),(a=(l=this.opts).onDragLeave)==null||a.call(l,o)},this.handleDrop=async o=>{var a,l;o.preventDefault(),o.stopPropagation(),clearTimeout(this.removeDragOverClassTimeout),this.setPluginState({isDraggingOver:!1}),this.uppy.iteratePlugins(f=>{f.type==="acquirer"&&(f.handleRootDrop==null||f.handleRootDrop(o))});let h=!1,p=n(f=>{this.uppy.log(f,"error"),h||(this.uppy.info(f.message,"error"),h=!0)},"logDropError");this.uppy.log("[Dashboard] Processing dropped files");let d=await As(o.dataTransfer,{logDropError:p});d.length>0&&(this.uppy.log("[Dashboard] Files dropped"),this.addFiles(d)),(a=(l=this.opts).onDrop)==null||a.call(l,o)},this.handleRequestThumbnail=o=>{this.opts.waitForThumbnailsBeforeUpload||this.uppy.emit("thumbnail:request",o)},this.handleCancelThumbnail=o=>{this.opts.waitForThumbnailsBeforeUpload||this.uppy.emit("thumbnail:cancel",o)},this.handleKeyDownInInline=o=>{o.keyCode===Ey&&Zg(o,this.getPluginState().activeOverlayType,this.el)},this.handlePasteOnBody=o=>{this.el.contains(document.activeElement)&&this.handlePaste(o)},this.handleComplete=o=>{let{failed:a}=o;this.opts.closeAfterFinish&&a.length===0&&this.requestCloseModal()},this.handleCancelRestore=()=>{this.uppy.emit("restore-canceled")},Object.defineProperty(this,Tr,{writable:!0,value:()=>{if(this.opts.disableThumbnailGenerator)return;let o=600,a=this.uppy.getFiles();if(a.length===1){let l=this.uppy.getPlugin(`${this.id}:ThumbnailGenerator`);l?.setOptions({thumbnailWidth:o});let h={...a[0],preview:void 0};l.requestThumbnail(h).then(()=>{l?.setOptions({thumbnailWidth:this.opts.thumbnailWidth})})}}}),Object.defineProperty(this,va,{writable:!0,value:o=>{let a=o[0];this.canEditFile(a)&&this.openFileEditor(a)}}),this.initEvents=()=>{if(this.opts.trigger&&!this.opts.inline){let o=Ou(this.opts.trigger);o?o.forEach(a=>a.addEventListener("click",this.openModal)):this.uppy.log("Dashboard modal trigger not found. Make sure `trigger` is set in Dashboard options, unless you are planning to call `dashboard.openModal()` method yourself","warning")}this.startListeningToResize(),document.addEventListener("paste",this.handlePasteOnBody),this.uppy.on("plugin-added",Ae(this,Is)[Is]),this.uppy.on("plugin-remove",this.removeTarget),this.uppy.on("file-added",this.hideAllPanels),this.uppy.on("dashboard:modal-closed",this.hideAllPanels),this.uppy.on("file-editor:complete",this.hideAllPanels),this.uppy.on("complete",this.handleComplete),this.uppy.on("files-added",Ae(this,Tr)[Tr]),this.uppy.on("file-removed",Ae(this,Tr)[Tr]),document.addEventListener("focus",this.recordIfFocusedOnUppyRecently,!0),document.addEventListener("click",this.recordIfFocusedOnUppyRecently,!0),this.opts.inline&&this.el.addEventListener("keydown",this.handleKeyDownInInline),this.opts.autoOpenFileEditor&&this.uppy.on("files-added",Ae(this,va)[va])},this.removeEvents=()=>{let o=Ou(this.opts.trigger);!this.opts.inline&&o&&o.forEach(a=>a.removeEventListener("click",this.openModal)),this.stopListeningToResize(),document.removeEventListener("paste",this.handlePasteOnBody),window.removeEventListener("popstate",this.handlePopState,!1),this.uppy.off("plugin-added",Ae(this,Is)[Is]),this.uppy.off("plugin-remove",this.removeTarget),this.uppy.off("file-added",this.hideAllPanels),this.uppy.off("dashboard:modal-closed",this.hideAllPanels),this.uppy.off("file-editor:complete",this.hideAllPanels),this.uppy.off("complete",this.handleComplete),this.uppy.off("files-added",Ae(this,Tr)[Tr]),this.uppy.off("file-removed",Ae(this,Tr)[Tr]),document.removeEventListener("focus",this.recordIfFocusedOnUppyRecently),document.removeEventListener("click",this.recordIfFocusedOnUppyRecently),this.opts.inline&&this.el.removeEventListener("keydown",this.handleKeyDownInInline),this.opts.autoOpenFileEditor&&this.uppy.off("files-added",Ae(this,va)[va])},this.superFocusOnEachUpdate=()=>{let o=this.el.contains(document.activeElement),a=document.activeElement===document.body||document.activeElement===null,l=this.uppy.getState().info.length===0,h=!this.opts.inline;l&&(h||o||a&&this.ifFocusedOnUppyRecently)?this.superFocus(this.el,this.getPluginState().activeOverlayType):this.superFocus.cancel()},this.afterUpdate=()=>{if(this.opts.disabled&&!this.dashboardIsDisabled){this.disableInteractiveElements(!0);return}!this.opts.disabled&&this.dashboardIsDisabled&&this.disableInteractiveElements(!1),this.superFocusOnEachUpdate()},this.saveFileCard=(o,a)=>{this.uppy.setFileMeta(a,o),this.toggleFileCard(!1,a)},Object.defineProperty(this,Ds,{writable:!0,value:o=>{let a=this.uppy.getPlugin(o.id);return{...o,icon:a.icon||this.opts.defaultPickerIcon,render:a.render}}}),Object.defineProperty(this,Bd,{writable:!0,value:o=>{let a=this.uppy.getPlugin(o.id);return typeof a.isSupported!="function"?!0:a.isSupported()}}),Object.defineProperty(this,zd,{writable:!0,value:Ld(o=>o.filter(a=>a.type==="acquirer"&&Ae(this,Bd)[Bd](a)).map(Ae(this,Ds)[Ds]))}),Object.defineProperty(this,jd,{writable:!0,value:Ld(o=>o.filter(a=>a.type==="progressindicator").map(Ae(this,Ds)[Ds]))}),Object.defineProperty(this,Ar,{writable:!0,value:Ld(o=>o.filter(a=>a.type==="editor").map(Ae(this,Ds)[Ds]))}),this.render=o=>{let a=this.getPluginState(),{files:l,capabilities:h,allowNewUpload:p}=o,{newFiles:d,uploadStartedFiles:f,completeFiles:y,erroredFiles:b,inProgressFiles:S,inProgressNotPausedFiles:E,processingFiles:x,isUploadStarted:F,isAllComplete:U,isAllErrored:j,isAllPaused:G}=this.uppy.getObjectOfFilesPerState(),J=Ae(this,zd)[zd](a.targets),B=Ae(this,jd)[jd](a.targets),z=Ae(this,Ar)[Ar](a.targets),K;return this.opts.theme==="auto"?K=h.darkMode?"dark":"light":K=this.opts.theme,["files","folders","both"].indexOf(this.opts.fileManagerSelectionType)<0&&(this.opts.fileManagerSelectionType="files",console.warn(`Unsupported option for "fileManagerSelectionType". Using default of "${this.opts.fileManagerSelectionType}".`)),Md({state:o,isHidden:a.isHidden,files:l,newFiles:d,uploadStartedFiles:f,completeFiles:y,erroredFiles:b,inProgressFiles:S,inProgressNotPausedFiles:E,processingFiles:x,isUploadStarted:F,isAllComplete:U,isAllErrored:j,isAllPaused:G,totalFileCount:Object.keys(l).length,totalProgress:o.totalProgress,allowNewUpload:p,acquirers:J,theme:K,disabled:this.opts.disabled,disableLocalFiles:this.opts.disableLocalFiles,direction:this.opts.direction,activePickerPanel:a.activePickerPanel,showFileEditor:a.showFileEditor,saveFileEditor:this.saveFileEditor,disableInteractiveElements:this.disableInteractiveElements,animateOpenClose:this.opts.animateOpenClose,isClosing:a.isClosing,progressindicators:B,editors:z,autoProceed:this.uppy.opts.autoProceed,id:this.id,closeModal:this.requestCloseModal,handleClickOutside:this.handleClickOutside,handleInputChange:this.handleInputChange,handlePaste:this.handlePaste,inline:this.opts.inline,showPanel:this.showPanel,hideAllPanels:this.hideAllPanels,i18n:this.i18n,i18nArray:this.i18nArray,uppy:this.uppy,note:this.opts.note,recoveredState:o.recoveredState,metaFields:a.metaFields,resumableUploads:h.resumableUploads||!1,individualCancellation:h.individualCancellation,isMobileDevice:h.isMobileDevice,fileCardFor:a.fileCardFor,toggleFileCard:this.toggleFileCard,toggleAddFilesPanel:this.toggleAddFilesPanel,showAddFilesPanel:a.showAddFilesPanel,saveFileCard:this.saveFileCard,openFileEditor:this.openFileEditor,canEditFile:this.canEditFile,width:this.opts.width,height:this.opts.height,showLinkToFileUploadResult:this.opts.showLinkToFileUploadResult,fileManagerSelectionType:this.opts.fileManagerSelectionType,proudlyDisplayPoweredByUppy:this.opts.proudlyDisplayPoweredByUppy,hideCancelButton:this.opts.hideCancelButton,hideRetryButton:this.opts.hideRetryButton,hidePauseResumeButton:this.opts.hidePauseResumeButton,showRemoveButtonAfterComplete:this.opts.showRemoveButtonAfterComplete,containerWidth:a.containerWidth,containerHeight:a.containerHeight,areInsidesReadyToBeVisible:a.areInsidesReadyToBeVisible,isTargetDOMEl:this.isTargetDOMEl,parentElement:this.el,allowedFileTypes:this.uppy.opts.restrictions.allowedFileTypes,maxNumberOfFiles:this.uppy.opts.restrictions.maxNumberOfFiles,requiredMetaFields:this.uppy.opts.restrictions.requiredMetaFields,showSelectedFiles:this.opts.showSelectedFiles,showNativePhotoCameraButton:this.opts.showNativePhotoCameraButton,showNativeVideoCameraButton:this.opts.showNativeVideoCameraButton,nativeCameraFacingMode:this.opts.nativeCameraFacingMode,singleFileFullScreen:this.opts.singleFileFullScreen,handleCancelRestore:this.handleCancelRestore,handleRequestThumbnail:this.handleRequestThumbnail,handleCancelThumbnail:this.handleCancelThumbnail,isDraggingOver:a.isDraggingOver,handleDragOver:this.handleDragOver,handleDragLeave:this.handleDragLeave,handleDrop:this.handleDrop})},Object.defineProperty(this,Hd,{writable:!0,value:()=>{(this.opts.plugins||[]).forEach(a=>{let l=this.uppy.getPlugin(a);l?l.mount(this,l):this.uppy.log(`[Uppy] Dashboard could not find plugin '${a}', make sure to uppy.use() the plugins you are specifying`,"warning")})}}),Object.defineProperty(this,$d,{writable:!0,value:()=>{this.uppy.iteratePlugins(Ae(this,Is)[Is])}}),Object.defineProperty(this,Is,{writable:!0,value:o=>{var a;let l=["acquirer","editor"];o&&!((a=o.opts)!=null&&a.target)&&l.includes(o.type)&&(this.getPluginState().targets.some(p=>o.id===p.id)||o.mount(this,o))}}),this.install=()=>{this.setPluginState({isHidden:!0,fileCardFor:null,activeOverlayType:null,showAddFilesPanel:!1,activePickerPanel:!1,showFileEditor:!1,metaFields:this.opts.metaFields,targets:[],areInsidesReadyToBeVisible:!1,isDraggingOver:!1});let{inline:o,closeAfterFinish:a}=this.opts;if(o&&a)throw new Error("[Dashboard] `closeAfterFinish: true` cannot be used on an inline Dashboard, because an inline Dashboard cannot be closed at all. Either set `inline: false`, or disable the `closeAfterFinish` option.");let{allowMultipleUploads:l,allowMultipleUploadBatches:h}=this.uppy.opts;(l||h)&&a&&this.uppy.log("[Dashboard] When using `closeAfterFinish`, we recommended setting the `allowMultipleUploadBatches` option to `false` in the Uppy constructor. See https://uppy.io/docs/uppy/#allowMultipleUploads-true","warning");let{target:p}=this.opts;p&&this.mount(p,this),this.opts.disableStatusBar||this.uppy.use($i,{id:`${this.id}:StatusBar`,target:this,hideUploadButton:this.opts.hideUploadButton,hideRetryButton:this.opts.hideRetryButton,hidePauseResumeButton:this.opts.hidePauseResumeButton,hideCancelButton:this.opts.hideCancelButton,showProgressDetails:this.opts.showProgressDetails,hideAfterFinish:this.opts.hideProgressAfterFinish,locale:this.opts.locale,doneButtonHandler:this.opts.doneButtonHandler}),this.opts.disableInformer||this.uppy.use(qi,{id:`${this.id}:Informer`,target:this}),this.opts.disableThumbnailGenerator||this.uppy.use(Cr,{id:`${this.id}:ThumbnailGenerator`,thumbnailWidth:this.opts.thumbnailWidth,thumbnailHeight:this.opts.thumbnailHeight,thumbnailType:this.opts.thumbnailType,waitForThumbnailsBeforeUpload:this.opts.waitForThumbnailsBeforeUpload,lazy:!this.opts.waitForThumbnailsBeforeUpload}),this.darkModeMediaQuery=typeof window<"u"&&window.matchMedia?window.matchMedia("(prefers-color-scheme: dark)"):null;let d=this.darkModeMediaQuery?this.darkModeMediaQuery.matches:!1;this.uppy.log(`[Dashboard] Dark mode is ${d?"on":"off"}`),this.setDarkModeCapability(d),this.opts.theme==="auto"&&this.darkModeMediaQuery.addListener(this.handleSystemDarkModeChange),Ae(this,Hd)[Hd](),Ae(this,$d)[$d](),this.initEvents()},this.uninstall=()=>{if(!this.opts.disableInformer){let a=this.uppy.getPlugin(`${this.id}:Informer`);a&&this.uppy.removePlugin(a)}if(!this.opts.disableStatusBar){let a=this.uppy.getPlugin(`${this.id}:StatusBar`);a&&this.uppy.removePlugin(a)}if(!this.opts.disableThumbnailGenerator){let a=this.uppy.getPlugin(`${this.id}:ThumbnailGenerator`);a&&this.uppy.removePlugin(a)}(this.opts.plugins||[]).forEach(a=>{let l=this.uppy.getPlugin(a);l&&l.unmount()}),this.opts.theme==="auto"&&this.darkModeMediaQuery.removeListener(this.handleSystemDarkModeChange),this.opts.disablePageScrollWhenModalOpen&&document.body.classList.remove("uppy-Dashboard-isFixed"),this.unmount(),this.removeEvents()},this.id=this.opts.id||"Dashboard",this.title="Dashboard",this.type="orchestrator",this.modalName=`uppy-Dashboard-${Pt()}`,this.defaultLocale=Fy;let s={target:"body",metaFields:[],trigger:null,inline:!1,width:750,height:550,thumbnailWidth:280,thumbnailType:"image/jpeg",waitForThumbnailsBeforeUpload:!1,defaultPickerIcon:ko,showLinkToFileUploadResult:!1,showProgressDetails:!1,hideUploadButton:!1,hideCancelButton:!1,hideRetryButton:!1,hidePauseResumeButton:!1,hideProgressAfterFinish:!1,doneButtonHandler:()=>{this.uppy.clearUploadedFiles(),this.requestCloseModal()},note:null,closeModalOnClickOutside:!1,closeAfterFinish:!1,singleFileFullScreen:!0,disableStatusBar:!1,disableInformer:!1,disableThumbnailGenerator:!1,disablePageScrollWhenModalOpen:!0,animateOpenClose:!0,fileManagerSelectionType:"files",proudlyDisplayPoweredByUppy:!0,onRequestCloseModal:()=>this.closeModal(),showSelectedFiles:!0,showRemoveButtonAfterComplete:!1,browserBackButtonClose:!1,showNativePhotoCameraButton:!1,showNativeVideoCameraButton:!1,theme:"light",autoOpenFileEditor:!1,disabled:!1,disableLocalFiles:!1};this.opts={...s,...t},this.i18nInit(),this.superFocus=Fd(),this.ifFocusedOnUppyRecently=!1,this.makeDashboardInsidesVisibleAnywayTimeout=null,this.removeDragOverClassTimeout=null}};n(is,"Dashboard");is.VERSION=AS.version;var Cy={strings:{dropHereOr:"Drop here or %{browse}",browse:"browse"}};var US={version:"3.0.3"},Gi=class extends Z{constructor(e,t){super(e,t),this.handleDrop=async s=>{var o,a;s.preventDefault(),s.stopPropagation(),clearTimeout(this.removeDragOverClassTimeout),this.setPluginState({isDraggingOver:!1});let l=n(p=>{this.uppy.log(p,"error")},"logDropError"),h=await As(s.dataTransfer,{logDropError:l});h.length>0&&(this.uppy.log("[DragDrop] Files dropped"),this.addFiles(h)),(o=(a=this.opts).onDrop)==null||o.call(a,s)},this.type="acquirer",this.id=this.opts.id||"DragDrop",this.title="Drag & Drop",this.defaultLocale=Cy;let r={target:null,inputName:"files[]",width:"100%",height:"100%",note:null};this.opts={...r,...t},this.i18nInit(),this.isDragDropSupported=fa(),this.removeDragOverClassTimeout=null,this.onInputChange=this.onInputChange.bind(this),this.handleDragOver=this.handleDragOver.bind(this),this.handleDragLeave=this.handleDragLeave.bind(this),this.handleDrop=this.handleDrop.bind(this),this.addFiles=this.addFiles.bind(this),this.render=this.render.bind(this)}addFiles(e){let t=e.map(r=>({source:this.id,name:r.name,type:r.type,data:r,meta:{relativePath:r.relativePath||null}}));try{this.uppy.addFiles(t)}catch(r){this.uppy.log(r)}}onInputChange(e){let t=Qe(e.target.files);t.length>0&&(this.uppy.log("[DragDrop] Files selected through input"),this.addFiles(t)),e.target.value=null}handleDragOver(e){var t,r;e.preventDefault(),e.stopPropagation();let{types:s}=e.dataTransfer,o=s.some(l=>l==="Files"),{allowNewUpload:a}=this.uppy.getState();if(!o||!a){e.dataTransfer.dropEffect="none",clearTimeout(this.removeDragOverClassTimeout);return}e.dataTransfer.dropEffect="copy",clearTimeout(this.removeDragOverClassTimeout),this.setPluginState({isDraggingOver:!0}),(t=(r=this.opts).onDragOver)==null||t.call(r,e)}handleDragLeave(e){var t,r;e.preventDefault(),e.stopPropagation(),clearTimeout(this.removeDragOverClassTimeout),this.removeDragOverClassTimeout=setTimeout(()=>{this.setPluginState({isDraggingOver:!1})},50),(t=(r=this.opts).onDragLeave)==null||t.call(r,e)}renderHiddenFileInput(){let{restrictions:e}=this.uppy.opts;return u("input",{className:"uppy-DragDrop-input",type:"file",hidden:!0,ref:t=>{this.fileInputRef=t},name:this.opts.inputName,multiple:e.maxNumberOfFiles!==1,accept:e.allowedFileTypes,onChange:this.onInputChange})}static renderArrowSvg(){return u("svg",{"aria-hidden":"true",focusable:"false",className:"uppy-c-icon uppy-DragDrop-arrow",width:"16",height:"16",viewBox:"0 0 16 16"},u("path",{d:"M11 10V0H5v10H2l6 6 6-6h-3zm0 0",fillRule:"evenodd"}))}renderLabel(){return u("div",{className:"uppy-DragDrop-label"},this.i18nArray("dropHereOr",{browse:u("span",{className:"uppy-DragDrop-browse"},this.i18n("browse"))}))}renderNote(){return u("span",{className:"uppy-DragDrop-note"},this.opts.note)}render(){let e=`uppy-u-reset + uppy-DragDrop-container + ${this.isDragDropSupported?"uppy-DragDrop--isDragDropSupported":""} + ${this.getPluginState().isDraggingOver?"uppy-DragDrop--isDraggingOver":""} + `,t={width:this.opts.width,height:this.opts.height};return u("button",{type:"button",className:e,style:t,onClick:()=>this.fileInputRef.click(),onDragOver:this.handleDragOver,onDragLeave:this.handleDragLeave,onDrop:this.handleDrop},this.renderHiddenFileInput(),u("div",{className:"uppy-DragDrop-inner"},Gi.renderArrowSvg(),this.renderLabel(),this.renderNote()))}install(){let{target:e}=this.opts;this.setPluginState({isDraggingOver:!1}),e&&this.mount(e,this)}uninstall(){this.unmount()}};n(Gi,"DragDrop");Gi.VERSION=US.version;var kS={version:"2.0.2"};function qd(i){var e,t;return(e=(t=i.dataTransfer.types)==null?void 0:t.some(r=>r==="Files"))!=null?e:!1}n(qd,"isFileTransfer");var Ns=class extends ve{constructor(e,t){super(e,t),this.addFiles=s=>{let o=s.map(a=>({source:this.id,name:a.name,type:a.type,data:a,meta:{relativePath:a.relativePath||null}}));try{this.uppy.addFiles(o)}catch(a){this.uppy.log(a)}},this.handleDrop=async s=>{var o,a;if(!qd(s))return;s.preventDefault(),s.stopPropagation(),clearTimeout(this.removeDragOverClassTimeout),s.currentTarget.classList.remove("uppy-is-drag-over"),this.setPluginState({isDraggingOver:!1}),this.uppy.iteratePlugins(d=>{d.type==="acquirer"&&(d.handleRootDrop==null||d.handleRootDrop(s))});let l=!1,h=n(d=>{this.uppy.log(d,"error"),l||(this.uppy.info(d.message,"error"),l=!0)},"logDropError"),p=await As(s.dataTransfer,{logDropError:h});p.length>0&&(this.uppy.log("[DropTarget] Files were dropped"),this.addFiles(p)),(o=(a=this.opts).onDrop)==null||o.call(a,s)},this.handleDragOver=s=>{var o,a;qd(s)&&(s.preventDefault(),s.stopPropagation(),s.dataTransfer.dropEffect="copy",clearTimeout(this.removeDragOverClassTimeout),s.currentTarget.classList.add("uppy-is-drag-over"),this.setPluginState({isDraggingOver:!0}),(o=(a=this.opts).onDragOver)==null||o.call(a,s))},this.handleDragLeave=s=>{var o,a;if(!qd(s))return;s.preventDefault(),s.stopPropagation();let{currentTarget:l}=s;clearTimeout(this.removeDragOverClassTimeout),this.removeDragOverClassTimeout=setTimeout(()=>{l.classList.remove("uppy-is-drag-over"),this.setPluginState({isDraggingOver:!1})},50),(o=(a=this.opts).onDragLeave)==null||o.call(a,s)},this.addListeners=()=>{let{target:s}=this.opts;if(s instanceof Element?this.nodes=[s]:typeof s=="string"&&(this.nodes=Qe(document.querySelectorAll(s))),!this.nodes&&!this.nodes.length>0)throw new Error(`"${s}" does not match any HTML elements`);this.nodes.forEach(o=>{o.addEventListener("dragover",this.handleDragOver,!1),o.addEventListener("dragleave",this.handleDragLeave,!1),o.addEventListener("drop",this.handleDrop,!1)})},this.removeListeners=()=>{this.nodes&&this.nodes.forEach(s=>{s.removeEventListener("dragover",this.handleDragOver,!1),s.removeEventListener("dragleave",this.handleDragLeave,!1),s.removeEventListener("drop",this.handleDrop,!1)})},this.type="acquirer",this.id=this.opts.id||"DropTarget",this.title="Drop Target";let r={target:null};this.opts={...r,...t},this.removeDragOverClassTimeout=null}install(){this.setPluginState({isDraggingOver:!1}),this.addListeners()}uninstall(){this.removeListeners()}};n(Ns,"DropTarget");Ns.VERSION=kS.version;var Ty={strings:{chooseFiles:"Choose files"}};var DS={version:"3.0.4"},rs=class extends Z{constructor(e,t){super(e,t),this.id=this.opts.id||"FileInput",this.title="File Input",this.type="acquirer",this.defaultLocale=Ty;let r={target:null,pretty:!0,inputName:"files[]"};this.opts={...r,...t},this.i18nInit(),this.render=this.render.bind(this),this.handleInputChange=this.handleInputChange.bind(this),this.handleClick=this.handleClick.bind(this)}addFiles(e){let t=e.map(r=>({source:this.id,name:r.name,type:r.type,data:r}));try{this.uppy.addFiles(t)}catch(r){this.uppy.log(r)}}handleInputChange(e){this.uppy.log("[FileInput] Something selected through input...");let t=Qe(e.target.files);this.addFiles(t),e.target.value=null}handleClick(){this.input.click()}render(){let e={width:"0.1px",height:"0.1px",opacity:0,overflow:"hidden",position:"absolute",zIndex:-1},{restrictions:t}=this.uppy.opts,r=t.allowedFileTypes?t.allowedFileTypes.join(","):null;return u("div",{className:"uppy-FileInput-container"},u("input",{className:"uppy-FileInput-input",style:this.opts.pretty&&e,type:"file",name:this.opts.inputName,onChange:this.handleInputChange,multiple:t.maxNumberOfFiles!==1,accept:r,ref:s=>{this.input=s}}),this.opts.pretty&&u("button",{className:"uppy-FileInput-btn",type:"button",onClick:this.handleClick},this.i18n("chooseFiles")))}install(){let{target:e}=this.opts;e&&this.mount(e,this)}uninstall(){this.unmount()}};n(rs,"FileInput");rs.VERSION=DS.version;var Iy=de(Ay(),1);function IS(i,e){let t=i.width/e.width,r=i.height/e.height,s=Math.min(t,r),o=e.width*s,a=e.height*s,l=(i.width-o)/2,h=(i.height-a)/2;return{width:o,height:a,left:l,top:h}}n(IS,"getCanvasDataThatFitsPerfectlyIntoContainer");var Ry=IS;function NS(i){return i*(Math.PI/180)}n(NS,"toRadians");function MS(i,e,t){let r=Math.abs(NS(t));return Math.max((Math.sin(r)*i+Math.cos(r)*e)/e,(Math.sin(r)*e+Math.cos(r)*i)/i)}n(MS,"getScaleFactorThatRemovesDarkCorners");var Uy=MS;function LS(i,e,t){return e.left<i.left?{left:i.left,width:t.width}:e.top<i.top?{top:i.top,height:t.height}:e.left+e.width>i.left+i.width?{left:i.left+i.width-t.width,width:t.width}:e.top+e.height>i.top+i.height?{top:i.top+i.height-t.height,height:t.height}:null}n(LS,"limitCropboxMovementOnMove");var ky=LS;function BS(i,e,t){return e.left<i.left?{left:i.left,width:t.left+t.width-i.left}:e.top<i.top?{top:i.top,height:t.top+t.height-i.top}:e.left+e.width>i.left+i.width?{left:t.left,width:i.left+i.width-t.left}:e.top+e.height>i.top+i.height?{top:t.top,height:i.top+i.height-t.top}:null}n(BS,"limitCropboxMovementOnResize");var Dy=BS;var qo=class extends we{constructor(e){super(e),this.onRotate90Deg=()=>{let{angle90Deg:t}=this.state,r=t-90;this.setState({angle90Deg:r,angleGranular:0}),this.cropper.scale(1),this.cropper.rotateTo(r);let s=this.cropper.getCanvasData(),o=this.cropper.getContainerData(),a=Ry(o,s);this.cropper.setCanvasData(a),this.cropper.setCropBoxData(a)},this.onRotateGranular=t=>{let r=Number(t.target.value);this.setState({angleGranular:r});let{angle90Deg:s}=this.state,o=s+r;this.cropper.rotateTo(o);let a=this.cropper.getImageData(),l=Uy(a.naturalWidth,a.naturalHeight,r),h=this.cropper.getImageData().scaleX<0?-l:l;this.cropper.scale(h,l)},this.state={angle90Deg:0,angleGranular:0,prevCropboxData:null},this.storePrevCropboxData=this.storePrevCropboxData.bind(this),this.limitCropboxMovement=this.limitCropboxMovement.bind(this)}componentDidMount(){let{opts:e,storeCropperInstance:t}=this.props;this.cropper=new Iy.default(this.imgElement,e.cropperOptions),this.imgElement.addEventListener("cropstart",this.storePrevCropboxData),this.imgElement.addEventListener("cropend",this.limitCropboxMovement),t(this.cropper)}componentWillUnmount(){this.cropper.destroy(),this.imgElement.removeEventListener("cropstart",this.storePrevCropboxData),this.imgElement.removeEventListener("cropend",this.limitCropboxMovement)}storePrevCropboxData(){this.setState({prevCropboxData:this.cropper.getCropBoxData()})}limitCropboxMovement(e){let t=this.cropper.getCanvasData(),r=this.cropper.getCropBoxData(),{prevCropboxData:s}=this.state;if(e.detail.action==="all"){let o=ky(t,r,s);o&&this.cropper.setCropBoxData(o)}else{let o=Dy(t,r,s);o&&this.cropper.setCropBoxData(o)}}renderGranularRotate(){let{i18n:e}=this.props,{angleGranular:t}=this.state;return u("label",{role:"tooltip","aria-label":`${t}\xBA`,"data-microtip-position":"top",className:"uppy-ImageCropper-rangeWrapper"},u("input",{className:"uppy-ImageCropper-range uppy-u-reset",type:"range",onInput:this.onRotateGranular,onChange:this.onRotateGranular,value:t,min:"-45",max:"45","aria-label":e("rotate")}))}renderRevert(){let{i18n:e}=this.props;return u("label",{role:"tooltip","aria-label":e("revert"),"data-microtip-position":"top"},u("button",{type:"button",className:"uppy-u-reset uppy-c-btn",onClick:()=>{this.cropper.reset(),this.cropper.setAspectRatio(0),this.setState({angle90Deg:0,angleGranular:0})}},u("svg",{"aria-hidden":"true",className:"uppy-c-icon",width:"24",height:"24",viewBox:"0 0 24 24"},u("path",{d:"M0 0h24v24H0z",fill:"none"}),u("path",{d:"M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9zm-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8H12z"}))))}renderRotate(){let{i18n:e}=this.props;return u("label",{role:"tooltip","aria-label":e("rotate"),"data-microtip-position":"top"},u("button",{type:"button",className:"uppy-u-reset uppy-c-btn",onClick:this.onRotate90Deg},u("svg",{"aria-hidden":"true",className:"uppy-c-icon",width:"24",height:"24",viewBox:"0 0 24 24"},u("path",{d:"M0 0h24v24H0V0zm0 0h24v24H0V0z",fill:"none"}),u("path",{d:"M14 10a2 2 0 012 2v7a2 2 0 01-2 2H6a2 2 0 01-2-2v-7a2 2 0 012-2h8zm0 1.75H6a.25.25 0 00-.243.193L5.75 12v7a.25.25 0 00.193.243L6 19.25h8a.25.25 0 00.243-.193L14.25 19v-7a.25.25 0 00-.193-.243L14 11.75zM12 .76V4c2.3 0 4.61.88 6.36 2.64a8.95 8.95 0 012.634 6.025L21 13a1 1 0 01-1.993.117L19 13h-.003a6.979 6.979 0 00-2.047-4.95 6.97 6.97 0 00-4.652-2.044L12 6v3.24L7.76 5 12 .76z"}))))}renderFlip(){let{i18n:e}=this.props;return u("label",{role:"tooltip","aria-label":e("flipHorizontal"),"data-microtip-position":"top"},u("button",{type:"button",className:"uppy-u-reset uppy-c-btn",onClick:()=>this.cropper.scaleX(-this.cropper.getData().scaleX||-1)},u("svg",{"aria-hidden":"true",className:"uppy-c-icon",width:"24",height:"24",viewBox:"0 0 24 24"},u("path",{d:"M0 0h24v24H0z",fill:"none"}),u("path",{d:"M15 21h2v-2h-2v2zm4-12h2V7h-2v2zM3 5v14c0 1.1.9 2 2 2h4v-2H5V5h4V3H5c-1.1 0-2 .9-2 2zm16-2v2h2c0-1.1-.9-2-2-2zm-8 20h2V1h-2v22zm8-6h2v-2h-2v2zM15 5h2V3h-2v2zm4 8h2v-2h-2v2zm0 8c1.1 0 2-.9 2-2h-2v2z"}))))}renderZoomIn(){let{i18n:e}=this.props;return u("label",{role:"tooltip","aria-label":e("zoomIn"),"data-microtip-position":"top"},u("button",{type:"button",className:"uppy-u-reset uppy-c-btn",onClick:()=>this.cropper.zoom(.1)},u("svg",{"aria-hidden":"true",className:"uppy-c-icon",height:"24",viewBox:"0 0 24 24",width:"24"},u("path",{d:"M0 0h24v24H0V0z",fill:"none"}),u("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"}),u("path",{d:"M12 10h-2v2H9v-2H7V9h2V7h1v2h2v1z"}))))}renderZoomOut(){let{i18n:e}=this.props;return u("label",{role:"tooltip","aria-label":e("zoomOut"),"data-microtip-position":"top"},u("button",{type:"button",className:"uppy-u-reset uppy-c-btn",onClick:()=>this.cropper.zoom(-.1)},u("svg",{"aria-hidden":"true",className:"uppy-c-icon",width:"24",height:"24",viewBox:"0 0 24 24"},u("path",{d:"M0 0h24v24H0V0z",fill:"none"}),u("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14zM7 9h5v1H7z"}))))}renderCropSquare(){let{i18n:e}=this.props;return u("label",{role:"tooltip","aria-label":e("aspectRatioSquare"),"data-microtip-position":"top"},u("button",{type:"button",className:"uppy-u-reset uppy-c-btn",onClick:()=>this.cropper.setAspectRatio(1)},u("svg",{"aria-hidden":"true",className:"uppy-c-icon",width:"24",height:"24",viewBox:"0 0 24 24"},u("path",{d:"M0 0h24v24H0z",fill:"none"}),u("path",{d:"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"}))))}renderCropWidescreen(){let{i18n:e}=this.props;return u("label",{role:"tooltip","aria-label":e("aspectRatioLandscape"),"data-microtip-position":"top"},u("button",{type:"button",className:"uppy-u-reset uppy-c-btn",onClick:()=>this.cropper.setAspectRatio(16/9)},u("svg",{"aria-hidden":"true",className:"uppy-c-icon",width:"24",height:"24",viewBox:"0 0 24 24"},u("path",{d:"M 19,4.9999992 V 17.000001 H 4.9999998 V 6.9999992 H 19 m 0,-2 H 4.9999998 c -1.0999999,0 -1.9999999,0.9000001 -1.9999999,2 V 17.000001 c 0,1.1 0.9,2 1.9999999,2 H 19 c 1.1,0 2,-0.9 2,-2 V 6.9999992 c 0,-1.0999999 -0.9,-2 -2,-2 z"}),u("path",{fill:"none",d:"M0 0h24v24H0z"}))))}renderCropWidescreenVertical(){let{i18n:e}=this.props;return u("label",{role:"tooltip","aria-label":e("aspectRatioPortrait"),"data-microtip-position":"top"},u("button",{type:"button",className:"uppy-u-reset uppy-c-btn",onClick:()=>this.cropper.setAspectRatio(9/16)},u("svg",{"aria-hidden":"true",className:"uppy-c-icon",width:"24",height:"24",viewBox:"0 0 24 24"},u("path",{d:"M 19.000001,19 H 6.999999 V 5 h 10.000002 v 14 m 2,0 V 5 c 0,-1.0999999 -0.9,-1.9999999 -2,-1.9999999 H 6.999999 c -1.1,0 -2,0.9 -2,1.9999999 v 14 c 0,1.1 0.9,2 2,2 h 10.000002 c 1.1,0 2,-0.9 2,-2 z"}),u("path",{d:"M0 0h24v24H0z",fill:"none"}))))}render(){let{currentImage:e,opts:t}=this.props,{actions:r}=t,s=URL.createObjectURL(e.data);return u("div",{className:"uppy-ImageCropper"},u("div",{className:"uppy-ImageCropper-container"},u("img",{className:"uppy-ImageCropper-image",alt:e.name,src:s,ref:o=>{this.imgElement=o}})),u("div",{className:"uppy-ImageCropper-controls"},r.revert&&this.renderRevert(),r.rotate&&this.renderRotate(),r.granularRotate&&this.renderGranularRotate(),r.flip&&this.renderFlip(),r.zoomIn&&this.renderZoomIn(),r.zoomOut&&this.renderZoomOut(),r.cropSquare&&this.renderCropSquare(),r.cropWidescreen&&this.renderCropWidescreen(),r.cropWidescreenVertical&&this.renderCropWidescreenVertical()))}};n(qo,"Editor");var Ny={strings:{revert:"Reset",rotate:"Rotate 90\xB0",zoomIn:"Zoom in",zoomOut:"Zoom out",flipHorizontal:"Flip horizontally",aspectRatioSquare:"Crop square",aspectRatioLandscape:"Crop landscape (16:9)",aspectRatioPortrait:"Crop portrait (9:16)"}};var zS={version:"2.3.0"},ss=class extends Z{constructor(e,t){super(e,t),this.save=()=>{let a=n(p=>{let{currentImage:d}=this.getPluginState();this.uppy.setFileState(d.id,{data:p,size:p.size,preview:null});let f=this.uppy.getFile(d.id);this.uppy.emit("thumbnail:request",f),this.setPluginState({currentImage:f}),this.uppy.emit("file-editor:complete",f)},"saveBlobCallback"),{currentImage:l}=this.getPluginState(),h=this.cropper.getCroppedCanvas({});h.width%2!==0&&this.cropper.setData({width:h.width-1}),h.height%2!==0&&this.cropper.setData({height:h.height-1}),this.cropper.getCroppedCanvas(this.opts.cropperOptions.croppedCanvasOptions).toBlob(a,l.type,this.opts.quality)},this.storeCropperInstance=a=>{this.cropper=a},this.selectFile=a=>{this.uppy.emit("file-editor:start",a),this.setPluginState({currentImage:a})},this.id=this.opts.id||"ImageEditor",this.title="Image Editor",this.type="editor",this.defaultLocale=Ny;let r={viewMode:0,background:!1,autoCropArea:1,responsive:!0,minCropBoxWidth:70,minCropBoxHeight:70,croppedCanvasOptions:{}},s={revert:!0,rotate:!0,granularRotate:!0,flip:!0,zoomIn:!0,zoomOut:!0,cropSquare:!0,cropWidescreen:!0,cropWidescreenVertical:!0},o={quality:.8};this.opts={...o,...t,actions:{...s,...t?.actions},cropperOptions:{...r,...t?.cropperOptions}},this.i18nInit()}canEditFile(e){if(!e.type||e.isRemote)return!1;let t=e.type.split("/")[1];return!!/^(jpe?g|gif|png|bmp|webp)$/.test(t)}install(){this.setPluginState({currentImage:null});let{target:e}=this.opts;e&&this.mount(e,this)}uninstall(){let{currentImage:e}=this.getPluginState();if(e){let t=this.uppy.getFile(e.id);this.uppy.emit("file-editor:cancel",t)}this.unmount()}render(){let{currentImage:e}=this.getPluginState();return e===null||e.isRemote?null:u(qo,{currentImage:e,storeCropperInstance:this.storeCropperInstance,save:this.save,opts:this.opts,i18n:this.i18n})}};n(ss,"ImageEditor");ss.VERSION=zS.version;var jS={version:"3.0.4"},os=class extends Z{constructor(e,t){super(e,t),this.id=this.opts.id||"ProgressBar",this.title="Progress Bar",this.type="progressindicator";let r={target:"body",fixed:!1,hideAfterFinish:!0};this.opts={...r,...t},this.render=this.render.bind(this)}render(e){let t=e.totalProgress||0,r=(t===0||t===100)&&this.opts.hideAfterFinish;return u("div",{className:"uppy uppy-ProgressBar",style:{position:this.opts.fixed?"fixed":"initial"},"aria-hidden":r},u("div",{className:"uppy-ProgressBar-inner",style:{width:`${t}%`}}),u("div",{className:"uppy-ProgressBar-percentage"},t))}install(){let{target:e}=this.opts;e&&this.mount(e,this)}uninstall(){this.unmount()}};n(os,"ProgressBar");os.VERSION=jS.version;var HS={__proto__:null,"audio/mp3":"mp3","audio/mp4":"mp4","audio/ogg":"ogg","audio/webm":"webm","image/gif":"gif","image/heic":"heic","image/heif":"heif","image/jpeg":"jpg","image/png":"png","image/svg+xml":"svg","video/mp4":"mp4","video/ogg":"ogv","video/quicktime":"mov","video/webm":"webm","video/x-matroska":"mkv","video/x-msvideo":"avi"};function Ki(i){return[i]=i.split(";",1),HS[i]||null}n(Ki,"getFileTypeExtension");function Gd(){var i;return typeof MediaRecorder=="function"&&typeof((i=MediaRecorder.prototype)==null?void 0:i.start)=="function"}n(Gd,"supportsMediaRecorder");function Kd(i){let{recording:e,onStartRecording:t,onStopRecording:r,i18n:s}=i;return e?u("button",{className:"uppy-u-reset uppy-c-btn uppy-Audio-button",type:"button",title:s("stopAudioRecording"),"aria-label":s("stopAudioRecording"),onClick:r,"data-uppy-super-focusable":!0},u("svg",{"aria-hidden":"true",focusable:"false",className:"uppy-c-icon",width:"100",height:"100",viewBox:"0 0 100 100"},u("rect",{x:"15",y:"15",width:"70",height:"70"}))):u("button",{className:"uppy-u-reset uppy-c-btn uppy-Audio-button",type:"button",title:s("startAudioRecording"),"aria-label":s("startAudioRecording"),onClick:t,"data-uppy-super-focusable":!0},u("svg",{"aria-hidden":"true",focusable:"false",className:"uppy-c-icon",width:"14px",height:"20px",viewBox:"0 0 14 20"},u("path",{d:"M7 14c2.21 0 4-1.71 4-3.818V3.818C11 1.71 9.21 0 7 0S3 1.71 3 3.818v6.364C3 12.29 4.79 14 7 14zm6.364-7h-.637a.643.643 0 0 0-.636.65V9.6c0 3.039-2.565 5.477-5.6 5.175-2.645-.264-4.582-2.692-4.582-5.407V7.65c0-.36-.285-.65-.636-.65H.636A.643.643 0 0 0 0 7.65v1.631c0 3.642 2.544 6.888 6.045 7.382v1.387H3.818a.643.643 0 0 0-.636.65v.65c0 .36.285.65.636.65h6.364c.351 0 .636-.29.636-.65v-.65c0-.36-.285-.65-.636-.65H7.955v-1.372C11.363 16.2 14 13.212 14 9.6V7.65c0-.36-.285-.65-.636-.65z",fill:"#FFF","fill-rule":"nonzero"})))}n(Kd,"RecordButton");function Xd(i){return`${Math.floor(i/60)}:${String(i%60).padStart(2,0)}`}n(Xd,"formatSeconds");function Yd(i){let{recordingLengthSeconds:e,i18n:t}=i,r=Xd(e);return u("span",{"aria-label":t("recordingLength",{recording_length:r})},r)}n(Yd,"RecordingLength");var My=n(i=>{let{currentDeviceId:e,audioSources:t,onChangeSource:r}=i;return u("div",{className:"uppy-Audio-videoSource"},u("select",{className:"uppy-u-reset uppy-Audio-audioSource-select",onChange:s=>{r(s.target.value)}},t.map(s=>u("option",{key:s.deviceId,value:s.deviceId,selected:s.deviceId===e},s.label))))},"default");function $S(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError("attempted to use private field on non-instance");return i}n($S,"_classPrivateFieldLooseBase");var qS=0;function VS(i){return"__private_"+qS+++"_"+i}n(VS,"_classPrivateFieldLooseKey");function Ly(i){return typeof i=="function"}n(Ly,"isFunction");function ba(i){return Ly(i)?i():i}n(ba,"result");var Qd=VS("draw"),Vo=class{constructor(e,t){t===void 0&&(t={}),Object.defineProperty(this,Qd,{writable:!0,value:()=>this.draw()});let r=t.canvas||{},s=t.canvasContext||{};this.analyser=null,this.bufferLength=0,this.dataArray=[],this.canvas=e,this.width=ba(r.width)||this.canvas.width,this.height=ba(r.height)||this.canvas.height,this.canvas.width=this.width,this.canvas.height=this.height,this.canvasContext=this.canvas.getContext("2d"),this.canvasContext.fillStyle=ba(s.fillStyle)||"rgb(255, 255, 255)",this.canvasContext.strokeStyle=ba(s.strokeStyle)||"rgb(0, 0, 0)",this.canvasContext.lineWidth=ba(s.lineWidth)||1,this.onDrawFrame=Ly(t.onDrawFrame)?t.onDrawFrame:()=>{}}addSource(e){this.streamSource=e,this.audioContext=this.streamSource.context,this.analyser=this.audioContext.createAnalyser(),this.analyser.fftSize=2048,this.bufferLength=this.analyser.frequencyBinCount,this.source=this.audioContext.createBufferSource(),this.dataArray=new Uint8Array(this.bufferLength),this.analyser.getByteTimeDomainData(this.dataArray),this.streamSource.connect(this.analyser)}draw(){let{analyser:e,dataArray:t,bufferLength:r}=this,s=this.canvasContext,o=this.width,a=this.height;e&&e.getByteTimeDomainData(t),s.fillRect(0,0,o,a),s.beginPath();let l=o*1/r,h=0;r||s.moveTo(0,this.height/2);for(let p=0;p<r;p++){let f=t[p]/128*(a/2);p===0?s.moveTo(h,f):s.lineTo(h,f),h+=l}s.lineTo(o,a/2),s.stroke(),this.onDrawFrame(this),requestAnimationFrame($S(this,Qd)[Qd])}};n(Vo,"AudioOscilloscope");function WS(i){let{onSubmit:e,i18n:t}=i;return u("button",{className:"uppy-u-reset uppy-c-btn uppy-Audio-button uppy-Audio-button--submit",type:"button",title:t("submitRecordedFile"),"aria-label":t("submitRecordedFile"),onClick:e,"data-uppy-super-focusable":!0},u("svg",{width:"12",height:"9",viewBox:"0 0 12 9",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",className:"uppy-c-icon"},u("path",{fill:"#fff",fillRule:"nonzero",d:"M10.66 0L12 1.31 4.136 9 0 4.956l1.34-1.31L4.136 6.38z"})))}n(WS,"SubmitButton");var By=WS;function GS(i){let{onDiscard:e,i18n:t}=i;return u("button",{className:"uppy-u-reset uppy-c-btn uppy-Audio-button",type:"button",title:t("discardRecordedFile"),"aria-label":t("discardRecordedFile"),onClick:e,"data-uppy-super-focusable":!0},u("svg",{width:"13",height:"13",viewBox:"0 0 13 13",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",className:"uppy-c-icon"},u("g",{fill:"#FFF",fillRule:"evenodd"},u("path",{d:"M.496 11.367L11.103.76l1.414 1.414L1.911 12.781z"}),u("path",{d:"M11.104 12.782L.497 2.175 1.911.76l10.607 10.606z"}))))}n(GS,"DiscardButton");var zy=GS;function Jd(i){let{stream:e,recordedAudio:t,onStop:r,recording:s,supportsRecording:o,audioSources:a,showAudioSourceDropdown:l,onSubmit:h,i18n:p,onStartRecording:d,onStopRecording:f,onDiscardRecordedAudio:y,recordingLengthSeconds:b}=i,S=Xh(null),E=Xh(null);Os(()=>()=>{E.current=null,r()},[r]),Os(()=>{if(!t&&(E.current=new Vo(S.current,{canvas:{width:600,height:600},canvasContext:{lineWidth:2,fillStyle:"rgb(0,0,0)",strokeStyle:"green"}}),E.current.draw(),e)){let G=new AudioContext().createMediaStreamSource(e);E.current.addSource(G)}},[t,e]);let x=t!=null,F=!x&&o,U=l&&!x&&a&&a.length>1;return u("div",{className:"uppy-Audio-container"},u("div",{className:"uppy-Audio-audioContainer"},x?u("audio",{className:"uppy-Audio-player",controls:!0,src:t}):u("canvas",{ref:S,className:"uppy-Audio-canvas"})),u("div",{className:"uppy-Audio-footer"},u("div",{className:"uppy-Audio-audioSourceContainer"},U?My(i):null),u("div",{className:"uppy-Audio-buttonContainer"},F&&u(Kd,{recording:s,onStartRecording:d,onStopRecording:f,i18n:p}),x&&u(By,{onSubmit:h,i18n:p}),x&&u(zy,{onDiscard:y,i18n:p})),u("div",{className:"uppy-Audio-recordingLength"},!x&&u(Yd,{recordingLengthSeconds:b,i18n:p}))))}n(Jd,"RecordingScreen");var jy=n(i=>{let{icon:e,hasAudio:t,i18n:r}=i;return u("div",{className:"uppy-Audio-permissons"},u("div",{className:"uppy-Audio-permissonsIcon"},e()),u("h1",{className:"uppy-Audio-title"},r(t?"allowAudioAccessTitle":"noAudioTitle")),u("p",null,r(t?"allowAudioAccessDescription":"noAudioDescription")))},"default");var Hy={strings:{pluginNameAudio:"Audio",startAudioRecording:"Begin audio recording",stopAudioRecording:"Stop audio recording",allowAudioAccessTitle:"Please allow access to your microphone",allowAudioAccessDescription:"In order to record audio, please allow microphone access for this site.",noAudioTitle:"Microphone Not Available",noAudioDescription:"In order to record audio, please connect a microphone or another audio input device",recordingStoppedMaxSize:"Recording stopped because the file size is about to exceed the limit",recordingLength:"Recording length %{recording_length}",submitRecordedFile:"Submit recorded file",discardRecordedFile:"Discard recorded file"}};function oc(){return oc=Object.assign?Object.assign.bind():function(i){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[r]=t[r])}return i},oc.apply(this,arguments)}n(oc,"_extends");function H(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError("attempted to use private field on non-instance");return i}n(H,"_classPrivateFieldLooseBase");var KS=0;function pt(i){return"__private_"+KS+++"_"+i}n(pt,"_classPrivateFieldLooseKey");var XS={version:"1.1.4"},dt=pt("stream"),Rr=pt("audioActive"),Ie=pt("recordingChunks"),De=pt("recorder"),Ur=pt("capturedMediaFile"),ct=pt("mediaDevices"),wa=pt("supportsUserMedia"),Zd=pt("hasAudioCheck"),Ms=pt("start"),ec=pt("startRecording"),Sa=pt("stopRecording"),tc=pt("discardRecordedAudio"),ic=pt("submit"),kr=pt("stop"),rc=pt("getAudio"),sc=pt("changeSource"),Ls=pt("updateSources"),ns=class extends Z{constructor(e,t){var r;super(e,t),r=this,Object.defineProperty(this,rc,{value:QS}),Object.defineProperty(this,Zd,{value:YS}),Object.defineProperty(this,dt,{writable:!0,value:null}),Object.defineProperty(this,Rr,{writable:!0,value:!1}),Object.defineProperty(this,Ie,{writable:!0,value:null}),Object.defineProperty(this,De,{writable:!0,value:null}),Object.defineProperty(this,Ur,{writable:!0,value:null}),Object.defineProperty(this,ct,{writable:!0,value:null}),Object.defineProperty(this,wa,{writable:!0,value:null}),Object.defineProperty(this,Ms,{writable:!0,value:function(s){if(s===void 0&&(s=null),!H(r,wa)[wa])return Promise.reject(new Error("Microphone access not supported"));H(r,Rr)[Rr]=!0,H(r,Zd)[Zd]().then(o=>(r.setPluginState({hasAudio:o}),H(r,ct)[ct].getUserMedia({audio:!0}).then(a=>{H(r,dt)[dt]=a;let l=null,h=a.getAudioTracks();!s||!s.deviceId?l=h[0].getSettings().deviceId:h.forEach(p=>{p.getSettings().deviceId===s.deviceId&&(l=p.getSettings().deviceId)}),H(r,Ls)[Ls](),r.setPluginState({currentDeviceId:l,audioReady:!0})}).catch(a=>{r.setPluginState({audioReady:!1,cameraError:a}),r.uppy.info(a.message,"error")})))}}),Object.defineProperty(this,ec,{writable:!0,value:()=>{H(this,De)[De]=new MediaRecorder(H(this,dt)[dt]),H(this,Ie)[Ie]=[];let s=!1;H(this,De)[De].addEventListener("dataavailable",o=>{H(this,Ie)[Ie].push(o.data);let{restrictions:a}=this.uppy.opts;if(H(this,Ie)[Ie].length>1&&a.maxFileSize!=null&&!s){let l=H(this,Ie)[Ie].reduce((f,y)=>f+y.size,0),p=(l-H(this,Ie)[Ie][0].size)/(H(this,Ie)[Ie].length-1)*3,d=Math.max(0,a.maxFileSize-p);l>d&&(s=!0,this.uppy.info(this.i18n("recordingStoppedMaxSize"),"warning",4e3),H(this,Sa)[Sa]())}}),H(this,De)[De].start(500),this.recordingLengthTimer=setInterval(()=>{let o=this.getPluginState().recordingLengthSeconds;this.setPluginState({recordingLengthSeconds:o+1})},1e3),this.setPluginState({isRecording:!0})}}),Object.defineProperty(this,Sa,{writable:!0,value:()=>new Promise(o=>{H(this,De)[De].addEventListener("stop",()=>{o()}),H(this,De)[De].stop(),clearInterval(this.recordingLengthTimer),this.setPluginState({recordingLengthSeconds:0})}).then(()=>(this.setPluginState({isRecording:!1}),H(this,rc)[rc]())).then(o=>{try{H(this,Ur)[Ur]=o,this.setPluginState({recordedAudio:URL.createObjectURL(o.data)})}catch(a){a.isRestriction||this.uppy.log(a)}}).then(()=>{H(this,Ie)[Ie]=null,H(this,De)[De]=null},o=>{throw H(this,Ie)[Ie]=null,H(this,De)[De]=null,o})}),Object.defineProperty(this,tc,{writable:!0,value:()=>{this.setPluginState({recordedAudio:null}),H(this,Ur)[Ur]=null}}),Object.defineProperty(this,ic,{writable:!0,value:()=>{try{H(this,Ur)[Ur]&&this.uppy.addFile(H(this,Ur)[Ur])}catch(s){s.isRestriction||this.uppy.log(s,"warning")}}}),Object.defineProperty(this,kr,{writable:!0,value:async()=>{H(this,dt)[dt]&&H(this,dt)[dt].getAudioTracks().forEach(o=>o.stop()),H(this,De)[De]&&await new Promise(s=>{H(this,De)[De].addEventListener("stop",s,{once:!0}),H(this,De)[De].stop(),clearInterval(this.recordingLengthTimer)}),H(this,Ie)[Ie]=null,H(this,De)[De]=null,H(this,Rr)[Rr]=!1,H(this,dt)[dt]=null,this.setPluginState({recordedAudio:null,isRecording:!1,recordingLengthSeconds:0})}}),Object.defineProperty(this,sc,{writable:!0,value:s=>{H(this,kr)[kr](),H(this,Ms)[Ms]({deviceId:s})}}),Object.defineProperty(this,Ls,{writable:!0,value:()=>{H(this,ct)[ct].enumerateDevices().then(s=>{this.setPluginState({audioSources:s.filter(o=>o.kind==="audioinput")})})}}),H(this,ct)[ct]=navigator.mediaDevices,H(this,wa)[wa]=H(this,ct)[ct]!=null,this.id=this.opts.id||"Audio",this.type="acquirer",this.icon=()=>u("svg",{className:"uppy-DashboardTab-iconAudio","aria-hidden":"true",focusable:"false",width:"32px",height:"32px",viewBox:"0 0 32 32"},u("path",{d:"M21.143 12.297c.473 0 .857.383.857.857v2.572c0 3.016-2.24 5.513-5.143 5.931v2.64h2.572a.857.857 0 110 1.714H12.57a.857.857 0 110-1.714h2.572v-2.64C12.24 21.24 10 18.742 10 15.726v-2.572a.857.857 0 111.714 0v2.572A4.29 4.29 0 0016 20.01a4.29 4.29 0 004.286-4.285v-2.572c0-.474.384-.857.857-.857zM16 6.5a3 3 0 013 3v6a3 3 0 01-6 0v-6a3 3 0 013-3z",fill:"currentcolor","fill-rule":"nonzero"})),this.defaultLocale=Hy,this.opts={...t},this.i18nInit(),this.title=this.i18n("pluginNameAudio"),this.setPluginState({hasAudio:!1,audioReady:!1,cameraError:null,recordingLengthSeconds:0,audioSources:[],currentDeviceId:null})}render(){H(this,Rr)[Rr]||H(this,Ms)[Ms]();let e=this.getPluginState();return!e.audioReady||!e.hasAudio?u(jy,{icon:this.icon,i18n:this.i18n,hasAudio:e.hasAudio}):u(Jd,oc({},e,{audioActive:H(this,Rr)[Rr],onChangeSource:H(this,sc)[sc],onStartRecording:H(this,ec)[ec],onStopRecording:H(this,Sa)[Sa],onDiscardRecordedAudio:H(this,tc)[tc],onSubmit:H(this,ic)[ic],onStop:H(this,kr)[kr],i18n:this.i18n,showAudioSourceDropdown:this.opts.showAudioSourceDropdown,supportsRecording:Gd(),recording:e.isRecording,stream:H(this,dt)[dt]}))}install(){this.setPluginState({audioReady:!1,recordingLengthSeconds:0});let{target:e}=this.opts;e&&this.mount(e,this),H(this,ct)[ct]&&(H(this,Ls)[Ls](),H(this,ct)[ct].ondevicechange=()=>{if(H(this,Ls)[Ls](),H(this,dt)[dt]){let t=!0,{audioSources:r,currentDeviceId:s}=this.getPluginState();r.forEach(o=>{s===o.deviceId&&(t=!1)}),t&&(H(this,kr)[kr](),H(this,Ms)[Ms]())}})}uninstall(){H(this,dt)[dt]&&H(this,kr)[kr](),this.unmount()}};n(ns,"Audio");function YS(){return H(this,ct)[ct]?H(this,ct)[ct].enumerateDevices().then(i=>i.some(e=>e.kind==="audioinput")):Promise.resolve(!1)}n(YS,"_hasAudioCheck2");function QS(){let i=H(this,Ie)[Ie].find(o=>{var a;return((a=o.type)==null?void 0:a.length)>0}).type,e=Ki(i);if(!e)return Promise.reject(new Error(`Could not retrieve recording: Unsupported media type "${i}"`));let t=`audio-${Date.now()}.${e}`,r=new Blob(H(this,Ie)[Ie],{type:i}),s={source:this.id,name:t,data:new Blob([r],{type:i}),type:i};return Promise.resolve(s)}n(QS,"_getAudio2");ns.VERSION=XS.version;var $y={strings:{pluginNameBox:"Box"}};var JS={version:"2.1.4"},Xi=class extends Z{constructor(e,t){super(e,t),this.id=this.opts.id||"Box",be.initPlugin(this,t),this.title=this.opts.title||"Box",this.icon=()=>u("svg",{className:"uppy-DashboardTab-iconBox","aria-hidden":"true",focusable:"false",width:"32",height:"32",viewBox:"0 0 32 32"},u("g",{fill:"currentcolor",fillRule:"nonzero"},u("path",{d:"m16.4 13.5c-1.6 0-3 0.9-3.7 2.2-0.7-1.3-2.1-2.2-3.7-2.2-1 0-1.8 0.3-2.5 0.8v-3.6c-0.1-0.3-0.5-0.7-1-0.7s-0.8 0.4-0.8 0.8v7c0 2.3 1.9 4.2 4.2 4.2 1.6 0 3-0.9 3.7-2.2 0.7 1.3 2.1 2.2 3.7 2.2 2.3 0 4.2-1.9 4.2-4.2 0.1-2.4-1.8-4.3-4.1-4.3m-7.5 6.8c-1.4 0-2.5-1.1-2.5-2.5s1.1-2.5 2.5-2.5 2.5 1.1 2.5 2.5-1.1 2.5-2.5 2.5m7.5 0c-1.4 0-2.5-1.1-2.5-2.5s1.1-2.5 2.5-2.5 2.5 1.1 2.5 2.5-1.1 2.5-2.5 2.5"}),u("path",{d:"m27.2 20.6l-2.3-2.8 2.3-2.8c0.3-0.4 0.2-0.9-0.2-1.2s-1-0.2-1.3 0.2l-2 2.4-2-2.4c-0.3-0.4-0.9-0.4-1.3-0.2-0.4 0.3-0.5 0.8-0.2 1.2l2.3 2.8-2.3 2.8c-0.3 0.4-0.2 0.9 0.2 1.2s1 0.2 1.3-0.2l2-2.4 2 2.4c0.3 0.4 0.9 0.4 1.3 0.2 0.4-0.3 0.4-0.8 0.2-1.2"}))),this.provider=new be(e,{companionUrl:this.opts.companionUrl,companionHeaders:this.opts.companionHeaders,companionKeysParams:this.opts.companionKeysParams,companionCookiesRule:this.opts.companionCookiesRule,provider:"box",pluginId:this.id}),this.defaultLocale=$y,this.i18nInit(),this.title=this.i18n("pluginNameBox"),this.onFirstRender=this.onFirstRender.bind(this),this.render=this.render.bind(this)}install(){this.view=new Te(this,{provider:this.provider,loadAllFiles:!0});let{target:e}=this.opts;e&&this.mount(e,this)}uninstall(){this.view.tearDown(),this.unmount()}onFirstRender(){return this.view.getFolder()}render(e){return this.view.render(e)}};n(Xi,"Box");Xi.VERSION=JS.version;var qy={strings:{pluginNameDropbox:"Dropbox"}};var ZS={version:"3.1.4"},Yi=class extends Z{constructor(e,t){super(e,t),this.id=this.opts.id||"Dropbox",be.initPlugin(this,t),this.title=this.opts.title||"Dropbox",this.icon=()=>u("svg",{className:"uppy-DashboardTab-iconDropbox","aria-hidden":"true",focusable:"false",width:"32",height:"32",viewBox:"0 0 32 32"},u("path",{d:"M10.5 7.5L5 10.955l5.5 3.454 5.5-3.454 5.5 3.454 5.5-3.454L21.5 7.5 16 10.955zM10.5 21.319L5 17.864l5.5-3.455 5.5 3.455zM16 17.864l5.5-3.455 5.5 3.455-5.5 3.455zM16 25.925l-5.5-3.455 5.5-3.454 5.5 3.454z",fill:"currentcolor",fillRule:"nonzero"})),this.provider=new be(e,{companionUrl:this.opts.companionUrl,companionHeaders:this.opts.companionHeaders,companionKeysParams:this.opts.companionKeysParams,companionCookiesRule:this.opts.companionCookiesRule,provider:"dropbox",pluginId:this.id}),this.defaultLocale=qy,this.i18nInit(),this.title=this.i18n("pluginNameDropbox"),this.onFirstRender=this.onFirstRender.bind(this),this.render=this.render.bind(this)}install(){this.view=new Te(this,{provider:this.provider,loadAllFiles:!0});let{target:e}=this.opts;e&&this.mount(e,this)}uninstall(){this.view.tearDown(),this.unmount()}onFirstRender(){return Promise.all([this.provider.fetchPreAuthToken(),this.view.getFolder()])}render(e){return this.view.render(e)}};n(Yi,"Dropbox");Yi.VERSION=ZS.version;var Vy={strings:{pluginNameFacebook:"Facebook"}};var eP={version:"3.1.3"},Qi=class extends Z{constructor(e,t){super(e,t),this.id=this.opts.id||"Facebook",be.initPlugin(this,t),this.title=this.opts.title||"Facebook",this.icon=()=>u("svg",{"aria-hidden":"true",focusable:"false",width:"32",height:"32",viewBox:"0 0 32 32"},u("g",{fill:"none",fillRule:"evenodd"},u("path",{d:"M27 16c0-6.075-4.925-11-11-11S5 9.925 5 16c0 5.49 4.023 10.041 9.281 10.866V19.18h-2.793V16h2.793v-2.423c0-2.757 1.642-4.28 4.155-4.28 1.204 0 2.462.215 2.462.215v2.707h-1.387c-1.366 0-1.792.848-1.792 1.718V16h3.05l-.487 3.18h-2.563v7.686C22.977 26.041 27 21.49 27 16",fill:"#1777F2"}),u("path",{d:"M20.282 19.18L20.77 16h-3.051v-2.063c0-.87.426-1.718 1.792-1.718h1.387V9.512s-1.258-.215-2.462-.215c-2.513 0-4.155 1.523-4.155 4.28V16h-2.793v3.18h2.793v7.686a11.082 11.082 0 003.438 0V19.18h2.563",fill:"#FFFFFE"}))),this.provider=new be(e,{companionUrl:this.opts.companionUrl,companionHeaders:this.opts.companionHeaders,companionKeysParams:this.opts.companionKeysParams,companionCookiesRule:this.opts.companionCookiesRule,provider:"facebook",pluginId:this.id}),this.defaultLocale=Vy,this.i18nInit(),this.title=this.i18n("pluginNameFacebook"),this.onFirstRender=this.onFirstRender.bind(this),this.render=this.render.bind(this)}install(){this.view=new Te(this,{provider:this.provider});let{target:e}=this.opts;e&&this.mount(e,this)}uninstall(){this.view.tearDown(),this.unmount()}onFirstRender(){return Promise.all([this.provider.fetchPreAuthToken(),this.view.getFolder()])}render(e){let t={};return this.getPluginState().files.length&&!this.getPluginState().folders.length&&(t.viewType="grid",t.showFilter=!1,t.showTitles=!1),this.view.render(e,t)}};n(Qi,"Facebook");Qi.VERSION=eP.version;var Wo=class extends Te{toggleCheckbox(e,t){e.stopPropagation(),e.preventDefault(),t.custom.isSharedDrive||super.toggleCheckbox(e,t)}};n(Wo,"DriveProviderViews");var Wy={strings:{pluginNameGoogleDrive:"Google Drive"}};var tP={version:"3.3.0"},Ji=class extends Z{constructor(e,t){super(e,t),this.id=this.opts.id||"GoogleDrive",this.title=this.opts.title||"Google Drive",be.initPlugin(this,t),this.title=this.opts.title||"Google Drive",this.icon=()=>u("svg",{"aria-hidden":"true",focusable:"false",width:"32",height:"32",viewBox:"0 0 32 32"},u("g",{fillRule:"nonzero",fill:"none"},u("path",{d:"M6.663 22.284l.97 1.62c.202.34.492.609.832.804l3.465-5.798H5c0 .378.1.755.302 1.096l1.361 2.278z",fill:"#0066DA"}),u("path",{d:"M16 12.09l-3.465-5.798c-.34.195-.63.463-.832.804l-6.4 10.718A2.15 2.15 0 005 18.91h6.93L16 12.09z",fill:"#00AC47"}),u("path",{d:"M23.535 24.708c.34-.195.63-.463.832-.804l.403-.67 1.928-3.228c.201-.34.302-.718.302-1.096h-6.93l1.474 2.802 1.991 2.996z",fill:"#EA4335"}),u("path",{d:"M16 12.09l3.465-5.798A2.274 2.274 0 0018.331 6h-4.662c-.403 0-.794.11-1.134.292L16 12.09z",fill:"#00832D"}),u("path",{d:"M20.07 18.91h-8.14l-3.465 5.798c.34.195.73.292 1.134.292h12.802c.403 0 .794-.11 1.134-.292L20.07 18.91z",fill:"#2684FC"}),u("path",{d:"M23.497 12.455l-3.2-5.359a2.252 2.252 0 00-.832-.804L16 12.09l4.07 6.82h6.917c0-.377-.1-.755-.302-1.096l-3.188-5.359z",fill:"#FFBA00"}))),this.provider=new be(e,{companionUrl:this.opts.companionUrl,companionHeaders:this.opts.companionHeaders,companionKeysParams:this.opts.companionKeysParams,companionCookiesRule:this.opts.companionCookiesRule,provider:"drive",pluginId:this.id}),this.defaultLocale=Wy,this.i18nInit(),this.title=this.i18n("pluginNameGoogleDrive"),this.onFirstRender=this.onFirstRender.bind(this),this.render=this.render.bind(this)}install(){this.view=new Wo(this,{provider:this.provider,loadAllFiles:!0});let{target:e}=this.opts;e&&this.mount(e,this)}uninstall(){this.view.tearDown(),this.unmount()}onFirstRender(){return Promise.all([this.provider.fetchPreAuthToken(),this.view.getFolder("root")])}render(e){return this.view.render(e)}};n(Ji,"GoogleDrive");Ji.VERSION=tP.version;var Gy={strings:{pluginNameInstagram:"Instagram"}};var iP={version:"3.1.3"},Zi=class extends Z{constructor(e,t){super(e,t),this.id=this.opts.id||"Instagram",be.initPlugin(this,t),this.icon=()=>u("svg",{"aria-hidden":"true",focusable:"false",width:"32",height:"32",viewBox:"0 0 32 32"},u("defs",null,u("path",{d:"M16.825 5l.483-.001.799.002c1.168.005 1.598.021 2.407.057 1.17.05 1.97.235 2.67.506.725.28 1.34.655 1.951 1.265.613.61.99 1.223 1.273 1.946.273.7.46 1.498.516 2.67l.025.552.008.205c.029.748.037 1.51.042 3.777l.001.846v.703l-.001.398a50.82 50.82 0 01-.058 2.588c-.05 1.17-.235 1.97-.506 2.67a5.394 5.394 0 01-1.265 1.951c-.61.613-1.222.99-1.946 1.273-.699.273-1.498.46-2.668.516-.243.012-.451.022-.656.03l-.204.007c-.719.026-1.512.034-3.676.038l-.847.001h-1.1a50.279 50.279 0 01-2.587-.059c-1.171-.05-1.971-.235-2.671-.506a5.394 5.394 0 01-1.951-1.265 5.385 5.385 0 01-1.272-1.946c-.274-.699-.46-1.498-.517-2.668a88.15 88.15 0 01-.03-.656l-.007-.205c-.026-.718-.034-1.512-.038-3.674v-2.129c.006-1.168.022-1.597.058-2.406.051-1.171.235-1.971.506-2.672a5.39 5.39 0 011.265-1.95 5.381 5.381 0 011.946-1.272c.699-.274 1.498-.462 2.669-.517l.656-.03.204-.007c.718-.026 1.511-.034 3.674-.038zm.678 1.981h-1.226l-.295.001c-2.307.005-3.016.013-3.777.043l-.21.009-.457.02c-1.072.052-1.654.232-2.042.383-.513.2-.879.44-1.263.825a3.413 3.413 0 00-.82 1.267c-.15.388-.33.97-.375 2.043a48.89 48.89 0 00-.056 2.482v.398 1.565c.006 2.937.018 3.285.073 4.444.05 1.073.231 1.654.382 2.043.2.512.44.878.825 1.263.386.383.753.621 1.267.82.388.15.97.328 2.043.374.207.01.388.017.563.024l.208.007a63.28 63.28 0 002.109.026h1.564c2.938-.006 3.286-.019 4.446-.073 1.071-.051 1.654-.232 2.04-.383.514-.2.88-.44 1.264-.825.384-.386.622-.753.82-1.266.15-.389.328-.971.375-2.044.039-.88.054-1.292.057-2.723v-1.15-.572c-.006-2.936-.019-3.284-.074-4.445-.05-1.071-.23-1.654-.382-2.04-.2-.515-.44-.88-.825-1.264a3.405 3.405 0 00-1.267-.82c-.388-.15-.97-.328-2.042-.375a48.987 48.987 0 00-2.535-.056zm-1.515 3.37a5.65 5.65 0 11.021 11.299 5.65 5.65 0 01-.02-11.3zm.004 1.982a3.667 3.667 0 10.015 7.334 3.667 3.667 0 00-.015-7.334zm5.865-3.536a1.32 1.32 0 11.005 2.64 1.32 1.32 0 01-.005-2.64z",id:"a"})),u("g",{fill:"none","fill-rule":"evenodd"},u("mask",{id:"b",fill:"#fff"},u("use",{xlinkHref:"#a"})),u("image",{mask:"url(#b)",x:"4",y:"4",width:"24",height:"24",xlinkHref:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAALKADAAQAAAABAAAALAAAAAD8buejAAALZklEQVRYCVWZC2LbNhAFCRKykvP0bD1506SxRKIzbwHJoU3jv5h9WICU3P7+6zlG2zZvr8s/rW1tN7U0rMll8aDYufdzbLfc1JHmpv3jpPy8tsO+3O2s/O6YMSjTl/qdCds4mIIG60m8vdq2Z+phm2V4vAb9+o7BbZeuoM0NyYazvTvbvlN1MGjHUAesZ/IWWOsCeF0BOwAK4ITR0WYd/QKHEPv2DEymmorZtiubjOHEMYEzXmC9GMxu+95Kz+kuwxjDBKb8iUoCAdqZoAeyALreW6ZNx9Y4Jz8cLwjTZOEoR+HU05k2RzgP2iafGgfZiEdZbEr94zpX/xkPtDtGAxF+LRcgTsp9CAZg0rnEnXmPqFshY5vLnVWxLXO/bah2sZQgBZppGSe8NbjNPN5kc/WbIYEn8U+jXCOezT4zfgS1eoVEhceVeK74Fe4N6CoYEoLWykzHsd+GMAUqdTTVvvqT1uWqB3lVCLb12/ORAe8/5Zu9mp7lqoEFUCAFDIxqz7i1bq2AY1U9jqq2QK/7DYl+1AeZlAFcEc+U/jkRUqsvCHQ/nyGvjrOl6EuZWRWVGCKUMCkntQ5o+u2AZ3OxakbTcoBZnY0xhgGCUM4Kp1xtBTnBnXM5ASRms/Fs7d9OpX8bXN45pibQY/ML1MmA5G9CINBuCpdftexr6i2c5qd9J441LNJm3zk1GVusJ7v6mPJ7HPxJR0Li/vg9O1XHTEgvsQoSgExU0NnlLF0paK+6d06aOMKE2nCKV0ofNw4WsWmLsWrv6lPLnhGpr9E137QkHOMB/jh/T8MOqOadXarR44zPBW5NvDccnBxVmdK81+7RQ5p6qnQoRDZPh9+xWj0N2XpqxX1HzMty9UlFnKya/h3gulziAsyxwkSmpTIPB8vagKLyktRdDuBEHNGZMm4oCFWgjq31WPHpaC93gGNqpOpP4Ez4spa+nMNvhTWcuPKAJ79fqIxVoUvdjEG9qSy2WhpQlz61yG/gnKEA25IrIOYK6DIsQs2EE9LR/sTKq38Nd1y/X//FXG0QDHkEqSz3EYVV2dhb00rgLPSDcqmrScs55NNOD2zVqKmYnYTFnkACp520dkW5vBxK99BVzr792/iZ+VVo92UkKU2oG5WFTb6mNiA1H2C8KC0E44qaQleR3EQvQNwLrECOVAiSwM5gpF7nvDND0lZvYuQ9JbZfqdTrqCgwMcVrRS0z9QkLu9NWmkgEHb8p2zDRylj9VWA3lXD2vObEdWpT3w5MiFqQ1W/lteG4eipastxv2w+TeTBP0ypK84HiOW9fUzLcjRDwCW2b2VxmnGSKTX6uRSwMnC9YX4l05Mh2uwI+QVWdWUOSTWd5Xjjf7/tPYk2stSh053XTGN5RJMCMSajMcS8Trn3j/E1ajthlxCkmJXVi47PSUsyyq+jyexsayQNuv5GVYJaszprNsQD3RkgYiy49kFl2JlJJxlf8Uu/lpkq7+aWqzEzjr5cTVpFaJvSVr8AKRtiTlVPFk5t1nO30W+o6jrbAk76kxFa/tX+dom4C1wDPk03gqCw8HTBSxx4FHxIA+mh2pM3rKu5SNqBAuOSZnHzsB9JwW7DV/ge8dlVsOh375PvH8YO8EALU1HuecIC6qQgXifNuSx9XAoLaoGIYDjkWFrawX1U1XrknuMFw7QBSPtg79XovmBvwqnDICrhClEO6wgKFj9vPqJWlthUvdgH1DOA8+wFMexzQc5BUS1d1IsdBSjEv4Fe1LgBO1CpFPTpV1JuPSFNt4y/trzbtaUfwBWwM3/6JsrL6MSQYwLKXAm9YJBxsM8992MblZ63Gami0+rnwOMyPykVpQsyl9eYNOfVC6kRBkwaop//LgcAKWivkHF791g0JK5kMmCgKPas2QRkUFQsuTvm6R1946Wg95k764ZRLW59yO5UVGsawwELupCfAbdCuAwvcz5Xk18rIVEdgSRBRgO77R206QdXHuA2goaGiCQ0GmUfN1JlmFayjv0IcKGkfYt4HAj0yuQBRGDjzuS/rTmAf29Gov1S+FF7QBayNcpoBOEsMt3vFcIUC7VxOnE+pxmkgqEzduzwsPykrjBszCusgdarsRIAL6CM/KqsqcAf1vj8P1TXFyN6e5G8ao48fjKfDQJYizIdIfb+Xwp6Z2fE2C7mUfUEzMKqSBp4VUV1A49Sz1M2LzVzahEfyHUAcQNltR0nADYkBvHXDZQo8H9dQvHF7qhjPtSolBJ0A/vaLwdRz5YFFGoWBy8E/4aKcjqimaUBXXnjBpzOZnMlIVXsTVEBBUa+dD0BR0xVopgAD70psY0KjMHpmHB2kApea9o23NS83mpsref5OZet4U/0CMhSEDpwnxB9lVKSfk5djllXRFPizQmKcqMpnyZ3ycPntf96Ym9ChzU8vCQnhgWZ2UuySArw+cVBG4gqNCS6YoSEEziRWVStKUpe4FfCd91V0XA/qgOJuF7FpGjjyQgsFoNDtibp8cm+cyXxbB6zh4pMUO4H06yzsv4E/A6rg/uRJRnMRmrhMDIhyOjABX9CMDFhBFxx19KujjqWeim5PwVFU6IBiewfyk7IPETcg52kjXN7nsbaoEykKf/cjUgVxpTZZVtnqFMgv4FHa8oSOisawinMLHfUBzJcK1j8BeqquedKDtgcgnA4bym4P6gBWYVM3W/pn41ku5L4RElFWtlk5SXHEThhOWDiIyVROlQNM+wyHimlgATI/PPIm4BB8qfqwHnhgL89gzs+Ww1xQb4821SZ/4IwOJiRqH/X9u7Hj08JLSZfawOQcpRzwgk1oBNzzcgLn1FBNHspMENik9OG4awIDaUjw9rKNT1KXPl9neua6sSbkgqfs/CNfBdNfDDhQuL4AKXEXeOgZID91eOiRUnEFOIA5rnTkBU0/IT05gByoq5KBJF4Hym4Pxh3UcxZ7HjdhEhKWURbhavNR9rjLBwk3ryDcrGzfvk9I69b1yhMGWQ4bqMwv/RMSplQkjjVKXzZX8wESVcuB7QG0YUCMjk/aOmWgc/vC4oMCVYfghIGP6MT1zpeUhM1rQzOnGxmFKwTCir1Xaj5vN7T7nDZvnbDGHbCKnwji2zofNsOvbold3zlUtKGosBun3PbJSrrReHEaCQVCIDEMaCCBs+P+AbybkbIhmbNecGwF+E5/L2ECuPKCWsUESQkKnyyJ93TGACk7OrAY9P8XG//fGCoM7DAEUGnj5Mw7aQfelySWOm9iPuFyvrL8rKQR6mM6qdCUDQsfNPVu4yv/HaPOT1e/yDaviMKmTkg/I/F7MUG9OlrmDrBLRVd3c8KBJlPEKoVRcIJuhoQAmZDUkPC00W5OI1dOpQ1F61kFNqr9SmFcaHdBheOaDHF6QZMOP6QyiZ804oj98wLiAMIgcWw4UDYkDAWfR+4d5s0zP2GgUZX04i+NeSgYGokvbDhIZYUWHgd9K8zZzir264NxZUFbsfM1jdqpV2naA48tx6hsvBSabE4IMtlcOGgq8PqCjoly2rw2soqy4RJWQtPZl6PUCU14ZUWENuZV2Honn3f+k6R6wrkqgTStyQ0bFY+XAaafMRFgUlVeXxXFUcpLEYfZz3FrVUzZrOOJK+4B/wnIZ8TGRvb9OB8EUM0w8uNYj/oa9iK9AMoy6gA72o02srMxpAPUD+EDnVEF7P5xw896VyAbFk8MgnpVpR3gfLnt/wECq3rYFvYLcKCpqvcI+/hVl8AumXDeApklDRRKJSS+KOaq1Rgg4igOYtiQK1hJy46TBtDjznDp3iqJff5j0/LfSZbYVdauqXccJ9W+czupp0sU9gMlqkQ52lU1E6tUwoDUukAD6YRpAwqDrAErzA8QCRvXm98KEep0xIdY1CN1ye27IP0IHvvYIW18qGz8S7VWUZuMkUOb3P8DHTl67ur/i1UAAAAASUVORK5CYII="}))),this.defaultLocale=Gy,this.i18nInit(),this.title=this.i18n("pluginNameInstagram"),this.provider=new be(e,{companionUrl:this.opts.companionUrl,companionHeaders:this.opts.companionHeaders,companionKeysParams:this.opts.companionKeysParams,companionCookiesRule:this.opts.companionCookiesRule,provider:"instagram",pluginId:this.id}),this.onFirstRender=this.onFirstRender.bind(this),this.render=this.render.bind(this)}install(){this.view=new Te(this,{provider:this.provider,viewType:"grid",showTitles:!1,showFilter:!1,showBreadcrumbs:!1});let{target:e}=this.opts;e&&this.mount(e,this)}uninstall(){this.view.tearDown(),this.unmount()}onFirstRender(){return Promise.all([this.provider.fetchPreAuthToken(),this.view.getFolder("recent")])}render(e){return this.view.render(e)}};n(Zi,"Instagram");Zi.VERSION=iP.version;var Ky={strings:{pluginNameOneDrive:"OneDrive"}};var rP={version:"3.1.4"},er=class extends Z{constructor(e,t){super(e,t),this.id=this.opts.id||"OneDrive",be.initPlugin(this,t),this.title=this.opts.title||"OneDrive",this.icon=()=>u("svg",{"aria-hidden":"true",focusable:"false",width:"32",height:"32",viewBox:"0 0 32 32"},u("g",{fill:"none",fillRule:"nonzero"},u("path",{d:"M13.39 12.888l4.618 2.747 2.752-1.15a4.478 4.478 0 012.073-.352 6.858 6.858 0 00-5.527-5.04 6.895 6.895 0 00-6.876 2.982l.07-.002a5.5 5.5 0 012.89.815z",fill:"#0364B8"}),u("path",{d:"M13.39 12.887v.001a5.5 5.5 0 00-2.89-.815l-.07.002a5.502 5.502 0 00-4.822 2.964 5.43 5.43 0 00.38 5.62l4.073-1.702 1.81-.757 4.032-1.685 2.105-.88-4.619-2.748z",fill:"#0078D4"}),u("path",{d:"M22.833 14.133a4.479 4.479 0 00-2.073.352l-2.752 1.15.798.475 2.616 1.556 1.141.68 3.902 2.321a4.413 4.413 0 00-.022-4.25 4.471 4.471 0 00-3.61-2.284z",fill:"#1490DF"}),u("path",{d:"M22.563 18.346l-1.141-.68-2.616-1.556-.798-.475-2.105.88L11.87 18.2l-1.81.757-4.073 1.702A5.503 5.503 0 0010.5 23h12.031a4.472 4.472 0 003.934-2.333l-3.902-2.321z",fill:"#28A8EA"}))),this.provider=new be(e,{companionUrl:this.opts.companionUrl,companionHeaders:this.opts.companionHeaders,companionCookiesRule:this.opts.companionCookiesRule,provider:"onedrive",pluginId:this.id}),this.defaultLocale=Ky,this.i18nInit(),this.title=this.i18n("pluginNameOneDrive"),this.onFirstRender=this.onFirstRender.bind(this),this.render=this.render.bind(this)}install(){this.view=new Te(this,{provider:this.provider,loadAllFiles:!0});let{target:e}=this.opts;e&&this.mount(e,this)}uninstall(){this.view.tearDown(),this.unmount()}onFirstRender(){return Promise.all([this.provider.fetchPreAuthToken(),this.view.getFolder()])}render(e){return this.view.render(e)}};n(er,"OneDrive");er.VERSION=rP.version;var sP={version:"3.2.3"},tr=class extends Z{constructor(e,t){if(super(e,t),this.id=this.opts.id||"Unsplash",this.title=this.opts.title||"Unsplash",be.initPlugin(this,t,{}),this.icon=()=>u("svg",{className:"uppy-DashboardTab-iconUnsplash",viewBox:"0 0 32 32",height:"32",width:"32","aria-hidden":"true"},u("g",{fill:"currentcolor"},u("path",{d:"M46.575 10.883v-9h12v9zm12 5h10v18h-32v-18h10v9h12z"}),u("path",{d:"M13 12.5V8h6v4.5zm6 2.5h5v9H8v-9h5v4.5h6z"}))),!this.opts.companionUrl)throw new Error("Companion hostname is required, please consult https://uppy.io/docs/companion");this.hostname=this.opts.companionUrl,this.provider=new Yr(e,{companionUrl:this.opts.companionUrl,companionHeaders:this.opts.companionHeaders,companionCookiesRule:this.opts.companionCookiesRule,provider:"unsplash",pluginId:this.id})}install(){this.view=new ji(this,{provider:this.provider,viewType:"unsplash",showFilter:!0});let{target:e}=this.opts;e&&this.mount(e,this)}onFirstRender(){}render(e){return this.view.render(e)}uninstall(){this.unmount()}};n(tr,"Unsplash");tr.VERSION=sP.version;function Xy(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError("attempted to use private field on non-instance");return i}n(Xy,"_classPrivateFieldLooseBase");var oP=0;function nP(i){return"__private_"+oP+++"_"+i}n(nP,"_classPrivateFieldLooseKey");var Pa=nP("handleSubmit"),Iu=class extends we{constructor(e){super(e),this.form=document.createElement("form"),Object.defineProperty(this,Pa,{writable:!0,value:t=>{t.preventDefault();let{addFile:r}=this.props,s=this.input.value.trim();r(s)}}),this.form.id=Pt()}componentDidMount(){this.input.value="",this.form.addEventListener("submit",Xy(this,Pa)[Pa]),document.body.appendChild(this.form)}componentWillUnmount(){this.form.removeEventListener("submit",Xy(this,Pa)[Pa]),document.body.removeChild(this.form)}render(){let{i18n:e}=this.props;return u("div",{className:"uppy-Url"},u("input",{className:"uppy-u-reset uppy-c-textInput uppy-Url-input",type:"text","aria-label":e("enterUrlToImport"),placeholder:e("enterUrlToImport"),ref:t=>{this.input=t},"data-uppy-super-focusable":!0,form:this.form.id}),u("button",{className:"uppy-u-reset uppy-c-btn uppy-c-btn-primary uppy-Url-importButton",type:"submit",form:this.form.id},e("import")))}};n(Iu,"UrlUI");var Yy=Iu;function Nu(i,e,t){let r=Qe(i.items),s;switch(e){case"paste":{if(r.some(a=>a.kind==="file"))return;s=r.filter(a=>a.kind==="string"&&a.type==="text/plain");break}case"drop":{s=r.filter(o=>o.kind==="string"&&o.type==="text/uri-list");break}default:throw new Error(`isDropOrPaste must be either 'drop' or 'paste', but it's ${e}`)}s.forEach(o=>{o.getAsString(a=>t(a))})}n(Nu,"forEachDroppedOrPastedUrl");var Qy={strings:{import:"Import",enterUrlToImport:"Enter URL to import a file",failedToFetch:"Companion failed to fetch this URL, please make sure it\u2019s correct",enterCorrectUrl:"Incorrect URL: Please make sure you are entering a direct link to a file"}};var aP={version:"3.4.0"};function lP(){return u("svg",{"aria-hidden":"true",focusable:"false",width:"32",height:"32",viewBox:"0 0 32 32"},u("path",{d:"M23.637 15.312l-2.474 2.464a3.582 3.582 0 01-.577.491c-.907.657-1.897.986-2.968.986a4.925 4.925 0 01-3.959-1.971c-.248-.329-.164-.902.165-1.149.33-.247.907-.164 1.155.164 1.072 1.478 3.133 1.724 4.618.656a.642.642 0 00.33-.328l2.473-2.463c1.238-1.313 1.238-3.366-.082-4.597a3.348 3.348 0 00-4.618 0l-1.402 1.395a.799.799 0 01-1.154 0 .79.79 0 010-1.15l1.402-1.394a4.843 4.843 0 016.843 0c2.062 1.805 2.144 5.007.248 6.896zm-8.081 5.664l-1.402 1.395a3.348 3.348 0 01-4.618 0c-1.319-1.23-1.319-3.365-.082-4.596l2.475-2.464.328-.328c.743-.492 1.567-.739 2.475-.657.906.165 1.648.574 2.143 1.314.248.329.825.411 1.155.165.33-.248.412-.822.165-1.15-.825-1.068-1.98-1.724-3.216-1.888-1.238-.247-2.556.082-3.628.902l-.495.493-2.474 2.464c-1.897 1.969-1.814 5.09.083 6.977.99.904 2.226 1.396 3.463 1.396s2.473-.492 3.463-1.395l1.402-1.396a.79.79 0 000-1.15c-.33-.328-.908-.41-1.237-.082z",fill:"#FF753E","fill-rule":"nonzero"}))}n(lP,"UrlIcon");function uP(i){let e=/^[a-z0-9]+:\/\//,t="http://";return e.test(i)?i:t+i}n(uP,"addProtocolToURL");function hP(i){return Qe(i.dataTransfer.items).filter(r=>r.kind==="string"&&r.type==="text/uri-list").length>0}n(hP,"canHandleRootDrop");function dP(i){if(!i)return!1;let e=i.match(/^([a-z0-9]+):\/\//)[1];return!(e!=="http"&&e!=="https")}n(dP,"checkIfCorrectURL");function cP(i){let{pathname:e}=new URL(i);return e.substring(e.lastIndexOf("/")+1)}n(cP,"getFileNameFromUrl");var Ti=class extends Z{constructor(e,t){super(e,t),this.id=this.opts.id||"Url",this.title=this.opts.title||"Link",this.type="acquirer",this.icon=()=>u(lP,null),this.defaultLocale=Qy;let r={};if(this.opts={...r,...t},this.i18nInit(),this.hostname=this.opts.companionUrl,!this.hostname)throw new Error("Companion hostname is required, please consult https://uppy.io/docs/companion");this.getMeta=this.getMeta.bind(this),this.addFile=this.addFile.bind(this),this.handleRootDrop=this.handleRootDrop.bind(this),this.handleRootPaste=this.handleRootPaste.bind(this),this.client=new tt(e,{companionUrl:this.opts.companionUrl,companionHeaders:this.opts.companionHeaders,companionCookiesRule:this.opts.companionCookiesRule})}getMeta(e){return this.client.post("url/meta",{url:e}).then(t=>{if(t.error)throw this.uppy.log("[URL] Error:"),this.uppy.log(t.error),new Error("Failed to fetch the file");return t})}async addFile(e,t){t===void 0&&(t=void 0);let r=uP(e);if(!dP(r)){this.uppy.log(`[URL] Incorrect URL entered: ${r}`),this.uppy.info(this.i18n("enterCorrectUrl"),"error",4e3);return}try{let s=await this.getMeta(r),o={meta:t,source:this.id,name:s.name||cP(r),type:s.type,data:{size:s.size},isRemote:!0,body:{url:r},remote:{companionUrl:this.opts.companionUrl,url:`${this.hostname}/url/get`,body:{fileId:r,url:r}}};Object.defineProperty(o.remote,"requestClient",{value:this.client,enumerable:!1}),this.uppy.log("[Url] Adding remote file");try{return this.uppy.addFile(o)}catch(a){return a.isRestriction||this.uppy.log(a),a}}catch(s){return this.uppy.log(s),this.uppy.info({message:this.i18n("failedToFetch"),details:s},"error",4e3),s}}handleRootDrop(e){Nu(e.dataTransfer,"drop",t=>{this.uppy.log(`[URL] Adding file from dropped url: ${t}`),this.addFile(t)})}handleRootPaste(e){Nu(e.clipboardData,"paste",t=>{this.uppy.log(`[URL] Adding file from pasted url: ${t}`),this.addFile(t)})}render(){return u(Yy,{i18n:this.i18n,addFile:this.addFile})}install(){let{target:e}=this.opts;e&&this.mount(e,this)}uninstall(){this.unmount()}};n(Ti,"Url");Ti.VERSION=aP.version;Ti.prototype.canHandleRootDrop=hP;var Jy={strings:{pluginNameZoom:"Zoom"}};var pP={version:"2.1.3"},ir=class extends Z{constructor(e,t){super(e,t),this.id=this.opts.id||"Zoom",be.initPlugin(this,t),this.title=this.opts.title||"Zoom",this.icon=()=>u("svg",{"aria-hidden":"true",focusable:"false",width:"32",height:"32",viewBox:"0 0 32 32"},u("path",{d:"M24.5 11.125l-2.75 2.063c-.473.353-.75.91-.75 1.5v3.124c0 .59.277 1.147.75 1.5l2.75 2.063a.938.938 0 001.5-.75v-8.75a.938.938 0 00-1.5-.75zm-4.75 9.5c0 1.035-.84 1.875-1.875 1.875H9.75A3.75 3.75 0 016 18.75v-6.875C6 10.84 6.84 10 7.875 10H16a3.75 3.75 0 013.75 3.75v6.875z",fill:"#2E8CFF","fill-rule":"evenodd"})),this.provider=new be(e,{companionUrl:this.opts.companionUrl,companionHeaders:this.opts.companionHeaders,companionKeysParams:this.opts.companionKeysParams,companionCookiesRule:this.opts.companionCookiesRule,provider:"zoom",pluginId:this.id}),this.defaultLocale=Jy,this.i18nInit(),this.title=this.i18n("pluginNameZoom"),this.onFirstRender=this.onFirstRender.bind(this),this.render=this.render.bind(this)}install(){this.view=new Te(this,{provider:this.provider});let{target:e}=this.opts;e&&this.mount(e,this)}uninstall(){this.view.tearDown(),this.unmount()}onFirstRender(){return Promise.all([this.provider.fetchPreAuthToken(),this.view.getFolder()])}render(e){return this.view.render(e)}};n(ir,"Zoom");ir.VERSION=pP.version;function nc(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError("attempted to use private field on non-instance");return i}n(nc,"_classPrivateFieldLooseBase");var fP=0;function mP(i){return"__private_"+fP+++"_"+i}n(mP,"_classPrivateFieldLooseKey");var gP={version:"1.1.0"},ac={__proto__:null,Box:Xi,Dropbox:Yi,Facebook:Qi,GoogleDrive:Ji,Instagram:Zi,OneDrive:er,Unsplash:tr,Url:Ti,Zoom:ir},Bs=mP("installedPlugins"),zs=class extends ve{constructor(e,t){super(e,t),Object.defineProperty(this,Bs,{writable:!0,value:new Set}),this.id=this.opts.id||"RemoteSources",this.type="preset";let r={sources:Object.keys(ac)};if(this.opts={...r,...t},this.opts.companionUrl==null)throw new Error("Please specify companionUrl for RemoteSources to work, see https://uppy.io/docs/remote-sources#companionUrl")}setOptions(e){this.uninstall(),super.setOptions(e),this.install()}install(){this.opts.sources.forEach(e=>{let t={...this.opts,sources:void 0},r=ac[e];if(r==null){let s=Object.keys(ac),o=new Intl.ListFormat("en",{style:"long",type:"disjunction"});throw new Error(`Invalid plugin: "${e}" is not one of: ${o.format(s)}.`)}this.uppy.use(r,t),nc(this,Bs)[Bs].add(this.uppy.getPlugin(e))})}uninstall(){for(let e of nc(this,Bs)[Bs])this.uppy.removePlugin(e);nc(this,Bs)[Bs].clear()}};n(zs,"RemoteSources");zs.VERSION=gP.version;var Zy=n(()=>u("svg",{className:"uppy-DashboardTab-iconScreenRec","aria-hidden":"true",focusable:"false",width:"32",height:"32",viewBox:"0 0 32 32"},u("g",{fill:"currentcolor",fillRule:"evenodd"},u("path",{d:"M24.182 9H7.818C6.81 9 6 9.742 6 10.667v10c0 .916.81 1.666 1.818 1.666h4.546V24h7.272v-1.667h4.546c1 0 1.809-.75 1.809-1.666l.009-10C26 9.742 25.182 9 24.182 9zM24 21H8V11h16v10z"}),u("circle",{cx:"16",cy:"16",r:"2"}))),"default");function lc(i){let{recording:e,onStartRecording:t,onStopRecording:r,i18n:s}=i;return e?u("button",{className:"uppy-u-reset uppy-c-btn uppy-ScreenCapture-button uppy-ScreenCapture-button--video uppy-ScreenCapture-button--stop-rec",type:"button",title:s("stopCapturing"),"aria-label":s("stopCapturing"),onClick:r,"data-uppy-super-focusable":!0},u("svg",{"aria-hidden":"true",focusable:"false",className:"uppy-c-icon",width:"100",height:"100",viewBox:"0 0 100 100"},u("rect",{x:"15",y:"15",width:"70",height:"70"}))):u("button",{className:"uppy-u-reset uppy-c-btn uppy-ScreenCapture-button uppy-ScreenCapture-button--video",type:"button",title:s("startCapturing"),"aria-label":s("startCapturing"),onClick:t,"data-uppy-super-focusable":!0},u("svg",{"aria-hidden":"true",focusable:"false",className:"uppy-c-icon",width:"100",height:"100",viewBox:"0 0 100 100"},u("circle",{cx:"50",cy:"50",r:"40"})))}n(lc,"RecordButton");function uc(i){let{recording:e,recordedVideo:t,onSubmit:r,i18n:s}=i;return t&&!e?u("button",{className:"uppy-u-reset uppy-c-btn uppy-ScreenCapture-button uppy-ScreenCapture-button--submit",type:"button",title:s("submitRecordedFile"),"aria-label":s("submitRecordedFile"),onClick:r,"data-uppy-super-focusable":!0},u("svg",{width:"12",height:"9",viewBox:"0 0 12 9",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",className:"uppy-c-icon"},u("path",{fill:"#fff",fillRule:"nonzero",d:"M10.66 0L12 1.31 4.136 9 0 4.956l1.34-1.31L4.136 6.38z"}))):null}n(uc,"SubmitButton");var Mu=class extends we{constructor(e){super(e),this.state={elapsedTime:0},this.wrapperStyle={width:"100%",height:"100%",display:"flex"},this.overlayStyle={position:"absolute",width:"100%",height:"100%",background:"black",opacity:.7},this.infoContainerStyle={marginLeft:"auto",marginRight:"auto",marginTop:"auto",marginBottom:"auto",zIndex:1,color:"white"},this.infotextStyle={marginLeft:"auto",marginRight:"auto",marginBottom:"1rem",fontSize:"1.5rem"},this.timeStyle={display:"block",fontWeight:"bold",marginLeft:"auto",marginRight:"auto",fontSize:"3rem",fontFamily:"Courier New"}}startTimer(){this.timerTick(),this.timerRunning=!0}resetTimer(){clearTimeout(this.timer),this.setState({elapsedTime:0}),this.timerRunning=!1}timerTick(){this.timer=setTimeout(()=>{this.setState(e=>({elapsedTime:e.elapsedTime+1})),this.timerTick()},1e3)}fmtMSS(e){return(e-(e%=60))/60+(e>9?":":":0")+e}render(){let{recording:e,i18n:t}={...this.props},{elapsedTime:r}=this.state,s=this.fmtMSS(r);return e&&!this.timerRunning&&this.startTimer(),!e&&this.timerRunning&&this.resetTimer(),e?u("div",{style:this.wrapperStyle},u("div",{style:this.overlayStyle}),u("div",{style:this.infoContainerStyle},u("div",{style:this.infotextStyle},t("recording")),u("div",{style:this.timeStyle},s))):null}};n(Mu,"StopWatch");var ev=Mu;var tv=n(i=>{let{streamActive:e,i18n:t}=i;return e?u("div",{title:t("streamActive"),"aria-label":t("streamActive"),className:"uppy-ScreenCapture-icon--stream uppy-ScreenCapture-icon--streamActive"},u("svg",{"aria-hidden":"true",focusable:"false",width:"24",height:"24",viewBox:"0 0 24 24"},u("path",{d:"M0 0h24v24H0z",opacity:".1",fill:"none"}),u("path",{d:"M0 0h24v24H0z",fill:"none"}),u("path",{d:"M1 18v3h3c0-1.66-1.34-3-3-3zm0-4v2c2.76 0 5 2.24 5 5h2c0-3.87-3.13-7-7-7zm18-7H5v1.63c3.96 1.28 7.09 4.41 8.37 8.37H19V7zM1 10v2c4.97 0 9 4.03 9 9h2c0-6.08-4.93-11-11-11zm20-7H3c-1.1 0-2 .9-2 2v3h2V5h18v14h-7v2h7c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"}))):u("div",{title:t("streamPassive"),"aria-label":t("streamPassive"),className:"uppy-ScreenCapture-icon--stream"},u("svg",{"aria-hidden":"true",focusable:"false",width:"24",height:"24",viewBox:"0 0 24 24"},u("path",{d:"M0 0h24v24H0z",opacity:".1",fill:"none"}),u("path",{d:"M0 0h24v24H0z",fill:"none"}),u("path",{d:"M21 3H3c-1.1 0-2 .9-2 2v3h2V5h18v14h-7v2h7c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM1 18v3h3c0-1.66-1.34-3-3-3zm0-4v2c2.76 0 5 2.24 5 5h2c0-3.87-3.13-7-7-7zm0-4v2c4.97 0 9 4.03 9 9h2c0-6.08-4.93-11-11-11z"})))},"default");function hc(){return hc=Object.assign?Object.assign.bind():function(i){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[r]=t[r])}return i},hc.apply(this,arguments)}n(hc,"_extends");var Lu=class extends we{componentWillUnmount(){let{onStop:e}=this.props;e()}render(){let{recording:e,stream:t,recordedVideo:r}=this.props,s={playsinline:!0};return(e||!r&&!e)&&(s.muted=!0,s.autoplay=!0,s.srcObject=t),r&&!e&&(s.muted=!1,s.controls=!0,s.src=r,this.videoElement&&(this.videoElement.srcObject=void 0)),u("div",{className:"uppy uppy-ScreenCapture-container"},u("div",{className:"uppy-ScreenCapture-videoContainer"},u(tv,this.props),u("video",hc({ref:o=>{this.videoElement=o},className:"uppy-ScreenCapture-video"},s)),u(ev,this.props)),u("div",{className:"uppy-ScreenCapture-buttonContainer"},u(lc,this.props),u(uc,this.props)))}};n(Lu,"RecorderScreen");var iv=Lu;var rv={strings:{startCapturing:"Begin screen capturing",stopCapturing:"Stop screen capturing",submitRecordedFile:"Submit recorded file",streamActive:"Stream active",streamPassive:"Stream passive",micDisabled:"Microphone access denied by user",recording:"Recording"}};function dc(){return dc=Object.assign?Object.assign.bind():function(i){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[r]=t[r])}return i},dc.apply(this,arguments)}n(dc,"_extends");var yP={version:"3.1.3"};function vP(){var i;return window.MediaRecorder&&((i=navigator.mediaDevices)==null?void 0:i.getDisplayMedia)}n(vP,"isScreenRecordingSupported");function bP(){return window.MediaRecorder&&navigator.mediaDevices}n(bP,"getMediaDevices");var as=class extends Z{constructor(e,t){super(e,t),this.mediaDevices=bP(),this.protocol=location.protocol==="https:"?"https":"http",this.id=this.opts.id||"ScreenCapture",this.title=this.opts.title||"Screencast",this.type="acquirer",this.icon=Zy,this.defaultLocale=rv;let r={displayMediaConstraints:{video:{width:1280,height:720,frameRate:{ideal:3,max:5},cursor:"motion",displaySurface:"monitor"}},userMediaConstraints:{audio:!0},preferredVideoMimeType:"video/webm"};this.opts={...r,...t},this.i18nInit(),this.install=this.install.bind(this),this.setPluginState=this.setPluginState.bind(this),this.render=this.render.bind(this),this.start=this.start.bind(this),this.stop=this.stop.bind(this),this.startRecording=this.startRecording.bind(this),this.stopRecording=this.stopRecording.bind(this),this.submit=this.submit.bind(this),this.streamInterrupted=this.streamInactivated.bind(this),this.captureActive=!1,this.capturedMediaFile=null}install(){if(!vP())return this.uppy.log("Screen recorder access is not supported","warning"),null;this.setPluginState({streamActive:!1,audioStreamActive:!1});let{target:e}=this.opts;e&&this.mount(e,this)}uninstall(){this.videoStream&&this.stop(),this.unmount()}start(){return this.mediaDevices?(this.captureActive=!0,this.selectAudioStreamSource(),this.selectVideoStreamSource().then(e=>{e===!1&&this.parent&&this.parent.hideAllPanels&&(this.parent.hideAllPanels(),this.captureActive=!1)})):Promise.reject(new Error("Screen recorder access not supported"))}selectVideoStreamSource(){return this.videoStream?new Promise(e=>e(this.videoStream)):this.mediaDevices.getDisplayMedia(this.opts.displayMediaConstraints).then(e=>(this.videoStream=e,this.videoStream.addEventListener("inactive",()=>{this.streamInactivated()}),this.setPluginState({streamActive:!0}),e)).catch(e=>(this.setPluginState({screenRecError:e}),this.userDenied=!0,setTimeout(()=>{this.userDenied=!1},1e3),!1))}selectAudioStreamSource(){return this.audioStream?new Promise(e=>e(this.audioStream)):this.mediaDevices.getUserMedia(this.opts.userMediaConstraints).then(e=>(this.audioStream=e,this.setPluginState({audioStreamActive:!0}),e)).catch(e=>(e.name==="NotAllowedError"&&(this.uppy.info(this.i18n("micDisabled"),"error",5e3),this.uppy.log(this.i18n("micDisabled"),"warning")),!1))}startRecording(){let e={};this.capturedMediaFile=null,this.recordingChunks=[];let{preferredVideoMimeType:t}=this.opts;this.selectVideoStreamSource().then(r=>{t&&MediaRecorder.isTypeSupported(t)&&Ki(t)&&(e.mimeType=t);let s=[r.getVideoTracks()[0]];this.audioStream&&s.push(this.audioStream.getAudioTracks()[0]),this.outputStream=new MediaStream(s),this.recorder=new MediaRecorder(this.outputStream,e),this.recorder.addEventListener("dataavailable",o=>{this.recordingChunks.push(o.data)}),this.recorder.start(),this.setPluginState({recording:!0})}).catch(r=>{this.uppy.log(r,"error")})}streamInactivated(){let{recordedVideo:e,recording:t}={...this.getPluginState()};!e&&!t?this.parent&&this.parent.hideAllPanels&&this.parent.hideAllPanels():t&&(this.uppy.log("Capture stream inactive \u2014 stop recording"),this.stopRecording()),this.videoStream=null,this.audioStream=null,this.setPluginState({streamActive:!1,audioStreamActive:!1})}stopRecording(){return new Promise(t=>{this.recorder.addEventListener("stop",()=>{t()}),this.recorder.stop()}).then(()=>(this.setPluginState({recording:!1}),this.getVideo())).then(t=>{this.capturedMediaFile=t,this.setPluginState({recordedVideo:URL.createObjectURL(t.data)})}).then(()=>{this.recordingChunks=null,this.recorder=null},t=>{throw this.recordingChunks=null,this.recorder=null,t})}submit(){try{this.capturedMediaFile&&this.uppy.addFile(this.capturedMediaFile)}catch(e){e.isRestriction||this.uppy.log(e,"warning")}}stop(){this.videoStream&&(this.videoStream.getVideoTracks().forEach(e=>{e.stop()}),this.videoStream.getAudioTracks().forEach(e=>{e.stop()}),this.videoStream=null),this.audioStream&&(this.audioStream.getAudioTracks().forEach(e=>{e.stop()}),this.audioStream.getVideoTracks().forEach(e=>{e.stop()}),this.audioStream=null),this.outputStream&&(this.outputStream.getAudioTracks().forEach(e=>{e.stop()}),this.outputStream.getVideoTracks().forEach(e=>{e.stop()}),this.outputStream=null),this.setPluginState({recordedVideo:null}),this.captureActive=!1}getVideo(){let e=this.recordingChunks[0].type,t=Ki(e);if(!t)return Promise.reject(new Error(`Could not retrieve recording: Unsupported media type "${e}"`));let r=`screencap-${Date.now()}.${t}`,s=new Blob(this.recordingChunks,{type:e}),o={source:this.id,name:r,data:new Blob([s],{type:e}),type:e};return Promise.resolve(o)}render(){let e=this.getPluginState();return!e.streamActive&&!this.captureActive&&!this.userDenied&&this.start(),u(iv,dc({},e,{onStartRecording:this.startRecording,onStopRecording:this.stopRecording,onStop:this.stop,onSubmit:this.submit,i18n:this.i18n,stream:this.videoStream}))}};n(as,"ScreenCapture");as.VERSION=yP.version;var pv=de(sv(),1);function pc(i,e,t){return new Promise(r=>{i.toBlob(r,e,t)})}n(pc,"canvasToBlob");function fc(){return typeof MediaRecorder=="function"&&!!MediaRecorder.prototype&&typeof MediaRecorder.prototype.start=="function"}n(fc,"supportsMediaRecorder");var zu=n(()=>u("svg",{"aria-hidden":"true",focusable:"false",fill:"#0097DC",width:"66",height:"55",viewBox:"0 0 66 55"},u("path",{d:"M57.3 8.433c4.59 0 8.1 3.51 8.1 8.1v29.7c0 4.59-3.51 8.1-8.1 8.1H8.7c-4.59 0-8.1-3.51-8.1-8.1v-29.7c0-4.59 3.51-8.1 8.1-8.1h9.45l4.59-7.02c.54-.54 1.35-1.08 2.16-1.08h16.2c.81 0 1.62.54 2.16 1.08l4.59 7.02h9.45zM33 14.64c-8.62 0-15.393 6.773-15.393 15.393 0 8.62 6.773 15.393 15.393 15.393 8.62 0 15.393-6.773 15.393-15.393 0-8.62-6.773-15.393-15.393-15.393zM33 40c-5.648 0-9.966-4.319-9.966-9.967 0-5.647 4.318-9.966 9.966-9.966s9.966 4.319 9.966 9.966C42.966 35.681 38.648 40 33 40z",fillRule:"evenodd"})),"default");var ov=n(i=>{let{onSnapshot:e,i18n:t}=i;return u("button",{className:"uppy-u-reset uppy-c-btn uppy-Webcam-button uppy-Webcam-button--picture",type:"button",title:t("takePicture"),"aria-label":t("takePicture"),onClick:e,"data-uppy-super-focusable":!0},zu())},"default");function mc(i){let{recording:e,onStartRecording:t,onStopRecording:r,i18n:s}=i;return e?u("button",{className:"uppy-u-reset uppy-c-btn uppy-Webcam-button",type:"button",title:s("stopRecording"),"aria-label":s("stopRecording"),onClick:r,"data-uppy-super-focusable":!0},u("svg",{"aria-hidden":"true",focusable:"false",className:"uppy-c-icon",width:"100",height:"100",viewBox:"0 0 100 100"},u("rect",{x:"15",y:"15",width:"70",height:"70"}))):u("button",{className:"uppy-u-reset uppy-c-btn uppy-Webcam-button",type:"button",title:s("startRecording"),"aria-label":s("startRecording"),onClick:t,"data-uppy-super-focusable":!0},u("svg",{"aria-hidden":"true",focusable:"false",className:"uppy-c-icon",width:"100",height:"100",viewBox:"0 0 100 100"},u("circle",{cx:"50",cy:"50",r:"40"})))}n(mc,"RecordButton");function gc(i){return`${Math.floor(i/60)}:${String(i%60).padStart(2,0)}`}n(gc,"formatSeconds");function yc(i){let{recordingLengthSeconds:e,i18n:t}=i,r=gc(e);return u("span",{"aria-label":t("recordingLength",{recording_length:r})},r)}n(yc,"RecordingLength");var nv=n(i=>{let{currentDeviceId:e,videoSources:t,onChangeVideoSource:r}=i;return u("div",{className:"uppy-Webcam-videoSource"},u("select",{className:"uppy-u-reset uppy-Webcam-videoSource-select",onChange:s=>{r(s.target.value)}},t.map(s=>u("option",{key:s.deviceId,value:s.deviceId,selected:s.deviceId===e},s.label))))},"default");function _P(i){let{onSubmit:e,i18n:t}=i;return u("button",{className:"uppy-u-reset uppy-c-btn uppy-Webcam-button uppy-Webcam-button--submit",type:"button",title:t("submitRecordedFile"),"aria-label":t("submitRecordedFile"),onClick:e,"data-uppy-super-focusable":!0},u("svg",{width:"12",height:"9",viewBox:"0 0 12 9",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",className:"uppy-c-icon"},u("path",{fill:"#fff",fillRule:"nonzero",d:"M10.66 0L12 1.31 4.136 9 0 4.956l1.34-1.31L4.136 6.38z"})))}n(_P,"SubmitButton");var av=_P;function xP(i){let{onDiscard:e,i18n:t}=i;return u("button",{className:"uppy-u-reset uppy-c-btn uppy-Webcam-button uppy-Webcam-button--discard",type:"button",title:t("discardRecordedFile"),"aria-label":t("discardRecordedFile"),onClick:e,"data-uppy-super-focusable":!0},u("svg",{width:"13",height:"13",viewBox:"0 0 13 13",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",className:"uppy-c-icon"},u("g",{fill:"#FFF",fillRule:"evenodd"},u("path",{d:"M.496 11.367L11.103.76l1.414 1.414L1.911 12.781z"}),u("path",{d:"M11.104 12.782L.497 2.175 1.911.76l10.607 10.606z"}))))}n(xP,"DiscardButton");var lv=xP;function vc(){return vc=Object.assign?Object.assign.bind():function(i){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[r]=t[r])}return i},vc.apply(this,arguments)}n(vc,"_extends");function ju(i,e){return i.includes(e)}n(ju,"isModeAvailable");var Hu=class extends we{componentDidMount(){let{onFocus:e}=this.props;e()}componentWillUnmount(){let{onStop:e}=this.props;e()}render(){let{src:e,recordedVideo:t,recording:r,modes:s,supportsRecording:o,videoSources:a,showVideoSourceDropdown:l,showRecordingLength:h,onSubmit:p,i18n:d,mirror:f,onSnapshot:y,onStartRecording:b,onStopRecording:S,onDiscardRecordedVideo:E,recordingLengthSeconds:x}=this.props,F=!!t,U=!F&&o&&(ju(s,"video-only")||ju(s,"audio-only")||ju(s,"video-audio")),j=!F&&ju(s,"picture"),G=o&&h&&!F,J=l&&a&&a.length>1,B={playsinline:!0};return t?(B.muted=!1,B.controls=!0,B.src=t,this.videoElement&&(this.videoElement.srcObject=void 0)):(B.muted=!0,B.autoplay=!0,B.srcObject=e),u("div",{className:"uppy uppy-Webcam-container"},u("div",{className:"uppy-Webcam-videoContainer"},u("video",vc({ref:z=>this.videoElement=z,className:`uppy-Webcam-video ${f?"uppy-Webcam-video--mirrored":""}`},B))),u("div",{className:"uppy-Webcam-footer"},u("div",{className:"uppy-Webcam-videoSourceContainer"},J?nv(this.props):null),u("div",{className:"uppy-Webcam-buttonContainer"},j&&u(ov,{onSnapshot:y,i18n:d}),U&&u(mc,{recording:r,onStartRecording:b,onStopRecording:S,i18n:d}),F&&u(av,{onSubmit:p,i18n:d}),F&&u(lv,{onDiscard:E,i18n:d})),u("div",{className:"uppy-Webcam-recordingLength"},G&&u(yc,{recordingLengthSeconds:x,i18n:d}))))}};n(Hu,"CameraScreen");var uv=Hu;var hv=n(i=>{let{icon:e,i18n:t,hasCamera:r}=i;return u("div",{className:"uppy-Webcam-permissons"},u("div",{className:"uppy-Webcam-permissonsIcon"},e()),u("h1",{className:"uppy-Webcam-title"},t(r?"allowAccessTitle":"noCameraTitle")),u("p",null,t(r?"allowAccessDescription":"noCameraDescription")))},"default");var dv={strings:{pluginNameCamera:"Camera",noCameraTitle:"Camera Not Available",noCameraDescription:"In order to take pictures or record video, please connect a camera device",recordingStoppedMaxSize:"Recording stopped because the file size is about to exceed the limit",submitRecordedFile:"Submit recorded file",discardRecordedFile:"Discard recorded file",smile:"Smile!",takePicture:"Take a picture",startRecording:"Begin video recording",stopRecording:"Stop video recording",recordingLength:"Recording length %{recording_length}",allowAccessTitle:"Please allow access to your camera",allowAccessDescription:"In order to take pictures or record video with your camera, please allow camera access for this site."}};function wc(){return wc=Object.assign?Object.assign.bind():function(i){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[r]=t[r])}return i},wc.apply(this,arguments)}n(wc,"_extends");function _a(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError("attempted to use private field on non-instance");return i}n(_a,"_classPrivateFieldLooseBase");var FP=0;function EP(i){return"__private_"+FP+++"_"+i}n(EP,"_classPrivateFieldLooseKey");var OP={version:"3.3.4"};function cv(i){return i[0]==="."?fn[i.slice(1)]:i}n(cv,"toMimeType");function CP(i){return/^video\/[^*]+$/.test(i)}n(CP,"isVideoMimeType");function TP(i){return/^image\/[^*]+$/.test(i)}n(TP,"isImageMimeType");function AP(){return navigator.mediaDevices}n(AP,"getMediaDevices");function bc(i,e){return i.includes(e)}n(bc,"isModeAvailable");var Ai=EP("enableMirror"),ls=class extends Z{constructor(e,t){super(e,t),Object.defineProperty(this,Ai,{writable:!0,value:void 0}),this.mediaDevices=AP(),this.supportsUserMedia=!!this.mediaDevices,this.protocol=location.protocol.match(/https/i)?"https":"http",this.id=this.opts.id||"Webcam",this.type="acquirer",this.capturedMediaFile=null,this.icon=()=>u("svg",{"aria-hidden":"true",focusable:"false",width:"32",height:"32",viewBox:"0 0 32 32"},u("path",{d:"M23.5 9.5c1.417 0 2.5 1.083 2.5 2.5v9.167c0 1.416-1.083 2.5-2.5 2.5h-15c-1.417 0-2.5-1.084-2.5-2.5V12c0-1.417 1.083-2.5 2.5-2.5h2.917l1.416-2.167C13 7.167 13.25 7 13.5 7h5c.25 0 .5.167.667.333L20.583 9.5H23.5zM16 11.417a4.706 4.706 0 00-4.75 4.75 4.704 4.704 0 004.75 4.75 4.703 4.703 0 004.75-4.75c0-2.663-2.09-4.75-4.75-4.75zm0 7.825c-1.744 0-3.076-1.332-3.076-3.074 0-1.745 1.333-3.077 3.076-3.077 1.744 0 3.074 1.333 3.074 3.076s-1.33 3.075-3.074 3.075z",fill:"#02B383",fillRule:"nonzero"})),this.defaultLocale=dv;let r={onBeforeSnapshot:()=>Promise.resolve(),countdown:!1,modes:["video-audio","video-only","audio-only","picture"],mirror:!0,showVideoSourceDropdown:!1,facingMode:"user",videoConstraints:void 0,preferredImageMimeType:null,preferredVideoMimeType:null,showRecordingLength:!1,mobileNativeCamera:(0,pv.default)({tablet:!0})};this.opts={...r,...t},this.i18nInit(),this.title=this.i18n("pluginNameCamera"),_a(this,Ai)[Ai]=this.opts.mirror,this.install=this.install.bind(this),this.setPluginState=this.setPluginState.bind(this),this.render=this.render.bind(this),this.start=this.start.bind(this),this.stop=this.stop.bind(this),this.takeSnapshot=this.takeSnapshot.bind(this),this.startRecording=this.startRecording.bind(this),this.stopRecording=this.stopRecording.bind(this),this.discardRecordedVideo=this.discardRecordedVideo.bind(this),this.submit=this.submit.bind(this),this.oneTwoThreeSmile=this.oneTwoThreeSmile.bind(this),this.focus=this.focus.bind(this),this.changeVideoSource=this.changeVideoSource.bind(this),this.webcamActive=!1,this.opts.countdown&&(this.opts.onBeforeSnapshot=this.oneTwoThreeSmile),this.setPluginState({hasCamera:!1,cameraReady:!1,cameraError:null,recordingLengthSeconds:0,videoSources:[],currentDeviceId:null})}setOptions(e){super.setOptions({...e,videoConstraints:{...this.opts.videoConstraints,...e?.videoConstraints}})}hasCameraCheck(){return this.mediaDevices?this.mediaDevices.enumerateDevices().then(e=>e.some(t=>t.kind==="videoinput")):Promise.resolve(!1)}isAudioOnly(){return this.opts.modes.length===1&&this.opts.modes[0]==="audio-only"}getConstraints(e){e===void 0&&(e=null);let t=this.opts.modes.indexOf("video-audio")!==-1||this.opts.modes.indexOf("audio-only")!==-1,r=!this.isAudioOnly()&&(this.opts.modes.indexOf("video-audio")!==-1||this.opts.modes.indexOf("video-only")!==-1||this.opts.modes.indexOf("picture")!==-1),s={...this.opts.videoConstraints||{facingMode:this.opts.facingMode},...e?{deviceId:e,facingMode:null}:{}};return{audio:t,video:r?s:!1}}start(e){if(e===void 0&&(e=null),!this.supportsUserMedia)return Promise.reject(new Error("Webcam access not supported"));this.webcamActive=!0,this.opts.mirror&&(_a(this,Ai)[Ai]=!0);let t=this.getConstraints(e&&e.deviceId?e.deviceId:null);this.hasCameraCheck().then(r=>(this.setPluginState({hasCamera:r}),this.mediaDevices.getUserMedia(t).then(s=>{this.stream=s;let o=null,a=this.isAudioOnly()?s.getAudioTracks():s.getVideoTracks();!e||!e.deviceId?o=a[0].getSettings().deviceId:a.forEach(l=>{l.getSettings().deviceId===e.deviceId&&(o=l.getSettings().deviceId)}),this.updateVideoSources(),this.setPluginState({currentDeviceId:o,cameraReady:!0})}).catch(s=>{this.setPluginState({cameraReady:!1,cameraError:s}),this.uppy.info(s.message,"error")})))}getMediaRecorderOptions(){let e={};if(MediaRecorder.isTypeSupported){let{restrictions:t}=this.uppy.opts,r=[];this.opts.preferredVideoMimeType?r=[this.opts.preferredVideoMimeType]:t.allowedFileTypes&&(r=t.allowedFileTypes.map(cv).filter(CP));let s=n(a=>MediaRecorder.isTypeSupported(a)&&Ki(a),"filterSupportedTypes"),o=r.filter(s);o.length>0&&(e.mimeType=o[0])}return e}startRecording(){this.recorder=new MediaRecorder(this.stream,this.getMediaRecorderOptions()),this.recordingChunks=[];let e=!1;this.recorder.addEventListener("dataavailable",t=>{this.recordingChunks.push(t.data);let{restrictions:r}=this.uppy.opts;if(this.recordingChunks.length>1&&r.maxFileSize!=null&&!e){let s=this.recordingChunks.reduce((h,p)=>h+p.size,0),a=(s-this.recordingChunks[0].size)/(this.recordingChunks.length-1)*3,l=Math.max(0,r.maxFileSize-a);s>l&&(e=!0,this.uppy.info(this.i18n("recordingStoppedMaxSize"),"warning",4e3),this.stopRecording())}}),this.recorder.start(500),this.opts.showRecordingLength&&(this.recordingLengthTimer=setInterval(()=>{let t=this.getPluginState().recordingLengthSeconds;this.setPluginState({recordingLengthSeconds:t+1})},1e3)),this.setPluginState({isRecording:!0})}stopRecording(){return new Promise(t=>{this.recorder.addEventListener("stop",()=>{t()}),this.recorder.stop(),this.opts.showRecordingLength&&(clearInterval(this.recordingLengthTimer),this.setPluginState({recordingLengthSeconds:0}))}).then(()=>(this.setPluginState({isRecording:!1}),this.getVideo())).then(t=>{try{this.capturedMediaFile=t,this.setPluginState({recordedVideo:URL.createObjectURL(t.data)}),_a(this,Ai)[Ai]=!1}catch(r){r.isRestriction||this.uppy.log(r)}}).then(()=>{this.recordingChunks=null,this.recorder=null},t=>{throw this.recordingChunks=null,this.recorder=null,t})}discardRecordedVideo(){this.setPluginState({recordedVideo:null}),this.opts.mirror&&(_a(this,Ai)[Ai]=!0),this.capturedMediaFile=null}submit(){try{this.capturedMediaFile&&this.uppy.addFile(this.capturedMediaFile)}catch(e){e.isRestriction||this.uppy.log(e,"error")}}async stop(){if(this.stream){let e=this.stream.getAudioTracks(),t=this.stream.getVideoTracks();e.concat(t).forEach(r=>r.stop())}this.recorder&&await new Promise(e=>{this.recorder.addEventListener("stop",e,{once:!0}),this.recorder.stop(),this.opts.showRecordingLength&&clearInterval(this.recordingLengthTimer)}),this.recordingChunks=null,this.recorder=null,this.webcamActive=!1,this.stream=null,this.setPluginState({recordedVideo:null,isRecording:!1,recordingLengthSeconds:0})}getVideoElement(){return this.el.querySelector(".uppy-Webcam-video")}oneTwoThreeSmile(){return new Promise((e,t)=>{let r=this.opts.countdown,s=setInterval(()=>{if(!this.webcamActive)return clearInterval(s),this.captureInProgress=!1,t(new Error("Webcam is not active"));r>0?(this.uppy.info(`${r}...`,"warning",800),r--):(clearInterval(s),this.uppy.info(this.i18n("smile"),"success",1500),setTimeout(()=>e(),1500))},1e3)})}takeSnapshot(){this.captureInProgress||(this.captureInProgress=!0,this.opts.onBeforeSnapshot().catch(e=>{let t=typeof e=="object"?e.message:e;return this.uppy.info(t,"error",5e3),Promise.reject(new Error(`onBeforeSnapshot: ${t}`))}).then(()=>this.getImage()).then(e=>{this.captureInProgress=!1;try{this.uppy.addFile(e)}catch(t){t.isRestriction||this.uppy.log(t)}},e=>{throw this.captureInProgress=!1,e}))}getImage(){let e=this.getVideoElement();if(!e)return Promise.reject(new Error("No video element found, likely due to the Webcam tab being closed."));let t=e.videoWidth,r=e.videoHeight,s=document.createElement("canvas");s.width=t,s.height=r,s.getContext("2d").drawImage(e,0,0);let{restrictions:a}=this.uppy.opts,l=[];this.opts.preferredImageMimeType?l=[this.opts.preferredImageMimeType]:a.allowedFileTypes&&(l=a.allowedFileTypes.map(cv).filter(TP));let h=l[0]||"image/jpeg",p=Ki(h)||"jpg",d=`cam-${Date.now()}.${p}`;return pc(s,h).then(f=>({source:this.id,name:d,data:new Blob([f],{type:h}),type:h}))}getVideo(){let e=this.recordingChunks.find(a=>{var l;return((l=a.type)==null?void 0:l.length)>0}).type,t=Ki(e);if(!t)return Promise.reject(new Error(`Could not retrieve recording: Unsupported media type "${e}"`));let r=`webcam-${Date.now()}.${t}`,s=new Blob(this.recordingChunks,{type:e}),o={source:this.id,name:r,data:new Blob([s],{type:e}),type:e};return Promise.resolve(o)}focus(){this.opts.countdown&&setTimeout(()=>{this.uppy.info(this.i18n("smile"),"success",1500)},1e3)}changeVideoSource(e){this.stop(),this.start({deviceId:e})}updateVideoSources(){this.mediaDevices.enumerateDevices().then(e=>{this.setPluginState({videoSources:e.filter(t=>t.kind==="videoinput")})})}render(){this.webcamActive||this.start();let e=this.getPluginState();return!e.cameraReady||!e.hasCamera?u(hv,{icon:zu,i18n:this.i18n,hasCamera:e.hasCamera}):u(uv,wc({},e,{onChangeVideoSource:this.changeVideoSource,onSnapshot:this.takeSnapshot,onStartRecording:this.startRecording,onStopRecording:this.stopRecording,onDiscardRecordedVideo:this.discardRecordedVideo,onSubmit:this.submit,onFocus:this.focus,onStop:this.stop,i18n:this.i18n,modes:this.opts.modes,showRecordingLength:this.opts.showRecordingLength,showVideoSourceDropdown:this.opts.showVideoSourceDropdown,supportsRecording:fc(),recording:e.isRecording,mirror:_a(this,Ai)[Ai],src:this.stream}))}install(){let{mobileNativeCamera:e,modes:t,facingMode:r,videoConstraints:s}=this.opts,{target:o}=this.opts;if(e&&o){var a;(a=this.getTargetPlugin(o))==null||a.setOptions({showNativeVideoCameraButton:bc(t,"video-only")||bc(t,"video-audio"),showNativePhotoCameraButton:bc(t,"picture"),nativeCameraFacingMode:s?.facingMode||r});return}this.setPluginState({cameraReady:!1,recordingLengthSeconds:0}),o&&this.mount(o,this),this.mediaDevices&&(this.updateVideoSources(),this.mediaDevices.ondevicechange=()=>{if(this.updateVideoSources(),this.stream){let l=!0,{videoSources:h,currentDeviceId:p}=this.getPluginState();h.forEach(d=>{p===d.deviceId&&(l=!1)}),l&&(this.stop(),this.start())}})}uninstall(){this.stop(),this.unmount()}onUnmount(){this.stop()}};n(ls,"Webcam");ls.VERSION=OP.version;function Dr(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError("attempted to use private field on non-instance");return i}n(Dr,"_classPrivateFieldLooseBase");var RP=0;function fv(i){return"__private_"+RP+++"_"+i}n(fv,"_classPrivateFieldLooseKey");var Dt=fv("uppy"),xa=fv("events"),mi=class{constructor(e){Object.defineProperty(this,Dt,{writable:!0,value:void 0}),Object.defineProperty(this,xa,{writable:!0,value:[]}),Dr(this,Dt)[Dt]=e}on(e,t){return Dr(this,xa)[xa].push([e,t]),Dr(this,Dt)[Dt].on(e,t)}remove(){for(let[e,t]of Dr(this,xa)[xa].splice(0))Dr(this,Dt)[Dt].off(e,t)}onFilePause(e,t){this.on("upload-pause",(r,s)=>{e===r&&t(s)})}onFileRemove(e,t){this.on("file-removed",r=>{e===r.id&&t(r.id)})}onPause(e,t){this.on("upload-pause",(r,s)=>{e===r&&t(s)})}onRetry(e,t){this.on("upload-retry",r=>{e===r&&t()})}onRetryAll(e,t){this.on("retry-all",()=>{Dr(this,Dt)[Dt].getFile(e)&&t()})}onPauseAll(e,t){this.on("pause-all",()=>{Dr(this,Dt)[Dt].getFile(e)&&t()})}onCancelAll(e,t){var r=this;this.on("cancel-all",function(){Dr(r,Dt)[Dt].getFile(e)&&t(...arguments)})}onResumeAll(e,t){this.on("resume-all",()=>{Dr(this,Dt)[Dt].getFile(e)&&t()})}};n(mi,"EventManager");function Y(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError("attempted to use private field on non-instance");return i}n(Y,"_classPrivateFieldLooseBase");var UP=0;function qt(i){return"__private_"+UP+++"_"+i}n(qt,"_classPrivateFieldLooseKey");function kP(i){return new Error("Cancelled",{cause:i})}n(kP,"createCancelError");function mv(i){if(i!=null){var e;let t=n(()=>this.abort(i.reason),"abortPromise");i.addEventListener("abort",t,{once:!0});let r=n(()=>{i.removeEventListener("abort",t)},"removeAbortListener");(e=this.then)==null||e.call(this,r,r)}return this}n(mv,"abortOn");var ii=qt("activeRequests"),Nt=qt("queuedHandlers"),ti=qt("paused"),js=qt("pauseTimer"),It=qt("downLimit"),Hs=qt("upperLimit"),Ir=qt("rateLimitingTimer"),Fa=qt("call"),Nr=qt("queueNext"),_c=qt("next"),Sc=qt("queue"),xc=qt("dequeue"),Pc=qt("resume"),$s=qt("increaseLimit"),Mt=class{constructor(e){Object.defineProperty(this,xc,{value:LP}),Object.defineProperty(this,Sc,{value:MP}),Object.defineProperty(this,_c,{value:NP}),Object.defineProperty(this,Nr,{value:IP}),Object.defineProperty(this,Fa,{value:DP}),Object.defineProperty(this,ii,{writable:!0,value:0}),Object.defineProperty(this,Nt,{writable:!0,value:[]}),Object.defineProperty(this,ti,{writable:!0,value:!1}),Object.defineProperty(this,js,{writable:!0,value:void 0}),Object.defineProperty(this,It,{writable:!0,value:1}),Object.defineProperty(this,Hs,{writable:!0,value:void 0}),Object.defineProperty(this,Ir,{writable:!0,value:void 0}),Object.defineProperty(this,Pc,{writable:!0,value:()=>this.resume()}),Object.defineProperty(this,$s,{writable:!0,value:()=>{if(Y(this,ti)[ti]){Y(this,Ir)[Ir]=setTimeout(Y(this,$s)[$s],0);return}Y(this,It)[It]=this.limit,this.limit=Math.ceil((Y(this,Hs)[Hs]+Y(this,It)[It])/2);for(let t=Y(this,It)[It];t<=this.limit;t++)Y(this,Nr)[Nr]();Y(this,Hs)[Hs]-Y(this,It)[It]>3?Y(this,Ir)[Ir]=setTimeout(Y(this,$s)[$s],2e3):Y(this,It)[It]=Math.floor(Y(this,It)[It]/2)}}),typeof e!="number"||e===0?this.limit=1/0:this.limit=e}run(e,t){return!Y(this,ti)[ti]&&Y(this,ii)[ii]<this.limit?Y(this,Fa)[Fa](e):Y(this,Sc)[Sc](e,t)}wrapSyncFunction(e,t){var r=this;return function(){for(var s=arguments.length,o=new Array(s),a=0;a<s;a++)o[a]=arguments[a];let l=r.run(()=>(e(...o),queueMicrotask(()=>l.done()),()=>{}),t);return{abortOn:mv,abort(){l.abort()}}}}wrapPromiseFunction(e,t){var r=this;return function(){for(var s=arguments.length,o=new Array(s),a=0;a<s;a++)o[a]=arguments[a];let l,h=new Promise((p,d)=>{l=r.run(()=>{let f,y;try{y=Promise.resolve(e(...o))}catch(b){y=Promise.reject(b)}return y.then(b=>{f?d(f):(l.done(),p(b))},b=>{f?d(f):(l.done(),d(b))}),b=>{f=kP(b)}},t)});return h.abort=p=>{l.abort(p)},h.abortOn=mv,h}}resume(){Y(this,ti)[ti]=!1,clearTimeout(Y(this,js)[js]);for(let e=0;e<this.limit;e++)Y(this,Nr)[Nr]()}pause(e){e===void 0&&(e=null),Y(this,ti)[ti]=!0,clearTimeout(Y(this,js)[js]),e!=null&&(Y(this,js)[js]=setTimeout(Y(this,Pc)[Pc],e))}rateLimit(e){clearTimeout(Y(this,Ir)[Ir]),this.pause(e),this.limit>1&&Number.isFinite(this.limit)&&(Y(this,Hs)[Hs]=this.limit-1,this.limit=Y(this,It)[It],Y(this,Ir)[Ir]=setTimeout(Y(this,$s)[$s],e))}get isPaused(){return Y(this,ti)[ti]}};n(Mt,"RateLimitedQueue");function DP(i){Y(this,ii)[ii]+=1;let e=!1,t;try{t=i()}catch(r){throw Y(this,ii)[ii]-=1,r}return{abort:r=>{e||(e=!0,Y(this,ii)[ii]-=1,t?.(r),Y(this,Nr)[Nr]())},done:()=>{e||(e=!0,Y(this,ii)[ii]-=1,Y(this,Nr)[Nr]())}}}n(DP,"_call2");function IP(){queueMicrotask(()=>Y(this,_c)[_c]())}n(IP,"_queueNext2");function NP(){if(Y(this,ti)[ti]||Y(this,ii)[ii]>=this.limit||Y(this,Nt)[Nt].length===0)return;let i=Y(this,Nt)[Nt].shift(),e=Y(this,Fa)[Fa](i.fn);i.abort=e.abort,i.done=e.done}n(NP,"_next2");function MP(i,e){e===void 0&&(e={});let t={fn:i,priority:e.priority||0,abort:()=>{Y(this,xc)[xc](t)},done:()=>{throw new Error("Cannot mark a queued request as done: this indicates a bug")}},r=Y(this,Nt)[Nt].findIndex(s=>t.priority>s.priority);return r===-1?Y(this,Nt)[Nt].push(t):Y(this,Nt)[Nt].splice(r,0,t),t}n(MP,"_queue2");function LP(i){let e=Y(this,Nt)[Nt].indexOf(i);e!==-1&&Y(this,Nt)[Nt].splice(e,1)}n(LP,"_dequeue2");var us=Symbol("__queue");function hs(i){let e=n(t=>"error"in t&&!!t.error,"hasError");return i.filter(t=>!e(t))}n(hs,"filterNonFailedFiles");function ds(i){return i.filter(e=>{var t;return!((t=e.progress)!=null&&t.uploadStarted)||!e.isRestored})}n(ds,"filterFilesToEmitUploadStarted");var{AbortController:$u}=globalThis,{AbortSignal:w7}=globalThis,Fc=n(function(i,e){i===void 0&&(i="Aborted");let t=new DOMException(i,"AbortError");return e!=null&&Ct(e,"cause")&&Object.defineProperty(t,"cause",{__proto__:null,configurable:!0,writable:!0,value:e.cause}),t},"createAbortError");function $(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError("attempted to use private field on non-instance");return i}n($,"_classPrivateFieldLooseBase");var BP=0;function st(i){return"__private_"+BP+++"_"+i}n(st,"_classPrivateFieldLooseKey");var zP=1024*1024,gv={getChunkSize(i){return Math.ceil(i.size/1e4)},onProgress(){},onPartComplete(){},onSuccess(){},onError(i){throw i}};function jP(i){if(typeof i=="string")return parseInt(i,10);if(typeof i=="number")return i;throw new TypeError("Expected a number")}n(jP,"ensureInt");var Ra=Symbol("pausing upload, not an actual error"),ft=st("abortController"),rt=st("chunks"),Lt=st("chunkState"),ri=st("data"),si=st("file"),Ua=st("uploadHasStarted"),Ea=st("onError"),Ws=st("onSuccess"),Mr=st("shouldUseMultipart"),Vs=st("isRestoring"),ka=st("onReject"),qs=st("maxMultipartParts"),Ca=st("minPartSize"),Ec=st("initChunks"),Oc=st("createUpload"),Oa=st("resumeUpload"),Ta=st("onPartProgress"),Aa=st("onPartComplete"),Cc=st("abortUpload"),qu=class{constructor(e,t){var r,s;Object.defineProperty(this,Cc,{value:VP}),Object.defineProperty(this,Oa,{value:qP}),Object.defineProperty(this,Oc,{value:$P}),Object.defineProperty(this,Ec,{value:HP}),Object.defineProperty(this,ft,{writable:!0,value:new $u}),Object.defineProperty(this,rt,{writable:!0,value:void 0}),Object.defineProperty(this,Lt,{writable:!0,value:void 0}),Object.defineProperty(this,ri,{writable:!0,value:void 0}),Object.defineProperty(this,si,{writable:!0,value:void 0}),Object.defineProperty(this,Ua,{writable:!0,value:!1}),Object.defineProperty(this,Ea,{writable:!0,value:void 0}),Object.defineProperty(this,Ws,{writable:!0,value:void 0}),Object.defineProperty(this,Mr,{writable:!0,value:void 0}),Object.defineProperty(this,Vs,{writable:!0,value:void 0}),Object.defineProperty(this,ka,{writable:!0,value:o=>o?.cause===Ra?null:$(this,Ea)[Ea](o)}),Object.defineProperty(this,qs,{writable:!0,value:1e4}),Object.defineProperty(this,Ca,{writable:!0,value:5*zP}),Object.defineProperty(this,Ta,{writable:!0,value:o=>a=>{if(!a.lengthComputable)return;$(this,Lt)[Lt][o].uploaded=jP(a.loaded);let l=$(this,Lt)[Lt].reduce((h,p)=>h+p.uploaded,0);this.options.onProgress(l,$(this,ri)[ri].size)}}),Object.defineProperty(this,Aa,{writable:!0,value:o=>a=>{$(this,rt)[rt][o]=null,$(this,Lt)[Lt][o].etag=a,$(this,Lt)[Lt][o].done=!0;let l={PartNumber:o+1,ETag:a};this.options.onPartComplete(l)}}),this.options={...gv,...t},(s=(r=this.options).getChunkSize)!=null||(r.getChunkSize=gv.getChunkSize),$(this,ri)[ri]=e,$(this,si)[si]=t.file,$(this,Ws)[Ws]=this.options.onSuccess,$(this,Ea)[Ea]=this.options.onError,$(this,Mr)[Mr]=this.options.shouldUseMultipart,$(this,Vs)[Vs]=t.uploadId&&t.key,$(this,Ec)[Ec]()}start(){$(this,Ua)[Ua]?($(this,ft)[ft].signal.aborted||$(this,ft)[ft].abort(Ra),$(this,ft)[ft]=new $u,$(this,Oa)[Oa]()):$(this,Vs)[Vs]?(this.options.companionComm.restoreUploadFile($(this,si)[si],{uploadId:this.options.uploadId,key:this.options.key}),$(this,Oa)[Oa]()):$(this,Oc)[Oc]()}pause(){$(this,ft)[ft].abort(Ra),$(this,ft)[ft]=new $u}abort(e){var t;e===void 0&&(e=void 0),(t=e)!=null&&t.really?$(this,Cc)[Cc]():this.pause()}get chunkState(){return $(this,Lt)[Lt]}};n(qu,"MultipartUploader");function HP(){let i=$(this,ri)[ri].size,e=typeof $(this,Mr)[Mr]=="function"?$(this,Mr)[Mr]($(this,si)[si]):!!$(this,Mr)[Mr];if(e&&i>$(this,Ca)[Ca]){let t=Math.max(this.options.getChunkSize($(this,ri)[ri]),$(this,Ca)[Ca]),r=Math.floor(i/t);r>$(this,qs)[qs]&&(r=$(this,qs)[qs],t=i/$(this,qs)[qs]),$(this,rt)[rt]=Array(r);for(let s=0,o=0;s<i;s+=t,o++){let a=Math.min(i,s+t),l=n(()=>{let h=s;return $(this,ri)[ri].slice(h,a)},"getData");if($(this,rt)[rt][o]={getData:l,onProgress:$(this,Ta)[Ta](o),onComplete:$(this,Aa)[Aa](o),shouldUseMultipart:e},$(this,Vs)[Vs]){let h=s+t>i?i-s:t;$(this,rt)[rt][o].setAsUploaded=()=>{$(this,rt)[rt][o]=null,$(this,Lt)[Lt][o].uploaded=h}}}}else $(this,rt)[rt]=[{getData:()=>$(this,ri)[ri],onProgress:$(this,Ta)[Ta](0),onComplete:$(this,Aa)[Aa](0),shouldUseMultipart:e}];$(this,Lt)[Lt]=$(this,rt)[rt].map(()=>({uploaded:0}))}n(HP,"_initChunks2");function $P(){this.options.companionComm.uploadFile($(this,si)[si],$(this,rt)[rt],$(this,ft)[ft].signal).then($(this,Ws)[Ws],$(this,ka)[ka]),$(this,Ua)[Ua]=!0}n($P,"_createUpload2");function qP(){this.options.companionComm.resumeUploadFile($(this,si)[si],$(this,rt)[rt],$(this,ft)[ft].signal).then($(this,Ws)[Ws],$(this,ka)[ka])}n(qP,"_resumeUpload2");function VP(){$(this,ft)[ft].abort(),this.options.companionComm.abortFileUpload($(this,si)[si]).catch(i=>this.options.log(i))}n(VP,"_abortUpload2");var yv=qu;function WP(i){let{method:e="PUT",CanonicalUri:t="/",CanonicalQueryString:r="",SignedHeaders:s,HashedPayload:o}=i,a=Object.keys(s).map(l=>l.toLowerCase()).sort();return[e,t,r,...a.map(l=>`${l}:${s[l]}`),"",a.join(";"),o].join(` +`)}n(WP,"createCanonicalRequest");var Tc=new TextEncoder,Ac={name:"HMAC",hash:"SHA-256"};async function GP(i){let{subtle:e}=globalThis.crypto;return e.digest(Ac.hash,Tc.encode(i))}n(GP,"digest");async function KP(i){let{subtle:e}=globalThis.crypto;return e.importKey("raw",typeof i=="string"?Tc.encode(i):i,Ac,!1,["sign"])}n(KP,"generateHmacKey");function vv(i){let e=new Uint8Array(i),t="";for(let r=0;r<e.length;r++)t+=e[r].toString(16).padStart(2,"0");return t}n(vv,"arrayBufferToHexString");async function Da(i,e){let{subtle:t}=globalThis.crypto;return t.sign(Ac,await KP(i),Tc.encode(e))}n(Da,"hash");async function Rc(i){let{accountKey:e,accountSecret:t,sessionToken:r,bucketName:s,Key:o,Region:a,expires:l,uploadId:h,partNumber:p}=i,d="s3",f=`${s}.${d}.${a}.amazonaws.com`,y=`/${encodeURI(o)}`,b="UNSIGNED-PAYLOAD",S=new Date().toISOString().replace(/[-:]|\.\d+/g,""),E=S.slice(0,8),x=`${E}/${a}/${d}/aws4_request`,F=new URL(`https://${f}${y}`);F.searchParams.set("X-Amz-Algorithm","AWS4-HMAC-SHA256"),F.searchParams.set("X-Amz-Content-Sha256",b),F.searchParams.set("X-Amz-Credential",`${e}/${x}`),F.searchParams.set("X-Amz-Date",S),F.searchParams.set("X-Amz-Expires",l),F.searchParams.set("X-Amz-Security-Token",r),F.searchParams.set("X-Amz-SignedHeaders","host"),p&&F.searchParams.set("partNumber",p),h&&F.searchParams.set("uploadId",h),F.searchParams.set("x-id",p&&h?"UploadPart":"PutObject");let U=WP({CanonicalUri:y,CanonicalQueryString:F.search.slice(1),SignedHeaders:{host:f},HashedPayload:b}),j=vv(await GP(U)),G=["AWS4-HMAC-SHA256",S,x,j].join(` +`),J=await Da(`AWS4${t}`,E),B=await Da(J,a),z=await Da(B,d),K=await Da(z,"aws4_request"),oe=vv(await Da(K,G));return F.searchParams.set("X-Amz-Signature",oe),F}n(Rc,"createSignedURL");var wv;function N(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError("attempted to use private field on non-instance");return i}n(N,"_classPrivateFieldLooseBase");var XP=0;function Pe(i){return"__private_"+XP+++"_"+i}n(Pe,"_classPrivateFieldLooseKey");var YP={version:"3.9.0"};function Go(i){if(i&&i.error){let e=new Error(i.message);throw Object.assign(e,i.error),e}return i}n(Go,"assertServerError");function QP(i){let e=new URL(i);return e.search="",e.hash="",e.href}n(QP,"removeMetadataFromURL");function Sv(i){let e=i.Expiration;if(e){let t=Math.floor((new Date(e)-Date.now())/1e3);if(t>9)return t}}n(Sv,"getExpiry");function bv(i){let{meta:e,allowedMetaFields:t,querify:r=!1}=i,s=t??Object.keys(e);return e?Object.fromEntries(s.filter(o=>e[o]!=null).map(o=>{let a=r?`metadata[${o}]`:o,l=String(e[o]);return[a,l]})):{}}n(bv,"getAllowedMetadata");function xt(i){if(i!=null&&i.aborted)throw Fc("The operation was aborted",{cause:i.reason})}n(xt,"throwIfAborted");var Ia=Pe("abortMultipartUpload"),mt=Pe("cache"),Na=Pe("createMultipartUpload"),Ma=Pe("fetchSignature"),Ha=Pe("getUploadParameters"),La=Pe("listParts"),Qs=Pe("previousRetryDelay"),Js=Pe("requests"),Gs=Pe("retryDelays"),Ks=Pe("sendCompletionRequest"),Xs=Pe("setS3MultipartState"),Zs=Pe("uploadPartBytes"),yt=Pe("getFile"),Uc=Pe("shouldRetry"),Ba=Pe("nonMultipartUpload"),Vu=class{constructor(e,t,r,s){Object.defineProperty(this,Ba,{value:ZP}),Object.defineProperty(this,Uc,{value:JP}),Object.defineProperty(this,Ia,{writable:!0,value:void 0}),Object.defineProperty(this,mt,{writable:!0,value:new WeakMap}),Object.defineProperty(this,Na,{writable:!0,value:void 0}),Object.defineProperty(this,Ma,{writable:!0,value:void 0}),Object.defineProperty(this,Ha,{writable:!0,value:void 0}),Object.defineProperty(this,La,{writable:!0,value:void 0}),Object.defineProperty(this,Qs,{writable:!0,value:void 0}),Object.defineProperty(this,Js,{writable:!0,value:void 0}),Object.defineProperty(this,Gs,{writable:!0,value:void 0}),Object.defineProperty(this,Ks,{writable:!0,value:void 0}),Object.defineProperty(this,Xs,{writable:!0,value:void 0}),Object.defineProperty(this,Zs,{writable:!0,value:void 0}),Object.defineProperty(this,yt,{writable:!0,value:void 0}),N(this,Js)[Js]=e,N(this,Xs)[Xs]=r,N(this,yt)[yt]=s,this.setOptions(t)}setOptions(e){let t=N(this,Js)[Js];if("abortMultipartUpload"in e&&(N(this,Ia)[Ia]=t.wrapPromiseFunction(e.abortMultipartUpload,{priority:1})),"createMultipartUpload"in e&&(N(this,Na)[Na]=t.wrapPromiseFunction(e.createMultipartUpload,{priority:-1})),"signPart"in e&&(N(this,Ma)[Ma]=t.wrapPromiseFunction(e.signPart)),"listParts"in e&&(N(this,La)[La]=t.wrapPromiseFunction(e.listParts)),"completeMultipartUpload"in e&&(N(this,Ks)[Ks]=t.wrapPromiseFunction(e.completeMultipartUpload,{priority:1})),"retryDelays"in e){var r;N(this,Gs)[Gs]=(r=e.retryDelays)!=null?r:[]}"uploadPartBytes"in e&&(N(this,Zs)[Zs]=t.wrapPromiseFunction(e.uploadPartBytes,{priority:1/0})),"getUploadParameters"in e&&(N(this,Ha)[Ha]=t.wrapPromiseFunction(e.getUploadParameters))}async getUploadId(e,t){let r;for(;(r=N(this,mt)[mt].get(e.data))!=null;)try{return await r}catch{}let s=N(this,Na)[Na](N(this,yt)[yt](e),t),o=n(()=>{s.abort(t.reason),N(this,mt)[mt].delete(e.data)},"abortPromise");return t.addEventListener("abort",o,{once:!0}),N(this,mt)[mt].set(e.data,s),s.then(async a=>{t.removeEventListener("abort",o),N(this,Xs)[Xs](e,a),N(this,mt)[mt].set(e.data,a)},()=>{t.removeEventListener("abort",o),N(this,mt)[mt].delete(e.data)}),s}async abortFileUpload(e){let t=N(this,mt)[mt].get(e.data);if(t==null)return;N(this,mt)[mt].delete(e.data),N(this,Xs)[Xs](e,Object.create(null));let r;try{r=await t}catch{return}await N(this,Ia)[Ia](N(this,yt)[yt](e),r)}async uploadFile(e,t,r){if(xt(r),t.length===1&&!t[0].shouldUseMultipart)return N(this,Ba)[Ba](e,t[0],r);let{uploadId:s,key:o}=await this.getUploadId(e,r);xt(r);try{let a=await Promise.all(t.map((l,h)=>this.uploadChunk(e,h+1,l,r)));return xt(r),await N(this,Ks)[Ks](N(this,yt)[yt](e),{key:o,uploadId:s,parts:a,signal:r},r).abortOn(r)}catch(a){throw a?.cause!==Ra&&a?.name!=="AbortError"&&this.abortFileUpload(e),a}}restoreUploadFile(e,t){N(this,mt)[mt].set(e.data,t)}async resumeUploadFile(e,t,r){if(xt(r),t.length===1&&t[0]!=null&&!t[0].shouldUseMultipart)return N(this,Ba)[Ba](e,t[0],r);let{uploadId:s,key:o}=await this.getUploadId(e,r);xt(r);let a=await N(this,La)[La](N(this,yt)[yt](e),{uploadId:s,key:o,signal:r},r).abortOn(r);xt(r);let l=await Promise.all(t.map((h,p)=>{let d=p+1,f=a.find(y=>{let{PartNumber:b}=y;return b===d});return f==null?this.uploadChunk(e,d,h,r):(h==null||h.setAsUploaded==null||h.setAsUploaded(),{PartNumber:d,ETag:f.ETag})}));return xt(r),N(this,Ks)[Ks](N(this,yt)[yt](e),{key:o,uploadId:s,parts:l,signal:r},r).abortOn(r)}async uploadChunk(e,t,r,s){xt(s);let{uploadId:o,key:a}=await this.getUploadId(e,s),l=N(this,Gs)[Gs].values(),h=N(this,Gs)[Gs].values(),p=n(()=>{let d=l.next();return d==null||d.done?null:d.value},"shouldRetrySignature");for(;;){xt(s);let d=r.getData(),{onProgress:f,onComplete:y}=r,b;try{b=await N(this,Ma)[Ma](N(this,yt)[yt](e),{uploadId:o,key:a,partNumber:t,body:d,signal:s}).abortOn(s)}catch(S){let E=p();if(E==null||s.aborted)throw S;await new Promise(x=>setTimeout(x,E));continue}xt(s);try{return{PartNumber:t,...await N(this,Zs)[Zs]({signature:b,body:d,size:d.size,onProgress:f,onComplete:y,signal:s}).abortOn(s)}}catch(S){if(!await N(this,Uc)[Uc](S,h))throw S}}}};n(Vu,"HTTPCommunicationQueue");async function JP(i,e){var t;let r=N(this,Js)[Js],s=i==null||(t=i.source)==null?void 0:t.status;if(s==null)return!1;if(s===403&&i.message==="Request has expired"){if(!r.isPaused){if(r.limit===1||N(this,Qs)[Qs]==null){let o=e.next();if(o==null||o.done)return!1;N(this,Qs)[Qs]=o.value}r.rateLimit(0),await new Promise(o=>setTimeout(o,N(this,Qs)[Qs]))}}else if(s===429){if(!r.isPaused){let o=e.next();if(o==null||o.done)return!1;r.rateLimit(o.value)}}else{if(s>400&&s<500&&s!==409)return!1;if(typeof navigator<"u"&&navigator.onLine===!1)r.isPaused||(r.pause(),window.addEventListener("online",()=>{r.resume()},{once:!0}));else{let o=e.next();if(o==null||o.done)return!1;await new Promise(a=>setTimeout(a,o.value))}}return!0}n(JP,"_shouldRetry2");async function ZP(i,e,t){let{method:r="POST",url:s,fields:o,headers:a}=await N(this,Ha)[Ha](N(this,yt)[yt](i),{signal:t}).abortOn(t),l,h=e.getData();if(r.toUpperCase()==="POST"){let y=new FormData;Object.entries(o).forEach(b=>{let[S,E]=b;return y.set(S,E)}),y.set("file",h),l=y}else l=h;let{onProgress:p,onComplete:d}=e,f=await N(this,Zs)[Zs]({signature:{url:s,headers:a,method:r},body:l,size:h.size,onProgress:p,onComplete:d,signal:t}).abortOn(t);return"location"in f?f:{location:QP(s),...f}}n(ZP,"_nonMultipartUpload2");var eo=Pe("companionCommunicationQueue"),$e=Pe("client"),gt=Pe("cachedTemporaryCredentials"),kc=Pe("getTemporarySecurityCredentials"),Dc=Pe("setS3MultipartState"),to=Pe("getFile"),Ic=Pe("uploadLocalFile"),Nc=Pe("getCompanionClientArgs"),za=Pe("upload"),Ys=Pe("setCompanionHeaders"),Lr=Pe("setResumableUploadsCapability"),ja=Pe("resetResumableCapability");wv=Symbol.for("uppy test: getClient");var Ri=class extends ve{constructor(e,t){var r;super(e,t),Object.defineProperty(this,Nc,{value:i_}),Object.defineProperty(this,Ic,{value:t_}),Object.defineProperty(this,kc,{value:e_}),Object.defineProperty(this,eo,{writable:!0,value:void 0}),Object.defineProperty(this,$e,{writable:!0,value:void 0}),Object.defineProperty(this,gt,{writable:!0,value:void 0}),Object.defineProperty(this,Dc,{writable:!0,value:(o,a)=>{let{key:l,uploadId:h}=a,p=this.uppy.getFile(o.id);p!=null&&this.uppy.setFileState(o.id,{s3Multipart:{...p.s3Multipart,key:l,uploadId:h}})}}),Object.defineProperty(this,to,{writable:!0,value:o=>this.uppy.getFile(o.id)||o}),Object.defineProperty(this,za,{writable:!0,value:async o=>{if(o.length===0)return;let a=this.uppy.getFilesByIds(o),l=hs(a),h=ds(l);this.uppy.emit("upload-start",h);let p=l.map(f=>{if(f.isRemote){let y=n(()=>this.requests,"getQueue");N(this,Lr)[Lr](!1);let b=new AbortController,S=n(x=>{x.id===f.id&&b.abort()},"removedHandler");this.uppy.on("file-removed",S);let E=f.remote.requestClient.uploadRemoteFile(f,N(this,Nc)[Nc](f),{signal:b.signal,getQueue:y});return this.requests.wrapSyncFunction(()=>{this.uppy.off("file-removed",S)},{priority:-1})(),E}return N(this,Ic)[Ic](f)}),d=await Promise.all(p);return N(this,Lr)[Lr](!0),d}}),Object.defineProperty(this,Ys,{writable:!0,value:()=>{N(this,$e)[$e].setCompanionHeaders(this.opts.companionHeaders)}}),Object.defineProperty(this,Lr,{writable:!0,value:o=>{let{capabilities:a}=this.uppy.getState();this.uppy.setState({capabilities:{...a,resumableUploads:o}})}}),Object.defineProperty(this,ja,{writable:!0,value:()=>{N(this,Lr)[Lr](!0)}}),this.type="uploader",this.id=this.opts.id||"AwsS3Multipart",this.title="AWS S3 Multipart",N(this,$e)[$e]=new tt(e,t);let s={allowedMetaFields:null,limit:6,shouldUseMultipart:o=>o.size!==0,retryDelays:[0,1e3,3e3,5e3],createMultipartUpload:this.createMultipartUpload.bind(this),listParts:this.listParts.bind(this),abortMultipartUpload:this.abortMultipartUpload.bind(this),completeMultipartUpload:this.completeMultipartUpload.bind(this),getTemporarySecurityCredentials:!1,signPart:t!=null&&t.getTemporarySecurityCredentials?this.createSignedURL.bind(this):this.signPart.bind(this),uploadPartBytes:Ri.uploadPartBytes,getUploadParameters:t!=null&&t.getTemporarySecurityCredentials?this.createSignedURL.bind(this):this.getUploadParameters.bind(this),companionHeaders:{}};this.opts={...s,...t},t?.prepareUploadParts!=null&&t.signPart==null&&(this.opts.signPart=async(o,a)=>{let{uploadId:l,key:h,partNumber:p,body:d,signal:f}=a,{presignedUrls:y,headers:b}=await t.prepareUploadParts(o,{uploadId:l,key:h,parts:[{number:p,chunk:d}],signal:f});return{url:y?.[p],headers:b?.[p]}}),this.requests=(r=this.opts.rateLimitedQueue)!=null?r:new Mt(this.opts.limit),N(this,eo)[eo]=new Vu(this.requests,this.opts,N(this,Dc)[Dc],N(this,to)[to]),this.uploaders=Object.create(null),this.uploaderEvents=Object.create(null),this.uploaderSockets=Object.create(null)}[wv](){return N(this,$e)[$e]}setOptions(e){N(this,eo)[eo].setOptions(e),super.setOptions(e),N(this,Ys)[Ys]()}resetUploaderReferences(e,t){t===void 0&&(t={}),this.uploaders[e]&&(this.uploaders[e].abort({really:t.abort||!1}),this.uploaders[e]=null),this.uploaderEvents[e]&&(this.uploaderEvents[e].remove(),this.uploaderEvents[e]=null),this.uploaderSockets[e]&&(this.uploaderSockets[e].close(),this.uploaderSockets[e]=null)}assertHost(e){if(!this.opts.companionUrl)throw new Error(`Expected a \`companionUrl\` option containing a Companion address, or if you are not using Companion, a custom \`${e}\` implementation.`)}createMultipartUpload(e,t){this.assertHost("createMultipartUpload"),xt(t);let r=bv({meta:e.meta,allowedMetaFields:this.opts.allowedMetaFields});return N(this,$e)[$e].post("s3/multipart",{filename:e.name,type:e.type,metadata:r},{signal:t}).then(Go)}listParts(e,t,r){let{key:s,uploadId:o}=t;this.assertHost("listParts"),xt(r);let a=encodeURIComponent(s);return N(this,$e)[$e].get(`s3/multipart/${o}?key=${a}`,{signal:r}).then(Go)}completeMultipartUpload(e,t,r){let{key:s,uploadId:o,parts:a}=t;this.assertHost("completeMultipartUpload"),xt(r);let l=encodeURIComponent(s),h=encodeURIComponent(o);return N(this,$e)[$e].post(`s3/multipart/${h}/complete?key=${l}`,{parts:a},{signal:r}).then(Go)}async createSignedURL(e,t){let r=await N(this,kc)[kc](t),s=Sv(r.credentials)||604800,{uploadId:o,key:a,partNumber:l,signal:h}=t;return{method:"PUT",expires:s,fields:{},url:`${await Rc({accountKey:r.credentials.AccessKeyId,accountSecret:r.credentials.SecretAccessKey,sessionToken:r.credentials.SessionToken,expires:s,bucketName:r.bucket,Region:r.region,Key:a??`${crypto.randomUUID()}-${e.name}`,uploadId:o,partNumber:l,signal:h})}`,headers:{"Content-Type":e.type}}}signPart(e,t){let{uploadId:r,key:s,partNumber:o,signal:a}=t;if(this.assertHost("signPart"),xt(a),r==null||s==null||o==null)throw new Error("Cannot sign without a key, an uploadId, and a partNumber");let l=encodeURIComponent(s);return N(this,$e)[$e].get(`s3/multipart/${r}/${o}?key=${l}`,{signal:a}).then(Go)}abortMultipartUpload(e,t,r){let{key:s,uploadId:o}=t;this.assertHost("abortMultipartUpload");let a=encodeURIComponent(s),l=encodeURIComponent(o);return N(this,$e)[$e].delete(`s3/multipart/${l}?key=${a}`,void 0,{signal:r}).then(Go)}getUploadParameters(e,t){let{meta:r}=e,{type:s,name:o}=r,a=bv({meta:r,allowedMetaFields:this.opts.allowedMetaFields,querify:!0}),l=new URLSearchParams({filename:o,type:s,...a});return N(this,$e)[$e].get(`s3/params?${l}`,t)}static async uploadPartBytes(e){let{signature:{url:t,expires:r,headers:s,method:o="PUT"},body:a,size:l=a.size,onProgress:h,onComplete:p,signal:d}=e;if(xt(d),t==null)throw new Error("Cannot upload to an undefined URL");return new Promise((f,y)=>{let b=new XMLHttpRequest;b.open(o,t,!0),s&&Object.keys(s).forEach(x=>{b.setRequestHeader(x,s[x])}),b.responseType="text",typeof r=="number"&&(b.timeout=r*1e3);function S(){b.abort()}n(S,"onabort");function E(){d.removeEventListener("abort",S)}n(E,"cleanup"),d.addEventListener("abort",S),b.upload.addEventListener("progress",x=>{h(x)}),b.addEventListener("abort",()=>{E(),y(Fc())}),b.addEventListener("timeout",()=>{E();let x=new Error("Request has expired");x.source={status:403},y(x)}),b.addEventListener("load",x=>{if(E(),x.target.status===403&&x.target.responseText.includes("<Message>Request has expired</Message>")){let j=new Error("Request has expired");j.source=x.target,y(j);return}if(x.target.status<200||x.target.status>=300){let j=new Error("Non 2xx");j.source=x.target,y(j);return}h?.({loaded:l,lengthComputable:!0});let F=x.target.getResponseHeader("ETag"),U=x.target.getResponseHeader("Location");if(o.toUpperCase()==="POST"&&U===null&&console.warn("AwsS3/Multipart: Could not read the Location header. This likely means CORS is not configured correctly on the S3 Bucket. See https://uppy.io/docs/aws-s3-multipart#S3-Bucket-Configuration for instructions."),F===null){y(new Error("AwsS3/Multipart: Could not read the ETag header. This likely means CORS is not configured correctly on the S3 Bucket. See https://uppy.io/docs/aws-s3-multipart#S3-Bucket-Configuration for instructions."));return}p?.(F),f({ETag:F,...U?{location:U}:void 0})}),b.addEventListener("error",x=>{E();let F=new Error("Unknown error");F.source=x.target,y(F)}),b.send(a)})}install(){N(this,Lr)[Lr](!0),this.uppy.addPreProcessor(N(this,Ys)[Ys]),this.uppy.addUploader(N(this,za)[za]),this.uppy.on("cancel-all",N(this,ja)[ja])}uninstall(){this.uppy.removePreProcessor(N(this,Ys)[Ys]),this.uppy.removeUploader(N(this,za)[za]),this.uppy.off("cancel-all",N(this,ja)[ja])}};n(Ri,"AwsS3Multipart");async function e_(i){return xt(i?.signal),N(this,gt)[gt]==null&&(this.opts.getTemporarySecurityCredentials===!0?(this.assertHost("getTemporarySecurityCredentials"),N(this,gt)[gt]=N(this,$e)[$e].get("s3/sts",null,i).then(Go)):N(this,gt)[gt]=this.opts.getTemporarySecurityCredentials(i),N(this,gt)[gt]=await N(this,gt)[gt],setTimeout(()=>{N(this,gt)[gt]=null},(Sv(N(this,gt)[gt].credentials)||0)*500)),N(this,gt)[gt]}n(e_,"_getTemporarySecurityCredentials2");function t_(i){var e=this;return new Promise((t,r)=>{let s=n((d,f)=>{this.uppy.emit("upload-progress",i,{uploader:this,bytesUploaded:d,bytesTotal:f})},"onProgress"),o=n(d=>{this.uppy.log(d),this.uppy.emit("upload-error",i,d),this.resetUploaderReferences(i.id),r(d)},"onError"),a=n(d=>{let f={body:{...d},uploadURL:d.location};this.resetUploaderReferences(i.id),this.uppy.emit("upload-success",N(this,to)[to](i),f),d.location&&this.uppy.log(`Download ${i.name} from ${d.location}`),t()},"onSuccess"),l=n(d=>{this.uppy.emit("s3-multipart:part-uploaded",N(this,to)[to](i),d)},"onPartComplete"),h=new yv(i.data,{companionComm:N(this,eo)[eo],log:function(){return e.uppy.log(...arguments)},getChunkSize:this.opts.getChunkSize?this.opts.getChunkSize.bind(this):null,onProgress:s,onError:o,onSuccess:a,onPartComplete:l,file:i,shouldUseMultipart:this.opts.shouldUseMultipart,...i.s3Multipart});this.uploaders[i.id]=h;let p=new mi(this.uppy);this.uploaderEvents[i.id]=p,p.onFileRemove(i.id,d=>{h.abort(),this.resetUploaderReferences(i.id,{abort:!0}),t(`upload ${d.id} was removed`)}),p.onCancelAll(i.id,function(d){let{reason:f}=d===void 0?{}:d;f==="user"&&(h.abort(),e.resetUploaderReferences(i.id,{abort:!0})),t(`upload ${i.id} was canceled`)}),p.onFilePause(i.id,d=>{d?h.pause():h.start()}),p.onPauseAll(i.id,()=>{h.pause()}),p.onResumeAll(i.id,()=>{h.start()}),h.start()})}n(t_,"_uploadLocalFile2");function i_(i){return{...i.remote.body,protocol:"s3-multipart",size:i.data.size,metadata:i.meta}}n(i_,"_getCompanionClientArgs2");Ri.VERSION=YP.version;function gi(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError("attempted to use private field on non-instance");return i}n(gi,"_classPrivateFieldLooseBase");var r_=0;function Gu(i){return"__private_"+r_+++"_"+i}n(Gu,"_classPrivateFieldLooseKey");var Br=Gu("aliveTimer"),io=Gu("isDone"),$a=Gu("onTimedOut"),ro=Gu("timeout"),Wu=class{constructor(e,t){Object.defineProperty(this,Br,{writable:!0,value:void 0}),Object.defineProperty(this,io,{writable:!0,value:!1}),Object.defineProperty(this,$a,{writable:!0,value:void 0}),Object.defineProperty(this,ro,{writable:!0,value:void 0}),gi(this,ro)[ro]=e,gi(this,$a)[$a]=t}progress(){gi(this,io)[io]||gi(this,ro)[ro]>0&&(clearTimeout(gi(this,Br)[Br]),gi(this,Br)[Br]=setTimeout(gi(this,$a)[$a],gi(this,ro)[ro]))}done(){gi(this,io)[io]||(clearTimeout(gi(this,Br)[Br]),gi(this,Br)[Br]=void 0,gi(this,io)[io]=!0)}};n(Wu,"ProgressTimeout");var qa=Wu;function s_(i){return i?i.readyState!==0&&i.readyState!==4||i.status===0:!1}n(s_,"isNetworkError");var so=s_;function Pv(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError("attempted to use private field on non-instance");return i}n(Pv,"_classPrivateFieldLooseBase");var o_=0;function xv(i){return"__private_"+o_+++"_"+i}n(xv,"_classPrivateFieldLooseKey");function _v(i,e){if(so(i))return new Pi(e,i);let t=new vr("Upload error",{cause:e});return t.request=i,t}n(_v,"buildResponseError");function n_(i){return i.data.slice(0,i.data.size,i.meta.type)}n(n_,"setTypeInBlob");function a_(i,e,t){(Array.isArray(t.allowedMetaFields)?t.allowedMetaFields:Object.keys(e)).forEach(s=>{i.append(s,e[s])})}n(a_,"addMetadata");function l_(i,e){let t=new FormData;a_(t,i.meta,e);let r=n_(i);return i.name?t.append(e.fieldName,r,i.meta.name):t.append(e.fieldName,r),t}n(l_,"createFormDataUpload");var u_=n(i=>i.data,"createBareUpload"),Mc=xv("addEventHandlerForFile"),Lc=xv("addEventHandlerIfFileStillExists"),Ko=class{constructor(e,t){Object.defineProperty(this,Lc,{value:d_}),Object.defineProperty(this,Mc,{value:h_}),this.uppy=e,this.opts={validateStatus(r){return r>=200&&r<300},...t},this.requests=t[us],this.uploaderEvents=Object.create(null),this.i18n=t.i18n}getOptions(e){var t;let{uppy:r}=this,s=r.getState().xhrUpload;return{...this.opts,...s||{},...e.xhrUpload||{},headers:{...this.opts.headers,...s?.headers,...(t=e.xhrUpload)==null?void 0:t.headers}}}uploadLocalFile(e){let t=this.getOptions(e);return new Promise((r,s)=>{let o=t.formData?l_(e,t):u_(e,t),a=new XMLHttpRequest;this.uploaderEvents[e.id]=new mi(this.uppy);let l=new qa(t.timeout,()=>{a.abort(),p.done();let d=new Error(this.i18n("timedOut",{seconds:Math.ceil(t.timeout/1e3)}));this.uppy.emit("upload-error",e,d),s(d)}),h=Pt();a.upload.addEventListener("loadstart",()=>{this.uppy.log(`[AwsS3/XHRUpload] ${h} started`)}),a.upload.addEventListener("progress",d=>{this.uppy.log(`[AwsS3/XHRUpload] ${h} progress: ${d.loaded} / ${d.total}`),l.progress(),d.lengthComputable&&this.uppy.emit("upload-progress",e,{uploader:this,bytesUploaded:d.loaded,bytesTotal:d.total})}),a.addEventListener("load",d=>{if(this.uppy.log(`[AwsS3/XHRUpload] ${h} finished`),l.done(),p.done(),this.uploaderEvents[e.id]&&(this.uploaderEvents[e.id].remove(),this.uploaderEvents[e.id]=null),t.validateStatus(d.target.status,a.responseText,a)){let S=t.getResponseData(a.responseText,a),E=S[t.responseUrlFieldName],x={status:d.target.status,body:S,uploadURL:E};return this.uppy.emit("upload-success",e,x),E&&this.uppy.log(`Download ${e.name} from ${E}`),r(e)}let f=t.getResponseData(a.responseText,a),y=_v(a,t.getResponseError(a.responseText,a)),b={status:d.target.status,body:f};return this.uppy.emit("upload-error",e,y,b),s(y)}),a.addEventListener("error",()=>{this.uppy.log(`[AwsS3/XHRUpload] ${h} errored`),l.done(),p.done(),this.uploaderEvents[e.id]&&(this.uploaderEvents[e.id].remove(),this.uploaderEvents[e.id]=null);let d=_v(a,t.getResponseError(a.responseText,a));return this.uppy.emit("upload-error",e,d),s(d)}),a.open(t.method.toUpperCase(),t.endpoint,!0),a.withCredentials=!!t.withCredentials,t.responseType!==""&&(a.responseType=t.responseType),Object.keys(t.headers).forEach(d=>{a.setRequestHeader(d,t.headers[d])});let p=this.requests.run(()=>(a.send(o),()=>{l.done(),a.abort()}),{priority:1});Pv(this,Mc)[Mc]("file-removed",e.id,()=>{p.abort(),s(new Error("File removed"))}),Pv(this,Lc)[Lc]("cancel-all",e.id,function(d){let{reason:f}=d===void 0?{}:d;f==="user"&&p.abort(),s(new Error("Upload cancelled"))})})}};n(Ko,"MiniXHRUpload");function h_(i,e,t){this.uploaderEvents[e].on(i,r=>{var s;let o=(s=r?.id)!=null?s:r;e===o&&t()})}n(h_,"_addEventHandlerForFile2");function d_(i,e,t){var r=this;this.uploaderEvents[e].on(i,function(){r.uppy.getFile(e)&&t(...arguments)})}n(d_,"_addEventHandlerIfFileStillExists2");function c_(i){return i.replace(/;.*$/,"")}n(c_,"removeMimeParameters");function p_(i,e){let t=e.headers?e.headers["content-type"]:e.getResponseHeader("Content-Type");if(typeof t=="string"){let r=c_(t).toLowerCase();if(r==="application/xml"||r==="text/xml"||r==="text/html"&&/^<\?xml /.test(i))return!0}return!1}n(p_,"isXml");var Bc=p_;var Fv={strings:{timedOut:"Upload stalled for %{seconds} seconds, aborting."}};var Ov;function ot(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError("attempted to use private field on non-instance");return i}n(ot,"_classPrivateFieldLooseBase");var f_=0;function Xo(i){return"__private_"+f_+++"_"+i}n(Xo,"_classPrivateFieldLooseKey");var m_={version:"3.5.0"};function g_(i,e){return!i&&!e.startsWith("https://")&&!e.startsWith("http://")&&(e=`https://${e}`),new URL(e,i||void 0).toString()}n(g_,"resolveUrl");function Ga(i,e){let t=i.indexOf(`<${e}>`),r=i.indexOf(`</${e}>`,t);return t!==-1&&r!==-1?i.slice(t+e.length+2,r):""}n(Ga,"getXmlValue");function y_(i){if(i&&i.error){let e=new Error(i.message);throw Object.assign(e,i.error),e}return i}n(y_,"assertServerError");function v_(i,e){if(!(e!=null&&typeof e.url=="string"&&(typeof e.fields=="object"||e.fields==null)))throw new TypeError(`AwsS3: got incorrect result from 'getUploadParameters()' for file '${i.name}', expected an object '{ url, method, fields, headers }' but got '${JSON.stringify(e)}' instead. +See https://uppy.io/docs/aws-s3/#getUploadParameters-file for more on the expected format.`);if(!(e.method==null||/^p(u|os)t$/i.test(e.method)))throw new TypeError(`AwsS3: got incorrect method from 'getUploadParameters()' for file '${i.name}', expected 'PUT' or 'POST' but got '${e.method}' instead. +See https://uppy.io/docs/aws-s3/#getUploadParameters-file for more on the expected format.`)}n(v_,"validateParameters");function b_(i,e){if(!Bc(i,e))return;let t=Ga(i,"Message");return new Error(t)}n(b_,"defaultGetResponseError");var Ev=!1,oi=Xo("client"),Ui=Xo("requests"),oo=Xo("uploader"),Va=Xo("handleUpload"),Wa=Xo("setCompanionHeaders"),zc=Xo("getCompanionClientArgs");Ov=Symbol.for("uppy test: getClient");var no=class extends ve{constructor(e,t){if(t?.shouldUseMultipart!=null)return new Ri(e,t);super(e,t),Object.defineProperty(this,oi,{writable:!0,value:void 0}),Object.defineProperty(this,Ui,{writable:!0,value:void 0}),Object.defineProperty(this,oo,{writable:!0,value:void 0}),Object.defineProperty(this,Va,{writable:!0,value:async s=>{let o=Object.create(null);function a(y){var b;let{id:S}=y;(b=o[S])==null||b.abort()}n(a,"onremove"),this.uppy.on("file-removed",a);let l=this.uppy.getFilesByIds(s),h=hs(l),p=ds(h);this.uppy.emit("upload-start",p);let d=ot(this,Ui)[Ui].wrapPromiseFunction(y=>this.opts.getUploadParameters(y)),f=s.length;return Promise.allSettled(s.map((y,b)=>(o[y]=d(this.uppy.getFile(y)),o[y].then(S=>{delete o[y];let E=this.uppy.getFile(y);v_(E,S);let{method:x="POST",url:F,fields:U,headers:j}=S,G={method:x,formData:x.toUpperCase()==="POST",endpoint:F,allowedMetaFields:U?Object.keys(U):[]};return j&&(G.headers=j),this.uppy.setFileState(E.id,{meta:{...E.meta,...U},xhrUpload:G}),this.uploadFile(E.id,b,f)}).catch(S=>{delete o[y];let E=this.uppy.getFile(y);return this.uppy.emit("upload-error",E,S),Promise.reject(S)})))).finally(()=>{this.uppy.off("file-removed",a)})}}),Object.defineProperty(this,Wa,{writable:!0,value:()=>(ot(this,oi)[oi].setCompanionHeaders(this.opts.companionHeaders),Promise.resolve())}),Object.defineProperty(this,zc,{writable:!0,value:s=>{let o=ot(this,oo)[oo].getOptions(s),a=Array.isArray(o.allowedMetaFields)?o.allowedMetaFields:Object.keys(s.meta);return{...s.remote.body,protocol:"multipart",endpoint:o.endpoint,size:s.data.size,fieldname:o.fieldName,metadata:Object.fromEntries(a.map(l=>[l,s.meta[l]])),httpMethod:o.method,useFormData:o.formData,headers:typeof o.headers=="function"?o.headers(s):o.headers}}}),this.type="uploader",this.id=this.opts.id||"AwsS3",this.title="AWS S3",this.defaultLocale=Fv;let r={timeout:30*1e3,limit:0,allowedMetaFields:[],getUploadParameters:this.getUploadParameters.bind(this),shouldUseMultipart:!1,companionHeaders:{}};if(this.opts={...r,...t},t?.allowedMetaFields===void 0&&"metaFields"in this.opts)throw new Error("The `metaFields` option has been renamed to `allowedMetaFields`.");this.i18nInit(),ot(this,oi)[oi]=new tt(e,t),ot(this,Ui)[Ui]=new Mt(this.opts.limit)}[Ov](){return ot(this,oi)[oi]}get client(){return ot(this,oi)[oi]}set client(e){ot(this,oi)[oi]=e}getUploadParameters(e){if(!this.opts.companionUrl)throw new Error("Expected a `companionUrl` option containing a Companion address.");let t=e.meta.name,{type:r}=e.meta,s=Object.fromEntries(this.opts.allowedMetaFields.filter(a=>e.meta[a]!=null).map(a=>[`metadata[${a}]`,e.meta[a].toString()])),o=new URLSearchParams({filename:t,type:r,...s});return ot(this,oi)[oi].get(`s3/params?${o}`).then(y_)}uploadFile(e,t,r){let s=this.uppy.getFile(e);if(this.uppy.log(`uploading ${t} of ${r}`),s.error)throw new Error(s.error);if(s.isRemote){let o=n(()=>ot(this,Ui)[Ui],"getQueue"),a=new AbortController,l=n(p=>{p.id===s.id&&a.abort()},"removedHandler");this.uppy.on("file-removed",l);let h=s.remote.requestClient.uploadRemoteFile(s,ot(this,zc)[zc](s),{signal:a.signal,getQueue:o});return ot(this,Ui)[Ui].wrapSyncFunction(()=>{this.uppy.off("file-removed",l)},{priority:-1})(),h}return ot(this,oo)[oo].uploadLocalFile(s,t,r)}install(){let{uppy:e}=this;e.addPreProcessor(ot(this,Wa)[Wa]),e.addUploader(ot(this,Va)[Va]);function t(s,o){let a=this;return Bc(s,o)?{location:g_(o.responseURL,Ga(s,"Location")),bucket:Ga(s,"Bucket"),key:Ga(s,"Key"),etag:Ga(s,"ETag")}:a.method.toUpperCase()==="POST"?(Ev||(e.log("[AwsS3] No response data found, make sure to set the success_action_status AWS SDK option to 201. See https://uppy.io/docs/aws-s3/#POST-Uploads","warning"),Ev=!0),{location:null}):o.responseURL?{location:o.responseURL.replace(/\?.*$/,"")}:{location:null}}n(t,"defaultGetResponseData");let r={fieldName:"file",responseUrlFieldName:"location",timeout:this.opts.timeout,[us]:ot(this,Ui)[Ui],responseType:"text",getResponseData:this.opts.getResponseData||t,getResponseError:b_};r.i18n=this.i18n,ot(this,oo)[oo]=new Ko(e,r)}uninstall(){this.uppy.removePreProcessor(ot(this,Wa)[Wa]),this.uppy.removeUploader(ot(this,Va)[Va])}};n(no,"AwsS3");no.VERSION=m_.version;var kv="3.7.2",w_=kv,S_=typeof atob=="function",P_=typeof btoa=="function",Qo=typeof Buffer=="function",Cv=typeof TextDecoder=="function"?new TextDecoder:void 0,Tv=typeof TextEncoder=="function"?new TextEncoder:void 0,__="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",Ka=Array.prototype.slice.call(__),Ku=(i=>{let e={};return i.forEach((t,r)=>e[t]=r),e})(Ka),x_=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,vt=String.fromCharCode.bind(String),Av=typeof Uint8Array.from=="function"?Uint8Array.from.bind(Uint8Array):(i,e=t=>t)=>new Uint8Array(Array.prototype.slice.call(i,0).map(e)),Dv=n(i=>i.replace(/=/g,"").replace(/[+\/]/g,e=>e=="+"?"-":"_"),"_mkUriSafe"),Iv=n(i=>i.replace(/[^A-Za-z0-9\+\/]/g,""),"_tidyB64"),Nv=n(i=>{let e,t,r,s,o="",a=i.length%3;for(let l=0;l<i.length;){if((t=i.charCodeAt(l++))>255||(r=i.charCodeAt(l++))>255||(s=i.charCodeAt(l++))>255)throw new TypeError("invalid character found");e=t<<16|r<<8|s,o+=Ka[e>>18&63]+Ka[e>>12&63]+Ka[e>>6&63]+Ka[e&63]}return a?o.slice(0,a-3)+"===".substring(a):o},"btoaPolyfill"),$c=P_?i=>btoa(i):Qo?i=>Buffer.from(i,"binary").toString("base64"):Nv,jc=Qo?i=>Buffer.from(i).toString("base64"):i=>{let t=[];for(let r=0,s=i.length;r<s;r+=4096)t.push(vt.apply(null,i.subarray(r,r+4096)));return $c(t.join(""))},Xu=n((i,e=!1)=>e?Dv(jc(i)):jc(i),"fromUint8Array"),F_=n(i=>{if(i.length<2){var e=i.charCodeAt(0);return e<128?i:e<2048?vt(192|e>>>6)+vt(128|e&63):vt(224|e>>>12&15)+vt(128|e>>>6&63)+vt(128|e&63)}else{var e=65536+(i.charCodeAt(0)-55296)*1024+(i.charCodeAt(1)-56320);return vt(240|e>>>18&7)+vt(128|e>>>12&63)+vt(128|e>>>6&63)+vt(128|e&63)}},"cb_utob"),E_=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,Mv=n(i=>i.replace(E_,F_),"utob"),Rv=Qo?i=>Buffer.from(i,"utf8").toString("base64"):Tv?i=>jc(Tv.encode(i)):i=>$c(Mv(i)),Yo=n((i,e=!1)=>e?Dv(Rv(i)):Rv(i),"encode"),Uv=n(i=>Yo(i,!0),"encodeURI"),O_=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,C_=n(i=>{switch(i.length){case 4:var e=(7&i.charCodeAt(0))<<18|(63&i.charCodeAt(1))<<12|(63&i.charCodeAt(2))<<6|63&i.charCodeAt(3),t=e-65536;return vt((t>>>10)+55296)+vt((t&1023)+56320);case 3:return vt((15&i.charCodeAt(0))<<12|(63&i.charCodeAt(1))<<6|63&i.charCodeAt(2));default:return vt((31&i.charCodeAt(0))<<6|63&i.charCodeAt(1))}},"cb_btou"),Lv=n(i=>i.replace(O_,C_),"btou"),Bv=n(i=>{if(i=i.replace(/\s+/g,""),!x_.test(i))throw new TypeError("malformed base64.");i+="==".slice(2-(i.length&3));let e,t="",r,s;for(let o=0;o<i.length;)e=Ku[i.charAt(o++)]<<18|Ku[i.charAt(o++)]<<12|(r=Ku[i.charAt(o++)])<<6|(s=Ku[i.charAt(o++)]),t+=r===64?vt(e>>16&255):s===64?vt(e>>16&255,e>>8&255):vt(e>>16&255,e>>8&255,e&255);return t},"atobPolyfill"),qc=S_?i=>atob(Iv(i)):Qo?i=>Buffer.from(i,"base64").toString("binary"):Bv,zv=Qo?i=>Av(Buffer.from(i,"base64")):i=>Av(qc(i),e=>e.charCodeAt(0)),jv=n(i=>zv(Hv(i)),"toUint8Array"),T_=Qo?i=>Buffer.from(i,"base64").toString("utf8"):Cv?i=>Cv.decode(zv(i)):i=>Lv(qc(i)),Hv=n(i=>Iv(i.replace(/[-_]/g,e=>e=="-"?"+":"/")),"_unURI"),Hc=n(i=>T_(Hv(i)),"decode"),A_=n(i=>{if(typeof i!="string")return!1;let e=i.replace(/\s+/g,"").replace(/={0,2}$/,"");return!/[^\s0-9a-zA-Z\+/]/.test(e)||!/[^\s0-9a-zA-Z\-_]/.test(e)},"isValid"),$v=n(i=>({value:i,enumerable:!1,writable:!0,configurable:!0}),"_noEnum"),qv=n(function(){let i=n((e,t)=>Object.defineProperty(String.prototype,e,$v(t)),"_add");i("fromBase64",function(){return Hc(this)}),i("toBase64",function(e){return Yo(this,e)}),i("toBase64URI",function(){return Yo(this,!0)}),i("toBase64URL",function(){return Yo(this,!0)}),i("toUint8Array",function(){return jv(this)})},"extendString"),Vv=n(function(){let i=n((e,t)=>Object.defineProperty(Uint8Array.prototype,e,$v(t)),"_add");i("toBase64",function(e){return Xu(this,e)}),i("toBase64URI",function(){return Xu(this,!0)}),i("toBase64URL",function(){return Xu(this,!0)})},"extendUint8Array"),R_=n(()=>{qv(),Vv()},"extendBuiltins"),Wv={version:kv,VERSION:w_,atob:qc,atobPolyfill:Bv,btoa:$c,btoaPolyfill:Nv,fromBase64:Hc,toBase64:Yo,encode:Yo,encodeURI:Uv,encodeURL:Uv,utob:Mv,btou:Lv,decode:Hc,isValid:A_,fromUint8Array:Xu,toUint8Array:jv,extendString:qv,extendUint8Array:Vv,extendBuiltins:R_};var y0=de(o0());function Kc(i){"@babel/helpers - typeof";return Kc=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Kc(i)}n(Kc,"_typeof");function n0(i,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(i,r.key,r)}}n(n0,"_defineProperties");function $_(i,e,t){return e&&n0(i.prototype,e),t&&n0(i,t),Object.defineProperty(i,"prototype",{writable:!1}),i}n($_,"_createClass");function q_(i,e){if(!(i instanceof e))throw new TypeError("Cannot call a class as a function")}n(q_,"_classCallCheck");function V_(i,e){if(typeof e!="function"&&e!==null)throw new TypeError("Super expression must either be null or a function");i.prototype=Object.create(e&&e.prototype,{constructor:{value:i,writable:!0,configurable:!0}}),Object.defineProperty(i,"prototype",{writable:!1}),e&&Xa(i,e)}n(V_,"_inherits");function W_(i){var e=a0();return n(function(){var r=Ya(i),s;if(e){var o=Ya(this).constructor;s=Reflect.construct(r,arguments,o)}else s=r.apply(this,arguments);return G_(this,s)},"_createSuperInternal")}n(W_,"_createSuper");function G_(i,e){if(e&&(Kc(e)==="object"||typeof e=="function"))return e;if(e!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return K_(i)}n(G_,"_possibleConstructorReturn");function K_(i){if(i===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return i}n(K_,"_assertThisInitialized");function Xc(i){var e=typeof Map=="function"?new Map:void 0;return Xc=n(function(r){if(r===null||!X_(r))return r;if(typeof r!="function")throw new TypeError("Super expression must either be null or a function");if(typeof e<"u"){if(e.has(r))return e.get(r);e.set(r,s)}function s(){return Qu(r,arguments,Ya(this).constructor)}return n(s,"Wrapper"),s.prototype=Object.create(r.prototype,{constructor:{value:s,enumerable:!1,writable:!0,configurable:!0}}),Xa(s,r)},"_wrapNativeSuper"),Xc(i)}n(Xc,"_wrapNativeSuper");function Qu(i,e,t){return a0()?Qu=Reflect.construct.bind():Qu=n(function(s,o,a){var l=[null];l.push.apply(l,o);var h=Function.bind.apply(s,l),p=new h;return a&&Xa(p,a.prototype),p},"_construct"),Qu.apply(null,arguments)}n(Qu,"_construct");function a0(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}n(a0,"_isNativeReflectConstruct");function X_(i){return Function.toString.call(i).indexOf("[native code]")!==-1}n(X_,"_isNativeFunction");function Xa(i,e){return Xa=Object.setPrototypeOf?Object.setPrototypeOf.bind():n(function(r,s){return r.__proto__=s,r},"_setPrototypeOf"),Xa(i,e)}n(Xa,"_setPrototypeOf");function Ya(i){return Ya=Object.setPrototypeOf?Object.getPrototypeOf.bind():n(function(t){return t.__proto__||Object.getPrototypeOf(t)},"_getPrototypeOf"),Ya(i)}n(Ya,"_getPrototypeOf");var Y_=function(i){V_(t,i);var e=W_(t);function t(r){var s,o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null,l=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null;if(q_(this,t),s=e.call(this,r),s.originalRequest=a,s.originalResponse=l,s.causingError=o,o!=null&&(r+=", caused by ".concat(o.toString())),a!=null){var h=a.getHeader("X-Request-ID")||"n/a",p=a.getMethod(),d=a.getURL(),f=l?l.getStatus():"n/a",y=l?l.getBody()||"":"n/a";r+=", originated from request (method: ".concat(p,", url: ").concat(d,", response code: ").concat(f,", response text: ").concat(y,", request id: ").concat(h,")")}return s.message=r,s}return n(t,"DetailedError"),$_(t)}(Xc(Error)),Jo=Y_;var Q_=!1;function cs(i){Q_&&console.log(i)}n(cs,"log");function Yc(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(i){var e=Math.random()*16|0,t=i==="x"?e:e&3|8;return t.toString(16)})}n(Yc,"uuid");function g0(i,e){return t5(i)||e5(i,e)||Z_(i,e)||J_()}n(g0,"_slicedToArray");function J_(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}n(J_,"_nonIterableRest");function Z_(i,e){if(i){if(typeof i=="string")return l0(i,e);var t=Object.prototype.toString.call(i).slice(8,-1);if(t==="Object"&&i.constructor&&(t=i.constructor.name),t==="Map"||t==="Set")return Array.from(i);if(t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return l0(i,e)}}n(Z_,"_unsupportedIterableToArray");function l0(i,e){(e==null||e>i.length)&&(e=i.length);for(var t=0,r=new Array(e);t<e;t++)r[t]=i[t];return r}n(l0,"_arrayLikeToArray");function e5(i,e){var t=i==null?null:typeof Symbol<"u"&&i[Symbol.iterator]||i["@@iterator"];if(t!=null){var r=[],s=!0,o=!1,a,l;try{for(t=t.call(i);!(s=(a=t.next()).done)&&(r.push(a.value),!(e&&r.length===e));s=!0);}catch(h){o=!0,l=h}finally{try{!s&&t.return!=null&&t.return()}finally{if(o)throw l}}return r}}n(e5,"_iterableToArrayLimit");function t5(i){if(Array.isArray(i))return i}n(t5,"_arrayWithHoles");function u0(i,e){var t=Object.keys(i);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(i);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(i,s).enumerable})),t.push.apply(t,r)}return t}n(u0,"ownKeys");function Zo(i){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?u0(Object(t),!0).forEach(function(r){i5(i,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(i,Object.getOwnPropertyDescriptors(t)):u0(Object(t)).forEach(function(r){Object.defineProperty(i,r,Object.getOwnPropertyDescriptor(t,r))})}return i}n(Zo,"_objectSpread");function i5(i,e,t){return e in i?Object.defineProperty(i,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):i[e]=t,i}n(i5,"_defineProperty");function r5(i,e){if(!(i instanceof e))throw new TypeError("Cannot call a class as a function")}n(r5,"_classCallCheck");function h0(i,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(i,r.key,r)}}n(h0,"_defineProperties");function s5(i,e,t){return e&&h0(i.prototype,e),t&&h0(i,t),Object.defineProperty(i,"prototype",{writable:!1}),i}n(s5,"_createClass");var o5={endpoint:null,uploadUrl:null,metadata:{},fingerprint:null,uploadSize:null,onProgress:null,onChunkComplete:null,onSuccess:null,onError:null,_onUploadUrlAvailable:null,overridePatchMethod:!1,headers:{},addRequestId:!1,onBeforeRequest:null,onAfterResponse:null,onShouldRetry:null,chunkSize:1/0,retryDelays:[0,1e3,3e3,5e3],parallelUploads:1,parallelUploadBoundaries:null,storeFingerprintForResuming:!0,removeFingerprintOnSuccess:!1,uploadLengthDeferred:!1,uploadDataDuringCreation:!1,urlStorage:null,fileReader:null,httpStack:null},v0=function(){function i(e,t){r5(this,i),"resume"in t&&console.log("tus: The `resume` option has been removed in tus-js-client v2. Please use the URL storage API instead."),this.options=t,this.options.chunkSize=Number(this.options.chunkSize),this._urlStorage=this.options.urlStorage,this.file=e,this.url=null,this._req=null,this._fingerprint=null,this._urlStorageKey=null,this._offset=null,this._aborted=!1,this._size=null,this._source=null,this._retryAttempt=0,this._retryTimeout=null,this._offsetBeforeRetry=0,this._parallelUploads=null,this._parallelUploadUrls=null}return n(i,"BaseUpload"),s5(i,[{key:"findPreviousUploads",value:n(function(){var t=this;return this.options.fingerprint(this.file,this.options).then(function(r){return t._urlStorage.findUploadsByFingerprint(r)})},"findPreviousUploads")},{key:"resumeFromPreviousUpload",value:n(function(t){this.url=t.uploadUrl||null,this._parallelUploadUrls=t.parallelUploadUrls||null,this._urlStorageKey=t.urlStorageKey},"resumeFromPreviousUpload")},{key:"start",value:n(function(){var t=this,r=this.file;if(!r){this._emitError(new Error("tus: no file or stream to upload provided"));return}if(!this.options.endpoint&&!this.options.uploadUrl&&!this.url){this._emitError(new Error("tus: neither an endpoint or an upload URL is provided"));return}var s=this.options.retryDelays;if(s!=null&&Object.prototype.toString.call(s)!=="[object Array]"){this._emitError(new Error("tus: the `retryDelays` option must either be an array or null"));return}if(this.options.parallelUploads>1)for(var o=0,a=["uploadUrl","uploadSize","uploadLengthDeferred"];o<a.length;o++){var l=a[o];if(this.options[l]){this._emitError(new Error("tus: cannot use the ".concat(l," option when parallelUploads is enabled")));return}}if(this.options.parallelUploadBoundaries){if(this.options.parallelUploads<=1){this._emitError(new Error("tus: cannot use the `parallelUploadBoundaries` option when `parallelUploads` is disabled"));return}if(this.options.parallelUploads!==this.options.parallelUploadBoundaries.length){this._emitError(new Error("tus: the `parallelUploadBoundaries` must have the same length as the value of `parallelUploads`"));return}}this.options.fingerprint(r,this.options).then(function(h){return h==null?cs("No fingerprint was calculated meaning that the upload cannot be stored in the URL storage."):cs("Calculated fingerprint: ".concat(h)),t._fingerprint=h,t._source?t._source:t.options.fileReader.openFile(r,t.options.chunkSize)}).then(function(h){if(t._source=h,t.options.uploadLengthDeferred)t._size=null;else if(t.options.uploadSize!=null){if(t._size=Number(t.options.uploadSize),Number.isNaN(t._size)){t._emitError(new Error("tus: cannot convert `uploadSize` option into a number"));return}}else if(t._size=t._source.size,t._size==null){t._emitError(new Error("tus: cannot automatically derive upload's size from input. Specify it manually using the `uploadSize` option or use the `uploadLengthDeferred` option"));return}t.options.parallelUploads>1||t._parallelUploadUrls!=null?t._startParallelUpload():t._startSingleUpload()}).catch(function(h){t._emitError(h)})},"start")},{key:"_startParallelUpload",value:n(function(){var t,r=this,s=this._size,o=0;this._parallelUploads=[];var a=this._parallelUploadUrls!=null?this._parallelUploadUrls.length:this.options.parallelUploads,l=(t=this.options.parallelUploadBoundaries)!==null&&t!==void 0?t:a5(this._source.size,a);this._parallelUploadUrls&&l.forEach(function(d,f){d.uploadUrl=r._parallelUploadUrls[f]||null}),this._parallelUploadUrls=new Array(l.length);var h=l.map(function(d,f){var y=0;return r._source.slice(d.start,d.end).then(function(b){var S=b.value;return new Promise(function(E,x){var F=Zo(Zo({},r.options),{},{uploadUrl:d.uploadUrl||null,storeFingerprintForResuming:!1,removeFingerprintOnSuccess:!1,parallelUploads:1,parallelUploadBoundaries:null,metadata:{},headers:Zo(Zo({},r.options.headers),{},{"Upload-Concat":"partial"}),onSuccess:E,onError:x,onProgress:n(function(G){o=o-y+G,y=G,r._emitProgress(o,s)},"onProgress"),_onUploadUrlAvailable:n(function(){r._parallelUploadUrls[f]=U.url,r._parallelUploadUrls.filter(function(G){return!!G}).length===l.length&&r._saveUploadInUrlStorage()},"_onUploadUrlAvailable")}),U=new i(S,F);U.start(),r._parallelUploads.push(U)})})}),p;Promise.all(h).then(function(){p=r._openRequest("POST",r.options.endpoint),p.setHeader("Upload-Concat","final;".concat(r._parallelUploadUrls.join(" ")));var d=d0(r.options.metadata);return d!==""&&p.setHeader("Upload-Metadata",d),r._sendRequest(p,null)}).then(function(d){if(!en(d.getStatus(),200)){r._emitHttpError(p,d,"tus: unexpected response while creating upload");return}var f=d.getHeader("Location");if(f==null){r._emitHttpError(p,d,"tus: invalid or missing Location header");return}r.url=m0(r.options.endpoint,f),cs("Created upload at ".concat(r.url)),r._emitSuccess()}).catch(function(d){r._emitError(d)})},"_startParallelUpload")},{key:"_startSingleUpload",value:n(function(){if(this._aborted=!1,this.url!=null){cs("Resuming upload from previous URL: ".concat(this.url)),this._resumeUpload();return}if(this.options.uploadUrl!=null){cs("Resuming upload from provided URL: ".concat(this.options.uploadUrl)),this.url=this.options.uploadUrl,this._resumeUpload();return}cs("Creating a new upload"),this._createUpload()},"_startSingleUpload")},{key:"abort",value:n(function(t){var r=this;return this._parallelUploads!=null&&this._parallelUploads.forEach(function(s){s.abort(t)}),this._req!==null&&this._req.abort(),this._aborted=!0,this._retryTimeout!=null&&(clearTimeout(this._retryTimeout),this._retryTimeout=null),!t||this.url==null?Promise.resolve():i.terminate(this.url,this.options).then(function(){return r._removeFromUrlStorage()})},"abort")},{key:"_emitHttpError",value:n(function(t,r,s,o){this._emitError(new Jo(s,o,t,r))},"_emitHttpError")},{key:"_emitError",value:n(function(t){var r=this;if(!this._aborted){if(this.options.retryDelays!=null){var s=this._offset!=null&&this._offset>this._offsetBeforeRetry;if(s&&(this._retryAttempt=0),f0(t,this._retryAttempt,this.options)){var o=this.options.retryDelays[this._retryAttempt++];this._offsetBeforeRetry=this._offset,this._retryTimeout=setTimeout(function(){r.start()},o);return}}if(typeof this.options.onError=="function")this.options.onError(t);else throw t}},"_emitError")},{key:"_emitSuccess",value:n(function(){this.options.removeFingerprintOnSuccess&&this._removeFromUrlStorage(),typeof this.options.onSuccess=="function"&&this.options.onSuccess()},"_emitSuccess")},{key:"_emitProgress",value:n(function(t,r){typeof this.options.onProgress=="function"&&this.options.onProgress(t,r)},"_emitProgress")},{key:"_emitChunkComplete",value:n(function(t,r,s){typeof this.options.onChunkComplete=="function"&&this.options.onChunkComplete(t,r,s)},"_emitChunkComplete")},{key:"_createUpload",value:n(function(){var t=this;if(!this.options.endpoint){this._emitError(new Error("tus: unable to create upload because no endpoint is provided"));return}var r=this._openRequest("POST",this.options.endpoint);this.options.uploadLengthDeferred?r.setHeader("Upload-Defer-Length",1):r.setHeader("Upload-Length",this._size);var s=d0(this.options.metadata);s!==""&&r.setHeader("Upload-Metadata",s);var o;this.options.uploadDataDuringCreation&&!this.options.uploadLengthDeferred?(this._offset=0,o=this._addChunkToRequest(r)):o=this._sendRequest(r,null),o.then(function(a){if(!en(a.getStatus(),200)){t._emitHttpError(r,a,"tus: unexpected response while creating upload");return}var l=a.getHeader("Location");if(l==null){t._emitHttpError(r,a,"tus: invalid or missing Location header");return}if(t.url=m0(t.options.endpoint,l),cs("Created upload at ".concat(t.url)),typeof t.options._onUploadUrlAvailable=="function"&&t.options._onUploadUrlAvailable(),t._size===0){t._emitSuccess(),t._source.close();return}t._saveUploadInUrlStorage().then(function(){t.options.uploadDataDuringCreation?t._handleUploadResponse(r,a):(t._offset=0,t._performUpload())})}).catch(function(a){t._emitHttpError(r,null,"tus: failed to create upload",a)})},"_createUpload")},{key:"_resumeUpload",value:n(function(){var t=this,r=this._openRequest("HEAD",this.url),s=this._sendRequest(r,null);s.then(function(o){var a=o.getStatus();if(!en(a,200)){if(a===423){t._emitHttpError(r,o,"tus: upload is currently locked; retry later");return}if(en(a,400)&&t._removeFromUrlStorage(),!t.options.endpoint){t._emitHttpError(r,o,"tus: unable to resume upload (new upload cannot be created without an endpoint)");return}t.url=null,t._createUpload();return}var l=parseInt(o.getHeader("Upload-Offset"),10);if(Number.isNaN(l)){t._emitHttpError(r,o,"tus: invalid or missing offset value");return}var h=parseInt(o.getHeader("Upload-Length"),10);if(Number.isNaN(h)&&!t.options.uploadLengthDeferred){t._emitHttpError(r,o,"tus: invalid or missing length value");return}typeof t.options._onUploadUrlAvailable=="function"&&t.options._onUploadUrlAvailable(),t._saveUploadInUrlStorage().then(function(){if(l===h){t._emitProgress(h,h),t._emitSuccess();return}t._offset=l,t._performUpload()})}).catch(function(o){t._emitHttpError(r,null,"tus: failed to resume upload",o)})},"_resumeUpload")},{key:"_performUpload",value:n(function(){var t=this;if(!this._aborted){var r;this.options.overridePatchMethod?(r=this._openRequest("POST",this.url),r.setHeader("X-HTTP-Method-Override","PATCH")):r=this._openRequest("PATCH",this.url),r.setHeader("Upload-Offset",this._offset);var s=this._addChunkToRequest(r);s.then(function(o){if(!en(o.getStatus(),200)){t._emitHttpError(r,o,"tus: unexpected response while uploading chunk");return}t._handleUploadResponse(r,o)}).catch(function(o){t._aborted||t._emitHttpError(r,null,"tus: failed to upload chunk at offset ".concat(t._offset),o)})}},"_performUpload")},{key:"_addChunkToRequest",value:n(function(t){var r=this,s=this._offset,o=this._offset+this.options.chunkSize;return t.setProgressHandler(function(a){r._emitProgress(s+a,r._size)}),t.setHeader("Content-Type","application/offset+octet-stream"),(o===1/0||o>this._size)&&!this.options.uploadLengthDeferred&&(o=this._size),this._source.slice(s,o).then(function(a){var l=a.value,h=a.done;return r.options.uploadLengthDeferred&&h&&(r._size=r._offset+(l&&l.size?l.size:0),t.setHeader("Upload-Length",r._size)),l===null?r._sendRequest(t):(r._emitProgress(r._offset,r._size),r._sendRequest(t,l))})},"_addChunkToRequest")},{key:"_handleUploadResponse",value:n(function(t,r){var s=parseInt(r.getHeader("Upload-Offset"),10);if(Number.isNaN(s)){this._emitHttpError(t,r,"tus: invalid or missing offset value");return}if(this._emitProgress(s,this._size),this._emitChunkComplete(s-this._offset,s,this._size),this._offset=s,s===this._size){this._emitSuccess(),this._source.close();return}this._performUpload()},"_handleUploadResponse")},{key:"_openRequest",value:n(function(t,r){var s=c0(t,r,this.options);return this._req=s,s},"_openRequest")},{key:"_removeFromUrlStorage",value:n(function(){var t=this;this._urlStorageKey&&(this._urlStorage.removeUpload(this._urlStorageKey).catch(function(r){t._emitError(r)}),this._urlStorageKey=null)},"_removeFromUrlStorage")},{key:"_saveUploadInUrlStorage",value:n(function(){var t=this;if(!this.options.storeFingerprintForResuming||!this._fingerprint||this._urlStorageKey!==null)return Promise.resolve();var r={size:this._size,metadata:this.options.metadata,creationTime:new Date().toString()};return this._parallelUploads?r.parallelUploadUrls=this._parallelUploadUrls:r.uploadUrl=this.url,this._urlStorage.addUpload(this._fingerprint,r).then(function(s){t._urlStorageKey=s})},"_saveUploadInUrlStorage")},{key:"_sendRequest",value:n(function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;return p0(t,r,this.options)},"_sendRequest")}],[{key:"terminate",value:n(function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},s=c0("DELETE",t,r);return p0(s,null,r).then(function(o){if(o.getStatus()!==204)throw new Jo("tus: unexpected response while terminating upload",null,s,o)}).catch(function(o){if(o instanceof Jo||(o=new Jo("tus: failed to terminate upload",o,s,null)),!f0(o,0,r))throw o;var a=r.retryDelays[0],l=r.retryDelays.slice(1),h=Zo(Zo({},r),{},{retryDelays:l});return new Promise(function(p){return setTimeout(p,a)}).then(function(){return i.terminate(t,h)})})},"terminate")}]),i}();function d0(i){return Object.entries(i).map(function(e){var t=g0(e,2),r=t[0],s=t[1];return"".concat(r," ").concat(Wv.encode(String(s)))}).join(",")}n(d0,"encodeMetadata");function en(i,e){return i>=e&&i<e+100}n(en,"inStatusCategory");function c0(i,e,t){var r=t.httpStack.createRequest(i,e);r.setHeader("Tus-Resumable","1.0.0");var s=t.headers||{};if(Object.entries(s).forEach(function(a){var l=g0(a,2),h=l[0],p=l[1];r.setHeader(h,p)}),t.addRequestId){var o=Yc();r.setHeader("X-Request-ID",o)}return r}n(c0,"openRequest");function p0(i,e,t){var r=typeof t.onBeforeRequest=="function"?Promise.resolve(t.onBeforeRequest(i)):Promise.resolve();return r.then(function(){return i.send(e).then(function(s){var o=typeof t.onAfterResponse=="function"?Promise.resolve(t.onAfterResponse(i,s)):Promise.resolve();return o.then(function(){return s})})})}n(p0,"sendRequest");function n5(){var i=!0;return typeof window<"u"&&"navigator"in window&&window.navigator.onLine===!1&&(i=!1),i}n(n5,"isOnline");function f0(i,e,t){if(t.retryDelays==null||e>=t.retryDelays.length||i.originalRequest==null)return!1;if(t&&typeof t.onShouldRetry=="function")return t.onShouldRetry(i,e,t);var r=i.originalResponse?i.originalResponse.getStatus():0;return(!en(r,400)||r===409||r===423)&&n5()}n(f0,"shouldRetry");function m0(i,e){return new y0.default(e,i).toString()}n(m0,"resolveUrl");function a5(i,e){for(var t=Math.floor(i/e),r=[],s=0;s<e;s++)r.push({start:t*s,end:t*(s+1)});return r[e-1].end=i,r}n(a5,"splitSizeIntoParts");v0.defaultOptions=o5;var Ju=v0;function l5(i,e){if(!(i instanceof e))throw new TypeError("Cannot call a class as a function")}n(l5,"_classCallCheck");function b0(i,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(i,r.key,r)}}n(b0,"_defineProperties");function u5(i,e,t){return e&&b0(i.prototype,e),t&&b0(i,t),Object.defineProperty(i,"prototype",{writable:!1}),i}n(u5,"_createClass");var w0=function(){function i(){l5(this,i)}return n(i,"NoopUrlStorage"),u5(i,[{key:"listAllUploads",value:n(function(){return Promise.resolve([])},"listAllUploads")},{key:"findUploadsByFingerprint",value:n(function(t){return Promise.resolve([])},"findUploadsByFingerprint")},{key:"removeUpload",value:n(function(t){return Promise.resolve()},"removeUpload")},{key:"addUpload",value:n(function(t,r){return Promise.resolve(null)},"addUpload")}]),i}();function h5(i,e){if(!(i instanceof e))throw new TypeError("Cannot call a class as a function")}n(h5,"_classCallCheck");function S0(i,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(i,r.key,r)}}n(S0,"_defineProperties");function d5(i,e,t){return e&&S0(i.prototype,e),t&&S0(i,t),Object.defineProperty(i,"prototype",{writable:!1}),i}n(d5,"_createClass");var Jc=!1;try{Jc="localStorage"in window,Qc="tusSupport",localStorage.setItem(Qc,localStorage.getItem(Qc))}catch(i){if(i.code===i.SECURITY_ERR||i.code===i.QUOTA_EXCEEDED_ERR)Jc=!1;else throw i}var Qc,P0=Jc,_0=function(){function i(){h5(this,i)}return n(i,"WebStorageUrlStorage"),d5(i,[{key:"findAllUploads",value:n(function(){var t=this._findEntries("tus::");return Promise.resolve(t)},"findAllUploads")},{key:"findUploadsByFingerprint",value:n(function(t){var r=this._findEntries("tus::".concat(t,"::"));return Promise.resolve(r)},"findUploadsByFingerprint")},{key:"removeUpload",value:n(function(t){return localStorage.removeItem(t),Promise.resolve()},"removeUpload")},{key:"addUpload",value:n(function(t,r){var s=Math.round(Math.random()*1e12),o="tus::".concat(t,"::").concat(s);return localStorage.setItem(o,JSON.stringify(r)),Promise.resolve(o)},"addUpload")},{key:"_findEntries",value:n(function(t){for(var r=[],s=0;s<localStorage.length;s++){var o=localStorage.key(s);if(o.indexOf(t)===0)try{var a=JSON.parse(localStorage.getItem(o));a.urlStorageKey=o,r.push(a)}catch{}}return r},"_findEntries")}]),i}();function Zc(i,e){if(!(i instanceof e))throw new TypeError("Cannot call a class as a function")}n(Zc,"_classCallCheck");function x0(i,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(i,r.key,r)}}n(x0,"_defineProperties");function ep(i,e,t){return e&&x0(i.prototype,e),t&&x0(i,t),Object.defineProperty(i,"prototype",{writable:!1}),i}n(ep,"_createClass");var F0=function(){function i(){Zc(this,i)}return n(i,"XHRHttpStack"),ep(i,[{key:"createRequest",value:n(function(t,r){return new c5(t,r)},"createRequest")},{key:"getName",value:n(function(){return"XHRHttpStack"},"getName")}]),i}();var c5=function(){function i(e,t){Zc(this,i),this._xhr=new XMLHttpRequest,this._xhr.open(e,t,!0),this._method=e,this._url=t,this._headers={}}return n(i,"Request"),ep(i,[{key:"getMethod",value:n(function(){return this._method},"getMethod")},{key:"getURL",value:n(function(){return this._url},"getURL")},{key:"setHeader",value:n(function(t,r){this._xhr.setRequestHeader(t,r),this._headers[t]=r},"setHeader")},{key:"getHeader",value:n(function(t){return this._headers[t]},"getHeader")},{key:"setProgressHandler",value:n(function(t){"upload"in this._xhr&&(this._xhr.upload.onprogress=function(r){r.lengthComputable&&t(r.loaded)})},"setProgressHandler")},{key:"send",value:n(function(){var t=this,r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null;return new Promise(function(s,o){t._xhr.onload=function(){s(new p5(t._xhr))},t._xhr.onerror=function(a){o(a)},t._xhr.send(r)})},"send")},{key:"abort",value:n(function(){return this._xhr.abort(),Promise.resolve()},"abort")},{key:"getUnderlyingObject",value:n(function(){return this._xhr},"getUnderlyingObject")}]),i}(),p5=function(){function i(e){Zc(this,i),this._xhr=e}return n(i,"Response"),ep(i,[{key:"getStatus",value:n(function(){return this._xhr.status},"getStatus")},{key:"getHeader",value:n(function(t){return this._xhr.getResponseHeader(t)},"getHeader")},{key:"getBody",value:n(function(){return this._xhr.responseText},"getBody")},{key:"getUnderlyingObject",value:n(function(){return this._xhr},"getUnderlyingObject")}]),i}();var f5=n(function(){return typeof navigator<"u"&&typeof navigator.product=="string"&&navigator.product.toLowerCase()==="reactnative"},"isReactNative"),Zu=f5;function tp(i){return new Promise(function(e,t){var r=new XMLHttpRequest;r.responseType="blob",r.onload=function(){var s=r.response;e(s)},r.onerror=function(s){t(s)},r.open("GET",i),r.send()})}n(tp,"uriToBlob");var m5=n(function(){return typeof window<"u"&&(typeof window.PhoneGap<"u"||typeof window.Cordova<"u"||typeof window.cordova<"u")},"isCordova"),E0=m5;function ip(i){return new Promise(function(e,t){var r=new FileReader;r.onload=function(){var s=new Uint8Array(r.result);e({value:s})},r.onerror=function(s){t(s)},r.readAsArrayBuffer(i)})}n(ip,"readAsByteArray");function g5(i,e){if(!(i instanceof e))throw new TypeError("Cannot call a class as a function")}n(g5,"_classCallCheck");function O0(i,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(i,r.key,r)}}n(O0,"_defineProperties");function y5(i,e,t){return e&&O0(i.prototype,e),t&&O0(i,t),Object.defineProperty(i,"prototype",{writable:!1}),i}n(y5,"_createClass");var rp=function(){function i(e){g5(this,i),this._file=e,this.size=e.size}return n(i,"FileSource"),y5(i,[{key:"slice",value:n(function(t,r){if(E0())return ip(this._file.slice(t,r));var s=this._file.slice(t,r);return Promise.resolve({value:s})},"slice")},{key:"close",value:n(function(){},"close")}]),i}();function v5(i,e){if(!(i instanceof e))throw new TypeError("Cannot call a class as a function")}n(v5,"_classCallCheck");function C0(i,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(i,r.key,r)}}n(C0,"_defineProperties");function b5(i,e,t){return e&&C0(i.prototype,e),t&&C0(i,t),Object.defineProperty(i,"prototype",{writable:!1}),i}n(b5,"_createClass");function T0(i){return i===void 0?0:i.size!==void 0?i.size:i.length}n(T0,"len");function w5(i,e){if(i.concat)return i.concat(e);if(i instanceof Blob)return new Blob([i,e],{type:i.type});if(i.set){var t=new i.constructor(i.length+e.length);return t.set(i),t.set(e,i.length),t}throw new Error("Unknown data type")}n(w5,"concat");var A0=function(){function i(e){v5(this,i),this._buffer=void 0,this._bufferOffset=0,this._reader=e,this._done=!1}return n(i,"StreamSource"),b5(i,[{key:"slice",value:n(function(t,r){return t<this._bufferOffset?Promise.reject(new Error("Requested data is before the reader's current offset")):this._readUntilEnoughDataOrDone(t,r)},"slice")},{key:"_readUntilEnoughDataOrDone",value:n(function(t,r){var s=this,o=r<=this._bufferOffset+T0(this._buffer);if(this._done||o){var a=this._getDataFromBuffer(t,r),l=a==null?this._done:!1;return Promise.resolve({value:a,done:l})}return this._reader.read().then(function(h){var p=h.value,d=h.done;return d?s._done=!0:s._buffer===void 0?s._buffer=p:s._buffer=w5(s._buffer,p),s._readUntilEnoughDataOrDone(t,r)})},"_readUntilEnoughDataOrDone")},{key:"_getDataFromBuffer",value:n(function(t,r){t>this._bufferOffset&&(this._buffer=this._buffer.slice(t-this._bufferOffset),this._bufferOffset=t);var s=T0(this._buffer)===0;return this._done&&s?null:this._buffer.slice(0,r-t)},"_getDataFromBuffer")},{key:"close",value:n(function(){this._reader.cancel&&this._reader.cancel()},"close")}]),i}();function S5(i,e){if(!(i instanceof e))throw new TypeError("Cannot call a class as a function")}n(S5,"_classCallCheck");function R0(i,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(i,r.key,r)}}n(R0,"_defineProperties");function P5(i,e,t){return e&&R0(i.prototype,e),t&&R0(i,t),Object.defineProperty(i,"prototype",{writable:!1}),i}n(P5,"_createClass");var U0=function(){function i(){S5(this,i)}return n(i,"FileReader"),P5(i,[{key:"openFile",value:n(function(t,r){return Zu()&&t&&typeof t.uri<"u"?tp(t.uri).then(function(s){return new rp(s)}).catch(function(s){throw new Error("tus: cannot fetch `file.uri` as Blob, make sure the uri is correct and accessible. ".concat(s))}):typeof t.slice=="function"&&typeof t.size<"u"?Promise.resolve(new rp(t)):typeof t.read=="function"?(r=Number(r),Number.isFinite(r)?Promise.resolve(new A0(t,r)):Promise.reject(new Error("cannot create source for stream without a finite value for the `chunkSize` option"))):Promise.reject(new Error("source object may only be an instance of File, Blob, or Reader in this environment"))},"openFile")}]),i}();function sp(i,e){return Zu()?Promise.resolve(_5(i,e)):Promise.resolve(["tus-br",i.name,i.type,i.size,i.lastModified,e.endpoint].join("-"))}n(sp,"fingerprint");function _5(i,e){var t=i.exif?x5(JSON.stringify(i.exif)):"noexif";return["tus-rn",i.name||"noname",i.size||"nosize",t,e.endpoint].join("/")}n(_5,"reactNativeFingerprint");function x5(i){var e=0;if(i.length===0)return e;for(var t=0;t<i.length;t++){var r=i.charCodeAt(t);e=(e<<5)-e+r,e&=e}return e}n(x5,"hashCode");function op(i){"@babel/helpers - typeof";return op=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},op(i)}n(op,"_typeof");function F5(i,e){if(!(i instanceof e))throw new TypeError("Cannot call a class as a function")}n(F5,"_classCallCheck");function k0(i,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(i,r.key,r)}}n(k0,"_defineProperties");function E5(i,e,t){return e&&k0(i.prototype,e),t&&k0(i,t),Object.defineProperty(i,"prototype",{writable:!1}),i}n(E5,"_createClass");function O5(i,e){if(typeof e!="function"&&e!==null)throw new TypeError("Super expression must either be null or a function");i.prototype=Object.create(e&&e.prototype,{constructor:{value:i,writable:!0,configurable:!0}}),Object.defineProperty(i,"prototype",{writable:!1}),e&&np(i,e)}n(O5,"_inherits");function np(i,e){return np=Object.setPrototypeOf?Object.setPrototypeOf.bind():n(function(r,s){return r.__proto__=s,r},"_setPrototypeOf"),np(i,e)}n(np,"_setPrototypeOf");function C5(i){var e=R5();return n(function(){var r=eh(i),s;if(e){var o=eh(this).constructor;s=Reflect.construct(r,arguments,o)}else s=r.apply(this,arguments);return T5(this,s)},"_createSuperInternal")}n(C5,"_createSuper");function T5(i,e){if(e&&(op(e)==="object"||typeof e=="function"))return e;if(e!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return A5(i)}n(T5,"_possibleConstructorReturn");function A5(i){if(i===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return i}n(A5,"_assertThisInitialized");function R5(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}n(R5,"_isNativeReflectConstruct");function eh(i){return eh=Object.setPrototypeOf?Object.getPrototypeOf.bind():n(function(t){return t.__proto__||Object.getPrototypeOf(t)},"_getPrototypeOf"),eh(i)}n(eh,"_getPrototypeOf");function D0(i,e){var t=Object.keys(i);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(i);e&&(r=r.filter(function(s){return Object.getOwnPropertyDescriptor(i,s).enumerable})),t.push.apply(t,r)}return t}n(D0,"ownKeys");function tn(i){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?D0(Object(t),!0).forEach(function(r){U5(i,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(i,Object.getOwnPropertyDescriptors(t)):D0(Object(t)).forEach(function(r){Object.defineProperty(i,r,Object.getOwnPropertyDescriptor(t,r))})}return i}n(tn,"_objectSpread");function U5(i,e,t){return e in i?Object.defineProperty(i,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):i[e]=t,i}n(U5,"_defineProperty");var th=tn(tn({},Ju.defaultOptions),{},{httpStack:new F0,fileReader:new U0,urlStorage:P0?new _0:new w0,fingerprint:sp}),N0=function(i){O5(t,i);var e=C5(t);function t(){var r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return F5(this,t),s=tn(tn({},th),s),e.call(this,r,s)}return n(t,"Upload"),E5(t,null,[{key:"terminate",value:n(function(s,o,a){return o=tn(tn({},th),o),Ju.terminate(s,o,a)},"terminate")}]),t}(Ju),M0=window,k5=M0.XMLHttpRequest,I0=M0.Blob,fI=k5&&I0&&typeof I0.prototype.slice=="function";function D5(){return typeof window<"u"&&(typeof window.PhoneGap<"u"||typeof window.Cordova<"u"||typeof window.cordova<"u")}n(D5,"isCordova");function I5(){return typeof navigator<"u"&&typeof navigator.product=="string"&&navigator.product.toLowerCase()==="reactnative"}n(I5,"isReactNative");function ap(i){return(e,t)=>{if(D5()||I5())return th.fingerprint(e,t);let r=["tus",i.id,t.endpoint].join("-");return Promise.resolve(r)}}n(ap,"getFingerprint");function ao(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError("attempted to use private field on non-instance");return i}n(ao,"_classPrivateFieldLooseBase");var N5=0;function Za(i){return"__private_"+N5+++"_"+i}n(Za,"_classPrivateFieldLooseKey");var M5={version:"3.4.0"},B0={endpoint:"",uploadUrl:null,metadata:{},uploadSize:null,onProgress:null,onChunkComplete:null,onSuccess:null,onError:null,overridePatchMethod:!1,headers:{},addRequestId:!1,chunkSize:1/0,retryDelays:[100,1e3,3e3,5e3],parallelUploads:1,removeFingerprintOnSuccess:!1,uploadLengthDeferred:!1,uploadDataDuringCreation:!1},Ja=Za("retryDelayIterator"),up=Za("uploadLocalFile"),hp=Za("getCompanionClientArgs"),lp=Za("uploadFiles"),Qa=Za("handleUpload"),or=class extends ve{constructor(e,t){var r,s;super(e,t),Object.defineProperty(this,lp,{value:z5}),Object.defineProperty(this,hp,{value:B5}),Object.defineProperty(this,up,{value:L5}),Object.defineProperty(this,Ja,{writable:!0,value:void 0}),Object.defineProperty(this,Qa,{writable:!0,value:async a=>{if(a.length===0){this.uppy.log("[Tus] No files to upload");return}this.opts.limit===0&&this.uppy.log("[Tus] When uploading multiple files at once, consider setting the `limit` option (to `10` for example), to limit the number of concurrent uploads, which helps prevent memory and network issues: https://uppy.io/docs/tus/#limit-0","warning"),this.uppy.log("[Tus] Uploading...");let l=this.uppy.getFilesByIds(a);await ao(this,lp)[lp](l)}}),this.type="uploader",this.id=this.opts.id||"Tus",this.title="Tus";let o={limit:20,retryDelays:B0.retryDelays,withCredentials:!1};if(this.opts={...o,...t},t?.allowedMetaFields===void 0&&"metaFields"in this.opts)throw new Error("The `metaFields` option has been renamed to `allowedMetaFields`.");if("autoRetry"in t)throw new Error("The `autoRetry` option was deprecated and has been removed.");this.requests=(r=this.opts.rateLimitedQueue)!=null?r:new Mt(this.opts.limit),ao(this,Ja)[Ja]=(s=this.opts.retryDelays)==null?void 0:s.values(),this.uploaders=Object.create(null),this.uploaderEvents=Object.create(null),this.handleResetProgress=this.handleResetProgress.bind(this)}handleResetProgress(){let e={...this.uppy.getState().files};Object.keys(e).forEach(t=>{if(e[t].tus&&e[t].tus.uploadUrl){let r={...e[t].tus};delete r.uploadUrl,e[t]={...e[t],tus:r}}}),this.uppy.setState({files:e})}resetUploaderReferences(e,t){if(t===void 0&&(t={}),this.uploaders[e]){let r=this.uploaders[e];r.abort(),t.abort&&r.abort(!0),this.uploaders[e]=null}this.uploaderEvents[e]&&(this.uploaderEvents[e].remove(),this.uploaderEvents[e]=null)}onReceiveUploadUrl(e,t){let r=this.uppy.getFile(e.id);r&&(!r.tus||r.tus.uploadUrl!==t)&&(this.uppy.log("[Tus] Storing upload url"),this.uppy.setFileState(r.id,{tus:{...r.tus,uploadUrl:t}}))}install(){this.uppy.setState({capabilities:{...this.uppy.getState().capabilities,resumableUploads:!0}}),this.uppy.addUploader(ao(this,Qa)[Qa]),this.uppy.on("reset-progress",this.handleResetProgress)}uninstall(){this.uppy.setState({capabilities:{...this.uppy.getState().capabilities,resumableUploads:!1}}),this.uppy.removeUploader(ao(this,Qa)[Qa])}};n(or,"Tus");function L5(i){var e=this;return this.resetUploaderReferences(i.id),new Promise((t,r)=>{let s,o,a,l={...this.opts,...i.tus||{}};typeof l.headers=="function"&&(l.headers=l.headers(i));let h={...B0,...l};h.fingerprint=ap(i),h.onBeforeRequest=S=>{let E=S.getUnderlyingObject();E.withCredentials=!!l.withCredentials;let x;if(typeof l.onBeforeRequest=="function"&&(x=l.onBeforeRequest(S,i)),Ct(s,"shouldBeRequeued")){if(!s.shouldBeRequeued)return Promise.reject();let F,U=new Promise(j=>{F=j});return s=this.requests.run(()=>(i.isPaused&&s.abort(),F(),()=>{})),Promise.all([U,x])}return x},h.onError=S=>{var E;this.uppy.log(S);let x=S.originalRequest?S.originalRequest.getUnderlyingObject():null;so(x)&&(S=new Pi(S,x)),this.resetUploaderReferences(i.id),(E=s)==null||E.abort(),this.uppy.emit("upload-error",i,S),typeof l.onError=="function"&&l.onError(S),r(S)},h.onProgress=(S,E)=>{this.onReceiveUploadUrl(i,a.url),typeof l.onProgress=="function"&&l.onProgress(S,E),this.uppy.emit("upload-progress",i,{uploader:this,bytesUploaded:S,bytesTotal:E})},h.onSuccess=()=>{let S={uploadURL:a.url};this.resetUploaderReferences(i.id),s.done(),this.uppy.emit("upload-success",i,S),a.url&&this.uppy.log(`Download ${a.file.name} from ${a.url}`),typeof l.onSuccess=="function"&&l.onSuccess(),t(a)};let p=n(S=>{var E;let x=S==null||(E=S.originalResponse)==null?void 0:E.getStatus();if(x===429){if(!this.requests.isPaused){var F;let U=(F=ao(this,Ja)[Ja])==null?void 0:F.next();if(U==null||U.done)return!1;this.requests.rateLimit(U.value)}}else{if(x>400&&x<500&&x!==409&&x!==423)return!1;typeof navigator<"u"&&navigator.onLine===!1&&(this.requests.isPaused||(this.requests.pause(),window.addEventListener("online",()=>{this.requests.resume()},{once:!0})))}return s.abort(),s={shouldBeRequeued:!0,abort(){this.shouldBeRequeued=!1},done(){throw new Error("Cannot mark a queued request as done: this indicates a bug")},fn(){throw new Error("Cannot run a queued request: this indicates a bug")}},!0},"defaultOnShouldRetry");l.onShouldRetry!=null?h.onShouldRetry=function(){for(var S=arguments.length,E=new Array(S),x=0;x<S;x++)E[x]=arguments[x];return l.onShouldRetry(...E,p)}:h.onShouldRetry=p;let d=n((S,E,x)=>{Ct(S,E)&&!Ct(S,x)&&(S[x]=S[E])},"copyProp"),f={};(Array.isArray(l.allowedMetaFields)?l.allowedMetaFields:Object.keys(i.meta)).forEach(S=>{f[S]=i.meta[S]}),d(f,"type","filetype"),d(f,"name","filename"),h.metadata=f,a=new N0(i.data,h),this.uploaders[i.id]=a;let b=new mi(this.uppy);this.uploaderEvents[i.id]=b,o=n(()=>(i.isPaused||a.start(),()=>{}),"qRequest"),a.findPreviousUploads().then(S=>{let E=S[0];E&&(this.uppy.log(`[Tus] Resuming upload of ${i.id} started at ${E.creationTime}`),a.resumeFromPreviousUpload(E))}),s=this.requests.run(o),b.onFileRemove(i.id,S=>{s.abort(),this.resetUploaderReferences(i.id,{abort:!!a.url}),t(`upload ${S} was removed`)}),b.onPause(i.id,S=>{s.abort(),S?a.abort():s=this.requests.run(o)}),b.onPauseAll(i.id,()=>{s.abort(),a.abort()}),b.onCancelAll(i.id,function(S){let{reason:E}=S===void 0?{}:S;E==="user"&&(s.abort(),e.resetUploaderReferences(i.id,{abort:!!a.url})),t(`upload ${i.id} was canceled`)}),b.onResumeAll(i.id,()=>{s.abort(),i.error&&a.abort(),s=this.requests.run(o)})}).catch(t=>{throw this.uppy.emit("upload-error",i,t),t})}n(L5,"_uploadLocalFile2");function B5(i){let e={...this.opts};return i.tus&&Object.assign(e,i.tus),{...i.remote.body,endpoint:e.endpoint,uploadUrl:e.uploadUrl,protocol:"tus",size:i.data.size,headers:e.headers,metadata:i.meta}}n(B5,"_getCompanionClientArgs2");async function z5(i){let e=hs(i),t=ds(e);this.uppy.emit("upload-start",t),await Promise.allSettled(e.map((r,s)=>{let o=s+1,a=i.length;if(r.isRemote){let l=n(()=>this.requests,"getQueue"),h=new AbortController,p=n(f=>{f.id===r.id&&h.abort()},"removedHandler");this.uppy.on("file-removed",p);let d=r.remote.requestClient.uploadRemoteFile(r,ao(this,hp)[hp](r),{signal:h.signal,getQueue:l});return this.requests.wrapSyncFunction(()=>{this.uppy.off("file-removed",p)},{priority:-1})(),d}return ao(this,up)[up](r,o,a)}))}n(z5,"_uploadFiles2");or.VERSION=M5.version;var j0=de(cp(),1);function ce(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError("attempted to use private field on non-instance");return i}n(ce,"_classPrivateFieldLooseBase");var H5=0;function nr(i){return"__private_"+H5+++"_"+i}n(nr,"_classPrivateFieldLooseKey");var $5="ASSEMBLY_UPLOADING",gp="ASSEMBLY_EXECUTING",yp="ASSEMBLY_COMPLETED",z0=[$5,gp,yp];function ih(i,e){return z0.indexOf(i)>=z0.indexOf(e)}n(ih,"isStatus");var uo=nr("rateLimitedQueue"),el=nr("fetchWithNetworkError"),lo=nr("previousFetchStatusStillPending"),qe=nr("sse"),vp=nr("onFinished"),pp=nr("connectServerSentEvents"),ki=nr("onError"),fp=nr("beginPolling"),zr=nr("fetchStatus"),mp=nr("diffStatus"),rh=class extends j0.default{constructor(e,t){super(),Object.defineProperty(this,mp,{value:X5}),Object.defineProperty(this,zr,{value:K5}),Object.defineProperty(this,fp,{value:G5}),Object.defineProperty(this,ki,{value:W5}),Object.defineProperty(this,pp,{value:V5}),Object.defineProperty(this,vp,{value:q5}),Object.defineProperty(this,uo,{writable:!0,value:void 0}),Object.defineProperty(this,el,{writable:!0,value:void 0}),Object.defineProperty(this,lo,{writable:!0,value:!1}),Object.defineProperty(this,qe,{writable:!0,value:void 0}),this.status=e,this.pollInterval=null,this.closed=!1,ce(this,uo)[uo]=t,ce(this,el)[el]=t.wrapPromiseFunction(_s)}connect(){ce(this,pp)[pp](),ce(this,fp)[fp]()}update(){return ce(this,zr)[zr]({diff:!0})}updateStatus(e){ce(this,mp)[mp](this.status,e),this.status=e}close(){this.closed=!0,ce(this,qe)[qe]&&(ce(this,qe)[qe].close(),ce(this,qe)[qe]=null),clearInterval(this.pollInterval),this.pollInterval=null}};n(rh,"TransloaditAssembly");function q5(){this.emit("finished"),this.close()}n(q5,"_onFinished2");function V5(){ce(this,qe)[qe]=new EventSource(`${this.status.websocket_url}?assembly=${this.status.assembly_id}`),ce(this,qe)[qe].addEventListener("open",()=>{this.socket&&(this.socket.disconnect(),this.socket=null),clearInterval(this.pollInterval),this.pollInterval=null}),ce(this,qe)[qe].addEventListener("message",i=>{i.data==="assembly_finished"&&ce(this,vp)[vp](),i.data==="assembly_uploading_finished"&&this.emit("executing"),i.data==="assembly_upload_meta_data_extracted"&&(this.emit("metadata"),ce(this,zr)[zr]({diff:!1}))}),ce(this,qe)[qe].addEventListener("assembly_upload_finished",i=>{let e=JSON.parse(i.data);this.emit("upload",e),this.status.uploads.push(e)}),ce(this,qe)[qe].addEventListener("assembly_result_finished",i=>{var e,t;let[r,s]=JSON.parse(i.data);this.emit("result",r,s),((t=(e=this.status.results)[r])!=null?t:e[r]=[]).push(s)}),ce(this,qe)[qe].addEventListener("assembly_execution_progress",i=>{let e=JSON.parse(i.data);this.emit("execution-progress",e)}),ce(this,qe)[qe].addEventListener("assembly_error",i=>{try{ce(this,ki)[ki](JSON.parse(i.data))}catch{ce(this,ki)[ki]({msg:i.data})}ce(this,zr)[zr]({diff:!1})})}n(V5,"_connectServerSentEvents2");function W5(i){this.emit("error",Object.assign(new Error(i.msg),i)),this.close()}n(W5,"_onError2");function G5(){this.pollInterval=setInterval(()=>{ce(this,zr)[zr]()},2e3)}n(G5,"_beginPolling2");async function K5(i){let{diff:e=!0}=i===void 0?{}:i;if(!(this.closed||ce(this,uo)[uo].isPaused||ce(this,lo)[lo]))try{ce(this,lo)[lo]=!0;let t=await ce(this,el)[el](this.status.assembly_ssl_url);if(ce(this,lo)[lo]=!1,this.closed)return;if(t.status===429){ce(this,uo)[uo].rateLimit(2e3);return}if(!t.ok){ce(this,ki)[ki](new Pi(t.statusText));return}let r=await t.json();if(this.closed)return;this.emit("status",r),e?this.updateStatus(r):this.status=r}catch(t){ce(this,ki)[ki](t)}}n(K5,"_fetchStatus2");function X5(i,e){let t=i.ok,r=e.ok;if(e.error&&!i.error)return ce(this,ki)[ki](e);let s=ih(r,gp)&&!ih(t,gp);s&&this.emit("executing"),Object.keys(e.uploads).filter(o=>!Ct(i.uploads,o)).forEach(o=>{this.emit("upload",e.uploads[o])}),s&&this.emit("metadata"),Object.keys(e.results).forEach(o=>{let a=e.results[o],l=i.results[o];a.filter(h=>!l||!l.some(p=>p.id===h.id)).forEach(h=>{this.emit("result",o,h)})}),ih(r,yp)&&!ih(t,yp)&&this.emit("finished")}n(X5,"_diffStatus2");var bp=rh;function Ne(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError("attempted to use private field on non-instance");return i}n(Ne,"_classPrivateFieldLooseBase");var Y5=0;function sh(i){return"__private_"+Y5+++"_"+i}n(sh,"_classPrivateFieldLooseKey");var H0="/assemblies",Bt=sh("headers"),tl=sh("fetchWithNetworkError"),bt=sh("fetchJSON"),ai=sh("reportError"),rn=class{constructor(e){e===void 0&&(e={}),Object.defineProperty(this,bt,{value:Q5}),Object.defineProperty(this,Bt,{writable:!0,value:{}}),Object.defineProperty(this,tl,{writable:!0,value:void 0}),Object.defineProperty(this,ai,{writable:!0,value:(t,r)=>{if(this.opts.errorReporting===!1)throw t;let s={type:r.type};throw r.assembly&&(s.assembly=r.assembly.assembly_id,s.instance=r.assembly.instance),r.url&&(s.endpoint=r.url),this.submitError(t,s).catch(()=>{}),t}}),this.opts=e,this.opts.client!=null&&(Ne(this,Bt)[Bt]["Transloadit-Client"]=this.opts.client),Ne(this,tl)[tl]=this.opts.rateLimitedQueue.wrapPromiseFunction(_s)}createAssembly(e){let{params:t,fields:r,signature:s,expectedFiles:o}=e,a=new FormData;a.append("params",typeof t=="string"?t:JSON.stringify(t)),s&&a.append("signature",s),Object.keys(r).forEach(h=>{a.append(h,r[h])}),a.append("num_expected_upload_files",o);let l=new URL(H0,`${this.opts.service}`).href;return Ne(this,bt)[bt](l,{method:"POST",headers:Ne(this,Bt)[Bt],body:a}).catch(h=>Ne(this,ai)[ai](h,{url:l,type:"API_ERROR"}))}reserveFile(e,t){let r=encodeURIComponent(t.size),s=`${e.assembly_ssl_url}/reserve_file?size=${r}`;return Ne(this,bt)[bt](s,{method:"POST",headers:Ne(this,Bt)[Bt]}).catch(o=>Ne(this,ai)[ai](o,{assembly:e,file:t,url:s,type:"API_ERROR"}))}addFile(e,t){if(!t.uploadURL)return Promise.reject(new Error("File does not have an `uploadURL`."));let r=encodeURIComponent(t.size),s=encodeURIComponent(t.uploadURL),o=encodeURIComponent(t.name),l=`size=${r}&filename=${o}&fieldname=file&s3Url=${s}`,h=`${e.assembly_ssl_url}/add_file?${l}`;return Ne(this,bt)[bt](h,{method:"POST",headers:Ne(this,Bt)[Bt]}).catch(p=>Ne(this,ai)[ai](p,{assembly:e,file:t,url:h,type:"API_ERROR"}))}updateNumberOfFilesInAssembly(e,t){let r=new URL(e.assembly_ssl_url);r.pathname="/update_assemblies";let s=JSON.stringify({assembly_updates:[{assembly_id:e.assembly_id,num_expected_upload_files:t}]});return Ne(this,bt)[bt](r,{method:"POST",headers:Ne(this,Bt)[Bt],body:s}).catch(o=>Ne(this,ai)[ai](o,{url:r,type:"API_ERROR"}))}cancelAssembly(e){let t=e.assembly_ssl_url;return Ne(this,bt)[bt](t,{method:"DELETE",headers:Ne(this,Bt)[Bt]}).catch(r=>Ne(this,ai)[ai](r,{url:t,type:"API_ERROR"}))}getAssemblyStatus(e){return Ne(this,bt)[bt](e,{headers:Ne(this,Bt)[Bt]}).catch(t=>Ne(this,ai)[ai](t,{url:e,type:"STATUS_ERROR"}))}submitError(e,t){let{endpoint:r,instance:s,assembly:o}=t===void 0?{}:t,a=e.details?`${e.message} (${e.details})`:e.message;return Ne(this,bt)[bt]("https://transloaditstatus.com/client_error",{method:"POST",body:JSON.stringify({endpoint:r,instance:s,assembly_id:o,agent:typeof navigator<"u"?navigator.userAgent:"",client:this.opts.client,error:a})})}};n(rn,"Client");function Q5(){for(var i=arguments.length,e=new Array(i),t=0;t<i;t++)e[t]=arguments[t];return Ne(this,tl)[tl](...e).then(r=>{if(r.status===429)return this.opts.rateLimitedQueue.rateLimit(2e3),Ne(this,bt)[bt](...e);if(!r.ok){let s=new Error(r.statusText);return s.statusCode=r.status,`${e[0]}`.endsWith(H0)?r.json().then(o=>{if(!o.error)throw s;let a=new Error(o.error);throw a.details=o.message,a.assembly=o,o.assembly_id&&(a.details+=` Assembly ID: ${o.assembly_id}`),a},o=>{throw o.cause=s,o}):Promise.reject(s)}return r.json()})}n(Q5,"_fetchJSON2");function wp(i){if(i==null)throw new Error("Transloadit: The `params` option is required.");if(typeof i=="string")try{i=JSON.parse(i)}catch(e){throw new vr("Transloadit: The `params` option is a malformed JSON string.",{cause:e})}if(!i.auth||!i.auth.key)throw new Error("Transloadit: The `params.auth.key` option is required. You can find your Transloadit API key at https://transloadit.com/c/template-credentials")}n(wp,"validateParams");function J5(i){let e=Object.create(null);for(let{fileIDs:t,options:r}of i.filter(Boolean)){let s=JSON.stringify(r);s in e?e[s].fileIDArrays.push(t):e[s]={options:r,fileIDArrays:[t]}}return Object.values(e).map(t=>{let{options:r,fileIDArrays:s}=t;return{options:r,fileIDs:s.flat(1)}})}n(J5,"dedupe");async function $0(i,e){let t=typeof e.assemblyOptions=="function"?await e.assemblyOptions(i,e):e.assemblyOptions;wp(t.params);let{fields:r}=t;return Array.isArray(r)?t.fields=i==null?{}:Object.fromEntries(r.map(s=>[s,i.meta[s]])):r==null&&(t.fields={}),t}n($0,"getAssemblyOptions");var oh=class{constructor(e,t){this.files=e,this.opts=t}async build(){let e=this.opts;if(this.files.length>0)return Promise.all(this.files.map(async t=>{if(t==null)return;let r=await $0(t,e);if(t!=null)return{fileIDs:[t.id],options:r}})).then(J5);if(e.alwaysRunAssembly){let t=await $0(null,e);return[{fileIDs:[],options:t}]}return[]}};n(oh,"AssemblyOptions");var q0=oh;var V0=de(cp(),1);function se(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError("attempted to use private field on non-instance");return i}n(se,"_classPrivateFieldLooseBase");var Z5=0;function li(i){return"__private_"+Z5+++"_"+i}n(li,"_classPrivateFieldLooseKey");var il=li("assemblyIDs"),Sp=li("reject"),co=li("remaining"),rl=li("resolve"),Oe=li("uppy"),jr=li("watching"),sl=li("onAssemblyComplete"),ol=li("onAssemblyCancel"),po=li("onAssemblyError"),nl=li("onImportError"),ho=li("checkAllComplete"),_p=li("removeListeners"),Pp=li("addListeners"),nh=class extends V0.default{constructor(e,t){super(),Object.defineProperty(this,Pp,{value:rx}),Object.defineProperty(this,_p,{value:ix}),Object.defineProperty(this,ho,{value:tx}),Object.defineProperty(this,jr,{value:ex}),Object.defineProperty(this,il,{writable:!0,value:void 0}),Object.defineProperty(this,Sp,{writable:!0,value:void 0}),Object.defineProperty(this,co,{writable:!0,value:void 0}),Object.defineProperty(this,rl,{writable:!0,value:void 0}),Object.defineProperty(this,Oe,{writable:!0,value:void 0}),Object.defineProperty(this,sl,{writable:!0,value:r=>{se(this,jr)[jr](r.assembly_id)&&(se(this,Oe)[Oe].log(`[Transloadit] AssemblyWatcher: Got Assembly finish ${r.assembly_id}`),this.emit("assembly-complete",r.assembly_id),se(this,ho)[ho]())}}),Object.defineProperty(this,ol,{writable:!0,value:r=>{se(this,jr)[jr](r.assembly_id)&&se(this,ho)[ho]()}}),Object.defineProperty(this,po,{writable:!0,value:(r,s)=>{se(this,jr)[jr](r.assembly_id)&&(se(this,Oe)[Oe].log(`[Transloadit] AssemblyWatcher: Got Assembly error ${r.assembly_id}`),se(this,Oe)[Oe].log(s),this.emit("assembly-error",r.assembly_id,s),se(this,ho)[ho]())}}),Object.defineProperty(this,nl,{writable:!0,value:(r,s,o)=>{se(this,jr)[jr](r.assembly_id)&&se(this,po)[po](r,o)}}),se(this,Oe)[Oe]=e,se(this,il)[il]=t,se(this,co)[co]=t.length,this.promise=new Promise((r,s)=>{se(this,rl)[rl]=r,se(this,Sp)[Sp]=s}),se(this,Pp)[Pp]()}};n(nh,"TransloaditAssemblyWatcher");function ex(i){return se(this,il)[il].indexOf(i)!==-1}n(ex,"_watching2");function tx(){se(this,co)[co]-=1,se(this,co)[co]===0&&(se(this,_p)[_p](),se(this,rl)[rl]())}n(tx,"_checkAllComplete2");function ix(){se(this,Oe)[Oe].off("transloadit:complete",se(this,sl)[sl]),se(this,Oe)[Oe].off("transloadit:assembly-cancel",se(this,ol)[ol]),se(this,Oe)[Oe].off("transloadit:assembly-error",se(this,po)[po]),se(this,Oe)[Oe].off("transloadit:import-error",se(this,nl)[nl])}n(ix,"_removeListeners2");function rx(){se(this,Oe)[Oe].on("transloadit:complete",se(this,sl)[sl]),se(this,Oe)[Oe].on("transloadit:assembly-cancel",se(this,ol)[ol]),se(this,Oe)[Oe].on("transloadit:assembly-error",se(this,po)[po]),se(this,Oe)[Oe].on("transloadit:import-error",se(this,nl)[nl])}n(rx,"_addListeners2");var W0=nh;var G0={strings:{creatingAssembly:"Preparing upload...",creatingAssemblyFailed:"Transloadit: Could not create Assembly",encoding:"Encoding..."}};function ae(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError("attempted to use private field on non-instance");return i}n(ae,"_classPrivateFieldLooseBase");var sx=0;function Le(i){return"__private_"+sx+++"_"+i}n(Le,"_classPrivateFieldLooseKey");var ox={version:"3.4.0"},K0=n(i=>e=>{let t=new vr("Failed to send error to the client",{cause:e});console.error(t,i)},"sendErrorToConsole"),Ip="https://api2.transloadit.com/companion",Np=/\.transloadit\.com$/,nx=/https?:\/\/api2(?:-\w+)?\.transloadit\.com\/companion/,Di=Le("rateLimitedQueue"),xp=Le("getClientVersion"),Up=Le("attachAssemblyMetadata"),Fp=Le("createAssembly"),al=Le("createAssemblyWatcher"),Ep=Le("shouldWaitAfterUpload"),Op=Le("reserveFiles"),ll=Le("onFileUploadURLAvailable"),fl=Le("findFile"),kp=Le("onFileUploadComplete"),Dp=Le("onResult"),pl=Le("onAssemblyFinished"),ml=Le("cancelAssembly"),Cp=Le("onCancelAll"),Tp=Le("getPersistentData"),Ap=Le("onRestored"),ul=Le("connectAssembly"),hl=Le("prepareUpload"),fo=Le("afterUpload"),dl=Le("closeAssemblyIfExists"),cl=Le("onError"),Rp=Le("onTusError"),yi=class extends ve{constructor(e,t){var r,s,o,a;super(e,t),r=this,Object.defineProperty(this,ul,{value:vx}),Object.defineProperty(this,ml,{value:yx}),Object.defineProperty(this,pl,{value:gx}),Object.defineProperty(this,Dp,{value:mx}),Object.defineProperty(this,kp,{value:fx}),Object.defineProperty(this,fl,{value:px}),Object.defineProperty(this,Op,{value:cx}),Object.defineProperty(this,Ep,{value:dx}),Object.defineProperty(this,al,{value:hx}),Object.defineProperty(this,Fp,{value:ux}),Object.defineProperty(this,Up,{value:lx}),Object.defineProperty(this,xp,{value:ax}),Object.defineProperty(this,Di,{writable:!0,value:void 0}),Object.defineProperty(this,ll,{writable:!0,value:h=>{var p;let d=this.uppy.getFile(h.id);if(!(d!=null&&(p=d.transloadit)!=null&&p.assembly))return;let{assemblies:f}=this.getPluginState(),y=f[d.transloadit.assembly];this.client.addFile(y,d).catch(b=>{this.uppy.log(b),this.uppy.emit("transloadit:import-error",y,d.id,b)})}}),Object.defineProperty(this,Cp,{writable:!0,value:async function(h){let{reason:p}=h===void 0?{}:h;try{if(p!=="user")return;let{uploadsAssemblies:d}=r.getPluginState(),y=Object.values(d).flat(1).map(b=>r.getAssembly(b));await Promise.all(y.map(b=>ae(r,ml)[ml](b)))}catch(d){r.uppy.log(d)}}}),Object.defineProperty(this,Tp,{writable:!0,value:h=>{let{assemblies:p,uploadsAssemblies:d}=this.getPluginState();h({[this.id]:{assemblies:p,uploadsAssemblies:d}})}}),Object.defineProperty(this,Ap,{writable:!0,value:h=>{let p=h&&h[this.id]?h[this.id]:{},d=p.assemblies||{},f=p.uploadsAssemblies||{};if(Object.keys(f).length===0)return;let y=n(E=>{let x={},F=[];for(let[U,j]of Object.entries(E)){j.uploads.forEach(J=>{let B=ae(this,fl)[fl](J);x[J.id]={id:B.id,assembly:U,uploadedFile:J}});let G=this.getPluginState();Object.keys(j.results).forEach(J=>{for(let B of j.results[J]){let z=G.files[B.original_id];B.localId=z?z.id:null,F.push({id:B.id,result:B,stepName:J,assembly:U})}})}this.setPluginState({assemblies:E,files:x,results:F,uploadsAssemblies:f})},"restoreState"),b=n(()=>{let{assemblies:E,uploadsAssemblies:x}=this.getPluginState();Object.keys(x).forEach(U=>{let j=x[U];ae(this,al)[al](j,U)}),Object.keys(E).forEach(U=>{let j=new bp(E[U],ae(this,Di)[Di]);ae(this,ul)[ul](j)})},"restoreAssemblies"),S=n(()=>{let{assemblies:E}=this.getPluginState();return Promise.all(Object.keys(E).map(x=>this.activeAssemblies[x].update()))},"updateAssemblies");this.restored=Promise.resolve().then(()=>(y(d),b(),S())),this.restored.then(()=>{this.restored=null})}}),Object.defineProperty(this,hl,{writable:!0,value:(h,p)=>{let f=h.map(E=>this.uppy.getFile(E)).filter(E=>E.error?!1:(this.uppy.emit("preprocess-progress",E,{mode:"indeterminate",message:this.i18n("creatingAssembly")}),!0)),y=n(async E=>{let{fileIDs:x,options:F}=E;try{let U=await ae(this,Fp)[Fp](x,p,F);return this.opts.importFromUploadURLs&&await ae(this,Op)[Op](U,x),x.forEach(j=>{let G=this.uppy.getFile(j);this.uppy.emit("preprocess-complete",G)}),U}catch(U){throw x.forEach(j=>{let G=this.uppy.getFile(j);this.uppy.emit("preprocess-complete",G),this.uppy.emit("upload-error",G,U)}),U}},"createAssembly"),{uploadsAssemblies:b}=this.getPluginState();return this.setPluginState({uploadsAssemblies:{...b,[p]:[]}}),new q0(f,this.opts).build().then(E=>Promise.all(E.map(y))).then(E=>{let x=E.filter(Boolean),F=x.map(U=>U.status.assembly_id);return ae(this,al)[al](F,p),Promise.all(x.map(U=>ae(this,ul)[ul](U)))}).catch(E=>{throw f.forEach(x=>{this.uppy.emit("preprocess-complete",x),this.uppy.emit("upload-error",x,E)}),E})}}),Object.defineProperty(this,fo,{writable:!0,value:(h,p)=>{let d=h.map(F=>this.uppy.getFile(F)),f=d.filter(F=>!F.error).map(F=>F.id),y=this.getPluginState();if(this.restored)return this.restored.then(()=>ae(this,fo)[fo](f,p));let b=y.uploadsAssemblies[p],S=n(()=>{b.forEach(F=>{this.activeAssemblies[F].close(),delete this.activeAssemblies[F]})},"closeSocketConnections");if(!ae(this,Ep)[Ep]()){S();let F=b.map(U=>this.getAssembly(U));return this.uppy.addResultData(p,{transloadit:F}),Promise.resolve()}return b.length===0?(this.uppy.addResultData(p,{transloadit:[]}),Promise.resolve()):(d.filter(F=>!Ct(this.completedFiles,F.id)).forEach(F=>{this.uppy.emit("postprocess-progress",F,{mode:"indeterminate",message:this.i18n("encoding")})}),this.assemblyWatchers[p].promise.then(()=>{S();let F=b.map(j=>this.getAssembly(j)),U={...this.getPluginState().uploadsAssemblies};delete U[p],this.setPluginState({uploadsAssemblies:U}),this.uppy.addResultData(p,{transloadit:F})}))}}),Object.defineProperty(this,dl,{writable:!0,value:h=>{var p;(p=this.activeAssemblies[h])==null||p.close()}}),Object.defineProperty(this,cl,{writable:!0,value:function(h,p){h===void 0&&(h=null);let f=r.getPluginState().uploadsAssemblies[p];f?.forEach(ae(r,dl)[dl]),r.client.submitError(h).catch(K0(h))}}),Object.defineProperty(this,Rp,{writable:!0,value:(h,p)=>{var d,f;if(ae(this,dl)[dl](h==null||(d=h.transloadit)==null?void 0:d.assembly),p!=null&&(f=p.message)!=null&&f.startsWith("tus: ")){var y;let b=(y=p.originalRequest)==null||(y=y.getUnderlyingObject())==null?void 0:y.responseURL;this.client.submitError(p,{endpoint:b,type:"TUS_ERROR"}).catch(K0(p))}}}),this.type="uploader",this.id=this.opts.id||"Transloadit",this.title="Transloadit",this.defaultLocale=G0;let l={service:"https://api2.transloadit.com",errorReporting:!0,waitForEncoding:!1,waitForMetadata:!1,alwaysRunAssembly:!1,importFromUploadURLs:!1,signature:null,params:null,fields:null,getAssemblyOptions:null,limit:20,retryDelays:[7e3,1e4,15e3,2e4]};this.opts={...l,...t},(o=(s=this.opts).assemblyOptions)!=null||(s.assemblyOptions=(a=this.opts.getAssemblyOptions)!=null?a:{params:this.opts.params,signature:this.opts.signature,fields:this.opts.fields}),t?.params!=null&&t.getAssemblyOptions==null&&t.assemblyOptions==null&&wp(this.opts.assemblyOptions.params),ae(this,Di)[Di]=new Mt(this.opts.limit),this.i18nInit(),this.client=new rn({service:this.opts.service,client:ae(this,xp)[xp](),errorReporting:this.opts.errorReporting,rateLimitedQueue:ae(this,Di)[Di]}),this.activeAssemblies={},this.assemblyWatchers={},this.completedFiles=Object.create(null)}install(){this.uppy.addPreProcessor(ae(this,hl)[hl]),this.uppy.addPostProcessor(ae(this,fo)[fo]),this.uppy.on("error",ae(this,cl)[cl]),this.uppy.on("cancel-all",ae(this,Cp)[Cp]),this.uppy.on("upload-error",ae(this,Rp)[Rp]),this.opts.importFromUploadURLs?this.uppy.on("upload-success",ae(this,ll)[ll]):this.uppy.use(or,{storeFingerprintForResuming:!1,allowedMetaFields:["assembly_url","filename","fieldname"],limit:this.opts.limit,rateLimitedQueue:ae(this,Di)[Di],retryDelays:this.opts.retryDelays}),this.uppy.on("restore:get-data",ae(this,Tp)[Tp]),this.uppy.on("restored",ae(this,Ap)[Ap]),this.setPluginState({assemblies:{},uploadsAssemblies:{},files:{},results:[]});let{capabilities:e}=this.uppy.getState();this.uppy.setState({capabilities:{...e,individualCancellation:!1}})}uninstall(){this.uppy.removePreProcessor(ae(this,hl)[hl]),this.uppy.removePostProcessor(ae(this,fo)[fo]),this.uppy.off("error",ae(this,cl)[cl]),this.opts.importFromUploadURLs&&this.uppy.off("upload-success",ae(this,ll)[ll]);let{capabilities:e}=this.uppy.getState();this.uppy.setState({capabilities:{...e,individualCancellation:!0}})}getAssembly(e){let{assemblies:t}=this.getPluginState();return t[e]}getAssemblyFiles(e){return this.uppy.getFiles().filter(t=>{var r;return(t==null||(r=t.transloadit)==null?void 0:r.assembly)===e})}};n(yi,"Transloadit");function ax(){let i=[`uppy-core:${this.uppy.constructor.VERSION}`,`uppy-transloadit:${this.constructor.VERSION}`,`uppy-tus:${or.VERSION}`],e=n((t,r)=>{let s=this.uppy.getPlugin(t);s&&i.push(`${r}:${s.constructor.VERSION}`)},"addPluginVersion");return this.opts.importFromUploadURLs&&(e("XHRUpload","uppy-xhr-upload"),e("AwsS3","uppy-aws-s3"),e("AwsS3Multipart","uppy-aws-s3-multipart")),e("Dropbox","uppy-dropbox"),e("Box","uppy-box"),e("Facebook","uppy-facebook"),e("GoogleDrive","uppy-google-drive"),e("Instagram","uppy-instagram"),e("OneDrive","uppy-onedrive"),e("Zoom","uppy-zoom"),e("Url","uppy-url"),i.join(",")}n(ax,"_getClientVersion2");function lx(i,e){let t={...i.meta,assembly_url:e.assembly_url,filename:i.name,fieldname:"file"},r={...i.tus,endpoint:e.tus_url,addRequestId:!0},{remote:s}=i;if(i.remote&&nx.test(i.remote.companionUrl)){let a=e.companion_url.replace(/\/$/,""),l=i.remote.url.replace(i.remote.companionUrl,"").replace(/^\//,"");s={...i.remote,companionUrl:a,url:`${a}/${l}`}}let o={...i,transloadit:{assembly:e.assembly_id}};return this.opts.importFromUploadURLs||Object.assign(o,{meta:t,tus:r,remote:s}),o}n(lx,"_attachAssemblyMetadata2");function ux(i,e,t){return this.uppy.log("[Transloadit] Create Assembly"),this.client.createAssembly({...t,expectedFiles:i.length}).then(async r=>{let s=this.uppy.getFiles().filter(y=>{let{id:b}=y;return i.includes(b)});if(s.length!==i.length){if(s.length===0)return await this.client.cancelAssembly(r),null;await this.client.updateNumberOfFilesInAssembly(r,s.length)}let o=new bp(r,ae(this,Di)[Di]),{status:a}=o,l=a.assembly_id,{assemblies:h,uploadsAssemblies:p}=this.getPluginState();this.setPluginState({assemblies:{...h,[l]:a},uploadsAssemblies:{...p,[e]:[...p[e],l]}});let d={};s.forEach(y=>{d[y.id]=ae(this,Up)[Up](y,a)}),this.uppy.setState({files:{...this.uppy.getState().files,...d}});let f=n((y,b)=>{var S;if(((S=o.status)==null?void 0:S.ok)==="ASSEMBLY_COMPLETED"){this.uppy.off("file-removed",f);return}if(b==="cancel-all")o.close(),this.uppy.off("file-removed",f);else if(y.id in d){delete d[y.id];let E=Object.keys(d).length;E===0?(o.close(),ae(this,ml)[ml](r).catch(()=>{}),this.uppy.off("file-removed",f)):this.client.updateNumberOfFilesInAssembly(r,E).catch(()=>{})}},"fileRemovedHandler");return this.uppy.on("file-removed",f),this.uppy.emit("transloadit:assembly-created",a,i),this.uppy.log(`[Transloadit] Created Assembly ${l}`),o}).catch(r=>{let s=new vr(`${this.i18n("creatingAssemblyFailed")}: ${r.message}`,{cause:r});throw"details"in r&&(s.details=r.details),"assembly"in r&&(s.assembly=r.assembly),s})}n(ux,"_createAssembly2");function hx(i,e){let t=new W0(this.uppy,i);t.on("assembly-complete",r=>{this.getAssemblyFiles(r).forEach(o=>{this.completedFiles[o.id]=!0,this.uppy.emit("postprocess-complete",o)})}),t.on("assembly-error",(r,s)=>{let o=this.getAssemblyFiles(r);o.forEach(l=>{this.uppy.emit("upload-error",l,s),this.uppy.emit("postprocess-complete",l)});let a={...this.uppy.getState().files};o.forEach(l=>delete a[l.id].tus),this.uppy.setState({files:a}),this.uppy.emit("error",s)}),this.assemblyWatchers[e]=t}n(hx,"_createAssemblyWatcher2");function dx(){return this.opts.waitForEncoding||this.opts.waitForMetadata}n(dx,"_shouldWaitAfterUpload2");function cx(i,e){return Promise.all(e.map(t=>{let r=this.uppy.getFile(t);return this.client.reserveFile(i.status,r)}))}n(cx,"_reserveFiles2");function px(i){let e=this.uppy.getFiles();for(let t=0;t<e.length;t++){let r=e[t];if(r.uploadURL===i.tus_upload_url||r.tus&&r.tus.uploadUrl===i.tus_upload_url||!i.is_tus_file&&r.name===i.name&&r.size===i.size)return r}}n(px,"_findFile2");function fx(i,e){let t=this.getPluginState(),r=ae(this,fl)[fl](e);if(!r){this.uppy.log("[Transloadit] Couldn\u2019t find the file, it was likely removed in the process");return}this.setPluginState({files:{...t.files,[e.id]:{assembly:i,id:r.id,uploadedFile:e}}}),this.uppy.emit("transloadit:upload",e,this.getAssembly(i))}n(fx,"_onFileUploadComplete2");function mx(i,e,t){let r=this.getPluginState(),s=r.files[t.original_id];t.localId=s?s.id:null;let o={result:t,stepName:e,id:t.id,assembly:i};this.setPluginState({results:[...r.results,o]}),this.uppy.emit("transloadit:result",e,t,this.getAssembly(i))}n(mx,"_onResult2");function gx(i){let e=i.assembly_ssl_url;this.client.getAssemblyStatus(e).then(t=>{let r=t.assembly_id,s=this.getPluginState();this.setPluginState({assemblies:{...s.assemblies,[r]:t}}),this.uppy.emit("transloadit:complete",t)})}n(gx,"_onAssemblyFinished2");async function yx(i){await this.client.cancelAssembly(i),this.uppy.emit("transloadit:assembly-cancelled",i)}n(yx,"_cancelAssembly2");function vx(i){let{status:e}=i,t=e.assembly_id;return this.activeAssemblies[t]=i,i.on("status",r=>{let{assemblies:s}=this.getPluginState();this.setPluginState({assemblies:{...s,[t]:r}})}),i.on("upload",r=>{ae(this,kp)[kp](t,r)}),i.on("error",r=>{r.assembly=i.status,this.uppy.emit("transloadit:assembly-error",i.status,r)}),i.on("executing",()=>{this.uppy.emit("transloadit:assembly-executing",i.status)}),i.on("execution-progress",r=>{if(this.uppy.emit("transloadit:execution-progress",r),r.progress_combined!=null)for(let s of this.uppy.getFiles())this.uppy.emit("postprocess-progress",s,{mode:"determinate",value:r.progress_combined/100,message:this.i18n("encoding")})}),this.opts.waitForEncoding&&i.on("result",(r,s)=>{ae(this,Dp)[Dp](t,r,s)}),this.opts.waitForEncoding?i.on("finished",()=>{ae(this,pl)[pl](i.status)}):this.opts.waitForMetadata&&i.on("metadata",()=>{ae(this,pl)[pl](i.status)}),i.ok==="ASSEMBLY_COMPLETE"||i.connect(),i}n(vx,"_connectAssembly2");yi.VERSION=ox.version;yi.COMPANION=Ip;yi.COMPANION_PATTERN=Np;var X0={strings:{uploadStalled:"Upload has not made any progress for %{seconds} seconds. You may want to retry it."}};function sn(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError("attempted to use private field on non-instance");return i}n(sn,"_classPrivateFieldLooseBase");var bx=0;function yl(i){return"__private_"+bx+++"_"+i}n(yl,"_classPrivateFieldLooseKey");var wx={version:"3.5.0"};function Y0(i,e){let t=e;return t||(t=new Error("Upload error")),typeof t=="string"&&(t=new Error(t)),t instanceof Error||(t=Object.assign(new Error("Upload error"),{data:t})),so(i)?(t=new Pi(t,i),t):(t.request=i,t)}n(Y0,"buildResponseError");function Q0(i){return i.data.slice(0,i.data.size,i.meta.type)}n(Q0,"setTypeInBlob");var Bp=yl("uploadLocalFile"),Mp=yl("uploadBundle"),zp=yl("getCompanionClientArgs"),Lp=yl("uploadFiles"),gl=yl("handleUpload"),mo=class extends ve{constructor(e,t){super(e,t),Object.defineProperty(this,Lp,{value:xx}),Object.defineProperty(this,zp,{value:_x}),Object.defineProperty(this,Mp,{value:Px}),Object.defineProperty(this,Bp,{value:Sx}),Object.defineProperty(this,gl,{writable:!0,value:async s=>{if(s.length===0){this.uppy.log("[XHRUpload] No files to upload!");return}this.opts.limit===0&&!this.opts[us]&&this.uppy.log("[XHRUpload] When uploading multiple files at once, consider setting the `limit` option (to `10` for example), to limit the number of concurrent uploads, which helps prevent memory and network issues: https://uppy.io/docs/xhr-upload/#limit-0","warning"),this.uppy.log("[XHRUpload] Uploading...");let o=this.uppy.getFilesByIds(s),a=hs(o),l=ds(a);if(this.uppy.emit("upload-start",l),this.opts.bundle){if(a.some(p=>p.isRemote))throw new Error("Can\u2019t upload remote files when the `bundle: true` option is set");if(typeof this.opts.headers=="function")throw new TypeError("`headers` may not be a function when the `bundle: true` option is set");await sn(this,Mp)[Mp](a)}else await sn(this,Lp)[Lp](a)}}),this.type="uploader",this.id=this.opts.id||"XHRUpload",this.title="XHRUpload",this.defaultLocale=X0;let r={formData:!0,fieldName:t.bundle?"files[]":"file",method:"post",allowedMetaFields:null,responseUrlFieldName:"url",bundle:!1,headers:{},timeout:30*1e3,limit:5,withCredentials:!1,responseType:"",getResponseData(s){let o={};try{o=JSON.parse(s)}catch(a){e.log(a)}return o},getResponseError(s,o){let a=new Error("Upload error");return so(o)&&(a=new Pi(a,o)),a},validateStatus(s){return s>=200&&s<300}};if(this.opts={...r,...t},this.i18nInit(),us in this.opts?this.requests=this.opts[us]:this.requests=new Mt(this.opts.limit),this.opts.bundle&&!this.opts.formData)throw new Error("`opts.formData` must be true when `opts.bundle` is enabled.");if(t?.allowedMetaFields===void 0&&"metaFields"in this.opts)throw new Error("The `metaFields` option has been renamed to `allowedMetaFields`.");this.uploaderEvents=Object.create(null)}getOptions(e){let t=this.uppy.getState().xhrUpload,{headers:r}=this.opts,s={...this.opts,...t||{},...e.xhrUpload||{},headers:{}};return typeof r=="function"?s.headers=r(e):Object.assign(s.headers,this.opts.headers),t&&Object.assign(s.headers,t.headers),e.xhrUpload&&Object.assign(s.headers,e.xhrUpload.headers),s}addMetadata(e,t,r){(Array.isArray(r.allowedMetaFields)?r.allowedMetaFields:Object.keys(t)).forEach(o=>{Array.isArray(t[o])?t[o].forEach(a=>e.append(o,a)):e.append(o,t[o])})}createFormDataUpload(e,t){let r=new FormData;this.addMetadata(r,e.meta,t);let s=Q0(e);return e.name?r.append(t.fieldName,s,e.meta.name):r.append(t.fieldName,s),r}createBundledUpload(e,t){let r=new FormData,{meta:s}=this.uppy.getState();return this.addMetadata(r,s,t),e.forEach(o=>{let a=this.getOptions(o),l=Q0(o);o.name?r.append(a.fieldName,l,o.name):r.append(a.fieldName,l)}),r}install(){if(this.opts.bundle){let{capabilities:e}=this.uppy.getState();this.uppy.setState({capabilities:{...e,individualCancellation:!1}})}this.uppy.addUploader(sn(this,gl)[gl])}uninstall(){if(this.opts.bundle){let{capabilities:e}=this.uppy.getState();this.uppy.setState({capabilities:{...e,individualCancellation:!0}})}this.uppy.removeUploader(sn(this,gl)[gl])}};n(mo,"XHRUpload");async function Sx(i,e,t){let r=this.getOptions(i);return this.uppy.log(`uploading ${e} of ${t}`),new Promise((s,o)=>{let a=r.formData?this.createFormDataUpload(i,r):i.data,l=new XMLHttpRequest,h=new mi(this.uppy);this.uploaderEvents[i.id]=h;let p,d=new qa(r.timeout,()=>{let y=new Error(this.i18n("uploadStalled",{seconds:Math.ceil(r.timeout/1e3)}));this.uppy.emit("upload-stalled",y,[i])}),f=Pt();l.upload.addEventListener("loadstart",()=>{this.uppy.log(`[XHRUpload] ${f} started`)}),l.upload.addEventListener("progress",y=>{this.uppy.log(`[XHRUpload] ${f} progress: ${y.loaded} / ${y.total}`),d.progress(),y.lengthComputable&&this.uppy.emit("upload-progress",i,{uploader:this,bytesUploaded:y.loaded,bytesTotal:y.total})}),l.addEventListener("load",()=>{if(this.uppy.log(`[XHRUpload] ${f} finished`),d.done(),p.done(),this.uploaderEvents[i.id]&&(this.uploaderEvents[i.id].remove(),this.uploaderEvents[i.id]=null),r.validateStatus(l.status,l.responseText,l)){let E=r.getResponseData(l.responseText,l),x=E[r.responseUrlFieldName],F={status:l.status,body:E,uploadURL:x};return this.uppy.emit("upload-success",i,F),x&&this.uppy.log(`Download ${i.name} from ${x}`),s(i)}let y=r.getResponseData(l.responseText,l),b=Y0(l,r.getResponseError(l.responseText,l)),S={status:l.status,body:y};return this.uppy.emit("upload-error",i,b,S),o(b)}),l.addEventListener("error",()=>{this.uppy.log(`[XHRUpload] ${f} errored`),d.done(),p.done(),this.uploaderEvents[i.id]&&(this.uploaderEvents[i.id].remove(),this.uploaderEvents[i.id]=null);let y=Y0(l,r.getResponseError(l.responseText,l));return this.uppy.emit("upload-error",i,y),o(y)}),l.open(r.method.toUpperCase(),r.endpoint,!0),l.withCredentials=r.withCredentials,r.responseType!==""&&(l.responseType=r.responseType),p=this.requests.run(()=>{let y=this.getOptions(i);return Object.keys(y.headers).forEach(b=>{l.setRequestHeader(b,y.headers[b])}),l.send(a),()=>{d.done(),l.abort()}}),h.onFileRemove(i.id,()=>{p.abort(),o(new Error("File removed"))}),h.onCancelAll(i.id,y=>{let{reason:b}=y;b==="user"&&p.abort(),o(new Error("Upload cancelled"))})})}n(Sx,"_uploadLocalFile2");function Px(i){return new Promise((e,t)=>{let{endpoint:r}=this.opts,{method:s}=this.opts,o=this.uppy.getState().xhrUpload,a=this.createBundledUpload(i,{...this.opts,...o||{}}),l=new XMLHttpRequest,h=n(d=>{i.forEach(f=>{this.uppy.emit("upload-error",f,d)})},"emitError"),p=new qa(this.opts.timeout,()=>{let d=new Error(this.i18n("uploadStalled",{seconds:Math.ceil(this.opts.timeout/1e3)}));this.uppy.emit("upload-stalled",d,i)});l.upload.addEventListener("loadstart",()=>{this.uppy.log("[XHRUpload] started uploading bundle"),p.progress()}),l.upload.addEventListener("progress",d=>{p.progress(),d.lengthComputable&&i.forEach(f=>{this.uppy.emit("upload-progress",f,{uploader:this,bytesUploaded:d.loaded/d.total*f.size,bytesTotal:f.size})})}),l.addEventListener("load",d=>{if(p.done(),this.opts.validateStatus(d.target.status,l.responseText,l)){let y=this.opts.getResponseData(l.responseText,l),b={status:d.target.status,body:y};return i.forEach(S=>{this.uppy.emit("upload-success",S,b)}),e()}let f=this.opts.getResponseError(l.responseText,l)||new Error("Upload error");return f.request=l,h(f),t(f)}),l.addEventListener("error",()=>{p.done();let d=this.opts.getResponseError(l.responseText,l)||new Error("Upload error");return h(d),t(d)}),this.uppy.on("cancel-all",function(d){let{reason:f}=d===void 0?{}:d;f==="user"&&(p.done(),l.abort())}),l.open(s.toUpperCase(),r,!0),l.withCredentials=this.opts.withCredentials,this.opts.responseType!==""&&(l.responseType=this.opts.responseType),Object.keys(this.opts.headers).forEach(d=>{l.setRequestHeader(d,this.opts.headers[d])}),l.send(a)})}n(Px,"_uploadBundle2");function _x(i){let e=this.getOptions(i),t=Array.isArray(e.allowedMetaFields)?e.allowedMetaFields:Object.keys(i.meta);return{...i.remote.body,protocol:"multipart",endpoint:e.endpoint,size:i.data.size,fieldname:e.fieldName,metadata:Object.fromEntries(t.map(r=>[r,i.meta[r]])),httpMethod:e.method,useFormData:e.formData,headers:e.headers}}n(_x,"_getCompanionClientArgs2");async function xx(i){await Promise.allSettled(i.map((e,t)=>{let r=parseInt(t,10)+1,s=i.length;if(e.isRemote){let o=n(()=>this.requests,"getQueue"),a=new AbortController,l=n(p=>{p.id===e.id&&a.abort()},"removedHandler");this.uppy.on("file-removed",l);let h=e.remote.requestClient.uploadRemoteFile(e,sn(this,zp)[zp](e),{signal:a.signal,getQueue:o});return this.requests.wrapSyncFunction(()=>{this.uppy.off("file-removed",l)},{priority:-1})(),h}return sn(this,Bp)[Bp](e,r,s)}))}n(xx,"_uploadFiles2");mo.VERSION=wx.version;var $p=de(Il(),1),tb=de(J0(),1);var Z0={strings:{compressingImages:"Compressing images...",compressedX:"Saved %{size} by compressing images"}};function eb(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError("attempted to use private field on non-instance");return i}n(eb,"_classPrivateFieldLooseBase");var Fx=0;function Ex(i){return"__private_"+Fx+++"_"+i}n(Ex,"_classPrivateFieldLooseKey");var vl=Ex("RateLimitedQueue"),on=class extends ve{constructor(e,t){super(e,t),Object.defineProperty(this,vl,{writable:!0,value:void 0}),this.id=this.opts.id||"Compressor",this.type="modifier",this.defaultLocale=Z0;let r={quality:.6,limit:10};this.opts={...r,...t},eb(this,vl)[vl]=new Mt(this.opts.limit),this.i18nInit(),this.prepareUpload=this.prepareUpload.bind(this),this.compress=this.compress.bind(this)}compress(e){return new Promise((t,r)=>{new tb.default(e,{...this.opts,success:t,error:r})})}async prepareUpload(e){let t=0,r=[],s=eb(this,vl)[vl].wrapPromiseFunction(async a=>{try{let l=await this.compress(a.data),h=a.data.size-l.size;this.uppy.log(`[Image Compressor] Image ${a.id} compressed by ${(0,$p.default)(h)}`),t+=h;let{name:p,type:d,size:f}=l,y=Bi(p),S=`${Bi(a.meta.name).name}.${y.extension}`;this.uppy.setFileState(a.id,{...p&&{name:p},...y.extension&&{extension:y.extension},...d&&{type:d},...f&&{size:f},data:l,meta:{...a.meta,type:d,name:S}}),r.push(a)}catch(l){this.uppy.log(`[Image Compressor] Failed to compress ${a.id}:`,"warning"),this.uppy.log(l,"warning")}}),o=e.map(a=>{let l=this.uppy.getFile(a);return this.uppy.emit("preprocess-progress",l,{mode:"indeterminate",message:this.i18n("compressingImages")}),l.isRemote||(l.data.type||(l.data=l.data.slice(0,l.data.size,l.type)),!l.type.startsWith("image/"))?Promise.resolve():s(l)});await Promise.all(o),this.uppy.emit("compressor:complete",r),t>1024&&this.uppy.info(this.i18n("compressedX",{size:(0,$p.default)(t)}),"info");for(let a of e){let l=this.uppy.getFile(a);this.uppy.emit("preprocess-complete",l)}}install(){this.uppy.addPreProcessor(this.prepareUpload)}uninstall(){this.uppy.removePreProcessor(this.prepareUpload)}};n(on,"Compressor");function ah(){return ah=Object.assign||function(i){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[r]=t[r])}return i},ah.apply(this,arguments)}n(ah,"_extends");var Ox={"[object HTMLCollection]":!0,"[object NodeList]":!0,"[object RadioNodeList]":!0},Cx={button:!0,fieldset:!0,reset:!0,submit:!0},Tx={checkbox:!0,radio:!0},Ax=/^\s+|\s+$/g,Rx=Array.prototype.slice,ib=Object.prototype.toString;function lh(i,e){if(!i)throw new Error("A form is required by getFormData, was given form="+i);e=ah({includeDisabled:!1,trim:!1},e);for(var t={},r,s=[],o={},a=0,l=i.elements.length;a<l;a++){var h=i.elements[a];Cx[h.type]||h.disabled&&!e.includeDisabled||(r=h.name||h.id,r&&!o[r]&&(s.push(r),o[r]=!0))}for(var p=0,d=s.length;p<d;p++){r=s[p];var f=sb(i,r,e);f!=null&&(t[r]=f)}return t}n(lh,"getFormData");function sb(i,e,t){if(!i)throw new Error("A form is required by getFieldData, was given form="+i);if(!e&&ib.call(e)!=="[object String]")throw new Error("A field name is required by getFieldData, was given fieldName="+e);t=ah({includeDisabled:!1,trim:!1},t);var r=i.elements[e];if(!r||r.disabled&&!t.includeDisabled)return null;if(!Ox[ib.call(r)])return rb(r,t.trim);for(var s=[],o=!0,a=0,l=r.length;a<l;a++)if(!(r[a].disabled&&!t.includeDisabled)){o&&r[a].type!=="radio"&&(o=!1);var h=rb(r[a],t.trim);h!=null&&(s=s.concat(h))}return o&&s.length===1?s[0]:s.length>0?s:null}n(sb,"getFieldData");function rb(i,e){var t=null,r=i.type;if(r==="select-one")return i.options.length&&(t=i.options[i.selectedIndex].value),t;if(r==="select-multiple"){t=[];for(var s=0,o=i.options.length;s<o;s++)i.options[s].selected&&t.push(i.options[s].value);return t.length===0&&(t=null),t}return r==="file"&&"files"in i?(i.multiple?(t=Rx.call(i.files),t.length===0&&(t=null)):t=i.files[0],t):(Tx[r]?i.checked&&(r==="checkbox"&&!i.hasAttribute("value")?t=!0:t=i.value):t=e?i.value.replace(Ax,""):i.value,t)}n(rb,"getFormElementValue");lh.getFieldData=sb;var Ux={version:"3.0.3"},go=class extends ve{constructor(e,t){super(e,t),this.type="acquirer",this.id=this.opts.id||"Form",this.title="Form";let r={target:null,resultName:"uppyResult",getMetaFromForm:!0,addResultToForm:!0,submitOnSuccess:!1,triggerUploadOnSubmit:!1};this.opts={...r,...t},this.handleFormSubmit=this.handleFormSubmit.bind(this),this.handleUploadStart=this.handleUploadStart.bind(this),this.handleSuccess=this.handleSuccess.bind(this),this.addResultToForm=this.addResultToForm.bind(this),this.getMetaFromForm=this.getMetaFromForm.bind(this)}handleUploadStart(){this.opts.getMetaFromForm&&this.getMetaFromForm()}handleSuccess(e){this.opts.addResultToForm&&this.addResultToForm(e),this.opts.submitOnSuccess&&this.form.submit()}handleFormSubmit(e){if(this.opts.triggerUploadOnSubmit){e.preventDefault();let t=Qe(e.target.elements),r=[];t.forEach(s=>{(s.tagName==="BUTTON"||s.tagName==="INPUT"&&s.type==="submit")&&!s.disabled&&(s.disabled=!0,r.push(s))}),this.uppy.upload().then(()=>{r.forEach(s=>{s.disabled=!1})},s=>(r.forEach(o=>{o.disabled=!1}),Promise.reject(s))).catch(s=>{this.uppy.log(s.stack||s.message||s)})}}addResultToForm(e){this.uppy.log("[Form] Adding result to the original form:"),this.uppy.log(e);let t=this.form.querySelector(`[name="${this.opts.resultName}"]`);if(t){let r;try{r=JSON.parse(t.value)}catch{}Array.isArray(r)||(r=[]),r.push(e),t.value=JSON.stringify(r);return}t=document.createElement("input"),t.name=this.opts.resultName,t.type="hidden",t.value=JSON.stringify([e]),this.form.appendChild(t)}getMetaFromForm(){let e=lh(this.form);delete e[this.opts.resultName],this.uppy.setMeta(e)}install(){if(this.form=On(this.opts.target),!this.form||this.form.nodeName!=="FORM"){this.uppy.log("Form plugin requires a <form> target element passed in options to operate, none was found","error");return}this.form.addEventListener("submit",this.handleFormSubmit),this.uppy.on("upload",this.handleUploadStart),this.uppy.on("complete",this.handleSuccess)}uninstall(){this.form.removeEventListener("submit",this.handleFormSubmit),this.uppy.off("upload",this.handleUploadStart),this.uppy.off("complete",this.handleSuccess)}};n(go,"Form");go.VERSION=Ux.version;var gb=de(Rl(),1);function yo(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError("attempted to use private field on non-instance");return i}n(yo,"_classPrivateFieldLooseBase");var kx=0;function Dx(i){return"__private_"+kx+++"_"+i}n(Dx,"_classPrivateFieldLooseKey");var ob=typeof navigator<"u"&&"serviceWorker"in navigator;function Ix(){return new Promise((i,e)=>{ob?navigator.serviceWorker.controller?i():navigator.serviceWorker.addEventListener("controllerchange",()=>{i()}):e(new Error("Unsupported"))})}n(Ix,"waitForServiceWorker");var zt=Dx("ready"),bl=class{constructor(e){Object.defineProperty(this,zt,{writable:!0,value:void 0}),yo(this,zt)[zt]=Ix().then(t=>{yo(this,zt)[zt]=t}),this.name=e.storeName}get ready(){return Promise.resolve(yo(this,zt)[zt])}set ready(e){yo(this,zt)[zt]=e}async list(){return await yo(this,zt)[zt],new Promise((e,t)=>{let r=n(s=>{if(s.data.store===this.name)switch(s.data.type){case"uppy/ALL_FILES":e(s.data.files),navigator.serviceWorker.removeEventListener("message",r);break;default:t()}},"onMessage");navigator.serviceWorker.addEventListener("message",r),navigator.serviceWorker.controller.postMessage({type:"uppy/GET_FILES",store:this.name})})}async put(e){await yo(this,zt)[zt],navigator.serviceWorker.controller.postMessage({type:"uppy/ADD_FILE",store:this.name,file:e})}async delete(e){await yo(this,zt)[zt],navigator.serviceWorker.controller.postMessage({type:"uppy/REMOVE_FILE",store:this.name,fileID:e})}};n(bl,"ServiceWorkerStore");bl.isSupported=ob;var nb=bl;function ar(i,e){if(!Object.prototype.hasOwnProperty.call(i,e))throw new TypeError("attempted to use private field on non-instance");return i}n(ar,"_classPrivateFieldLooseBase");var Nx=0;function Mx(i){return"__private_"+Nx+++"_"+i}n(Mx,"_classPrivateFieldLooseKey");var db=typeof window<"u"&&(window.indexedDB||window.webkitIndexedDB||window.mozIndexedDB||window.OIndexedDB||window.msIndexedDB),Lx=!!db,ab="uppy-blobs",Vt="files",cb=24*60*60*1e3,Bx=3,lb=1048576;function zx(i){let e=i.openCursor();e.onsuccess=t=>{let r=t.target.result;if(!r)return;let s=r.value;s.expires=Date.now()+cb,r.update(s)}}n(zx,"migrateExpiration");function ub(i){let e=db.open(i,Bx);return new Promise((t,r)=>{e.onupgradeneeded=s=>{let o=s.target.result,{transaction:a}=s.currentTarget;if(s.oldVersion<2&&o.createObjectStore(Vt,{keyPath:"id"}).createIndex("store","store",{unique:!1}),s.oldVersion<3){let l=a.objectStore(Vt);l.createIndex("expires","expires",{unique:!1}),zx(l)}a.oncomplete=()=>{t(o)}},e.onsuccess=s=>{t(s.target.result)},e.onerror=r})}n(ub,"connect");function uh(i){return new Promise((e,t)=>{i.onsuccess=r=>{e(r.target.result)},i.onerror=t})}n(uh,"waitForRequest");var hb=!1,Ve=Mx("ready"),vo=class{constructor(e){Object.defineProperty(this,Ve,{writable:!0,value:void 0}),this.opts={dbName:ab,storeName:"default",expires:cb,maxFileSize:10*lb,maxTotalSize:300*lb,...e},this.name=this.opts.storeName;let t=n(async()=>{let r=await ub(this.opts.dbName);return ar(this,Ve)[Ve]=r,r},"createConnection");hb?ar(this,Ve)[Ve]=t():(hb=!0,ar(this,Ve)[Ve]=vo.cleanup().then(t,t))}get ready(){return Promise.resolve(ar(this,Ve)[Ve])}set ready(e){ar(this,Ve)[Ve]=e}key(e){return`${this.name}!${e}`}async list(){let s=(await ar(this,Ve)[Ve]).transaction([Vt],"readonly").objectStore(Vt).index("store").getAll(IDBKeyRange.only(this.name)),o=await uh(s);return Object.fromEntries(o.map(a=>[a.fileID,a.data]))}async get(e){let s=(await ar(this,Ve)[Ve]).transaction([Vt],"readonly").objectStore(Vt).get(this.key(e)),{data:o}=await uh(s);return{id:o.fileID,data:o.data}}async getSize(){let s=(await ar(this,Ve)[Ve]).transaction([Vt],"readonly").objectStore(Vt).index("store").openCursor(IDBKeyRange.only(this.name));return new Promise((o,a)=>{let l=0;s.onsuccess=h=>{let p=h.target.result;p?(l+=p.value.data.size,p.continue()):o(l)},s.onerror=()=>{a(new Error("Could not retrieve stored blobs size"))}})}async put(e){if(e.data.size>this.opts.maxFileSize)throw new Error("File is too big to store.");if(await this.getSize()>this.opts.maxTotalSize)throw new Error("No space left");let o=ar(this,Ve)[Ve].transaction([Vt],"readwrite").objectStore(Vt).add({id:this.key(e.id),fileID:e.id,store:this.name,expires:Date.now()+this.opts.expires,data:e.data});return uh(o)}async delete(e){let s=(await ar(this,Ve)[Ve]).transaction([Vt],"readwrite").objectStore(Vt).delete(this.key(e));return uh(s)}static async cleanup(){let e=await ub(ab),s=e.transaction([Vt],"readwrite").objectStore(Vt).index("expires").openCursor(IDBKeyRange.upperBound(Date.now()));await new Promise((o,a)=>{s.onsuccess=l=>{let h=l.target.result;h?(h.delete(),h.continue()):o()},s.onerror=a}),e.close()}};n(vo,"IndexedDBStore");vo.isSupported=Lx;var pb=vo;function jx(){let i=[];for(let e=0;e<localStorage.length;e++){let t=localStorage.key(e);t.startsWith("uppyState:")&&i.push(t.slice(10))}return i}n(jx,"findUppyInstances");function fb(i){try{return JSON.parse(i)}catch{return null}}n(fb,"maybeParse");var mb=!1,Ii=class{constructor(e){this.opts={expires:24*60*60*1e3,...e},this.name=`uppyState:${e.storeName}`,mb||(mb=!0,Ii.cleanup())}load(){let e=localStorage.getItem(this.name);if(!e)return null;let t=fb(e);return t?t.metadata?t.metadata:(this.save(t),t):null}save(e){let t=Date.now()+this.opts.expires,r=JSON.stringify({metadata:e,expires:t});localStorage.setItem(this.name,r)}static cleanup(e){if(e){localStorage.removeItem(`uppyState:${e}`);return}let t=jx(),r=Date.now();t.forEach(s=>{let o=localStorage.getItem(`uppyState:${s}`);if(!o)return;let a=fb(o);a&&a.expires&&a.expires<r&&localStorage.removeItem(`uppyState:${s}`)})}};n(Ii,"MetaDataStore");var Hx={version:"3.1.1"},bo=class extends ve{constructor(e,t){super(e,t),this.addBlobToStores=s=>{s.isRemote||(this.ServiceWorkerStore&&this.ServiceWorkerStore.put(s).catch(o=>{this.uppy.log("[GoldenRetriever] Could not store file","warning"),this.uppy.log(o)}),this.IndexedDBStore.put(s).catch(o=>{this.uppy.log("[GoldenRetriever] Could not store file","warning"),this.uppy.log(o)}))},this.removeBlobFromStores=s=>{this.ServiceWorkerStore&&this.ServiceWorkerStore.delete(s.id).catch(o=>{this.uppy.log("[GoldenRetriever] Failed to remove file","warning"),this.uppy.log(o)}),this.IndexedDBStore.delete(s.id).catch(o=>{this.uppy.log("[GoldenRetriever] Failed to remove file","warning"),this.uppy.log(o)})},this.replaceBlobInStores=s=>{this.removeBlobFromStores(s),this.addBlobToStores(s)},this.handleRestoreConfirmed=()=>{this.uppy.log("[GoldenRetriever] Restore confirmed, proceeding...");let{currentUploads:s}=this.uppy.getState();s&&(this.uppy.resumeAll(),Object.keys(s).forEach(o=>{this.uppy.restore(o,s[o])})),this.uppy.setState({recoveredState:null})},this.abortRestore=()=>{this.uppy.log("[GoldenRetriever] Aborting restore...");let s=Object.keys(this.uppy.getState().files);this.deleteBlobs(s).then(()=>{this.uppy.log(`[GoldenRetriever] Removed ${s.length} files`)}).catch(o=>{this.uppy.log(`[GoldenRetriever] Could not remove ${s.length} files`,"warning"),this.uppy.log(o)}),this.uppy.cancelAll(),this.uppy.setState({recoveredState:null}),Ii.cleanup(this.uppy.opts.id)},this.handleComplete=s=>{let{successful:o}=s,a=o.map(l=>l.id);this.deleteBlobs(a).then(()=>{this.uppy.log(`[GoldenRetriever] Removed ${o.length} files that finished uploading`)}).catch(l=>{this.uppy.log(`[GoldenRetriever] Could not remove ${o.length} files that finished uploading`,"warning"),this.uppy.log(l)}),this.uppy.setState({recoveredState:null}),Ii.cleanup(this.uppy.opts.id)},this.restoreBlobs=()=>{this.uppy.getFiles().length>0?Promise.all([this.loadFileBlobsFromServiceWorker(),this.loadFileBlobsFromIndexedDB()]).then(s=>{let o={...s[0],...s[1]};this.onBlobsLoaded(o)}):this.uppy.log("[GoldenRetriever] No files need to be loaded, only restoring processing state...")},this.type="debugger",this.id=this.opts.id||"GoldenRetriever",this.title="Golden Retriever";let r={expires:24*60*60*1e3,serviceWorker:!1};this.opts={...r,...t},this.MetaDataStore=new Ii({expires:this.opts.expires,storeName:e.getID()}),this.ServiceWorkerStore=null,this.opts.serviceWorker&&(this.ServiceWorkerStore=new nb({storeName:e.getID()})),this.IndexedDBStore=new pb({expires:this.opts.expires,...this.opts.indexedDB||{},storeName:e.getID()}),this.saveFilesStateToLocalStorage=(0,gb.default)(this.saveFilesStateToLocalStorage.bind(this),500,{leading:!0,trailing:!0}),this.restoreState=this.restoreState.bind(this),this.loadFileBlobsFromServiceWorker=this.loadFileBlobsFromServiceWorker.bind(this),this.loadFileBlobsFromIndexedDB=this.loadFileBlobsFromIndexedDB.bind(this),this.onBlobsLoaded=this.onBlobsLoaded.bind(this)}restoreState(){let e=this.MetaDataStore.load();e&&(this.uppy.log("[GoldenRetriever] Recovered some state from Local Storage"),this.uppy.setState({currentUploads:e.currentUploads||{},files:e.files||{},recoveredState:e}),this.savedPluginData=e.pluginData)}getWaitingFiles(){let e={};return this.uppy.getFiles().forEach(t=>{(!t.progress||!t.progress.uploadStarted)&&(e[t.id]=t)}),e}getUploadingFiles(){let e={},{currentUploads:t}=this.uppy.getState();return t&&Object.keys(t).forEach(s=>{t[s].fileIDs.forEach(a=>{e[a]=this.uppy.getFile(a)})}),e}saveFilesStateToLocalStorage(){let e={...this.getWaitingFiles(),...this.getUploadingFiles()},t=Object.entries(e);if(t.length===0){this.uppy.getState().recoveredState!==null&&this.uppy.setState({recoveredState:null}),Ii.cleanup(this.uppy.opts.id);return}let r=Object.fromEntries(t.map(a=>{let[l,h]=a;return[l,h.isRemote?{...h,isRestored:!0}:{...h,isRestored:!0,data:null,preview:null}]})),s={};this.uppy.emit("restore:get-data",a=>{Object.assign(s,a)});let{currentUploads:o}=this.uppy.getState();this.MetaDataStore.save({currentUploads:o,files:r,pluginData:s})}loadFileBlobsFromServiceWorker(){return this.ServiceWorkerStore?this.ServiceWorkerStore.list().then(e=>{let t=Object.keys(e).length;return t>0?(this.uppy.log(`[GoldenRetriever] Successfully recovered ${t} blobs from Service Worker!`),e):(this.uppy.log("[GoldenRetriever] No blobs found in Service Worker, trying IndexedDB now..."),{})}).catch(e=>(this.uppy.log("[GoldenRetriever] Failed to recover blobs from Service Worker","warning"),this.uppy.log(e),{})):Promise.resolve({})}loadFileBlobsFromIndexedDB(){return this.IndexedDBStore.list().then(e=>{let t=Object.keys(e).length;return t>0?(this.uppy.log(`[GoldenRetriever] Successfully recovered ${t} blobs from IndexedDB!`),e):(this.uppy.log("[GoldenRetriever] No blobs found in IndexedDB"),{})}).catch(e=>(this.uppy.log("[GoldenRetriever] Failed to recover blobs from IndexedDB","warning"),this.uppy.log(e),{}))}onBlobsLoaded(e){let t=[],r={...this.uppy.getState().files};Object.keys(e).forEach(s=>{let o=this.uppy.getFile(s);if(!o){t.push(s);return}let l={data:e[s],isRestored:!0,isGhost:!1};r[s]={...o,...l}}),Object.keys(r).forEach(s=>{r[s].data===null&&(r[s]={...r[s],isGhost:!0})}),this.uppy.setState({files:r}),this.uppy.emit("restored",this.savedPluginData),t.length&&this.deleteBlobs(t).then(()=>{this.uppy.log(`[GoldenRetriever] Cleaned up ${t.length} old files`)}).catch(s=>{this.uppy.log(`[GoldenRetriever] Could not clean up ${t.length} old files`,"warning"),this.uppy.log(s)})}deleteBlobs(e){return Promise.all(e.map(t=>{var r,s,o;return(r=(s=this.ServiceWorkerStore)==null?void 0:s.delete(t))!=null?r:(o=this.IndexedDBStore)==null?void 0:o.delete(t)}))}install(){this.restoreState(),this.restoreBlobs(),this.uppy.on("file-added",this.addBlobToStores),this.uppy.on("file-editor:complete",this.replaceBlobInStores),this.uppy.on("file-removed",this.removeBlobFromStores),this.uppy.on("state-update",this.saveFilesStateToLocalStorage),this.uppy.on("restore-confirmed",this.handleRestoreConfirmed),this.uppy.on("restore-canceled",this.abortRestore),this.uppy.on("complete",this.handleComplete)}uninstall(){this.uppy.off("file-added",this.addBlobToStores),this.uppy.off("file-editor:complete",this.replaceBlobInStores),this.uppy.off("file-removed",this.removeBlobFromStores),this.uppy.off("state-update",this.saveFilesStateToLocalStorage),this.uppy.off("restore-confirmed",this.handleRestoreConfirmed),this.uppy.off("restore-canceled",this.abortRestore),this.uppy.off("complete",this.handleComplete)}};n(bo,"GoldenRetriever");bo.VERSION=Hx.version;var $x={version:"3.0.3"},wo=class extends Z{constructor(e,t){super(e,t),this.type="debugger",this.id=this.opts.id||"ReduxDevTools",this.title="Redux DevTools";let r={};this.opts={...r,...t},this.handleStateChange=this.handleStateChange.bind(this),this.initDevTools=this.initDevTools.bind(this)}handleStateChange(e,t){this.devTools.send("UPPY_STATE_UPDATE",t)}initDevTools(){this.devTools=window.devToolsExtension.connect(),this.devToolsUnsubscribe=this.devTools.subscribe(e=>{if(e.type==="DISPATCH")switch(e.payload.type){case"RESET":this.uppy.cancelAll();return;case"IMPORT_STATE":{let{computedStates:t}=e.payload.nextLiftedState;this.uppy.store.state={...this.uppy.getState(),...t[t.length-1].state},this.uppy.updateAll(this.uppy.getState());return}case"JUMP_TO_STATE":case"JUMP_TO_ACTION":this.uppy.store.state={...this.uppy.getState(),...JSON.parse(e.state)},this.uppy.updateAll(this.uppy.getState());break;default:}})}install(){this.withDevTools=typeof window<"u"&&window.__REDUX_DEVTOOLS_EXTENSION__,this.withDevTools&&(this.initDevTools(),this.uppy.on("state-update",this.handleStateChange))}uninstall(){this.withDevTools&&(this.devToolsUnsubscribe(),this.uppy.off("state-update",this.handleStateUpdate))}};n(wo,"ReduxDevTools");wo.VERSION=$x.version;function qx(){throw new Error("Core has been renamed to Uppy")}n(qx,"Core");var Vx={ProviderView:td};yi.COMPANION_URL=Ip;yi.COMPANION_ALLOWED_HOSTS=Np;var Wx={};globalThis.Uppy=qp;})(); +/** + * Takes a string with placeholder variables like `%{smart_count} file selected` + * and replaces it with values from options `{smart_count: 5}` + * + * @license https://github.com/airbnb/polyglot.js/blob/master/LICENSE + * taken from https://github.com/airbnb/polyglot.js/blob/master/lib/polyglot.js#L299 + * + * @param phrase that needs interpolation, with placeholders + * @param options with values that will be used to replace placeholders + */ +/*! Bundled license information: + +classnames/index.js: + (*! + Copyright (c) 2018 Jed Watson. + Licensed under the MIT License (MIT), see + http://jedwatson.github.io/classnames + *) + +cropperjs/dist/cropper.js: + (*! + * Cropper.js v1.5.7 + * https://fengyuanchen.github.io/cropperjs + * + * Copyright 2015-present Chen Fengyuan + * Released under the MIT license + * + * Date: 2020-05-23T05:23:00.081Z + *) + +compressorjs/dist/compressor.js: + (*! + * Compressor.js v1.1.1 + * https://fengyuanchen.github.io/compressorjs + * + * Copyright 2018-present Chen Fengyuan + * Released under the MIT license + * + * Date: 2021-10-05T02:32:40.212Z + *) +*/ +//# sourceMappingURL=uppy.min.js.map From 7027a329377439f59bd470ef4972d4d85302c077 Mon Sep 17 00:00:00 2001 From: Anupam Bhatt <51681435+engcom-Echo@users.noreply.github.com> Date: Fri, 19 Jan 2024 13:52:38 +0530 Subject: [PATCH 069/104] Added visibility for const varible to fix static test --- .../Unit/Controller/Adminhtml/Config/EnableAdminUsageTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/AdminAnalytics/Test/Unit/Controller/Adminhtml/Config/EnableAdminUsageTest.php b/app/code/Magento/AdminAnalytics/Test/Unit/Controller/Adminhtml/Config/EnableAdminUsageTest.php index 0a83a1a35dc02..0852e350ac90c 100644 --- a/app/code/Magento/AdminAnalytics/Test/Unit/Controller/Adminhtml/Config/EnableAdminUsageTest.php +++ b/app/code/Magento/AdminAnalytics/Test/Unit/Controller/Adminhtml/Config/EnableAdminUsageTest.php @@ -24,7 +24,7 @@ */ class EnableAdminUsageTest extends \PHPUnit\Framework\TestCase { - const STUB_PRODUCT_VERSION = 'Product Version'; + private const STUB_PRODUCT_VERSION = 'Product Version'; /** @var EnableAdminUsage */ private $controller; From e2da584242c4395a75210ac8d036b3472c1bee53 Mon Sep 17 00:00:00 2001 From: Atul-glo35265 <glo35265@adobe.com> Date: Fri, 19 Jan 2024 17:33:16 +0530 Subject: [PATCH 070/104] AC-10720::Migration from outdated jquery/fileUpload library - Resolve Static Errors --- .../view/adminhtml/web/catalog/base-image-uploader.js | 5 +++-- .../Ui/view/base/web/js/form/element/file-uploader.js | 3 ++- .../Backend/view/adminhtml/web/js/media-uploader.test.js | 2 +- .../Magento/Ui/base/js/form/element/file-uploader.test.js | 6 +++--- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/app/code/Magento/Catalog/view/adminhtml/web/catalog/base-image-uploader.js b/app/code/Magento/Catalog/view/adminhtml/web/catalog/base-image-uploader.js index 478fdfcaf1646..cf5453ac355c5 100644 --- a/app/code/Magento/Catalog/view/adminhtml/web/catalog/base-image-uploader.js +++ b/app/code/Magento/Catalog/view/adminhtml/web/catalog/base-image-uploader.js @@ -3,6 +3,8 @@ * See COPYING.txt for license details. */ +/* eslint-disable no-undef */ + define([ 'jquery', 'mage/template', @@ -142,6 +144,7 @@ define([ fileId = null, arrayFromObj = Array.from, fileObj = [], + uploaderContainer = this.element.find('input[type="file"]').closest('.image-placeholder'), options = { proudlyDisplayPoweredByUppy: false, target: targetElement, @@ -188,7 +191,6 @@ define([ tempFileId: fileId }; - var uploaderContainer = this.element.find('input[type="file"]').closest('.image-placeholder'); uploaderContainer.addClass('loading'); fileObj.push(currentFile); return modifiedFile; @@ -245,7 +247,6 @@ define([ }); uppy.on('complete', () => { - var uploaderContainer = this.element.find('input[type="file"]').closest('.image-placeholder'); uploaderContainer.removeClass('loading'); Array.from = arrayFromObj; }); diff --git a/app/code/Magento/Ui/view/base/web/js/form/element/file-uploader.js b/app/code/Magento/Ui/view/base/web/js/form/element/file-uploader.js index 9d86f100583c0..6acdacb2dea4a 100644 --- a/app/code/Magento/Ui/view/base/web/js/form/element/file-uploader.js +++ b/app/code/Magento/Ui/view/base/web/js/form/element/file-uploader.js @@ -17,6 +17,7 @@ define([ 'Magento_Ui/js/form/element/abstract', 'mage/backend/notification', 'mage/translate', + 'jquery/jquery.cookie', 'jquery/uppy-core', 'mage/adminhtml/tools' ], function ($, _, utils, uiAlert, validator, Element, notification, $t) { @@ -85,7 +86,7 @@ define([ hideProgressAfterFinish: true }; - if (fileInputName === undefined){ + if (fileInputName === undefined) { fileInputName = $(fileInput).attr('name'); } // handle input type file diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Backend/view/adminhtml/web/js/media-uploader.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Backend/view/adminhtml/web/js/media-uploader.test.js index 39dc052ceb5dd..bbf6e479396ba 100644 --- a/dev/tests/js/jasmine/tests/app/code/Magento/Backend/view/adminhtml/web/js/media-uploader.test.js +++ b/dev/tests/js/jasmine/tests/app/code/Magento/Backend/view/adminhtml/web/js/media-uploader.test.js @@ -8,7 +8,7 @@ define([ 'jquery', 'Magento_Backend/js/media-uploader' -], function ($, mediaUploader) { +], function ($) { 'use strict'; describe('Magento_Backend/js/media-uploader::_create()', function () { diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/element/file-uploader.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/element/file-uploader.test.js index a10b07e01035b..08185de66286a 100644 --- a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/element/file-uploader.test.js +++ b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/element/file-uploader.test.js @@ -84,9 +84,9 @@ define([ expect(component.initUploader).toHaveBeenCalledWith(fileInputMock); expect(component.replaceInputTypeFile).toHaveBeenCalledWith(fileInputMock); - expect(uppyMock.use).toHaveBeenCalledWith(Uppy.Dashboard, jasmine.any(Object)); - expect(uppyMock.use).toHaveBeenCalledWith(Uppy.DropTarget, jasmine.any(Object)); - expect(uppyMock.use).toHaveBeenCalledWith(Uppy.XHRUpload, jasmine.any(Object)); + expect(uppyMock.use).toHaveBeenCalledWith(window.Uppy.Dashboard, jasmine.any(Object)); + expect(uppyMock.use).toHaveBeenCalledWith(window.Uppy.DropTarget, jasmine.any(Object)); + expect(uppyMock.use).toHaveBeenCalledWith(window.Uppy.XHRUpload, jasmine.any(Object)); }); }); From d79144ca62be2dced463bbb79a372226b96d7dfd Mon Sep 17 00:00:00 2001 From: Rajesh Kumar <glo71317@adobe.com> Date: Wed, 24 Jan 2024 13:46:48 +0530 Subject: [PATCH 071/104] AC-9196::Update spomky-labs/otphp to its latest version available --- composer.lock | 913 +++++++++++++++++++++++++++++++------------------- 1 file changed, 572 insertions(+), 341 deletions(-) diff --git a/composer.lock b/composer.lock index 1d3654acd286d..8060da29f1fa5 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": "fabaa9a74a0ad33978833f0081e3ca6a", + "content-hash": "c6ad542ca6c70b7859c8269646089ad2", "packages": [ { "name": "aws/aws-crt-php", @@ -62,16 +62,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.295.2", + "version": "3.296.8", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "7e8f68580954a01cf9c8f2abd4f4db52ebcb7b73" + "reference": "f84fe470709e5ab9515649a1a0891e279693d1b3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/7e8f68580954a01cf9c8f2abd4f4db52ebcb7b73", - "reference": "7e8f68580954a01cf9c8f2abd4f4db52ebcb7b73", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/f84fe470709e5ab9515649a1a0891e279693d1b3", + "reference": "f84fe470709e5ab9515649a1a0891e279693d1b3", "shasum": "" }, "require": { @@ -151,9 +151,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.295.2" + "source": "https://github.com/aws/aws-sdk-php/tree/3.296.8" }, - "time": "2023-12-27T19:06:10+00:00" + "time": "2024-01-23T20:32:59+00:00" }, { "name": "brick/math", @@ -303,16 +303,16 @@ }, { "name": "colinmollenhour/cache-backend-redis", - "version": "1.17.1", + "version": "1.16.0", "source": { "type": "git", "url": "https://github.com/colinmollenhour/Cm_Cache_Backend_Redis.git", - "reference": "d403f4473e1b3cc616fa59d187e817543b6620c1" + "reference": "3fc3e9149097f67cded1c425088e37d7fa8083ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/colinmollenhour/Cm_Cache_Backend_Redis/zipball/d403f4473e1b3cc616fa59d187e817543b6620c1", - "reference": "d403f4473e1b3cc616fa59d187e817543b6620c1", + "url": "https://api.github.com/repos/colinmollenhour/Cm_Cache_Backend_Redis/zipball/3fc3e9149097f67cded1c425088e37d7fa8083ed", + "reference": "3fc3e9149097f67cded1c425088e37d7fa8083ed", "shasum": "" }, "require": { @@ -342,22 +342,22 @@ "homepage": "https://github.com/colinmollenhour/Cm_Cache_Backend_Redis", "support": { "issues": "https://github.com/colinmollenhour/Cm_Cache_Backend_Redis/issues", - "source": "https://github.com/colinmollenhour/Cm_Cache_Backend_Redis/tree/1.17.1" + "source": "https://github.com/colinmollenhour/Cm_Cache_Backend_Redis/tree/1.16.0" }, - "time": "2023-12-21T21:56:18+00:00" + "time": "2023-01-18T03:00:27+00:00" }, { "name": "colinmollenhour/credis", - "version": "v1.16.0", + "version": "v1.15.0", "source": { "type": "git", "url": "https://github.com/colinmollenhour/credis.git", - "reference": "5641140e14a9679f5a6f66c97268727f9558b881" + "reference": "28810439de1d9597b7ba11794ed9479fb6f3de7c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/colinmollenhour/credis/zipball/5641140e14a9679f5a6f66c97268727f9558b881", - "reference": "5641140e14a9679f5a6f66c97268727f9558b881", + "url": "https://api.github.com/repos/colinmollenhour/credis/zipball/28810439de1d9597b7ba11794ed9479fb6f3de7c", + "reference": "28810439de1d9597b7ba11794ed9479fb6f3de7c", "shasum": "" }, "require": { @@ -389,22 +389,22 @@ "homepage": "https://github.com/colinmollenhour/credis", "support": { "issues": "https://github.com/colinmollenhour/credis/issues", - "source": "https://github.com/colinmollenhour/credis/tree/v1.16.0" + "source": "https://github.com/colinmollenhour/credis/tree/v1.15.0" }, - "time": "2023-10-26T17:02:51+00:00" + "time": "2023-04-18T15:34:23+00:00" }, { "name": "colinmollenhour/php-redis-session-abstract", - "version": "v1.5.2", + "version": "v1.5.4", "source": { "type": "git", "url": "https://github.com/colinmollenhour/php-redis-session-abstract.git", - "reference": "3d3e497bcf2e6d032c5a8f86aa180d181ad65dd3" + "reference": "c2e6ed15eb9cb363c9097fafefa590039fbadcb0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/colinmollenhour/php-redis-session-abstract/zipball/3d3e497bcf2e6d032c5a8f86aa180d181ad65dd3", - "reference": "3d3e497bcf2e6d032c5a8f86aa180d181ad65dd3", + "url": "https://api.github.com/repos/colinmollenhour/php-redis-session-abstract/zipball/c2e6ed15eb9cb363c9097fafefa590039fbadcb0", + "reference": "c2e6ed15eb9cb363c9097fafefa590039fbadcb0", "shasum": "" }, "require": { @@ -433,9 +433,9 @@ "homepage": "https://github.com/colinmollenhour/php-redis-session-abstract", "support": { "issues": "https://github.com/colinmollenhour/php-redis-session-abstract/issues", - "source": "https://github.com/colinmollenhour/php-redis-session-abstract/tree/v1.5.2" + "source": "https://github.com/colinmollenhour/php-redis-session-abstract/tree/v1.5.4" }, - "time": "2023-11-03T14:58:07+00:00" + "time": "2024-01-03T14:16:31+00:00" }, { "name": "composer/ca-bundle", @@ -1067,68 +1067,108 @@ ], "time": "2022-02-25T21:32:43+00:00" }, + { + "name": "elastic/transport", + "version": "v8.8.0", + "source": { + "type": "git", + "url": "git@github.com:elastic/elastic-transport-php.git", + "reference": "cdf9f63a16ec6bfb4c881ab89aa0e2a61fb7c20b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/elastic/elastic-transport-php/zipball/cdf9f63a16ec6bfb4c881ab89aa0e2a61fb7c20b", + "reference": "cdf9f63a16ec6bfb4c881ab89aa0e2a61fb7c20b", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.0", + "php": "^7.4 || ^8.0", + "php-http/discovery": "^1.14", + "php-http/httplug": "^2.3", + "psr/http-client": "^1.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0 || ^2.0", + "psr/log": "^1 || ^2 || ^3" + }, + "require-dev": { + "nyholm/psr7": "^1.5", + "php-http/mock-client": "^1.5", + "phpstan/phpstan": "^1.4", + "phpunit/phpunit": "^9.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Elastic\\Transport\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "HTTP transport PHP library for Elastic products", + "keywords": [ + "PSR_17", + "elastic", + "http", + "psr-18", + "psr-7", + "transport" + ], + "time": "2023-11-08T10:51:51+00:00" + }, { "name": "elasticsearch/elasticsearch", - "version": "v7.17.2", + "version": "v8.5.3", "source": { "type": "git", "url": "git@github.com:elastic/elasticsearch-php.git", - "reference": "2d302233f2bb0926812d82823bb820d405e130fc" + "reference": "9d850932b8ab8129fd4baf597a1172e8f583b436" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/elastic/elasticsearch-php/zipball/2d302233f2bb0926812d82823bb820d405e130fc", - "reference": "2d302233f2bb0926812d82823bb820d405e130fc", + "url": "https://api.github.com/repos/elastic/elasticsearch-php/zipball/9d850932b8ab8129fd4baf597a1172e8f583b436", + "reference": "9d850932b8ab8129fd4baf597a1172e8f583b436", "shasum": "" }, "require": { - "ext-json": ">=1.3.7", - "ezimuel/ringphp": "^1.1.2", - "php": "^7.3 || ^8.0", + "elastic/transport": "^8.5", + "guzzlehttp/guzzle": "^7.0", + "php": "^7.4 || ^8.0", + "psr/http-client": "^1.0", + "psr/http-message": "^1.0", "psr/log": "^1|^2|^3" }, "require-dev": { "ext-yaml": "*", "ext-zip": "*", - "mockery/mockery": "^1.2", - "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^9.3", - "squizlabs/php_codesniffer": "^3.4", - "symfony/finder": "~4.0" - }, - "suggest": { - "ext-curl": "*", - "monolog/monolog": "Allows for client-level logging and tracing" + "mockery/mockery": "^1.5", + "nyholm/psr7": "^1.5", + "php-http/mock-client": "^1.5", + "phpstan/phpstan": "^1.4", + "phpunit/phpunit": "^9.5", + "symfony/finder": "~4.0", + "symfony/http-client": "^5.0|^6.0" }, "type": "library", "autoload": { - "files": [ - "src/autoload.php" - ], "psr-4": { - "Elasticsearch\\": "src/Elasticsearch/" + "Elastic\\Elasticsearch\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "Apache-2.0", - "LGPL-2.1-only" - ], - "authors": [ - { - "name": "Zachary Tong" - }, - { - "name": "Enrico Zimuel" - } + "MIT" ], "description": "PHP Client for Elasticsearch", "keywords": [ "client", + "elastic", "elasticsearch", "search" ], - "time": "2023-04-21T15:31:12+00:00" + "time": "2022-11-22T14:15:58+00:00" }, { "name": "ezimuel/guzzlestreams", @@ -2170,16 +2210,16 @@ }, { "name": "laminas/laminas-eventmanager", - "version": "3.12.0", + "version": "3.13.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-eventmanager.git", - "reference": "4a576922c00cc7838d60d004a7bd6f5a02c23b57" + "reference": "ce5ba8bde378fca5cb0cd514f01823637215b2f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-eventmanager/zipball/4a576922c00cc7838d60d004a7bd6f5a02c23b57", - "reference": "4a576922c00cc7838d60d004a7bd6f5a02c23b57", + "url": "https://api.github.com/repos/laminas/laminas-eventmanager/zipball/ce5ba8bde378fca5cb0cd514f01823637215b2f3", + "reference": "ce5ba8bde378fca5cb0cd514f01823637215b2f3", "shasum": "" }, "require": { @@ -2191,12 +2231,12 @@ }, "require-dev": { "laminas/laminas-coding-standard": "~2.5.0", - "laminas/laminas-stdlib": "^3.17", - "phpbench/phpbench": "^1.2.10", - "phpunit/phpunit": "^10.4.1", + "laminas/laminas-stdlib": "^3.18", + "phpbench/phpbench": "^1.2.15", + "phpunit/phpunit": "^10.5.5", "psalm/plugin-phpunit": "^0.18.4", "psr/container": "^1.1.2 || ^2.0.2", - "vimeo/psalm": "^5.11" + "vimeo/psalm": "^5.18" }, "suggest": { "laminas/laminas-stdlib": "^2.7.3 || ^3.0, to use the FilterChain feature", @@ -2234,7 +2274,7 @@ "type": "community_bridge" } ], - "time": "2023-10-18T16:36:45+00:00" + "time": "2024-01-03T17:43:50+00:00" }, { "name": "laminas/laminas-feed", @@ -2386,16 +2426,16 @@ }, { "name": "laminas/laminas-filter", - "version": "2.33.0", + "version": "2.34.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-filter.git", - "reference": "6ad64828d25ec4bdf226ec5096aabb04aa710324" + "reference": "008923542683d853109af5c71b7e9099de76c3e6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-filter/zipball/6ad64828d25ec4bdf226ec5096aabb04aa710324", - "reference": "6ad64828d25ec4bdf226ec5096aabb04aa710324", + "url": "https://api.github.com/repos/laminas/laminas-filter/zipball/008923542683d853109af5c71b7e9099de76c3e6", + "reference": "008923542683d853109af5c71b7e9099de76c3e6", "shasum": "" }, "require": { @@ -2410,14 +2450,14 @@ }, "require-dev": { "laminas/laminas-coding-standard": "~2.5.0", - "laminas/laminas-crypt": "^3.10", - "laminas/laminas-i18n": "^2.23.1", + "laminas/laminas-crypt": "^3.11", + "laminas/laminas-i18n": "^2.25.0", "laminas/laminas-uri": "^2.11", "pear/archive_tar": "^1.4.14", - "phpunit/phpunit": "^10.4.2", + "phpunit/phpunit": "^10.5.5", "psalm/plugin-phpunit": "^0.18.4", "psr/http-factory": "^1.0.2", - "vimeo/psalm": "^5.15.0" + "vimeo/psalm": "^5.18.0" }, "suggest": { "laminas/laminas-crypt": "Laminas\\Crypt component, for encryption filters", @@ -2461,7 +2501,7 @@ "type": "community_bridge" } ], - "time": "2023-11-03T13:29:10+00:00" + "time": "2024-01-04T11:47:08+00:00" }, { "name": "laminas/laminas-http", @@ -2530,16 +2570,16 @@ }, { "name": "laminas/laminas-i18n", - "version": "2.25.0", + "version": "2.26.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-i18n.git", - "reference": "4b6df8501bfe96648dadaf8de681cbbaea906e04" + "reference": "01738410cb263994d1d192861f642387e7e12ace" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-i18n/zipball/4b6df8501bfe96648dadaf8de681cbbaea906e04", - "reference": "4b6df8501bfe96648dadaf8de681cbbaea906e04", + "url": "https://api.github.com/repos/laminas/laminas-i18n/zipball/01738410cb263994d1d192861f642387e7e12ace", + "reference": "01738410cb263994d1d192861f642387e7e12ace", "shasum": "" }, "require": { @@ -2553,18 +2593,18 @@ "zendframework/zend-i18n": "*" }, "require-dev": { - "laminas/laminas-cache": "^3.11.0", + "laminas/laminas-cache": "^3.12.0", "laminas/laminas-cache-storage-adapter-memory": "^2.3.0", - "laminas/laminas-cache-storage-deprecated-factory": "^1.1", + "laminas/laminas-cache-storage-deprecated-factory": "^1.2", "laminas/laminas-coding-standard": "~2.5.0", "laminas/laminas-config": "^3.9.0", - "laminas/laminas-eventmanager": "^3.12", - "laminas/laminas-filter": "^2.33", - "laminas/laminas-validator": "^2.41", - "laminas/laminas-view": "^2.32", - "phpunit/phpunit": "^10.4.2", + "laminas/laminas-eventmanager": "^3.13", + "laminas/laminas-filter": "^2.34", + "laminas/laminas-validator": "^2.46", + "laminas/laminas-view": "^2.33", + "phpunit/phpunit": "^10.5.5", "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.15.0" + "vimeo/psalm": "^5.18.0" }, "suggest": { "laminas/laminas-cache": "You should install this package to cache the translations", @@ -2611,7 +2651,7 @@ "type": "community_bridge" } ], - "time": "2023-12-22T15:51:21+00:00" + "time": "2024-01-04T13:49:00+00:00" }, { "name": "laminas/laminas-json", @@ -3653,16 +3693,16 @@ }, { "name": "laminas/laminas-stdlib", - "version": "3.18.0", + "version": "3.19.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-stdlib.git", - "reference": "e85b29076c6216e7fc98e72b42dbe1bbc3b95ecf" + "reference": "6a192dd0882b514e45506f533b833b623b78fff3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/e85b29076c6216e7fc98e72b42dbe1bbc3b95ecf", - "reference": "e85b29076c6216e7fc98e72b42dbe1bbc3b95ecf", + "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/6a192dd0882b514e45506f533b833b623b78fff3", + "reference": "6a192dd0882b514e45506f533b833b623b78fff3", "shasum": "" }, "require": { @@ -3673,10 +3713,10 @@ }, "require-dev": { "laminas/laminas-coding-standard": "^2.5", - "phpbench/phpbench": "^1.2.14", - "phpunit/phpunit": "^10.3.3", + "phpbench/phpbench": "^1.2.15", + "phpunit/phpunit": "^10.5.8", "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.15.0" + "vimeo/psalm": "^5.20.0" }, "type": "library", "autoload": { @@ -3708,7 +3748,7 @@ "type": "community_bridge" } ], - "time": "2023-09-19T10:15:21+00:00" + "time": "2024-01-19T12:39:49+00:00" }, { "name": "laminas/laminas-text", @@ -3830,16 +3870,16 @@ }, { "name": "laminas/laminas-validator", - "version": "2.45.0", + "version": "2.47.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-validator.git", - "reference": "2a60d288ffa1acb84321c85a066dcbf96da34a50" + "reference": "5c3fc8c4f1263cda5c5f14aed874fdadd5b90bbd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/2a60d288ffa1acb84321c85a066dcbf96da34a50", - "reference": "2a60d288ffa1acb84321c85a066dcbf96da34a50", + "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/5c3fc8c4f1263cda5c5f14aed874fdadd5b90bbd", + "reference": "5c3fc8c4f1263cda5c5f14aed874fdadd5b90bbd", "shasum": "" }, "require": { @@ -3910,20 +3950,20 @@ "type": "community_bridge" } ], - "time": "2023-12-18T01:12:24+00:00" + "time": "2024-01-17T11:31:50+00:00" }, { "name": "laminas/laminas-view", - "version": "2.32.0", + "version": "2.33.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-view.git", - "reference": "399fa0fb896f06663bba8fe7795722785339b684" + "reference": "9b34f34eb69e839f4cbd64495c199c593565f166" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-view/zipball/399fa0fb896f06663bba8fe7795722785339b684", - "reference": "399fa0fb896f06663bba8fe7795722785339b684", + "url": "https://api.github.com/repos/laminas/laminas-view/zipball/9b34f34eb69e839f4cbd64495c199c593565f166", + "reference": "9b34f34eb69e839f4cbd64495c199c593565f166", "shasum": "" }, "require": { @@ -4010,7 +4050,7 @@ "type": "community_bridge" } ], - "time": "2023-11-03T13:48:07+00:00" + "time": "2024-01-03T14:59:52+00:00" }, { "name": "laminas/laminas-zendframework-bridge", @@ -5381,6 +5421,193 @@ }, "time": "2023-07-01T11:25:08+00:00" }, + { + "name": "php-http/discovery", + "version": "1.19.2", + "source": { + "type": "git", + "url": "https://github.com/php-http/discovery.git", + "reference": "61e1a1eb69c92741f5896d9e05fb8e9d7e8bb0cb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/discovery/zipball/61e1a1eb69c92741f5896d9e05fb8e9d7e8bb0cb", + "reference": "61e1a1eb69c92741f5896d9e05fb8e9d7e8bb0cb", + "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", + "symfony/phpunit-bridge": "^6.2" + }, + "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.19.2" + }, + "time": "2023-11-30T16:49:05+00:00" + }, + { + "name": "php-http/httplug", + "version": "2.4.0", + "source": { + "type": "git", + "url": "https://github.com/php-http/httplug.git", + "reference": "625ad742c360c8ac580fcc647a1541d29e257f67" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/httplug/zipball/625ad742c360c8ac580fcc647a1541d29e257f67", + "reference": "625ad742c360c8ac580fcc647a1541d29e257f67", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0", + "php-http/promise": "^1.1", + "psr/http-client": "^1.0", + "psr/http-message": "^1.0 || ^2.0" + }, + "require-dev": { + "friends-of-phpspec/phpspec-code-coverage": "^4.1 || ^5.0 || ^6.0", + "phpspec/phpspec": "^5.1 || ^6.0 || ^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Http\\Client\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Eric GELOEN", + "email": "geloen.eric@gmail.com" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" + } + ], + "description": "HTTPlug, the HTTP client abstraction for PHP", + "homepage": "http://httplug.io", + "keywords": [ + "client", + "http" + ], + "support": { + "issues": "https://github.com/php-http/httplug/issues", + "source": "https://github.com/php-http/httplug/tree/2.4.0" + }, + "time": "2023-04-14T15:10:03+00:00" + }, + { + "name": "php-http/promise", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/php-http/promise.git", + "reference": "2916a606d3b390f4e9e8e2b8dd68581508be0f07" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/promise/zipball/2916a606d3b390f4e9e8e2b8dd68581508be0f07", + "reference": "2916a606d3b390f4e9e8e2b8dd68581508be0f07", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "friends-of-phpspec/phpspec-code-coverage": "^4.3.2 || ^6.3", + "phpspec/phpspec": "^5.1.2 || ^6.2 || ^7.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Http\\Promise\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Joel Wurtz", + "email": "joel.wurtz@gmail.com" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + } + ], + "description": "Promise used for asynchronous HTTP requests", + "homepage": "http://httplug.io", + "keywords": [ + "promise" + ], + "support": { + "issues": "https://github.com/php-http/promise/issues", + "source": "https://github.com/php-http/promise/tree/1.3.0" + }, + "time": "2024-01-04T18:49:48+00:00" + }, { "name": "phpseclib/mcrypt_compat", "version": "2.0.4", @@ -5451,16 +5678,16 @@ }, { "name": "phpseclib/phpseclib", - "version": "3.0.34", + "version": "3.0.35", "source": { "type": "git", "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "56c79f16a6ae17e42089c06a2144467acc35348a" + "reference": "4b1827beabce71953ca479485c0ae9c51287f2fe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/56c79f16a6ae17e42089c06a2144467acc35348a", - "reference": "56c79f16a6ae17e42089c06a2144467acc35348a", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/4b1827beabce71953ca479485c0ae9c51287f2fe", + "reference": "4b1827beabce71953ca479485c0ae9c51287f2fe", "shasum": "" }, "require": { @@ -5541,7 +5768,7 @@ ], "support": { "issues": "https://github.com/phpseclib/phpseclib/issues", - "source": "https://github.com/phpseclib/phpseclib/tree/3.0.34" + "source": "https://github.com/phpseclib/phpseclib/tree/3.0.35" }, "funding": [ { @@ -5557,7 +5784,7 @@ "type": "tidelift" } ], - "time": "2023-11-27T11:13:31+00:00" + "time": "2023-12-29T01:59:53+00:00" }, { "name": "psr/clock", @@ -6701,16 +6928,16 @@ }, { "name": "symfony/console", - "version": "v5.4.32", + "version": "v5.4.34", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "c70df1ffaf23a8d340bded3cfab1b86752ad6ed7" + "reference": "4b4d8cd118484aa604ec519062113dd87abde18c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/c70df1ffaf23a8d340bded3cfab1b86752ad6ed7", - "reference": "c70df1ffaf23a8d340bded3cfab1b86752ad6ed7", + "url": "https://api.github.com/repos/symfony/console/zipball/4b4d8cd118484aa604ec519062113dd87abde18c", + "reference": "4b4d8cd118484aa604ec519062113dd87abde18c", "shasum": "" }, "require": { @@ -6780,7 +7007,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.32" + "source": "https://github.com/symfony/console/tree/v5.4.34" }, "funding": [ { @@ -6796,7 +7023,7 @@ "type": "tidelift" } ], - "time": "2023-11-18T18:23:04+00:00" + "time": "2023-12-08T13:33:03+00:00" }, { "name": "symfony/css-selector", @@ -6865,16 +7092,16 @@ }, { "name": "symfony/dependency-injection", - "version": "v6.4.1", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "f88ff6428afbeb17cc648c8003bd608534750baf" + "reference": "226ea431b1eda6f0d9f5a4b278757171960bb195" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/f88ff6428afbeb17cc648c8003bd608534750baf", - "reference": "f88ff6428afbeb17cc648c8003bd608534750baf", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/226ea431b1eda6f0d9f5a4b278757171960bb195", + "reference": "226ea431b1eda6f0d9f5a4b278757171960bb195", "shasum": "" }, "require": { @@ -6926,7 +7153,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v6.4.1" + "source": "https://github.com/symfony/dependency-injection/tree/v6.4.2" }, "funding": [ { @@ -6942,7 +7169,7 @@ "type": "tidelift" } ], - "time": "2023-12-01T14:56:37+00:00" + "time": "2023-12-28T19:16:56+00:00" }, { "name": "symfony/deprecation-contracts", @@ -7026,7 +7253,7 @@ "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.1", "psr/log": "^1|^2|^3", "symfony/var-dumper": "^5.4|^6.0|^7.0" }, @@ -7088,16 +7315,16 @@ }, { "name": "symfony/event-dispatcher", - "version": "v6.4.0", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "d76d2632cfc2206eecb5ad2b26cd5934082941b6" + "reference": "e95216850555cd55e71b857eb9d6c2674124603a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d76d2632cfc2206eecb5ad2b26cd5934082941b6", - "reference": "d76d2632cfc2206eecb5ad2b26cd5934082941b6", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/e95216850555cd55e71b857eb9d6c2674124603a", + "reference": "e95216850555cd55e71b857eb9d6c2674124603a", "shasum": "" }, "require": { @@ -7148,7 +7375,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.0" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.2" }, "funding": [ { @@ -7164,7 +7391,7 @@ "type": "tidelift" } ], - "time": "2023-07-27T06:52:43+00:00" + "time": "2023-12-27T22:16:42+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -7244,20 +7471,20 @@ }, { "name": "symfony/filesystem", - "version": "v7.0.0", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "7da8ea2362a283771478c5f7729cfcb43a76b8b7" + "reference": "952a8cb588c3bc6ce76f6023000fb932f16a6e59" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/7da8ea2362a283771478c5f7729cfcb43a76b8b7", - "reference": "7da8ea2362a283771478c5f7729cfcb43a76b8b7", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/952a8cb588c3bc6ce76f6023000fb932f16a6e59", + "reference": "952a8cb588c3bc6ce76f6023000fb932f16a6e59", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.1", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.8" }, @@ -7287,7 +7514,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v7.0.0" + "source": "https://github.com/symfony/filesystem/tree/v6.4.0" }, "funding": [ { @@ -7303,7 +7530,7 @@ "type": "tidelift" } ], - "time": "2023-07-27T06:33:22+00:00" + "time": "2023-07-26T17:27:13+00:00" }, { "name": "symfony/finder", @@ -7370,16 +7597,16 @@ }, { "name": "symfony/http-foundation", - "version": "v6.4.0", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "44a6d39a9cc11e154547d882d5aac1e014440771" + "reference": "172d807f9ef3fc3fbed8377cc57c20d389269271" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/44a6d39a9cc11e154547d882d5aac1e014440771", - "reference": "44a6d39a9cc11e154547d882d5aac1e014440771", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/172d807f9ef3fc3fbed8377cc57c20d389269271", + "reference": "172d807f9ef3fc3fbed8377cc57c20d389269271", "shasum": "" }, "require": { @@ -7427,7 +7654,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.4.0" + "source": "https://github.com/symfony/http-foundation/tree/v6.4.2" }, "funding": [ { @@ -7443,20 +7670,20 @@ "type": "tidelift" } ], - "time": "2023-11-20T16:41:16+00:00" + "time": "2023-12-27T22:16:42+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.4.1", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "2953274c16a229b3933ef73a6898e18388e12e1b" + "reference": "13e8387320b5942d0dc408440c888e2d526efef4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/2953274c16a229b3933ef73a6898e18388e12e1b", - "reference": "2953274c16a229b3933ef73a6898e18388e12e1b", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/13e8387320b5942d0dc408440c888e2d526efef4", + "reference": "13e8387320b5942d0dc408440c888e2d526efef4", "shasum": "" }, "require": { @@ -7540,7 +7767,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.4.1" + "source": "https://github.com/symfony/http-kernel/tree/v6.4.2" }, "funding": [ { @@ -7556,7 +7783,7 @@ "type": "tidelift" } ], - "time": "2023-12-01T17:02:02+00:00" + "time": "2023-12-30T15:31:44+00:00" }, { "name": "symfony/intl", @@ -8607,16 +8834,16 @@ }, { "name": "symfony/string", - "version": "v5.4.32", + "version": "v5.4.34", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "91bf4453d65d8231688a04376c3a40efe0770f04" + "reference": "e3f98bfc7885c957488f443df82d97814a3ce061" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/91bf4453d65d8231688a04376c3a40efe0770f04", - "reference": "91bf4453d65d8231688a04376c3a40efe0770f04", + "url": "https://api.github.com/repos/symfony/string/zipball/e3f98bfc7885c957488f443df82d97814a3ce061", + "reference": "e3f98bfc7885c957488f443df82d97814a3ce061", "shasum": "" }, "require": { @@ -8673,7 +8900,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.4.32" + "source": "https://github.com/symfony/string/tree/v5.4.34" }, "funding": [ { @@ -8689,20 +8916,20 @@ "type": "tidelift" } ], - "time": "2023-11-26T13:43:46+00:00" + "time": "2023-12-09T13:20:28+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.4.0", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "c40f7d17e91d8b407582ed51a2bbf83c52c367f6" + "reference": "68d6573ec98715ddcae5a0a85bee3c1c27a4c33f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/c40f7d17e91d8b407582ed51a2bbf83c52c367f6", - "reference": "c40f7d17e91d8b407582ed51a2bbf83c52c367f6", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/68d6573ec98715ddcae5a0a85bee3c1c27a4c33f", + "reference": "68d6573ec98715ddcae5a0a85bee3c1c27a4c33f", "shasum": "" }, "require": { @@ -8758,7 +8985,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.4.0" + "source": "https://github.com/symfony/var-dumper/tree/v6.4.2" }, "funding": [ { @@ -8774,20 +9001,20 @@ "type": "tidelift" } ], - "time": "2023-11-09T08:28:32+00:00" + "time": "2023-12-28T19:16:56+00:00" }, { "name": "symfony/var-exporter", - "version": "v6.4.1", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "2d08ca6b9cc704dce525615d1e6d1788734f36d9" + "reference": "5fe9a0021b8d35e67d914716ec8de50716a68e7e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/2d08ca6b9cc704dce525615d1e6d1788734f36d9", - "reference": "2d08ca6b9cc704dce525615d1e6d1788734f36d9", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/5fe9a0021b8d35e67d914716ec8de50716a68e7e", + "reference": "5fe9a0021b8d35e67d914716ec8de50716a68e7e", "shasum": "" }, "require": { @@ -8833,7 +9060,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v6.4.1" + "source": "https://github.com/symfony/var-exporter/tree/v6.4.2" }, "funding": [ { @@ -8849,7 +9076,7 @@ "type": "tidelift" } ], - "time": "2023-11-30T10:32:10+00:00" + "time": "2023-12-27T08:18:35+00:00" }, { "name": "tedivm/jshrink", @@ -8970,25 +9197,25 @@ }, { "name": "web-token/jwt-framework", - "version": "3.2.8", + "version": "3.2.9", "source": { "type": "git", "url": "https://github.com/web-token/jwt-framework.git", - "reference": "bfceee5b742560dd861dcf690b12aa8fab3a8756" + "reference": "679ab72706fedc9ab72794ccc13133b5f7b58250" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/web-token/jwt-framework/zipball/bfceee5b742560dd861dcf690b12aa8fab3a8756", - "reference": "bfceee5b742560dd861dcf690b12aa8fab3a8756", + "url": "https://api.github.com/repos/web-token/jwt-framework/zipball/679ab72706fedc9ab72794ccc13133b5f7b58250", + "reference": "679ab72706fedc9ab72794ccc13133b5f7b58250", "shasum": "" }, "require": { - "brick/math": "^0.9|^0.10|^0.11", + "brick/math": "^0.9|^0.10|^0.11|^0.12", "ext-json": "*", "ext-mbstring": "*", "ext-openssl": "*", "ext-sodium": "*", - "paragonie/constant_time_encoding": "^2.4", + "paragonie/constant_time_encoding": "^2.6", "php": ">=8.1", "psr/clock": "^1.0", "psr/event-dispatcher": "^1.0", @@ -8996,11 +9223,11 @@ "psr/http-factory": "^1.0", "spomky-labs/aes-key-wrap": "^7.0", "spomky-labs/pki-framework": "^1.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-kernel": "^5.4|^6.0", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", "symfony/polyfill-mbstring": "^1.12" }, "conflict": { @@ -9041,7 +9268,7 @@ "ext-curl": "*", "ext-gmp": "*", "infection/infection": "^0.27", - "matthiasnoback/symfony-config-test": "^4.3.0", + "matthiasnoback/symfony-config-test": "^5.0", "nyholm/psr7": "^1.5", "php-http/mock-client": "^1.5", "php-parallel-lint/php-parallel-lint": "^1.3", @@ -9051,20 +9278,19 @@ "phpstan/phpstan-deprecation-rules": "^1.0", "phpstan/phpstan-phpunit": "^1.1", "phpstan/phpstan-strict-rules": "^1.4", - "phpunit/phpunit": "^9.5.23", + "phpunit/phpunit": "^10.1", "qossmic/deptrac-shim": "^1.0", - "rector/rector": "^0.16", + "rector/rector": "^0.18", "roave/security-advisories": "dev-latest", - "symfony/browser-kit": "^6.1.3", - "symfony/finder": "^5.4|^6.0", - "symfony/framework-bundle": "^6.1.3", - "symfony/http-client": "^5.4|^6.0", - "symfony/phpunit-bridge": "^6.1.3", - "symfony/serializer": "^6.1.3", - "symfony/var-dumper": "^6.1.3", - "symfony/yaml": "^6.1.3", - "symplify/easy-coding-standard": "^11.0", - "symplify/monorepo-builder": "11.2.3.72" + "symfony/browser-kit": "^6.1|^7.0", + "symfony/finder": "^6.1|^7.0", + "symfony/framework-bundle": "^6.1|^7.0", + "symfony/http-client": "^6.1|^7.0", + "symfony/phpunit-bridge": "^6.1|^7.0", + "symfony/serializer": "^6.1|^7.0", + "symfony/var-dumper": "^6.1|^7.0", + "symfony/yaml": "^6.1|^7.0", + "symplify/easy-coding-standard": "^12.0" }, "suggest": { "bjeavons/zxcvbn-php": "Adds key quality check for oct keys.", @@ -9167,7 +9393,7 @@ ], "support": { "issues": "https://github.com/web-token/jwt-framework/issues", - "source": "https://github.com/web-token/jwt-framework/tree/3.2.8" + "source": "https://github.com/web-token/jwt-framework/tree/3.2.9" }, "funding": [ { @@ -9179,7 +9405,7 @@ "type": "patreon" } ], - "time": "2023-08-23T09:49:09+00:00" + "time": "2024-01-04T15:42:08+00:00" }, { "name": "webimpress/safe-writer", @@ -9300,16 +9526,16 @@ }, { "name": "webonyx/graphql-php", - "version": "v15.8.1", + "version": "v15.9.0", "source": { "type": "git", "url": "https://github.com/webonyx/graphql-php.git", - "reference": "575ac95f13adfb38219a748572355385c101fdf7" + "reference": "84a9e2ccd06c8d643bc1e3cf9cf0076cbfa3dc36" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/575ac95f13adfb38219a748572355385c101fdf7", - "reference": "575ac95f13adfb38219a748572355385c101fdf7", + "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/84a9e2ccd06c8d643bc1e3cf9cf0076cbfa3dc36", + "reference": "84a9e2ccd06c8d643bc1e3cf9cf0076cbfa3dc36", "shasum": "" }, "require": { @@ -9322,19 +9548,19 @@ "amphp/http-server": "^2.1", "dms/phpunit-arraysubset-asserts": "dev-master", "ergebnis/composer-normalize": "^2.28", - "friendsofphp/php-cs-fixer": "3.30.0", + "friendsofphp/php-cs-fixer": "3.48.0", "mll-lab/php-cs-fixer-config": "^5", "nyholm/psr7": "^1.5", "phpbench/phpbench": "^1.2", "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "1.10.47", + "phpstan/phpstan": "1.10.56", "phpstan/phpstan-phpunit": "1.3.15", "phpstan/phpstan-strict-rules": "1.5.2", "phpunit/phpunit": "^9.5 || ^10", "psr/http-message": "^1 || ^2", "react/http": "^1.6", - "react/promise": "^2.9", - "rector/rector": "^0.18", + "react/promise": "^2.0 || ^3.0", + "rector/rector": "^0.19", "symfony/polyfill-php81": "^1.23", "symfony/var-exporter": "^5 || ^6 || ^7", "thecodingmachine/safe": "^1.3 || ^2" @@ -9362,7 +9588,7 @@ ], "support": { "issues": "https://github.com/webonyx/graphql-php/issues", - "source": "https://github.com/webonyx/graphql-php/tree/v15.8.1" + "source": "https://github.com/webonyx/graphql-php/tree/v15.9.0" }, "funding": [ { @@ -9370,7 +9596,7 @@ "type": "open_collective" } ], - "time": "2023-12-05T17:23:35+00:00" + "time": "2024-01-21T09:37:43+00:00" }, { "name": "wikimedia/less.php", @@ -9889,16 +10115,16 @@ }, { "name": "codeception/lib-web", - "version": "1.0.4", + "version": "1.0.5", "source": { "type": "git", "url": "https://github.com/Codeception/lib-web.git", - "reference": "28cb2ed1169de18e720bec758015aadc37d8344c" + "reference": "cea9d53c9cd665498632acc417c9a96bff7eb2b0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/lib-web/zipball/28cb2ed1169de18e720bec758015aadc37d8344c", - "reference": "28cb2ed1169de18e720bec758015aadc37d8344c", + "url": "https://api.github.com/repos/Codeception/lib-web/zipball/cea9d53c9cd665498632acc417c9a96bff7eb2b0", + "reference": "cea9d53c9cd665498632acc417c9a96bff7eb2b0", "shasum": "" }, "require": { @@ -9936,9 +10162,9 @@ ], "support": { "issues": "https://github.com/Codeception/lib-web/issues", - "source": "https://github.com/Codeception/lib-web/tree/1.0.4" + "source": "https://github.com/Codeception/lib-web/tree/1.0.5" }, - "time": "2023-12-01T11:38:22+00:00" + "time": "2024-01-13T11:54:18+00:00" }, { "name": "codeception/module-asserts", @@ -10565,21 +10791,22 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.42.0", + "version": "v3.48.0", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "632ef1be3447a9b890bef06147475facee535d0f" + "reference": "a92472c6fb66349de25211f31c77eceae3df024e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/632ef1be3447a9b890bef06147475facee535d0f", - "reference": "632ef1be3447a9b890bef06147475facee535d0f", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/a92472c6fb66349de25211f31c77eceae3df024e", + "reference": "a92472c6fb66349de25211f31c77eceae3df024e", "shasum": "" }, "require": { "composer/semver": "^3.4", "composer/xdebug-handler": "^3.0.3", + "ext-filter": "*", "ext-json": "*", "ext-tokenizer": "*", "php": "^7.4 || ^8.0", @@ -10604,7 +10831,7 @@ "php-cs-fixer/accessible-object": "^1.1", "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.4", "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.4", - "phpunit/phpunit": "^9.6", + "phpunit/phpunit": "^9.6 || ^10.5.5", "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, "suggest": { @@ -10643,7 +10870,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.42.0" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.48.0" }, "funding": [ { @@ -10651,7 +10878,7 @@ "type": "github" } ], - "time": "2023-12-24T14:38:51+00:00" + "time": "2024-01-19T21:44:39+00:00" }, { "name": "laminas/laminas-diactoros", @@ -10811,29 +11038,31 @@ }, { "name": "magento/magento-coding-standard", - "version": "31", + "version": "33", "source": { "type": "git", "url": "https://github.com/magento/magento-coding-standard.git", - "reference": "1172711ea1947d0258adae8d8e0a72669f1c2d99" + "reference": "75215870d446f955ea08acdad9badff647117cfa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/magento/magento-coding-standard/zipball/1172711ea1947d0258adae8d8e0a72669f1c2d99", - "reference": "1172711ea1947d0258adae8d8e0a72669f1c2d99", + "url": "https://api.github.com/repos/magento/magento-coding-standard/zipball/75215870d446f955ea08acdad9badff647117cfa", + "reference": "75215870d446f955ea08acdad9badff647117cfa", "shasum": "" }, "require": { "ext-dom": "*", "ext-simplexml": "*", - "php": ">=7.4", - "phpcompatibility/php-compatibility": "^9.3", - "rector/rector": "^0.15.10", + "magento/php-compatibility-fork": "^0.1", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0", + "phpcsstandards/phpcsutils": "^1.0.5", + "rector/rector": "^0.17.12", "squizlabs/php_codesniffer": "^3.6.1", "webonyx/graphql-php": "^15.0" }, "require-dev": { - "phpunit/phpunit": "^9.5.8" + "phpunit/phpunit": "^9.5.10", + "yoast/phpunit-polyfills": "^1.0" }, "type": "phpcodesniffer-standard", "autoload": { @@ -10853,9 +11082,9 @@ "description": "A set of Magento specific PHP CodeSniffer rules.", "support": { "issues": "https://github.com/magento/magento-coding-standard/issues", - "source": "https://github.com/magento/magento-coding-standard/tree/v31" + "source": "https://github.com/magento/magento-coding-standard/tree/v33" }, - "time": "2023-02-01T15:38:47+00:00" + "time": "2023-12-19T17:16:36+00:00" }, { "name": "magento/magento2-functional-testing-framework", @@ -10963,6 +11192,75 @@ }, "time": "2023-12-22T06:31:59+00:00" }, + { + "name": "magento/php-compatibility-fork", + "version": "v0.1.0", + "source": { + "type": "git", + "url": "https://github.com/magento/PHPCompatibilityFork.git", + "reference": "1cf031c2a68e3e52e460c5690ed8d1d6d45f4653" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/magento/PHPCompatibilityFork/zipball/1cf031c2a68e3e52e460c5690ed8d1d6d45f4653", + "reference": "1cf031c2a68e3e52e460c5690ed8d1d6d45f4653", + "shasum": "" + }, + "require": { + "php": ">=5.4", + "phpcsstandards/phpcsutils": "^1.0.5", + "squizlabs/php_codesniffer": "^3.7.1" + }, + "replace": { + "phpcompatibility/php-compatibility": "*", + "wimg/php-compatibility": "*" + }, + "require-dev": { + "php-parallel-lint/php-console-highlighter": "^1.0.0", + "php-parallel-lint/php-parallel-lint": "^1.3.2", + "phpcsstandards/phpcsdevcs": "^1.1.3", + "phpcsstandards/phpcsdevtools": "^1.2.0", + "phpunit/phpunit": "^4.8.36 || ^5.7.21 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4 || ^10.1.0", + "yoast/phpunit-polyfills": "^1.0.5 || ^2.0.0" + }, + "suggest": { + "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues." + }, + "type": "phpcodesniffer-standard", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0-or-later" + ], + "authors": [ + { + "name": "Wim Godden", + "homepage": "https://github.com/wimg", + "role": "lead" + }, + { + "name": "Juliette Reinders Folmer", + "homepage": "https://github.com/jrfnl", + "role": "lead" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCompatibility/PHPCompatibility/graphs/contributors" + } + ], + "description": "A set of sniffs for PHP_CodeSniffer that checks for PHP cross-version compatibility. This is a fork of phpcompatibility/php-compatibility", + "homepage": "http://techblog.wimgodden.be/tag/codesniffer/", + "keywords": [ + "compatibility", + "phpcs", + "standards", + "static analysis" + ], + "support": { + "issues": "https://github.com/PHPCompatibility/PHPCompatibility/issues", + "source": "https://github.com/PHPCompatibility/PHPCompatibility" + }, + "time": "2023-11-29T22:34:17+00:00" + }, { "name": "mustache/mustache", "version": "v2.14.2", @@ -11312,68 +11610,6 @@ }, "time": "2023-10-20T12:21:20+00:00" }, - { - "name": "phpcompatibility/php-compatibility", - "version": "9.3.5", - "source": { - "type": "git", - "url": "https://github.com/PHPCompatibility/PHPCompatibility.git", - "reference": "9fb324479acf6f39452e0655d2429cc0d3914243" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibility/zipball/9fb324479acf6f39452e0655d2429cc0d3914243", - "reference": "9fb324479acf6f39452e0655d2429cc0d3914243", - "shasum": "" - }, - "require": { - "php": ">=5.3", - "squizlabs/php_codesniffer": "^2.3 || ^3.0.2" - }, - "conflict": { - "squizlabs/php_codesniffer": "2.6.2" - }, - "require-dev": { - "phpunit/phpunit": "~4.5 || ^5.0 || ^6.0 || ^7.0" - }, - "suggest": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.5 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically.", - "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues." - }, - "type": "phpcodesniffer-standard", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-3.0-or-later" - ], - "authors": [ - { - "name": "Wim Godden", - "homepage": "https://github.com/wimg", - "role": "lead" - }, - { - "name": "Juliette Reinders Folmer", - "homepage": "https://github.com/jrfnl", - "role": "lead" - }, - { - "name": "Contributors", - "homepage": "https://github.com/PHPCompatibility/PHPCompatibility/graphs/contributors" - } - ], - "description": "A set of sniffs for PHP_CodeSniffer that checks for PHP cross-version compatibility.", - "homepage": "http://techblog.wimgodden.be/tag/codesniffer/", - "keywords": [ - "compatibility", - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/PHPCompatibility/PHPCompatibility/issues", - "source": "https://github.com/PHPCompatibility/PHPCompatibility" - }, - "time": "2019-12-27T09:44:58+00:00" - }, { "name": "phpcsstandards/phpcsutils", "version": "1.0.9", @@ -11547,16 +11783,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.10.50", + "version": "1.10.56", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "06a98513ac72c03e8366b5a0cb00750b487032e4" + "reference": "27816a01aea996191ee14d010f325434c0ee76fa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/06a98513ac72c03e8366b5a0cb00750b487032e4", - "reference": "06a98513ac72c03e8366b5a0cb00750b487032e4", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/27816a01aea996191ee14d010f325434c0ee76fa", + "reference": "27816a01aea996191ee14d010f325434c0ee76fa", "shasum": "" }, "require": { @@ -11605,7 +11841,7 @@ "type": "tidelift" } ], - "time": "2023-12-13T10:59:42+00:00" + "time": "2024-01-15T10:43:00+00:00" }, { "name": "phpunit/php-code-coverage", @@ -11928,16 +12164,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.6.15", + "version": "9.6.16", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "05017b80304e0eb3f31d90194a563fd53a6021f1" + "reference": "3767b2c56ce02d01e3491046f33466a1ae60a37f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/05017b80304e0eb3f31d90194a563fd53a6021f1", - "reference": "05017b80304e0eb3f31d90194a563fd53a6021f1", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3767b2c56ce02d01e3491046f33466a1ae60a37f", + "reference": "3767b2c56ce02d01e3491046f33466a1ae60a37f", "shasum": "" }, "require": { @@ -12011,7 +12247,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.15" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.16" }, "funding": [ { @@ -12027,7 +12263,7 @@ "type": "tidelift" } ], - "time": "2023-12-01T16:55:19+00:00" + "time": "2024-01-19T07:03:14+00:00" }, { "name": "psr/cache", @@ -12159,21 +12395,21 @@ }, { "name": "rector/rector", - "version": "0.15.25", + "version": "0.17.13", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "015935c7ed9e48a4f5895ba974f337e20a263841" + "reference": "e2003ba7c5bda06d7bb419cf4be8dae5f8672132" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/015935c7ed9e48a4f5895ba974f337e20a263841", - "reference": "015935c7ed9e48a4f5895ba974f337e20a263841", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/e2003ba7c5bda06d7bb419cf4be8dae5f8672132", + "reference": "e2003ba7c5bda06d7bb419cf4be8dae5f8672132", "shasum": "" }, "require": { "php": "^7.2|^8.0", - "phpstan/phpstan": "^1.10.14" + "phpstan/phpstan": "^1.10.26" }, "conflict": { "rector/rector-doctrine": "*", @@ -12185,11 +12421,6 @@ "bin/rector" ], "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.15-dev" - } - }, "autoload": { "files": [ "bootstrap.php" @@ -12208,7 +12439,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/0.15.25" + "source": "https://github.com/rectorphp/rector/tree/0.17.13" }, "funding": [ { @@ -12216,7 +12447,7 @@ "type": "github" } ], - "time": "2023-04-20T16:07:39+00:00" + "time": "2023-08-14T16:33:29+00:00" }, { "name": "sebastian/cli-parser", @@ -13326,16 +13557,16 @@ }, { "name": "squizlabs/php_codesniffer", - "version": "3.8.0", + "version": "3.8.1", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", - "reference": "5805f7a4e4958dbb5e944ef1e6edae0a303765e7" + "reference": "14f5fff1e64118595db5408e946f3a22c75807f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/5805f7a4e4958dbb5e944ef1e6edae0a303765e7", - "reference": "5805f7a4e4958dbb5e944ef1e6edae0a303765e7", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/14f5fff1e64118595db5408e946f3a22c75807f7", + "reference": "14f5fff1e64118595db5408e946f3a22c75807f7", "shasum": "" }, "require": { @@ -13345,11 +13576,11 @@ "php": ">=5.4.0" }, "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4" }, "bin": [ - "bin/phpcs", - "bin/phpcbf" + "bin/phpcbf", + "bin/phpcs" ], "type": "library", "extra": { @@ -13402,20 +13633,20 @@ "type": "open_collective" } ], - "time": "2023-12-08T12:32:31+00:00" + "time": "2024-01-11T20:47:48+00:00" }, { "name": "symfony/dotenv", - "version": "v6.4.0", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/dotenv.git", - "reference": "d0d584a91422ddaa2c94317200d4c4e5b935555f" + "reference": "835f8d2d1022934ac038519de40b88158798c96f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/d0d584a91422ddaa2c94317200d4c4e5b935555f", - "reference": "d0d584a91422ddaa2c94317200d4c4e5b935555f", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/835f8d2d1022934ac038519de40b88158798c96f", + "reference": "835f8d2d1022934ac038519de40b88158798c96f", "shasum": "" }, "require": { @@ -13460,7 +13691,7 @@ "environment" ], "support": { - "source": "https://github.com/symfony/dotenv/tree/v6.4.0" + "source": "https://github.com/symfony/dotenv/tree/v6.4.2" }, "funding": [ { @@ -13476,7 +13707,7 @@ "type": "tidelift" } ], - "time": "2023-10-26T18:19:48+00:00" + "time": "2023-12-28T19:16:56+00:00" }, { "name": "symfony/mime", @@ -13564,20 +13795,20 @@ }, { "name": "symfony/options-resolver", - "version": "v7.0.0", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "700ff4096e346f54cb628ea650767c8130f1001f" + "reference": "22301f0e7fdeaacc14318928612dee79be99860e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/700ff4096e346f54cb628ea650767c8130f1001f", - "reference": "700ff4096e346f54cb628ea650767c8130f1001f", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/22301f0e7fdeaacc14318928612dee79be99860e", + "reference": "22301f0e7fdeaacc14318928612dee79be99860e", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.1", "symfony/deprecation-contracts": "^2.5|^3" }, "type": "library", @@ -13611,7 +13842,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v7.0.0" + "source": "https://github.com/symfony/options-resolver/tree/v6.4.0" }, "funding": [ { @@ -13627,24 +13858,24 @@ "type": "tidelift" } ], - "time": "2023-08-08T10:20:21+00:00" + "time": "2023-08-08T10:16:24+00:00" }, { "name": "symfony/stopwatch", - "version": "v7.0.0", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "7bbfa3dd564a0ce12eb4acaaa46823c740f9cb7a" + "reference": "fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/7bbfa3dd564a0ce12eb4acaaa46823c740f9cb7a", - "reference": "7bbfa3dd564a0ce12eb4acaaa46823c740f9cb7a", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2", + "reference": "fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.1", "symfony/service-contracts": "^2.5|^3" }, "type": "library", @@ -13673,7 +13904,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v7.0.0" + "source": "https://github.com/symfony/stopwatch/tree/v6.4.0" }, "funding": [ { @@ -13689,7 +13920,7 @@ "type": "tidelift" } ], - "time": "2023-07-05T13:06:06+00:00" + "time": "2023-02-16T10:14:28+00:00" }, { "name": "symfony/yaml", @@ -13858,8 +14089,8 @@ "aliases": [], "minimum-stability": "stable", "stability-flags": { - "magento/magento2-functional-testing-framework": 20, - "magento/composer": 20 + "magento/composer": 20, + "magento/magento2-functional-testing-framework": 20 }, "prefer-stable": true, "prefer-lowest": false, From b884af3a3971a48cb52558bad628cbff761dea8a Mon Sep 17 00:00:00 2001 From: Rajesh Kumar <glo71317@adobe.com> Date: Wed, 24 Jan 2024 13:47:55 +0530 Subject: [PATCH 072/104] AC-9196::Update spomky-labs/otphp to its latest version available --- composer.lock | 289 ++++++-------------------------------------------- 1 file changed, 31 insertions(+), 258 deletions(-) diff --git a/composer.lock b/composer.lock index 8060da29f1fa5..dae7bb60e0c8f 100644 --- a/composer.lock +++ b/composer.lock @@ -1067,108 +1067,68 @@ ], "time": "2022-02-25T21:32:43+00:00" }, - { - "name": "elastic/transport", - "version": "v8.8.0", - "source": { - "type": "git", - "url": "git@github.com:elastic/elastic-transport-php.git", - "reference": "cdf9f63a16ec6bfb4c881ab89aa0e2a61fb7c20b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/elastic/elastic-transport-php/zipball/cdf9f63a16ec6bfb4c881ab89aa0e2a61fb7c20b", - "reference": "cdf9f63a16ec6bfb4c881ab89aa0e2a61fb7c20b", - "shasum": "" - }, - "require": { - "composer-runtime-api": "^2.0", - "php": "^7.4 || ^8.0", - "php-http/discovery": "^1.14", - "php-http/httplug": "^2.3", - "psr/http-client": "^1.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.0 || ^2.0", - "psr/log": "^1 || ^2 || ^3" - }, - "require-dev": { - "nyholm/psr7": "^1.5", - "php-http/mock-client": "^1.5", - "phpstan/phpstan": "^1.4", - "phpunit/phpunit": "^9.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "Elastic\\Transport\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "HTTP transport PHP library for Elastic products", - "keywords": [ - "PSR_17", - "elastic", - "http", - "psr-18", - "psr-7", - "transport" - ], - "time": "2023-11-08T10:51:51+00:00" - }, { "name": "elasticsearch/elasticsearch", - "version": "v8.5.3", + "version": "v7.17.2", "source": { "type": "git", "url": "git@github.com:elastic/elasticsearch-php.git", - "reference": "9d850932b8ab8129fd4baf597a1172e8f583b436" + "reference": "2d302233f2bb0926812d82823bb820d405e130fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/elastic/elasticsearch-php/zipball/9d850932b8ab8129fd4baf597a1172e8f583b436", - "reference": "9d850932b8ab8129fd4baf597a1172e8f583b436", + "url": "https://api.github.com/repos/elastic/elasticsearch-php/zipball/2d302233f2bb0926812d82823bb820d405e130fc", + "reference": "2d302233f2bb0926812d82823bb820d405e130fc", "shasum": "" }, "require": { - "elastic/transport": "^8.5", - "guzzlehttp/guzzle": "^7.0", - "php": "^7.4 || ^8.0", - "psr/http-client": "^1.0", - "psr/http-message": "^1.0", + "ext-json": ">=1.3.7", + "ezimuel/ringphp": "^1.1.2", + "php": "^7.3 || ^8.0", "psr/log": "^1|^2|^3" }, "require-dev": { "ext-yaml": "*", "ext-zip": "*", - "mockery/mockery": "^1.5", - "nyholm/psr7": "^1.5", - "php-http/mock-client": "^1.5", - "phpstan/phpstan": "^1.4", - "phpunit/phpunit": "^9.5", - "symfony/finder": "~4.0", - "symfony/http-client": "^5.0|^6.0" + "mockery/mockery": "^1.2", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.3", + "squizlabs/php_codesniffer": "^3.4", + "symfony/finder": "~4.0" + }, + "suggest": { + "ext-curl": "*", + "monolog/monolog": "Allows for client-level logging and tracing" }, "type": "library", "autoload": { + "files": [ + "src/autoload.php" + ], "psr-4": { - "Elastic\\Elasticsearch\\": "src/" + "Elasticsearch\\": "src/Elasticsearch/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "Apache-2.0", + "LGPL-2.1-only" + ], + "authors": [ + { + "name": "Zachary Tong" + }, + { + "name": "Enrico Zimuel" + } ], "description": "PHP Client for Elasticsearch", "keywords": [ "client", - "elastic", "elasticsearch", "search" ], - "time": "2022-11-22T14:15:58+00:00" + "time": "2023-04-21T15:31:12+00:00" }, { "name": "ezimuel/guzzlestreams", @@ -5421,193 +5381,6 @@ }, "time": "2023-07-01T11:25:08+00:00" }, - { - "name": "php-http/discovery", - "version": "1.19.2", - "source": { - "type": "git", - "url": "https://github.com/php-http/discovery.git", - "reference": "61e1a1eb69c92741f5896d9e05fb8e9d7e8bb0cb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/discovery/zipball/61e1a1eb69c92741f5896d9e05fb8e9d7e8bb0cb", - "reference": "61e1a1eb69c92741f5896d9e05fb8e9d7e8bb0cb", - "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", - "symfony/phpunit-bridge": "^6.2" - }, - "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.19.2" - }, - "time": "2023-11-30T16:49:05+00:00" - }, - { - "name": "php-http/httplug", - "version": "2.4.0", - "source": { - "type": "git", - "url": "https://github.com/php-http/httplug.git", - "reference": "625ad742c360c8ac580fcc647a1541d29e257f67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/httplug/zipball/625ad742c360c8ac580fcc647a1541d29e257f67", - "reference": "625ad742c360c8ac580fcc647a1541d29e257f67", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0", - "php-http/promise": "^1.1", - "psr/http-client": "^1.0", - "psr/http-message": "^1.0 || ^2.0" - }, - "require-dev": { - "friends-of-phpspec/phpspec-code-coverage": "^4.1 || ^5.0 || ^6.0", - "phpspec/phpspec": "^5.1 || ^6.0 || ^7.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Http\\Client\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Eric GELOEN", - "email": "geloen.eric@gmail.com" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://sagikazarmark.hu" - } - ], - "description": "HTTPlug, the HTTP client abstraction for PHP", - "homepage": "http://httplug.io", - "keywords": [ - "client", - "http" - ], - "support": { - "issues": "https://github.com/php-http/httplug/issues", - "source": "https://github.com/php-http/httplug/tree/2.4.0" - }, - "time": "2023-04-14T15:10:03+00:00" - }, - { - "name": "php-http/promise", - "version": "1.3.0", - "source": { - "type": "git", - "url": "https://github.com/php-http/promise.git", - "reference": "2916a606d3b390f4e9e8e2b8dd68581508be0f07" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/promise/zipball/2916a606d3b390f4e9e8e2b8dd68581508be0f07", - "reference": "2916a606d3b390f4e9e8e2b8dd68581508be0f07", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "friends-of-phpspec/phpspec-code-coverage": "^4.3.2 || ^6.3", - "phpspec/phpspec": "^5.1.2 || ^6.2 || ^7.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "Http\\Promise\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Joel Wurtz", - "email": "joel.wurtz@gmail.com" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - } - ], - "description": "Promise used for asynchronous HTTP requests", - "homepage": "http://httplug.io", - "keywords": [ - "promise" - ], - "support": { - "issues": "https://github.com/php-http/promise/issues", - "source": "https://github.com/php-http/promise/tree/1.3.0" - }, - "time": "2024-01-04T18:49:48+00:00" - }, { "name": "phpseclib/mcrypt_compat", "version": "2.0.4", From f4e3b542218d4c7f993b32c6bd08f4a711093109 Mon Sep 17 00:00:00 2001 From: Guillaume Quintard <guillaume.quintard@varnish-software.com> Date: Thu, 25 Jan 2024 11:57:05 -0800 Subject: [PATCH 073/104] [vcl] test uncacheability rules (cherry picked from commit ca32d5ad3d19563d864a0ce0e6d0313a48227bbc) --- dev/tests/varnish/no-caching.vtc | 95 ++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 dev/tests/varnish/no-caching.vtc diff --git a/dev/tests/varnish/no-caching.vtc b/dev/tests/varnish/no-caching.vtc new file mode 100644 index 0000000000000..1144c91a23478 --- /dev/null +++ b/dev/tests/varnish/no-caching.vtc @@ -0,0 +1,95 @@ +varnishtest "X-Magento-Cache-Debug header" + +server s1 { + # first request will be the probe, handle it and be on our way + rxreq + expect req.url == "/health_check.php" + txresp + + # the probe expects the connection to close + close + accept + + # the client will send 2 requests for each url, the server should only see one + # of each in the cacheable case, and two otherwise + + # 405, Cache-Control doesn't matter + loop 2 { + rxreq + expect req.url == "/405uncacheable" + txresp -status 405 + } + + # 200, private Cache-Control + loop 2 { + rxreq + expect req.url == "/200uncacheable" + txresp -status 200 -hdr "cache-control: private" + } + + # 404, private Cache-Control + loop 2 { + rxreq + expect req.url == "/404uncacheable" + txresp -status 200 -hdr "cache-control: private" + } + + # 200, no Cache-Control + rxreq + expect req.url == "/200cacheable" + txresp -status 200 + + # 404, but still no Cache-Control + rxreq + expect req.url == "/404cacheable" + txresp -status 404 +} -start + +# generate usable VCL pointing towards s1 +# mostly, we replace the place-holders, but we also jack up the probe +# interval to avoid further interference +shell { + # testdir is automatically set to the directory containing the present vtc + sed \ + -e 's@\.interval = 5s;@.interval = 5m; .initial = 10;@' \ + -e 's@/\* {{ host }} \*/@${s1_addr}@' \ + -e 's@/\* {{ port }} \*/@${s1_port}@' \ + -e 's@/\* {{ ssl_offloaded_header }} \*/@unused@' \ + -e 's@/\* {{ grace_period }} \*/@0@' \ + ${testdir}/../../../app/code/Magento/PageCache/etc/varnish6.vcl > ${tmpdir}/output.vcl +} + +varnish v1 -arg "-f" -arg "${tmpdir}/output.vcl" -start + +# make sure the probe request fired +delay 1 + +client c1 { + loop 2 { + txreq -url /405uncacheable + rxresp + } + + loop 2 { + txreq -url /200uncacheable + rxresp + } + + loop 2 { + txreq -url /404uncacheable + rxresp + } + + loop 2 { + txreq -url /200cacheable + rxresp + } + + loop 2 { + txreq -url /404cacheable + rxresp + } +} -run + +# make sure s1 saw all the requests it was expecting +server s1 -wait From a0bf40d5b456ed8597a9380df4a6f8242fce369b Mon Sep 17 00:00:00 2001 From: Atul-glo35265 <glo35265@adobe.com> Date: Fri, 19 Jan 2024 17:33:16 +0530 Subject: [PATCH 074/104] AC-10720::Migration from outdated jquery/fileUpload library - Resolve Static Errors and Fix QA Issue for #AC-10919 AC-10919 :: Fix QA Issue AC-10919 :: Fix QA Issue --- .../Backend/view/adminhtml/web/js/media-uploader.js | 13 ++++++++++--- .../adminhtml/web/catalog/base-image-uploader.js | 5 +++-- .../view/base/web/js/form/element/file-uploader.js | 10 +++------- .../view/adminhtml/web/js/media-uploader.test.js | 2 +- .../Ui/base/js/form/element/file-uploader.test.js | 6 +++--- 5 files changed, 20 insertions(+), 16 deletions(-) diff --git a/app/code/Magento/Backend/view/adminhtml/web/js/media-uploader.js b/app/code/Magento/Backend/view/adminhtml/web/js/media-uploader.js index e09a607eff496..03ad09df78262 100644 --- a/app/code/Magento/Backend/view/adminhtml/web/js/media-uploader.js +++ b/app/code/Magento/Backend/view/adminhtml/web/js/media-uploader.js @@ -74,6 +74,16 @@ define([ $.mage.__('We could not detect a size.') : byteConvert(currentFile.size); + // check if file is allowed to upload and resize + allowedResize = $.inArray(currentFile.extension, allowedExt) !== -1; + + if (!allowedResize) { + fileUploader.aggregateError(currentFile.name, + $.mage.__('Disallowed file type.')); + fileUploader.onLoadingStop(); + return false; + } + fileId = Math.random().toString(33).substr(2, 18); tmpl = progressTmpl({ @@ -91,9 +101,6 @@ define([ tempFileId: fileId }; - // check if resize allowed for file extension - allowedResize = $.inArray(currentFile.extension, allowedExt) !== -1; - $(tmpl).appendTo(self.element); return modifiedFile; }, diff --git a/app/code/Magento/Catalog/view/adminhtml/web/catalog/base-image-uploader.js b/app/code/Magento/Catalog/view/adminhtml/web/catalog/base-image-uploader.js index 478fdfcaf1646..cf5453ac355c5 100644 --- a/app/code/Magento/Catalog/view/adminhtml/web/catalog/base-image-uploader.js +++ b/app/code/Magento/Catalog/view/adminhtml/web/catalog/base-image-uploader.js @@ -3,6 +3,8 @@ * See COPYING.txt for license details. */ +/* eslint-disable no-undef */ + define([ 'jquery', 'mage/template', @@ -142,6 +144,7 @@ define([ fileId = null, arrayFromObj = Array.from, fileObj = [], + uploaderContainer = this.element.find('input[type="file"]').closest('.image-placeholder'), options = { proudlyDisplayPoweredByUppy: false, target: targetElement, @@ -188,7 +191,6 @@ define([ tempFileId: fileId }; - var uploaderContainer = this.element.find('input[type="file"]').closest('.image-placeholder'); uploaderContainer.addClass('loading'); fileObj.push(currentFile); return modifiedFile; @@ -245,7 +247,6 @@ define([ }); uppy.on('complete', () => { - var uploaderContainer = this.element.find('input[type="file"]').closest('.image-placeholder'); uploaderContainer.removeClass('loading'); Array.from = arrayFromObj; }); diff --git a/app/code/Magento/Ui/view/base/web/js/form/element/file-uploader.js b/app/code/Magento/Ui/view/base/web/js/form/element/file-uploader.js index 9d86f100583c0..003b0ef10d08b 100644 --- a/app/code/Magento/Ui/view/base/web/js/form/element/file-uploader.js +++ b/app/code/Magento/Ui/view/base/web/js/form/element/file-uploader.js @@ -17,6 +17,7 @@ define([ 'Magento_Ui/js/form/element/abstract', 'mage/backend/notification', 'mage/translate', + 'jquery/jquery.cookie', 'jquery/uppy-core', 'mage/adminhtml/tools' ], function ($, _, utils, uiAlert, validator, Element, notification, $t) { @@ -67,7 +68,6 @@ define([ if (fileInput !== undefined) { let targetElement = $(fileInput).closest('.file-uploader-area')[0], dropTargetElement = $(fileInput).closest(this.dropZone)[0], - fileObj = [], formKey = window.FORM_KEY !== undefined ? window.FORM_KEY : $.cookie('form_key'), fileInputName = this.fileInputName, arrayFromObj = Array.from, @@ -85,7 +85,7 @@ define([ hideProgressAfterFinish: true }; - if (fileInputName === undefined){ + if (fileInputName === undefined) { fileInputName = $(fileInput).attr('name'); } // handle input type file @@ -104,12 +104,8 @@ define([ } if (!allowed.passed) { - fileObj.push(currentFile); this.aggregateError(file.name, allowed.message); - - if (this.aggregatedErrors.length === fileObj.length) { - this.uploaderConfig.stop(); - } + this.uploaderConfig.stop(); return false; } diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Backend/view/adminhtml/web/js/media-uploader.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Backend/view/adminhtml/web/js/media-uploader.test.js index 39dc052ceb5dd..bbf6e479396ba 100644 --- a/dev/tests/js/jasmine/tests/app/code/Magento/Backend/view/adminhtml/web/js/media-uploader.test.js +++ b/dev/tests/js/jasmine/tests/app/code/Magento/Backend/view/adminhtml/web/js/media-uploader.test.js @@ -8,7 +8,7 @@ define([ 'jquery', 'Magento_Backend/js/media-uploader' -], function ($, mediaUploader) { +], function ($) { 'use strict'; describe('Magento_Backend/js/media-uploader::_create()', function () { diff --git a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/element/file-uploader.test.js b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/element/file-uploader.test.js index a10b07e01035b..08185de66286a 100644 --- a/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/element/file-uploader.test.js +++ b/dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/form/element/file-uploader.test.js @@ -84,9 +84,9 @@ define([ expect(component.initUploader).toHaveBeenCalledWith(fileInputMock); expect(component.replaceInputTypeFile).toHaveBeenCalledWith(fileInputMock); - expect(uppyMock.use).toHaveBeenCalledWith(Uppy.Dashboard, jasmine.any(Object)); - expect(uppyMock.use).toHaveBeenCalledWith(Uppy.DropTarget, jasmine.any(Object)); - expect(uppyMock.use).toHaveBeenCalledWith(Uppy.XHRUpload, jasmine.any(Object)); + expect(uppyMock.use).toHaveBeenCalledWith(window.Uppy.Dashboard, jasmine.any(Object)); + expect(uppyMock.use).toHaveBeenCalledWith(window.Uppy.DropTarget, jasmine.any(Object)); + expect(uppyMock.use).toHaveBeenCalledWith(window.Uppy.XHRUpload, jasmine.any(Object)); }); }); From acd4797f2fd85da298b07b4609395d6e8147dd36 Mon Sep 17 00:00:00 2001 From: engcom-Echo <engcom-vendorworker-echo@adobe.com> Date: Tue, 30 Jan 2024 13:05:54 +0530 Subject: [PATCH 075/104] Fixed static test failures --- .../Block/Adminhtml/Shopcart/Product/Grid.php | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/app/code/Magento/Reports/Block/Adminhtml/Shopcart/Product/Grid.php b/app/code/Magento/Reports/Block/Adminhtml/Shopcart/Product/Grid.php index 5ad22916634a1..b97d2f15c5256 100644 --- a/app/code/Magento/Reports/Block/Adminhtml/Shopcart/Product/Grid.php +++ b/app/code/Magento/Reports/Block/Adminhtml/Shopcart/Product/Grid.php @@ -8,7 +8,6 @@ /** * Adminhtml products in carts report grid block * - * @author Magento Core Team <core@magentocommerce.com> * @SuppressWarnings(PHPMD.DepthOfInheritance) */ class Grid extends \Magento\Reports\Block\Adminhtml\Grid\Shopcart @@ -24,10 +23,12 @@ class Grid extends \Magento\Reports\Block\Adminhtml\Grid\Shopcart protected $queryResolver; /** + * Factory constructor + * * @param \Magento\Backend\Block\Template\Context $context * @param \Magento\Backend\Helper\Data $backendHelper - * @param \Magento\Reports\Model\ResourceModel\Quote\Item\CollectionFactory $quoteItemCollectionFactory * @param \Magento\Quote\Model\QueryResolver $queryResolver + * @param \Magento\Reports\Model\ResourceModel\Quote\Item\CollectionFactory $quoteItemCollectionFactory * @param array $data */ public function __construct( @@ -43,6 +44,8 @@ public function __construct( } /** + * Call Internal constructor + * * @return void */ protected function _construct() @@ -52,6 +55,8 @@ protected function _construct() } /** + * Prepare collection + * * @return \Magento\Backend\Block\Widget\Grid */ protected function _prepareCollection() @@ -64,6 +69,8 @@ protected function _prepareCollection() } /** + * Prepare columns + * * @return \Magento\Backend\Block\Widget\Grid\Extended */ protected function _prepareColumns() @@ -141,6 +148,8 @@ protected function _prepareColumns() } /** + * Get Row Url + * * @param \Magento\Framework\DataObject $row * * @return string From af479276f2d81b792f315fe07c6336525748901e Mon Sep 17 00:00:00 2001 From: "Pooja.Manral" <pooja.manral@BLR1-LMC-N60757-2.local> Date: Wed, 31 Jan 2024 13:22:51 +0530 Subject: [PATCH 076/104] AC-9632::Admin Grids Stretch Off of Page --- .../backend/Magento_Ui/web/css/source/module/_data-grid.less | 1 + 1 file changed, 1 insertion(+) diff --git a/app/design/adminhtml/Magento/backend/Magento_Ui/web/css/source/module/_data-grid.less b/app/design/adminhtml/Magento/backend/Magento_Ui/web/css/source/module/_data-grid.less index e8d6472ce0b4b..f8b08bde3c7cc 100644 --- a/app/design/adminhtml/Magento/backend/Magento_Ui/web/css/source/module/_data-grid.less +++ b/app/design/adminhtml/Magento/backend/Magento_Ui/web/css/source/module/_data-grid.less @@ -43,6 +43,7 @@ max-width: 100%; padding-bottom: 1rem; padding-top: @data-grid-header-row__indent; + overflow-x: auto } .admin__data-grid-loading-mask { From 2f7b8e854cdfa4ac22d64beb8dfe5854b750ee91 Mon Sep 17 00:00:00 2001 From: Indraniks <glo78764@adobe.com> Date: Thu, 1 Feb 2024 12:55:54 +0530 Subject: [PATCH 077/104] Enabling chart --- app/code/Magento/Backend/etc/config.xml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/app/code/Magento/Backend/etc/config.xml b/app/code/Magento/Backend/etc/config.xml index e1f32f39a466f..2dc5fa5fcb54d 100644 --- a/app/code/Magento/Backend/etc/config.xml +++ b/app/code/Magento/Backend/etc/config.xml @@ -7,6 +7,11 @@ --> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Store:etc/config.xsd"> <default> + <admin> + <dashboard> + <enable_charts>0</enable_charts> + </dashboard> + </admin> <dev> <template> <minify_html>0</minify_html> @@ -22,9 +27,6 @@ <forgot_email_template>system_emails_forgot_email_template</forgot_email_template> <forgot_email_identity>general</forgot_email_identity> </emails> - <dashboard> - <enable_charts>0</enable_charts> - </dashboard> <upload_configuration> <enable_resize>1</enable_resize> <max_width>1920</max_width> From 1ad53e131069a2753561760a715d2b648b1a6546 Mon Sep 17 00:00:00 2001 From: glo63652 <glo63652@adobe.com> Date: Thu, 25 Jan 2024 12:46:12 +0530 Subject: [PATCH 078/104] AC-10562:: CNS Integration Broken and Failed tests for 2.4.7-beta3-develop for S3 --- .../ApplicationStateComparator/_files/state-skip-list.php | 1 + 1 file changed, 1 insertion(+) diff --git a/dev/tests/integration/framework/Magento/TestFramework/ApplicationStateComparator/_files/state-skip-list.php b/dev/tests/integration/framework/Magento/TestFramework/ApplicationStateComparator/_files/state-skip-list.php index a20af9176e749..fd027f5134731 100644 --- a/dev/tests/integration/framework/Magento/TestFramework/ApplicationStateComparator/_files/state-skip-list.php +++ b/dev/tests/integration/framework/Magento/TestFramework/ApplicationStateComparator/_files/state-skip-list.php @@ -232,6 +232,7 @@ 'AssetPreProcessorPool' => null, Magento\GraphQl\Model\Query\ContextFactory::class => null, 'viewFileMinifiedFallbackResolver' => null, + Magento\RemoteStorage\Driver\DriverPool::class => null, Magento\TestFramework\App\State::class => null, Magento\Framework\TestFramework\ApplicationStateComparator\SkipListAndFilterList::class => null, // Yes, our test uses mutable state itself :-) Magento\Framework\DB\Adapter\Pdo\Mysql\Interceptor::class => null, From a72573c7c53ac6fbf1c6284af23dfd07a8ffb1fe Mon Sep 17 00:00:00 2001 From: glo63652 <glo63652@adobe.com> Date: Tue, 30 Jan 2024 13:24:27 +0530 Subject: [PATCH 079/104] AC-10562:: CNS Integration Broken and Failed tests for 2.4.7-beta3-develop for S3 --- .../Model/AbstractProductExportImportTestCase.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/AbstractProductExportImportTestCase.php b/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/AbstractProductExportImportTestCase.php index 2dc6cdd2f8946..41e312cc141f4 100644 --- a/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/AbstractProductExportImportTestCase.php +++ b/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/AbstractProductExportImportTestCase.php @@ -102,7 +102,7 @@ protected function tearDown(): void * Run import/export tests. * * @magentoAppArea adminhtml - * @magentoDbIsolation disabled + * @magentoDbIsolation enabled * @magentoAppIsolation enabled * * @param array $fixtures From e8cb0a863e304a08e8a9188243c0bc5d3d0182f4 Mon Sep 17 00:00:00 2001 From: glo63652 <glo63652@adobe.com> Date: Tue, 30 Jan 2024 18:52:31 +0530 Subject: [PATCH 080/104] AC-10562:: CNS Integration Broken and Failed tests for 2.4.7-beta3-develop for S3 --- .../Model/AbstractProductExportImportTestCase.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/AbstractProductExportImportTestCase.php b/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/AbstractProductExportImportTestCase.php index 41e312cc141f4..2dc6cdd2f8946 100644 --- a/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/AbstractProductExportImportTestCase.php +++ b/dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/AbstractProductExportImportTestCase.php @@ -102,7 +102,7 @@ protected function tearDown(): void * Run import/export tests. * * @magentoAppArea adminhtml - * @magentoDbIsolation enabled + * @magentoDbIsolation disabled * @magentoAppIsolation enabled * * @param array $fixtures From 84c4026c81817ca178e55a650f813bca00cf350b Mon Sep 17 00:00:00 2001 From: glo63652 <glo63652@adobe.com> Date: Thu, 1 Feb 2024 19:53:14 +0530 Subject: [PATCH 081/104] AC-10915::CNS Integration Broken and Failed tests for 2.4.7-beta3-develop for MQ --- .../ApplicationStateComparator/_files/state-skip-list.php | 1 + 1 file changed, 1 insertion(+) diff --git a/dev/tests/integration/framework/Magento/TestFramework/ApplicationStateComparator/_files/state-skip-list.php b/dev/tests/integration/framework/Magento/TestFramework/ApplicationStateComparator/_files/state-skip-list.php index a20af9176e749..fa0dae7df2304 100644 --- a/dev/tests/integration/framework/Magento/TestFramework/ApplicationStateComparator/_files/state-skip-list.php +++ b/dev/tests/integration/framework/Magento/TestFramework/ApplicationStateComparator/_files/state-skip-list.php @@ -195,6 +195,7 @@ Magento\LoginAsCustomer\Model\GetLoggedAsCustomerAdminId::class => null, Magento\CustomerGraphQl\Plugin\ClearCustomerSessionAfterRequest::class => null, Laminas\Uri\Uri::class => null, + PhpAmqpLib\Connection\AMQPSSLConnection::class => null, Magento\TestFramework\Interception\PluginList::class => null, // memory leak, wrong sql, potential issues Magento\Theme\Model\View\Design::class => null, From b30e490ecb7d7a9552a2e7fa2647aefe7f366edd Mon Sep 17 00:00:00 2001 From: Dmytro Poperechnyy <dpoperechnyy@magento.com> Date: Mon, 5 Feb 2024 22:23:23 -0600 Subject: [PATCH 082/104] ACPT-1751: Enable Suspension of Cron-Triggered Indexer Operations --- .../Backend/Grid/Column/Renderer/Status.php | 4 + .../Command/IndexerSetStatusCommand.php | 167 ++++++++++++++++++ .../Console/Command/IndexerStatusCommand.php | 3 + app/code/Magento/Indexer/Model/Indexer.php | 14 +- app/code/Magento/Indexer/Model/Processor.php | 2 +- .../Model/ResourceModel/Indexer/State.php | 8 +- .../Indexer/Plugin/Mview/ViewUpdatePlugin.php | 93 ++++++++++ app/code/Magento/Indexer/etc/di.xml | 4 + .../Framework/Indexer/StateInterface.php | 1 + .../Indexer/SuspendableIndexerInterface.php | 21 +++ 10 files changed, 314 insertions(+), 3 deletions(-) create mode 100644 app/code/Magento/Indexer/Console/Command/IndexerSetStatusCommand.php create mode 100644 app/code/Magento/Indexer/Plugin/Mview/ViewUpdatePlugin.php create mode 100644 lib/internal/Magento/Framework/Indexer/SuspendableIndexerInterface.php diff --git a/app/code/Magento/Indexer/Block/Backend/Grid/Column/Renderer/Status.php b/app/code/Magento/Indexer/Block/Backend/Grid/Column/Renderer/Status.php index e8d6004b2727d..fb619aa579ddc 100644 --- a/app/code/Magento/Indexer/Block/Backend/Grid/Column/Renderer/Status.php +++ b/app/code/Magento/Indexer/Block/Backend/Grid/Column/Renderer/Status.php @@ -33,6 +33,10 @@ public function render(\Magento\Framework\DataObject $row) $class = 'grid-severity-minor'; $text = __('Processing'); break; + case \Magento\Framework\Indexer\StateInterface::STATUS_SUSPENDED: + $class = 'grid-severity-minor'; + $text = __('Suspended'); + break; } return '<span class="' . $class . '"><span>' . $text . '</span></span>'; } diff --git a/app/code/Magento/Indexer/Console/Command/IndexerSetStatusCommand.php b/app/code/Magento/Indexer/Console/Command/IndexerSetStatusCommand.php new file mode 100644 index 0000000000000..5b780cf7ee00d --- /dev/null +++ b/app/code/Magento/Indexer/Console/Command/IndexerSetStatusCommand.php @@ -0,0 +1,167 @@ +<?php +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +declare(strict_types=1); + +namespace Magento\Indexer\Console\Command; + +use Magento\Framework\App\ObjectManagerFactory; +use Magento\Framework\Console\Cli; +use Magento\Framework\Exception\AlreadyExistsException; +use Magento\Framework\Indexer\IndexerInterface; +use Magento\Framework\Indexer\StateInterface; +use Magento\Indexer\Model\ResourceModel\Indexer\State; +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Output\OutputInterface; + +/** + * Command for setting index status for indexers + */ +class IndexerSetStatusCommand extends AbstractIndexerManageCommand +{ + /**#@+ + * Names of input arguments or options + */ + const INPUT_KEY_STATUS = 'status'; + /**#@- */ + + /** + * @var State + */ + private State $stateResourceModel; + + /** + * @param State $stateResourceModel + * @param ObjectManagerFactory $objectManagerFactory + */ + public function __construct( + State $stateResourceModel, + ObjectManagerFactory $objectManagerFactory + ) { + $this->stateResourceModel = $stateResourceModel; + parent::__construct($objectManagerFactory); + } + + /** + * {@inheritdoc} + */ + protected function configure() + { + $this->setName('indexer:set-status') + ->setDescription('Sets the specified indexer status') + ->setDefinition($this->getInputList()); + + parent::configure(); + } + + /** + * {@inheritdoc} + */ + protected function execute(InputInterface $input, OutputInterface $output) + { + $errors = $this->validate($input); + if ($errors) { + throw new \InvalidArgumentException(implode("\n", $errors)); + } + + $newStatus = $input->getArgument(self::INPUT_KEY_STATUS); + $indexers = $this->getIndexers($input); + $returnValue = Cli::RETURN_SUCCESS; + + foreach ($indexers as $indexer) { + try { + $this->updateIndexerStatus($indexer, $newStatus, $output); + } catch (\Exception $e) { + $output->writeln($e->getMessage()); + $returnValue = Cli::RETURN_FAILURE; + } + } + + return $returnValue; + } + + /** + * Get list of arguments for the command + * + * @return InputOption[] + */ + public function getInputList(): array + { + $modeOptions[] = new InputArgument( + self::INPUT_KEY_STATUS, + InputArgument::REQUIRED, + 'Indexer status type [' . StateInterface::STATUS_VALID + . '|' . StateInterface::STATUS_INVALID . '|' . StateInterface::STATUS_SUSPENDED . ']' + ); + + return array_merge($modeOptions, parent::getInputList()); + } + + /** + * Check if all CLI command options are provided + * + * @param InputInterface $input + * @return string[] + */ + private function validate(InputInterface $input): array + { + $errors = []; + $acceptedValues = [ + StateInterface::STATUS_VALID, + StateInterface::STATUS_INVALID, + StateInterface::STATUS_SUSPENDED, + ]; + $acceptedValuesString = '"' . implode('", "', $acceptedValues) . '"'; + $inputStatus = $input->getArgument(self::INPUT_KEY_STATUS); + + if (!$inputStatus) { + $errors[] = sprintf( + 'Missing argument "%s". Accepted values are %s.', + self::INPUT_KEY_STATUS, + $acceptedValuesString + ); + } elseif (!in_array($inputStatus, $acceptedValues, true)) { + $errors[] = sprintf( + 'Invalid status "%s". Accepted values are %s.', + $inputStatus, + $acceptedValuesString + ); + } + + return $errors; + } + + /** + * Update the status of a specified indexer + * + * @param IndexerInterface $indexer + * @param string $newStatus + * @param OutputInterface $output + * @return void + * @throws AlreadyExistsException + */ + private function updateIndexerStatus(IndexerInterface $indexer, string $newStatus, OutputInterface $output): void + { + $state = $indexer->getState(); + $previousStatus = $state->getStatus(); + $this->stateResourceModel->save($state->setStatus($newStatus)); + $currentStatus = $state->getStatus(); + + if ($previousStatus !== $currentStatus) { + $output->writeln( + sprintf( + "Index status for Indexer '%s' was changed from '%s' to '%s'.", + $indexer->getTitle(), + $previousStatus, + $currentStatus + ) + ); + } else { + $output->writeln(sprintf("Index status for Indexer '%s' has not been changed.", $indexer->getTitle())); + } + } +} diff --git a/app/code/Magento/Indexer/Console/Command/IndexerStatusCommand.php b/app/code/Magento/Indexer/Console/Command/IndexerStatusCommand.php index cc3ec26e1fb79..610f0747a9f3a 100644 --- a/app/code/Magento/Indexer/Console/Command/IndexerStatusCommand.php +++ b/app/code/Magento/Indexer/Console/Command/IndexerStatusCommand.php @@ -95,6 +95,9 @@ private function getStatus(Indexer\IndexerInterface $indexer) case \Magento\Framework\Indexer\StateInterface::STATUS_WORKING: $status = 'Processing'; break; + case \Magento\Framework\Indexer\StateInterface::STATUS_SUSPENDED: + $status = 'Suspended'; + break; } return $status; } diff --git a/app/code/Magento/Indexer/Model/Indexer.php b/app/code/Magento/Indexer/Model/Indexer.php index 7be1d5a3a9e21..0029e906e6b92 100644 --- a/app/code/Magento/Indexer/Model/Indexer.php +++ b/app/code/Magento/Indexer/Model/Indexer.php @@ -6,6 +6,7 @@ namespace Magento\Indexer\Model; +use Magento\Framework\DataObject; use Magento\Framework\Indexer\ActionFactory; use Magento\Framework\Indexer\ActionInterface; use Magento\Framework\Indexer\ConfigInterface; @@ -14,13 +15,14 @@ use Magento\Framework\Indexer\StateInterface; use Magento\Framework\Indexer\StructureFactory; use Magento\Framework\Indexer\IndexerInterfaceFactory; +use Magento\Framework\Indexer\SuspendableIndexerInterface; /** * Indexer model. * * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ -class Indexer extends \Magento\Framework\DataObject implements IndexerInterface +class Indexer extends DataObject implements IndexerInterface, SuspendableIndexerInterface { /** * @var string @@ -332,6 +334,16 @@ public function isInvalid() return $this->getState()->getStatus() == StateInterface::STATUS_INVALID; } + /** + * Check whether indexer is valid + * + * @return bool + */ + public function isSuspended(): bool + { + return $this->getState()->getStatus() === StateInterface::STATUS_SUSPENDED; + } + /** * Check whether indexer is working * diff --git a/app/code/Magento/Indexer/Model/Processor.php b/app/code/Magento/Indexer/Model/Processor.php index 7846421daa704..bad299e55d7db 100644 --- a/app/code/Magento/Indexer/Model/Processor.php +++ b/app/code/Magento/Indexer/Model/Processor.php @@ -81,7 +81,7 @@ public function reindexAllInvalid() $indexer->load($indexerId); $indexerConfig = $this->config->getIndexer($indexerId); - if ($indexer->isInvalid()) { + if ($indexer->isInvalid() && !$indexer->isSuspended()) { // Skip indexers having shared index that was already complete $sharedIndex = $indexerConfig['shared_index'] ?? null; if (!in_array($sharedIndex, $this->sharedIndexesComplete)) { diff --git a/app/code/Magento/Indexer/Model/ResourceModel/Indexer/State.php b/app/code/Magento/Indexer/Model/ResourceModel/Indexer/State.php index d0ab887b2e335..be2e7bef9005a 100644 --- a/app/code/Magento/Indexer/Model/ResourceModel/Indexer/State.php +++ b/app/code/Magento/Indexer/Model/ResourceModel/Indexer/State.php @@ -31,8 +31,14 @@ protected function prepareDataForUpdate($object) $data = parent::prepareDataForUpdate($object); if (isset($data['status']) && StateInterface::STATUS_VALID === $data['status']) { + $condition = $this->getConnection()->quoteInto('status IN (?)', + [ + StateInterface::STATUS_WORKING, + StateInterface::STATUS_SUSPENDED + ] + ); $data['status'] = $this->getConnection()->getCheckSql( - $this->getConnection()->quoteInto('status = ?', StateInterface::STATUS_WORKING), + $condition, $this->getConnection()->quote($data['status']), 'status' ); diff --git a/app/code/Magento/Indexer/Plugin/Mview/ViewUpdatePlugin.php b/app/code/Magento/Indexer/Plugin/Mview/ViewUpdatePlugin.php new file mode 100644 index 0000000000000..2c86d4afe30ef --- /dev/null +++ b/app/code/Magento/Indexer/Plugin/Mview/ViewUpdatePlugin.php @@ -0,0 +1,93 @@ +<?php +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +declare(strict_types=1); + +namespace Magento\Indexer\Plugin\Mview; + +use Magento\Framework\Indexer\ConfigInterface; +use Magento\Framework\Indexer\IndexerRegistry; +use Magento\Framework\Indexer\StateInterface; +use Magento\Framework\Mview\ViewInterface; +use Psr\Log\LoggerInterface; + +/** + * Plugin to prevent updating a view if the associated indexer is suspended + */ +class ViewUpdatePlugin +{ + /** + * @var IndexerRegistry + */ + private IndexerRegistry $indexerRegistry; + + /** + * @var ConfigInterface + */ + private ConfigInterface $indexerConfig; + + /** + * @var LoggerInterface + */ + private LoggerInterface $logger; + + /** + * @param IndexerRegistry $indexerRegistry + * @param ConfigInterface $indexerConfig + * @param LoggerInterface $logger + */ + public function __construct( + IndexerRegistry $indexerRegistry, + ConfigInterface $indexerConfig, + LoggerInterface $logger + ) { + $this->indexerRegistry = $indexerRegistry; + $this->indexerConfig = $indexerConfig; + $this->logger = $logger; + } + + /** + * Prevent updating a view if the associated indexer is suspended + * + * @param ViewInterface $subject + * @param callable $proceed + * @return void + */ + public function aroundUpdate(ViewInterface $subject, callable $proceed): void + { + $indexerId = $this->mapViewIdToIndexerId($subject->getId()); + + if ($indexerId === null) { + $proceed(); + return; + } + + $indexer = $this->indexerRegistry->get($indexerId); + + if ($indexer->getStatus() != StateInterface::STATUS_SUSPENDED) { + $proceed(); + } else { + $this->logger->info( + "Indexer {$indexer->getId()} is suspended. The view {$subject->getId()} will not be updated." + ); + } + } + + /** + * Map view ID to indexer ID + * + * @param string $viewId + * @return string|null + */ + private function mapViewIdToIndexerId(string $viewId): ?string + { + foreach ($this->indexerConfig->getIndexers() as $indexerId => $config) { + if (isset($config['view_id']) && $config['view_id'] === $viewId) { + return $indexerId; + } + } + return null; + } +} diff --git a/app/code/Magento/Indexer/etc/di.xml b/app/code/Magento/Indexer/etc/di.xml index 16526c13a41db..6469cda39e9f2 100644 --- a/app/code/Magento/Indexer/etc/di.xml +++ b/app/code/Magento/Indexer/etc/di.xml @@ -58,6 +58,7 @@ <item name="info" xsi:type="object">Magento\Indexer\Console\Command\IndexerInfoCommand</item> <item name="reindex" xsi:type="object">Magento\Indexer\Console\Command\IndexerReindexCommand</item> <item name="set-mode" xsi:type="object">Magento\Indexer\Console\Command\IndexerSetModeCommand</item> + <item name="set-status" xsi:type="object">Magento\Indexer\Console\Command\IndexerSetStatusCommand</item> <item name="show-mode" xsi:type="object">Magento\Indexer\Console\Command\IndexerShowModeCommand</item> <item name="status" xsi:type="object">Magento\Indexer\Console\Command\IndexerStatusCommand</item> <item name="reset" xsi:type="object">Magento\Indexer\Console\Command\IndexerResetStateCommand</item> @@ -78,4 +79,7 @@ <type name="Magento\Framework\Indexer\CacheContext"> <plugin name="defer_cache_cleaning" type="Magento\Indexer\Model\Indexer\DeferCacheCleaning" /> </type> + <type name="Magento\Framework\Mview\ViewInterface"> + <plugin name="skip_suspended_indexer_mview_update" type="Magento\Indexer\Plugin\Mview\ViewUpdatePlugin" sortOrder="10"/> + </type> </config> diff --git a/lib/internal/Magento/Framework/Indexer/StateInterface.php b/lib/internal/Magento/Framework/Indexer/StateInterface.php index 332b3227ffc88..4a00036edfd12 100644 --- a/lib/internal/Magento/Framework/Indexer/StateInterface.php +++ b/lib/internal/Magento/Framework/Indexer/StateInterface.php @@ -17,6 +17,7 @@ interface StateInterface const STATUS_WORKING = 'working'; const STATUS_VALID = 'valid'; const STATUS_INVALID = 'invalid'; + const STATUS_SUSPENDED = 'suspended'; /** * Return indexer id diff --git a/lib/internal/Magento/Framework/Indexer/SuspendableIndexerInterface.php b/lib/internal/Magento/Framework/Indexer/SuspendableIndexerInterface.php new file mode 100644 index 0000000000000..dc6a22539de0e --- /dev/null +++ b/lib/internal/Magento/Framework/Indexer/SuspendableIndexerInterface.php @@ -0,0 +1,21 @@ +<?php +/** + * Copyright © Magento, Inc. All rights reserved. + * See COPYING.txt for license details. + */ +declare(strict_types=1); + +namespace Magento\Framework\Indexer; + +/** + * Interface for indexers that can be suspended + */ +interface SuspendableIndexerInterface extends IndexerInterface +{ + /** + * Check whether indexer is suspended + * + * @return bool + */ + public function isSuspended(): bool; +} From 3da9268135c19c1fa68db097acefeb042887ebd4 Mon Sep 17 00:00:00 2001 From: Dmytro Poperechnyy <dpoperechnyy@magento.com> Date: Tue, 6 Feb 2024 10:44:11 -0600 Subject: [PATCH 083/104] ACPT-1751: Enable Suspension of Cron-Triggered Indexer Operations - Fix static tests; --- .../Indexer/Console/Command/IndexerSetStatusCommand.php | 6 +++--- .../Magento/Indexer/Model/ResourceModel/Indexer/State.php | 3 ++- .../Magento/Indexer/Plugin/Mview/ViewUpdatePlugin.php | 6 +++--- lib/internal/Magento/Framework/Indexer/StateInterface.php | 8 ++++---- 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/app/code/Magento/Indexer/Console/Command/IndexerSetStatusCommand.php b/app/code/Magento/Indexer/Console/Command/IndexerSetStatusCommand.php index 5b780cf7ee00d..6f49185b1694f 100644 --- a/app/code/Magento/Indexer/Console/Command/IndexerSetStatusCommand.php +++ b/app/code/Magento/Indexer/Console/Command/IndexerSetStatusCommand.php @@ -26,7 +26,7 @@ class IndexerSetStatusCommand extends AbstractIndexerManageCommand /**#@+ * Names of input arguments or options */ - const INPUT_KEY_STATUS = 'status'; + private const INPUT_KEY_STATUS = 'status'; /**#@- */ /** @@ -47,7 +47,7 @@ public function __construct( } /** - * {@inheritdoc} + * @inheritdoc */ protected function configure() { @@ -59,7 +59,7 @@ protected function configure() } /** - * {@inheritdoc} + * @inheritdoc */ protected function execute(InputInterface $input, OutputInterface $output) { diff --git a/app/code/Magento/Indexer/Model/ResourceModel/Indexer/State.php b/app/code/Magento/Indexer/Model/ResourceModel/Indexer/State.php index be2e7bef9005a..e4c0f36a1769f 100644 --- a/app/code/Magento/Indexer/Model/ResourceModel/Indexer/State.php +++ b/app/code/Magento/Indexer/Model/ResourceModel/Indexer/State.php @@ -31,7 +31,8 @@ protected function prepareDataForUpdate($object) $data = parent::prepareDataForUpdate($object); if (isset($data['status']) && StateInterface::STATUS_VALID === $data['status']) { - $condition = $this->getConnection()->quoteInto('status IN (?)', + $condition = $this->getConnection()->quoteInto( + 'status IN (?)', [ StateInterface::STATUS_WORKING, StateInterface::STATUS_SUSPENDED diff --git a/app/code/Magento/Indexer/Plugin/Mview/ViewUpdatePlugin.php b/app/code/Magento/Indexer/Plugin/Mview/ViewUpdatePlugin.php index 2c86d4afe30ef..8bc249e211e7c 100644 --- a/app/code/Magento/Indexer/Plugin/Mview/ViewUpdatePlugin.php +++ b/app/code/Magento/Indexer/Plugin/Mview/ViewUpdatePlugin.php @@ -51,9 +51,9 @@ public function __construct( /** * Prevent updating a view if the associated indexer is suspended * - * @param ViewInterface $subject - * @param callable $proceed - * @return void + * @param ViewInterface $subject + * @param callable $proceed + * @return void */ public function aroundUpdate(ViewInterface $subject, callable $proceed): void { diff --git a/lib/internal/Magento/Framework/Indexer/StateInterface.php b/lib/internal/Magento/Framework/Indexer/StateInterface.php index 4a00036edfd12..6aba721f6aff3 100644 --- a/lib/internal/Magento/Framework/Indexer/StateInterface.php +++ b/lib/internal/Magento/Framework/Indexer/StateInterface.php @@ -14,10 +14,10 @@ interface StateInterface /** * Indexer statuses */ - const STATUS_WORKING = 'working'; - const STATUS_VALID = 'valid'; - const STATUS_INVALID = 'invalid'; - const STATUS_SUSPENDED = 'suspended'; + public const STATUS_WORKING = 'working'; + public const STATUS_VALID = 'valid'; + public const STATUS_INVALID = 'invalid'; + public const STATUS_SUSPENDED = 'suspended'; /** * Return indexer id From 202d1165de85b8a46517e3b57601668e6dbe5782 Mon Sep 17 00:00:00 2001 From: Dmytro Poperechnyy <dpoperechnyy@magento.com> Date: Wed, 7 Feb 2024 00:35:34 -0600 Subject: [PATCH 084/104] ACPT-1751: Enable Suspension of Cron-Triggered Indexer Operations - Skip indexer reindex and view update if the specified indexer or any other indexer that shares its shared_index are suspended; --- .../Command/IndexerSetStatusCommand.php | 8 +-- app/code/Magento/Indexer/Model/Indexer.php | 2 +- app/code/Magento/Indexer/Model/Processor.php | 48 +++++++++++++++++- .../Indexer/Plugin/Mview/ViewUpdatePlugin.php | 50 +++++++++++++++---- .../Indexer/SuspendableIndexerInterface.php | 9 ++-- 5 files changed, 97 insertions(+), 20 deletions(-) diff --git a/app/code/Magento/Indexer/Console/Command/IndexerSetStatusCommand.php b/app/code/Magento/Indexer/Console/Command/IndexerSetStatusCommand.php index 6f49185b1694f..07c31489c4bcf 100644 --- a/app/code/Magento/Indexer/Console/Command/IndexerSetStatusCommand.php +++ b/app/code/Magento/Indexer/Console/Command/IndexerSetStatusCommand.php @@ -19,7 +19,7 @@ use Symfony\Component\Console\Output\OutputInterface; /** - * Command for setting index status for indexers + * Command for setting index status for indexers. */ class IndexerSetStatusCommand extends AbstractIndexerManageCommand { @@ -85,7 +85,7 @@ protected function execute(InputInterface $input, OutputInterface $output) } /** - * Get list of arguments for the command + * Gets list of arguments for the command. * * @return InputOption[] */ @@ -102,7 +102,7 @@ public function getInputList(): array } /** - * Check if all CLI command options are provided + * Checks if all CLI command options are provided. * * @param InputInterface $input * @return string[] @@ -136,7 +136,7 @@ private function validate(InputInterface $input): array } /** - * Update the status of a specified indexer + * Updates the status of a specified indexer. * * @param IndexerInterface $indexer * @param string $newStatus diff --git a/app/code/Magento/Indexer/Model/Indexer.php b/app/code/Magento/Indexer/Model/Indexer.php index 0029e906e6b92..c09f5110028c5 100644 --- a/app/code/Magento/Indexer/Model/Indexer.php +++ b/app/code/Magento/Indexer/Model/Indexer.php @@ -335,7 +335,7 @@ public function isInvalid() } /** - * Check whether indexer is valid + * Checks whether indexer is suspended. * * @return bool */ diff --git a/app/code/Magento/Indexer/Model/Processor.php b/app/code/Magento/Indexer/Model/Processor.php index bad299e55d7db..e53646e75347d 100644 --- a/app/code/Magento/Indexer/Model/Processor.php +++ b/app/code/Magento/Indexer/Model/Processor.php @@ -3,12 +3,16 @@ * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ +declare(strict_types=1); + namespace Magento\Indexer\Model; use Magento\Framework\App\ObjectManager; use Magento\Framework\Indexer\ConfigInterface; use Magento\Framework\Indexer\IndexerInterface; use Magento\Framework\Indexer\IndexerInterfaceFactory; +use Magento\Framework\Indexer\IndexerRegistry; +use Magento\Framework\Indexer\StateInterface; use Magento\Framework\Mview\ProcessorInterface; use Magento\Indexer\Model\Processor\MakeSharedIndexValid; @@ -47,25 +51,33 @@ class Processor */ protected $makeSharedValid; + /** + * @var IndexerRegistry + */ + private IndexerRegistry $indexerRegistry; + /** * @param ConfigInterface $config * @param IndexerInterfaceFactory $indexerFactory * @param Indexer\CollectionFactory $indexersFactory * @param ProcessorInterface $mviewProcessor * @param MakeSharedIndexValid|null $makeSharedValid + * @param IndexerRegistry|null $indexerRegistry */ public function __construct( ConfigInterface $config, IndexerInterfaceFactory $indexerFactory, Indexer\CollectionFactory $indexersFactory, ProcessorInterface $mviewProcessor, - ?MakeSharedIndexValid $makeSharedValid = null + ?MakeSharedIndexValid $makeSharedValid = null, + ?IndexerRegistry $indexerRegistry = null ) { $this->config = $config; $this->indexerFactory = $indexerFactory; $this->indexersFactory = $indexersFactory; $this->mviewProcessor = $mviewProcessor; $this->makeSharedValid = $makeSharedValid ?: ObjectManager::getInstance()->get(MakeSharedIndexValid::class); + $this->indexerRegistry = $indexerRegistry ?: ObjectManager::getInstance()->get(IndexerRegistry::class); } /** @@ -81,7 +93,9 @@ public function reindexAllInvalid() $indexer->load($indexerId); $indexerConfig = $this->config->getIndexer($indexerId); - if ($indexer->isInvalid() && !$indexer->isSuspended()) { + if ($indexer->isInvalid() && !$indexer->isSuspended() + && !$this->isSharedIndexSuspended($indexerConfig['shared_index']) + ) { // Skip indexers having shared index that was already complete $sharedIndex = $indexerConfig['shared_index'] ?? null; if (!in_array($sharedIndex, $this->sharedIndexesComplete)) { @@ -97,6 +111,36 @@ public function reindexAllInvalid() } } + /** + * Checks if any indexers within a group that share a common 'shared_index' ID are suspended. + * + * @param string|null $sharedIndexId + * @return bool + */ + private function isSharedIndexSuspended(?string $sharedIndexId): bool + { + if ($sharedIndexId === null) { + return false; + } + + $indexers = $this->config->getIndexers(); + + foreach ($indexers as $indexerId => $config) { + // Check if the indexer shares the same 'shared_index' + if (isset($config['shared_index']) && $config['shared_index'] === $sharedIndexId) { + $indexer = $this->indexerRegistry->get($indexerId); + + // If any indexer that shares the 'shared_index' is suspended, return true + if ($indexer->getStatus() === StateInterface::STATUS_SUSPENDED) { + return true; + } + } + } + + // If none of the shared indexers are suspended, return false + return false; + } + /** * Regenerate indexes for all indexers * diff --git a/app/code/Magento/Indexer/Plugin/Mview/ViewUpdatePlugin.php b/app/code/Magento/Indexer/Plugin/Mview/ViewUpdatePlugin.php index 8bc249e211e7c..0e16b07ca29c5 100644 --- a/app/code/Magento/Indexer/Plugin/Mview/ViewUpdatePlugin.php +++ b/app/code/Magento/Indexer/Plugin/Mview/ViewUpdatePlugin.php @@ -14,7 +14,7 @@ use Psr\Log\LoggerInterface; /** - * Plugin to prevent updating a view if the associated indexer is suspended + * Plugin to prevent view update if the associated indexer or any indexer sharing the same shared_index is suspended. */ class ViewUpdatePlugin { @@ -49,7 +49,7 @@ public function __construct( } /** - * Prevent updating a view if the associated indexer is suspended + * Skips updating the view if its associated indexer or any indexer with the same shared index is suspended. * * @param ViewInterface $subject * @param callable $proceed @@ -57,26 +57,27 @@ public function __construct( */ public function aroundUpdate(ViewInterface $subject, callable $proceed): void { - $indexerId = $this->mapViewIdToIndexerId($subject->getId()); + $viewId = $subject->getId(); + $indexerId = $this->mapViewIdToIndexerId($viewId); if ($indexerId === null) { $proceed(); return; } - $indexer = $this->indexerRegistry->get($indexerId); - - if ($indexer->getStatus() != StateInterface::STATUS_SUSPENDED) { - $proceed(); - } else { + // Check if the direct indexer or any related indexers via shared_index are suspended + if ($this->isIndexerOrSharedIndexSuspended($indexerId)) { $this->logger->info( - "Indexer {$indexer->getId()} is suspended. The view {$subject->getId()} will not be updated." + "Suspended status detected for indexer {$indexerId} or its shared index. " + . "Any potential update for view {$viewId} will be skipped regardless of backlog status.", ); + } else { + $proceed(); } } /** - * Map view ID to indexer ID + * Maps a view ID to its corresponding indexer ID. * * @param string $viewId * @return string|null @@ -90,4 +91,33 @@ private function mapViewIdToIndexerId(string $viewId): ?string } return null; } + + /** + * Determines if the specified indexer or any other indexer that shares its shared_index are suspended. + * + * @param string $indexerId + * @return bool + */ + private function isIndexerOrSharedIndexSuspended(string $indexerId): bool + { + $indexer = $this->indexerRegistry->get($indexerId); + if ($indexer->getStatus() === StateInterface::STATUS_SUSPENDED) { + return true; + } + + // Retrieve the shared_index ID from the indexer's configuration + $sharedIndexId = $this->indexerConfig->getIndexer($indexerId)['shared_index'] ?? null; + if ($sharedIndexId !== null) { + foreach ($this->indexerConfig->getIndexers() as $otherIndexerId => $config) { + if (($config['shared_index'] ?? null) === $sharedIndexId) { + $otherIndexer = $this->indexerRegistry->get($otherIndexerId); + if ($otherIndexer->getStatus() === StateInterface::STATUS_SUSPENDED) { + return true; + } + } + } + } + + return false; + } } diff --git a/lib/internal/Magento/Framework/Indexer/SuspendableIndexerInterface.php b/lib/internal/Magento/Framework/Indexer/SuspendableIndexerInterface.php index dc6a22539de0e..f89fc7e2120d8 100644 --- a/lib/internal/Magento/Framework/Indexer/SuspendableIndexerInterface.php +++ b/lib/internal/Magento/Framework/Indexer/SuspendableIndexerInterface.php @@ -8,14 +8,17 @@ namespace Magento\Framework\Indexer; /** - * Interface for indexers that can be suspended + * Interface for managing the suspended status of indexers. + * + * Allows for temporary suspension of indexer auto-updates by cron, + * facilitating performance optimization during bulk operations. */ interface SuspendableIndexerInterface extends IndexerInterface { /** - * Check whether indexer is suspended + * Determines if the indexer is suspended. * - * @return bool + * @return bool True if suspended, false otherwise. */ public function isSuspended(): bool; } From c85ab58fd452d60dd47e1463c2eb1ca0eda43f63 Mon Sep 17 00:00:00 2001 From: Atul-glo35265 <glo35265@adobe.com> Date: Thu, 8 Feb 2024 13:12:36 +0530 Subject: [PATCH 085/104] AC-10720::Migration from outdated jquery/fileUpload library - Removing old jQuery library --- .../Theme/view/base/requirejs-config.js | 1 - lib/web/jquery/fileUploader/LICENSE.txt | 20 - lib/web/jquery/fileUploader/README.md | 228 --- lib/web/jquery/fileUploader/SECURITY.md | 227 --- .../cors/jquery.postmessage-transport.js | 126 -- .../fileUploader/cors/jquery.xdr-transport.js | 97 - .../css/jquery.fileupload-noscript.css | 22 - .../css/jquery.fileupload-ui-noscript.css | 17 - .../fileUploader/css/jquery.fileupload.css | 36 - lib/web/jquery/fileUploader/img/loading.gif | Bin 3796 -> 0 bytes .../jquery/fileUploader/img/progressbar.gif | Bin 3323 -> 0 bytes .../fileUploader/jquery.fileupload-audio.js | 101 -- .../fileUploader/jquery.fileupload-image.js | 346 ---- .../fileUploader/jquery.fileupload-process.js | 170 -- .../fileUploader/jquery.fileupload-ui.js | 759 -------- .../jquery.fileupload-validate.js | 119 -- .../fileUploader/jquery.fileupload-video.js | 101 -- .../jquery/fileUploader/jquery.fileupload.js | 1604 ----------------- .../fileUploader/jquery.fileuploader.js | 33 - .../fileUploader/jquery.iframe-transport.js | 227 --- .../vendor/blueimp-canvas-to-blob/LICENSE.txt | 20 - .../vendor/blueimp-canvas-to-blob/README.md | 135 -- .../js/canvas-to-blob.js | 143 -- .../vendor/blueimp-load-image/LICENSE.txt | 20 - .../vendor/blueimp-load-image/README.md | 1070 ----------- .../vendor/blueimp-load-image/js/index.js | 12 - .../js/load-image-exif-map.js | 420 ----- .../blueimp-load-image/js/load-image-exif.js | 460 ----- .../blueimp-load-image/js/load-image-fetch.js | 103 -- .../js/load-image-iptc-map.js | 169 -- .../blueimp-load-image/js/load-image-iptc.js | 239 --- .../blueimp-load-image/js/load-image-meta.js | 259 --- .../js/load-image-orientation.js | 481 ----- .../blueimp-load-image/js/load-image-scale.js | 327 ---- .../blueimp-load-image/js/load-image.js | 229 --- .../vendor/blueimp-tmpl/LICENSE.txt | 20 - .../vendor/blueimp-tmpl/README.md | 436 ----- .../vendor/blueimp-tmpl/js/compile.js | 91 - .../vendor/blueimp-tmpl/js/runtime.js | 50 - .../vendor/blueimp-tmpl/js/tmpl.js | 98 - .../fileUploader/vendor/jquery.ui.widget.js | 832 --------- 41 files changed, 9848 deletions(-) delete mode 100644 lib/web/jquery/fileUploader/LICENSE.txt delete mode 100644 lib/web/jquery/fileUploader/README.md delete mode 100644 lib/web/jquery/fileUploader/SECURITY.md delete mode 100644 lib/web/jquery/fileUploader/cors/jquery.postmessage-transport.js delete mode 100644 lib/web/jquery/fileUploader/cors/jquery.xdr-transport.js delete mode 100644 lib/web/jquery/fileUploader/css/jquery.fileupload-noscript.css delete mode 100644 lib/web/jquery/fileUploader/css/jquery.fileupload-ui-noscript.css delete mode 100644 lib/web/jquery/fileUploader/css/jquery.fileupload.css delete mode 100644 lib/web/jquery/fileUploader/img/loading.gif delete mode 100644 lib/web/jquery/fileUploader/img/progressbar.gif delete mode 100644 lib/web/jquery/fileUploader/jquery.fileupload-audio.js delete mode 100644 lib/web/jquery/fileUploader/jquery.fileupload-image.js delete mode 100644 lib/web/jquery/fileUploader/jquery.fileupload-process.js delete mode 100644 lib/web/jquery/fileUploader/jquery.fileupload-ui.js delete mode 100644 lib/web/jquery/fileUploader/jquery.fileupload-validate.js delete mode 100644 lib/web/jquery/fileUploader/jquery.fileupload-video.js delete mode 100644 lib/web/jquery/fileUploader/jquery.fileupload.js delete mode 100644 lib/web/jquery/fileUploader/jquery.fileuploader.js delete mode 100644 lib/web/jquery/fileUploader/jquery.iframe-transport.js delete mode 100644 lib/web/jquery/fileUploader/vendor/blueimp-canvas-to-blob/LICENSE.txt delete mode 100644 lib/web/jquery/fileUploader/vendor/blueimp-canvas-to-blob/README.md delete mode 100644 lib/web/jquery/fileUploader/vendor/blueimp-canvas-to-blob/js/canvas-to-blob.js delete mode 100644 lib/web/jquery/fileUploader/vendor/blueimp-load-image/LICENSE.txt delete mode 100644 lib/web/jquery/fileUploader/vendor/blueimp-load-image/README.md delete mode 100644 lib/web/jquery/fileUploader/vendor/blueimp-load-image/js/index.js delete mode 100644 lib/web/jquery/fileUploader/vendor/blueimp-load-image/js/load-image-exif-map.js delete mode 100644 lib/web/jquery/fileUploader/vendor/blueimp-load-image/js/load-image-exif.js delete mode 100644 lib/web/jquery/fileUploader/vendor/blueimp-load-image/js/load-image-fetch.js delete mode 100644 lib/web/jquery/fileUploader/vendor/blueimp-load-image/js/load-image-iptc-map.js delete mode 100644 lib/web/jquery/fileUploader/vendor/blueimp-load-image/js/load-image-iptc.js delete mode 100644 lib/web/jquery/fileUploader/vendor/blueimp-load-image/js/load-image-meta.js delete mode 100644 lib/web/jquery/fileUploader/vendor/blueimp-load-image/js/load-image-orientation.js delete mode 100644 lib/web/jquery/fileUploader/vendor/blueimp-load-image/js/load-image-scale.js delete mode 100644 lib/web/jquery/fileUploader/vendor/blueimp-load-image/js/load-image.js delete mode 100644 lib/web/jquery/fileUploader/vendor/blueimp-tmpl/LICENSE.txt delete mode 100644 lib/web/jquery/fileUploader/vendor/blueimp-tmpl/README.md delete mode 100755 lib/web/jquery/fileUploader/vendor/blueimp-tmpl/js/compile.js delete mode 100644 lib/web/jquery/fileUploader/vendor/blueimp-tmpl/js/runtime.js delete mode 100644 lib/web/jquery/fileUploader/vendor/blueimp-tmpl/js/tmpl.js delete mode 100644 lib/web/jquery/fileUploader/vendor/jquery.ui.widget.js diff --git a/app/code/Magento/Theme/view/base/requirejs-config.js b/app/code/Magento/Theme/view/base/requirejs-config.js index 83acf9ccd3ef8..3ca6151895e98 100644 --- a/app/code/Magento/Theme/view/base/requirejs-config.js +++ b/app/code/Magento/Theme/view/base/requirejs-config.js @@ -66,7 +66,6 @@ var config = { }, paths: { 'jquery/validate': 'jquery/jquery.validate', - 'jquery/file-uploader': 'jquery/fileUploader/jquery.fileuploader', 'jquery/uppy-core': 'jquery/uppy/dist/uppy.min', 'prototype': 'legacy-build.min', 'jquery/jquery-storageapi': 'js-storage/storage-wrapper', diff --git a/lib/web/jquery/fileUploader/LICENSE.txt b/lib/web/jquery/fileUploader/LICENSE.txt deleted file mode 100644 index ca9e708c6718f..0000000000000 --- a/lib/web/jquery/fileUploader/LICENSE.txt +++ /dev/null @@ -1,20 +0,0 @@ -MIT License - -Copyright © 2010 Sebastian Tschan, https://blueimp.net - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/lib/web/jquery/fileUploader/README.md b/lib/web/jquery/fileUploader/README.md deleted file mode 100644 index b48a4b1d5d702..0000000000000 --- a/lib/web/jquery/fileUploader/README.md +++ /dev/null @@ -1,228 +0,0 @@ -# jQuery File Upload - -## Contents - -- [Description](#description) -- [Demo](#demo) -- [Features](#features) -- [Security](#security) -- [Setup](#setup) -- [Requirements](#requirements) - - [Mandatory requirements](#mandatory-requirements) - - [Optional requirements](#optional-requirements) - - [Cross-domain requirements](#cross-domain-requirements) -- [Browsers](#browsers) - - [Desktop browsers](#desktop-browsers) - - [Mobile browsers](#mobile-browsers) - - [Extended browser support information](#extended-browser-support-information) -- [Testing](#testing) -- [Support](#support) -- [License](#license) - -## Description - -> File Upload widget with multiple file selection, drag&drop support, -> progress bars, validation and preview images, audio and video for jQuery. -> Supports cross-domain, chunked and resumable file uploads and client-side -> image resizing. -> Works with any server-side platform (PHP, Python, Ruby on Rails, Java, -> Node.js, Go etc.) that supports standard HTML form file uploads. - -## Demo - -[Demo File Upload](https://blueimp.github.io/jQuery-File-Upload/) - -## Features - -- **Multiple file upload:** - Allows to select multiple files at once and upload them simultaneously. -- **Drag & Drop support:** - Allows to upload files by dragging them from your desktop or file manager and - dropping them on your browser window. -- **Upload progress bar:** - Shows a progress bar indicating the upload progress for individual files and - for all uploads combined. -- **Cancelable uploads:** - Individual file uploads can be canceled to stop the upload progress. -- **Resumable uploads:** - Aborted uploads can be resumed with browsers supporting the Blob API. -- **Chunked uploads:** - Large files can be uploaded in smaller chunks with browsers supporting the - Blob API. -- **Client-side image resizing:** - Images can be automatically resized on client-side with browsers supporting - the required JS APIs. -- **Preview images, audio and video:** - A preview of image, audio and video files can be displayed before uploading - with browsers supporting the required APIs. -- **No browser plugins (e.g. Adobe Flash) required:** - The implementation is based on open standards like HTML5 and JavaScript and - requires no additional browser plugins. -- **Graceful fallback for legacy browsers:** - Uploads files via XMLHttpRequests if supported and uses iframes as fallback - for legacy browsers. -- **HTML file upload form fallback:** - Allows progressive enhancement by using a standard HTML file upload form as - widget element. -- **Cross-site file uploads:** - Supports uploading files to a different domain with cross-site XMLHttpRequests - or iframe redirects. -- **Multiple plugin instances:** - Allows to use multiple plugin instances on the same webpage. -- **Customizable and extensible:** - Provides an API to set individual options and define callback methods for - various upload events. -- **Multipart and file contents stream uploads:** - Files can be uploaded as standard "multipart/form-data" or file contents - stream (HTTP PUT file upload). -- **Compatible with any server-side application platform:** - Works with any server-side platform (PHP, Python, Ruby on Rails, Java, - Node.js, Go etc.) that supports standard HTML form file uploads. - -## Security - -⚠️ Please read the [VULNERABILITIES](VULNERABILITIES.md) document for a list of -fixed vulnerabilities - -Please also read the [SECURITY](SECURITY.md) document for instructions on how to -securely configure your Webserver for file uploads. - -## Setup - -jQuery File Upload can be installed via [NPM](https://www.npmjs.com/): - -```sh -npm install blueimp-file-upload -``` - -This allows you to include [jquery.fileupload.js](js/jquery.fileupload.js) and -its extensions via `node_modules`, e.g: - -```html -<script src="node_modules/blueimp-file-upload/js/jquery.fileupload.js"></script> -``` - -The widget can then be initialized on a file upload form the following way: - -```js -$('#fileupload').fileupload(); -``` - -For further information, please refer to the following guides: - -- [Main documentation page](https://github.com/blueimp/jQuery-File-Upload/wiki) -- [List of all available Options](https://github.com/blueimp/jQuery-File-Upload/wiki/Options) -- [The plugin API](https://github.com/blueimp/jQuery-File-Upload/wiki/API) -- [How to setup the plugin on your website](https://github.com/blueimp/jQuery-File-Upload/wiki/Setup) -- [How to use only the basic plugin.](https://github.com/blueimp/jQuery-File-Upload/wiki/Basic-plugin) - -## Requirements - -### Mandatory requirements - -- [jQuery](https://jquery.com/) v1.7+ -- [jQuery UI widget factory](https://api.jqueryui.com/jQuery.widget/) v1.9+ - (included): Required for the basic File Upload plugin, but very lightweight - without any other dependencies from the jQuery UI suite. -- [jQuery Iframe Transport plugin](https://github.com/blueimp/jQuery-File-Upload/blob/master/js/jquery.iframe-transport.js) - (included): Required for - [browsers without XHR file upload support](https://github.com/blueimp/jQuery-File-Upload/wiki/Browser-support). - -### Optional requirements - -- [JavaScript Templates engine](https://github.com/blueimp/JavaScript-Templates) - v3+: Used to render the selected and uploaded files for the Basic Plus UI and - jQuery UI versions. -- [JavaScript Load Image library](https://github.com/blueimp/JavaScript-Load-Image) - v2+: Required for the image previews and resizing functionality. -- [JavaScript Canvas to Blob polyfill](https://github.com/blueimp/JavaScript-Canvas-to-Blob) - v3+:Required for the image previews and resizing functionality. -- [blueimp Gallery](https://github.com/blueimp/Gallery) v2+: Used to display the - uploaded images in a lightbox. -- [Bootstrap](https://getbootstrap.com/) v3+: Used for the demo design. -- [Glyphicons](https://glyphicons.com/) Icon set used by Bootstrap. - -### Cross-domain requirements - -[Cross-domain File Uploads](https://github.com/blueimp/jQuery-File-Upload/wiki/Cross-domain-uploads) -using the -[Iframe Transport plugin](https://github.com/blueimp/jQuery-File-Upload/blob/master/js/jquery.iframe-transport.js) -require a redirect back to the origin server to retrieve the upload results. The -[example implementation](https://github.com/blueimp/jQuery-File-Upload/blob/master/js/main.js) -makes use of -[result.html](https://github.com/blueimp/jQuery-File-Upload/blob/master/cors/result.html) -as a static redirect page for the origin server. - -The repository also includes the -[jQuery XDomainRequest Transport plugin](https://github.com/blueimp/jQuery-File-Upload/blob/master/js/cors/jquery.xdr-transport.js), -which enables limited cross-domain AJAX requests in Microsoft Internet Explorer -8 and 9 (IE 10 supports cross-domain XHR requests). -The XDomainRequest object allows GET and POST requests only and doesn't support -file uploads. It is used on the -[Demo](https://blueimp.github.io/jQuery-File-Upload/) to delete uploaded files -from the cross-domain demo file upload service. - -## Browsers - -### Desktop browsers - -The File Upload plugin is regularly tested with the latest browser versions and -supports the following minimal versions: - -- Google Chrome -- Apple Safari 4.0+ -- Mozilla Firefox 3.0+ -- Opera 11.0+ -- Microsoft Internet Explorer 6.0+ - -### Mobile browsers - -The File Upload plugin has been tested with and supports the following mobile -browsers: - -- Apple Safari on iOS 6.0+ -- Google Chrome on iOS 6.0+ -- Google Chrome on Android 4.0+ -- Default Browser on Android 2.3+ -- Opera Mobile 12.0+ - -### Extended browser support information - -For a detailed overview of the features supported by each browser version and -known operating system / browser bugs, please have a look at the -[Extended browser support information](https://github.com/blueimp/jQuery-File-Upload/wiki/Browser-support). - -## Testing - -The project comes with three sets of tests: - -1. Code linting using [ESLint](https://eslint.org/). -2. Unit tests using [Mocha](https://mochajs.org/). -3. End-to-end tests using [blueimp/wdio](https://github.com/blueimp/wdio). - -To run the tests, follow these steps: - -1. Start [Docker](https://docs.docker.com/). -2. Install development dependencies: - - ```sh - npm install - ``` - -3. Run the tests: - - ```sh - npm test - ``` - -## Support - -This project is actively maintained, but there is no official support channel. -If you have a question that another developer might help you with, please post -to -[Stack Overflow](https://stackoverflow.com/questions/tagged/blueimp+jquery+file-upload) -and tag your question with `blueimp jquery file upload`. - -## License - -Released under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/lib/web/jquery/fileUploader/SECURITY.md b/lib/web/jquery/fileUploader/SECURITY.md deleted file mode 100644 index 433a6853cdb3a..0000000000000 --- a/lib/web/jquery/fileUploader/SECURITY.md +++ /dev/null @@ -1,227 +0,0 @@ -# File Upload Security - -## Contents - -- [Introduction](#introduction) -- [Purpose of this project](#purpose-of-this-project) -- [Mitigations against file upload risks](#mitigations-against-file-upload-risks) - - [Prevent code execution on the server](#prevent-code-execution-on-the-server) - - [Prevent code execution in the browser](#prevent-code-execution-in-the-browser) - - [Prevent distribution of malware](#prevent-distribution-of-malware) -- [Secure file upload serving configurations](#secure-file-upload-serving-configurations) - - [Apache config](#apache-config) - - [NGINX config](#nginx-config) -- [Secure image processing configurations](#secure-image-processing-configurations) -- [ImageMagick config](#imagemagick-config) - -## Introduction - -For an in-depth understanding of the potential security risks of providing file -uploads and possible mitigations, please refer to the -[OWASP - Unrestricted File Upload](https://owasp.org/www-community/vulnerabilities/Unrestricted_File_Upload) -documentation. - -To securely setup the project to serve uploaded files, please refer to the -sample -[Secure file upload serving configurations](#secure-file-upload-serving-configurations). - -To mitigate potential vulnerabilities in image processing libraries, please -refer to the -[Secure image processing configurations](#secure-image-processing-configurations). - -By default, all sample upload handlers allow only upload of image files, which -mitigates some attack vectors, but should not be relied on as the only -protection. - -Please also have a look at the -[list of fixed vulnerabilities](VULNERABILITIES.md) in jQuery File Upload, which -relates mostly to the sample server-side upload handlers and how they have been -configured. - -## Purpose of this project - -Please note that this project is not a complete file management product, but -foremost a client-side file upload library for [jQuery](https://jquery.com/). -The server-side sample upload handlers are just examples to demonstrate the -client-side file upload functionality. - -To make this very clear, there is **no user authentication** by default: - -- **everyone can upload files** -- **everyone can delete uploaded files** - -In some cases this can be acceptable, but for most projects you will want to -extend the sample upload handlers to integrate user authentication, or implement -your own. - -It is also up to you to configure your web server to securely serve the uploaded -files, e.g. using the -[sample server configurations](#secure-file-upload-serving-configurations). - -## Mitigations against file upload risks - -### Prevent code execution on the server - -To prevent execution of scripts or binaries on server-side, the upload directory -must be configured to not execute files in the upload directory (e.g. -`server/php/files` as the default for the PHP upload handler) and only treat -uploaded files as static content. - -The recommended way to do this is to configure the upload directory path to -point outside of the web application root. -Then the web server can be configured to serve files from the upload directory -with their default static files handler only. - -Limiting file uploads to a whitelist of safe file types (e.g. image files) also -mitigates this issue, but should not be the only protection. - -### Prevent code execution in the browser - -To prevent execution of scripts on client-side, the following headers must be -sent when delivering generic uploaded files to the client: - -``` -Content-Type: application/octet-stream -X-Content-Type-Options: nosniff -``` - -The `Content-Type: application/octet-stream` header instructs browsers to -display a download dialog instead of parsing it and possibly executing script -content e.g. in HTML files. - -The `X-Content-Type-Options: nosniff` header prevents browsers to try to detect -the file mime type despite the given content-type header. - -For known safe files, the content-type header can be adjusted using a -**whitelist**, e.g. sending `Content-Type: image/png` for PNG files. - -### Prevent distribution of malware - -To prevent attackers from uploading and distributing malware (e.g. computer -viruses), it is recommended to limit file uploads only to a whitelist of safe -file types. - -Please note that the detection of file types in the sample file upload handlers -is based on the file extension and not the actual file content. This makes it -still possible for attackers to upload malware by giving their files an image -file extension, but should prevent automatic execution on client computers when -opening those files. - -It does not protect at all from exploiting vulnerabilities in image display -programs, nor from users renaming file extensions to inadvertently execute the -contained malicious code. - -## Secure file upload serving configurations - -The following configurations serve uploaded files as static files with the -proper headers as -[mitigation against file upload risks](#mitigations-against-file-upload-risks). -Please do not simply copy&paste these configurations, but make sure you -understand what they are doing and that you have implemented them correctly. - -> Always test your own setup and make sure that it is secure! - -e.g. try uploading PHP scripts (as "example.php", "example.php.png" and -"example.png") to see if they get executed by your web server, e.g. the content -of the following sample: - -```php -GIF89ad <?php echo mime_content_type(__FILE__); phpinfo(); -``` - -### Apache config - -Add the following directive to the Apache config (e.g. -/etc/apache2/apache2.conf), replacing the directory path with the absolute path -to the upload directory: - -```ApacheConf -<Directory "/path/to/project/server/php/files"> - # Some of the directives require the Apache Headers module. If it is not - # already enabled, please execute the following command and reload Apache: - # sudo a2enmod headers - # - # Please note that the order of directives across configuration files matters, - # see also: - # https://httpd.apache.org/docs/current/sections.html#merging - - # The following directive matches all files and forces them to be handled as - # static content, which prevents the server from parsing and executing files - # that are associated with a dynamic runtime, e.g. PHP files. - # It also forces their Content-Type header to "application/octet-stream" and - # adds a "Content-Disposition: attachment" header to force a download dialog, - # which prevents browsers from interpreting files in the context of the - # web server, e.g. HTML files containing JavaScript. - # Lastly it also prevents browsers from MIME-sniffing the Content-Type, - # preventing them from interpreting a file as a different Content-Type than - # the one sent by the webserver. - <FilesMatch ".*"> - SetHandler default-handler - ForceType application/octet-stream - Header set Content-Disposition attachment - Header set X-Content-Type-Options nosniff - </FilesMatch> - - # The following directive matches known image files and unsets the forced - # Content-Type so they can be served with their original mime type. - # It also unsets the Content-Disposition header to allow displaying them - # inline in the browser. - <FilesMatch ".+\.(?i:(gif|jpe?g|png))$"> - ForceType none - Header unset Content-Disposition - </FilesMatch> -</Directory> -``` - -### NGINX config - -Add the following directive to the NGINX config, replacing the directory path -with the absolute path to the upload directory: - -```Nginx -location ^~ /path/to/project/server/php/files { - root html; - default_type application/octet-stream; - types { - image/gif gif; - image/jpeg jpg; - image/png png; - } - add_header X-Content-Type-Options 'nosniff'; - if ($request_filename ~ /(((?!\.(jpg)|(png)|(gif)$)[^/])+$)) { - add_header Content-Disposition 'attachment; filename="$1"'; - # Add X-Content-Type-Options again, as using add_header in a new context - # dismisses all previous add_header calls: - add_header X-Content-Type-Options 'nosniff'; - } -} -``` - -## Secure image processing configurations - -The following configuration mitigates -[potential image processing vulnerabilities with ImageMagick](VULNERABILITIES.md#potential-vulnerabilities-with-php-imagemagick) -by limiting the attack vectors to a small subset of image types -(`GIF/JPEG/PNG`). - -Please also consider using alternative, safer image processing libraries like -[libvips](https://github.com/libvips/libvips) or -[imageflow](https://github.com/imazen/imageflow). - -## ImageMagick config - -It is recommended to disable all non-required ImageMagick coders via -[policy.xml](https://wiki.debian.org/imagemagick/security). -To do so, locate the ImageMagick `policy.xml` configuration file and add the -following policies: - -```xml -<?xml version="1.0" encoding="UTF-8"?> -<!-- ... --> -<policymap> - <!-- ... --> - <policy domain="delegate" rights="none" pattern="*" /> - <policy domain="coder" rights="none" pattern="*" /> - <policy domain="coder" rights="read | write" pattern="{GIF,JPEG,JPG,PNG}" /> -</policymap> -``` diff --git a/lib/web/jquery/fileUploader/cors/jquery.postmessage-transport.js b/lib/web/jquery/fileUploader/cors/jquery.postmessage-transport.js deleted file mode 100644 index 5d5cc2f8d27c2..0000000000000 --- a/lib/web/jquery/fileUploader/cors/jquery.postmessage-transport.js +++ /dev/null @@ -1,126 +0,0 @@ -/* - * jQuery postMessage Transport Plugin - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2011, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * https://opensource.org/licenses/MIT - */ - -/* global define, require */ - -(function (factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define(['jquery'], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS: - factory(require('jquery')); - } else { - // Browser globals: - factory(window.jQuery); - } -})(function ($) { - 'use strict'; - - var counter = 0, - names = [ - 'accepts', - 'cache', - 'contents', - 'contentType', - 'crossDomain', - 'data', - 'dataType', - 'headers', - 'ifModified', - 'mimeType', - 'password', - 'processData', - 'timeout', - 'traditional', - 'type', - 'url', - 'username' - ], - convert = function (p) { - return p; - }; - - $.ajaxSetup({ - converters: { - 'postmessage text': convert, - 'postmessage json': convert, - 'postmessage html': convert - } - }); - - $.ajaxTransport('postmessage', function (options) { - if (options.postMessage && window.postMessage) { - var iframe, - loc = $('<a></a>').prop('href', options.postMessage)[0], - target = loc.protocol + '//' + loc.host, - xhrUpload = options.xhr().upload; - // IE always includes the port for the host property of a link - // element, but not in the location.host or origin property for the - // default http port 80 and https port 443, so we strip it: - if (/^(http:\/\/.+:80)|(https:\/\/.+:443)$/.test(target)) { - target = target.replace(/:(80|443)$/, ''); - } - return { - send: function (_, completeCallback) { - counter += 1; - var message = { - id: 'postmessage-transport-' + counter - }, - eventName = 'message.' + message.id; - iframe = $( - '<iframe style="display:none;" src="' + - options.postMessage + - '" name="' + - message.id + - '"></iframe>' - ) - .on('load', function () { - $.each(names, function (i, name) { - message[name] = options[name]; - }); - message.dataType = message.dataType.replace('postmessage ', ''); - $(window).on(eventName, function (event) { - var e = event.originalEvent; - var data = e.data; - var ev; - if (e.origin === target && data.id === message.id) { - if (data.type === 'progress') { - ev = document.createEvent('Event'); - ev.initEvent(data.type, false, true); - $.extend(ev, data); - xhrUpload.dispatchEvent(ev); - } else { - completeCallback( - data.status, - data.statusText, - { postmessage: data.result }, - data.headers - ); - iframe.remove(); - $(window).off(eventName); - } - } - }); - iframe[0].contentWindow.postMessage(message, target); - }) - .appendTo(document.body); - }, - abort: function () { - if (iframe) { - iframe.remove(); - } - } - }; - } - }); -}); diff --git a/lib/web/jquery/fileUploader/cors/jquery.xdr-transport.js b/lib/web/jquery/fileUploader/cors/jquery.xdr-transport.js deleted file mode 100644 index 9e81860b943fc..0000000000000 --- a/lib/web/jquery/fileUploader/cors/jquery.xdr-transport.js +++ /dev/null @@ -1,97 +0,0 @@ -/* - * jQuery XDomainRequest Transport Plugin - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2011, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * https://opensource.org/licenses/MIT - * - * Based on Julian Aubourg's ajaxHooks xdr.js: - * https://github.com/jaubourg/ajaxHooks/ - */ - -/* global define, require, XDomainRequest */ - -(function (factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define(['jquery'], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS: - factory(require('jquery')); - } else { - // Browser globals: - factory(window.jQuery); - } -})(function ($) { - 'use strict'; - if (window.XDomainRequest && !$.support.cors) { - $.ajaxTransport(function (s) { - if (s.crossDomain && s.async) { - if (s.timeout) { - s.xdrTimeout = s.timeout; - delete s.timeout; - } - var xdr; - return { - send: function (headers, completeCallback) { - var addParamChar = /\?/.test(s.url) ? '&' : '?'; - /** - * Callback wrapper function - * - * @param {number} status HTTP status code - * @param {string} statusText HTTP status text - * @param {object} [responses] Content-type specific responses - * @param {string} [responseHeaders] Response headers string - */ - function callback(status, statusText, responses, responseHeaders) { - xdr.onload = xdr.onerror = xdr.ontimeout = $.noop; - xdr = null; - completeCallback(status, statusText, responses, responseHeaders); - } - xdr = new XDomainRequest(); - // XDomainRequest only supports GET and POST: - if (s.type === 'DELETE') { - s.url = s.url + addParamChar + '_method=DELETE'; - s.type = 'POST'; - } else if (s.type === 'PUT') { - s.url = s.url + addParamChar + '_method=PUT'; - s.type = 'POST'; - } else if (s.type === 'PATCH') { - s.url = s.url + addParamChar + '_method=PATCH'; - s.type = 'POST'; - } - xdr.open(s.type, s.url); - xdr.onload = function () { - callback( - 200, - 'OK', - { text: xdr.responseText }, - 'Content-Type: ' + xdr.contentType - ); - }; - xdr.onerror = function () { - callback(404, 'Not Found'); - }; - if (s.xdrTimeout) { - xdr.ontimeout = function () { - callback(0, 'timeout'); - }; - xdr.timeout = s.xdrTimeout; - } - xdr.send((s.hasContent && s.data) || null); - }, - abort: function () { - if (xdr) { - xdr.onerror = $.noop(); - xdr.abort(); - } - } - }; - } - }); - } -}); diff --git a/lib/web/jquery/fileUploader/css/jquery.fileupload-noscript.css b/lib/web/jquery/fileUploader/css/jquery.fileupload-noscript.css deleted file mode 100644 index 2409bfb0a6942..0000000000000 --- a/lib/web/jquery/fileUploader/css/jquery.fileupload-noscript.css +++ /dev/null @@ -1,22 +0,0 @@ -@charset "UTF-8"; -/* - * jQuery File Upload Plugin NoScript CSS - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2013, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * https://opensource.org/licenses/MIT - */ - -.fileinput-button input { - position: static; - opacity: 1; - filter: none; - font-size: inherit !important; - direction: inherit; -} -.fileinput-button span { - display: none; -} diff --git a/lib/web/jquery/fileUploader/css/jquery.fileupload-ui-noscript.css b/lib/web/jquery/fileUploader/css/jquery.fileupload-ui-noscript.css deleted file mode 100644 index 30651acf026c0..0000000000000 --- a/lib/web/jquery/fileUploader/css/jquery.fileupload-ui-noscript.css +++ /dev/null @@ -1,17 +0,0 @@ -@charset "UTF-8"; -/* - * jQuery File Upload UI Plugin NoScript CSS - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2012, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * https://opensource.org/licenses/MIT - */ - -.fileinput-button i, -.fileupload-buttonbar .delete, -.fileupload-buttonbar .toggle { - display: none; -} diff --git a/lib/web/jquery/fileUploader/css/jquery.fileupload.css b/lib/web/jquery/fileUploader/css/jquery.fileupload.css deleted file mode 100644 index 5716f3e8a8aea..0000000000000 --- a/lib/web/jquery/fileUploader/css/jquery.fileupload.css +++ /dev/null @@ -1,36 +0,0 @@ -@charset "UTF-8"; -/* - * jQuery File Upload Plugin CSS - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2013, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * https://opensource.org/licenses/MIT - */ - -.fileinput-button { - position: relative; - overflow: hidden; - display: inline-block; -} -.fileinput-button input { - position: absolute; - top: 0; - right: 0; - margin: 0; - height: 100%; - opacity: 0; - filter: alpha(opacity=0); - font-size: 200px !important; - direction: ltr; - cursor: pointer; -} - -/* Fixes for IE < 8 */ -@media screen\9 { - .fileinput-button input { - font-size: 150% !important; - } -} diff --git a/lib/web/jquery/fileUploader/img/loading.gif b/lib/web/jquery/fileUploader/img/loading.gif deleted file mode 100644 index f5ef9dad4f77f02e6a7184afbe221bf20ef50eb1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3796 zcmZvec{r471IEWtU*Tlm$yS!EQOHtc8*6k*k&39OEJ>Q|J7XF9SjRH9nPD(wFm}S& zjdkq%GNi0oa`KJ7^PS^d*Lk1+-v6H8b>H{z(bdyYx?$}L@C9tq0FIB3CnqPXtE-cf zlL3HZ!2dtNV>)B)d%tUHm}tvM%TiNO{tF(^oH+xa0Z0M?K!7LZs8b(<@Do2}JI-E7 zQd;YNzOS+TaN)9?rgGYw0^bc$7z{auDyY7iMoggpinBQnCFEod#j&w9^GfJXh!=O{ z<1}&|>t{;9hSIO`D@9ysj`PDC`y{Db70r(JUg^`>gUnC-e7&^;Z=3Rl1i5KS`HMzJ zyp4^6iK>evzBV$JSN}aBl@XrKnapFCZ3xf5%o*<eu*{$!%gg4IF3tp9Q}6PzNuq(V zxw56*`F=~+`{oWGLIqSBF$^J%_Kq-2UceG*W?8107UrVH$vEVfny=qfjifde)*5n? zGWYh|a|IPh0YS#eb^J%?4&(L^LxFx%UCC9Y^D}Y&k@sBt5(1Bd7*x51iC3Gj!kTu^ z^o0&CcQM0W3~_d(>1|J3g|s`;_9yFHyz}&W04<;XHBOyd>XF7}K`sUZaZ=jf<GK6E zJZRm<`$Oylc^8Wx4|z?-4U%q4o4=d0EWwSKKer#PyRP!#{%Azc-4-cUoaQ6^qwou> z5+wTBrssA7FzUD1q*iF7I&`AB#a8R1&y9)vB#Rf105|GaAAE?@_B+1|d-9&!`sGl_ zv4fi$_qUgCF_$fMs__pU&s8sehpF*^Uo~JCgND5<*QVnoB-nk_Z(F;NgzU&kJ-Z5D z3b^mNM>L+TnO5Pw_m!D<H}G&*E@Kt^)FAChYR6hyN;rK4q*H@0`NY91Le@33Jtu;k z@uyc%8o1LudS;e~MF*@G#A)1O9DLsv6c=(KSZprz63kA>-cQdi{W3RtKkfc;6-kKy z$JL>9_Px;$!e;U}D}`UEy|@(oVezvaJgC1A*&MEC0p^R=chk*rkeu6D@O3sf=Y}=d zma``+d>>{{;%MC+c}&baKOA2p*nSRX7>gQ=V<M8%;7)R6vv`xz8<2F5Lx^P<5E>+u z6($fSkSTf=ZI`WklNR-U?$W71(^3Nc03Zth{2Ayv^?(|sH8qJvD>40a#dNU;X7+1t zYZCQqiqkJ0W>t}U!hR;vhgkrS`fDXEF5UJ^VeMT*#>5rK7_XY9xqY<6&J%5GZ0N); zT*H1hMe5LTu7fpo1==_-?IGyK1(xx@;=~;s63QLO4E`8t3-J#3mG|)Eie`*ef^w!a zL}a<b!(x(E5tq<Rc^D)|4t;6aCng+iraEnr>}AeMwbb&G-|Ffc@QjJrLPqLAYQLVQ z&;1NTLk1+>@!uvF+!N&H<`))iEal1cYg_9ME9RVA+wY#MT5ug4CY`6@G?|g{U!#}P zBp3@a22b){3<McHV+doD+G;><vIsRp8P5CDCp#^C4i?d~FhB`X{at+ie{wPaQ5DoG zttl-3v_igz+ocPUv)(*H#Y*(j7!vpGmpv=@5Pr@Lhj1X_7boo#PJ@k5Qxs(Enwo~W z!wIJ>>jlWf8L#X1n@MTP0rLj9-a3fHwyUG3Gg$hK7QYjRw|q#ba6ouOq&rU-TU>ks zS0aPA&$SR(Oj6JdL|RUIUVbVE{I_IPWHB0BSoTQ<N0*^ahi5FIEmen>Ux}@3Eo!>N z*-}r_$Z)yCS{g70;2abq3XYFY`pI<)%#k^|C6~F$8w>Z9NJ1NXT-!HHMfUdl`;Y#h zCTY&7`zz76Y7#WFl!MRnK?6XVb6R2YlCPQ{5?O`XLTPU;ofCJ-X^1_;fiSEhY61TS zrAh&Hn{rM9bxrk9wnMJ~j+yNC=uQ@evLj>cUdh?36hS4NHs1KGVRXwSj{GOH6M?{> za7!Y1f=RC{@2hy2zSAId_f@A0P9tj%s3T(3hxuqJUYuZ|7^@c3JImv|9|?WbtqEp# z^Azwl_4V_zeFdR)rFDl!`M-~hi;j(p7mV;p4Z9kUC{2||r4lHXpRb%#P*|u~EQG}s z8H(eoQI;30YchEn8k^WYx3n@7DmqxZustk&rTt8UnBfr;a*T0es<Ur)fUwZ}dAY57 zbuDjwV{>bJXZQQw{=wlP;E$ij0BYbhk&?_tpUewau2tG+HT%U~)TillMl=VqGcb3F znE*9TVKD~KQd;(ag5?VcU$dRvt|t-Hx9atFX=cgGT0Albg+N)9##EP<(v2)dhB()} z!)J(zePRsfV|77Vnn8_qWKwudMF(C}yDy??to&kdbRiktDIXuVAV<F7dTENI_)GC{ z^t8$kZ;-FEXTS^7;1C~(RZs*p*aBif8xT+Dn@I1MlJF9qnT5#C$<510qR>~UFh#{B z*plm|<+x($3Ouf`x~@{BzKN=~xw@*g;!}HRK~HZVv43E2NDe>(<c>}tCZ@;WGt-og z#V^gTkY_ButbhGBxw%E!*<IV6eQ@~WX#aqeV89WUS@AA=$rN;IXp8~;e*z$%nA4F! zDUgG4mkKdcRL4pQ`rJJXg@1<mVTM(WD|Z{Hs+(8qkYS0Z_p24YiqyiTMDeoTP2Dma zE|Be9cmJO`Q+qA_+`ApC$IB`_d!7)#ZL@eY@NXUi-F-dW0$kq)JK0gH1C5G~iH)PB zf>FIlOtDFUCt0PRAb6aUm6xAxi7qI_q!yRJO3P4X8RnH$jDR|TOeI@=ePc;2B^ddH z_6Ef+hMtbT-2Q=H6>Kx<8L4h+(t3LI>9o!A{M_om?Ap?|CktPDRyH4#zw93VusZm; zzQQCt(0j2`{QRlgs{&O2Y{kLJ?M))}3ThQr`LM@qqApekkt;Su=BxT|j_R<g)#V?1 z52}tEGMzz^+);!am-aWx8GT4sea44p21nkf@;TI#iq0Of=@P8UsEy3zNe&;_p1^v^ z4}S3RyKQf~`Ix!;>rjPIDf(!IhK7MPBO_H@V`4+p-@p<f$?ur}SpeR&Bn?Y$1R^K* z4jRpqn`c;DfW;V<XBAc&;InHItMJ05pFRt<))CrkLG@y#@ZPTOH2pqehwkXu$Y8n5 zxc1~!)5OqH?8@xi{Ov{YZyK9h(^|W$&;_#e^3l4R;j=ycr~pql#tze!;4JPC20Cs} z!0TrLG=FadKfw4O(&<oKJ$Xez{&*|~?SA>h7OkIORaY{Cf6Lc{!Mq079Y;@{2f3cJ zZ&_f9mz0(=T4Z56V|?9Laz=E8R_9KHS;4k@V_Q4eQa)Ah_O9}{+lTu~?P<Ja8Ji$R z4_6kdU@A`U4-$q<0gr-0f+1n1QPE7Xu`FTX+EJV-A@SaNiCKuyG<Ze;7YbdFtDaem z;x4>Zjzm-@s8rXa@KjyT=Pvo&BHP%M+ELck9aGy!lo%Ln=Is<89qXN_zcS6-&NnHv zxKtrX=56C!UitR0NN9U!gl}(uU1<LH4qeQh3?8S~cUiBkKxlY^j&*8Kb8lE%#OP#x z5|E}W|7n9>zv&++=&}(0N(2&UfD$+*9om0zy1-aTNsUqkq5OEJE%L5iy5J4O8v|61 zL`8}6w3WlWYF=CI%t8e-H^=9mx5*KbQAPxov9!C8d|w3tUhsdCZQTmiz3OlBg&DTO zdlN0fYv0$`+FuTTQa?$2Yb@>goC6pF<n#fX(F9rshlYfOn?*&l#l~`kM;K5zg~t2b zp>TpwI0gRVr1Oi@?O&WUD4Z@<DgELke~ME;5q~>>r^o16g}|hZr{MTR{nX;p>>OF7 zO@P8lV1Tgxb>#b+$o8Sr@Q%%cZY?!$2a_Y}6+J7#paXi~D=i03Z3#LV+IA$CnZilw zrhl5COHPEpNTlj~%&Bq#|0>rmh-TvF28x0yskQs@&zYe}OFMttEAYbHI(3OV6imC| zZwI)4DVN%rB0n^J=TJ)JOravn*(jOCjpSJA;`0uB%0)K^y1%P@$4oE(@bvZjpaKjA z>bO&ar0seuB0|eSBPIk2R)-}fJ<v>z6rj$gzMC0}$jLUzM{=Rjck%^Ga*Q#b%5#m% zs>*9JMe)@JwRI(it!-HS$|ihEqhxb;M<-5ic%%R{HvU;>3RSN=H&2*d;vXcZs(jJz zSKQFrlHb{lQQtqvx^?6v0-y(3S*Zs&F&3GEgRM1PX|Bo|{DZ{*M|K&6r@tWCq4(OO zXVnP1JhK!@u?+H;WiXwM*g|5C*L;%n7Q^&~b4+fb+VeE1LO?1z?={-g3m(HyMNW-u zmhZ2T#ZgAqjri>yn>T~v<}ua3jI13H2K;+upJt^~M%FwZX@<`I9fK$?Nko;w3UL{w zWtKQO>IQ1|8tKMHHjF}RD{KDE&bDr>GQ~6%w}%>@jWt<MPFYP(%ukOk4B0HsEibKq zA%ET6=v&$S-nrkkwYPI{I6l}t@Zm*9@TpM&{$<#;lZmAR0e%Ulx<5tKY(^p7&>oSG zFGUzMVhp0TBFEiDd({l3#dw*eT7@C`ftOODqSu7r%;<rP>m7kKb$%CNfU|2Qi#wQ3 zP_^}!Adj9a_m^Dn5&V1a{O~sMb@B;#{wO%a4Duo<A~Y&G;E{`Od;&PpAuuKN=_$i1 z0}D?KTP%zHR9+;8t11`8*Om&`H3DmzYAaiCWdtm``%lC6Qjbt)lg2a0r$!T}r{d?P u%@*fOR>($cOZs2uH#SMDJ0t6RGuu1A?>+hhP&5!IJ*Z+jQAl~otNa%^Y;Sx3 diff --git a/lib/web/jquery/fileUploader/img/progressbar.gif b/lib/web/jquery/fileUploader/img/progressbar.gif deleted file mode 100644 index fbcce6bc9abfcc7893e65ef20b3e77ee16ec37b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3323 zcmcK7eNYp38VB%=tbvu|O{=v;j+Z$Bg`>zI2IVD3Ovp-%sA$2LilR;|zMv9BB_t%- zylmcIh`dQLinJh9P{0Ja6I28#3PquysCf3GB1bBEXgfV_qnx8-n07k#kNmNdnVrvm zpZz`0v#~Ih7`{0em<2RA0wa|v<E6{S8~2aZrj8WFj1(;!!!9dVjo0oUD~%bcOdanj z8o4YRyQ~|#rUL-L`z1Kl9&iD?#~m4zgw^D~#Zy9pg6(kFUxC;Uu-+B`>r`!U1uI~v z<M3{ck78?*b4+>F&O+zyfdOBoHdq{<WQ~m07FwPMxZ|1zcctx|l1n~$CSOo@Vs*+* zQ}cF?ogkAQRCxK$o=>xOf7$)m<JR)n6^<{?-${G;^Efw$jX#74MOi$QClD!w5~+r- z%sq(5<MIm&j^-Da$o0y+V<%4*9!J1ar@ksHs;)e9w)PC}oYB;9-U!uQsB64<=^ss3 zsxDnMwX`-t?Oh$$>N>lwcHgLVd-HT}JxYe94Gv(X_H__aHV~b7Ud4Pvk@t?84W?#& z+#WmNc5cUN<G_mhgeYE1%DjU&=1R#Y_Hs$VrCpD2hTn`bk}nQk2>oapyda#-P`2+n z-sGAbb$_$TW887}6BiJKaV$E-69{23pNeG2=_;8-CM9c*OiHOp|F9Igl_JQHqf)Y3 zhR7s(mQBh5ER~A&6^|p|OQqm<r*aV(P`KRk1VK8MNe*8?74l%5ge(;!A{bKS>d+(8 zZCb1qD*K}>!|B|YVuCsS=V0!N=?-)po(^$x*kptYX9<KdaWpEBQ?)RZJHsZ0jZp?n zp+mRx?s_eB*vgFJ8;b8G)~q)*=LdB515eJ;?lejiA20m{)p!Ft$cBveEm~-sPZgtd zX53u7{bx(-(1^UFLY_ODdb0Q589#1J_AGK?4R{3Kd(On+GC_pF<I^An6!92RAx*53 zDI^rN9M$FPi<Is*Md_Bdc?0W0QwL_>N)B^~VJ^d7-@(M1WK;9&Liw~wO?NN(E}be} z`e0?=)*y}@Xkgx6S$ZS(8d|ifzK_`x?=N$)pWk<iTG4I}ommwI);u#b70-38!Qqpj zZ0>;s0Ve?`qDX{%L@X0)6guz8Adh+qh(mq90aE=iAZp(dGccGHgmlkOke19p-dfci z@1Ni#x_B;&@l8icy*4roEXN?9&vh-w;n!Fp3;~Dn4#aOVi22tbo-KY@B1*TAgMsta zMh~68EXdvgJe$<9yOgn~E8aiQNo1$l`FUCI52J)nHW8+@|McSTe{t30@NpO<lP2KM z-hl+$gzUFO*6Ys`hkD;jgaBJROMk1>^cv#waY+68ew4oT={#AGoA?Je^k$f`&u}bW z<?d|%;2c((w(X0iW2HHfUcGUd7tId83Sx5((D>OjoRA_$utq5rspZ;5HXZvqE1#D) z5*M}9jPoq=-V*<<i^Y$ahT-~_5TNtU)%!ikqq99uj}g`isCPSFkeqYB-7bboeOzyB zd0Mb>cQuuK%yr=$XZl2k``40P4ol60hjb({{!c5Rtn3Urk4?uRRFNQuFGPhZnTBMO zu{W&|u4t53w>M}v(wtDAV!oHP(QY&~_X0qupII*-&GksTPf#SZ#4eaOCrG~hUblo4 zya(R){3rfyxiH2%l{iN;xS(G)OWOx8>UV9u+Vm_iN98oT20F}U!8utl4(lm=E)S6) zN~xM^Q?U;_!Ku4seH{bquy+4OfwlV{0C?tW&XteqJmP<|V)6eK9ey(~1Sbd1rgF1{ zd@&*xkriY}MS><}4DI}o3>d2jm74@fNpg-Vf(zPY?8nj=O8o$gp_gzr3~{MEs({T( z5+Ec<q&&=5N62lrc&lSa%BjbZ?^UJ$cUL7n#Jli%)PG<$41ruS1`(3PWRx$DP)gL{ zTH6lmsM+>MIErR!`<M%fuB}lI$cG{o=B{BpwhVBRuwCFVEW&mHshA2W$ug;qq@QWC zG#pD?IH4hQ=!qU1HU8F7Q!+7X`heSKeI1RNc9ClI)u{3KPPpFrNUS-q6%2AqWS${j z@KGuKdmaD$(X`}?n~z47^@_sWzuw+`eYC{;f_=0lot@34WZ|-1K$IrThEPz(qba3` zmXfQ^m+MrzqxoMFY?@e>wwLZHp{c_?{mEhe%dlbNH8E^nm+5|owEXTR;S2+hYWR^j zWB!qbQWumI=vg;ZQvO$8W9QeMX~YdqNb^K%y~T6@tCTOlSM-j*$OOSSZX6cRfzPb* zP-Q}8v|6Q&$hAFfGA(f5>_XzuqhFP@h(0x@%#tsExSB}v(zy6^qc>xW*XCVMBPKf` zF>gsuD~+eKuRP{tWLo#OoJ2?<WWy5d6v<I4q>fR@_0f5Olf}}Khc$ZhB$$3I7S9&n z^G{G0pQnju2Md}?zmbr<w5tb84zYra-<7?NWy%Dm;oVqhT-rn|6om377TY5y-LkNy zxRIDzumA7e68~h06EC^ypI;ct9i6!mWf_U)Pre=F4vY*E)-jtmb%{f#@4e<bBPVS- ze`Wca#dDa)6ORw3opzr#)%<$o)DvA#WACrsfMR@j7z7y{2DY}b)(Ww+M3o|nXq8eE zp$mT%31t0dcx$UpS5?PWG=5)+H0(kB*73b$4_ysg4%QT#nvcXCz-C`<Td!%;W#1DI zGALU@@}AA~ykZ7&GGp?acdS8w*-_bLcm+Y;fy7uLkA|`8e8F0aMUo-n??=TH=<o`u MR-;lzy8%o72mk46L;wH) diff --git a/lib/web/jquery/fileUploader/jquery.fileupload-audio.js b/lib/web/jquery/fileUploader/jquery.fileupload-audio.js deleted file mode 100644 index 1435ef20af2f6..0000000000000 --- a/lib/web/jquery/fileUploader/jquery.fileupload-audio.js +++ /dev/null @@ -1,101 +0,0 @@ -/* - * jQuery File Upload Audio Preview Plugin - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2013, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * https://opensource.org/licenses/MIT - */ - -/* global define, require */ - -(function (factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define(['jquery', 'jquery/fileUploader/vendor/blueimp-load-image/js/load-image', 'jquery/fileUploader/jquery.fileupload-process'], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS: - factory( - require('jquery'), - require('jquery/fileUploader/vendor/blueimp-load-image/js/load-image'), - require('jquery/fileUploader/jquery.fileupload-process') - ); - } else { - // Browser globals: - factory(window.jQuery, window.loadImage); - } -})(function ($, loadImage) { - 'use strict'; - - // Prepend to the default processQueue: - $.blueimp.fileupload.prototype.options.processQueue.unshift( - { - action: 'loadAudio', - // Use the action as prefix for the "@" options: - prefix: true, - fileTypes: '@', - maxFileSize: '@', - disabled: '@disableAudioPreview' - }, - { - action: 'setAudio', - name: '@audioPreviewName', - disabled: '@disableAudioPreview' - } - ); - - // The File Upload Audio Preview plugin extends the fileupload widget - // with audio preview functionality: - $.widget('blueimp.fileupload', $.blueimp.fileupload, { - options: { - // The regular expression for the types of audio files to load, - // matched against the file type: - loadAudioFileTypes: /^audio\/.*$/ - }, - - _audioElement: document.createElement('audio'), - - processActions: { - // Loads the audio file given via data.files and data.index - // as audio element if the browser supports playing it. - // Accepts the options fileTypes (regular expression) - // and maxFileSize (integer) to limit the files to load: - loadAudio: function (data, options) { - if (options.disabled) { - return data; - } - var file = data.files[data.index], - url, - audio; - if ( - this._audioElement.canPlayType && - this._audioElement.canPlayType(file.type) && - ($.type(options.maxFileSize) !== 'number' || - file.size <= options.maxFileSize) && - (!options.fileTypes || options.fileTypes.test(file.type)) - ) { - url = loadImage.createObjectURL(file); - if (url) { - audio = this._audioElement.cloneNode(false); - audio.src = url; - audio.controls = true; - data.audio = audio; - return data; - } - } - return data; - }, - - // Sets the audio element as a property of the file object: - setAudio: function (data, options) { - if (data.audio && !options.disabled) { - data.files[data.index][options.name || 'preview'] = data.audio; - } - return data; - } - } - }); -}); diff --git a/lib/web/jquery/fileUploader/jquery.fileupload-image.js b/lib/web/jquery/fileUploader/jquery.fileupload-image.js deleted file mode 100644 index 11c63c236247c..0000000000000 --- a/lib/web/jquery/fileUploader/jquery.fileupload-image.js +++ /dev/null @@ -1,346 +0,0 @@ -/* - * jQuery File Upload Image Preview & Resize Plugin - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2013, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * https://opensource.org/licenses/MIT - */ - -/* global define, require */ - -(function (factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define([ - 'jquery', - 'jquery/fileUploader/vendor/blueimp-load-image/js/load-image', - 'jquery/fileUploader/vendor/blueimp-load-image/js/load-image-meta', - 'jquery/fileUploader/vendor/blueimp-load-image/js/load-image-scale', - 'jquery/fileUploader/vendor/blueimp-load-image/js/load-image-exif', - 'jquery/fileUploader/vendor/blueimp-load-image/js/load-image-orientation', - 'jquery/fileUploader/vendor/blueimp-canvas-to-blob/js/canvas-to-blob', - 'jquery/fileUploader/jquery.fileupload-process' - ], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS: - factory( - require('jquery'), - require('jquery/fileUploader/vendor/blueimp-load-image/js/load-image'), - require('jquery/fileUploader/vendor/blueimp-load-image/js/load-image-meta'), - require('jquery/fileUploader/vendor/blueimp-load-image/js/load-image-scale'), - require('jquery/fileUploader/vendor/blueimp-load-image/js/load-image-exif'), - require('jquery/fileUploader/vendor/blueimp-load-image/js/load-image-orientation'), - require('jquery/fileUploader/vendor/blueimp-canvas-to-blob/js/canvas-to-blob'), - require('jquery/fileUploader/jquery.fileupload-process') - ); - } else { - // Browser globals: - factory(window.jQuery, window.loadImage); - } -})(function ($, loadImage) { - 'use strict'; - - // Prepend to the default processQueue: - $.blueimp.fileupload.prototype.options.processQueue.unshift( - { - action: 'loadImageMetaData', - maxMetaDataSize: '@', - disableImageHead: '@', - disableMetaDataParsers: '@', - disableExif: '@', - disableExifOffsets: '@', - includeExifTags: '@', - excludeExifTags: '@', - disableIptc: '@', - disableIptcOffsets: '@', - includeIptcTags: '@', - excludeIptcTags: '@', - disabled: '@disableImageMetaDataLoad' - }, - { - action: 'loadImage', - // Use the action as prefix for the "@" options: - prefix: true, - fileTypes: '@', - maxFileSize: '@', - noRevoke: '@', - disabled: '@disableImageLoad' - }, - { - action: 'resizeImage', - // Use "image" as prefix for the "@" options: - prefix: 'image', - maxWidth: '@', - maxHeight: '@', - minWidth: '@', - minHeight: '@', - crop: '@', - orientation: '@', - forceResize: '@', - disabled: '@disableImageResize' - }, - { - action: 'saveImage', - quality: '@imageQuality', - type: '@imageType', - disabled: '@disableImageResize' - }, - { - action: 'saveImageMetaData', - disabled: '@disableImageMetaDataSave' - }, - { - action: 'resizeImage', - // Use "preview" as prefix for the "@" options: - prefix: 'preview', - maxWidth: '@', - maxHeight: '@', - minWidth: '@', - minHeight: '@', - crop: '@', - orientation: '@', - thumbnail: '@', - canvas: '@', - disabled: '@disableImagePreview' - }, - { - action: 'setImage', - name: '@imagePreviewName', - disabled: '@disableImagePreview' - }, - { - action: 'deleteImageReferences', - disabled: '@disableImageReferencesDeletion' - } - ); - - // The File Upload Resize plugin extends the fileupload widget - // with image resize functionality: - $.widget('blueimp.fileupload', $.blueimp.fileupload, { - options: { - // The regular expression for the types of images to load: - // matched against the file type: - loadImageFileTypes: /^image\/(gif|jpeg|png|svg\+xml)$/, - // The maximum file size of images to load: - loadImageMaxFileSize: 10000000, // 10MB - // The maximum width of resized images: - imageMaxWidth: 1920, - // The maximum height of resized images: - imageMaxHeight: 1080, - // Defines the image orientation (1-8) or takes the orientation - // value from Exif data if set to true: - imageOrientation: true, - // Define if resized images should be cropped or only scaled: - imageCrop: false, - // Disable the resize image functionality by default: - disableImageResize: true, - // The maximum width of the preview images: - previewMaxWidth: 80, - // The maximum height of the preview images: - previewMaxHeight: 80, - // Defines the preview orientation (1-8) or takes the orientation - // value from Exif data if set to true: - previewOrientation: true, - // Create the preview using the Exif data thumbnail: - previewThumbnail: true, - // Define if preview images should be cropped or only scaled: - previewCrop: false, - // Define if preview images should be resized as canvas elements: - previewCanvas: true - }, - - processActions: { - // Loads the image given via data.files and data.index - // as img element, if the browser supports the File API. - // Accepts the options fileTypes (regular expression) - // and maxFileSize (integer) to limit the files to load: - loadImage: function (data, options) { - if (options.disabled) { - return data; - } - var that = this, - file = data.files[data.index], - // eslint-disable-next-line new-cap - dfd = $.Deferred(); - if ( - ($.type(options.maxFileSize) === 'number' && - file.size > options.maxFileSize) || - (options.fileTypes && !options.fileTypes.test(file.type)) || - !loadImage( - file, - function (img) { - if (img.src) { - data.img = img; - } - dfd.resolveWith(that, [data]); - }, - options - ) - ) { - return data; - } - return dfd.promise(); - }, - - // Resizes the image given as data.canvas or data.img - // and updates data.canvas or data.img with the resized image. - // Also stores the resized image as preview property. - // Accepts the options maxWidth, maxHeight, minWidth, - // minHeight, canvas and crop: - resizeImage: function (data, options) { - if (options.disabled || !(data.canvas || data.img)) { - return data; - } - // eslint-disable-next-line no-param-reassign - options = $.extend({ canvas: true }, options); - var that = this, - // eslint-disable-next-line new-cap - dfd = $.Deferred(), - img = (options.canvas && data.canvas) || data.img, - resolve = function (newImg) { - if ( - newImg && - (newImg.width !== img.width || - newImg.height !== img.height || - options.forceResize) - ) { - data[newImg.getContext ? 'canvas' : 'img'] = newImg; - } - data.preview = newImg; - dfd.resolveWith(that, [data]); - }, - thumbnail, - thumbnailBlob; - if (data.exif && options.thumbnail) { - thumbnail = data.exif.get('Thumbnail'); - thumbnailBlob = thumbnail && thumbnail.get('Blob'); - if (thumbnailBlob) { - options.orientation = data.exif.get('Orientation'); - loadImage(thumbnailBlob, resolve, options); - return dfd.promise(); - } - } - if (data.orientation) { - // Prevent orienting the same image twice: - delete options.orientation; - } else { - data.orientation = options.orientation || loadImage.orientation; - } - if (img) { - resolve(loadImage.scale(img, options, data)); - return dfd.promise(); - } - return data; - }, - - // Saves the processed image given as data.canvas - // inplace at data.index of data.files: - saveImage: function (data, options) { - if (!data.canvas || options.disabled) { - return data; - } - var that = this, - file = data.files[data.index], - // eslint-disable-next-line new-cap - dfd = $.Deferred(); - if (data.canvas.toBlob) { - data.canvas.toBlob( - function (blob) { - if (!blob.name) { - if (file.type === blob.type) { - blob.name = file.name; - } else if (file.name) { - blob.name = file.name.replace( - /\.\w+$/, - '.' + blob.type.substr(6) - ); - } - } - // Don't restore invalid meta data: - if (file.type !== blob.type) { - delete data.imageHead; - } - // Store the created blob at the position - // of the original file in the files list: - data.files[data.index] = blob; - dfd.resolveWith(that, [data]); - }, - options.type || file.type, - options.quality - ); - } else { - return data; - } - return dfd.promise(); - }, - - loadImageMetaData: function (data, options) { - if (options.disabled) { - return data; - } - var that = this, - // eslint-disable-next-line new-cap - dfd = $.Deferred(); - loadImage.parseMetaData( - data.files[data.index], - function (result) { - $.extend(data, result); - dfd.resolveWith(that, [data]); - }, - options - ); - return dfd.promise(); - }, - - saveImageMetaData: function (data, options) { - if ( - !( - data.imageHead && - data.canvas && - data.canvas.toBlob && - !options.disabled - ) - ) { - return data; - } - var that = this, - file = data.files[data.index], - // eslint-disable-next-line new-cap - dfd = $.Deferred(); - if (data.orientation === true && data.exifOffsets) { - // Reset Exif Orientation data: - loadImage.writeExifData(data.imageHead, data, 'Orientation', 1); - } - loadImage.replaceHead(file, data.imageHead, function (blob) { - blob.name = file.name; - data.files[data.index] = blob; - dfd.resolveWith(that, [data]); - }); - return dfd.promise(); - }, - - // Sets the resized version of the image as a property of the - // file object, must be called after "saveImage": - setImage: function (data, options) { - if (data.preview && !options.disabled) { - data.files[data.index][options.name || 'preview'] = data.preview; - } - return data; - }, - - deleteImageReferences: function (data, options) { - if (!options.disabled) { - delete data.img; - delete data.canvas; - delete data.preview; - delete data.imageHead; - } - return data; - } - } - }); -}); diff --git a/lib/web/jquery/fileUploader/jquery.fileupload-process.js b/lib/web/jquery/fileUploader/jquery.fileupload-process.js deleted file mode 100644 index a65ee91400161..0000000000000 --- a/lib/web/jquery/fileUploader/jquery.fileupload-process.js +++ /dev/null @@ -1,170 +0,0 @@ -/* - * jQuery File Upload Processing Plugin - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2012, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * https://opensource.org/licenses/MIT - */ - -/* global define, require */ - -(function (factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define(['jquery', 'jquery/fileUploader/jquery.fileupload'], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS: - factory(require('jquery'), require('jquery/fileUploader/jquery.fileupload')); - } else { - // Browser globals: - factory(window.jQuery); - } -})(function ($) { - 'use strict'; - - var originalAdd = $.blueimp.fileupload.prototype.options.add; - - // The File Upload Processing plugin extends the fileupload widget - // with file processing functionality: - $.widget('blueimp.fileupload', $.blueimp.fileupload, { - options: { - // The list of processing actions: - processQueue: [ - /* - { - action: 'log', - type: 'debug' - } - */ - ], - add: function (e, data) { - var $this = $(this); - data.process(function () { - return $this.fileupload('process', data); - }); - originalAdd.call(this, e, data); - } - }, - - processActions: { - /* - log: function (data, options) { - console[options.type]( - 'Processing "' + data.files[data.index].name + '"' - ); - } - */ - }, - - _processFile: function (data, originalData) { - var that = this, - // eslint-disable-next-line new-cap - dfd = $.Deferred().resolveWith(that, [data]), - chain = dfd.promise(); - this._trigger('process', null, data); - $.each(data.processQueue, function (i, settings) { - var func = function (data) { - if (originalData.errorThrown) { - // eslint-disable-next-line new-cap - return $.Deferred().rejectWith(that, [originalData]).promise(); - } - return that.processActions[settings.action].call( - that, - data, - settings - ); - }; - chain = chain[that._promisePipe](func, settings.always && func); - }); - chain - .done(function () { - that._trigger('processdone', null, data); - that._trigger('processalways', null, data); - }) - .fail(function () { - that._trigger('processfail', null, data); - that._trigger('processalways', null, data); - }); - return chain; - }, - - // Replaces the settings of each processQueue item that - // are strings starting with an "@", using the remaining - // substring as key for the option map, - // e.g. "@autoUpload" is replaced with options.autoUpload: - _transformProcessQueue: function (options) { - var processQueue = []; - $.each(options.processQueue, function () { - var settings = {}, - action = this.action, - prefix = this.prefix === true ? action : this.prefix; - $.each(this, function (key, value) { - if ($.type(value) === 'string' && value.charAt(0) === '@') { - settings[key] = - options[ - value.slice(1) || - (prefix - ? prefix + key.charAt(0).toUpperCase() + key.slice(1) - : key) - ]; - } else { - settings[key] = value; - } - }); - processQueue.push(settings); - }); - options.processQueue = processQueue; - }, - - // Returns the number of files currently in the processing queue: - processing: function () { - return this._processing; - }, - - // Processes the files given as files property of the data parameter, - // returns a Promise object that allows to bind callbacks: - process: function (data) { - var that = this, - options = $.extend({}, this.options, data); - if (options.processQueue && options.processQueue.length) { - this._transformProcessQueue(options); - if (this._processing === 0) { - this._trigger('processstart'); - } - $.each(data.files, function (index) { - var opts = index ? $.extend({}, options) : options, - func = function () { - if (data.errorThrown) { - // eslint-disable-next-line new-cap - return $.Deferred().rejectWith(that, [data]).promise(); - } - return that._processFile(opts, data); - }; - opts.index = index; - that._processing += 1; - that._processingQueue = that._processingQueue[that._promisePipe]( - func, - func - ).always(function () { - that._processing -= 1; - if (that._processing === 0) { - that._trigger('processstop'); - } - }); - }); - } - return this._processingQueue; - }, - - _create: function () { - this._super(); - this._processing = 0; - // eslint-disable-next-line new-cap - this._processingQueue = $.Deferred().resolveWith(this).promise(); - } - }); -}); diff --git a/lib/web/jquery/fileUploader/jquery.fileupload-ui.js b/lib/web/jquery/fileUploader/jquery.fileupload-ui.js deleted file mode 100644 index a4665f8392fe0..0000000000000 --- a/lib/web/jquery/fileUploader/jquery.fileupload-ui.js +++ /dev/null @@ -1,759 +0,0 @@ -/* - * jQuery File Upload User Interface Plugin - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2010, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * https://opensource.org/licenses/MIT - */ - -/* global define, require */ - -(function (factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define([ - 'jquery', - 'jquery/fileUploader/vendor/blueimp-tmpl/js/tmpl', - 'jquery/fileUploader/jquery.fileupload-image', - 'jquery/fileUploader/jquery.fileupload-audio', - 'jquery/fileUploader/jquery.fileupload-video', - 'jquery/fileUploader/jquery.fileupload-validate' - ], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS: - factory( - require('jquery'), - require('jquery/fileUploader/vendor/blueimp-tmpl/js/tmpl'), - require('jquery/fileUploader/jquery.fileupload-image'), - require('jquery/fileUploader/jquery.fileupload-audio'), - require('jquery/fileUploader/jquery.fileupload-video'), - require('jquery/fileUploader/jquery.fileupload-validate') - ); - } else { - // Browser globals: - factory(window.jQuery, window.tmpl); - } -})(function ($, tmpl) { - 'use strict'; - - $.blueimp.fileupload.prototype._specialOptions.push( - 'filesContainer', - 'uploadTemplateId', - 'downloadTemplateId' - ); - - // The UI version extends the file upload widget - // and adds complete user interface interaction: - $.widget('blueimp.fileupload', $.blueimp.fileupload, { - options: { - // By default, files added to the widget are uploaded as soon - // as the user clicks on the start buttons. To enable automatic - // uploads, set the following option to true: - autoUpload: false, - // The class to show/hide UI elements: - showElementClass: 'in', - // The ID of the upload template: - uploadTemplateId: 'template-upload', - // The ID of the download template: - downloadTemplateId: 'template-download', - // The container for the list of files. If undefined, it is set to - // an element with class "files" inside of the widget element: - filesContainer: undefined, - // By default, files are appended to the files container. - // Set the following option to true, to prepend files instead: - prependFiles: false, - // The expected data type of the upload response, sets the dataType - // option of the $.ajax upload requests: - dataType: 'json', - - // Error and info messages: - messages: { - unknownError: 'Unknown error' - }, - - // Function returning the current number of files, - // used by the maxNumberOfFiles validation: - getNumberOfFiles: function () { - return this.filesContainer.children().not('.processing').length; - }, - - // Callback to retrieve the list of files from the server response: - getFilesFromResponse: function (data) { - if (data.result && $.isArray(data.result.files)) { - return data.result.files; - } - return []; - }, - - // The add callback is invoked as soon as files are added to the fileupload - // widget (via file input selection, drag & drop or add API call). - // See the basic file upload widget for more information: - add: function (e, data) { - if (e.isDefaultPrevented()) { - return false; - } - var $this = $(this), - that = $this.data('blueimp-fileupload') || $this.data('fileupload'), - options = that.options; - data.context = that - ._renderUpload(data.files) - .data('data', data) - .addClass('processing'); - options.filesContainer[options.prependFiles ? 'prepend' : 'append']( - data.context - ); - that._forceReflow(data.context); - that._transition(data.context); - data - .process(function () { - return $this.fileupload('process', data); - }) - .always(function () { - data.context - .each(function (index) { - $(this) - .find('.size') - .text(that._formatFileSize(data.files[index].size)); - }) - .removeClass('processing'); - that._renderPreviews(data); - }) - .done(function () { - data.context.find('.edit,.start').prop('disabled', false); - if ( - that._trigger('added', e, data) !== false && - (options.autoUpload || data.autoUpload) && - data.autoUpload !== false - ) { - data.submit(); - } - }) - .fail(function () { - if (data.files.error) { - data.context.each(function (index) { - var error = data.files[index].error; - if (error) { - $(this).find('.error').text(error); - } - }); - } - }); - }, - // Callback for the start of each file upload request: - send: function (e, data) { - if (e.isDefaultPrevented()) { - return false; - } - var that = - $(this).data('blueimp-fileupload') || $(this).data('fileupload'); - if ( - data.context && - data.dataType && - data.dataType.substr(0, 6) === 'iframe' - ) { - // Iframe Transport does not support progress events. - // In lack of an indeterminate progress bar, we set - // the progress to 100%, showing the full animated bar: - data.context - .find('.progress') - .addClass(!$.support.transition && 'progress-animated') - .attr('aria-valuenow', 100) - .children() - .first() - .css('width', '100%'); - } - return that._trigger('sent', e, data); - }, - // Callback for successful uploads: - done: function (e, data) { - if (e.isDefaultPrevented()) { - return false; - } - var that = - $(this).data('blueimp-fileupload') || $(this).data('fileupload'), - getFilesFromResponse = - data.getFilesFromResponse || that.options.getFilesFromResponse, - files = getFilesFromResponse(data), - template, - deferred; - if (data.context) { - data.context.each(function (index) { - var file = files[index] || { error: 'Empty file upload result' }; - deferred = that._addFinishedDeferreds(); - that._transition($(this)).done(function () { - var node = $(this); - template = that._renderDownload([file]).replaceAll(node); - that._forceReflow(template); - that._transition(template).done(function () { - data.context = $(this); - that._trigger('completed', e, data); - that._trigger('finished', e, data); - deferred.resolve(); - }); - }); - }); - } else { - template = that - ._renderDownload(files) - [that.options.prependFiles ? 'prependTo' : 'appendTo']( - that.options.filesContainer - ); - that._forceReflow(template); - deferred = that._addFinishedDeferreds(); - that._transition(template).done(function () { - data.context = $(this); - that._trigger('completed', e, data); - that._trigger('finished', e, data); - deferred.resolve(); - }); - } - }, - // Callback for failed (abort or error) uploads: - fail: function (e, data) { - if (e.isDefaultPrevented()) { - return false; - } - var that = - $(this).data('blueimp-fileupload') || $(this).data('fileupload'), - template, - deferred; - if (data.context) { - data.context.each(function (index) { - if (data.errorThrown !== 'abort') { - var file = data.files[index]; - file.error = - file.error || data.errorThrown || data.i18n('unknownError'); - deferred = that._addFinishedDeferreds(); - that._transition($(this)).done(function () { - var node = $(this); - template = that._renderDownload([file]).replaceAll(node); - that._forceReflow(template); - that._transition(template).done(function () { - data.context = $(this); - that._trigger('failed', e, data); - that._trigger('finished', e, data); - deferred.resolve(); - }); - }); - } else { - deferred = that._addFinishedDeferreds(); - that._transition($(this)).done(function () { - $(this).remove(); - that._trigger('failed', e, data); - that._trigger('finished', e, data); - deferred.resolve(); - }); - } - }); - } else if (data.errorThrown !== 'abort') { - data.context = that - ._renderUpload(data.files) - [that.options.prependFiles ? 'prependTo' : 'appendTo']( - that.options.filesContainer - ) - .data('data', data); - that._forceReflow(data.context); - deferred = that._addFinishedDeferreds(); - that._transition(data.context).done(function () { - data.context = $(this); - that._trigger('failed', e, data); - that._trigger('finished', e, data); - deferred.resolve(); - }); - } else { - that._trigger('failed', e, data); - that._trigger('finished', e, data); - that._addFinishedDeferreds().resolve(); - } - }, - // Callback for upload progress events: - progress: function (e, data) { - if (e.isDefaultPrevented()) { - return false; - } - var progress = Math.floor((data.loaded / data.total) * 100); - if (data.context) { - data.context.each(function () { - $(this) - .find('.progress') - .attr('aria-valuenow', progress) - .children() - .first() - .css('width', progress + '%'); - }); - } - }, - // Callback for global upload progress events: - progressall: function (e, data) { - if (e.isDefaultPrevented()) { - return false; - } - var $this = $(this), - progress = Math.floor((data.loaded / data.total) * 100), - globalProgressNode = $this.find('.fileupload-progress'), - extendedProgressNode = globalProgressNode.find('.progress-extended'); - if (extendedProgressNode.length) { - extendedProgressNode.html( - ( - $this.data('blueimp-fileupload') || $this.data('fileupload') - )._renderExtendedProgress(data) - ); - } - globalProgressNode - .find('.progress') - .attr('aria-valuenow', progress) - .children() - .first() - .css('width', progress + '%'); - }, - // Callback for uploads start, equivalent to the global ajaxStart event: - start: function (e) { - if (e.isDefaultPrevented()) { - return false; - } - var that = - $(this).data('blueimp-fileupload') || $(this).data('fileupload'); - that._resetFinishedDeferreds(); - that - ._transition($(this).find('.fileupload-progress')) - .done(function () { - that._trigger('started', e); - }); - }, - // Callback for uploads stop, equivalent to the global ajaxStop event: - stop: function (e) { - if (e.isDefaultPrevented()) { - return false; - } - var that = - $(this).data('blueimp-fileupload') || $(this).data('fileupload'), - deferred = that._addFinishedDeferreds(); - $.when.apply($, that._getFinishedDeferreds()).done(function () { - that._trigger('stopped', e); - }); - that - ._transition($(this).find('.fileupload-progress')) - .done(function () { - $(this) - .find('.progress') - .attr('aria-valuenow', '0') - .children() - .first() - .css('width', '0%'); - $(this).find('.progress-extended').html(' '); - deferred.resolve(); - }); - }, - processstart: function (e) { - if (e.isDefaultPrevented()) { - return false; - } - $(this).addClass('fileupload-processing'); - }, - processstop: function (e) { - if (e.isDefaultPrevented()) { - return false; - } - $(this).removeClass('fileupload-processing'); - }, - // Callback for file deletion: - destroy: function (e, data) { - if (e.isDefaultPrevented()) { - return false; - } - var that = - $(this).data('blueimp-fileupload') || $(this).data('fileupload'), - removeNode = function () { - that._transition(data.context).done(function () { - $(this).remove(); - that._trigger('destroyed', e, data); - }); - }; - if (data.url) { - data.dataType = data.dataType || that.options.dataType; - $.ajax(data) - .done(removeNode) - .fail(function () { - that._trigger('destroyfailed', e, data); - }); - } else { - removeNode(); - } - } - }, - - _resetFinishedDeferreds: function () { - this._finishedUploads = []; - }, - - _addFinishedDeferreds: function (deferred) { - // eslint-disable-next-line new-cap - var promise = deferred || $.Deferred(); - this._finishedUploads.push(promise); - return promise; - }, - - _getFinishedDeferreds: function () { - return this._finishedUploads; - }, - - // Link handler, that allows to download files - // by drag & drop of the links to the desktop: - _enableDragToDesktop: function () { - var link = $(this), - url = link.prop('href'), - name = link.prop('download'), - type = 'application/octet-stream'; - link.on('dragstart', function (e) { - try { - e.originalEvent.dataTransfer.setData( - 'DownloadURL', - [type, name, url].join(':') - ); - } catch (ignore) { - // Ignore exceptions - } - }); - }, - - _formatFileSize: function (bytes) { - if (typeof bytes !== 'number') { - return ''; - } - if (bytes >= 1000000000) { - return (bytes / 1000000000).toFixed(2) + ' GB'; - } - if (bytes >= 1000000) { - return (bytes / 1000000).toFixed(2) + ' MB'; - } - return (bytes / 1000).toFixed(2) + ' KB'; - }, - - _formatBitrate: function (bits) { - if (typeof bits !== 'number') { - return ''; - } - if (bits >= 1000000000) { - return (bits / 1000000000).toFixed(2) + ' Gbit/s'; - } - if (bits >= 1000000) { - return (bits / 1000000).toFixed(2) + ' Mbit/s'; - } - if (bits >= 1000) { - return (bits / 1000).toFixed(2) + ' kbit/s'; - } - return bits.toFixed(2) + ' bit/s'; - }, - - _formatTime: function (seconds) { - var date = new Date(seconds * 1000), - days = Math.floor(seconds / 86400); - days = days ? days + 'd ' : ''; - return ( - days + - ('0' + date.getUTCHours()).slice(-2) + - ':' + - ('0' + date.getUTCMinutes()).slice(-2) + - ':' + - ('0' + date.getUTCSeconds()).slice(-2) - ); - }, - - _formatPercentage: function (floatValue) { - return (floatValue * 100).toFixed(2) + ' %'; - }, - - _renderExtendedProgress: function (data) { - return ( - this._formatBitrate(data.bitrate) + - ' | ' + - this._formatTime(((data.total - data.loaded) * 8) / data.bitrate) + - ' | ' + - this._formatPercentage(data.loaded / data.total) + - ' | ' + - this._formatFileSize(data.loaded) + - ' / ' + - this._formatFileSize(data.total) - ); - }, - - _renderTemplate: function (func, files) { - if (!func) { - return $(); - } - var result = func({ - files: files, - formatFileSize: this._formatFileSize, - options: this.options - }); - if (result instanceof $) { - return result; - } - return $(this.options.templatesContainer).html(result).children(); - }, - - _renderPreviews: function (data) { - data.context.find('.preview').each(function (index, elm) { - $(elm).empty().append(data.files[index].preview); - }); - }, - - _renderUpload: function (files) { - return this._renderTemplate(this.options.uploadTemplate, files); - }, - - _renderDownload: function (files) { - return this._renderTemplate(this.options.downloadTemplate, files) - .find('a[download]') - .each(this._enableDragToDesktop) - .end(); - }, - - _editHandler: function (e) { - e.preventDefault(); - if (!this.options.edit) return; - var that = this, - button = $(e.currentTarget), - template = button.closest('.template-upload'), - data = template.data('data'), - index = button.data().index; - this.options.edit(data.files[index]).then(function (file) { - if (!file) return; - data.files[index] = file; - data.context.addClass('processing'); - template.find('.edit,.start').prop('disabled', true); - $(that.element) - .fileupload('process', data) - .always(function () { - template - .find('.size') - .text(that._formatFileSize(data.files[index].size)); - data.context.removeClass('processing'); - that._renderPreviews(data); - }) - .done(function () { - template.find('.edit,.start').prop('disabled', false); - }) - .fail(function () { - template.find('.edit').prop('disabled', false); - var error = data.files[index].error; - if (error) { - template.find('.error').text(error); - } - }); - }); - }, - - _startHandler: function (e) { - e.preventDefault(); - var button = $(e.currentTarget), - template = button.closest('.template-upload'), - data = template.data('data'); - button.prop('disabled', true); - if (data && data.submit) { - data.submit(); - } - }, - - _cancelHandler: function (e) { - e.preventDefault(); - var template = $(e.currentTarget).closest( - '.template-upload,.template-download' - ), - data = template.data('data') || {}; - data.context = data.context || template; - if (data.abort) { - data.abort(); - } else { - data.errorThrown = 'abort'; - this._trigger('fail', e, data); - } - }, - - _deleteHandler: function (e) { - e.preventDefault(); - var button = $(e.currentTarget); - this._trigger( - 'destroy', - e, - $.extend( - { - context: button.closest('.template-download'), - type: 'DELETE' - }, - button.data() - ) - ); - }, - - _forceReflow: function (node) { - return $.support.transition && node.length && node[0].offsetWidth; - }, - - _transition: function (node) { - // eslint-disable-next-line new-cap - var dfd = $.Deferred(); - if ( - $.support.transition && - node.hasClass('fade') && - node.is(':visible') - ) { - var transitionEndHandler = function (e) { - // Make sure we don't respond to other transition events - // in the container element, e.g. from button elements: - if (e.target === node[0]) { - node.off($.support.transition.end, transitionEndHandler); - dfd.resolveWith(node); - } - }; - node - .on($.support.transition.end, transitionEndHandler) - .toggleClass(this.options.showElementClass); - } else { - node.toggleClass(this.options.showElementClass); - dfd.resolveWith(node); - } - return dfd; - }, - - _initButtonBarEventHandlers: function () { - var fileUploadButtonBar = this.element.find('.fileupload-buttonbar'), - filesList = this.options.filesContainer; - this._on(fileUploadButtonBar.find('.start'), { - click: function (e) { - e.preventDefault(); - filesList.find('.start').trigger('click'); - } - }); - this._on(fileUploadButtonBar.find('.cancel'), { - click: function (e) { - e.preventDefault(); - filesList.find('.cancel').trigger('click'); - } - }); - this._on(fileUploadButtonBar.find('.delete'), { - click: function (e) { - e.preventDefault(); - filesList - .find('.toggle:checked') - .closest('.template-download') - .find('.delete') - .trigger('click'); - fileUploadButtonBar.find('.toggle').prop('checked', false); - } - }); - this._on(fileUploadButtonBar.find('.toggle'), { - change: function (e) { - filesList - .find('.toggle') - .prop('checked', $(e.currentTarget).is(':checked')); - } - }); - }, - - _destroyButtonBarEventHandlers: function () { - this._off( - this.element - .find('.fileupload-buttonbar') - .find('.start, .cancel, .delete'), - 'click' - ); - this._off(this.element.find('.fileupload-buttonbar .toggle'), 'change.'); - }, - - _initEventHandlers: function () { - this._super(); - this._on(this.options.filesContainer, { - 'click .edit': this._editHandler, - 'click .start': this._startHandler, - 'click .cancel': this._cancelHandler, - 'click .delete': this._deleteHandler - }); - this._initButtonBarEventHandlers(); - }, - - _destroyEventHandlers: function () { - this._destroyButtonBarEventHandlers(); - this._off(this.options.filesContainer, 'click'); - this._super(); - }, - - _enableFileInputButton: function () { - this.element - .find('.fileinput-button input') - .prop('disabled', false) - .parent() - .removeClass('disabled'); - }, - - _disableFileInputButton: function () { - this.element - .find('.fileinput-button input') - .prop('disabled', true) - .parent() - .addClass('disabled'); - }, - - _initTemplates: function () { - var options = this.options; - options.templatesContainer = this.document[0].createElement( - options.filesContainer.prop('nodeName') - ); - if (tmpl) { - if (options.uploadTemplateId) { - options.uploadTemplate = tmpl(options.uploadTemplateId); - } - if (options.downloadTemplateId) { - options.downloadTemplate = tmpl(options.downloadTemplateId); - } - } - }, - - _initFilesContainer: function () { - var options = this.options; - if (options.filesContainer === undefined) { - options.filesContainer = this.element.find('.files'); - } else if (!(options.filesContainer instanceof $)) { - options.filesContainer = $(options.filesContainer); - } - }, - - _initSpecialOptions: function () { - this._super(); - this._initFilesContainer(); - // this._initTemplates(); - }, - - _create: function () { - this._super(); - this._resetFinishedDeferreds(); - if (!$.support.fileInput) { - this._disableFileInputButton(); - } - }, - - enable: function () { - var wasDisabled = false; - if (this.options.disabled) { - wasDisabled = true; - } - this._super(); - if (wasDisabled) { - this.element.find('input, button').prop('disabled', false); - this._enableFileInputButton(); - } - }, - - disable: function () { - if (!this.options.disabled) { - this.element.find('input, button').prop('disabled', true); - this._disableFileInputButton(); - } - this._super(); - } - }); -}); diff --git a/lib/web/jquery/fileUploader/jquery.fileupload-validate.js b/lib/web/jquery/fileUploader/jquery.fileupload-validate.js deleted file mode 100644 index d23e0f4a24ef7..0000000000000 --- a/lib/web/jquery/fileUploader/jquery.fileupload-validate.js +++ /dev/null @@ -1,119 +0,0 @@ -/* - * jQuery File Upload Validation Plugin - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2013, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * https://opensource.org/licenses/MIT - */ - -/* global define, require */ - -(function (factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define(['jquery', 'jquery/fileUploader/jquery.fileupload-process'], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS: - factory(require('jquery'), require('jquery/fileUploader/jquery.fileupload-process')); - } else { - // Browser globals: - factory(window.jQuery); - } -})(function ($) { - 'use strict'; - - // Append to the default processQueue: - $.blueimp.fileupload.prototype.options.processQueue.push({ - action: 'validate', - // Always trigger this action, - // even if the previous action was rejected: - always: true, - // Options taken from the global options map: - acceptFileTypes: '@', - maxFileSize: '@', - minFileSize: '@', - maxNumberOfFiles: '@', - disabled: '@disableValidation' - }); - - // The File Upload Validation plugin extends the fileupload widget - // with file validation functionality: - $.widget('blueimp.fileupload', $.blueimp.fileupload, { - options: { - /* - // The regular expression for allowed file types, matches - // against either file type or file name: - acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i, - // The maximum allowed file size in bytes: - maxFileSize: 10000000, // 10 MB - // The minimum allowed file size in bytes: - minFileSize: undefined, // No minimal file size - // The limit of files to be uploaded: - maxNumberOfFiles: 10, - */ - - // Function returning the current number of files, - // has to be overridden for maxNumberOfFiles validation: - getNumberOfFiles: $.noop, - - // Error and info messages: - messages: { - maxNumberOfFiles: 'Maximum number of files exceeded', - acceptFileTypes: 'File type not allowed', - maxFileSize: 'File is too large', - minFileSize: 'File is too small' - } - }, - - processActions: { - validate: function (data, options) { - if (options.disabled) { - return data; - } - // eslint-disable-next-line new-cap - var dfd = $.Deferred(), - settings = this.options, - file = data.files[data.index], - fileSize; - if (options.minFileSize || options.maxFileSize) { - fileSize = file.size; - } - if ( - $.type(options.maxNumberOfFiles) === 'number' && - (settings.getNumberOfFiles() || 0) + data.files.length > - options.maxNumberOfFiles - ) { - file.error = settings.i18n('maxNumberOfFiles'); - } else if ( - options.acceptFileTypes && - !( - options.acceptFileTypes.test(file.type) || - options.acceptFileTypes.test(file.name) - ) - ) { - file.error = settings.i18n('acceptFileTypes'); - } else if (fileSize > options.maxFileSize) { - file.error = settings.i18n('maxFileSize'); - } else if ( - $.type(fileSize) === 'number' && - fileSize < options.minFileSize - ) { - file.error = settings.i18n('minFileSize'); - } else { - delete file.error; - } - if (file.error || data.files.error) { - data.files.error = true; - dfd.rejectWith(this, [data]); - } else { - dfd.resolveWith(this, [data]); - } - return dfd.promise(); - } - } - }); -}); diff --git a/lib/web/jquery/fileUploader/jquery.fileupload-video.js b/lib/web/jquery/fileUploader/jquery.fileupload-video.js deleted file mode 100644 index bf247f38280a5..0000000000000 --- a/lib/web/jquery/fileUploader/jquery.fileupload-video.js +++ /dev/null @@ -1,101 +0,0 @@ -/* - * jQuery File Upload Video Preview Plugin - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2013, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * https://opensource.org/licenses/MIT - */ - -/* global define, require */ - -(function (factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define(['jquery', 'jquery/fileUploader/vendor/blueimp-load-image/js/load-image', 'jquery/fileUploader/jquery.fileupload-process'], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS: - factory( - require('jquery'), - require('jquery/fileUploader/vendor/blueimp-load-image/js/load-image'), - require('jquery/fileUploader/jquery.fileupload-process') - ); - } else { - // Browser globals: - factory(window.jQuery, window.loadImage); - } -})(function ($, loadImage) { - 'use strict'; - - // Prepend to the default processQueue: - $.blueimp.fileupload.prototype.options.processQueue.unshift( - { - action: 'loadVideo', - // Use the action as prefix for the "@" options: - prefix: true, - fileTypes: '@', - maxFileSize: '@', - disabled: '@disableVideoPreview' - }, - { - action: 'setVideo', - name: '@videoPreviewName', - disabled: '@disableVideoPreview' - } - ); - - // The File Upload Video Preview plugin extends the fileupload widget - // with video preview functionality: - $.widget('blueimp.fileupload', $.blueimp.fileupload, { - options: { - // The regular expression for the types of video files to load, - // matched against the file type: - loadVideoFileTypes: /^video\/.*$/ - }, - - _videoElement: document.createElement('video'), - - processActions: { - // Loads the video file given via data.files and data.index - // as video element if the browser supports playing it. - // Accepts the options fileTypes (regular expression) - // and maxFileSize (integer) to limit the files to load: - loadVideo: function (data, options) { - if (options.disabled) { - return data; - } - var file = data.files[data.index], - url, - video; - if ( - this._videoElement.canPlayType && - this._videoElement.canPlayType(file.type) && - ($.type(options.maxFileSize) !== 'number' || - file.size <= options.maxFileSize) && - (!options.fileTypes || options.fileTypes.test(file.type)) - ) { - url = loadImage.createObjectURL(file); - if (url) { - video = this._videoElement.cloneNode(false); - video.src = url; - video.controls = true; - data.video = video; - return data; - } - } - return data; - }, - - // Sets the video element as a property of the file object: - setVideo: function (data, options) { - if (data.video && !options.disabled) { - data.files[data.index][options.name || 'preview'] = data.video; - } - return data; - } - } - }); -}); diff --git a/lib/web/jquery/fileUploader/jquery.fileupload.js b/lib/web/jquery/fileUploader/jquery.fileupload.js deleted file mode 100644 index 48e836e91c122..0000000000000 --- a/lib/web/jquery/fileUploader/jquery.fileupload.js +++ /dev/null @@ -1,1604 +0,0 @@ -/* - * jQuery File Upload Plugin - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2010, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * https://opensource.org/licenses/MIT - */ - -/* global define, require */ -/* eslint-disable new-cap */ - -(function (factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define(['jquery', 'jquery/fileUploader/vendor/jquery.ui.widget'], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS: - factory(require('jquery'), require('jquery/fileUploader/vendor/jquery.ui.widget')); - } else { - // Browser globals: - factory(window.jQuery); - } -})(function ($) { - 'use strict'; - - // Detect file input support, based on - // https://viljamis.com/2012/file-upload-support-on-mobile/ - $.support.fileInput = !( - new RegExp( - // Handle devices which give false positives for the feature detection: - '(Android (1\\.[0156]|2\\.[01]))' + - '|(Windows Phone (OS 7|8\\.0))|(XBLWP)|(ZuneWP)|(WPDesktop)' + - '|(w(eb)?OSBrowser)|(webOS)' + - '|(Kindle/(1\\.0|2\\.[05]|3\\.0))' - ).test(window.navigator.userAgent) || - // Feature detection for all other devices: - $('<input type="file"/>').prop('disabled') - ); - - // The FileReader API is not actually used, but works as feature detection, - // as some Safari versions (5?) support XHR file uploads via the FormData API, - // but not non-multipart XHR file uploads. - // window.XMLHttpRequestUpload is not available on IE10, so we check for - // window.ProgressEvent instead to detect XHR2 file upload capability: - $.support.xhrFileUpload = !!(window.ProgressEvent && window.FileReader); - $.support.xhrFormDataFileUpload = !!window.FormData; - - // Detect support for Blob slicing (required for chunked uploads): - $.support.blobSlice = - window.Blob && - (Blob.prototype.slice || - Blob.prototype.webkitSlice || - Blob.prototype.mozSlice); - - /** - * Helper function to create drag handlers for dragover/dragenter/dragleave - * - * @param {string} type Event type - * @returns {Function} Drag handler - */ - function getDragHandler(type) { - var isDragOver = type === 'dragover'; - return function (e) { - e.dataTransfer = e.originalEvent && e.originalEvent.dataTransfer; - var dataTransfer = e.dataTransfer; - if ( - dataTransfer && - $.inArray('Files', dataTransfer.types) !== -1 && - this._trigger(type, $.Event(type, { delegatedEvent: e })) !== false - ) { - e.preventDefault(); - if (isDragOver) { - dataTransfer.dropEffect = 'copy'; - } - } - }; - } - - // The fileupload widget listens for change events on file input fields defined - // via fileInput setting and paste or drop events of the given dropZone. - // In addition to the default jQuery Widget methods, the fileupload widget - // exposes the "add" and "send" methods, to add or directly send files using - // the fileupload API. - // By default, files added via file input selection, paste, drag & drop or - // "add" method are uploaded immediately, but it is possible to override - // the "add" callback option to queue file uploads. - $.widget('blueimp.fileupload', { - options: { - // The drop target element(s), by the default the complete document. - // Set to null to disable drag & drop support: - dropZone: $(document), - // The paste target element(s), by the default undefined. - // Set to a DOM node or jQuery object to enable file pasting: - pasteZone: undefined, - // The file input field(s), that are listened to for change events. - // If undefined, it is set to the file input fields inside - // of the widget element on plugin initialization. - // Set to null to disable the change listener. - fileInput: undefined, - // By default, the file input field is replaced with a clone after - // each input field change event. This is required for iframe transport - // queues and allows change events to be fired for the same file - // selection, but can be disabled by setting the following option to false: - replaceFileInput: true, - // The parameter name for the file form data (the request argument name). - // If undefined or empty, the name property of the file input field is - // used, or "files[]" if the file input name property is also empty, - // can be a string or an array of strings: - paramName: undefined, - // By default, each file of a selection is uploaded using an individual - // request for XHR type uploads. Set to false to upload file - // selections in one request each: - singleFileUploads: true, - // To limit the number of files uploaded with one XHR request, - // set the following option to an integer greater than 0: - limitMultiFileUploads: undefined, - // The following option limits the number of files uploaded with one - // XHR request to keep the request size under or equal to the defined - // limit in bytes: - limitMultiFileUploadSize: undefined, - // Multipart file uploads add a number of bytes to each uploaded file, - // therefore the following option adds an overhead for each file used - // in the limitMultiFileUploadSize configuration: - limitMultiFileUploadSizeOverhead: 512, - // Set the following option to true to issue all file upload requests - // in a sequential order: - sequentialUploads: false, - // To limit the number of concurrent uploads, - // set the following option to an integer greater than 0: - limitConcurrentUploads: undefined, - // Set the following option to true to force iframe transport uploads: - forceIframeTransport: false, - // Set the following option to the location of a redirect url on the - // origin server, for cross-domain iframe transport uploads: - redirect: undefined, - // The parameter name for the redirect url, sent as part of the form - // data and set to 'redirect' if this option is empty: - redirectParamName: undefined, - // Set the following option to the location of a postMessage window, - // to enable postMessage transport uploads: - postMessage: undefined, - // By default, XHR file uploads are sent as multipart/form-data. - // The iframe transport is always using multipart/form-data. - // Set to false to enable non-multipart XHR uploads: - multipart: true, - // To upload large files in smaller chunks, set the following option - // to a preferred maximum chunk size. If set to 0, null or undefined, - // or the browser does not support the required Blob API, files will - // be uploaded as a whole. - maxChunkSize: undefined, - // When a non-multipart upload or a chunked multipart upload has been - // aborted, this option can be used to resume the upload by setting - // it to the size of the already uploaded bytes. This option is most - // useful when modifying the options object inside of the "add" or - // "send" callbacks, as the options are cloned for each file upload. - uploadedBytes: undefined, - // By default, failed (abort or error) file uploads are removed from the - // global progress calculation. Set the following option to false to - // prevent recalculating the global progress data: - recalculateProgress: true, - // Interval in milliseconds to calculate and trigger progress events: - progressInterval: 100, - // Interval in milliseconds to calculate progress bitrate: - bitrateInterval: 500, - // By default, uploads are started automatically when adding files: - autoUpload: true, - // By default, duplicate file names are expected to be handled on - // the server-side. If this is not possible (e.g. when uploading - // files directly to Amazon S3), the following option can be set to - // an empty object or an object mapping existing filenames, e.g.: - // { "image.jpg": true, "image (1).jpg": true } - // If it is set, all files will be uploaded with unique filenames, - // adding increasing number suffixes if necessary, e.g.: - // "image (2).jpg" - uniqueFilenames: undefined, - - // Error and info messages: - messages: { - uploadedBytes: 'Uploaded bytes exceed file size' - }, - - // Translation function, gets the message key to be translated - // and an object with context specific data as arguments: - i18n: function (message, context) { - // eslint-disable-next-line no-param-reassign - message = this.messages[message] || message.toString(); - if (context) { - $.each(context, function (key, value) { - // eslint-disable-next-line no-param-reassign - message = message.replace('{' + key + '}', value); - }); - } - return message; - }, - - // Additional form data to be sent along with the file uploads can be set - // using this option, which accepts an array of objects with name and - // value properties, a function returning such an array, a FormData - // object (for XHR file uploads), or a simple object. - // The form of the first fileInput is given as parameter to the function: - formData: function (form) { - return form.serializeArray(); - }, - - // The add callback is invoked as soon as files are added to the fileupload - // widget (via file input selection, drag & drop, paste or add API call). - // If the singleFileUploads option is enabled, this callback will be - // called once for each file in the selection for XHR file uploads, else - // once for each file selection. - // - // The upload starts when the submit method is invoked on the data parameter. - // The data object contains a files property holding the added files - // and allows you to override plugin options as well as define ajax settings. - // - // Listeners for this callback can also be bound the following way: - // .on('fileuploadadd', func); - // - // data.submit() returns a Promise object and allows to attach additional - // handlers using jQuery's Deferred callbacks: - // data.submit().done(func).fail(func).always(func); - add: function (e, data) { - if (e.isDefaultPrevented()) { - return false; - } - if ( - data.autoUpload || - (data.autoUpload !== false && - $(this).fileupload('option', 'autoUpload')) - ) { - data.process().done(function () { - data.submit(); - }); - } - }, - - // Other callbacks: - - // Callback for the submit event of each file upload: - // submit: function (e, data) {}, // .on('fileuploadsubmit', func); - - // Callback for the start of each file upload request: - // send: function (e, data) {}, // .on('fileuploadsend', func); - - // Callback for successful uploads: - // done: function (e, data) {}, // .on('fileuploaddone', func); - - // Callback for failed (abort or error) uploads: - // fail: function (e, data) {}, // .on('fileuploadfail', func); - - // Callback for completed (success, abort or error) requests: - // always: function (e, data) {}, // .on('fileuploadalways', func); - - // Callback for upload progress events: - // progress: function (e, data) {}, // .on('fileuploadprogress', func); - - // Callback for global upload progress events: - // progressall: function (e, data) {}, // .on('fileuploadprogressall', func); - - // Callback for uploads start, equivalent to the global ajaxStart event: - // start: function (e) {}, // .on('fileuploadstart', func); - - // Callback for uploads stop, equivalent to the global ajaxStop event: - // stop: function (e) {}, // .on('fileuploadstop', func); - - // Callback for change events of the fileInput(s): - // change: function (e, data) {}, // .on('fileuploadchange', func); - - // Callback for paste events to the pasteZone(s): - // paste: function (e, data) {}, // .on('fileuploadpaste', func); - - // Callback for drop events of the dropZone(s): - // drop: function (e, data) {}, // .on('fileuploaddrop', func); - - // Callback for dragover events of the dropZone(s): - // dragover: function (e) {}, // .on('fileuploaddragover', func); - - // Callback before the start of each chunk upload request (before form data initialization): - // chunkbeforesend: function (e, data) {}, // .on('fileuploadchunkbeforesend', func); - - // Callback for the start of each chunk upload request: - // chunksend: function (e, data) {}, // .on('fileuploadchunksend', func); - - // Callback for successful chunk uploads: - // chunkdone: function (e, data) {}, // .on('fileuploadchunkdone', func); - - // Callback for failed (abort or error) chunk uploads: - // chunkfail: function (e, data) {}, // .on('fileuploadchunkfail', func); - - // Callback for completed (success, abort or error) chunk upload requests: - // chunkalways: function (e, data) {}, // .on('fileuploadchunkalways', func); - - // The plugin options are used as settings object for the ajax calls. - // The following are jQuery ajax settings required for the file uploads: - processData: false, - contentType: false, - cache: false, - timeout: 0 - }, - - // jQuery versions before 1.8 require promise.pipe if the return value is - // used, as promise.then in older versions has a different behavior, see: - // https://blog.jquery.com/2012/08/09/jquery-1-8-released/ - // https://bugs.jquery.com/ticket/11010 - // https://github.com/blueimp/jQuery-File-Upload/pull/3435 - _promisePipe: (function () { - var parts = $.fn.jquery.split('.'); - return Number(parts[0]) > 1 || Number(parts[1]) > 7 ? 'then' : 'pipe'; - })(), - - // A list of options that require reinitializing event listeners and/or - // special initialization code: - _specialOptions: [ - 'fileInput', - 'dropZone', - 'pasteZone', - 'multipart', - 'forceIframeTransport' - ], - - _blobSlice: - $.support.blobSlice && - function () { - var slice = this.slice || this.webkitSlice || this.mozSlice; - return slice.apply(this, arguments); - }, - - _BitrateTimer: function () { - this.timestamp = Date.now ? Date.now() : new Date().getTime(); - this.loaded = 0; - this.bitrate = 0; - this.getBitrate = function (now, loaded, interval) { - var timeDiff = now - this.timestamp; - if (!this.bitrate || !interval || timeDiff > interval) { - this.bitrate = (loaded - this.loaded) * (1000 / timeDiff) * 8; - this.loaded = loaded; - this.timestamp = now; - } - return this.bitrate; - }; - }, - - _isXHRUpload: function (options) { - return ( - !options.forceIframeTransport && - ((!options.multipart && $.support.xhrFileUpload) || - $.support.xhrFormDataFileUpload) - ); - }, - - _getFormData: function (options) { - var formData; - if ($.type(options.formData) === 'function') { - return options.formData(options.form); - } - if ($.isArray(options.formData)) { - return options.formData; - } - if ($.type(options.formData) === 'object') { - formData = []; - $.each(options.formData, function (name, value) { - formData.push({ name: name, value: value }); - }); - return formData; - } - return []; - }, - - _getTotal: function (files) { - var total = 0; - $.each(files, function (index, file) { - total += file.size || 1; - }); - return total; - }, - - _initProgressObject: function (obj) { - var progress = { - loaded: 0, - total: 0, - bitrate: 0 - }; - if (obj._progress) { - $.extend(obj._progress, progress); - } else { - obj._progress = progress; - } - }, - - _initResponseObject: function (obj) { - var prop; - if (obj._response) { - for (prop in obj._response) { - if (Object.prototype.hasOwnProperty.call(obj._response, prop)) { - delete obj._response[prop]; - } - } - } else { - obj._response = {}; - } - }, - - _onProgress: function (e, data) { - if (e.lengthComputable) { - var now = Date.now ? Date.now() : new Date().getTime(), - loaded; - if ( - data._time && - data.progressInterval && - now - data._time < data.progressInterval && - e.loaded !== e.total - ) { - return; - } - data._time = now; - loaded = - Math.floor( - (e.loaded / e.total) * (data.chunkSize || data._progress.total) - ) + (data.uploadedBytes || 0); - // Add the difference from the previously loaded state - // to the global loaded counter: - this._progress.loaded += loaded - data._progress.loaded; - this._progress.bitrate = this._bitrateTimer.getBitrate( - now, - this._progress.loaded, - data.bitrateInterval - ); - data._progress.loaded = data.loaded = loaded; - data._progress.bitrate = data.bitrate = data._bitrateTimer.getBitrate( - now, - loaded, - data.bitrateInterval - ); - // Trigger a custom progress event with a total data property set - // to the file size(s) of the current upload and a loaded data - // property calculated accordingly: - this._trigger( - 'progress', - $.Event('progress', { delegatedEvent: e }), - data - ); - // Trigger a global progress event for all current file uploads, - // including ajax calls queued for sequential file uploads: - this._trigger( - 'progressall', - $.Event('progressall', { delegatedEvent: e }), - this._progress - ); - } - }, - - _initProgressListener: function (options) { - var that = this, - xhr = options.xhr ? options.xhr() : $.ajaxSettings.xhr(); - // Access to the native XHR object is required to add event listeners - // for the upload progress event: - if (xhr.upload) { - $(xhr.upload).on('progress', function (e) { - var oe = e.originalEvent; - // Make sure the progress event properties get copied over: - e.lengthComputable = oe.lengthComputable; - e.loaded = oe.loaded; - e.total = oe.total; - that._onProgress(e, options); - }); - options.xhr = function () { - return xhr; - }; - } - }, - - _deinitProgressListener: function (options) { - var xhr = options.xhr ? options.xhr() : $.ajaxSettings.xhr(); - if (xhr.upload) { - $(xhr.upload).off('progress'); - } - }, - - _isInstanceOf: function (type, obj) { - // Cross-frame instanceof check - return Object.prototype.toString.call(obj) === '[object ' + type + ']'; - }, - - _getUniqueFilename: function (name, map) { - // eslint-disable-next-line no-param-reassign - name = String(name); - if (map[name]) { - // eslint-disable-next-line no-param-reassign - name = name.replace( - /(?: \(([\d]+)\))?(\.[^.]+)?$/, - function (_, p1, p2) { - var index = p1 ? Number(p1) + 1 : 1; - var ext = p2 || ''; - return ' (' + index + ')' + ext; - } - ); - return this._getUniqueFilename(name, map); - } - map[name] = true; - return name; - }, - - _initXHRData: function (options) { - var that = this, - formData, - file = options.files[0], - // Ignore non-multipart setting if not supported: - multipart = options.multipart || !$.support.xhrFileUpload, - paramName = - $.type(options.paramName) === 'array' - ? options.paramName[0] - : options.paramName; - options.headers = $.extend({}, options.headers); - if (options.contentRange) { - options.headers['Content-Range'] = options.contentRange; - } - if (!multipart || options.blob || !this._isInstanceOf('File', file)) { - options.headers['Content-Disposition'] = - 'attachment; filename="' + - encodeURI(file.uploadName || file.name) + - '"'; - } - if (!multipart) { - options.contentType = file.type || 'application/octet-stream'; - options.data = options.blob || file; - } else if ($.support.xhrFormDataFileUpload) { - if (options.postMessage) { - // window.postMessage does not allow sending FormData - // objects, so we just add the File/Blob objects to - // the formData array and let the postMessage window - // create the FormData object out of this array: - formData = this._getFormData(options); - if (options.blob) { - formData.push({ - name: paramName, - value: options.blob - }); - } else { - $.each(options.files, function (index, file) { - formData.push({ - name: - ($.type(options.paramName) === 'array' && - options.paramName[index]) || - paramName, - value: file - }); - }); - } - } else { - if (that._isInstanceOf('FormData', options.formData)) { - formData = options.formData; - } else { - formData = new FormData(); - $.each(this._getFormData(options), function (index, field) { - formData.append(field.name, field.value); - }); - } - if (options.blob) { - formData.append( - paramName, - options.blob, - file.uploadName || file.name - ); - } else { - $.each(options.files, function (index, file) { - // This check allows the tests to run with - // dummy objects: - if ( - that._isInstanceOf('File', file) || - that._isInstanceOf('Blob', file) - ) { - var fileName = file.uploadName || file.name; - if (options.uniqueFilenames) { - fileName = that._getUniqueFilename( - fileName, - options.uniqueFilenames - ); - } - formData.append( - ($.type(options.paramName) === 'array' && - options.paramName[index]) || - paramName, - file, - fileName - ); - } - }); - } - } - options.data = formData; - } - // Blob reference is not needed anymore, free memory: - options.blob = null; - }, - - _initIframeSettings: function (options) { - var targetHost = $('<a></a>').prop('href', options.url).prop('host'); - // Setting the dataType to iframe enables the iframe transport: - options.dataType = 'iframe ' + (options.dataType || ''); - // The iframe transport accepts a serialized array as form data: - options.formData = this._getFormData(options); - // Add redirect url to form data on cross-domain uploads: - if (options.redirect && targetHost && targetHost !== location.host) { - options.formData.push({ - name: options.redirectParamName || 'redirect', - value: options.redirect - }); - } - }, - - _initDataSettings: function (options) { - if (this._isXHRUpload(options)) { - if (!this._chunkedUpload(options, true)) { - if (!options.data) { - this._initXHRData(options); - } - this._initProgressListener(options); - } - if (options.postMessage) { - // Setting the dataType to postmessage enables the - // postMessage transport: - options.dataType = 'postmessage ' + (options.dataType || ''); - } - } else { - this._initIframeSettings(options); - } - }, - - _getParamName: function (options) { - var fileInput = $(options.fileInput), - paramName = options.paramName; - if (!paramName) { - paramName = []; - fileInput.each(function () { - var input = $(this), - name = input.prop('name') || 'files[]', - i = (input.prop('files') || [1]).length; - while (i) { - paramName.push(name); - i -= 1; - } - }); - if (!paramName.length) { - paramName = [fileInput.prop('name') || 'files[]']; - } - } else if (!$.isArray(paramName)) { - paramName = [paramName]; - } - return paramName; - }, - - _initFormSettings: function (options) { - // Retrieve missing options from the input field and the - // associated form, if available: - if (!options.form || !options.form.length) { - options.form = $(options.fileInput.prop('form')); - // If the given file input doesn't have an associated form, - // use the default widget file input's form: - if (!options.form.length) { - options.form = $(this.options.fileInput.prop('form')); - } - } - options.paramName = this._getParamName(options); - if (!options.url) { - options.url = options.form.prop('action') || location.href; - } - // The HTTP request method must be "POST" or "PUT": - options.type = ( - options.type || - ($.type(options.form.prop('method')) === 'string' && - options.form.prop('method')) || - '' - ).toUpperCase(); - if ( - options.type !== 'POST' && - options.type !== 'PUT' && - options.type !== 'PATCH' - ) { - options.type = 'POST'; - } - if (!options.formAcceptCharset) { - options.formAcceptCharset = options.form.attr('accept-charset'); - } - }, - - _getAJAXSettings: function (data) { - var options = $.extend({}, this.options, data); - this._initFormSettings(options); - this._initDataSettings(options); - return options; - }, - - // jQuery 1.6 doesn't provide .state(), - // while jQuery 1.8+ removed .isRejected() and .isResolved(): - _getDeferredState: function (deferred) { - if (deferred.state) { - return deferred.state(); - } - if (deferred.isResolved()) { - return 'resolved'; - } - if (deferred.isRejected()) { - return 'rejected'; - } - return 'pending'; - }, - - // Maps jqXHR callbacks to the equivalent - // methods of the given Promise object: - _enhancePromise: function (promise) { - promise.success = promise.done; - promise.error = promise.fail; - promise.complete = promise.always; - return promise; - }, - - // Creates and returns a Promise object enhanced with - // the jqXHR methods abort, success, error and complete: - _getXHRPromise: function (resolveOrReject, context, args) { - var dfd = $.Deferred(), - promise = dfd.promise(); - // eslint-disable-next-line no-param-reassign - context = context || this.options.context || promise; - if (resolveOrReject === true) { - dfd.resolveWith(context, args); - } else if (resolveOrReject === false) { - dfd.rejectWith(context, args); - } - promise.abort = dfd.promise; - return this._enhancePromise(promise); - }, - - // Adds convenience methods to the data callback argument: - _addConvenienceMethods: function (e, data) { - var that = this, - getPromise = function (args) { - return $.Deferred().resolveWith(that, args).promise(); - }; - data.process = function (resolveFunc, rejectFunc) { - if (resolveFunc || rejectFunc) { - data._processQueue = this._processQueue = (this._processQueue || - getPromise([this])) - [that._promisePipe](function () { - if (data.errorThrown) { - return $.Deferred().rejectWith(that, [data]).promise(); - } - return getPromise(arguments); - }) - [that._promisePipe](resolveFunc, rejectFunc); - } - return this._processQueue || getPromise([this]); - }; - data.submit = function () { - if (this.state() !== 'pending') { - data.jqXHR = this.jqXHR = - that._trigger( - 'submit', - $.Event('submit', { delegatedEvent: e }), - this - ) !== false && that._onSend(e, this); - } - return this.jqXHR || that._getXHRPromise(); - }; - data.abort = function () { - if (this.jqXHR) { - return this.jqXHR.abort(); - } - this.errorThrown = 'abort'; - that._trigger('fail', null, this); - return that._getXHRPromise(false); - }; - data.state = function () { - if (this.jqXHR) { - return that._getDeferredState(this.jqXHR); - } - if (this._processQueue) { - return that._getDeferredState(this._processQueue); - } - }; - data.processing = function () { - return ( - !this.jqXHR && - this._processQueue && - that._getDeferredState(this._processQueue) === 'pending' - ); - }; - data.progress = function () { - return this._progress; - }; - data.response = function () { - return this._response; - }; - }, - - // Parses the Range header from the server response - // and returns the uploaded bytes: - _getUploadedBytes: function (jqXHR) { - var range = jqXHR.getResponseHeader('Range'), - parts = range && range.split('-'), - upperBytesPos = parts && parts.length > 1 && parseInt(parts[1], 10); - return upperBytesPos && upperBytesPos + 1; - }, - - // Uploads a file in multiple, sequential requests - // by splitting the file up in multiple blob chunks. - // If the second parameter is true, only tests if the file - // should be uploaded in chunks, but does not invoke any - // upload requests: - _chunkedUpload: function (options, testOnly) { - options.uploadedBytes = options.uploadedBytes || 0; - var that = this, - file = options.files[0], - fs = file.size, - ub = options.uploadedBytes, - mcs = options.maxChunkSize || fs, - slice = this._blobSlice, - dfd = $.Deferred(), - promise = dfd.promise(), - jqXHR, - upload; - if ( - !( - this._isXHRUpload(options) && - slice && - (ub || ($.type(mcs) === 'function' ? mcs(options) : mcs) < fs) - ) || - options.data - ) { - return false; - } - if (testOnly) { - return true; - } - if (ub >= fs) { - file.error = options.i18n('uploadedBytes'); - return this._getXHRPromise(false, options.context, [ - null, - 'error', - file.error - ]); - } - // The chunk upload method: - upload = function () { - // Clone the options object for each chunk upload: - var o = $.extend({}, options), - currentLoaded = o._progress.loaded; - o.blob = slice.call( - file, - ub, - ub + ($.type(mcs) === 'function' ? mcs(o) : mcs), - file.type - ); - // Store the current chunk size, as the blob itself - // will be dereferenced after data processing: - o.chunkSize = o.blob.size; - // Expose the chunk bytes position range: - o.contentRange = - 'bytes ' + ub + '-' + (ub + o.chunkSize - 1) + '/' + fs; - // Trigger chunkbeforesend to allow form data to be updated for this chunk - that._trigger('chunkbeforesend', null, o); - // Process the upload data (the blob and potential form data): - that._initXHRData(o); - // Add progress listeners for this chunk upload: - that._initProgressListener(o); - jqXHR = ( - (that._trigger('chunksend', null, o) !== false && $.ajax(o)) || - that._getXHRPromise(false, o.context) - ) - .done(function (result, textStatus, jqXHR) { - ub = that._getUploadedBytes(jqXHR) || ub + o.chunkSize; - // Create a progress event if no final progress event - // with loaded equaling total has been triggered - // for this chunk: - if (currentLoaded + o.chunkSize - o._progress.loaded) { - that._onProgress( - $.Event('progress', { - lengthComputable: true, - loaded: ub - o.uploadedBytes, - total: ub - o.uploadedBytes - }), - o - ); - } - options.uploadedBytes = o.uploadedBytes = ub; - o.result = result; - o.textStatus = textStatus; - o.jqXHR = jqXHR; - that._trigger('chunkdone', null, o); - that._trigger('chunkalways', null, o); - if (ub < fs) { - // File upload not yet complete, - // continue with the next chunk: - upload(); - } else { - dfd.resolveWith(o.context, [result, textStatus, jqXHR]); - } - }) - .fail(function (jqXHR, textStatus, errorThrown) { - o.jqXHR = jqXHR; - o.textStatus = textStatus; - o.errorThrown = errorThrown; - that._trigger('chunkfail', null, o); - that._trigger('chunkalways', null, o); - dfd.rejectWith(o.context, [jqXHR, textStatus, errorThrown]); - }) - .always(function () { - that._deinitProgressListener(o); - }); - }; - this._enhancePromise(promise); - promise.abort = function () { - return jqXHR.abort(); - }; - upload(); - return promise; - }, - - _beforeSend: function (e, data) { - if (this._active === 0) { - // the start callback is triggered when an upload starts - // and no other uploads are currently running, - // equivalent to the global ajaxStart event: - this._trigger('start'); - // Set timer for global bitrate progress calculation: - this._bitrateTimer = new this._BitrateTimer(); - // Reset the global progress values: - this._progress.loaded = this._progress.total = 0; - this._progress.bitrate = 0; - } - // Make sure the container objects for the .response() and - // .progress() methods on the data object are available - // and reset to their initial state: - this._initResponseObject(data); - this._initProgressObject(data); - data._progress.loaded = data.loaded = data.uploadedBytes || 0; - data._progress.total = data.total = this._getTotal(data.files) || 1; - data._progress.bitrate = data.bitrate = 0; - this._active += 1; - // Initialize the global progress values: - this._progress.loaded += data.loaded; - this._progress.total += data.total; - }, - - _onDone: function (result, textStatus, jqXHR, options) { - var total = options._progress.total, - response = options._response; - if (options._progress.loaded < total) { - // Create a progress event if no final progress event - // with loaded equaling total has been triggered: - this._onProgress( - $.Event('progress', { - lengthComputable: true, - loaded: total, - total: total - }), - options - ); - } - response.result = options.result = result; - response.textStatus = options.textStatus = textStatus; - response.jqXHR = options.jqXHR = jqXHR; - this._trigger('done', null, options); - }, - - _onFail: function (jqXHR, textStatus, errorThrown, options) { - var response = options._response; - if (options.recalculateProgress) { - // Remove the failed (error or abort) file upload from - // the global progress calculation: - this._progress.loaded -= options._progress.loaded; - this._progress.total -= options._progress.total; - } - response.jqXHR = options.jqXHR = jqXHR; - response.textStatus = options.textStatus = textStatus; - response.errorThrown = options.errorThrown = errorThrown; - this._trigger('fail', null, options); - }, - - _onAlways: function (jqXHRorResult, textStatus, jqXHRorError, options) { - // jqXHRorResult, textStatus and jqXHRorError are added to the - // options object via done and fail callbacks - this._trigger('always', null, options); - }, - - _onSend: function (e, data) { - if (!data.submit) { - this._addConvenienceMethods(e, data); - } - var that = this, - jqXHR, - aborted, - slot, - pipe, - options = that._getAJAXSettings(data), - send = function () { - that._sending += 1; - // Set timer for bitrate progress calculation: - options._bitrateTimer = new that._BitrateTimer(); - jqXHR = - jqXHR || - ( - ((aborted || - that._trigger( - 'send', - $.Event('send', { delegatedEvent: e }), - options - ) === false) && - that._getXHRPromise(false, options.context, aborted)) || - that._chunkedUpload(options) || - $.ajax(options) - ) - .done(function (result, textStatus, jqXHR) { - that._onDone(result, textStatus, jqXHR, options); - }) - .fail(function (jqXHR, textStatus, errorThrown) { - that._onFail(jqXHR, textStatus, errorThrown, options); - }) - .always(function (jqXHRorResult, textStatus, jqXHRorError) { - that._deinitProgressListener(options); - that._onAlways( - jqXHRorResult, - textStatus, - jqXHRorError, - options - ); - that._sending -= 1; - that._active -= 1; - if ( - options.limitConcurrentUploads && - options.limitConcurrentUploads > that._sending - ) { - // Start the next queued upload, - // that has not been aborted: - var nextSlot = that._slots.shift(); - while (nextSlot) { - if (that._getDeferredState(nextSlot) === 'pending') { - nextSlot.resolve(); - break; - } - nextSlot = that._slots.shift(); - } - } - if (that._active === 0) { - // The stop callback is triggered when all uploads have - // been completed, equivalent to the global ajaxStop event: - that._trigger('stop'); - } - }); - return jqXHR; - }; - this._beforeSend(e, options); - if ( - this.options.sequentialUploads || - (this.options.limitConcurrentUploads && - this.options.limitConcurrentUploads <= this._sending) - ) { - if (this.options.limitConcurrentUploads > 1) { - slot = $.Deferred(); - this._slots.push(slot); - pipe = slot[that._promisePipe](send); - } else { - this._sequence = this._sequence[that._promisePipe](send, send); - pipe = this._sequence; - } - // Return the piped Promise object, enhanced with an abort method, - // which is delegated to the jqXHR object of the current upload, - // and jqXHR callbacks mapped to the equivalent Promise methods: - pipe.abort = function () { - aborted = [undefined, 'abort', 'abort']; - if (!jqXHR) { - if (slot) { - slot.rejectWith(options.context, aborted); - } - return send(); - } - return jqXHR.abort(); - }; - return this._enhancePromise(pipe); - } - return send(); - }, - - _onAdd: function (e, data) { - var that = this, - result = true, - options = $.extend({}, this.options, data), - files = data.files, - filesLength = files.length, - limit = options.limitMultiFileUploads, - limitSize = options.limitMultiFileUploadSize, - overhead = options.limitMultiFileUploadSizeOverhead, - batchSize = 0, - paramName = this._getParamName(options), - paramNameSet, - paramNameSlice, - fileSet, - i, - j = 0; - if (!filesLength) { - return false; - } - if (limitSize && files[0].size === undefined) { - limitSize = undefined; - } - if ( - !(options.singleFileUploads || limit || limitSize) || - !this._isXHRUpload(options) - ) { - fileSet = [files]; - paramNameSet = [paramName]; - } else if (!(options.singleFileUploads || limitSize) && limit) { - fileSet = []; - paramNameSet = []; - for (i = 0; i < filesLength; i += limit) { - fileSet.push(files.slice(i, i + limit)); - paramNameSlice = paramName.slice(i, i + limit); - if (!paramNameSlice.length) { - paramNameSlice = paramName; - } - paramNameSet.push(paramNameSlice); - } - } else if (!options.singleFileUploads && limitSize) { - fileSet = []; - paramNameSet = []; - for (i = 0; i < filesLength; i = i + 1) { - batchSize += files[i].size + overhead; - if ( - i + 1 === filesLength || - batchSize + files[i + 1].size + overhead > limitSize || - (limit && i + 1 - j >= limit) - ) { - fileSet.push(files.slice(j, i + 1)); - paramNameSlice = paramName.slice(j, i + 1); - if (!paramNameSlice.length) { - paramNameSlice = paramName; - } - paramNameSet.push(paramNameSlice); - j = i + 1; - batchSize = 0; - } - } - } else { - paramNameSet = paramName; - } - data.originalFiles = files; - $.each(fileSet || files, function (index, element) { - var newData = $.extend({}, data); - newData.files = fileSet ? element : [element]; - newData.paramName = paramNameSet[index]; - that._initResponseObject(newData); - that._initProgressObject(newData); - that._addConvenienceMethods(e, newData); - result = that._trigger( - 'add', - $.Event('add', { delegatedEvent: e }), - newData - ); - return result; - }); - return result; - }, - - _replaceFileInput: function (data) { - var input = data.fileInput, - inputClone = input.clone(true), - restoreFocus = input.is(document.activeElement); - // Add a reference for the new cloned file input to the data argument: - data.fileInputClone = inputClone; - $('<form></form>').append(inputClone)[0].reset(); - // Detaching allows to insert the fileInput on another form - // without losing the file input value: - input.after(inputClone).detach(); - // If the fileInput had focus before it was detached, - // restore focus to the inputClone. - if (restoreFocus) { - inputClone.trigger('focus'); - } - // Avoid memory leaks with the detached file input: - $.cleanData(input.off('remove')); - // Replace the original file input element in the fileInput - // elements set with the clone, which has been copied including - // event handlers: - this.options.fileInput = this.options.fileInput.map(function (i, el) { - if (el === input[0]) { - return inputClone[0]; - } - return el; - }); - // If the widget has been initialized on the file input itself, - // override this.element with the file input clone: - if (input[0] === this.element[0]) { - this.element = inputClone; - } - }, - - _handleFileTreeEntry: function (entry, path) { - var that = this, - dfd = $.Deferred(), - entries = [], - dirReader, - errorHandler = function (e) { - if (e && !e.entry) { - e.entry = entry; - } - // Since $.when returns immediately if one - // Deferred is rejected, we use resolve instead. - // This allows valid files and invalid items - // to be returned together in one set: - dfd.resolve([e]); - }, - successHandler = function (entries) { - that - ._handleFileTreeEntries(entries, path + entry.name + '/') - .done(function (files) { - dfd.resolve(files); - }) - .fail(errorHandler); - }, - readEntries = function () { - dirReader.readEntries(function (results) { - if (!results.length) { - successHandler(entries); - } else { - entries = entries.concat(results); - readEntries(); - } - }, errorHandler); - }; - // eslint-disable-next-line no-param-reassign - path = path || ''; - if (entry.isFile) { - if (entry._file) { - // Workaround for Chrome bug #149735 - entry._file.relativePath = path; - dfd.resolve(entry._file); - } else { - entry.file(function (file) { - file.relativePath = path; - dfd.resolve(file); - }, errorHandler); - } - } else if (entry.isDirectory) { - dirReader = entry.createReader(); - readEntries(); - } else { - // Return an empty list for file system items - // other than files or directories: - dfd.resolve([]); - } - return dfd.promise(); - }, - - _handleFileTreeEntries: function (entries, path) { - var that = this; - return $.when - .apply( - $, - $.map(entries, function (entry) { - return that._handleFileTreeEntry(entry, path); - }) - ) - [this._promisePipe](function () { - return Array.prototype.concat.apply([], arguments); - }); - }, - - _getDroppedFiles: function (dataTransfer) { - // eslint-disable-next-line no-param-reassign - dataTransfer = dataTransfer || {}; - var items = dataTransfer.items; - if ( - items && - items.length && - (items[0].webkitGetAsEntry || items[0].getAsEntry) - ) { - return this._handleFileTreeEntries( - $.map(items, function (item) { - var entry; - if (item.webkitGetAsEntry) { - entry = item.webkitGetAsEntry(); - if (entry) { - // Workaround for Chrome bug #149735: - entry._file = item.getAsFile(); - } - return entry; - } - return item.getAsEntry(); - }) - ); - } - return $.Deferred().resolve($.makeArray(dataTransfer.files)).promise(); - }, - - _getSingleFileInputFiles: function (fileInput) { - // eslint-disable-next-line no-param-reassign - fileInput = $(fileInput); - var entries = fileInput.prop('entries'), - files, - value; - if (entries && entries.length) { - return this._handleFileTreeEntries(entries); - } - files = $.makeArray(fileInput.prop('files')); - if (!files.length) { - value = fileInput.prop('value'); - if (!value) { - return $.Deferred().resolve([]).promise(); - } - // If the files property is not available, the browser does not - // support the File API and we add a pseudo File object with - // the input value as name with path information removed: - files = [{ name: value.replace(/^.*\\/, '') }]; - } else if (files[0].name === undefined && files[0].fileName) { - // File normalization for Safari 4 and Firefox 3: - $.each(files, function (index, file) { - file.name = file.fileName; - file.size = file.fileSize; - }); - } - return $.Deferred().resolve(files).promise(); - }, - - _getFileInputFiles: function (fileInput) { - if (!(fileInput instanceof $) || fileInput.length === 1) { - return this._getSingleFileInputFiles(fileInput); - } - return $.when - .apply($, $.map(fileInput, this._getSingleFileInputFiles)) - [this._promisePipe](function () { - return Array.prototype.concat.apply([], arguments); - }); - }, - - _onChange: function (e) { - var that = this, - data = { - fileInput: $(e.target), - form: $(e.target.form) - }; - this._getFileInputFiles(data.fileInput).always(function (files) { - data.files = files; - if (that.options.replaceFileInput) { - that._replaceFileInput(data); - } - if ( - that._trigger( - 'change', - $.Event('change', { delegatedEvent: e }), - data - ) !== false - ) { - that._onAdd(e, data); - } - }); - }, - - _onPaste: function (e) { - var items = - e.originalEvent && - e.originalEvent.clipboardData && - e.originalEvent.clipboardData.items, - data = { files: [] }; - if (items && items.length) { - $.each(items, function (index, item) { - var file = item.getAsFile && item.getAsFile(); - if (file) { - data.files.push(file); - } - }); - if ( - this._trigger( - 'paste', - $.Event('paste', { delegatedEvent: e }), - data - ) !== false - ) { - this._onAdd(e, data); - } - } - }, - - _onDrop: function (e) { - e.dataTransfer = e.originalEvent && e.originalEvent.dataTransfer; - var that = this, - dataTransfer = e.dataTransfer, - data = {}; - if (dataTransfer && dataTransfer.files && dataTransfer.files.length) { - e.preventDefault(); - this._getDroppedFiles(dataTransfer).always(function (files) { - data.files = files; - if ( - that._trigger( - 'drop', - $.Event('drop', { delegatedEvent: e }), - data - ) !== false - ) { - that._onAdd(e, data); - } - }); - } - }, - - _onDragOver: getDragHandler('dragover'), - - _onDragEnter: getDragHandler('dragenter'), - - _onDragLeave: getDragHandler('dragleave'), - - _initEventHandlers: function () { - if (this._isXHRUpload(this.options)) { - this._on(this.options.dropZone, { - dragover: this._onDragOver, - drop: this._onDrop, - // event.preventDefault() on dragenter is required for IE10+: - dragenter: this._onDragEnter, - // dragleave is not required, but added for completeness: - dragleave: this._onDragLeave - }); - this._on(this.options.pasteZone, { - paste: this._onPaste - }); - } - if ($.support.fileInput) { - this._on(this.options.fileInput, { - change: this._onChange - }); - } - }, - - _destroyEventHandlers: function () { - this._off(this.options.dropZone, 'dragenter dragleave dragover drop'); - this._off(this.options.pasteZone, 'paste'); - this._off(this.options.fileInput, 'change'); - }, - - _destroy: function () { - this._destroyEventHandlers(); - }, - - _setOption: function (key, value) { - var reinit = $.inArray(key, this._specialOptions) !== -1; - if (reinit) { - this._destroyEventHandlers(); - } - this._super(key, value); - if (reinit) { - this._initSpecialOptions(); - this._initEventHandlers(); - } - }, - - _initSpecialOptions: function () { - var options = this.options; - if (options.fileInput === undefined) { - options.fileInput = this.element.is('input[type="file"]') - ? this.element - : this.element.find('input[type="file"]'); - } else if (!(options.fileInput instanceof $)) { - options.fileInput = $(options.fileInput); - } - if (!(options.dropZone instanceof $)) { - options.dropZone = $(options.dropZone); - } - if (!(options.pasteZone instanceof $)) { - options.pasteZone = $(options.pasteZone); - } - }, - - _getRegExp: function (str) { - var parts = str.split('/'), - modifiers = parts.pop(); - parts.shift(); - return new RegExp(parts.join('/'), modifiers); - }, - - _isRegExpOption: function (key, value) { - return ( - key !== 'url' && - $.type(value) === 'string' && - /^\/.*\/[igm]{0,3}$/.test(value) - ); - }, - - _initDataAttributes: function () { - var that = this, - options = this.options, - data = this.element.data(); - // Initialize options set via HTML5 data-attributes: - $.each(this.element[0].attributes, function (index, attr) { - var key = attr.name.toLowerCase(), - value; - if (/^data-/.test(key)) { - // Convert hyphen-ated key to camelCase: - key = key.slice(5).replace(/-[a-z]/g, function (str) { - return str.charAt(1).toUpperCase(); - }); - value = data[key]; - if (that._isRegExpOption(key, value)) { - value = that._getRegExp(value); - } - options[key] = value; - } - }); - }, - - _create: function () { - this._initDataAttributes(); - this._initSpecialOptions(); - this._slots = []; - this._sequence = this._getXHRPromise(true); - this._sending = this._active = 0; - this._initProgressObject(this); - this._initEventHandlers(); - }, - - // This method is exposed to the widget API and allows to query - // the number of active uploads: - active: function () { - return this._active; - }, - - // This method is exposed to the widget API and allows to query - // the widget upload progress. - // It returns an object with loaded, total and bitrate properties - // for the running uploads: - progress: function () { - return this._progress; - }, - - // This method is exposed to the widget API and allows adding files - // using the fileupload API. The data parameter accepts an object which - // must have a files property and can contain additional options: - // .fileupload('add', {files: filesList}); - add: function (data) { - var that = this; - if (!data || this.options.disabled) { - return; - } - if (data.fileInput && !data.files) { - this._getFileInputFiles(data.fileInput).always(function (files) { - data.files = files; - that._onAdd(null, data); - }); - } else { - data.files = $.makeArray(data.files); - this._onAdd(null, data); - } - }, - - // This method is exposed to the widget API and allows sending files - // using the fileupload API. The data parameter accepts an object which - // must have a files or fileInput property and can contain additional options: - // .fileupload('send', {files: filesList}); - // The method returns a Promise object for the file upload call. - send: function (data) { - if (data && !this.options.disabled) { - if (data.fileInput && !data.files) { - var that = this, - dfd = $.Deferred(), - promise = dfd.promise(), - jqXHR, - aborted; - promise.abort = function () { - aborted = true; - if (jqXHR) { - return jqXHR.abort(); - } - dfd.reject(null, 'abort', 'abort'); - return promise; - }; - this._getFileInputFiles(data.fileInput).always(function (files) { - if (aborted) { - return; - } - if (!files.length) { - dfd.reject(); - return; - } - data.files = files; - jqXHR = that._onSend(null, data); - jqXHR.then( - function (result, textStatus, jqXHR) { - dfd.resolve(result, textStatus, jqXHR); - }, - function (jqXHR, textStatus, errorThrown) { - dfd.reject(jqXHR, textStatus, errorThrown); - } - ); - }); - return this._enhancePromise(promise); - } - data.files = $.makeArray(data.files); - if (data.files.length) { - return this._onSend(null, data); - } - } - return this._getXHRPromise(false, data && data.context); - } - }); -}); diff --git a/lib/web/jquery/fileUploader/jquery.fileuploader.js b/lib/web/jquery/fileUploader/jquery.fileuploader.js deleted file mode 100644 index 4ec869ab4f470..0000000000000 --- a/lib/web/jquery/fileUploader/jquery.fileuploader.js +++ /dev/null @@ -1,33 +0,0 @@ -/** - * Custom Uploader - * Copyright © Magento, Inc. All rights reserved. - * See COPYING.txt for license details. - */ - -/* global define, require */ - -(function (factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define([ - 'jquery', - 'jquery/fileUploader/jquery.fileupload-image', - 'jquery/fileUploader/jquery.fileupload-audio', - 'jquery/fileUploader/jquery.fileupload-video', - 'jquery/fileUploader/jquery.iframe-transport', - ], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS: - factory( - require('jquery'), - require('jquery/fileUploader/jquery.fileupload-image'), - require('jquery/fileUploader/jquery.fileupload-audio'), - require('jquery/fileUploader/jquery.fileupload-video'), - require('jquery/fileUploader/jquery.iframe-transport') - ); - } else { - // Browser globals: - factory(window.jQuery); - } -})(); diff --git a/lib/web/jquery/fileUploader/jquery.iframe-transport.js b/lib/web/jquery/fileUploader/jquery.iframe-transport.js deleted file mode 100644 index 3e3b9a93b05df..0000000000000 --- a/lib/web/jquery/fileUploader/jquery.iframe-transport.js +++ /dev/null @@ -1,227 +0,0 @@ -/* - * jQuery Iframe Transport Plugin - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2011, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * https://opensource.org/licenses/MIT - */ - -/* global define, require */ - -(function (factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define(['jquery'], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS: - factory(require('jquery')); - } else { - // Browser globals: - factory(window.jQuery); - } -})(function ($) { - 'use strict'; - - // Helper variable to create unique names for the transport iframes: - var counter = 0, - jsonAPI = $, - jsonParse = 'parseJSON'; - - if ('JSON' in window && 'parse' in JSON) { - jsonAPI = JSON; - jsonParse = 'parse'; - } - - // The iframe transport accepts four additional options: - // options.fileInput: a jQuery collection of file input fields - // options.paramName: the parameter name for the file form data, - // overrides the name property of the file input field(s), - // can be a string or an array of strings. - // options.formData: an array of objects with name and value properties, - // equivalent to the return data of .serializeArray(), e.g.: - // [{name: 'a', value: 1}, {name: 'b', value: 2}] - // options.initialIframeSrc: the URL of the initial iframe src, - // by default set to "javascript:false;" - $.ajaxTransport('iframe', function (options) { - if (options.async) { - // javascript:false as initial iframe src - // prevents warning popups on HTTPS in IE6: - // eslint-disable-next-line no-script-url - var initialIframeSrc = options.initialIframeSrc || 'javascript:false;', - form, - iframe, - addParamChar; - return { - send: function (_, completeCallback) { - form = $('<form style="display:none;"></form>'); - form.attr('accept-charset', options.formAcceptCharset); - addParamChar = /\?/.test(options.url) ? '&' : '?'; - // XDomainRequest only supports GET and POST: - if (options.type === 'DELETE') { - options.url = options.url + addParamChar + '_method=DELETE'; - options.type = 'POST'; - } else if (options.type === 'PUT') { - options.url = options.url + addParamChar + '_method=PUT'; - options.type = 'POST'; - } else if (options.type === 'PATCH') { - options.url = options.url + addParamChar + '_method=PATCH'; - options.type = 'POST'; - } - // IE versions below IE8 cannot set the name property of - // elements that have already been added to the DOM, - // so we set the name along with the iframe HTML markup: - counter += 1; - iframe = $( - '<iframe src="' + - initialIframeSrc + - '" name="iframe-transport-' + - counter + - '"></iframe>' - ).on('load', function () { - var fileInputClones, - paramNames = $.isArray(options.paramName) - ? options.paramName - : [options.paramName]; - iframe.off('load').on('load', function () { - var response; - // Wrap in a try/catch block to catch exceptions thrown - // when trying to access cross-domain iframe contents: - try { - response = iframe.contents(); - // Google Chrome and Firefox do not throw an - // exception when calling iframe.contents() on - // cross-domain requests, so we unify the response: - if (!response.length || !response[0].firstChild) { - throw new Error(); - } - } catch (e) { - response = undefined; - } - // The complete callback returns the - // iframe content document as response object: - completeCallback(200, 'success', { iframe: response }); - // Fix for IE endless progress bar activity bug - // (happens on form submits to iframe targets): - $('<iframe src="' + initialIframeSrc + '"></iframe>').appendTo( - form - ); - window.setTimeout(function () { - // Removing the form in a setTimeout call - // allows Chrome's developer tools to display - // the response result - form.remove(); - }, 0); - }); - form - .prop('target', iframe.prop('name')) - .prop('action', options.url) - .prop('method', options.type); - if (options.formData) { - $.each(options.formData, function (index, field) { - $('<input type="hidden"/>') - .prop('name', field.name) - .val(field.value) - .appendTo(form); - }); - } - if ( - options.fileInput && - options.fileInput.length && - options.type === 'POST' - ) { - fileInputClones = options.fileInput.clone(); - // Insert a clone for each file input field: - options.fileInput.after(function (index) { - return fileInputClones[index]; - }); - if (options.paramName) { - options.fileInput.each(function (index) { - $(this).prop('name', paramNames[index] || options.paramName); - }); - } - // Appending the file input fields to the hidden form - // removes them from their original location: - form - .append(options.fileInput) - .prop('enctype', 'multipart/form-data') - // enctype must be set as encoding for IE: - .prop('encoding', 'multipart/form-data'); - // Remove the HTML5 form attribute from the input(s): - options.fileInput.removeAttr('form'); - } - window.setTimeout(function () { - // Submitting the form in a setTimeout call fixes an issue with - // Safari 13 not triggering the iframe load event after resetting - // the load event handler, see also: - // https://github.com/blueimp/jQuery-File-Upload/issues/3633 - form.submit(); - // Insert the file input fields at their original location - // by replacing the clones with the originals: - if (fileInputClones && fileInputClones.length) { - options.fileInput.each(function (index, input) { - var clone = $(fileInputClones[index]); - // Restore the original name and form properties: - $(input) - .prop('name', clone.prop('name')) - .attr('form', clone.attr('form')); - clone.replaceWith(input); - }); - } - }, 0); - }); - form.append(iframe).appendTo(document.body); - }, - abort: function () { - if (iframe) { - // javascript:false as iframe src aborts the request - // and prevents warning popups on HTTPS in IE6. - iframe.off('load').prop('src', initialIframeSrc); - } - if (form) { - form.remove(); - } - } - }; - } - }); - - // The iframe transport returns the iframe content document as response. - // The following adds converters from iframe to text, json, html, xml - // and script. - // Please note that the Content-Type for JSON responses has to be text/plain - // or text/html, if the browser doesn't include application/json in the - // Accept header, else IE will show a download dialog. - // The Content-Type for XML responses on the other hand has to be always - // application/xml or text/xml, so IE properly parses the XML response. - // See also - // https://github.com/blueimp/jQuery-File-Upload/wiki/Setup#content-type-negotiation - $.ajaxSetup({ - converters: { - 'iframe text': function (iframe) { - return iframe && $(iframe[0].body).text(); - }, - 'iframe json': function (iframe) { - return iframe && jsonAPI[jsonParse]($(iframe[0].body).text()); - }, - 'iframe html': function (iframe) { - return iframe && $(iframe[0].body).html(); - }, - 'iframe xml': function (iframe) { - var xmlDoc = iframe && iframe[0]; - return xmlDoc && $.isXMLDoc(xmlDoc) - ? xmlDoc - : $.parseXML( - (xmlDoc.XMLDocument && xmlDoc.XMLDocument.xml) || - $(xmlDoc.body).html() - ); - }, - 'iframe script': function (iframe) { - return iframe && $.globalEval($(iframe[0].body).text()); - } - } - }); -}); diff --git a/lib/web/jquery/fileUploader/vendor/blueimp-canvas-to-blob/LICENSE.txt b/lib/web/jquery/fileUploader/vendor/blueimp-canvas-to-blob/LICENSE.txt deleted file mode 100644 index e1ad73662d4a5..0000000000000 --- a/lib/web/jquery/fileUploader/vendor/blueimp-canvas-to-blob/LICENSE.txt +++ /dev/null @@ -1,20 +0,0 @@ -MIT License - -Copyright © 2012 Sebastian Tschan, https://blueimp.net - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/lib/web/jquery/fileUploader/vendor/blueimp-canvas-to-blob/README.md b/lib/web/jquery/fileUploader/vendor/blueimp-canvas-to-blob/README.md deleted file mode 100644 index 92e16c63ce7cd..0000000000000 --- a/lib/web/jquery/fileUploader/vendor/blueimp-canvas-to-blob/README.md +++ /dev/null @@ -1,135 +0,0 @@ -# JavaScript Canvas to Blob - -## Contents - -- [Description](#description) -- [Setup](#setup) -- [Usage](#usage) -- [Requirements](#requirements) -- [Browsers](#browsers) -- [API](#api) -- [Test](#test) -- [License](#license) - -## Description - -Canvas to Blob is a -[polyfill](https://developer.mozilla.org/en-US/docs/Glossary/Polyfill) for -Browsers that don't support the standard JavaScript -[HTMLCanvasElement.toBlob](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob) -method. - -It can be used to create -[Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob) objects from an -HTML [canvas](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas) -element. - -## Setup - -Install via [NPM](https://www.npmjs.com/package/blueimp-canvas-to-blob): - -```sh -npm install blueimp-canvas-to-blob -``` - -This will install the JavaScript files inside -`./node_modules/blueimp-canvas-to-blob/js/` relative to your current directory, -from where you can copy them into a folder that is served by your web server. - -Next include the minified JavaScript Canvas to Blob script in your HTML markup: - -```html -<script src="js/canvas-to-blob.min.js"></script> -``` - -Or alternatively, include the non-minified version: - -```html -<script src="js/canvas-to-blob.js"></script> -``` - -## Usage - -You can use the `canvas.toBlob()` method in the same way as the native -implementation: - -```js -var canvas = document.createElement('canvas') -// Edit the canvas ... -if (canvas.toBlob) { - canvas.toBlob(function (blob) { - // Do something with the blob object, - // e.g. create multipart form data for file uploads: - var formData = new FormData() - formData.append('file', blob, 'image.jpg') - // ... - }, 'image/jpeg') -} -``` - -## Requirements - -The JavaScript Canvas to Blob function has zero dependencies. - -However, it is a very suitable complement to the -[JavaScript Load Image](https://github.com/blueimp/JavaScript-Load-Image) -function. - -## Browsers - -The following browsers have native support for -[HTMLCanvasElement.toBlob](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob): - -- Chrome 50+ -- Firefox 19+ -- Safari 11+ -- Mobile Chrome 50+ (Android) -- Mobile Firefox 4+ (Android) -- Mobile Safari 11+ (iOS) -- Edge 79+ - -Browsers which implement the following APIs support `canvas.toBlob()` via -polyfill: - -- [HTMLCanvasElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement) -- [HTMLCanvasElement.toDataURL](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toDataURL) -- [Blob() constructor](https://developer.mozilla.org/en-US/docs/Web/API/Blob/Blob) -- [atob](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/atob) -- [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer) -- [Uint8Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array) - -This includes the following browsers: - -- Chrome 20+ -- Firefox 13+ -- Safari 8+ -- Mobile Chrome 25+ (Android) -- Mobile Firefox 14+ (Android) -- Mobile Safari 8+ (iOS) -- Edge 74+ -- Edge Legacy 12+ -- Internet Explorer 10+ - -## API - -In addition to the `canvas.toBlob()` polyfill, the JavaScript Canvas to Blob -script exposes its helper function `dataURLtoBlob(url)`: - -```js -// Uncomment the following line when using a module loader like webpack: -// var dataURLtoBlob = require('blueimp-canvas-to-blob') - -// black+white 3x2 GIF, base64 data: -var b64 = 'R0lGODdhAwACAPEAAAAAAP///yZFySZFySH5BAEAAAIALAAAAAADAAIAAAIDRAJZADs=' -var url = 'data:image/gif;base64,' + b64 -var blob = dataURLtoBlob(url) -``` - -## Test - -[Unit tests](https://blueimp.github.io/JavaScript-Canvas-to-Blob/test/) - -## License - -The JavaScript Canvas to Blob script is released under the -[MIT license](https://opensource.org/licenses/MIT). diff --git a/lib/web/jquery/fileUploader/vendor/blueimp-canvas-to-blob/js/canvas-to-blob.js b/lib/web/jquery/fileUploader/vendor/blueimp-canvas-to-blob/js/canvas-to-blob.js deleted file mode 100644 index 8cd717bc1205f..0000000000000 --- a/lib/web/jquery/fileUploader/vendor/blueimp-canvas-to-blob/js/canvas-to-blob.js +++ /dev/null @@ -1,143 +0,0 @@ -/* - * JavaScript Canvas to Blob - * https://github.com/blueimp/JavaScript-Canvas-to-Blob - * - * Copyright 2012, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * https://opensource.org/licenses/MIT - * - * Based on stackoverflow user Stoive's code snippet: - * http://stackoverflow.com/q/4998908 - */ - -/* global define, Uint8Array, ArrayBuffer, module */ - -;(function (window) { - 'use strict' - - var CanvasPrototype = - window.HTMLCanvasElement && window.HTMLCanvasElement.prototype - var hasBlobConstructor = - window.Blob && - (function () { - try { - return Boolean(new Blob()) - } catch (e) { - return false - } - })() - var hasArrayBufferViewSupport = - hasBlobConstructor && - window.Uint8Array && - (function () { - try { - return new Blob([new Uint8Array(100)]).size === 100 - } catch (e) { - return false - } - })() - var BlobBuilder = - window.BlobBuilder || - window.WebKitBlobBuilder || - window.MozBlobBuilder || - window.MSBlobBuilder - var dataURIPattern = /^data:((.*?)(;charset=.*?)?)(;base64)?,/ - var dataURLtoBlob = - (hasBlobConstructor || BlobBuilder) && - window.atob && - window.ArrayBuffer && - window.Uint8Array && - function (dataURI) { - var matches, - mediaType, - isBase64, - dataString, - byteString, - arrayBuffer, - intArray, - i, - bb - // Parse the dataURI components as per RFC 2397 - matches = dataURI.match(dataURIPattern) - if (!matches) { - throw new Error('invalid data URI') - } - // Default to text/plain;charset=US-ASCII - mediaType = matches[2] - ? matches[1] - : 'text/plain' + (matches[3] || ';charset=US-ASCII') - isBase64 = !!matches[4] - dataString = dataURI.slice(matches[0].length) - if (isBase64) { - // Convert base64 to raw binary data held in a string: - byteString = atob(dataString) - } else { - // Convert base64/URLEncoded data component to raw binary: - byteString = decodeURIComponent(dataString) - } - // Write the bytes of the string to an ArrayBuffer: - arrayBuffer = new ArrayBuffer(byteString.length) - intArray = new Uint8Array(arrayBuffer) - for (i = 0; i < byteString.length; i += 1) { - intArray[i] = byteString.charCodeAt(i) - } - // Write the ArrayBuffer (or ArrayBufferView) to a blob: - if (hasBlobConstructor) { - return new Blob([hasArrayBufferViewSupport ? intArray : arrayBuffer], { - type: mediaType - }) - } - bb = new BlobBuilder() - bb.append(arrayBuffer) - return bb.getBlob(mediaType) - } - if (window.HTMLCanvasElement && !CanvasPrototype.toBlob) { - if (CanvasPrototype.mozGetAsFile) { - CanvasPrototype.toBlob = function (callback, type, quality) { - var self = this - setTimeout(function () { - if (quality && CanvasPrototype.toDataURL && dataURLtoBlob) { - callback(dataURLtoBlob(self.toDataURL(type, quality))) - } else { - callback(self.mozGetAsFile('blob', type)) - } - }) - } - } else if (CanvasPrototype.toDataURL && dataURLtoBlob) { - if (CanvasPrototype.msToBlob) { - CanvasPrototype.toBlob = function (callback, type, quality) { - var self = this - setTimeout(function () { - if ( - ((type && type !== 'image/png') || quality) && - CanvasPrototype.toDataURL && - dataURLtoBlob - ) { - callback(dataURLtoBlob(self.toDataURL(type, quality))) - } else { - callback(self.msToBlob(type)) - } - }) - } - } else { - CanvasPrototype.toBlob = function (callback, type, quality) { - var self = this - setTimeout(function () { - callback(dataURLtoBlob(self.toDataURL(type, quality))) - }) - } - } - } - } - if (typeof define === 'function' && define.amd) { - define(function () { - return dataURLtoBlob - }) - } else if (typeof module === 'object' && module.exports) { - module.exports = dataURLtoBlob - } else { - window.dataURLtoBlob = dataURLtoBlob - } -})(window) diff --git a/lib/web/jquery/fileUploader/vendor/blueimp-load-image/LICENSE.txt b/lib/web/jquery/fileUploader/vendor/blueimp-load-image/LICENSE.txt deleted file mode 100644 index d6a9d74758be3..0000000000000 --- a/lib/web/jquery/fileUploader/vendor/blueimp-load-image/LICENSE.txt +++ /dev/null @@ -1,20 +0,0 @@ -MIT License - -Copyright © 2011 Sebastian Tschan, https://blueimp.net - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/lib/web/jquery/fileUploader/vendor/blueimp-load-image/README.md b/lib/web/jquery/fileUploader/vendor/blueimp-load-image/README.md deleted file mode 100644 index 77b6b1195e3de..0000000000000 --- a/lib/web/jquery/fileUploader/vendor/blueimp-load-image/README.md +++ /dev/null @@ -1,1070 +0,0 @@ -# JavaScript Load Image - -> A JavaScript library to load and transform image files. - -## Contents - -- [Demo](https://blueimp.github.io/JavaScript-Load-Image/) -- [Description](#description) -- [Setup](#setup) -- [Usage](#usage) - - [Image loading](#image-loading) - - [Image scaling](#image-scaling) -- [Requirements](#requirements) -- [Browser support](#browser-support) -- [API](#api) - - [Callback](#callback) - - [Function signature](#function-signature) - - [Cancel image loading](#cancel-image-loading) - - [Callback arguments](#callback-arguments) - - [Error handling](#error-handling) - - [Promise](#promise) -- [Options](#options) - - [maxWidth](#maxwidth) - - [maxHeight](#maxheight) - - [minWidth](#minwidth) - - [minHeight](#minheight) - - [sourceWidth](#sourcewidth) - - [sourceHeight](#sourceheight) - - [top](#top) - - [right](#right) - - [bottom](#bottom) - - [left](#left) - - [contain](#contain) - - [cover](#cover) - - [aspectRatio](#aspectratio) - - [pixelRatio](#pixelratio) - - [downsamplingRatio](#downsamplingratio) - - [imageSmoothingEnabled](#imagesmoothingenabled) - - [imageSmoothingQuality](#imagesmoothingquality) - - [crop](#crop) - - [orientation](#orientation) - - [meta](#meta) - - [canvas](#canvas) - - [crossOrigin](#crossorigin) - - [noRevoke](#norevoke) -- [Metadata parsing](#metadata-parsing) - - [Image head](#image-head) - - [Exif parser](#exif-parser) - - [Exif Thumbnail](#exif-thumbnail) - - [Exif IFD](#exif-ifd) - - [GPSInfo IFD](#gpsinfo-ifd) - - [Interoperability IFD](#interoperability-ifd) - - [Exif parser options](#exif-parser-options) - - [Exif writer](#exif-writer) - - [IPTC parser](#iptc-parser) - - [IPTC parser options](#iptc-parser-options) -- [License](#license) -- [Credits](#credits) - -## Description - -JavaScript Load Image is a library to load images provided as `File` or `Blob` -objects or via `URL`. It returns an optionally **scaled**, **cropped** or -**rotated** HTML `img` or `canvas` element. - -It also provides methods to parse image metadata to extract -[IPTC](https://iptc.org/standards/photo-metadata/) and -[Exif](https://en.wikipedia.org/wiki/Exif) tags as well as embedded thumbnail -images, to overwrite the Exif Orientation value and to restore the complete -image header after resizing. - -## Setup - -Install via [NPM](https://www.npmjs.com/package/blueimp-load-image): - -```sh -npm install blueimp-load-image -``` - -This will install the JavaScript files inside -`./node_modules/blueimp-load-image/js/` relative to your current directory, from -where you can copy them into a folder that is served by your web server. - -Next include the combined and minified JavaScript Load Image script in your HTML -markup: - -```html -<script src="js/load-image.all.min.js"></script> -``` - -Or alternatively, choose which components you want to include: - -```html -<!-- required for all operations --> -<script src="js/load-image.js"></script> - -<!-- required for scaling, cropping and as dependency for rotation --> -<script src="js/load-image-scale.js"></script> - -<!-- required to parse meta data and to restore the complete image head --> -<script src="js/load-image-meta.js"></script> - -<!-- required to parse meta data from images loaded via URL --> -<script src="js/load-image-fetch.js"></script> - -<!-- required for rotation and cross-browser image orientation --> -<script src="js/load-image-orientation.js"></script> - -<!-- required to parse Exif tags and cross-browser image orientation --> -<script src="js/load-image-exif.js"></script> - -<!-- required to display text mappings for Exif tags --> -<script src="js/load-image-exif-map.js"></script> - -<!-- required to parse IPTC tags --> -<script src="js/load-image-iptc.js"></script> - -<!-- required to display text mappings for IPTC tags --> -<script src="js/load-image-iptc-map.js"></script> -``` - -## Usage - -### Image loading - -In your application code, use the `loadImage()` function with -[callback](#callback) style: - -```js -document.getElementById('file-input').onchange = function () { - loadImage( - this.files[0], - function (img) { - document.body.appendChild(img) - }, - { maxWidth: 600 } // Options - ) -} -``` - -Or use the [Promise](#promise) based API like this ([requires](#requirements) a -polyfill for older browsers): - -```js -document.getElementById('file-input').onchange = function () { - loadImage(this.files[0], { maxWidth: 600 }).then(function (data) { - document.body.appendChild(data.image) - }) -} -``` - -With -[async/await](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Asynchronous/Async_await) -(requires a modern browser or a code transpiler like -[Babel](https://babeljs.io/) or [TypeScript](https://www.typescriptlang.org/)): - -```js -document.getElementById('file-input').onchange = async function () { - let data = await loadImage(this.files[0], { maxWidth: 600 }) - document.body.appendChild(data.image) -} -``` - -### Image scaling - -It is also possible to use the image scaling functionality directly with an -existing image: - -```js -var scaledImage = loadImage.scale( - img, // img or canvas element - { maxWidth: 600 } -) -``` - -## Requirements - -The JavaScript Load Image library has zero dependencies, but benefits from the -following two -[polyfills](https://developer.mozilla.org/en-US/docs/Glossary/Polyfill): - -- [blueimp-canvas-to-blob](https://github.com/blueimp/JavaScript-Canvas-to-Blob) - for browsers without native - [HTMLCanvasElement.toBlob](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob) - support, to create `Blob` objects out of `canvas` elements. -- [promise-polyfill](https://github.com/taylorhakes/promise-polyfill) to be able - to use the - [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) - based `loadImage` API in Browsers without native `Promise` support. - -## Browser support - -Browsers which implement the following APIs support all options: - -- Loading images from File and Blob objects: - - [URL.createObjectURL](https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL) - or - [FileReader.readAsDataURL](https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readAsDataURL) -- Parsing meta data: - - [FileReader.readAsArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readAsArrayBuffer) - - [Blob.slice](https://developer.mozilla.org/en-US/docs/Web/API/Blob/slice) - - [DataView](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView) - (no [BigInt](https://developer.mozilla.org/en-US/docs/Glossary/BigInt) - support required) -- Parsing meta data from images loaded via URL: - - [fetch Response.blob](https://developer.mozilla.org/en-US/docs/Web/API/Body/blob) - or - [XMLHttpRequest.responseType blob](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseType#blob) -- Promise based API: - - [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) - -This includes (but is not limited to) the following browsers: - -- Chrome 32+ -- Firefox 29+ -- Safari 8+ -- Mobile Chrome 42+ (Android) -- Mobile Firefox 50+ (Android) -- Mobile Safari 8+ (iOS) -- Edge 74+ -- Edge Legacy 12+ -- Internet Explorer 10+ `*` - -`*` Internet Explorer [requires](#requirements) a polyfill for the `Promise` -based API. - -Loading an image from a URL and applying transformations (scaling, cropping and -rotating - except `orientation:true`, which requires reading meta data) is -supported by all browsers which implement the -[HTMLCanvasElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement) -interface. - -Loading an image from a URL and scaling it in size is supported by all browsers -which implement the -[img](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img) element and -has been tested successfully with browser engines as old as Internet Explorer 5 -(via -[IE11's emulation mode](<https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/samples/dn255001(v=vs.85)>)). - -The `loadImage()` function applies options using -[progressive enhancement](https://en.wikipedia.org/wiki/Progressive_enhancement) -and falls back to a configuration that is supported by the browser, e.g. if the -`canvas` element is not supported, an equivalent `img` element is returned. - -## API - -### Callback - -#### Function signature - -The `loadImage()` function accepts a -[File](https://developer.mozilla.org/en-US/docs/Web/API/File) or -[Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob) object or an image -URL as first argument. - -If a [File](https://developer.mozilla.org/en-US/docs/Web/API/File) or -[Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob) is passed as -parameter, it returns an HTML `img` element if the browser supports the -[URL](https://developer.mozilla.org/en-US/docs/Web/API/URL) API, alternatively a -[FileReader](https://developer.mozilla.org/en-US/docs/Web/API/FileReader) object -if the `FileReader` API is supported, or `false`. - -It always returns an HTML -[img](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Img) element -when passing an image URL: - -```js -var loadingImage = loadImage( - 'https://example.org/image.png', - function (img) { - document.body.appendChild(img) - }, - { maxWidth: 600 } -) -``` - -#### Cancel image loading - -Some browsers (e.g. Chrome) will cancel the image loading process if the `src` -property of an `img` element is changed. -To avoid unnecessary requests, we can use the -[data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs) -of a 1x1 pixel transparent GIF image as `src` target to cancel the original -image download. - -To disable callback handling, we can also unset the image event handlers and for -maximum browser compatibility, cancel the file reading process if the returned -object is a -[FileReader](https://developer.mozilla.org/en-US/docs/Web/API/FileReader) -instance: - -```js -var loadingImage = loadImage( - 'https://example.org/image.png', - function (img) { - document.body.appendChild(img) - }, - { maxWidth: 600 } -) - -if (loadingImage) { - // Unset event handling for the loading image: - loadingImage.onload = loadingImage.onerror = null - - // Cancel image loading process: - if (loadingImage.abort) { - // FileReader instance, stop the file reading process: - loadingImage.abort() - } else { - // HTMLImageElement element, cancel the original image request by changing - // the target source to the data URL of a 1x1 pixel transparent image GIF: - loadingImage.src = - 'data:image/gif;base64,' + - 'R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7' - } -} -``` - -**Please note:** -The `img` element (or `FileReader` instance) for the loading image is only -returned when using the callback style API and not available with the -[Promise](#promise) based API. - -#### Callback arguments - -For the callback style API, the second argument to `loadImage()` must be a -`callback` function, which is called when the image has been loaded or an error -occurred while loading the image. - -The callback function is passed two arguments: - -1. An HTML [img](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img) - element or - [canvas](https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API) - element, or an - [Event](https://developer.mozilla.org/en-US/docs/Web/API/Event) object of - type `error`. -2. An object with the original image dimensions as properties and potentially - additional [metadata](#metadata-parsing). - -```js -loadImage( - fileOrBlobOrUrl, - function (img, data) { - document.body.appendChild(img) - console.log('Original image width: ', data.originalWidth) - console.log('Original image height: ', data.originalHeight) - }, - { maxWidth: 600, meta: true } -) -``` - -**Please note:** -The original image dimensions reflect the natural width and height of the loaded -image before applying any transformation. -For consistent values across browsers, [metadata](#metadata-parsing) parsing has -to be enabled via `meta:true`, so `loadImage` can detect automatic image -orientation and normalize the dimensions. - -#### Error handling - -Example code implementing error handling: - -```js -loadImage( - fileOrBlobOrUrl, - function (img, data) { - if (img.type === 'error') { - console.error('Error loading image file') - } else { - document.body.appendChild(img) - } - }, - { maxWidth: 600 } -) -``` - -### Promise - -If the `loadImage()` function is called without a `callback` function as second -argument and the -[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) -API is available, it returns a `Promise` object: - -```js -loadImage(fileOrBlobOrUrl, { maxWidth: 600, meta: true }) - .then(function (data) { - document.body.appendChild(data.image) - console.log('Original image width: ', data.originalWidth) - console.log('Original image height: ', data.originalHeight) - }) - .catch(function (err) { - // Handling image loading errors - console.log(err) - }) -``` - -The `Promise` resolves with an object with the following properties: - -- `image`: An HTML - [img](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img) or - [canvas](https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API) element. -- `originalWidth`: The original width of the image. -- `originalHeight`: The original height of the image. - -Please also read the note about original image dimensions normalization in the -[callback arguments](#callback-arguments) section. - -If [metadata](#metadata-parsing) has been parsed, additional properties might be -present on the object. - -If image loading fails, the `Promise` rejects with an -[Event](https://developer.mozilla.org/en-US/docs/Web/API/Event) object of type -`error`. - -## Options - -The optional options argument to `loadImage()` allows to configure the image -loading. - -It can be used the following way with the callback style: - -```js -loadImage( - fileOrBlobOrUrl, - function (img) { - document.body.appendChild(img) - }, - { - maxWidth: 600, - maxHeight: 300, - minWidth: 100, - minHeight: 50, - canvas: true - } -) -``` - -Or the following way with the `Promise` based API: - -```js -loadImage(fileOrBlobOrUrl, { - maxWidth: 600, - maxHeight: 300, - minWidth: 100, - minHeight: 50, - canvas: true -}).then(function (data) { - document.body.appendChild(data.image) -}) -``` - -All settings are optional. By default, the image is returned as HTML `img` -element without any image size restrictions. - -### maxWidth - -Defines the maximum width of the `img`/`canvas` element. - -### maxHeight - -Defines the maximum height of the `img`/`canvas` element. - -### minWidth - -Defines the minimum width of the `img`/`canvas` element. - -### minHeight - -Defines the minimum height of the `img`/`canvas` element. - -### sourceWidth - -The width of the sub-rectangle of the source image to draw into the destination -canvas. -Defaults to the source image width and requires `canvas: true`. - -### sourceHeight - -The height of the sub-rectangle of the source image to draw into the destination -canvas. -Defaults to the source image height and requires `canvas: true`. - -### top - -The top margin of the sub-rectangle of the source image. -Defaults to `0` and requires `canvas: true`. - -### right - -The right margin of the sub-rectangle of the source image. -Defaults to `0` and requires `canvas: true`. - -### bottom - -The bottom margin of the sub-rectangle of the source image. -Defaults to `0` and requires `canvas: true`. - -### left - -The left margin of the sub-rectangle of the source image. -Defaults to `0` and requires `canvas: true`. - -### contain - -Scales the image up/down to contain it in the max dimensions if set to `true`. -This emulates the CSS feature -[background-image: contain](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Backgrounds_and_Borders/Resizing_background_images#contain). - -### cover - -Scales the image up/down to cover the max dimensions with the image dimensions -if set to `true`. -This emulates the CSS feature -[background-image: cover](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Backgrounds_and_Borders/Resizing_background_images#cover). - -### aspectRatio - -Crops the image to the given aspect ratio (e.g. `16/9`). -Setting the `aspectRatio` also enables the `crop` option. - -### pixelRatio - -Defines the ratio of the canvas pixels to the physical image pixels on the -screen. -Should be set to -[window.devicePixelRatio](https://developer.mozilla.org/en-US/docs/Web/API/Window/devicePixelRatio) -unless the scaled image is not rendered on screen. -Defaults to `1` and requires `canvas: true`. - -### downsamplingRatio - -Defines the ratio in which the image is downsampled (scaled down in steps). -By default, images are downsampled in one step. -With a ratio of `0.5`, each step scales the image to half the size, before -reaching the target dimensions. -Requires `canvas: true`. - -### imageSmoothingEnabled - -If set to `false`, -[disables image smoothing](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/imageSmoothingEnabled). -Defaults to `true` and requires `canvas: true`. - -### imageSmoothingQuality - -Sets the -[quality of image smoothing](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/imageSmoothingQuality). -Possible values: `'low'`, `'medium'`, `'high'` -Defaults to `'low'` and requires `canvas: true`. - -### crop - -Crops the image to the `maxWidth`/`maxHeight` constraints if set to `true`. -Enabling the `crop` option also enables the `canvas` option. - -### orientation - -Transform the canvas according to the specified Exif orientation, which can be -an `integer` in the range of `1` to `8` or the boolean value `true`. - -When set to `true`, it will set the orientation value based on the Exif data of -the image, which will be parsed automatically if the Exif extension is -available. - -Exif orientation values to correctly display the letter F: - -```diagram - 1 2 - ██████ ██████ - ██ ██ - ████ ████ - ██ ██ - ██ ██ - - 3 4 - ██ ██ - ██ ██ - ████ ████ - ██ ██ - ██████ ██████ - - 5 6 -██████████ ██ -██ ██ ██ ██ -██ ██████████ - - 7 8 - ██ ██████████ - ██ ██ ██ ██ -██████████ ██ -``` - -Setting `orientation` to `true` enables the `canvas` and `meta` options, unless -the browser supports automatic image orientation (see -[browser support for image-orientation](https://caniuse.com/#feat=css-image-orientation)). - -Setting `orientation` to `1` enables the `canvas` and `meta` options if the -browser does support automatic image orientation (to allow reset of the -orientation). - -Setting `orientation` to an integer in the range of `2` to `8` always enables -the `canvas` option and also enables the `meta` option if the browser supports -automatic image orientation (again to allow reset). - -### meta - -Automatically parses the image metadata if set to `true`. - -If metadata has been found, the data object passed as second argument to the -callback function has additional properties (see -[metadata parsing](#metadata-parsing)). - -If the file is given as URL and the browser supports the -[fetch API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) or the -XHR -[responseType](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseType) -`blob`, fetches the file as `Blob` to be able to parse the metadata. - -### canvas - -Returns the image as -[canvas](https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API) element if -set to `true`. - -### crossOrigin - -Sets the `crossOrigin` property on the `img` element for loading -[CORS enabled images](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image). - -### noRevoke - -By default, the -[created object URL](https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL) -is revoked after the image has been loaded, except when this option is set to -`true`. - -## Metadata parsing - -If the Load Image Meta extension is included, it is possible to parse image meta -data automatically with the `meta` option: - -```js -loadImage( - fileOrBlobOrUrl, - function (img, data) { - console.log('Original image head: ', data.imageHead) - console.log('Exif data: ', data.exif) // requires exif extension - console.log('IPTC data: ', data.iptc) // requires iptc extension - }, - { meta: true } -) -``` - -Or alternatively via `loadImage.parseMetaData`, which can be used with an -available `File` or `Blob` object as first argument: - -```js -loadImage.parseMetaData( - fileOrBlob, - function (data) { - console.log('Original image head: ', data.imageHead) - console.log('Exif data: ', data.exif) // requires exif extension - console.log('IPTC data: ', data.iptc) // requires iptc extension - }, - { - maxMetaDataSize: 262144 - } -) -``` - -Or using the -[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) -based API: - -```js -loadImage - .parseMetaData(fileOrBlob, { - maxMetaDataSize: 262144 - }) - .then(function (data) { - console.log('Original image head: ', data.imageHead) - console.log('Exif data: ', data.exif) // requires exif extension - console.log('IPTC data: ', data.iptc) // requires iptc extension - }) -``` - -The Metadata extension adds additional options used for the `parseMetaData` -method: - -- `maxMetaDataSize`: Maximum number of bytes of metadata to parse. -- `disableImageHead`: Disable parsing the original image head. -- `disableMetaDataParsers`: Disable parsing metadata (image head only) - -### Image head - -Resized JPEG images can be combined with their original image head via -`loadImage.replaceHead`, which requires the resized image as `Blob` object as -first argument and an `ArrayBuffer` image head as second argument. - -With callback style, the third argument must be a `callback` function, which is -called with the new `Blob` object: - -```js -loadImage( - fileOrBlobOrUrl, - function (img, data) { - if (data.imageHead) { - img.toBlob(function (blob) { - loadImage.replaceHead(blob, data.imageHead, function (newBlob) { - // do something with the new Blob object - }) - }, 'image/jpeg') - } - }, - { meta: true, canvas: true, maxWidth: 800 } -) -``` - -Or using the -[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) -based API like this: - -```js -loadImage(fileOrBlobOrUrl, { meta: true, canvas: true, maxWidth: 800 }) - .then(function (data) { - if (!data.imageHead) throw new Error('Could not parse image metadata') - return new Promise(function (resolve) { - data.image.toBlob(function (blob) { - data.blob = blob - resolve(data) - }, 'image/jpeg') - }) - }) - .then(function (data) { - return loadImage.replaceHead(data.blob, data.imageHead) - }) - .then(function (blob) { - // do something with the new Blob object - }) - .catch(function (err) { - console.error(err) - }) -``` - -**Please note:** -`Blob` objects of resized images can be created via -[HTMLCanvasElement.toBlob](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob). -[blueimp-canvas-to-blob](https://github.com/blueimp/JavaScript-Canvas-to-Blob) -provides a polyfill for browsers without native `canvas.toBlob()` support. - -### Exif parser - -If you include the Load Image Exif Parser extension, the argument passed to the -callback for `parseMetaData` will contain the following additional properties if -Exif data could be found in the given image: - -- `exif`: The parsed Exif tags -- `exifOffsets`: The parsed Exif tag offsets -- `exifTiffOffset`: TIFF header offset (used for offset pointers) -- `exifLittleEndian`: little endian order if true, big endian if false - -The `exif` object stores the parsed Exif tags: - -```js -var orientation = data.exif[0x0112] // Orientation -``` - -The `exif` and `exifOffsets` objects also provide a `get()` method to retrieve -the tag value/offset via the tag's mapped name: - -```js -var orientation = data.exif.get('Orientation') -var orientationOffset = data.exifOffsets.get('Orientation') -``` - -By default, only the following names are mapped: - -- `Orientation` -- `Thumbnail` (see [Exif Thumbnail](#exif-thumbnail)) -- `Exif` (see [Exif IFD](#exif-ifd)) -- `GPSInfo` (see [GPSInfo IFD](#gpsinfo-ifd)) -- `Interoperability` (see [Interoperability IFD](#interoperability-ifd)) - -If you also include the Load Image Exif Map library, additional tag mappings -become available, as well as three additional methods: - -- `exif.getText()` -- `exif.getName()` -- `exif.getAll()` - -```js -var orientationText = data.exif.getText('Orientation') // e.g. "Rotate 90° CW" - -var name = data.exif.getName(0x0112) // "Orientation" - -// A map of all parsed tags with their mapped names/text as keys/values: -var allTags = data.exif.getAll() -``` - -#### Exif Thumbnail - -Example code displaying a thumbnail image embedded into the Exif metadata: - -```js -loadImage( - fileOrBlobOrUrl, - function (img, data) { - var exif = data.exif - var thumbnail = exif && exif.get('Thumbnail') - var blob = thumbnail && thumbnail.get('Blob') - if (blob) { - loadImage( - blob, - function (thumbImage) { - document.body.appendChild(thumbImage) - }, - { orientation: exif.get('Orientation') } - ) - } - }, - { meta: true } -) -``` - -#### Exif IFD - -Example code displaying data from the Exif IFD (Image File Directory) that -contains Exif specified TIFF tags: - -```js -loadImage( - fileOrBlobOrUrl, - function (img, data) { - var exifIFD = data.exif && data.exif.get('Exif') - if (exifIFD) { - // Map of all Exif IFD tags with their mapped names/text as keys/values: - console.log(exifIFD.getAll()) - // A specific Exif IFD tag value: - console.log(exifIFD.get('UserComment')) - } - }, - { meta: true } -) -``` - -#### GPSInfo IFD - -Example code displaying data from the Exif IFD (Image File Directory) that -contains [GPS](https://en.wikipedia.org/wiki/Global_Positioning_System) info: - -```js -loadImage( - fileOrBlobOrUrl, - function (img, data) { - var gpsInfo = data.exif && data.exif.get('GPSInfo') - if (gpsInfo) { - // Map of all GPSInfo tags with their mapped names/text as keys/values: - console.log(gpsInfo.getAll()) - // A specific GPSInfo tag value: - console.log(gpsInfo.get('GPSLatitude')) - } - }, - { meta: true } -) -``` - -#### Interoperability IFD - -Example code displaying data from the Exif IFD (Image File Directory) that -contains Interoperability data: - -```js -loadImage( - fileOrBlobOrUrl, - function (img, data) { - var interoperabilityData = data.exif && data.exif.get('Interoperability') - if (interoperabilityData) { - // The InteroperabilityIndex tag value: - console.log(interoperabilityData.get('InteroperabilityIndex')) - } - }, - { meta: true } -) -``` - -#### Exif parser options - -The Exif parser adds additional options: - -- `disableExif`: Disables Exif parsing when `true`. -- `disableExifOffsets`: Disables storing Exif tag offsets when `true`. -- `includeExifTags`: A map of Exif tags to include for parsing (includes all but - the excluded tags by default). -- `excludeExifTags`: A map of Exif tags to exclude from parsing (defaults to - exclude `Exif` `MakerNote`). - -An example parsing only Orientation, Thumbnail and ExifVersion tags: - -```js -loadImage.parseMetaData( - fileOrBlob, - function (data) { - console.log('Exif data: ', data.exif) - }, - { - includeExifTags: { - 0x0112: true, // Orientation - ifd1: { - 0x0201: true, // JPEGInterchangeFormat (Thumbnail data offset) - 0x0202: true // JPEGInterchangeFormatLength (Thumbnail data length) - }, - 0x8769: { - // ExifIFDPointer - 0x9000: true // ExifVersion - } - } - } -) -``` - -An example excluding `Exif` `MakerNote` and `GPSInfo`: - -```js -loadImage.parseMetaData( - fileOrBlob, - function (data) { - console.log('Exif data: ', data.exif) - }, - { - excludeExifTags: { - 0x8769: { - // ExifIFDPointer - 0x927c: true // MakerNote - }, - 0x8825: true // GPSInfoIFDPointer - } - } -) -``` - -### Exif writer - -The Exif parser extension also includes a minimal writer that allows to override -the Exif `Orientation` value in the parsed `imageHead` `ArrayBuffer`: - -```js -loadImage( - fileOrBlobOrUrl, - function (img, data) { - if (data.imageHead && data.exif) { - // Reset Exif Orientation data: - loadImage.writeExifData(data.imageHead, data, 'Orientation', 1) - img.toBlob(function (blob) { - loadImage.replaceHead(blob, data.imageHead, function (newBlob) { - // do something with newBlob - }) - }, 'image/jpeg') - } - }, - { meta: true, orientation: true, canvas: true, maxWidth: 800 } -) -``` - -**Please note:** -The Exif writer relies on the Exif tag offsets being available as -`data.exifOffsets` property, which requires that Exif data has been parsed from -the image. -The Exif writer can only change existing values, not add new tags, e.g. it -cannot add an Exif `Orientation` tag for an image that does not have one. - -### IPTC parser - -If you include the Load Image IPTC Parser extension, the argument passed to the -callback for `parseMetaData` will contain the following additional properties if -IPTC data could be found in the given image: - -- `iptc`: The parsed IPTC tags -- `iptcOffsets`: The parsed IPTC tag offsets - -The `iptc` object stores the parsed IPTC tags: - -```js -var objectname = data.iptc[5] -``` - -The `iptc` and `iptcOffsets` objects also provide a `get()` method to retrieve -the tag value/offset via the tag's mapped name: - -```js -var objectname = data.iptc.get('ObjectName') -``` - -By default, only the following names are mapped: - -- `ObjectName` - -If you also include the Load Image IPTC Map library, additional tag mappings -become available, as well as three additional methods: - -- `iptc.getText()` -- `iptc.getName()` -- `iptc.getAll()` - -```js -var keywords = data.iptc.getText('Keywords') // e.g.: ['Weather','Sky'] - -var name = data.iptc.getName(5) // ObjectName - -// A map of all parsed tags with their mapped names/text as keys/values: -var allTags = data.iptc.getAll() -``` - -#### IPTC parser options - -The IPTC parser adds additional options: - -- `disableIptc`: Disables IPTC parsing when true. -- `disableIptcOffsets`: Disables storing IPTC tag offsets when `true`. -- `includeIptcTags`: A map of IPTC tags to include for parsing (includes all but - the excluded tags by default). -- `excludeIptcTags`: A map of IPTC tags to exclude from parsing (defaults to - exclude `ObjectPreviewData`). - -An example parsing only the `ObjectName` tag: - -```js -loadImage.parseMetaData( - fileOrBlob, - function (data) { - console.log('IPTC data: ', data.iptc) - }, - { - includeIptcTags: { - 5: true // ObjectName - } - } -) -``` - -An example excluding `ApplicationRecordVersion` and `ObjectPreviewData`: - -```js -loadImage.parseMetaData( - fileOrBlob, - function (data) { - console.log('IPTC data: ', data.iptc) - }, - { - excludeIptcTags: { - 0: true, // ApplicationRecordVersion - 202: true // ObjectPreviewData - } - } -) -``` - -## License - -The JavaScript Load Image library is released under the -[MIT license](https://opensource.org/licenses/MIT). - -## Credits - -- Original image metadata handling implemented with the help and contribution of - Achim Stöhr. -- Original Exif tags mapping based on Jacob Seidelin's - [exif-js](https://github.com/exif-js/exif-js) library. -- Original IPTC parser implementation by - [Dave Bevan](https://github.com/bevand10). diff --git a/lib/web/jquery/fileUploader/vendor/blueimp-load-image/js/index.js b/lib/web/jquery/fileUploader/vendor/blueimp-load-image/js/index.js deleted file mode 100644 index 20875a2d08535..0000000000000 --- a/lib/web/jquery/fileUploader/vendor/blueimp-load-image/js/index.js +++ /dev/null @@ -1,12 +0,0 @@ -/* global module, require */ - -module.exports = require('jquery/fileUploader/vendor/blueimp-load-image/js/load-image') - -require('jquery/fileUploader/vendor/blueimp-load-image/js/load-image-scale') -require('jquery/fileUploader/vendor/blueimp-load-image/js/load-image-meta') -require('jquery/fileUploader/vendor/blueimp-load-image/js/load-image-fetch') -require('jquery/fileUploader/vendor/blueimp-load-image/js/load-image-exif') -require('jquery/fileUploader/vendor/blueimp-load-image/js/load-image-exif-map') -require('jquery/fileUploader/vendor/blueimp-load-image/js/load-image-iptc') -require('jquery/fileUploader/vendor/blueimp-load-image/js/load-image-iptc-map') -require('jquery/fileUploader/vendor/blueimp-load-image/js/load-image-orientation') diff --git a/lib/web/jquery/fileUploader/vendor/blueimp-load-image/js/load-image-exif-map.js b/lib/web/jquery/fileUploader/vendor/blueimp-load-image/js/load-image-exif-map.js deleted file mode 100644 index 29f11aff226fc..0000000000000 --- a/lib/web/jquery/fileUploader/vendor/blueimp-load-image/js/load-image-exif-map.js +++ /dev/null @@ -1,420 +0,0 @@ -/* - * JavaScript Load Image Exif Map - * https://github.com/blueimp/JavaScript-Load-Image - * - * Copyright 2013, Sebastian Tschan - * https://blueimp.net - * - * Exif tags mapping based on - * https://github.com/jseidelin/exif-js - * - * Licensed under the MIT license: - * https://opensource.org/licenses/MIT - */ - -/* global define, module, require */ - -;(function (factory) { - 'use strict' - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define(['jquery/fileUploader/vendor/blueimp-load-image/js/load-image', 'jquery/fileUploader/vendor/blueimp-load-image/js/load-image-exif'], factory) - } else if (typeof module === 'object' && module.exports) { - factory(require('jquery/fileUploader/vendor/blueimp-load-image/js/load-image'), require('jquery/fileUploader/vendor/blueimp-load-image/js/load-image-exif')) - } else { - // Browser globals: - factory(window.loadImage) - } -})(function (loadImage) { - 'use strict' - - var ExifMapProto = loadImage.ExifMap.prototype - - ExifMapProto.tags = { - // ================= - // TIFF tags (IFD0): - // ================= - 0x0100: 'ImageWidth', - 0x0101: 'ImageHeight', - 0x0102: 'BitsPerSample', - 0x0103: 'Compression', - 0x0106: 'PhotometricInterpretation', - 0x0112: 'Orientation', - 0x0115: 'SamplesPerPixel', - 0x011c: 'PlanarConfiguration', - 0x0212: 'YCbCrSubSampling', - 0x0213: 'YCbCrPositioning', - 0x011a: 'XResolution', - 0x011b: 'YResolution', - 0x0128: 'ResolutionUnit', - 0x0111: 'StripOffsets', - 0x0116: 'RowsPerStrip', - 0x0117: 'StripByteCounts', - 0x0201: 'JPEGInterchangeFormat', - 0x0202: 'JPEGInterchangeFormatLength', - 0x012d: 'TransferFunction', - 0x013e: 'WhitePoint', - 0x013f: 'PrimaryChromaticities', - 0x0211: 'YCbCrCoefficients', - 0x0214: 'ReferenceBlackWhite', - 0x0132: 'DateTime', - 0x010e: 'ImageDescription', - 0x010f: 'Make', - 0x0110: 'Model', - 0x0131: 'Software', - 0x013b: 'Artist', - 0x8298: 'Copyright', - 0x8769: { - // ExifIFDPointer - 0x9000: 'ExifVersion', // EXIF version - 0xa000: 'FlashpixVersion', // Flashpix format version - 0xa001: 'ColorSpace', // Color space information tag - 0xa002: 'PixelXDimension', // Valid width of meaningful image - 0xa003: 'PixelYDimension', // Valid height of meaningful image - 0xa500: 'Gamma', - 0x9101: 'ComponentsConfiguration', // Information about channels - 0x9102: 'CompressedBitsPerPixel', // Compressed bits per pixel - 0x927c: 'MakerNote', // Any desired information written by the manufacturer - 0x9286: 'UserComment', // Comments by user - 0xa004: 'RelatedSoundFile', // Name of related sound file - 0x9003: 'DateTimeOriginal', // Date and time when the original image was generated - 0x9004: 'DateTimeDigitized', // Date and time when the image was stored digitally - 0x9010: 'OffsetTime', // Time zone when the image file was last changed - 0x9011: 'OffsetTimeOriginal', // Time zone when the image was stored digitally - 0x9012: 'OffsetTimeDigitized', // Time zone when the image was stored digitally - 0x9290: 'SubSecTime', // Fractions of seconds for DateTime - 0x9291: 'SubSecTimeOriginal', // Fractions of seconds for DateTimeOriginal - 0x9292: 'SubSecTimeDigitized', // Fractions of seconds for DateTimeDigitized - 0x829a: 'ExposureTime', // Exposure time (in seconds) - 0x829d: 'FNumber', - 0x8822: 'ExposureProgram', // Exposure program - 0x8824: 'SpectralSensitivity', // Spectral sensitivity - 0x8827: 'PhotographicSensitivity', // EXIF 2.3, ISOSpeedRatings in EXIF 2.2 - 0x8828: 'OECF', // Optoelectric conversion factor - 0x8830: 'SensitivityType', - 0x8831: 'StandardOutputSensitivity', - 0x8832: 'RecommendedExposureIndex', - 0x8833: 'ISOSpeed', - 0x8834: 'ISOSpeedLatitudeyyy', - 0x8835: 'ISOSpeedLatitudezzz', - 0x9201: 'ShutterSpeedValue', // Shutter speed - 0x9202: 'ApertureValue', // Lens aperture - 0x9203: 'BrightnessValue', // Value of brightness - 0x9204: 'ExposureBias', // Exposure bias - 0x9205: 'MaxApertureValue', // Smallest F number of lens - 0x9206: 'SubjectDistance', // Distance to subject in meters - 0x9207: 'MeteringMode', // Metering mode - 0x9208: 'LightSource', // Kind of light source - 0x9209: 'Flash', // Flash status - 0x9214: 'SubjectArea', // Location and area of main subject - 0x920a: 'FocalLength', // Focal length of the lens in mm - 0xa20b: 'FlashEnergy', // Strobe energy in BCPS - 0xa20c: 'SpatialFrequencyResponse', - 0xa20e: 'FocalPlaneXResolution', // Number of pixels in width direction per FPRUnit - 0xa20f: 'FocalPlaneYResolution', // Number of pixels in height direction per FPRUnit - 0xa210: 'FocalPlaneResolutionUnit', // Unit for measuring the focal plane resolution - 0xa214: 'SubjectLocation', // Location of subject in image - 0xa215: 'ExposureIndex', // Exposure index selected on camera - 0xa217: 'SensingMethod', // Image sensor type - 0xa300: 'FileSource', // Image source (3 == DSC) - 0xa301: 'SceneType', // Scene type (1 == directly photographed) - 0xa302: 'CFAPattern', // Color filter array geometric pattern - 0xa401: 'CustomRendered', // Special processing - 0xa402: 'ExposureMode', // Exposure mode - 0xa403: 'WhiteBalance', // 1 = auto white balance, 2 = manual - 0xa404: 'DigitalZoomRatio', // Digital zoom ratio - 0xa405: 'FocalLengthIn35mmFilm', - 0xa406: 'SceneCaptureType', // Type of scene - 0xa407: 'GainControl', // Degree of overall image gain adjustment - 0xa408: 'Contrast', // Direction of contrast processing applied by camera - 0xa409: 'Saturation', // Direction of saturation processing applied by camera - 0xa40a: 'Sharpness', // Direction of sharpness processing applied by camera - 0xa40b: 'DeviceSettingDescription', - 0xa40c: 'SubjectDistanceRange', // Distance to subject - 0xa420: 'ImageUniqueID', // Identifier assigned uniquely to each image - 0xa430: 'CameraOwnerName', - 0xa431: 'BodySerialNumber', - 0xa432: 'LensSpecification', - 0xa433: 'LensMake', - 0xa434: 'LensModel', - 0xa435: 'LensSerialNumber' - }, - 0x8825: { - // GPSInfoIFDPointer - 0x0000: 'GPSVersionID', - 0x0001: 'GPSLatitudeRef', - 0x0002: 'GPSLatitude', - 0x0003: 'GPSLongitudeRef', - 0x0004: 'GPSLongitude', - 0x0005: 'GPSAltitudeRef', - 0x0006: 'GPSAltitude', - 0x0007: 'GPSTimeStamp', - 0x0008: 'GPSSatellites', - 0x0009: 'GPSStatus', - 0x000a: 'GPSMeasureMode', - 0x000b: 'GPSDOP', - 0x000c: 'GPSSpeedRef', - 0x000d: 'GPSSpeed', - 0x000e: 'GPSTrackRef', - 0x000f: 'GPSTrack', - 0x0010: 'GPSImgDirectionRef', - 0x0011: 'GPSImgDirection', - 0x0012: 'GPSMapDatum', - 0x0013: 'GPSDestLatitudeRef', - 0x0014: 'GPSDestLatitude', - 0x0015: 'GPSDestLongitudeRef', - 0x0016: 'GPSDestLongitude', - 0x0017: 'GPSDestBearingRef', - 0x0018: 'GPSDestBearing', - 0x0019: 'GPSDestDistanceRef', - 0x001a: 'GPSDestDistance', - 0x001b: 'GPSProcessingMethod', - 0x001c: 'GPSAreaInformation', - 0x001d: 'GPSDateStamp', - 0x001e: 'GPSDifferential', - 0x001f: 'GPSHPositioningError' - }, - 0xa005: { - // InteroperabilityIFDPointer - 0x0001: 'InteroperabilityIndex' - } - } - - // IFD1 directory can contain any IFD0 tags: - ExifMapProto.tags.ifd1 = ExifMapProto.tags - - ExifMapProto.stringValues = { - ExposureProgram: { - 0: 'Undefined', - 1: 'Manual', - 2: 'Normal program', - 3: 'Aperture priority', - 4: 'Shutter priority', - 5: 'Creative program', - 6: 'Action program', - 7: 'Portrait mode', - 8: 'Landscape mode' - }, - MeteringMode: { - 0: 'Unknown', - 1: 'Average', - 2: 'CenterWeightedAverage', - 3: 'Spot', - 4: 'MultiSpot', - 5: 'Pattern', - 6: 'Partial', - 255: 'Other' - }, - LightSource: { - 0: 'Unknown', - 1: 'Daylight', - 2: 'Fluorescent', - 3: 'Tungsten (incandescent light)', - 4: 'Flash', - 9: 'Fine weather', - 10: 'Cloudy weather', - 11: 'Shade', - 12: 'Daylight fluorescent (D 5700 - 7100K)', - 13: 'Day white fluorescent (N 4600 - 5400K)', - 14: 'Cool white fluorescent (W 3900 - 4500K)', - 15: 'White fluorescent (WW 3200 - 3700K)', - 17: 'Standard light A', - 18: 'Standard light B', - 19: 'Standard light C', - 20: 'D55', - 21: 'D65', - 22: 'D75', - 23: 'D50', - 24: 'ISO studio tungsten', - 255: 'Other' - }, - Flash: { - 0x0000: 'Flash did not fire', - 0x0001: 'Flash fired', - 0x0005: 'Strobe return light not detected', - 0x0007: 'Strobe return light detected', - 0x0009: 'Flash fired, compulsory flash mode', - 0x000d: 'Flash fired, compulsory flash mode, return light not detected', - 0x000f: 'Flash fired, compulsory flash mode, return light detected', - 0x0010: 'Flash did not fire, compulsory flash mode', - 0x0018: 'Flash did not fire, auto mode', - 0x0019: 'Flash fired, auto mode', - 0x001d: 'Flash fired, auto mode, return light not detected', - 0x001f: 'Flash fired, auto mode, return light detected', - 0x0020: 'No flash function', - 0x0041: 'Flash fired, red-eye reduction mode', - 0x0045: 'Flash fired, red-eye reduction mode, return light not detected', - 0x0047: 'Flash fired, red-eye reduction mode, return light detected', - 0x0049: 'Flash fired, compulsory flash mode, red-eye reduction mode', - 0x004d: 'Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected', - 0x004f: 'Flash fired, compulsory flash mode, red-eye reduction mode, return light detected', - 0x0059: 'Flash fired, auto mode, red-eye reduction mode', - 0x005d: 'Flash fired, auto mode, return light not detected, red-eye reduction mode', - 0x005f: 'Flash fired, auto mode, return light detected, red-eye reduction mode' - }, - SensingMethod: { - 1: 'Undefined', - 2: 'One-chip color area sensor', - 3: 'Two-chip color area sensor', - 4: 'Three-chip color area sensor', - 5: 'Color sequential area sensor', - 7: 'Trilinear sensor', - 8: 'Color sequential linear sensor' - }, - SceneCaptureType: { - 0: 'Standard', - 1: 'Landscape', - 2: 'Portrait', - 3: 'Night scene' - }, - SceneType: { - 1: 'Directly photographed' - }, - CustomRendered: { - 0: 'Normal process', - 1: 'Custom process' - }, - WhiteBalance: { - 0: 'Auto white balance', - 1: 'Manual white balance' - }, - GainControl: { - 0: 'None', - 1: 'Low gain up', - 2: 'High gain up', - 3: 'Low gain down', - 4: 'High gain down' - }, - Contrast: { - 0: 'Normal', - 1: 'Soft', - 2: 'Hard' - }, - Saturation: { - 0: 'Normal', - 1: 'Low saturation', - 2: 'High saturation' - }, - Sharpness: { - 0: 'Normal', - 1: 'Soft', - 2: 'Hard' - }, - SubjectDistanceRange: { - 0: 'Unknown', - 1: 'Macro', - 2: 'Close view', - 3: 'Distant view' - }, - FileSource: { - 3: 'DSC' - }, - ComponentsConfiguration: { - 0: '', - 1: 'Y', - 2: 'Cb', - 3: 'Cr', - 4: 'R', - 5: 'G', - 6: 'B' - }, - Orientation: { - 1: 'Original', - 2: 'Horizontal flip', - 3: 'Rotate 180° CCW', - 4: 'Vertical flip', - 5: 'Vertical flip + Rotate 90° CW', - 6: 'Rotate 90° CW', - 7: 'Horizontal flip + Rotate 90° CW', - 8: 'Rotate 90° CCW' - } - } - - ExifMapProto.getText = function (name) { - var value = this.get(name) - switch (name) { - case 'LightSource': - case 'Flash': - case 'MeteringMode': - case 'ExposureProgram': - case 'SensingMethod': - case 'SceneCaptureType': - case 'SceneType': - case 'CustomRendered': - case 'WhiteBalance': - case 'GainControl': - case 'Contrast': - case 'Saturation': - case 'Sharpness': - case 'SubjectDistanceRange': - case 'FileSource': - case 'Orientation': - return this.stringValues[name][value] - case 'ExifVersion': - case 'FlashpixVersion': - if (!value) return - return String.fromCharCode(value[0], value[1], value[2], value[3]) - case 'ComponentsConfiguration': - if (!value) return - return ( - this.stringValues[name][value[0]] + - this.stringValues[name][value[1]] + - this.stringValues[name][value[2]] + - this.stringValues[name][value[3]] - ) - case 'GPSVersionID': - if (!value) return - return value[0] + '.' + value[1] + '.' + value[2] + '.' + value[3] - } - return String(value) - } - - ExifMapProto.getAll = function () { - var map = {} - var prop - var obj - var name - for (prop in this) { - if (Object.prototype.hasOwnProperty.call(this, prop)) { - obj = this[prop] - if (obj && obj.getAll) { - map[this.ifds[prop].name] = obj.getAll() - } else { - name = this.tags[prop] - if (name) map[name] = this.getText(name) - } - } - } - return map - } - - ExifMapProto.getName = function (tagCode) { - var name = this.tags[tagCode] - if (typeof name === 'object') return this.ifds[tagCode].name - return name - } - - // Extend the map of tag names to tag codes: - ;(function () { - var tags = ExifMapProto.tags - var prop - var ifd - var subTags - // Map the tag names to tags: - for (prop in tags) { - if (Object.prototype.hasOwnProperty.call(tags, prop)) { - ifd = ExifMapProto.ifds[prop] - if (ifd) { - subTags = tags[prop] - for (prop in subTags) { - if (Object.prototype.hasOwnProperty.call(subTags, prop)) { - ifd.map[subTags[prop]] = Number(prop) - } - } - } else { - ExifMapProto.map[tags[prop]] = Number(prop) - } - } - } - })() -}) diff --git a/lib/web/jquery/fileUploader/vendor/blueimp-load-image/js/load-image-exif.js b/lib/web/jquery/fileUploader/vendor/blueimp-load-image/js/load-image-exif.js deleted file mode 100644 index 3c0937b8b590a..0000000000000 --- a/lib/web/jquery/fileUploader/vendor/blueimp-load-image/js/load-image-exif.js +++ /dev/null @@ -1,460 +0,0 @@ -/* - * JavaScript Load Image Exif Parser - * https://github.com/blueimp/JavaScript-Load-Image - * - * Copyright 2013, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * https://opensource.org/licenses/MIT - */ - -/* global define, module, require, DataView */ - -/* eslint-disable no-console */ - -;(function (factory) { - 'use strict' - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define(['jquery/fileUploader/vendor/blueimp-load-image/js/load-image', 'jquery/fileUploader/vendor/blueimp-load-image/js/load-image-meta'], factory) - } else if (typeof module === 'object' && module.exports) { - factory(require('jquery/fileUploader/vendor/blueimp-load-image/js/load-image'), require('jquery/fileUploader/vendor/blueimp-load-image/js/load-image-meta')) - } else { - // Browser globals: - factory(window.loadImage) - } -})(function (loadImage) { - 'use strict' - - /** - * Exif tag map - * - * @name ExifMap - * @class - * @param {number|string} tagCode IFD tag code - */ - function ExifMap(tagCode) { - if (tagCode) { - Object.defineProperty(this, 'map', { - value: this.ifds[tagCode].map - }) - Object.defineProperty(this, 'tags', { - value: (this.tags && this.tags[tagCode]) || {} - }) - } - } - - ExifMap.prototype.map = { - Orientation: 0x0112, - Thumbnail: 'ifd1', - Blob: 0x0201, // Alias for JPEGInterchangeFormat - Exif: 0x8769, - GPSInfo: 0x8825, - Interoperability: 0xa005 - } - - ExifMap.prototype.ifds = { - ifd1: { name: 'Thumbnail', map: ExifMap.prototype.map }, - 0x8769: { name: 'Exif', map: {} }, - 0x8825: { name: 'GPSInfo', map: {} }, - 0xa005: { name: 'Interoperability', map: {} } - } - - /** - * Retrieves exif tag value - * - * @param {number|string} id Exif tag code or name - * @returns {object} Exif tag value - */ - ExifMap.prototype.get = function (id) { - return this[id] || this[this.map[id]] - } - - /** - * Returns the Exif Thumbnail data as Blob. - * - * @param {DataView} dataView Data view interface - * @param {number} offset Thumbnail data offset - * @param {number} length Thumbnail data length - * @returns {undefined|Blob} Returns the Thumbnail Blob or undefined - */ - function getExifThumbnail(dataView, offset, length) { - if (!length) return - if (offset + length > dataView.byteLength) { - console.log('Invalid Exif data: Invalid thumbnail data.') - return - } - return new Blob( - [loadImage.bufferSlice.call(dataView.buffer, offset, offset + length)], - { - type: 'image/jpeg' - } - ) - } - - var ExifTagTypes = { - // byte, 8-bit unsigned int: - 1: { - getValue: function (dataView, dataOffset) { - return dataView.getUint8(dataOffset) - }, - size: 1 - }, - // ascii, 8-bit byte: - 2: { - getValue: function (dataView, dataOffset) { - return String.fromCharCode(dataView.getUint8(dataOffset)) - }, - size: 1, - ascii: true - }, - // short, 16 bit int: - 3: { - getValue: function (dataView, dataOffset, littleEndian) { - return dataView.getUint16(dataOffset, littleEndian) - }, - size: 2 - }, - // long, 32 bit int: - 4: { - getValue: function (dataView, dataOffset, littleEndian) { - return dataView.getUint32(dataOffset, littleEndian) - }, - size: 4 - }, - // rational = two long values, first is numerator, second is denominator: - 5: { - getValue: function (dataView, dataOffset, littleEndian) { - return ( - dataView.getUint32(dataOffset, littleEndian) / - dataView.getUint32(dataOffset + 4, littleEndian) - ) - }, - size: 8 - }, - // slong, 32 bit signed int: - 9: { - getValue: function (dataView, dataOffset, littleEndian) { - return dataView.getInt32(dataOffset, littleEndian) - }, - size: 4 - }, - // srational, two slongs, first is numerator, second is denominator: - 10: { - getValue: function (dataView, dataOffset, littleEndian) { - return ( - dataView.getInt32(dataOffset, littleEndian) / - dataView.getInt32(dataOffset + 4, littleEndian) - ) - }, - size: 8 - } - } - // undefined, 8-bit byte, value depending on field: - ExifTagTypes[7] = ExifTagTypes[1] - - /** - * Returns Exif tag value. - * - * @param {DataView} dataView Data view interface - * @param {number} tiffOffset TIFF offset - * @param {number} offset Tag offset - * @param {number} type Tag type - * @param {number} length Tag length - * @param {boolean} littleEndian Little endian encoding - * @returns {object} Tag value - */ - function getExifValue( - dataView, - tiffOffset, - offset, - type, - length, - littleEndian - ) { - var tagType = ExifTagTypes[type] - var tagSize - var dataOffset - var values - var i - var str - var c - if (!tagType) { - console.log('Invalid Exif data: Invalid tag type.') - return - } - tagSize = tagType.size * length - // Determine if the value is contained in the dataOffset bytes, - // or if the value at the dataOffset is a pointer to the actual data: - dataOffset = - tagSize > 4 - ? tiffOffset + dataView.getUint32(offset + 8, littleEndian) - : offset + 8 - if (dataOffset + tagSize > dataView.byteLength) { - console.log('Invalid Exif data: Invalid data offset.') - return - } - if (length === 1) { - return tagType.getValue(dataView, dataOffset, littleEndian) - } - values = [] - for (i = 0; i < length; i += 1) { - values[i] = tagType.getValue( - dataView, - dataOffset + i * tagType.size, - littleEndian - ) - } - if (tagType.ascii) { - str = '' - // Concatenate the chars: - for (i = 0; i < values.length; i += 1) { - c = values[i] - // Ignore the terminating NULL byte(s): - if (c === '\u0000') { - break - } - str += c - } - return str - } - return values - } - - /** - * Determines if the given tag should be included. - * - * @param {object} includeTags Map of tags to include - * @param {object} excludeTags Map of tags to exclude - * @param {number|string} tagCode Tag code to check - * @returns {boolean} True if the tag should be included - */ - function shouldIncludeTag(includeTags, excludeTags, tagCode) { - return ( - (!includeTags || includeTags[tagCode]) && - (!excludeTags || excludeTags[tagCode] !== true) - ) - } - - /** - * Parses Exif tags. - * - * @param {DataView} dataView Data view interface - * @param {number} tiffOffset TIFF offset - * @param {number} dirOffset Directory offset - * @param {boolean} littleEndian Little endian encoding - * @param {ExifMap} tags Map to store parsed exif tags - * @param {ExifMap} tagOffsets Map to store parsed exif tag offsets - * @param {object} includeTags Map of tags to include - * @param {object} excludeTags Map of tags to exclude - * @returns {number} Next directory offset - */ - function parseExifTags( - dataView, - tiffOffset, - dirOffset, - littleEndian, - tags, - tagOffsets, - includeTags, - excludeTags - ) { - var tagsNumber, dirEndOffset, i, tagOffset, tagNumber, tagValue - if (dirOffset + 6 > dataView.byteLength) { - console.log('Invalid Exif data: Invalid directory offset.') - return - } - tagsNumber = dataView.getUint16(dirOffset, littleEndian) - dirEndOffset = dirOffset + 2 + 12 * tagsNumber - if (dirEndOffset + 4 > dataView.byteLength) { - console.log('Invalid Exif data: Invalid directory size.') - return - } - for (i = 0; i < tagsNumber; i += 1) { - tagOffset = dirOffset + 2 + 12 * i - tagNumber = dataView.getUint16(tagOffset, littleEndian) - if (!shouldIncludeTag(includeTags, excludeTags, tagNumber)) continue - tagValue = getExifValue( - dataView, - tiffOffset, - tagOffset, - dataView.getUint16(tagOffset + 2, littleEndian), // tag type - dataView.getUint32(tagOffset + 4, littleEndian), // tag length - littleEndian - ) - tags[tagNumber] = tagValue - if (tagOffsets) { - tagOffsets[tagNumber] = tagOffset - } - } - // Return the offset to the next directory: - return dataView.getUint32(dirEndOffset, littleEndian) - } - - /** - * Parses tags in a given IFD (Image File Directory). - * - * @param {object} data Data object to store exif tags and offsets - * @param {number|string} tagCode IFD tag code - * @param {DataView} dataView Data view interface - * @param {number} tiffOffset TIFF offset - * @param {boolean} littleEndian Little endian encoding - * @param {object} includeTags Map of tags to include - * @param {object} excludeTags Map of tags to exclude - */ - function parseExifIFD( - data, - tagCode, - dataView, - tiffOffset, - littleEndian, - includeTags, - excludeTags - ) { - var dirOffset = data.exif[tagCode] - if (dirOffset) { - data.exif[tagCode] = new ExifMap(tagCode) - if (data.exifOffsets) { - data.exifOffsets[tagCode] = new ExifMap(tagCode) - } - parseExifTags( - dataView, - tiffOffset, - tiffOffset + dirOffset, - littleEndian, - data.exif[tagCode], - data.exifOffsets && data.exifOffsets[tagCode], - includeTags && includeTags[tagCode], - excludeTags && excludeTags[tagCode] - ) - } - } - - loadImage.parseExifData = function (dataView, offset, length, data, options) { - if (options.disableExif) { - return - } - var includeTags = options.includeExifTags - var excludeTags = options.excludeExifTags || { - 0x8769: { - // ExifIFDPointer - 0x927c: true // MakerNote - } - } - var tiffOffset = offset + 10 - var littleEndian - var dirOffset - var thumbnailIFD - // Check for the ASCII code for "Exif" (0x45786966): - if (dataView.getUint32(offset + 4) !== 0x45786966) { - // No Exif data, might be XMP data instead - return - } - if (tiffOffset + 8 > dataView.byteLength) { - console.log('Invalid Exif data: Invalid segment size.') - return - } - // Check for the two null bytes: - if (dataView.getUint16(offset + 8) !== 0x0000) { - console.log('Invalid Exif data: Missing byte alignment offset.') - return - } - // Check the byte alignment: - switch (dataView.getUint16(tiffOffset)) { - case 0x4949: - littleEndian = true - break - case 0x4d4d: - littleEndian = false - break - default: - console.log('Invalid Exif data: Invalid byte alignment marker.') - return - } - // Check for the TIFF tag marker (0x002A): - if (dataView.getUint16(tiffOffset + 2, littleEndian) !== 0x002a) { - console.log('Invalid Exif data: Missing TIFF marker.') - return - } - // Retrieve the directory offset bytes, usually 0x00000008 or 8 decimal: - dirOffset = dataView.getUint32(tiffOffset + 4, littleEndian) - // Create the exif object to store the tags: - data.exif = new ExifMap() - if (!options.disableExifOffsets) { - data.exifOffsets = new ExifMap() - data.exifTiffOffset = tiffOffset - data.exifLittleEndian = littleEndian - } - // Parse the tags of the main image directory (IFD0) and retrieve the - // offset to the next directory (IFD1), usually the thumbnail directory: - dirOffset = parseExifTags( - dataView, - tiffOffset, - tiffOffset + dirOffset, - littleEndian, - data.exif, - data.exifOffsets, - includeTags, - excludeTags - ) - if (dirOffset && shouldIncludeTag(includeTags, excludeTags, 'ifd1')) { - data.exif.ifd1 = dirOffset - if (data.exifOffsets) { - data.exifOffsets.ifd1 = tiffOffset + dirOffset - } - } - Object.keys(data.exif.ifds).forEach(function (tagCode) { - parseExifIFD( - data, - tagCode, - dataView, - tiffOffset, - littleEndian, - includeTags, - excludeTags - ) - }) - thumbnailIFD = data.exif.ifd1 - // Check for JPEG Thumbnail offset and data length: - if (thumbnailIFD && thumbnailIFD[0x0201]) { - thumbnailIFD[0x0201] = getExifThumbnail( - dataView, - tiffOffset + thumbnailIFD[0x0201], - thumbnailIFD[0x0202] // Thumbnail data length - ) - } - } - - // Registers the Exif parser for the APP1 JPEG metadata segment: - loadImage.metaDataParsers.jpeg[0xffe1].push(loadImage.parseExifData) - - loadImage.exifWriters = { - // Orientation writer: - 0x0112: function (buffer, data, value) { - var orientationOffset = data.exifOffsets[0x0112] - if (!orientationOffset) return buffer - var view = new DataView(buffer, orientationOffset + 8, 2) - view.setUint16(0, value, data.exifLittleEndian) - return buffer - } - } - - loadImage.writeExifData = function (buffer, data, id, value) { - loadImage.exifWriters[data.exif.map[id]](buffer, data, value) - } - - loadImage.ExifMap = ExifMap - - // Adds the following properties to the parseMetaData callback data: - // - exif: The parsed Exif tags - // - exifOffsets: The parsed Exif tag offsets - // - exifTiffOffset: TIFF header offset (used for offset pointers) - // - exifLittleEndian: little endian order if true, big endian if false - - // Adds the following options to the parseMetaData method: - // - disableExif: Disables Exif parsing when true. - // - disableExifOffsets: Disables storing Exif tag offsets when true. - // - includeExifTags: A map of Exif tags to include for parsing. - // - excludeExifTags: A map of Exif tags to exclude from parsing. -}) diff --git a/lib/web/jquery/fileUploader/vendor/blueimp-load-image/js/load-image-fetch.js b/lib/web/jquery/fileUploader/vendor/blueimp-load-image/js/load-image-fetch.js deleted file mode 100644 index 28a28fb83e6cd..0000000000000 --- a/lib/web/jquery/fileUploader/vendor/blueimp-load-image/js/load-image-fetch.js +++ /dev/null @@ -1,103 +0,0 @@ -/* - * JavaScript Load Image Fetch - * https://github.com/blueimp/JavaScript-Load-Image - * - * Copyright 2017, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * https://opensource.org/licenses/MIT - */ - -/* global define, module, require, Promise */ - -;(function (factory) { - 'use strict' - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define(['jquery/fileUploader/vendor/blueimp-load-image/js/load-image'], factory) - } else if (typeof module === 'object' && module.exports) { - factory(require('jquery/fileUploader/vendor/blueimp-load-image/js/load-image')) - } else { - // Browser globals: - factory(window.loadImage) - } -})(function (loadImage) { - 'use strict' - - var global = loadImage.global - - if ( - global.fetch && - global.Request && - global.Response && - global.Response.prototype.blob - ) { - loadImage.fetchBlob = function (url, callback, options) { - /** - * Fetch response handler. - * - * @param {Response} response Fetch response - * @returns {Blob} Fetched Blob. - */ - function responseHandler(response) { - return response.blob() - } - if (global.Promise && typeof callback !== 'function') { - return fetch(new Request(url, callback)).then(responseHandler) - } - fetch(new Request(url, options)) - .then(responseHandler) - .then(callback) - [ - // Avoid parsing error in IE<9, where catch is a reserved word. - // eslint-disable-next-line dot-notation - 'catch' - ](function (err) { - callback(null, err) - }) - } - } else if ( - global.XMLHttpRequest && - // https://xhr.spec.whatwg.org/#the-responsetype-attribute - new XMLHttpRequest().responseType === '' - ) { - loadImage.fetchBlob = function (url, callback, options) { - /** - * Promise executor - * - * @param {Function} resolve Resolution function - * @param {Function} reject Rejection function - */ - function executor(resolve, reject) { - options = options || {} // eslint-disable-line no-param-reassign - var req = new XMLHttpRequest() - req.open(options.method || 'GET', url) - if (options.headers) { - Object.keys(options.headers).forEach(function (key) { - req.setRequestHeader(key, options.headers[key]) - }) - } - req.withCredentials = options.credentials === 'include' - req.responseType = 'blob' - req.onload = function () { - resolve(req.response) - } - req.onerror = req.onabort = req.ontimeout = function (err) { - if (resolve === reject) { - // Not using Promises - reject(null, err) - } else { - reject(err) - } - } - req.send(options.body) - } - if (global.Promise && typeof callback !== 'function') { - options = callback // eslint-disable-line no-param-reassign - return new Promise(executor) - } - return executor(callback, callback) - } - } -}) diff --git a/lib/web/jquery/fileUploader/vendor/blueimp-load-image/js/load-image-iptc-map.js b/lib/web/jquery/fileUploader/vendor/blueimp-load-image/js/load-image-iptc-map.js deleted file mode 100644 index cd959a24b3541..0000000000000 --- a/lib/web/jquery/fileUploader/vendor/blueimp-load-image/js/load-image-iptc-map.js +++ /dev/null @@ -1,169 +0,0 @@ -/* - * JavaScript Load Image IPTC Map - * https://github.com/blueimp/JavaScript-Load-Image - * - * Copyright 2013, Sebastian Tschan - * Copyright 2018, Dave Bevan - * - * IPTC tags mapping based on - * https://iptc.org/standards/photo-metadata - * https://exiftool.org/TagNames/IPTC.html - * - * Licensed under the MIT license: - * https://opensource.org/licenses/MIT - */ - -/* global define, module, require */ - -;(function (factory) { - 'use strict' - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define(['jquery/fileUploader/vendor/blueimp-load-image/js/load-image', 'jquery/fileUploader/vendor/blueimp-load-image/js/load-image-iptc'], factory) - } else if (typeof module === 'object' && module.exports) { - factory(require('jquery/fileUploader/vendor/blueimp-load-image/js/load-image'), require('jquery/fileUploader/vendor/blueimp-load-image/js/load-image-iptc')) - } else { - // Browser globals: - factory(window.loadImage) - } -})(function (loadImage) { - 'use strict' - - var IptcMapProto = loadImage.IptcMap.prototype - - IptcMapProto.tags = { - 0: 'ApplicationRecordVersion', - 3: 'ObjectTypeReference', - 4: 'ObjectAttributeReference', - 5: 'ObjectName', - 7: 'EditStatus', - 8: 'EditorialUpdate', - 10: 'Urgency', - 12: 'SubjectReference', - 15: 'Category', - 20: 'SupplementalCategories', - 22: 'FixtureIdentifier', - 25: 'Keywords', - 26: 'ContentLocationCode', - 27: 'ContentLocationName', - 30: 'ReleaseDate', - 35: 'ReleaseTime', - 37: 'ExpirationDate', - 38: 'ExpirationTime', - 40: 'SpecialInstructions', - 42: 'ActionAdvised', - 45: 'ReferenceService', - 47: 'ReferenceDate', - 50: 'ReferenceNumber', - 55: 'DateCreated', - 60: 'TimeCreated', - 62: 'DigitalCreationDate', - 63: 'DigitalCreationTime', - 65: 'OriginatingProgram', - 70: 'ProgramVersion', - 75: 'ObjectCycle', - 80: 'Byline', - 85: 'BylineTitle', - 90: 'City', - 92: 'Sublocation', - 95: 'State', - 100: 'CountryCode', - 101: 'Country', - 103: 'OriginalTransmissionReference', - 105: 'Headline', - 110: 'Credit', - 115: 'Source', - 116: 'CopyrightNotice', - 118: 'Contact', - 120: 'Caption', - 121: 'LocalCaption', - 122: 'Writer', - 125: 'RasterizedCaption', - 130: 'ImageType', - 131: 'ImageOrientation', - 135: 'LanguageIdentifier', - 150: 'AudioType', - 151: 'AudioSamplingRate', - 152: 'AudioSamplingResolution', - 153: 'AudioDuration', - 154: 'AudioOutcue', - 184: 'JobID', - 185: 'MasterDocumentID', - 186: 'ShortDocumentID', - 187: 'UniqueDocumentID', - 188: 'OwnerID', - 200: 'ObjectPreviewFileFormat', - 201: 'ObjectPreviewFileVersion', - 202: 'ObjectPreviewData', - 221: 'Prefs', - 225: 'ClassifyState', - 228: 'SimilarityIndex', - 230: 'DocumentNotes', - 231: 'DocumentHistory', - 232: 'ExifCameraInfo', - 255: 'CatalogSets' - } - - IptcMapProto.stringValues = { - 10: { - 0: '0 (reserved)', - 1: '1 (most urgent)', - 2: '2', - 3: '3', - 4: '4', - 5: '5 (normal urgency)', - 6: '6', - 7: '7', - 8: '8 (least urgent)', - 9: '9 (user-defined priority)' - }, - 75: { - a: 'Morning', - b: 'Both Morning and Evening', - p: 'Evening' - }, - 131: { - L: 'Landscape', - P: 'Portrait', - S: 'Square' - } - } - - IptcMapProto.getText = function (id) { - var value = this.get(id) - var tagCode = this.map[id] - var stringValue = this.stringValues[tagCode] - if (stringValue) return stringValue[value] - return String(value) - } - - IptcMapProto.getAll = function () { - var map = {} - var prop - var name - for (prop in this) { - if (Object.prototype.hasOwnProperty.call(this, prop)) { - name = this.tags[prop] - if (name) map[name] = this.getText(name) - } - } - return map - } - - IptcMapProto.getName = function (tagCode) { - return this.tags[tagCode] - } - - // Extend the map of tag names to tag codes: - ;(function () { - var tags = IptcMapProto.tags - var map = IptcMapProto.map || {} - var prop - // Map the tag names to tags: - for (prop in tags) { - if (Object.prototype.hasOwnProperty.call(tags, prop)) { - map[tags[prop]] = Number(prop) - } - } - })() -}) diff --git a/lib/web/jquery/fileUploader/vendor/blueimp-load-image/js/load-image-iptc.js b/lib/web/jquery/fileUploader/vendor/blueimp-load-image/js/load-image-iptc.js deleted file mode 100644 index f6b4594f9e130..0000000000000 --- a/lib/web/jquery/fileUploader/vendor/blueimp-load-image/js/load-image-iptc.js +++ /dev/null @@ -1,239 +0,0 @@ -/* - * JavaScript Load Image IPTC Parser - * https://github.com/blueimp/JavaScript-Load-Image - * - * Copyright 2013, Sebastian Tschan - * Copyright 2018, Dave Bevan - * https://blueimp.net - * - * Licensed under the MIT license: - * https://opensource.org/licenses/MIT - */ - -/* global define, module, require, DataView */ - -;(function (factory) { - 'use strict' - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define(['jquery/fileUploader/vendor/blueimp-load-image/js/load-image', 'jquery/fileUploader/vendor/blueimp-load-image/js/load-image-meta'], factory) - } else if (typeof module === 'object' && module.exports) { - factory(require('jquery/fileUploader/vendor/blueimp-load-image/js/load-image'), require('jquery/fileUploader/vendor/blueimp-load-image/js/load-image-meta')) - } else { - // Browser globals: - factory(window.loadImage) - } -})(function (loadImage) { - 'use strict' - - /** - * IPTC tag map - * - * @name IptcMap - * @class - */ - function IptcMap() {} - - IptcMap.prototype.map = { - ObjectName: 5 - } - - IptcMap.prototype.types = { - 0: 'Uint16', // ApplicationRecordVersion - 200: 'Uint16', // ObjectPreviewFileFormat - 201: 'Uint16', // ObjectPreviewFileVersion - 202: 'binary' // ObjectPreviewData - } - - /** - * Retrieves IPTC tag value - * - * @param {number|string} id IPTC tag code or name - * @returns {object} IPTC tag value - */ - IptcMap.prototype.get = function (id) { - return this[id] || this[this.map[id]] - } - - /** - * Retrieves string for the given DataView and range - * - * @param {DataView} dataView Data view interface - * @param {number} offset Offset start - * @param {number} length Offset length - * @returns {string} String value - */ - function getStringValue(dataView, offset, length) { - var outstr = '' - var end = offset + length - for (var n = offset; n < end; n += 1) { - outstr += String.fromCharCode(dataView.getUint8(n)) - } - return outstr - } - - /** - * Retrieves tag value for the given DataView and range - * - * @param {number} tagCode tag code - * @param {IptcMap} map IPTC tag map - * @param {DataView} dataView Data view interface - * @param {number} offset Range start - * @param {number} length Range length - * @returns {object} Tag value - */ - function getTagValue(tagCode, map, dataView, offset, length) { - if (map.types[tagCode] === 'binary') { - return new Blob([dataView.buffer.slice(offset, offset + length)]) - } - if (map.types[tagCode] === 'Uint16') { - return dataView.getUint16(offset) - } - return getStringValue(dataView, offset, length) - } - - /** - * Combines IPTC value with existing ones. - * - * @param {object} value Existing IPTC field value - * @param {object} newValue New IPTC field value - * @returns {object} Resulting IPTC field value - */ - function combineTagValues(value, newValue) { - if (value === undefined) return newValue - if (value instanceof Array) { - value.push(newValue) - return value - } - return [value, newValue] - } - - /** - * Parses IPTC tags. - * - * @param {DataView} dataView Data view interface - * @param {number} segmentOffset Segment offset - * @param {number} segmentLength Segment length - * @param {object} data Data export object - * @param {object} includeTags Map of tags to include - * @param {object} excludeTags Map of tags to exclude - */ - function parseIptcTags( - dataView, - segmentOffset, - segmentLength, - data, - includeTags, - excludeTags - ) { - var value, tagSize, tagCode - var segmentEnd = segmentOffset + segmentLength - var offset = segmentOffset - while (offset < segmentEnd) { - if ( - dataView.getUint8(offset) === 0x1c && // tag marker - dataView.getUint8(offset + 1) === 0x02 // record number, only handles v2 - ) { - tagCode = dataView.getUint8(offset + 2) - if ( - (!includeTags || includeTags[tagCode]) && - (!excludeTags || !excludeTags[tagCode]) - ) { - tagSize = dataView.getInt16(offset + 3) - value = getTagValue(tagCode, data.iptc, dataView, offset + 5, tagSize) - data.iptc[tagCode] = combineTagValues(data.iptc[tagCode], value) - if (data.iptcOffsets) { - data.iptcOffsets[tagCode] = offset - } - } - } - offset += 1 - } - } - - /** - * Tests if field segment starts at offset. - * - * @param {DataView} dataView Data view interface - * @param {number} offset Segment offset - * @returns {boolean} True if '8BIM<EOT><EOT>' exists at offset - */ - function isSegmentStart(dataView, offset) { - return ( - dataView.getUint32(offset) === 0x3842494d && // Photoshop segment start - dataView.getUint16(offset + 4) === 0x0404 // IPTC segment start - ) - } - - /** - * Returns header length. - * - * @param {DataView} dataView Data view interface - * @param {number} offset Segment offset - * @returns {number} Header length - */ - function getHeaderLength(dataView, offset) { - var length = dataView.getUint8(offset + 7) - if (length % 2 !== 0) length += 1 - // Check for pre photoshop 6 format - if (length === 0) { - // Always 4 - length = 4 - } - return length - } - - loadImage.parseIptcData = function (dataView, offset, length, data, options) { - if (options.disableIptc) { - return - } - var markerLength = offset + length - while (offset + 8 < markerLength) { - if (isSegmentStart(dataView, offset)) { - var headerLength = getHeaderLength(dataView, offset) - var segmentOffset = offset + 8 + headerLength - if (segmentOffset > markerLength) { - // eslint-disable-next-line no-console - console.log('Invalid IPTC data: Invalid segment offset.') - break - } - var segmentLength = dataView.getUint16(offset + 6 + headerLength) - if (offset + segmentLength > markerLength) { - // eslint-disable-next-line no-console - console.log('Invalid IPTC data: Invalid segment size.') - break - } - // Create the iptc object to store the tags: - data.iptc = new IptcMap() - if (!options.disableIptcOffsets) { - data.iptcOffsets = new IptcMap() - } - parseIptcTags( - dataView, - segmentOffset, - segmentLength, - data, - options.includeIptcTags, - options.excludeIptcTags || { 202: true } // ObjectPreviewData - ) - return - } - // eslint-disable-next-line no-param-reassign - offset += 1 - } - } - - // Registers this IPTC parser for the APP13 JPEG metadata segment: - loadImage.metaDataParsers.jpeg[0xffed].push(loadImage.parseIptcData) - - loadImage.IptcMap = IptcMap - - // Adds the following properties to the parseMetaData callback data: - // - iptc: The iptc tags, parsed by the parseIptcData method - - // Adds the following options to the parseMetaData method: - // - disableIptc: Disables IPTC parsing when true. - // - disableIptcOffsets: Disables storing IPTC tag offsets when true. - // - includeIptcTags: A map of IPTC tags to include for parsing. - // - excludeIptcTags: A map of IPTC tags to exclude from parsing. -}) diff --git a/lib/web/jquery/fileUploader/vendor/blueimp-load-image/js/load-image-meta.js b/lib/web/jquery/fileUploader/vendor/blueimp-load-image/js/load-image-meta.js deleted file mode 100644 index 20a06184c640d..0000000000000 --- a/lib/web/jquery/fileUploader/vendor/blueimp-load-image/js/load-image-meta.js +++ /dev/null @@ -1,259 +0,0 @@ -/* - * JavaScript Load Image Meta - * https://github.com/blueimp/JavaScript-Load-Image - * - * Copyright 2013, Sebastian Tschan - * https://blueimp.net - * - * Image metadata handling implementation - * based on the help and contribution of - * Achim Stöhr. - * - * Licensed under the MIT license: - * https://opensource.org/licenses/MIT - */ - -/* global define, module, require, Promise, DataView, Uint8Array, ArrayBuffer */ - -;(function (factory) { - 'use strict' - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define(['jquery/fileUploader/vendor/blueimp-load-image/js/load-image'], factory) - } else if (typeof module === 'object' && module.exports) { - factory(require('jquery/fileUploader/vendor/blueimp-load-image/js/load-image')) - } else { - // Browser globals: - factory(window.loadImage) - } -})(function (loadImage) { - 'use strict' - - var global = loadImage.global - var originalTransform = loadImage.transform - - var blobSlice = - global.Blob && - (Blob.prototype.slice || - Blob.prototype.webkitSlice || - Blob.prototype.mozSlice) - - var bufferSlice = - (global.ArrayBuffer && ArrayBuffer.prototype.slice) || - function (begin, end) { - // Polyfill for IE10, which does not support ArrayBuffer.slice - // eslint-disable-next-line no-param-reassign - end = end || this.byteLength - begin - var arr1 = new Uint8Array(this, begin, end) - var arr2 = new Uint8Array(end) - arr2.set(arr1) - return arr2.buffer - } - - var metaDataParsers = { - jpeg: { - 0xffe1: [], // APP1 marker - 0xffed: [] // APP13 marker - } - } - - /** - * Parses image metadata and calls the callback with an object argument - * with the following property: - * - imageHead: The complete image head as ArrayBuffer - * The options argument accepts an object and supports the following - * properties: - * - maxMetaDataSize: Defines the maximum number of bytes to parse. - * - disableImageHead: Disables creating the imageHead property. - * - * @param {Blob} file Blob object - * @param {Function} [callback] Callback function - * @param {object} [options] Parsing options - * @param {object} [data] Result data object - * @returns {Promise<object>|undefined} Returns Promise if no callback given. - */ - function parseMetaData(file, callback, options, data) { - var that = this - /** - * Promise executor - * - * @param {Function} resolve Resolution function - * @param {Function} reject Rejection function - * @returns {undefined} Undefined - */ - function executor(resolve, reject) { - if ( - !( - global.DataView && - blobSlice && - file && - file.size >= 12 && - file.type === 'image/jpeg' - ) - ) { - // Nothing to parse - return resolve(data) - } - // 256 KiB should contain all EXIF/ICC/IPTC segments: - var maxMetaDataSize = options.maxMetaDataSize || 262144 - if ( - !loadImage.readFile( - blobSlice.call(file, 0, maxMetaDataSize), - function (buffer) { - // Note on endianness: - // Since the marker and length bytes in JPEG files are always - // stored in big endian order, we can leave the endian parameter - // of the DataView methods undefined, defaulting to big endian. - var dataView = new DataView(buffer) - // Check for the JPEG marker (0xffd8): - if (dataView.getUint16(0) !== 0xffd8) { - return reject( - new Error('Invalid JPEG file: Missing JPEG marker.') - ) - } - var offset = 2 - var maxOffset = dataView.byteLength - 4 - var headLength = offset - var markerBytes - var markerLength - var parsers - var i - while (offset < maxOffset) { - markerBytes = dataView.getUint16(offset) - // Search for APPn (0xffeN) and COM (0xfffe) markers, - // which contain application-specific metadata like - // Exif, ICC and IPTC data and text comments: - if ( - (markerBytes >= 0xffe0 && markerBytes <= 0xffef) || - markerBytes === 0xfffe - ) { - // The marker bytes (2) are always followed by - // the length bytes (2), indicating the length of the - // marker segment, which includes the length bytes, - // but not the marker bytes, so we add 2: - markerLength = dataView.getUint16(offset + 2) + 2 - if (offset + markerLength > dataView.byteLength) { - // eslint-disable-next-line no-console - console.log('Invalid JPEG metadata: Invalid segment size.') - break - } - parsers = metaDataParsers.jpeg[markerBytes] - if (parsers && !options.disableMetaDataParsers) { - for (i = 0; i < parsers.length; i += 1) { - parsers[i].call( - that, - dataView, - offset, - markerLength, - data, - options - ) - } - } - offset += markerLength - headLength = offset - } else { - // Not an APPn or COM marker, probably safe to - // assume that this is the end of the metadata - break - } - } - // Meta length must be longer than JPEG marker (2) - // plus APPn marker (2), followed by length bytes (2): - if (!options.disableImageHead && headLength > 6) { - data.imageHead = bufferSlice.call(buffer, 0, headLength) - } - resolve(data) - }, - reject, - 'readAsArrayBuffer' - ) - ) { - // No support for the FileReader interface, nothing to parse - resolve(data) - } - } - options = options || {} // eslint-disable-line no-param-reassign - if (global.Promise && typeof callback !== 'function') { - options = callback || {} // eslint-disable-line no-param-reassign - data = options // eslint-disable-line no-param-reassign - return new Promise(executor) - } - data = data || {} // eslint-disable-line no-param-reassign - return executor(callback, callback) - } - - /** - * Replaces the head of a JPEG Blob - * - * @param {Blob} blob Blob object - * @param {ArrayBuffer} oldHead Old JPEG head - * @param {ArrayBuffer} newHead New JPEG head - * @returns {Blob} Combined Blob - */ - function replaceJPEGHead(blob, oldHead, newHead) { - if (!blob || !oldHead || !newHead) return null - return new Blob([newHead, blobSlice.call(blob, oldHead.byteLength)], { - type: 'image/jpeg' - }) - } - - /** - * Replaces the image head of a JPEG blob with the given one. - * Returns a Promise or calls the callback with the new Blob. - * - * @param {Blob} blob Blob object - * @param {ArrayBuffer} head New JPEG head - * @param {Function} [callback] Callback function - * @returns {Promise<Blob|null>|undefined} Combined Blob - */ - function replaceHead(blob, head, callback) { - var options = { maxMetaDataSize: 256, disableMetaDataParsers: true } - if (!callback && global.Promise) { - return parseMetaData(blob, options).then(function (data) { - return replaceJPEGHead(blob, data.imageHead, head) - }) - } - parseMetaData( - blob, - function (data) { - callback(replaceJPEGHead(blob, data.imageHead, head)) - }, - options - ) - } - - loadImage.transform = function (img, options, callback, file, data) { - if (loadImage.requiresMetaData(options)) { - data = data || {} // eslint-disable-line no-param-reassign - parseMetaData( - file, - function (result) { - if (result !== data) { - // eslint-disable-next-line no-console - if (global.console) console.log(result) - result = data // eslint-disable-line no-param-reassign - } - originalTransform.call( - loadImage, - img, - options, - callback, - file, - result - ) - }, - options, - data - ) - } else { - originalTransform.apply(loadImage, arguments) - } - } - - loadImage.blobSlice = blobSlice - loadImage.bufferSlice = bufferSlice - loadImage.replaceHead = replaceHead - loadImage.parseMetaData = parseMetaData - loadImage.metaDataParsers = metaDataParsers -}) diff --git a/lib/web/jquery/fileUploader/vendor/blueimp-load-image/js/load-image-orientation.js b/lib/web/jquery/fileUploader/vendor/blueimp-load-image/js/load-image-orientation.js deleted file mode 100644 index 2b32a368e5f54..0000000000000 --- a/lib/web/jquery/fileUploader/vendor/blueimp-load-image/js/load-image-orientation.js +++ /dev/null @@ -1,481 +0,0 @@ -/* - * JavaScript Load Image Orientation - * https://github.com/blueimp/JavaScript-Load-Image - * - * Copyright 2013, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * https://opensource.org/licenses/MIT - */ - -/* -Exif orientation values to correctly display the letter F: - - 1 2 - ██████ ██████ - ██ ██ - ████ ████ - ██ ██ - ██ ██ - - 3 4 - ██ ██ - ██ ██ - ████ ████ - ██ ██ - ██████ ██████ - - 5 6 -██████████ ██ -██ ██ ██ ██ -██ ██████████ - - 7 8 - ██ ██████████ - ██ ██ ██ ██ -██████████ ██ - -*/ - -/* global define, module, require */ - -;(function (factory) { - 'use strict' - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define(['jquery/fileUploader/vendor/blueimp-load-image/js/load-image', 'jquery/fileUploader/vendor/blueimp-load-image/js/load-image-scale', 'jquery/fileUploader/vendor/blueimp-load-image/js/load-image-meta'], factory) - } else if (typeof module === 'object' && module.exports) { - factory( - require('jquery/fileUploader/vendor/blueimp-load-image/js/load-image'), - require('jquery/fileUploader/vendor/blueimp-load-image/js/load-image-scale'), - require('jquery/fileUploader/vendor/blueimp-load-image/js/load-image-meta') - ) - } else { - // Browser globals: - factory(window.loadImage) - } -})(function (loadImage) { - 'use strict' - - var originalTransform = loadImage.transform - var originalRequiresCanvas = loadImage.requiresCanvas - var originalRequiresMetaData = loadImage.requiresMetaData - var originalTransformCoordinates = loadImage.transformCoordinates - var originalGetTransformedOptions = loadImage.getTransformedOptions - - ;(function ($) { - // Guard for non-browser environments (e.g. server-side rendering): - if (!$.global.document) return - // black+white 3x2 JPEG, with the following meta information set: - // - EXIF Orientation: 6 (Rotated 90° CCW) - // Image data layout (B=black, F=white): - // BFF - // BBB - var testImageURL = - 'data:image/jpeg;base64,/9j/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAYAAAA' + - 'AAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA' + - 'QEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE' + - 'BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/AABEIAAIAAwMBEQACEQEDEQH/x' + - 'ABRAAEAAAAAAAAAAAAAAAAAAAAKEAEBAQADAQEAAAAAAAAAAAAGBQQDCAkCBwEBAAAAAAA' + - 'AAAAAAAAAAAAAABEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8AG8T9NfSMEVMhQ' + - 'voP3fFiRZ+MTHDifa/95OFSZU5OzRzxkyejv8ciEfhSceSXGjS8eSdLnZc2HDm4M3BxcXw' + - 'H/9k=' - var img = document.createElement('img') - img.onload = function () { - // Check if the browser supports automatic image orientation: - $.orientation = img.width === 2 && img.height === 3 - if ($.orientation) { - var canvas = $.createCanvas(1, 1, true) - var ctx = canvas.getContext('2d') - ctx.drawImage(img, 1, 1, 1, 1, 0, 0, 1, 1) - // Check if the source image coordinates (sX, sY, sWidth, sHeight) are - // correctly applied to the auto-orientated image, which should result - // in a white opaque pixel (e.g. in Safari). - // Browsers that show a transparent pixel (e.g. Chromium) fail to crop - // auto-oriented images correctly and require a workaround, e.g. - // drawing the complete source image to an intermediate canvas first. - // See https://bugs.chromium.org/p/chromium/issues/detail?id=1074354 - $.orientationCropBug = - ctx.getImageData(0, 0, 1, 1).data.toString() !== '255,255,255,255' - } - } - img.src = testImageURL - })(loadImage) - - /** - * Determines if the orientation requires a canvas element. - * - * @param {object} [options] Options object - * @param {boolean} [withMetaData] Is metadata required for orientation - * @returns {boolean} Returns true if orientation requires canvas/meta - */ - function requiresCanvasOrientation(options, withMetaData) { - var orientation = options && options.orientation - return ( - // Exif orientation for browsers without automatic image orientation: - (orientation === true && !loadImage.orientation) || - // Orientation reset for browsers with automatic image orientation: - (orientation === 1 && loadImage.orientation) || - // Orientation to defined value, requires meta for orientation reset only: - ((!withMetaData || loadImage.orientation) && - orientation > 1 && - orientation < 9) - ) - } - - /** - * Determines if the image requires an orientation change. - * - * @param {number} [orientation] Defined orientation value - * @param {number} [autoOrientation] Auto-orientation based on Exif data - * @returns {boolean} Returns true if an orientation change is required - */ - function requiresOrientationChange(orientation, autoOrientation) { - return ( - orientation !== autoOrientation && - ((orientation === 1 && autoOrientation > 1 && autoOrientation < 9) || - (orientation > 1 && orientation < 9)) - ) - } - - /** - * Determines orientation combinations that require a rotation by 180°. - * - * The following is a list of combinations that return true: - * - * 2 (flip) => 5 (rot90,flip), 7 (rot90,flip), 6 (rot90), 8 (rot90) - * 4 (flip) => 5 (rot90,flip), 7 (rot90,flip), 6 (rot90), 8 (rot90) - * - * 5 (rot90,flip) => 2 (flip), 4 (flip), 6 (rot90), 8 (rot90) - * 7 (rot90,flip) => 2 (flip), 4 (flip), 6 (rot90), 8 (rot90) - * - * 6 (rot90) => 2 (flip), 4 (flip), 5 (rot90,flip), 7 (rot90,flip) - * 8 (rot90) => 2 (flip), 4 (flip), 5 (rot90,flip), 7 (rot90,flip) - * - * @param {number} [orientation] Defined orientation value - * @param {number} [autoOrientation] Auto-orientation based on Exif data - * @returns {boolean} Returns true if rotation by 180° is required - */ - function requiresRot180(orientation, autoOrientation) { - if (autoOrientation > 1 && autoOrientation < 9) { - switch (orientation) { - case 2: - case 4: - return autoOrientation > 4 - case 5: - case 7: - return autoOrientation % 2 === 0 - case 6: - case 8: - return ( - autoOrientation === 2 || - autoOrientation === 4 || - autoOrientation === 5 || - autoOrientation === 7 - ) - } - } - return false - } - - // Determines if the target image should be a canvas element: - loadImage.requiresCanvas = function (options) { - return ( - requiresCanvasOrientation(options) || - originalRequiresCanvas.call(loadImage, options) - ) - } - - // Determines if metadata should be loaded automatically: - loadImage.requiresMetaData = function (options) { - return ( - requiresCanvasOrientation(options, true) || - originalRequiresMetaData.call(loadImage, options) - ) - } - - loadImage.transform = function (img, options, callback, file, data) { - originalTransform.call( - loadImage, - img, - options, - function (img, data) { - if (data) { - var autoOrientation = - loadImage.orientation && data.exif && data.exif.get('Orientation') - if (autoOrientation > 4 && autoOrientation < 9) { - // Automatic image orientation switched image dimensions - var originalWidth = data.originalWidth - var originalHeight = data.originalHeight - data.originalWidth = originalHeight - data.originalHeight = originalWidth - } - } - callback(img, data) - }, - file, - data - ) - } - - // Transforms coordinate and dimension options - // based on the given orientation option: - loadImage.getTransformedOptions = function (img, opts, data) { - var options = originalGetTransformedOptions.call(loadImage, img, opts) - var exifOrientation = data.exif && data.exif.get('Orientation') - var orientation = options.orientation - var autoOrientation = loadImage.orientation && exifOrientation - if (orientation === true) orientation = exifOrientation - if (!requiresOrientationChange(orientation, autoOrientation)) { - return options - } - var top = options.top - var right = options.right - var bottom = options.bottom - var left = options.left - var newOptions = {} - for (var i in options) { - if (Object.prototype.hasOwnProperty.call(options, i)) { - newOptions[i] = options[i] - } - } - newOptions.orientation = orientation - if ( - (orientation > 4 && !(autoOrientation > 4)) || - (orientation < 5 && autoOrientation > 4) - ) { - // Image dimensions and target dimensions are switched - newOptions.maxWidth = options.maxHeight - newOptions.maxHeight = options.maxWidth - newOptions.minWidth = options.minHeight - newOptions.minHeight = options.minWidth - newOptions.sourceWidth = options.sourceHeight - newOptions.sourceHeight = options.sourceWidth - } - if (autoOrientation > 1) { - // Browsers which correctly apply source image coordinates to - // auto-oriented images - switch (autoOrientation) { - case 2: - // Horizontal flip - right = options.left - left = options.right - break - case 3: - // 180° Rotate CCW - top = options.bottom - right = options.left - bottom = options.top - left = options.right - break - case 4: - // Vertical flip - top = options.bottom - bottom = options.top - break - case 5: - // Horizontal flip + 90° Rotate CCW - top = options.left - right = options.bottom - bottom = options.right - left = options.top - break - case 6: - // 90° Rotate CCW - top = options.left - right = options.top - bottom = options.right - left = options.bottom - break - case 7: - // Vertical flip + 90° Rotate CCW - top = options.right - right = options.top - bottom = options.left - left = options.bottom - break - case 8: - // 90° Rotate CW - top = options.right - right = options.bottom - bottom = options.left - left = options.top - break - } - // Some orientation combinations require additional rotation by 180°: - if (requiresRot180(orientation, autoOrientation)) { - var tmpTop = top - var tmpRight = right - top = bottom - right = left - bottom = tmpTop - left = tmpRight - } - } - newOptions.top = top - newOptions.right = right - newOptions.bottom = bottom - newOptions.left = left - // Account for defined browser orientation: - switch (orientation) { - case 2: - // Horizontal flip - newOptions.right = left - newOptions.left = right - break - case 3: - // 180° Rotate CCW - newOptions.top = bottom - newOptions.right = left - newOptions.bottom = top - newOptions.left = right - break - case 4: - // Vertical flip - newOptions.top = bottom - newOptions.bottom = top - break - case 5: - // Vertical flip + 90° Rotate CW - newOptions.top = left - newOptions.right = bottom - newOptions.bottom = right - newOptions.left = top - break - case 6: - // 90° Rotate CW - newOptions.top = right - newOptions.right = bottom - newOptions.bottom = left - newOptions.left = top - break - case 7: - // Horizontal flip + 90° Rotate CW - newOptions.top = right - newOptions.right = top - newOptions.bottom = left - newOptions.left = bottom - break - case 8: - // 90° Rotate CCW - newOptions.top = left - newOptions.right = top - newOptions.bottom = right - newOptions.left = bottom - break - } - return newOptions - } - - // Transform image orientation based on the given EXIF orientation option: - loadImage.transformCoordinates = function (canvas, options, data) { - originalTransformCoordinates.call(loadImage, canvas, options, data) - var orientation = options.orientation - var autoOrientation = - loadImage.orientation && data.exif && data.exif.get('Orientation') - if (!requiresOrientationChange(orientation, autoOrientation)) { - return - } - var ctx = canvas.getContext('2d') - var width = canvas.width - var height = canvas.height - var sourceWidth = width - var sourceHeight = height - if ( - (orientation > 4 && !(autoOrientation > 4)) || - (orientation < 5 && autoOrientation > 4) - ) { - // Image dimensions and target dimensions are switched - canvas.width = height - canvas.height = width - } - if (orientation > 4) { - // Destination and source dimensions are switched - sourceWidth = height - sourceHeight = width - } - // Reset automatic browser orientation: - switch (autoOrientation) { - case 2: - // Horizontal flip - ctx.translate(sourceWidth, 0) - ctx.scale(-1, 1) - break - case 3: - // 180° Rotate CCW - ctx.translate(sourceWidth, sourceHeight) - ctx.rotate(Math.PI) - break - case 4: - // Vertical flip - ctx.translate(0, sourceHeight) - ctx.scale(1, -1) - break - case 5: - // Horizontal flip + 90° Rotate CCW - ctx.rotate(-0.5 * Math.PI) - ctx.scale(-1, 1) - break - case 6: - // 90° Rotate CCW - ctx.rotate(-0.5 * Math.PI) - ctx.translate(-sourceWidth, 0) - break - case 7: - // Vertical flip + 90° Rotate CCW - ctx.rotate(-0.5 * Math.PI) - ctx.translate(-sourceWidth, sourceHeight) - ctx.scale(1, -1) - break - case 8: - // 90° Rotate CW - ctx.rotate(0.5 * Math.PI) - ctx.translate(0, -sourceHeight) - break - } - // Some orientation combinations require additional rotation by 180°: - if (requiresRot180(orientation, autoOrientation)) { - ctx.translate(sourceWidth, sourceHeight) - ctx.rotate(Math.PI) - } - switch (orientation) { - case 2: - // Horizontal flip - ctx.translate(width, 0) - ctx.scale(-1, 1) - break - case 3: - // 180° Rotate CCW - ctx.translate(width, height) - ctx.rotate(Math.PI) - break - case 4: - // Vertical flip - ctx.translate(0, height) - ctx.scale(1, -1) - break - case 5: - // Vertical flip + 90° Rotate CW - ctx.rotate(0.5 * Math.PI) - ctx.scale(1, -1) - break - case 6: - // 90° Rotate CW - ctx.rotate(0.5 * Math.PI) - ctx.translate(0, -height) - break - case 7: - // Horizontal flip + 90° Rotate CW - ctx.rotate(0.5 * Math.PI) - ctx.translate(width, -height) - ctx.scale(-1, 1) - break - case 8: - // 90° Rotate CCW - ctx.rotate(-0.5 * Math.PI) - ctx.translate(-width, 0) - break - } - } -}) diff --git a/lib/web/jquery/fileUploader/vendor/blueimp-load-image/js/load-image-scale.js b/lib/web/jquery/fileUploader/vendor/blueimp-load-image/js/load-image-scale.js deleted file mode 100644 index 80cc5e544fecb..0000000000000 --- a/lib/web/jquery/fileUploader/vendor/blueimp-load-image/js/load-image-scale.js +++ /dev/null @@ -1,327 +0,0 @@ -/* - * JavaScript Load Image Scaling - * https://github.com/blueimp/JavaScript-Load-Image - * - * Copyright 2011, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * https://opensource.org/licenses/MIT - */ - -/* global define, module, require */ - -;(function (factory) { - 'use strict' - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define(['jquery/fileUploader/vendor/blueimp-load-image/js/load-image'], factory) - } else if (typeof module === 'object' && module.exports) { - factory(require('jquery/fileUploader/vendor/blueimp-load-image/js/load-image')) - } else { - // Browser globals: - factory(window.loadImage) - } -})(function (loadImage) { - 'use strict' - - var originalTransform = loadImage.transform - - loadImage.createCanvas = function (width, height, offscreen) { - if (offscreen && loadImage.global.OffscreenCanvas) { - return new OffscreenCanvas(width, height) - } - var canvas = document.createElement('canvas') - canvas.width = width - canvas.height = height - return canvas - } - - loadImage.transform = function (img, options, callback, file, data) { - originalTransform.call( - loadImage, - loadImage.scale(img, options, data), - options, - callback, - file, - data - ) - } - - // Transform image coordinates, allows to override e.g. - // the canvas orientation based on the orientation option, - // gets canvas, options and data passed as arguments: - loadImage.transformCoordinates = function () {} - - // Returns transformed options, allows to override e.g. - // maxWidth, maxHeight and crop options based on the aspectRatio. - // gets img, options, data passed as arguments: - loadImage.getTransformedOptions = function (img, options) { - var aspectRatio = options.aspectRatio - var newOptions - var i - var width - var height - if (!aspectRatio) { - return options - } - newOptions = {} - for (i in options) { - if (Object.prototype.hasOwnProperty.call(options, i)) { - newOptions[i] = options[i] - } - } - newOptions.crop = true - width = img.naturalWidth || img.width - height = img.naturalHeight || img.height - if (width / height > aspectRatio) { - newOptions.maxWidth = height * aspectRatio - newOptions.maxHeight = height - } else { - newOptions.maxWidth = width - newOptions.maxHeight = width / aspectRatio - } - return newOptions - } - - // Canvas render method, allows to implement a different rendering algorithm: - loadImage.drawImage = function ( - img, - canvas, - sourceX, - sourceY, - sourceWidth, - sourceHeight, - destWidth, - destHeight, - options - ) { - var ctx = canvas.getContext('2d') - if (options.imageSmoothingEnabled === false) { - ctx.msImageSmoothingEnabled = false - ctx.imageSmoothingEnabled = false - } else if (options.imageSmoothingQuality) { - ctx.imageSmoothingQuality = options.imageSmoothingQuality - } - ctx.drawImage( - img, - sourceX, - sourceY, - sourceWidth, - sourceHeight, - 0, - 0, - destWidth, - destHeight - ) - return ctx - } - - // Determines if the target image should be a canvas element: - loadImage.requiresCanvas = function (options) { - return options.canvas || options.crop || !!options.aspectRatio - } - - // Scales and/or crops the given image (img or canvas HTML element) - // using the given options: - loadImage.scale = function (img, options, data) { - // eslint-disable-next-line no-param-reassign - options = options || {} - // eslint-disable-next-line no-param-reassign - data = data || {} - var useCanvas = - img.getContext || - (loadImage.requiresCanvas(options) && - !!loadImage.global.HTMLCanvasElement) - var width = img.naturalWidth || img.width - var height = img.naturalHeight || img.height - var destWidth = width - var destHeight = height - var maxWidth - var maxHeight - var minWidth - var minHeight - var sourceWidth - var sourceHeight - var sourceX - var sourceY - var pixelRatio - var downsamplingRatio - var tmp - var canvas - /** - * Scales up image dimensions - */ - function scaleUp() { - var scale = Math.max( - (minWidth || destWidth) / destWidth, - (minHeight || destHeight) / destHeight - ) - if (scale > 1) { - destWidth *= scale - destHeight *= scale - } - } - /** - * Scales down image dimensions - */ - function scaleDown() { - var scale = Math.min( - (maxWidth || destWidth) / destWidth, - (maxHeight || destHeight) / destHeight - ) - if (scale < 1) { - destWidth *= scale - destHeight *= scale - } - } - if (useCanvas) { - // eslint-disable-next-line no-param-reassign - options = loadImage.getTransformedOptions(img, options, data) - sourceX = options.left || 0 - sourceY = options.top || 0 - if (options.sourceWidth) { - sourceWidth = options.sourceWidth - if (options.right !== undefined && options.left === undefined) { - sourceX = width - sourceWidth - options.right - } - } else { - sourceWidth = width - sourceX - (options.right || 0) - } - if (options.sourceHeight) { - sourceHeight = options.sourceHeight - if (options.bottom !== undefined && options.top === undefined) { - sourceY = height - sourceHeight - options.bottom - } - } else { - sourceHeight = height - sourceY - (options.bottom || 0) - } - destWidth = sourceWidth - destHeight = sourceHeight - } - maxWidth = options.maxWidth - maxHeight = options.maxHeight - minWidth = options.minWidth - minHeight = options.minHeight - if (useCanvas && maxWidth && maxHeight && options.crop) { - destWidth = maxWidth - destHeight = maxHeight - tmp = sourceWidth / sourceHeight - maxWidth / maxHeight - if (tmp < 0) { - sourceHeight = (maxHeight * sourceWidth) / maxWidth - if (options.top === undefined && options.bottom === undefined) { - sourceY = (height - sourceHeight) / 2 - } - } else if (tmp > 0) { - sourceWidth = (maxWidth * sourceHeight) / maxHeight - if (options.left === undefined && options.right === undefined) { - sourceX = (width - sourceWidth) / 2 - } - } - } else { - if (options.contain || options.cover) { - minWidth = maxWidth = maxWidth || minWidth - minHeight = maxHeight = maxHeight || minHeight - } - if (options.cover) { - scaleDown() - scaleUp() - } else { - scaleUp() - scaleDown() - } - } - if (useCanvas) { - pixelRatio = options.pixelRatio - if ( - pixelRatio > 1 && - // Check if the image has not yet had the device pixel ratio applied: - !( - img.style.width && - Math.floor(parseFloat(img.style.width, 10)) === - Math.floor(width / pixelRatio) - ) - ) { - destWidth *= pixelRatio - destHeight *= pixelRatio - } - // Check if workaround for Chromium orientation crop bug is required: - // https://bugs.chromium.org/p/chromium/issues/detail?id=1074354 - if ( - loadImage.orientationCropBug && - !img.getContext && - (sourceX || sourceY || sourceWidth !== width || sourceHeight !== height) - ) { - // Write the complete source image to an intermediate canvas first: - tmp = img - // eslint-disable-next-line no-param-reassign - img = loadImage.createCanvas(width, height, true) - loadImage.drawImage( - tmp, - img, - 0, - 0, - width, - height, - width, - height, - options - ) - } - downsamplingRatio = options.downsamplingRatio - if ( - downsamplingRatio > 0 && - downsamplingRatio < 1 && - destWidth < sourceWidth && - destHeight < sourceHeight - ) { - while (sourceWidth * downsamplingRatio > destWidth) { - canvas = loadImage.createCanvas( - sourceWidth * downsamplingRatio, - sourceHeight * downsamplingRatio, - true - ) - loadImage.drawImage( - img, - canvas, - sourceX, - sourceY, - sourceWidth, - sourceHeight, - canvas.width, - canvas.height, - options - ) - sourceX = 0 - sourceY = 0 - sourceWidth = canvas.width - sourceHeight = canvas.height - // eslint-disable-next-line no-param-reassign - img = canvas - } - } - canvas = loadImage.createCanvas(destWidth, destHeight) - loadImage.transformCoordinates(canvas, options, data) - if (pixelRatio > 1) { - canvas.style.width = canvas.width / pixelRatio + 'px' - } - loadImage - .drawImage( - img, - canvas, - sourceX, - sourceY, - sourceWidth, - sourceHeight, - destWidth, - destHeight, - options - ) - .setTransform(1, 0, 0, 1, 0, 0) // reset to the identity matrix - return canvas - } - img.width = destWidth - img.height = destHeight - return img - } -}) diff --git a/lib/web/jquery/fileUploader/vendor/blueimp-load-image/js/load-image.js b/lib/web/jquery/fileUploader/vendor/blueimp-load-image/js/load-image.js deleted file mode 100644 index 27387fbd13d76..0000000000000 --- a/lib/web/jquery/fileUploader/vendor/blueimp-load-image/js/load-image.js +++ /dev/null @@ -1,229 +0,0 @@ -/* - * JavaScript Load Image - * https://github.com/blueimp/JavaScript-Load-Image - * - * Copyright 2011, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * https://opensource.org/licenses/MIT - */ - -/* global define, module, Promise */ - -;(function ($) { - 'use strict' - - var urlAPI = $.URL || $.webkitURL - - /** - * Creates an object URL for a given File object. - * - * @param {Blob} blob Blob object - * @returns {string|boolean} Returns object URL if API exists, else false. - */ - function createObjectURL(blob) { - return urlAPI ? urlAPI.createObjectURL(blob) : false - } - - /** - * Revokes a given object URL. - * - * @param {string} url Blob object URL - * @returns {undefined|boolean} Returns undefined if API exists, else false. - */ - function revokeObjectURL(url) { - return urlAPI ? urlAPI.revokeObjectURL(url) : false - } - - /** - * Helper function to revoke an object URL - * - * @param {string} url Blob Object URL - * @param {object} [options] Options object - */ - function revokeHelper(url, options) { - if (url && url.slice(0, 5) === 'blob:' && !(options && options.noRevoke)) { - revokeObjectURL(url) - } - } - - /** - * Loads a given File object via FileReader interface. - * - * @param {Blob} file Blob object - * @param {Function} onload Load event callback - * @param {Function} [onerror] Error/Abort event callback - * @param {string} [method=readAsDataURL] FileReader method - * @returns {FileReader|boolean} Returns FileReader if API exists, else false. - */ - function readFile(file, onload, onerror, method) { - if (!$.FileReader) return false - var reader = new FileReader() - reader.onload = function () { - onload.call(reader, this.result) - } - if (onerror) { - reader.onabort = reader.onerror = function () { - onerror.call(reader, this.error) - } - } - var readerMethod = reader[method || 'readAsDataURL'] - if (readerMethod) { - readerMethod.call(reader, file) - return reader - } - } - - /** - * Cross-frame instanceof check. - * - * @param {string} type Instance type - * @param {object} obj Object instance - * @returns {boolean} Returns true if the object is of the given instance. - */ - function isInstanceOf(type, obj) { - // Cross-frame instanceof check - return Object.prototype.toString.call(obj) === '[object ' + type + ']' - } - - /** - * @typedef { HTMLImageElement|HTMLCanvasElement } Result - */ - - /** - * Loads an image for a given File object. - * - * @param {Blob|string} file Blob object or image URL - * @param {Function|object} [callback] Image load event callback or options - * @param {object} [options] Options object - * @returns {HTMLImageElement|FileReader|Promise<Result>} Object - */ - function loadImage(file, callback, options) { - /** - * Promise executor - * - * @param {Function} resolve Resolution function - * @param {Function} reject Rejection function - * @returns {HTMLImageElement|FileReader} Object - */ - function executor(resolve, reject) { - var img = document.createElement('img') - var url - /** - * Callback for the fetchBlob call. - * - * @param {HTMLImageElement|HTMLCanvasElement} img Error object - * @param {object} data Data object - * @returns {undefined} Undefined - */ - function resolveWrapper(img, data) { - if (resolve === reject) { - // Not using Promises - if (resolve) resolve(img, data) - return - } else if (img instanceof Error) { - reject(img) - return - } - data = data || {} // eslint-disable-line no-param-reassign - data.image = img - resolve(data) - } - /** - * Callback for the fetchBlob call. - * - * @param {Blob} blob Blob object - * @param {Error} err Error object - */ - function fetchBlobCallback(blob, err) { - if (err && $.console) console.log(err) // eslint-disable-line no-console - if (blob && isInstanceOf('Blob', blob)) { - file = blob // eslint-disable-line no-param-reassign - url = createObjectURL(file) - } else { - url = file - if (options && options.crossOrigin) { - img.crossOrigin = options.crossOrigin - } - } - img.src = url - } - img.onerror = function (event) { - revokeHelper(url, options) - if (reject) reject.call(img, event) - } - img.onload = function () { - revokeHelper(url, options) - var data = { - originalWidth: img.naturalWidth || img.width, - originalHeight: img.naturalHeight || img.height - } - try { - loadImage.transform(img, options, resolveWrapper, file, data) - } catch (error) { - if (reject) reject(error) - } - } - if (typeof file === 'string') { - if (loadImage.requiresMetaData(options)) { - loadImage.fetchBlob(file, fetchBlobCallback, options) - } else { - fetchBlobCallback() - } - return img - } else if (isInstanceOf('Blob', file) || isInstanceOf('File', file)) { - url = createObjectURL(file) - if (url) { - img.src = url - return img - } - return readFile( - file, - function (url) { - img.src = url - }, - reject - ) - } - } - if ($.Promise && typeof callback !== 'function') { - options = callback // eslint-disable-line no-param-reassign - return new Promise(executor) - } - return executor(callback, callback) - } - - // Determines if metadata should be loaded automatically. - // Requires the load image meta extension to load metadata. - loadImage.requiresMetaData = function (options) { - return options && options.meta - } - - // If the callback given to this function returns a blob, it is used as image - // source instead of the original url and overrides the file argument used in - // the onload and onerror event callbacks: - loadImage.fetchBlob = function (url, callback) { - callback() - } - - loadImage.transform = function (img, options, callback, file, data) { - callback(img, data) - } - - loadImage.global = $ - loadImage.readFile = readFile - loadImage.isInstanceOf = isInstanceOf - loadImage.createObjectURL = createObjectURL - loadImage.revokeObjectURL = revokeObjectURL - - if (typeof define === 'function' && define.amd) { - define(function () { - return loadImage - }) - } else if (typeof module === 'object' && module.exports) { - module.exports = loadImage - } else { - $.loadImage = loadImage - } -})((typeof window !== 'undefined' && window) || this) diff --git a/lib/web/jquery/fileUploader/vendor/blueimp-tmpl/LICENSE.txt b/lib/web/jquery/fileUploader/vendor/blueimp-tmpl/LICENSE.txt deleted file mode 100644 index d6a9d74758be3..0000000000000 --- a/lib/web/jquery/fileUploader/vendor/blueimp-tmpl/LICENSE.txt +++ /dev/null @@ -1,20 +0,0 @@ -MIT License - -Copyright © 2011 Sebastian Tschan, https://blueimp.net - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/lib/web/jquery/fileUploader/vendor/blueimp-tmpl/README.md b/lib/web/jquery/fileUploader/vendor/blueimp-tmpl/README.md deleted file mode 100644 index d8281b237ca1f..0000000000000 --- a/lib/web/jquery/fileUploader/vendor/blueimp-tmpl/README.md +++ /dev/null @@ -1,436 +0,0 @@ -# JavaScript Templates - -## Contents - -- [Demo](https://blueimp.github.io/JavaScript-Templates/) -- [Description](#description) -- [Usage](#usage) - - [Client-side](#client-side) - - [Server-side](#server-side) -- [Requirements](#requirements) -- [API](#api) - - [tmpl() function](#tmpl-function) - - [Templates cache](#templates-cache) - - [Output encoding](#output-encoding) - - [Local helper variables](#local-helper-variables) - - [Template function argument](#template-function-argument) - - [Template parsing](#template-parsing) -- [Templates syntax](#templates-syntax) - - [Interpolation](#interpolation) - - [Evaluation](#evaluation) -- [Compiled templates](#compiled-templates) -- [Tests](#tests) -- [License](#license) - -## Description - -1KB lightweight, fast & powerful JavaScript templating engine with zero -dependencies. -Compatible with server-side environments like [Node.js](https://nodejs.org/), -module loaders like [RequireJS](https://requirejs.org/) or -[webpack](https://webpack.js.org/) and all web browsers. - -## Usage - -### Client-side - -Install the **blueimp-tmpl** package with [NPM](https://www.npmjs.org/): - -```sh -npm install blueimp-tmpl -``` - -Include the (minified) JavaScript Templates script in your HTML markup: - -```html -<script src="js/tmpl.min.js"></script> -``` - -Add a script section with type **"text/x-tmpl"**, a unique **id** property and -your template definition as content: - -```html -<script type="text/x-tmpl" id="tmpl-demo"> - <h3>{%=o.title%}</h3> - <p>Released under the - <a href="{%=o.license.url%}">{%=o.license.name%}</a>.</p> - <h4>Features</h4> - <ul> - {% for (var i=0; i<o.features.length; i++) { %} - <li>{%=o.features[i]%}</li> - {% } %} - </ul> -</script> -``` - -**"o"** (the lowercase letter) is a reference to the data parameter of the -template function (see the API section on how to modify this identifier). - -In your application code, create a JavaScript object to use as data for the -template: - -```js -var data = { - title: 'JavaScript Templates', - license: { - name: 'MIT license', - url: 'https://opensource.org/licenses/MIT' - }, - features: ['lightweight & fast', 'powerful', 'zero dependencies'] -} -``` - -In a real application, this data could be the result of retrieving a -[JSON](https://json.org/) resource. - -Render the result by calling the **tmpl()** method with the id of the template -and the data object as arguments: - -```js -document.getElementById('result').innerHTML = tmpl('tmpl-demo', data) -``` - -### Server-side - -The following is an example how to use the JavaScript Templates engine on the -server-side with [Node.js](https://nodejs.org/). - -Install the **blueimp-tmpl** package with [NPM](https://www.npmjs.org/): - -```sh -npm install blueimp-tmpl -``` - -Add a file **template.html** with the following content: - -```html -<!DOCTYPE HTML> -<title>{%=o.title%} -

{%=o.title%}

-

Features

-
    -{% for (var i=0; i{%=o.features[i]%} -{% } %} -
-``` - -Add a file **server.js** with the following content: - -```js -require('http') - .createServer(function (req, res) { - var fs = require('fs'), - // The tmpl module exports the tmpl() function: - tmpl = require('./tmpl'), - // Use the following version if you installed the package with npm: - // tmpl = require("blueimp-tmpl"), - // Sample data: - data = { - title: 'JavaScript Templates', - url: 'https://github.com/blueimp/JavaScript-Templates', - features: ['lightweight & fast', 'powerful', 'zero dependencies'] - } - // Override the template loading method: - tmpl.load = function (id) { - var filename = id + '.html' - console.log('Loading ' + filename) - return fs.readFileSync(filename, 'utf8') - } - res.writeHead(200, { 'Content-Type': 'text/x-tmpl' }) - // Render the content: - res.end(tmpl('template', data)) - }) - .listen(8080, 'localhost') -console.log('Server running at http://localhost:8080/') -``` - -Run the application with the following command: - -```sh -node server.js -``` - -## Requirements - -The JavaScript Templates script has zero dependencies. - -## API - -### tmpl() function - -The **tmpl()** function is added to the global **window** object and can be -called as global function: - -```js -var result = tmpl('tmpl-demo', data) -``` - -The **tmpl()** function can be called with the id of a template, or with a -template string: - -```js -var result = tmpl('

{%=o.title%}

', data) -``` - -If called without second argument, **tmpl()** returns a reusable template -function: - -```js -var func = tmpl('

{%=o.title%}

') -document.getElementById('result').innerHTML = func(data) -``` - -### Templates cache - -Templates loaded by id are cached in the map **tmpl.cache**: - -```js -var func = tmpl('tmpl-demo'), // Loads and parses the template - cached = typeof tmpl.cache['tmpl-demo'] === 'function', // true - result = tmpl('tmpl-demo', data) // Uses cached template function - -tmpl.cache['tmpl-demo'] = null -result = tmpl('tmpl-demo', data) // Loads and parses the template again -``` - -### Output encoding - -The method **tmpl.encode** is used to escape HTML special characters in the -template output: - -```js -var output = tmpl.encode('<>&"\'\x00') // Renders "<>&"'" -``` - -**tmpl.encode** makes use of the regular expression **tmpl.encReg** and the -encoding map **tmpl.encMap** to match and replace special characters, which can -be modified to change the behavior of the output encoding. -Strings matched by the regular expression, but not found in the encoding map are -removed from the output. This allows for example to automatically trim input -values (removing whitespace from the start and end of the string): - -```js -tmpl.encReg = /(^\s+)|(\s+$)|[<>&"'\x00]/g -var output = tmpl.encode(' Banana! ') // Renders "Banana" (without whitespace) -``` - -### Local helper variables - -The local variables available inside the templates are the following: - -- **o**: The data object given as parameter to the template function (see the - next section on how to modify the parameter name). -- **tmpl**: A reference to the **tmpl** function object. -- **\_s**: The string for the rendered result content. -- **\_e**: A reference to the **tmpl.encode** method. -- **print**: Helper function to add content to the rendered result string. -- **include**: Helper function to include the return value of a different - template in the result. - -To introduce additional local helper variables, the string **tmpl.helper** can -be extended. The following adds a convenience function for _console.log_ and a -streaming function, that streams the template rendering result back to the -callback argument (note the comma at the beginning of each variable -declaration): - -```js -tmpl.helper += - ',log=function(){console.log.apply(console, arguments)}' + - ",st='',stream=function(cb){var l=st.length;st=_s;cb( _s.slice(l));}" -``` - -Those new helper functions could be used to stream the template contents to the -console output: - -```html - -``` - -### Template function argument - -The generated template functions accept one argument, which is the data object -given to the **tmpl(id, data)** function. This argument is available inside the -template definitions as parameter **o** (the lowercase letter). - -The argument name can be modified by overriding **tmpl.arg**: - -```js -tmpl.arg = 'p' - -// Renders "

JavaScript Templates

": -var result = tmpl('

{%=p.title%}

', { title: 'JavaScript Templates' }) -``` - -### Template parsing - -The template contents are matched and replaced using the regular expression -**tmpl.regexp** and the replacement function **tmpl.func**. The replacement -function operates based on the -[parenthesized submatch strings](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/replace#Specifying_a_function_as_a_parameter). - -To use different tags for the template syntax, override **tmpl.regexp** with a -modified regular expression, by exchanging all occurrences of "{%" and "%}", -e.g. with "[%" and "%]": - -```js -tmpl.regexp = /([\s'\\])(?!(?:[^[]|\[(?!%))*%\])|(?:\[%(=|#)([\s\S]+?)%\])|(\[%)|(%\])/g -``` - -By default, the plugin preserves whitespace (newlines, carriage returns, tabs -and spaces). To strip unnecessary whitespace, you can override the **tmpl.func** -function, e.g. with the following code: - -```js -var originalFunc = tmpl.func -tmpl.func = function (s, p1, p2, p3, p4, p5, offset, str) { - if (p1 && /\s/.test(p1)) { - if ( - !offset || - /\s/.test(str.charAt(offset - 1)) || - /^\s+$/g.test(str.slice(offset)) - ) { - return '' - } - return ' ' - } - return originalFunc.apply(tmpl, arguments) -} -``` - -## Templates syntax - -### Interpolation - -Print variable with HTML special characters escaped: - -```html -

{%=o.title%}

-``` - -Print variable without escaping: - -```html -

{%#o.user_id%}

-``` - -Print output of function calls: - -```html -Website -``` - -Use dot notation to print nested properties: - -```html -{%=o.author.name%} -``` - -### Evaluation - -Use **print(str)** to add escaped content to the output: - -```html -Year: {% var d=new Date(); print(d.getFullYear()); %} -``` - -Use **print(str, true)** to add unescaped content to the output: - -```html -{% print("Fast & powerful", true); %} -``` - -Use **include(str, obj)** to include content from a different template: - -```html -
- {% include('tmpl-link', {name: "Website", url: "https://example.org"}); %} -
-``` - -**If else condition**: - -```html -{% if (o.author.url) { %} -{%=o.author.name%} -{% } else { %} -No author url. -{% } %} -``` - -**For loop**: - -```html -
    -{% for (var i=0; i{%=o.features[i]%} -{% } %} -
-``` - -## Compiled templates - -The JavaScript Templates project comes with a compilation script, that allows -you to compile your templates into JavaScript code and combine them with a -minimal Templates runtime into one combined JavaScript file. - -The compilation script is built for [Node.js](https://nodejs.org/). -To use it, first install the JavaScript Templates project via -[NPM](https://www.npmjs.org/): - -```sh -npm install blueimp-tmpl -``` - -This will put the executable **tmpl.js** into the folder **node_modules/.bin**. -It will also make it available on your PATH if you install the package globally -(by adding the **-g** flag to the install command). - -The **tmpl.js** executable accepts the paths to one or multiple template files -as command line arguments and prints the generated JavaScript code to the -console output. The following command line shows you how to store the generated -code in a new JavaScript file that can be included in your project: - -```sh -tmpl.js index.html > tmpl.js -``` - -The files given as command line arguments to **tmpl.js** can either be pure -template files or HTML documents with embedded template script sections. For the -pure template files, the file names (without extension) serve as template ids. -The generated file can be included in your project as a replacement for the -original **tmpl.js** runtime. It provides you with the same API and provides a -**tmpl(id, data)** function that accepts the id of one of your templates as -first and a data object as optional second parameter. - -## Tests - -The JavaScript Templates project comes with -[Unit Tests](https://en.wikipedia.org/wiki/Unit_testing). -There are two different ways to run the tests: - -- Open test/index.html in your browser or -- run `npm test` in the Terminal in the root path of the repository package. - -The first one tests the browser integration, the second one the -[Node.js](https://nodejs.org/) integration. - -## License - -The JavaScript Templates script is released under the -[MIT license](https://opensource.org/licenses/MIT). diff --git a/lib/web/jquery/fileUploader/vendor/blueimp-tmpl/js/compile.js b/lib/web/jquery/fileUploader/vendor/blueimp-tmpl/js/compile.js deleted file mode 100755 index 122d034eaa8ea..0000000000000 --- a/lib/web/jquery/fileUploader/vendor/blueimp-tmpl/js/compile.js +++ /dev/null @@ -1,91 +0,0 @@ -#!/usr/bin/env node -/* - * JavaScript Templates Compiler - * https://github.com/blueimp/JavaScript-Templates - * - * Copyright 2011, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * https://opensource.org/licenses/MIT - */ - -/* eslint-disable strict */ -/* eslint-disable no-console */ - -;(function () { - 'use strict' - var path = require('path') - var tmpl = require(path.join(__dirname, 'tmpl.js')) - var fs = require('fs') - // Retrieve the content of the minimal runtime: - var runtime = fs.readFileSync(path.join(__dirname, 'runtime.js'), 'utf8') - // A regular expression to parse templates from script tags in a HTML page: - var regexp = /([\s\S]+?)<\/script>/gi - // A regular expression to match the helper function names: - var helperRegexp = new RegExp( - tmpl.helper.match(/\w+(?=\s*=\s*function\s*\()/g).join('\\s*\\(|') + - '\\s*\\(' - ) - // A list to store the function bodies: - var list = [] - var code - // Extend the Templating engine with a print method for the generated functions: - tmpl.print = function (str) { - // Only add helper functions if they are used inside of the template: - var helper = helperRegexp.test(str) ? tmpl.helper : '' - var body = str.replace(tmpl.regexp, tmpl.func) - if (helper || /_e\s*\(/.test(body)) { - helper = '_e=tmpl.encode' + helper + ',' - } - return ( - 'function(' + - tmpl.arg + - ',tmpl){' + - ('var ' + helper + "_s='" + body + "';return _s;") - .split("_s+='';") - .join('') + - '}' - ) - } - // Loop through the command line arguments: - process.argv.forEach(function (file, index) { - var listLength = list.length - var stats - var content - var result - var id - // Skip the first two arguments, which are "node" and the script: - if (index > 1) { - stats = fs.statSync(file) - if (!stats.isFile()) { - console.error(file + ' is not a file.') - return - } - content = fs.readFileSync(file, 'utf8') - // eslint-disable-next-line no-constant-condition - while (true) { - // Find templates in script tags: - result = regexp.exec(content) - if (!result) { - break - } - id = result[2] || result[4] - list.push("'" + id + "':" + tmpl.print(result[5])) - } - if (listLength === list.length) { - // No template script tags found, use the complete content: - id = path.basename(file, path.extname(file)) - list.push("'" + id + "':" + tmpl.print(content)) - } - } - }) - if (!list.length) { - console.error('Missing input file.') - return - } - // Combine the generated functions as cache of the minimal runtime: - code = runtime.replace('{}', '{' + list.join(',') + '}') - // Print the resulting code to the console output: - console.log(code) -})() diff --git a/lib/web/jquery/fileUploader/vendor/blueimp-tmpl/js/runtime.js b/lib/web/jquery/fileUploader/vendor/blueimp-tmpl/js/runtime.js deleted file mode 100644 index 1a3a716c51bc0..0000000000000 --- a/lib/web/jquery/fileUploader/vendor/blueimp-tmpl/js/runtime.js +++ /dev/null @@ -1,50 +0,0 @@ -/* - * JavaScript Templates Runtime - * https://github.com/blueimp/JavaScript-Templates - * - * Copyright 2011, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * https://opensource.org/licenses/MIT - */ - -/* global define */ - -/* eslint-disable strict */ - -;(function ($) { - 'use strict' - var tmpl = function (id, data) { - var f = tmpl.cache[id] - return data - ? f(data, tmpl) - : function (data) { - return f(data, tmpl) - } - } - tmpl.cache = {} - tmpl.encReg = /[<>&"'\x00]/g // eslint-disable-line no-control-regex - tmpl.encMap = { - '<': '<', - '>': '>', - '&': '&', - '"': '"', - "'": ''' - } - tmpl.encode = function (s) { - // eslint-disable-next-line eqeqeq - return (s == null ? '' : '' + s).replace(tmpl.encReg, function (c) { - return tmpl.encMap[c] || '' - }) - } - if (typeof define === 'function' && define.amd) { - define(function () { - return tmpl - }) - } else if (typeof module === 'object' && module.exports) { - module.exports = tmpl - } else { - $.tmpl = tmpl - } -})(this) diff --git a/lib/web/jquery/fileUploader/vendor/blueimp-tmpl/js/tmpl.js b/lib/web/jquery/fileUploader/vendor/blueimp-tmpl/js/tmpl.js deleted file mode 100644 index 63eb927cb0d4d..0000000000000 --- a/lib/web/jquery/fileUploader/vendor/blueimp-tmpl/js/tmpl.js +++ /dev/null @@ -1,98 +0,0 @@ -/* - * JavaScript Templates - * https://github.com/blueimp/JavaScript-Templates - * - * Copyright 2011, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * https://opensource.org/licenses/MIT - * - * Inspired by John Resig's JavaScript Micro-Templating: - * http://ejohn.org/blog/javascript-micro-templating/ - */ - -/* global define */ - -/* eslint-disable strict */ - -;(function ($) { - 'use strict' - var tmpl = function (str, data) { - var f = !/[^\w\-.:]/.test(str) - ? (tmpl.cache[str] = tmpl.cache[str] || tmpl(tmpl.load(str))) - : new Function( // eslint-disable-line no-new-func - tmpl.arg + ',tmpl', - 'var _e=tmpl.encode' + - tmpl.helper + - ",_s='" + - str.replace(tmpl.regexp, tmpl.func) + - "';return _s;" - ) - return data - ? f(data, tmpl) - : function (data) { - return f(data, tmpl) - } - } - tmpl.cache = {} - tmpl.load = function (id) { - return document.getElementById(id).innerHTML - } - tmpl.regexp = /([\s'\\])(?!(?:[^{]|\{(?!%))*%\})|(?:\{%(=|#)([\s\S]+?)%\})|(\{%)|(%\})/g - tmpl.func = function (s, p1, p2, p3, p4, p5) { - if (p1) { - // whitespace, quote and backspace in HTML context - return ( - { - '\n': '\\n', - '\r': '\\r', - '\t': '\\t', - ' ': ' ' - }[p1] || '\\' + p1 - ) - } - if (p2) { - // interpolation: {%=prop%}, or unescaped: {%#prop%} - if (p2 === '=') { - return "'+_e(" + p3 + ")+'" - } - return "'+(" + p3 + "==null?'':" + p3 + ")+'" - } - if (p4) { - // evaluation start tag: {% - return "';" - } - if (p5) { - // evaluation end tag: %} - return "_s+='" - } - } - tmpl.encReg = /[<>&"'\x00]/g // eslint-disable-line no-control-regex - tmpl.encMap = { - '<': '<', - '>': '>', - '&': '&', - '"': '"', - "'": ''' - } - tmpl.encode = function (s) { - // eslint-disable-next-line eqeqeq - return (s == null ? '' : '' + s).replace(tmpl.encReg, function (c) { - return tmpl.encMap[c] || '' - }) - } - tmpl.arg = 'o' - tmpl.helper = - ",print=function(s,e){_s+=e?(s==null?'':s):_e(s);}" + - ',include=function(s,d){_s+=tmpl(s,d);}' - if (typeof define === 'function' && define.amd) { - define(function () { - return tmpl - }) - } else if (typeof module === 'object' && module.exports) { - module.exports = tmpl - } else { - $.tmpl = tmpl - } -})(this) diff --git a/lib/web/jquery/fileUploader/vendor/jquery.ui.widget.js b/lib/web/jquery/fileUploader/vendor/jquery.ui.widget.js deleted file mode 100644 index 43f0ec6340f37..0000000000000 --- a/lib/web/jquery/fileUploader/vendor/jquery.ui.widget.js +++ /dev/null @@ -1,832 +0,0 @@ -/*! jQuery UI - v1.13.2 - * http://jqueryui.com - * Includes: widget.js - * Copyright jQuery Foundation and other contributors; Licensed MIT */ - -/* global define, require */ -/* eslint-disable no-param-reassign, new-cap, jsdoc/require-jsdoc */ - -(function (factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { - // AMD. Register as an anonymous module. - define(['jquery'], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS - factory(require('jquery')); - } else { - // Browser globals - factory(window.jQuery); - } -})(function ($) { - ('use strict'); - - $.ui = $.ui || {}; - - $.ui.version = '1.13.2'; - - /*! - * jQuery UI Widget 1.13.2 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - - //>>label: Widget - //>>group: Core - //>>description: Provides a factory for creating stateful widgets with a common API. - //>>docs: http://api.jqueryui.com/jQuery.widget/ - //>>demos: http://jqueryui.com/widget/ - - // Support: jQuery 1.9.x or older - // $.expr[ ":" ] is deprecated. - if (!$.expr.pseudos) { - $.expr.pseudos = $.expr[':']; - } - - // Support: jQuery 1.11.x or older - // $.unique has been renamed to $.uniqueSort - if (!$.uniqueSort) { - $.uniqueSort = $.unique; - } - var widgetUuid = 0; - var widgetHasOwnProperty = Array.prototype.hasOwnProperty; - var widgetSlice = Array.prototype.slice; - - $.cleanData = (function (orig) { - return function (elems) { - var events, elem, i; - for (i = 0; (elem = elems[i]) != null; i++) { - // Only trigger remove when necessary to save time - events = $._data(elem, 'events'); - if (events && events.remove) { - $(elem).triggerHandler('remove'); - } - } - orig(elems); - }; - })($.cleanData); - - $.widget = function (name, base, prototype) { - var existingConstructor, constructor, basePrototype; - - // ProxiedPrototype allows the provided prototype to remain unmodified - // so that it can be used as a mixin for multiple widgets (#8876) - var proxiedPrototype = {}; - - var namespace = name.split('.')[0]; - // eslint-disable-next-line no-param-reassign - name = name.split('.')[1]; - var fullName = namespace + '-' + name; - - if (!prototype) { - prototype = base; - base = $.Widget; - } - - if (Array.isArray(prototype)) { - prototype = $.extend.apply(null, [{}].concat(prototype)); - } - - // Create selector for plugin - $.expr.pseudos[fullName.toLowerCase()] = function (elem) { - return !!$.data(elem, fullName); - }; - - $[namespace] = $[namespace] || {}; - existingConstructor = $[namespace][name]; - constructor = $[namespace][name] = function (options, element) { - // Allow instantiation without "new" keyword - if (!this || !this._createWidget) { - return new constructor(options, element); - } - - // Allow instantiation without initializing for simple inheritance - // must use "new" keyword (the code above always passes args) - if (arguments.length) { - this._createWidget(options, element); - } - }; - - // Extend with the existing constructor to carry over any static properties - $.extend(constructor, existingConstructor, { - version: prototype.version, - - // Copy the object used to create the prototype in case we need to - // redefine the widget later - _proto: $.extend({}, prototype), - - // Track widgets that inherit from this widget in case this widget is - // redefined after a widget inherits from it - _childConstructors: [] - }); - - basePrototype = new base(); - - // We need to make the options hash a property directly on the new instance - // otherwise we'll modify the options hash on the prototype that we're - // inheriting from - basePrototype.options = $.widget.extend({}, basePrototype.options); - $.each(prototype, function (prop, value) { - if (typeof value !== 'function') { - proxiedPrototype[prop] = value; - return; - } - proxiedPrototype[prop] = (function () { - /** - * - */ - function _super() { - return base.prototype[prop].apply(this, arguments); - } - - /** - * @param args - */ - function _superApply(args) { - return base.prototype[prop].apply(this, args); - } - - return function () { - var __super = this._super; - var __superApply = this._superApply; - var returnValue; - - this._super = _super; - this._superApply = _superApply; - - returnValue = value.apply(this, arguments); - - this._super = __super; - this._superApply = __superApply; - - return returnValue; - }; - })(); - }); - constructor.prototype = $.widget.extend( - basePrototype, - { - // TODO: remove support for widgetEventPrefix - // always use the name + a colon as the prefix, e.g., draggable:start - // don't prefix for widgets that aren't DOM-based - widgetEventPrefix: existingConstructor - ? basePrototype.widgetEventPrefix || name - : name - }, - proxiedPrototype, - { - constructor: constructor, - namespace: namespace, - widgetName: name, - widgetFullName: fullName - } - ); - - // If this widget is being redefined then we need to find all widgets that - // are inheriting from it and redefine all of them so that they inherit from - // the new version of this widget. We're essentially trying to replace one - // level in the prototype chain. - if (existingConstructor) { - $.each(existingConstructor._childConstructors, function (i, child) { - var childPrototype = child.prototype; - - // Redefine the child widget using the same prototype that was - // originally used, but inherit from the new version of the base - $.widget( - childPrototype.namespace + '.' + childPrototype.widgetName, - constructor, - child._proto - ); - }); - - // Remove the list of existing child constructors from the old constructor - // so the old child constructors can be garbage collected - delete existingConstructor._childConstructors; - } else { - base._childConstructors.push(constructor); - } - - $.widget.bridge(name, constructor); - - return constructor; - }; - - $.widget.extend = function (target) { - var input = widgetSlice.call(arguments, 1); - var inputIndex = 0; - var inputLength = input.length; - var key; - var value; - - for (; inputIndex < inputLength; inputIndex++) { - for (key in input[inputIndex]) { - value = input[inputIndex][key]; - if ( - widgetHasOwnProperty.call(input[inputIndex], key) && - value !== undefined - ) { - // Clone objects - if ($.isPlainObject(value)) { - target[key] = $.isPlainObject(target[key]) - ? $.widget.extend({}, target[key], value) - : // Don't extend strings, arrays, etc. with objects - $.widget.extend({}, value); - - // Copy everything else by reference - } else { - target[key] = value; - } - } - } - } - return target; - }; - - $.widget.bridge = function (name, object) { - var fullName = object.prototype.widgetFullName || name; - $.fn[name] = function (options) { - var isMethodCall = typeof options === 'string'; - var args = widgetSlice.call(arguments, 1); - var returnValue = this; - - if (isMethodCall) { - // If this is an empty collection, we need to have the instance method - // return undefined instead of the jQuery instance - if (!this.length && options === 'instance') { - returnValue = undefined; - } else { - this.each(function () { - var methodValue; - var instance = $.data(this, fullName); - - if (options === 'instance') { - returnValue = instance; - return false; - } - - if (!instance) { - return $.error( - 'cannot call methods on ' + - name + - ' prior to initialization; ' + - "attempted to call method '" + - options + - "'" - ); - } - - if ( - typeof instance[options] !== 'function' || - options.charAt(0) === '_' - ) { - return $.error( - "no such method '" + - options + - "' for " + - name + - ' widget instance' - ); - } - - methodValue = instance[options].apply(instance, args); - - if (methodValue !== instance && methodValue !== undefined) { - returnValue = - methodValue && methodValue.jquery - ? returnValue.pushStack(methodValue.get()) - : methodValue; - return false; - } - }); - } - } else { - // Allow multiple hashes to be passed on init - if (args.length) { - options = $.widget.extend.apply(null, [options].concat(args)); - } - - this.each(function () { - var instance = $.data(this, fullName); - if (instance) { - instance.option(options || {}); - if (instance._init) { - instance._init(); - } - } else { - $.data(this, fullName, new object(options, this)); - } - }); - } - - return returnValue; - }; - }; - - $.Widget = function (/* options, element */) {}; - $.Widget._childConstructors = []; - - $.Widget.prototype = { - widgetName: 'widget', - widgetEventPrefix: '', - defaultElement: '
', - - options: { - classes: {}, - disabled: false, - - // Callbacks - create: null - }, - - _createWidget: function (options, element) { - element = $(element || this.defaultElement || this)[0]; - this.element = $(element); - this.uuid = widgetUuid++; - this.eventNamespace = '.' + this.widgetName + this.uuid; - - this.bindings = $(); - this.hoverable = $(); - this.focusable = $(); - this.classesElementLookup = {}; - - if (element !== this) { - $.data(element, this.widgetFullName, this); - this._on(true, this.element, { - remove: function (event) { - if (event.target === element) { - this.destroy(); - } - } - }); - this.document = $( - element.style - ? // Element within the document - element.ownerDocument - : // Element is window or document - element.document || element - ); - this.window = $( - this.document[0].defaultView || this.document[0].parentWindow - ); - } - - this.options = $.widget.extend( - {}, - this.options, - this._getCreateOptions(), - options - ); - - this._create(); - - if (this.options.disabled) { - this._setOptionDisabled(this.options.disabled); - } - - this._trigger('create', null, this._getCreateEventData()); - this._init(); - }, - - _getCreateOptions: function () { - return {}; - }, - - _getCreateEventData: $.noop, - - _create: $.noop, - - _init: $.noop, - - destroy: function () { - var that = this; - - this._destroy(); - $.each(this.classesElementLookup, function (key, value) { - that._removeClass(value, key); - }); - - // We can probably remove the unbind calls in 2.0 - // all event bindings should go through this._on() - this.element.off(this.eventNamespace).removeData(this.widgetFullName); - this.widget().off(this.eventNamespace).removeAttr('aria-disabled'); - - // Clean up events and states - this.bindings.off(this.eventNamespace); - }, - - _destroy: $.noop, - - widget: function () { - return this.element; - }, - - option: function (key, value) { - var options = key; - var parts; - var curOption; - var i; - - if (arguments.length === 0) { - // Don't return a reference to the internal hash - return $.widget.extend({}, this.options); - } - - if (typeof key === 'string') { - // Handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } } - options = {}; - parts = key.split('.'); - key = parts.shift(); - if (parts.length) { - curOption = options[key] = $.widget.extend({}, this.options[key]); - for (i = 0; i < parts.length - 1; i++) { - curOption[parts[i]] = curOption[parts[i]] || {}; - curOption = curOption[parts[i]]; - } - key = parts.pop(); - if (arguments.length === 1) { - return curOption[key] === undefined ? null : curOption[key]; - } - curOption[key] = value; - } else { - if (arguments.length === 1) { - return this.options[key] === undefined ? null : this.options[key]; - } - options[key] = value; - } - } - - this._setOptions(options); - - return this; - }, - - _setOptions: function (options) { - var key; - - for (key in options) { - this._setOption(key, options[key]); - } - - return this; - }, - - _setOption: function (key, value) { - if (key === 'classes') { - this._setOptionClasses(value); - } - - this.options[key] = value; - - if (key === 'disabled') { - this._setOptionDisabled(value); - } - - return this; - }, - - _setOptionClasses: function (value) { - var classKey, elements, currentElements; - - for (classKey in value) { - currentElements = this.classesElementLookup[classKey]; - if ( - value[classKey] === this.options.classes[classKey] || - !currentElements || - !currentElements.length - ) { - continue; - } - - // We are doing this to create a new jQuery object because the _removeClass() call - // on the next line is going to destroy the reference to the current elements being - // tracked. We need to save a copy of this collection so that we can add the new classes - // below. - elements = $(currentElements.get()); - this._removeClass(currentElements, classKey); - - // We don't use _addClass() here, because that uses this.options.classes - // for generating the string of classes. We want to use the value passed in from - // _setOption(), this is the new value of the classes option which was passed to - // _setOption(). We pass this value directly to _classes(). - elements.addClass( - this._classes({ - element: elements, - keys: classKey, - classes: value, - add: true - }) - ); - } - }, - - _setOptionDisabled: function (value) { - this._toggleClass( - this.widget(), - this.widgetFullName + '-disabled', - null, - !!value - ); - - // If the widget is becoming disabled, then nothing is interactive - if (value) { - this._removeClass(this.hoverable, null, 'ui-state-hover'); - this._removeClass(this.focusable, null, 'ui-state-focus'); - } - }, - - enable: function () { - return this._setOptions({ disabled: false }); - }, - - disable: function () { - return this._setOptions({ disabled: true }); - }, - - _classes: function (options) { - var full = []; - var that = this; - - options = $.extend( - { - element: this.element, - classes: this.options.classes || {} - }, - options - ); - - /** - * - */ - function bindRemoveEvent() { - var nodesToBind = []; - - options.element.each(function (_, element) { - var isTracked = $.map(that.classesElementLookup, function (elements) { - return elements; - }).some(function (elements) { - return elements.is(element); - }); - - if (!isTracked) { - nodesToBind.push(element); - } - }); - - that._on($(nodesToBind), { - remove: '_untrackClassesElement' - }); - } - - /** - * @param classes - * @param checkOption - */ - function processClassString(classes, checkOption) { - var current, i; - for (i = 0; i < classes.length; i++) { - current = that.classesElementLookup[classes[i]] || $(); - if (options.add) { - bindRemoveEvent(); - current = $( - $.uniqueSort(current.get().concat(options.element.get())) - ); - } else { - current = $(current.not(options.element).get()); - } - that.classesElementLookup[classes[i]] = current; - full.push(classes[i]); - if (checkOption && options.classes[classes[i]]) { - full.push(options.classes[classes[i]]); - } - } - } - - if (options.keys) { - processClassString(options.keys.match(/\S+/g) || [], true); - } - if (options.extra) { - processClassString(options.extra.match(/\S+/g) || []); - } - - return full.join(' '); - }, - - _untrackClassesElement: function (event) { - var that = this; - $.each(that.classesElementLookup, function (key, value) { - if ($.inArray(event.target, value) !== -1) { - that.classesElementLookup[key] = $(value.not(event.target).get()); - } - }); - - this._off($(event.target)); - }, - - _removeClass: function (element, keys, extra) { - return this._toggleClass(element, keys, extra, false); - }, - - _addClass: function (element, keys, extra) { - return this._toggleClass(element, keys, extra, true); - }, - - _toggleClass: function (element, keys, extra, add) { - add = typeof add === 'boolean' ? add : extra; - var shift = typeof element === 'string' || element === null, - options = { - extra: shift ? keys : extra, - keys: shift ? element : keys, - element: shift ? this.element : element, - add: add - }; - options.element.toggleClass(this._classes(options), add); - return this; - }, - - _on: function (suppressDisabledCheck, element, handlers) { - var delegateElement; - var instance = this; - - // No suppressDisabledCheck flag, shuffle arguments - if (typeof suppressDisabledCheck !== 'boolean') { - handlers = element; - element = suppressDisabledCheck; - suppressDisabledCheck = false; - } - - // No element argument, shuffle and use this.element - if (!handlers) { - handlers = element; - element = this.element; - delegateElement = this.widget(); - } else { - element = delegateElement = $(element); - this.bindings = this.bindings.add(element); - } - - $.each(handlers, function (event, handler) { - /** - * - */ - function handlerProxy() { - // Allow widgets to customize the disabled handling - // - disabled as an array instead of boolean - // - disabled class as method for disabling individual parts - if ( - !suppressDisabledCheck && - (instance.options.disabled === true || - $(this).hasClass('ui-state-disabled')) - ) { - return; - } - return ( - typeof handler === 'string' ? instance[handler] : handler - ).apply(instance, arguments); - } - - // Copy the guid so direct unbinding works - if (typeof handler !== 'string') { - handlerProxy.guid = handler.guid = - handler.guid || handlerProxy.guid || $.guid++; - } - - var match = event.match(/^([\w:-]*)\s*(.*)$/); - var eventName = match[1] + instance.eventNamespace; - var selector = match[2]; - - if (selector) { - delegateElement.on(eventName, selector, handlerProxy); - } else { - element.on(eventName, handlerProxy); - } - }); - }, - - _off: function (element, eventName) { - eventName = - (eventName || '').split(' ').join(this.eventNamespace + ' ') + - this.eventNamespace; - element.off(eventName); - - // Clear the stack to avoid memory leaks (#10056) - this.bindings = $(this.bindings.not(element).get()); - this.focusable = $(this.focusable.not(element).get()); - this.hoverable = $(this.hoverable.not(element).get()); - }, - - _delay: function (handler, delay) { - /** - * - */ - function handlerProxy() { - return ( - typeof handler === 'string' ? instance[handler] : handler - ).apply(instance, arguments); - } - var instance = this; - return setTimeout(handlerProxy, delay || 0); - }, - - _hoverable: function (element) { - this.hoverable = this.hoverable.add(element); - this._on(element, { - mouseenter: function (event) { - this._addClass($(event.currentTarget), null, 'ui-state-hover'); - }, - mouseleave: function (event) { - this._removeClass($(event.currentTarget), null, 'ui-state-hover'); - } - }); - }, - - _focusable: function (element) { - this.focusable = this.focusable.add(element); - this._on(element, { - focusin: function (event) { - this._addClass($(event.currentTarget), null, 'ui-state-focus'); - }, - focusout: function (event) { - this._removeClass($(event.currentTarget), null, 'ui-state-focus'); - } - }); - }, - - _trigger: function (type, event, data) { - var prop, orig; - var callback = this.options[type]; - - data = data || {}; - event = $.Event(event); - event.type = ( - type === this.widgetEventPrefix ? type : this.widgetEventPrefix + type - ).toLowerCase(); - - // The original event may come from any element - // so we need to reset the target on the new event - event.target = this.element[0]; - - // Copy original event properties over to the new event - orig = event.originalEvent; - if (orig) { - for (prop in orig) { - if (!(prop in event)) { - event[prop] = orig[prop]; - } - } - } - - this.element.trigger(event, data); - return !( - (typeof callback === 'function' && - callback.apply(this.element[0], [event].concat(data)) === false) || - event.isDefaultPrevented() - ); - } - }; - - $.each({ show: 'fadeIn', hide: 'fadeOut' }, function (method, defaultEffect) { - $.Widget.prototype['_' + method] = function (element, options, callback) { - if (typeof options === 'string') { - options = { effect: options }; - } - - var hasOptions; - var effectName = !options - ? method - : options === true || typeof options === 'number' - ? defaultEffect - : options.effect || defaultEffect; - - options = options || {}; - if (typeof options === 'number') { - options = { duration: options }; - } else if (options === true) { - options = {}; - } - - hasOptions = !$.isEmptyObject(options); - options.complete = callback; - - if (options.delay) { - element.delay(options.delay); - } - - if (hasOptions && $.effects && $.effects.effect[effectName]) { - element[method](options); - } else if (effectName !== method && element[effectName]) { - element[effectName](options.duration, options.easing, callback); - } else { - element.queue(function (next) { - $(this)[method](); - if (callback) { - callback.call(element[0]); - } - next(); - }); - } - }; - }); -}); From 194ee5020d1ec982a2ed2c990b72ee40af692280 Mon Sep 17 00:00:00 2001 From: Atul-glo35265 Date: Thu, 8 Feb 2024 13:15:25 +0530 Subject: [PATCH 086/104] AC-10720::Migration from outdated jquery/fileUpload library - Updating composer files --- composer.json | 2 -- composer.lock | 10 +++++----- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/composer.json b/composer.json index e45270fcefd66..2eb461d5e8c10 100644 --- a/composer.json +++ b/composer.json @@ -339,7 +339,6 @@ "magento/framework-message-queue": "*", "trentrichardson/jquery-timepicker-addon": "1.4.3", "components/jquery": "1.11.0", - "blueimp/jquery-file-upload": "5.6.14", "components/jqueryui": "1.10.4", "twbs/bootstrap": "3.1.0", "tinymce/tinymce": "3.4.7", @@ -359,7 +358,6 @@ "lib/web/jquery.js", "lib/web/jquery/jquery.min.js" ], - "blueimp/jquery-file-upload": "lib/web/jquery/fileUploader", "components/jqueryui": [ "lib/web/jquery/jquery-ui.js" ], diff --git a/composer.lock b/composer.lock index adcba00ed2902..dd89bf8550425 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": "c7d6d55df68edb65cdacfafa8d780894", + "content-hash": "4c446ddc8170dedd5786e6259de7d89c", "packages": [ { "name": "aws/aws-crt-php", @@ -6217,12 +6217,12 @@ "version": "8.4.0", "source": { "type": "git", - "url": "https://github.com/sabberworm/PHP-CSS-Parser.git", + "url": "https://github.com/MyIntervals/PHP-CSS-Parser.git", "reference": "e41d2140031d533348b2192a83f02d8dd8a71d30" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/e41d2140031d533348b2192a83f02d8dd8a71d30", + "url": "https://api.github.com/repos/MyIntervals/PHP-CSS-Parser/zipball/e41d2140031d533348b2192a83f02d8dd8a71d30", "reference": "e41d2140031d533348b2192a83f02d8dd8a71d30", "shasum": "" }, @@ -6260,8 +6260,8 @@ "stylesheet" ], "support": { - "issues": "https://github.com/sabberworm/PHP-CSS-Parser/issues", - "source": "https://github.com/sabberworm/PHP-CSS-Parser/tree/8.4.0" + "issues": "https://github.com/MyIntervals/PHP-CSS-Parser/issues", + "source": "https://github.com/MyIntervals/PHP-CSS-Parser/tree/8.4.0" }, "time": "2021-12-11T13:40:54+00:00" }, From 9caf43b1485d5c631b8da8497e9d2cc97b5178cf Mon Sep 17 00:00:00 2001 From: Saurabh Kumar Date: Fri, 9 Feb 2024 12:09:39 +0530 Subject: [PATCH 087/104] AC-10727: Update compatible with PHP 8.3 magento/composer --- composer.json | 2 +- composer.lock | 25 ++++++++++++------------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/composer.json b/composer.json index e45270fcefd66..10bc75c56d82f 100644 --- a/composer.json +++ b/composer.json @@ -68,7 +68,7 @@ "laminas/laminas-validator": "^2.23", "league/flysystem": "^2.4", "league/flysystem-aws-s3-v3": "^2.4", - "magento/composer": "dev-develop", + "magento/composer": "1.10.0-beta1", "magento/composer-dependency-version-audit-plugin": "^0.1", "magento/magento-composer-installer": ">=0.4.0", "magento/zend-cache": "^1.16", diff --git a/composer.lock b/composer.lock index adcba00ed2902..de3d658272034 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": "c7d6d55df68edb65cdacfafa8d780894", + "content-hash": "e1dc191a158ef6fc2d2c03cf68199426", "packages": [ { "name": "aws/aws-crt-php", @@ -4288,16 +4288,16 @@ }, { "name": "magento/composer", - "version": "dev-develop", + "version": "1.10.0-beta1", "source": { "type": "git", "url": "https://github.com/magento/composer.git", - "reference": "2c5c08a668e378eeed1e8c6e50315c14af4ca3ce" + "reference": "3941875c84a54f195ad5aaa1826f5b2f0f122fe5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/magento/composer/zipball/2c5c08a668e378eeed1e8c6e50315c14af4ca3ce", - "reference": "2c5c08a668e378eeed1e8c6e50315c14af4ca3ce", + "url": "https://api.github.com/repos/magento/composer/zipball/3941875c84a54f195ad5aaa1826f5b2f0f122fe5", + "reference": "3941875c84a54f195ad5aaa1826f5b2f0f122fe5", "shasum": "" }, "require": { @@ -4308,7 +4308,6 @@ "require-dev": { "phpunit/phpunit": "^9" }, - "default-branch": true, "type": "library", "autoload": { "psr-4": { @@ -4323,9 +4322,9 @@ "description": "Magento composer library helps to instantiate Composer application and run composer commands.", "support": { "issues": "https://github.com/magento/composer/issues", - "source": "https://github.com/magento/composer/tree/develop" + "source": "https://github.com/magento/composer/tree/1.10.0-beta1" }, - "time": "2023-12-19T16:58:46+00:00" + "time": "2024-02-07T21:13:02+00:00" }, { "name": "magento/composer-dependency-version-audit-plugin", @@ -6217,12 +6216,12 @@ "version": "8.4.0", "source": { "type": "git", - "url": "https://github.com/sabberworm/PHP-CSS-Parser.git", + "url": "https://github.com/MyIntervals/PHP-CSS-Parser.git", "reference": "e41d2140031d533348b2192a83f02d8dd8a71d30" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/e41d2140031d533348b2192a83f02d8dd8a71d30", + "url": "https://api.github.com/repos/MyIntervals/PHP-CSS-Parser/zipball/e41d2140031d533348b2192a83f02d8dd8a71d30", "reference": "e41d2140031d533348b2192a83f02d8dd8a71d30", "shasum": "" }, @@ -6260,8 +6259,8 @@ "stylesheet" ], "support": { - "issues": "https://github.com/sabberworm/PHP-CSS-Parser/issues", - "source": "https://github.com/sabberworm/PHP-CSS-Parser/tree/8.4.0" + "issues": "https://github.com/MyIntervals/PHP-CSS-Parser/issues", + "source": "https://github.com/MyIntervals/PHP-CSS-Parser/tree/8.4.0" }, "time": "2021-12-11T13:40:54+00:00" }, @@ -13145,7 +13144,7 @@ "aliases": [], "minimum-stability": "stable", "stability-flags": { - "magento/composer": 20 + "magento/composer": 10 }, "prefer-stable": true, "prefer-lowest": false, From e8ba6decf6584e237425e2b9ca228455a4b82b62 Mon Sep 17 00:00:00 2001 From: Atul-glo35265 Date: Fri, 9 Feb 2024 16:43:21 +0530 Subject: [PATCH 088/104] AC-10720::Migration from outdated jquery/fileUpload library - Resolving Static Tests --- .../adminhtml/templates/media/uploader.phtml | 5 +- .../templates/browser/content/uploader.phtml | 9 +- .../product/edit/attribute/steps/bulk.phtml | 133 +++++++++--------- .../adminhtml/web/js/variations/steps/bulk.js | 110 +++++++-------- .../view/adminhtml/web/js/image-uploader.js | 65 +++++---- .../view/adminhtml/web/js/new-video-dialog.js | 103 +++++++------- .../templates/browser/content/uploader.phtml | 5 +- .../js/form/element/file-uploader.test.js | 28 ++-- 8 files changed, 231 insertions(+), 227 deletions(-) diff --git a/app/code/Magento/Backend/view/adminhtml/templates/media/uploader.phtml b/app/code/Magento/Backend/view/adminhtml/templates/media/uploader.phtml index 02d800d2cde98..a9470eacf7fc2 100644 --- a/app/code/Magento/Backend/view/adminhtml/templates/media/uploader.phtml +++ b/app/code/Magento/Backend/view/adminhtml/templates/media/uploader.phtml @@ -6,6 +6,7 @@ // phpcs:disable PHPCompatibility.Miscellaneous.RemovedAlternativePHPTags.MaybeASPOpenTagFound /** @var $block \Magento\Backend\Block\Media\Uploader */ +/** @var \Magento\Framework\Escaper $escaper */ ?>
- escapeHtml(__('Browse Files...')) ?> -
+ escapeHtml(__('Browse Files...')) ?> +