]> _ Git - fluidbook-toolbox.git/commitdiff
wip #7340 @0.25
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 18 Feb 2025 19:01:10 +0000 (20:01 +0100)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 18 Feb 2025 19:01:10 +0000 (20:01 +0100)
app/Fluidbook/Compiler/Compiler.php
app/Fluidbook/Farm.php
app/Models/FluidbookDocument.php
app/Models/FluidbookPublication.php
composer.lock

index 9b612492b14f1067a584fd8abd5d2275500d5a1f..024029e12fbe850d208abb84df0a83b8b14a07dc 100644 (file)
@@ -362,7 +362,8 @@ class Compiler extends Base implements CompilerInterface, IVirtualDirectoryError
         $this->width = round($this->getFluidbook()->getPageWidth(), 8);
         $this->height = round($this->getFluidbook()->getPageHeight(), 8);
 
-        $this->imageFormat = $this->fluidbookSettings->imageFormat;
+        $this->imageFormat =$this->getFluidbook()->getImageFormat();
+        $this->fluidbookSettings->set('imageFormat',$this->imageFormat);
 
         $p1 = $this->getFluidbook()->getFile(1, $this->imageFormat, 150);
         $imagesize = Image::getimagesize($p1);
index c56fcca83f96694f97115311d0dd0fb7dd697e2b..4895104ede83685439181eeee25efa088d354a3a 100644 (file)
@@ -120,7 +120,7 @@ class Farm
     /**
      * @throws \Exception
      */
-    public static function getFile($page, $format, $resolution, $quality, $withText, $withGraphics, $version, $resolutionRatio, $mobileFirstRatio, $path, $force = false)
+    public static function getFile($page, $format, $resolution, $quality, $withText, $withGraphics, $transparent, $version, $resolutionRatio, $mobileFirstRatio, $path, $force = false)
     {
         $params = [
             'operation' => 'documentfile',
@@ -129,6 +129,7 @@ class Farm
             'resolution' => $resolution,
             'withText' => $withText,
             'withGraphics' => $withGraphics,
+            'transparent' => $transparent,
             'version' => $version,
             'quality' => $quality,
             'force' => $force,
@@ -147,7 +148,7 @@ class Farm
         return self::$_outPDF[$pdf];
     }
 
-    public static function getFileFromPDF($pdf, $page, $format, $resolution, $quality, $withText = true, $withGraphics = true, $version = 'html', $out = null, $force = false, $attempts = 3)
+    public static function getFileFromPDF($pdf, $page, $format, $resolution, $quality, $withText = true, $withGraphics = true, $transparent = false, $version = 'html', $out = null, $force = false, $attempts = 3)
     {
         if (null === $out) {
             $out = self::_getOutDirFromPDF($pdf);
@@ -162,6 +163,7 @@ class Farm
             'quality' => $quality,
             'withText' => $withText,
             'withGraphics' => $withGraphics,
+            'transparent' => $transparent,
             'version' => $version,
             'out' => $out];
 
@@ -176,7 +178,7 @@ class Farm
         }
 
         $res = Cache::rememberForever($cachekey, function () use ($params, $out) {
-            $path = $out . ProcessFile::getFilename($params['page'], $params['format'], $params['resolution'], $params['quality'], $params['withGraphics'], $params['withText'], $params['version']);
+            $path = $out . ProcessFile::getFilename($params['page'], $params['format'], $params['resolution'], $params['quality'], $params['withGraphics'], $params['withText'], $params['transparent'], $params['version']);
             if (file_exists($path)) {
                 return $path;
             }
@@ -189,7 +191,7 @@ class Farm
 
         if ((!$res || !file_exists($res)) && $attempts > 0) {
             Cache::forget($cachekey);
-            return self::getFileFromPDF($pdf, $page, $format, $resolution, $quality, $withText, $withGraphics, $version, $out, true, $attempts - 1);
+            return self::getFileFromPDF($pdf, $page, $format, $resolution, $quality, $withText, $withGraphics,$transparent, $version, $out, true, $attempts - 1);
         }
 
         return $res;
index b5ab30f5547075da9f06b2dfda9591d11ca587b1..8bc701b76bb7cba37744468b015cfb00b6398055 100644 (file)
@@ -264,14 +264,14 @@ class FluidbookDocument extends ToolboxModel
         $this->saveQuietly();
     }
 
-    public function hasFile($page, $format = 'jpg', $resolution = 150, $quality = 85, $withText = true, $withGraphics = true, $version = 'html', $forceCheck = false)
+    public function hasFile($page, $format = 'jpg', $resolution = 150, $quality = 85, $withText = true, $withGraphics = true, $version = 'html', $transparent = false, $forceCheck = false)
     {
-        $this->_normalize($format, $resolution, $quality, $withText, $withGraphics, $version);
-        $cacheKey = $this->fileCacheKey($page, $format, $resolution, $quality, $withText, $withGraphics, $version);
+        $this->_normalize($format, $resolution, $quality, $withText, $withGraphics, $transparent, $version);
+        $cacheKey = $this->fileCacheKey($page, $format, $resolution, $quality, $withText, $withGraphics, $transparent, $version);
         if (!$forceCheck && Cache::has($cacheKey)) {
             return true;
         } else {
-            $path = $this->_getPath($page, $format, $resolution, $quality, $withText, $withGraphics, $version);
+            $path = $this->_getPath($page, $format, $resolution, $quality, $withText, $withGraphics, $transparent, $version);
             $minsize = $format === 'svg' ? 100 : 1;
 
             if (!file_exists($path)) {
@@ -298,7 +298,7 @@ class FluidbookDocument extends ToolboxModel
         }
     }
 
-    protected function _normalize(&$format, &$resolution, &$quality, &$withText, &$withGraphics, &$version)
+    protected function _normalize(&$format, &$resolution, &$quality, &$withText, &$withGraphics, &$transparent, &$version)
     {
         if ($format === 'jpeg') {
             $format = 'jpg';
@@ -314,12 +314,12 @@ class FluidbookDocument extends ToolboxModel
         }
     }
 
-    public function _getPath($page, $format = 'jpg', $resolution = 150, $quality = 85, $withText = true, $withGraphics = true, $version = 'html')
+    public function _getPath($page, $format = 'jpg', $resolution = 150, $quality = 85, $withText = true, $withGraphics = true, $transparent = false, $version = 'html')
     {
-        $this->_normalize($format, $resolution, $quality, $withText, $withGraphics, $version);
-        $cacheKey = $this->fileCacheKey($page, $format, $resolution, $quality, $withText, $withGraphics, $version) . '_path';
+        $this->_normalize($format, $resolution, $quality, $withText, $withGraphics, $transparent, $version);
+        $cacheKey = $this->fileCacheKey($page, $format, $resolution, $quality, $withText, $withGraphics, $transparent, $version) . '_path';
 
-        return Cache::rememberForever($cacheKey, function () use ($page, $format, $resolution, $quality, $withText, $withGraphics, $version) {
+        return Cache::rememberForever($cacheKey, function () use ($page, $format, $resolution, $quality, $withText, $withGraphics, $transparent, $version) {
             $dir = $this->path($version) . '/';
 
             if ($format === 'svg') {
@@ -343,13 +343,13 @@ class FluidbookDocument extends ToolboxModel
         });
     }
 
-    protected function fileCacheKey($page, $format = 'jpg', $resolution = 150, $quality = 85, $withText = true, $withGraphics = true, $version = 'html')
+    protected function fileCacheKey($page, $format = 'jpg', $resolution = 150, $quality = 85, $withText = true, $withGraphics = true, $transparent = false, $version = 'html')
     {
-        $this->_normalize($format, $resolution, $quality, $withText, $withGraphics, $version);
-        return 'FluidbookDocument_' . $this->id . '_' . $page . '_' . $format . '_' . $resolution . '_' . $quality . '_' . ($withText ? '1' : '0') . '_' . ($withGraphics ? '1' : '0') . '_' . $version;
+        $this->_normalize($format, $resolution, $quality, $withText, $withGraphics, $transparent, $version);
+        return 'FluidbookDocument_' . $this->id . '_' . $page . '_' . $format . '_' . $resolution . '_' . $quality . '_' . ($withText ? '1' : '0') . '_' . ($withGraphics ? '1' : '0') . '_' . ($transparent ? '1' : '0') . '_' . $version;
     }
 
-    public function getFile($page, $format = 'jpg', $resolution = 150, $quality = 85, $withText = true, $withGraphics = true, $version = 'html', $forceCheck = false, $forceProcess = false)
+    public function getFile($page, $format = 'jpg', $resolution = 150, $quality = 85, $withText = true, $withGraphics = true, $transparent = false, $version = 'html', $forceCheck = false, $forceProcess = false)
     {
         $forceCheckAll = $this->path() . 'CHECK';
         if (file_exists($forceCheckAll)) {
@@ -357,47 +357,47 @@ class FluidbookDocument extends ToolboxModel
             unlink($forceCheckAll);
         }
 
-        $this->_normalize($format, $resolution, $quality, $withText, $withGraphics, $version);
+        $this->_normalize($format, $resolution, $quality, $withText, $withGraphics, $transparent, $version);
 
         if ($forceProcess) {
-            $this->removeFile($page, $format, $resolution, $withText, $withGraphics, $version);
+            $this->removeFile($page, $format, $resolution, $withText, $withGraphics, $transparent, $version);
         }
 
         $doc = $this;
-        $cacheKey = $this->fileCacheKey($page, $format, $resolution, $quality, $withText, $withGraphics, $version);
+        $cacheKey = $this->fileCacheKey($page, $format, $resolution, $quality, $withText, $withGraphics, $transparent, $version);
         if ($forceCheck) {
             Cache::forget($cacheKey);
         }
-        $res = Cache::tags('fluidbook_document_' . $this->id)->rememberForever($cacheKey, function () use ($doc, $page, $format, $resolution, $quality, $withText, $withGraphics, $version) {
-            return $doc->_getFile($page, $format, $resolution, $quality, $withText, $withGraphics, $version);
+        $res = Cache::tags('fluidbook_document_' . $this->id)->rememberForever($cacheKey, function () use ($doc, $page, $format, $resolution, $quality, $withText, $withGraphics, $transparent, $version) {
+            return $doc->_getFile($page, $format, $resolution, $quality, $withText, $withGraphics, $transparent, $version);
         });
         if (!$res && !$forceProcess) {
-            return $this->getFile($page, $format, $resolution, $quality, $withText, $withGraphics, $version, true, true);
+            return $this->getFile($page, $format, $resolution, $quality, $withText, $withGraphics, $transparent, $version, true, true);
         }
         return $res;
     }
 
-    public function removeFile($page, $format = 'jpg', $resolution = 150, $quality = 85, $withText = true, $withGraphics = true, $version = 'html')
+    public function removeFile($page, $format = 'jpg', $resolution = 150, $quality = 85, $withText = true, $withGraphics = true, $transparent = false, $version = 'html')
     {
-        $path = $this->_getPath($page, $format, $resolution, $quality, $withText, $withGraphics, $version);
+        $path = $this->_getPath($page, $format, $resolution, $quality, $withText, $withGraphics, $transparent, $version);
         if (file_exists($path)) {
             unlink($path);
         }
-        Cache::forget($this->fileCacheKey($page, $format, $resolution, $quality, $withText, $withGraphics, $version));
+        Cache::forget($this->fileCacheKey($page, $format, $resolution, $quality, $withText, $withGraphics, $transparent, $version));
     }
 
 
     /**
      * @throws \Exception
      */
-    public function _getFile($page, $format = 'jpg', $resolution = 150, $quality = 85, $withText = true, $withGraphics = true, $version = 'html', $forceCheck = true)
+    public function _getFile($page, $format = 'jpg', $resolution = 150, $quality = 85, $withText = true, $withGraphics = true, $transparent = false, $version = 'html', $forceCheck = true)
     {
         Farm::setRegion($this->getRegion());
-        if (!$this->hasFile($page, $format, $resolution, $quality, $withText, $withGraphics, $version, $forceCheck)) {
-            return Farm::getFile($page, $format, $resolution, $quality, $withText, $withGraphics, $version, $this->getResolutionRatio(), $this->getMobileFirstRatio(), $this->path());
+        if (!$this->hasFile($page, $format, $resolution, $quality, $withText, $withGraphics, $transparent, $version, $forceCheck)) {
+            return Farm::getFile($page, $format, $resolution, $quality, $withText, $withGraphics, $transparent, $version, $this->getResolutionRatio(), $this->getMobileFirstRatio(), $this->path());
         }
 
-        $path = $this->_getPath($page, $format, $resolution, $quality, $withText, $withGraphics, $version);
+        $path = $this->_getPath($page, $format, $resolution, $quality, $withText, $withGraphics, $transparent, $version);
         touch($path);
         return $path;
     }
index b24e6ecd824c941906f4a998dbb755900cb4fec3..49c7cbc5a15ed96f5455484cafa5b79cc194c26a 100644 (file)
@@ -462,7 +462,7 @@ class FluidbookPublication extends ToolboxStatusModel
     }
 
 
-    public function getThumbFile($page, $format, $resolution = 'thumb', $withText = true, $withGraphics = true, $version = '', $force = false)
+    public function getThumbFile($page, $format, $resolution = 'thumb', $withText = true, $withGraphics = true, $transparent = false, $version = '', $force = false)
     {
         if ($this->pdfThumbnails) {
             $thumbpdf = $this->getAssetDir() . $this->pdfThumbnails;
@@ -470,7 +470,7 @@ class FluidbookPublication extends ToolboxStatusModel
             if (file_exists($thumbpdf)) {
                 try {
                     Farm::setRegion($this->region);
-                    $res = Farm::getFileFromPDF($thumbpdf, $page, $format, $resolution, $this->JPEGQuality, $withText, $withGraphics, $version, null, $force, 1);
+                    $res = Farm::getFileFromPDF($thumbpdf, $page, $format, $resolution, $this->JPEGQuality, $withText, $withGraphics, $transparent, $version, null, $force, 1);
                     return $res;
                 } catch (\Exception $e) {
                     throw new \Exception('Unable to generate thumbnails file from custom PDF "' . $this->pdfThumbnails . '" (original message : ' . $e->getMessage() . ')');
@@ -587,6 +587,11 @@ class FluidbookPublication extends ToolboxStatusModel
         return (float)$this->getDocumentSize($page)[1];
     }
 
+    public function getImageFormat()
+    {
+        return $this->transparentPage ? 'png' : $this->imageFormat;
+    }
+
     public function protected_path($path, $forceRegion = null)
     {
         $r = $forceRegion ?? $this->region;
index 9f8667a5dead17de4e0ca1669b4d281bbd38d196..84cd440f8b9e358ba9e87c63ce52b0e7494e0a2c 100644 (file)
             "source": {
                 "type": "git",
                 "url": "git://git.cubedesigners.com/cubist_pdf.git",
-                "reference": "f9bf4dfe361d40d85006661f6036e33c2d62c38e"
+                "reference": "7281080cec3a34198993868c51695dfb81d64ad9"
             },
             "dist": {
                 "type": "tar",
-                "url": "https://composer.cubedesigners.com/dist/cubist/pdf/cubist-pdf-dev-master-26f90d.tar",
-                "reference": "f9bf4dfe361d40d85006661f6036e33c2d62c38e",
-                "shasum": "7b0e51b7ea7f1bc5cd08cf52887fd0059c5ef124"
+                "url": "https://composer.cubedesigners.com/dist/cubist/pdf/cubist-pdf-dev-master-059ad5.tar",
+                "reference": "7281080cec3a34198993868c51695dfb81d64ad9",
+                "shasum": "c3dae10e49532f0639d4ae855a6d7b24235690e8"
             },
             "require": {
                 "cubist/util": "dev-master",
                 "cubist",
                 "pdf"
             ],
-            "time": "2024-11-25T17:58:06+00:00"
+            "time": "2025-02-18T18:35:39+00:00"
         },
         {
             "name": "cubist/scorm",
         },
         {
             "name": "dragon-code/support",
-            "version": "6.15.1",
+            "version": "6.15.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/TheDragonCode/support.git",
-                "reference": "dd68d435d64873797a82b318021d49ba05e917bf"
+                "reference": "33679b6736619751a9ac8935f955f5a9f73ee996"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/TheDragonCode/support/zipball/dd68d435d64873797a82b318021d49ba05e917bf",
-                "reference": "dd68d435d64873797a82b318021d49ba05e917bf",
+                "url": "https://api.github.com/repos/TheDragonCode/support/zipball/33679b6736619751a9ac8935f955f5a9f73ee996",
+                "reference": "33679b6736619751a9ac8935f955f5a9f73ee996",
                 "shasum": ""
             },
             "require": {
                     "url": "https://boosty.to/dragon-code",
                     "type": "boosty"
                 },
-                {
-                    "url": "https://www.donationalerts.com/r/dragon_code",
-                    "type": "donationalerts"
-                },
                 {
                     "url": "https://yoomoney.ru/to/410012608840929",
                     "type": "yoomoney"
                 }
             ],
-            "time": "2024-12-18T12:33:59+00:00"
+            "time": "2025-02-17T10:17:56+00:00"
         },
         {
             "name": "dragonmantank/cron-expression",
             "source": {
                 "type": "git",
                 "url": "git://git.cubedesigners.com/fluidbook_tools.git",
-                "reference": "9cda9349b8a9fdfe37d4af99b51499d9f6920759"
+                "reference": "c062513b02bcec19e7989d84414103547168afec"
             },
             "dist": {
                 "type": "tar",
-                "url": "https://composer.cubedesigners.com/dist/fluidbook/tools/fluidbook-tools-dev-master-0b3a6f.tar",
-                "reference": "9cda9349b8a9fdfe37d4af99b51499d9f6920759",
-                "shasum": "66f6b408b8a1052d9c7145b4e0e4f3406e0d4447"
+                "url": "https://composer.cubedesigners.com/dist/fluidbook/tools/fluidbook-tools-dev-master-879b04.tar",
+                "reference": "c062513b02bcec19e7989d84414103547168afec",
+                "shasum": "621a6e8f899210533c3f507ccf6f1aa0d4dfe53c"
             },
             "require": {
                 "barryvdh/laravel-debugbar": "*",
                 }
             ],
             "description": "Fluidbook Tools",
-            "time": "2025-02-13T18:11:29+00:00"
+            "time": "2025-02-18T18:44:38+00:00"
         },
         {
             "name": "fpdf/fpdf",
         },
         {
             "name": "nothingworks/blade-svg",
-            "version": "1.7.2",
+            "version": "1.8.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/blade-ui-kit/blade-icons.git",
-                "reference": "75a54a3f5a2810fcf6574ab23e91b6cc229a1b53"
+                "reference": "7b743f27476acb2ed04cb518213d78abe096e814"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/blade-ui-kit/blade-icons/zipball/75a54a3f5a2810fcf6574ab23e91b6cc229a1b53",
-                "reference": "75a54a3f5a2810fcf6574ab23e91b6cc229a1b53",
+                "url": "https://api.github.com/repos/blade-ui-kit/blade-icons/zipball/7b743f27476acb2ed04cb518213d78abe096e814",
+                "reference": "7b743f27476acb2ed04cb518213d78abe096e814",
                 "shasum": ""
             },
             "require": {
-                "illuminate/contracts": "^8.0|^9.0|^10.0|^11.0",
-                "illuminate/filesystem": "^8.0|^9.0|^10.0|^11.0",
-                "illuminate/support": "^8.0|^9.0|^10.0|^11.0",
-                "illuminate/view": "^8.0|^9.0|^10.0|^11.0",
+                "illuminate/contracts": "^8.0|^9.0|^10.0|^11.0|^12.0",
+                "illuminate/filesystem": "^8.0|^9.0|^10.0|^11.0|^12.0",
+                "illuminate/support": "^8.0|^9.0|^10.0|^11.0|^12.0",
+                "illuminate/view": "^8.0|^9.0|^10.0|^11.0|^12.0",
                 "php": "^7.4|^8.0",
                 "symfony/console": "^5.3|^6.0|^7.0",
                 "symfony/finder": "^5.3|^6.0|^7.0"
             },
             "require-dev": {
                 "mockery/mockery": "^1.5.1",
-                "orchestra/testbench": "^6.0|^7.0|^8.0|^9.0",
+                "orchestra/testbench": "^6.0|^7.0|^8.0|^9.0|^10.0",
                 "phpunit/phpunit": "^9.0|^10.5|^11.0"
             },
             "bin": [
                 }
             ],
             "abandoned": "blade-ui-kit/blade-icons",
-            "time": "2024-10-17T17:38:00+00:00"
+            "time": "2025-02-13T20:35:06+00:00"
         },
         {
             "name": "nunomaduro/termwind",
         },
         {
             "name": "rodneyrehm/plist",
-            "version": "v2.0.3",
+            "version": "v2.0.5",
             "source": {
                 "type": "git",
-                "url": "https://github.com/TECLIB/CFPropertyList.git",
-                "reference": "eb1f97cc44427359be9f09e617d68eef57707617"
+                "url": "https://github.com/moodlehq/CFPropertyList.git",
+                "reference": "e3a09679d7c020c56f13a8200d50816b3c326733"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/TECLIB/CFPropertyList/zipball/eb1f97cc44427359be9f09e617d68eef57707617",
-                "reference": "eb1f97cc44427359be9f09e617d68eef57707617",
+                "url": "https://api.github.com/repos/moodlehq/CFPropertyList/zipball/e3a09679d7c020c56f13a8200d50816b3c326733",
+                "reference": "e3a09679d7c020c56f13a8200d50816b3c326733",
                 "shasum": ""
             },
             "require": {
                 "php": "^7.4 || ^8.0"
             },
             "require-dev": {
-                "phpunit/phpunit": "^9.0",
+                "phpunit/phpunit": "^9.6.22",
                 "squizlabs/php_codesniffer": "^3.2"
             },
             "type": "library",
                 "MIT"
             ],
             "authors": [
+                {
+                    "name": "Andrew Lyons",
+                    "email": "andrew.lyons@moodle.com",
+                    "role": "developer"
+                },
+                {
+                    "name": "Andrew Gosali",
+                    "email": "andrew.gosali@moodle.com",
+                    "role": "developer"
+                },
                 {
                     "name": "Christian Kruse",
                     "email": "cjk@wwwtech.de",
                 }
             ],
             "description": "Library for reading and writing Apple's CFPropertyList (plist) files in XML as well as binary format.",
-            "homepage": "https://github.com/TECLIB/CFPropertyList",
+            "homepage": "https://github.com/moodlehq/CFPropertyList",
             "keywords": [
                 "CFPropertyList",
                 "Core Foundation",
                 "xml"
             ],
             "support": {
-                "docs": "http://teclib.github.io/CFPropertyList/howtos/",
-                "email": "contact@teclib.com",
-                "issues": "https://github.com/TECLIB/CFPropertyList/issues",
-                "rss": "https://teclib.github.io/CFPropertyList/feed.xml",
-                "source": "https://github.com/TECLIB/CFPropertyList"
+                "docs": "https://moodlehq.github.io/CFPropertyList/howtos/",
+                "issues": "https://github.com/moodlehq/CFPropertyList/issues",
+                "rss": "https://moodlehq.github.io/CFPropertyList/feed.xml",
+                "source": "https://github.com/moodlehq/CFPropertyList"
             },
-            "abandoned": true,
-            "time": "2021-12-01T18:24:28+00:00"
+            "time": "2025-02-17T03:42:49+00:00"
         },
         {
             "name": "rustici-software/scormcloud-api-v2-client-php",
         },
         {
             "name": "spatie/db-dumper",
-            "version": "3.7.1",
+            "version": "3.8.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/spatie/db-dumper.git",
-                "reference": "55d4d6710e1ab18c1e7ce2b22b8ad4bea2a30016"
+                "reference": "91e1fd4dc000aefc9753cda2da37069fc996baee"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/spatie/db-dumper/zipball/55d4d6710e1ab18c1e7ce2b22b8ad4bea2a30016",
-                "reference": "55d4d6710e1ab18c1e7ce2b22b8ad4bea2a30016",
+                "url": "https://api.github.com/repos/spatie/db-dumper/zipball/91e1fd4dc000aefc9753cda2da37069fc996baee",
+                "reference": "91e1fd4dc000aefc9753cda2da37069fc996baee",
                 "shasum": ""
             },
             "require": {
                 "spatie"
             ],
             "support": {
-                "source": "https://github.com/spatie/db-dumper/tree/3.7.1"
+                "source": "https://github.com/spatie/db-dumper/tree/3.8.0"
             },
             "funding": [
                 {
                     "type": "github"
                 }
             ],
-            "time": "2024-11-18T14:54:31+00:00"
+            "time": "2025-02-14T15:04:22+00:00"
         },
         {
             "name": "spatie/image",
         },
         {
             "name": "spatie/laravel-translatable",
-            "version": "6.10.2",
+            "version": "6.11.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/spatie/laravel-translatable.git",
-                "reference": "6150f6d55f4712279883d56490406f8a92a9c72a"
+                "reference": "2053c0c281b5f2845e704b6278d61f5e6c95d6d2"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/spatie/laravel-translatable/zipball/6150f6d55f4712279883d56490406f8a92a9c72a",
-                "reference": "6150f6d55f4712279883d56490406f8a92a9c72a",
+                "url": "https://api.github.com/repos/spatie/laravel-translatable/zipball/2053c0c281b5f2845e704b6278d61f5e6c95d6d2",
+                "reference": "2053c0c281b5f2845e704b6278d61f5e6c95d6d2",
                 "shasum": ""
             },
             "require": {
             ],
             "support": {
                 "issues": "https://github.com/spatie/laravel-translatable/issues",
-                "source": "https://github.com/spatie/laravel-translatable/tree/6.10.2"
+                "source": "https://github.com/spatie/laravel-translatable/tree/6.11.3"
             },
             "funding": [
                 {
                     "type": "github"
                 }
             ],
-            "time": "2025-02-03T08:49:09+00:00"
+            "time": "2025-02-14T14:46:34+00:00"
         },
         {
             "name": "spatie/pdf-to-image",
         },
         {
             "name": "venturecraft/revisionable",
-            "version": "1.41.0",
+            "version": "1.42.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/VentureCraft/revisionable.git",
-                "reference": "f2175b59041de6610d1586db186d0a0a782bd74e"
+                "reference": "8c7bba9a30f9c7435de38b62290a24e3bd896bad"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/VentureCraft/revisionable/zipball/f2175b59041de6610d1586db186d0a0a782bd74e",
-                "reference": "f2175b59041de6610d1586db186d0a0a782bd74e",
+                "url": "https://api.github.com/repos/VentureCraft/revisionable/zipball/8c7bba9a30f9c7435de38b62290a24e3bd896bad",
+                "reference": "8c7bba9a30f9c7435de38b62290a24e3bd896bad",
                 "shasum": ""
             },
             "require": {
-                "illuminate/support": "~4.0|~5.0|~5.1|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0",
-                "laravel/framework": "~5.4|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0",
+                "illuminate/support": "~4.0|~5.0|~5.1|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0",
+                "laravel/framework": "~5.4|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0",
                 "php": ">=5.4.0"
             },
             "require-dev": {
-                "orchestra/testbench": "~3.0|^8.0|^9.0"
+                "orchestra/testbench": "~3.0|^8.0|^9.0|^10.0"
             },
             "type": "library",
             "extra": {
                 "issues": "https://github.com/VentureCraft/revisionable/issues",
                 "source": "https://github.com/VentureCraft/revisionable"
             },
-            "time": "2024-03-13T09:43:46+00:00"
+            "time": "2025-02-16T23:55:15+00:00"
         },
         {
             "name": "vlucas/phpdotenv",
         },
         {
             "name": "phpstan/phpdoc-parser",
-            "version": "2.0.1",
+            "version": "2.0.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpstan/phpdoc-parser.git",
-                "reference": "72e51f7c32c5aef7c8b462195b8c599b11199893"
+                "reference": "51087f87dcce2663e1fed4dfd4e56eccd580297e"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/72e51f7c32c5aef7c8b462195b8c599b11199893",
-                "reference": "72e51f7c32c5aef7c8b462195b8c599b11199893",
+                "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/51087f87dcce2663e1fed4dfd4e56eccd580297e",
+                "reference": "51087f87dcce2663e1fed4dfd4e56eccd580297e",
                 "shasum": ""
             },
             "require": {
             "description": "PHPDoc parser with support for nullable, intersection and generic types",
             "support": {
                 "issues": "https://github.com/phpstan/phpdoc-parser/issues",
-                "source": "https://github.com/phpstan/phpdoc-parser/tree/2.0.1"
+                "source": "https://github.com/phpstan/phpdoc-parser/tree/2.0.2"
             },
-            "time": "2025-02-13T12:25:43+00:00"
+            "time": "2025-02-17T20:25:51+00:00"
         },
         {
             "name": "phpunit/php-code-coverage",
         },
         {
             "name": "spatie/error-solutions",
-            "version": "1.1.2",
+            "version": "1.1.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/spatie/error-solutions.git",
-                "reference": "d239a65235a1eb128dfa0a4e4c4ef032ea11b541"
+                "reference": "e495d7178ca524f2dd0fe6a1d99a1e608e1c9936"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/spatie/error-solutions/zipball/d239a65235a1eb128dfa0a4e4c4ef032ea11b541",
-                "reference": "d239a65235a1eb128dfa0a4e4c4ef032ea11b541",
+                "url": "https://api.github.com/repos/spatie/error-solutions/zipball/e495d7178ca524f2dd0fe6a1d99a1e608e1c9936",
+                "reference": "e495d7178ca524f2dd0fe6a1d99a1e608e1c9936",
                 "shasum": ""
             },
             "require": {
                 "php": "^8.0"
             },
             "require-dev": {
-                "illuminate/broadcasting": "^10.0|^11.0",
-                "illuminate/cache": "^10.0|^11.0",
-                "illuminate/support": "^10.0|^11.0",
-                "livewire/livewire": "^2.11|^3.3.5",
+                "illuminate/broadcasting": "^10.0|^11.0|^12.0",
+                "illuminate/cache": "^10.0|^11.0|^12.0",
+                "illuminate/support": "^10.0|^11.0|^12.0",
+                "livewire/livewire": "^2.11|^3.5.20",
                 "openai-php/client": "^0.10.1",
-                "orchestra/testbench": "^7.0|8.22.3|^9.0",
-                "pestphp/pest": "^2.20",
-                "phpstan/phpstan": "^1.11",
+                "orchestra/testbench": "8.22.3|^9.0|^10.0",
+                "pestphp/pest": "^2.20|^3.0",
+                "phpstan/phpstan": "^2.1",
                 "psr/simple-cache": "^3.0",
                 "psr/simple-cache-implementation": "^3.0",
                 "spatie/ray": "^1.28",
             ],
             "support": {
                 "issues": "https://github.com/spatie/error-solutions/issues",
-                "source": "https://github.com/spatie/error-solutions/tree/1.1.2"
+                "source": "https://github.com/spatie/error-solutions/tree/1.1.3"
             },
             "funding": [
                 {
                     "type": "github"
                 }
             ],
-            "time": "2024-12-11T09:51:56+00:00"
+            "time": "2025-02-14T12:29:50+00:00"
         },
         {
             "name": "spatie/flare-client-php",
-            "version": "1.10.0",
+            "version": "1.10.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/spatie/flare-client-php.git",
-                "reference": "140a42b2c5d59ac4ecf8f5b493386a4f2eb28272"
+                "reference": "bf1716eb98bd689451b071548ae9e70738dce62f"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/140a42b2c5d59ac4ecf8f5b493386a4f2eb28272",
-                "reference": "140a42b2c5d59ac4ecf8f5b493386a4f2eb28272",
+                "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/bf1716eb98bd689451b071548ae9e70738dce62f",
+                "reference": "bf1716eb98bd689451b071548ae9e70738dce62f",
                 "shasum": ""
             },
             "require": {
-                "illuminate/pipeline": "^8.0|^9.0|^10.0|^11.0",
+                "illuminate/pipeline": "^8.0|^9.0|^10.0|^11.0|^12.0",
                 "php": "^8.0",
                 "spatie/backtrace": "^1.6.1",
                 "symfony/http-foundation": "^5.2|^6.0|^7.0",
             ],
             "support": {
                 "issues": "https://github.com/spatie/flare-client-php/issues",
-                "source": "https://github.com/spatie/flare-client-php/tree/1.10.0"
+                "source": "https://github.com/spatie/flare-client-php/tree/1.10.1"
             },
             "funding": [
                 {
                     "type": "github"
                 }
             ],
-            "time": "2024-12-02T14:30:06+00:00"
+            "time": "2025-02-14T13:42:06+00:00"
         },
         {
             "name": "spatie/ignition",