From 06df60e776115aaeaeb99397330786cb89fcae63 Mon Sep 17 00:00:00 2001 From: Thorsten Rinne Date: Fri, 8 Nov 2024 18:14:34 +0100 Subject: [PATCH 1/3] fix: avoid image display errors in PDF due to SSL verification and caching issues --- composer.lock | 34 ++++++++++---------- phpmyfaq/src/phpMyFAQ/Export/Pdf.php | 8 ++--- phpmyfaq/src/phpMyFAQ/Export/Pdf/Wrapper.php | 26 +++++++++++---- 3 files changed, 40 insertions(+), 28 deletions(-) diff --git a/composer.lock b/composer.lock index e56dd41956..d3de716b98 100644 --- a/composer.lock +++ b/composer.lock @@ -4900,16 +4900,16 @@ }, { "name": "twig/twig", - "version": "v3.14.1", + "version": "v3.14.2", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "f405356d20fb43603bcadc8b09bfb676cb04a379" + "reference": "0b6f9d8370bb3b7f1ce5313ed8feb0fafd6e399a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/f405356d20fb43603bcadc8b09bfb676cb04a379", - "reference": "f405356d20fb43603bcadc8b09bfb676cb04a379", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/0b6f9d8370bb3b7f1ce5313ed8feb0fafd6e399a", + "reference": "0b6f9d8370bb3b7f1ce5313ed8feb0fafd6e399a", "shasum": "" }, "require": { @@ -4963,7 +4963,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.14.1" + "source": "https://github.com/twigphp/Twig/tree/v3.14.2" }, "funding": [ { @@ -4975,7 +4975,7 @@ "type": "tidelift" } ], - "time": "2024-11-06T18:17:38+00:00" + "time": "2024-11-07T12:36:22+00:00" } ], "packages-dev": [ @@ -5839,16 +5839,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.12.7", + "version": "1.12.8", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "dc2b9976bd8b0f84ec9b0e50cc35378551de7af0" + "reference": "f6a60a4d66142b8156c9da923f1972657bc4748c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/dc2b9976bd8b0f84ec9b0e50cc35378551de7af0", - "reference": "dc2b9976bd8b0f84ec9b0e50cc35378551de7af0", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/f6a60a4d66142b8156c9da923f1972657bc4748c", + "reference": "f6a60a4d66142b8156c9da923f1972657bc4748c", "shasum": "" }, "require": { @@ -5893,7 +5893,7 @@ "type": "github" } ], - "time": "2024-10-18T11:12:07+00:00" + "time": "2024-11-06T19:06:49+00:00" }, { "name": "phpunit/php-code-coverage", @@ -6320,16 +6320,16 @@ }, { "name": "rector/rector", - "version": "1.2.9", + "version": "1.2.10", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "7923bd5e48f8c26a922df91f7174f5bca2b3671d" + "reference": "40f9cf38c05296bd32f444121336a521a293fa61" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/7923bd5e48f8c26a922df91f7174f5bca2b3671d", - "reference": "7923bd5e48f8c26a922df91f7174f5bca2b3671d", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/40f9cf38c05296bd32f444121336a521a293fa61", + "reference": "40f9cf38c05296bd32f444121336a521a293fa61", "shasum": "" }, "require": { @@ -6367,7 +6367,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/1.2.9" + "source": "https://github.com/rectorphp/rector/tree/1.2.10" }, "funding": [ { @@ -6375,7 +6375,7 @@ "type": "github" } ], - "time": "2024-11-04T18:26:57+00:00" + "time": "2024-11-08T13:59:10+00:00" }, { "name": "sebastian/cli-parser", diff --git a/phpmyfaq/src/phpMyFAQ/Export/Pdf.php b/phpmyfaq/src/phpMyFAQ/Export/Pdf.php index da90264986..e43768c5bf 100644 --- a/phpmyfaq/src/phpMyFAQ/Export/Pdf.php +++ b/phpmyfaq/src/phpMyFAQ/Export/Pdf.php @@ -208,15 +208,13 @@ public function generateFile(array $faqData, ?string $filename = null): string $this->pdf->Ln(); $this->pdf->Ln(); $this->pdf->WriteHTML('

' . $faqData['title'] . '

'); - $this->pdf->Ln(); + $this->pdf->Ln(5); $this->pdf->Ln(); if ($this->config->get('main.enableMarkdownEditor')) { - $this->pdf->WriteHTML( - str_replace('../', '', $this->converter->convert($faqData['content'])->getContent()) - ); + $this->pdf->WriteHTML($this->converter->convert($faqData['content'])->getContent()); } else { - $this->pdf->WriteHTML(str_replace('../', '', (string) $faqData['content'])); + $this->pdf->WriteHTML((string) $faqData['content']); } $this->pdf->Ln(10); diff --git a/phpmyfaq/src/phpMyFAQ/Export/Pdf/Wrapper.php b/phpmyfaq/src/phpMyFAQ/Export/Pdf/Wrapper.php index 505bd00c4a..604621ed74 100644 --- a/phpmyfaq/src/phpMyFAQ/Export/Pdf/Wrapper.php +++ b/phpmyfaq/src/phpMyFAQ/Export/Pdf/Wrapper.php @@ -538,14 +538,15 @@ public function Image(// phpcs:ignore $alt = false, $alternateImages = [] ): void { - if (strpos($file, 'data:image/png;base64,')) { - $file = '@' . base64_decode( - chunk_split(str_replace(' ', '+', str_replace('data:image/png;base64,', '', $file))) - ); - } - $file = parse_url($file, PHP_URL_PATH); + $type = pathinfo($file, PATHINFO_EXTENSION); + $data = file_get_contents(PMF_ROOT_DIR . $file); + + if ($this->checkBase64Image($data)) { + $file = '@' . $data; + } + parent::Image( $file, $x, @@ -568,4 +569,17 @@ public function Image(// phpcs:ignore $alternateImages ); } + + private function checkBase64Image(string $base64): bool + { + $img = imagecreatefromstring($base64); + if (!$img) { + return false; + } + + $info = getimagesizefromstring($base64); + imagedestroy($img); + + return $info && $info[0] > 0 && $info[1] > 0 && isset($info['mime']); + } } From 177a6be316d5b65afc48c13694c21610aff6bc1d Mon Sep 17 00:00:00 2001 From: Thorsten Rinne Date: Sat, 9 Nov 2024 09:37:22 +0100 Subject: [PATCH 2/3] fix: added method to correct paths to images --- phpmyfaq/src/phpMyFAQ/Export/Pdf/Wrapper.php | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/phpmyfaq/src/phpMyFAQ/Export/Pdf/Wrapper.php b/phpmyfaq/src/phpMyFAQ/Export/Pdf/Wrapper.php index 604621ed74..bcd0e5b020 100644 --- a/phpmyfaq/src/phpMyFAQ/Export/Pdf/Wrapper.php +++ b/phpmyfaq/src/phpMyFAQ/Export/Pdf/Wrapper.php @@ -480,7 +480,8 @@ public function setFaq(array $faq) } /** - * Extends the TCPDF::Image() method to handle base64 encoded images. + * Extends the TCPDF::Image() method to convert all images to base64 encoded images. + * This is necessary as TCPDF does not support external images from self-signed certificates. * * @param string $file Name of the file containing the image or a '@' character followed by the image data * string. To link an image without embedding it on the document, set an asterisk @@ -541,7 +542,7 @@ public function Image(// phpcs:ignore $file = parse_url($file, PHP_URL_PATH); $type = pathinfo($file, PATHINFO_EXTENSION); - $data = file_get_contents(PMF_ROOT_DIR . $file); + $data = file_get_contents($this->concatenatePaths($file)); if ($this->checkBase64Image($data)) { $file = '@' . $data; @@ -582,4 +583,18 @@ private function checkBase64Image(string $base64): bool return $info && $info[0] > 0 && $info[1] > 0 && isset($info['mime']); } + + private function concatenatePaths(string $file): string + { + $trimmedPath = rtrim(PMF_ROOT_DIR, '/'); + $trimmedFile = ltrim($file, '/'); + + if (str_starts_with($trimmedFile, basename($trimmedPath))) { + $relativePath = substr($trimmedFile, strlen(basename($trimmedPath))); + } else { + $relativePath = $trimmedFile; + } + + return $trimmedPath . DIRECTORY_SEPARATOR . $relativePath; + } } From e88711c8a55f0a8a55f550907c56bdc063a28b92 Mon Sep 17 00:00:00 2001 From: Thorsten Rinne Date: Sat, 9 Nov 2024 15:02:48 +0100 Subject: [PATCH 3/3] fix: reduced warnings with downgrade to sass-1.77.6 --- package.json | 8 +- pnpm-lock.yaml | 319 +++++++++++-------------------------------------- 2 files changed, 73 insertions(+), 254 deletions(-) diff --git a/package.json b/package.json index ea30910417..e4f113f4f9 100644 --- a/package.json +++ b/package.json @@ -29,11 +29,11 @@ }, "dependencies": { "@popperjs/core": "^2.11.8", - "autocompleter": "^8.0.4", + "autocompleter": "^9.3.2", "bootstrap": "^5.3.3", "bootstrap-datepicker": "^1.10.0", "bootstrap-icons": "^1.11.3", - "chart.js": "^4.4.4", + "chart.js": "^4.4.6", "handlebars": "4.7.8", "highlight.js": "^11.10.0", "masonry-layout": "^4.2.2", @@ -47,7 +47,7 @@ "@commitlint/cli": "^19.5.0", "@commitlint/config-conventional": "^19.5.0", "@mcler/webpack-concat-plugin": "^4.1.6", - "@testing-library/jest-dom": "^6.6.2", + "@testing-library/jest-dom": "^6.6.3", "@types/node": "^20.16.5", "autoprefixer": "^10.4.20", "babel-jest": "^29.7.0", @@ -68,7 +68,7 @@ "prettier": "^3.3.3", "pretty-quick": "^4.0.0", "raw-loader": "^4.0.2", - "sass-embedded": "^1.78.0", + "sass": "1.77.6", "sass-loader": "^16.0.2", "sigmund": "^1.0.1", "style-loader": "^4.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d1a45d1152..ea5e2944f2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,8 +9,8 @@ dependencies: specifier: ^2.11.8 version: 2.11.8 autocompleter: - specifier: ^8.0.4 - version: 8.0.4 + specifier: ^9.3.2 + version: 9.3.2 bootstrap: specifier: ^5.3.3 version: 5.3.3(@popperjs/core@2.11.8) @@ -21,8 +21,8 @@ dependencies: specifier: ^1.11.3 version: 1.11.3 chart.js: - specifier: ^4.4.4 - version: 4.4.4 + specifier: ^4.4.6 + version: 4.4.6 handlebars: specifier: 4.7.8 version: 4.7.8 @@ -59,8 +59,8 @@ devDependencies: specifier: ^4.1.6 version: 4.1.6(html-webpack-plugin@5.6.3)(webpack-sources@3.2.3)(webpack@5.95.0) '@testing-library/jest-dom': - specifier: ^6.6.2 - version: 6.6.2 + specifier: ^6.6.3 + version: 6.6.3 '@types/node': specifier: ^20.16.5 version: 20.16.5 @@ -121,12 +121,12 @@ devDependencies: raw-loader: specifier: ^4.0.2 version: 4.0.2(webpack@5.95.0) - sass-embedded: - specifier: ^1.78.0 - version: 1.78.0 + sass: + specifier: 1.77.6 + version: 1.77.6 sass-loader: specifier: ^16.0.2 - version: 16.0.2(sass-embedded@1.78.0)(webpack@5.95.0) + version: 16.0.2(sass@1.77.6)(webpack@5.95.0) sigmund: specifier: ^1.0.1 version: 1.0.1 @@ -1475,10 +1475,6 @@ packages: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@bufbuild/protobuf@1.10.0: - resolution: {integrity: sha512-QDdVFLoN93Zjg36NoQPZfsVH9tZew7wKDKyV5qRdj8ntT4wQCOradQjRaTdwMhWUYsgKsvCINKKm87FdEk96Ag==} - dev: true - /@commitlint/cli@19.5.0(@types/node@20.16.5)(typescript@5.6.2): resolution: {integrity: sha512-gaGqSliGwB86MDmAAKAtV9SV1SHdmN8pnGq4EJU4+hLisQ7IFfx4jvU4s+pk6tl0+9bv6yT+CaZkufOinkSJIQ==} engines: {node: '>=v18'} @@ -1968,8 +1964,8 @@ packages: '@sinonjs/commons': 3.0.1 dev: true - /@testing-library/jest-dom@6.6.2: - resolution: {integrity: sha512-P6GJD4yqc9jZLbe98j/EkyQDTPgqftohZF5FBkHY5BUERZmcf4HeO2k0XaefEg329ux2p21i1A1DmyQ1kKw2Jw==} + /@testing-library/jest-dom@6.6.3: + resolution: {integrity: sha512-IteBhl4XqYNkM54f4ejhLRJiZNqcSCoXUOG2CPK7qbD322KjQozM4kHQOfkG2oln9b9HTYqs+Sae8vBATubxxA==} engines: {node: '>=14', npm: '>=6', yarn: '>=1'} dependencies: '@adobe/css-tools': 4.4.0 @@ -2470,8 +2466,8 @@ packages: hasBin: true dev: true - /autocompleter@8.0.4: - resolution: {integrity: sha512-q334YswwucSBphN5djVkEt3beVhHotrCtPGNIXmyilw9UnXV9Cb+gNAZ2yhZSfiBSzP6rxHLLT2gpr57xgbcwQ==} + /autocompleter@9.3.2: + resolution: {integrity: sha512-rLbf2TLGOD7y+gOS36ksrZdIsvoHa2KXc2A7503w+NBRPrcF73zzFeYBxEcV/iMPjaBH3jFhNIYObZ7zt1fkCQ==} dev: false /autoprefixer@10.4.20(postcss@8.4.47): @@ -3082,6 +3078,11 @@ packages: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} dev: true + /binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + dev: true + /boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} dev: true @@ -3172,10 +3173,6 @@ packages: node-int64: 0.4.0 dev: true - /buffer-builder@0.2.0: - resolution: {integrity: sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg==} - dev: true - /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} dev: true @@ -3284,13 +3281,28 @@ packages: engines: {node: '>=10'} dev: true - /chart.js@4.4.4: - resolution: {integrity: sha512-emICKGBABnxhMjUjlYRR12PmOXhJ2eJjEHL2/dZlWjxRAZT1D8xplLFq5M0tMQK8ja+wBS/tuVEJB5C6r7VxJA==} + /chart.js@4.4.6: + resolution: {integrity: sha512-8Y406zevUPbbIBA/HRk33khEmQPk5+cxeflWE/2rx1NJsjVWMPw/9mSP9rxHP5eqi6LNoPBVMfZHxbwLSgldYA==} engines: {pnpm: '>=8'} dependencies: '@kurkle/color': 0.3.2 dev: false + /chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + dev: true + /chrome-trace-event@1.0.4: resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} engines: {node: '>=6.0'} @@ -4368,6 +4380,13 @@ packages: path-dirname: 1.0.2 dev: true + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: true + /glob-to-regexp@0.3.0: resolution: {integrity: sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==} dev: true @@ -4698,6 +4717,13 @@ packages: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} dev: true + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.3.0 + dev: true + /is-buffer@1.1.6: resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} dev: true @@ -6539,6 +6565,13 @@ packages: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} dev: true + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + dev: true + /rechoir@0.8.0: resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==} engines: {node: '>= 10.13.0'} @@ -6744,12 +6777,6 @@ packages: glob: 7.2.3 dev: true - /rxjs@7.8.1: - resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} - dependencies: - tslib: 2.7.0 - dev: true - /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: true @@ -6764,221 +6791,7 @@ packages: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true - /sass-embedded-android-arm64@1.78.0: - resolution: {integrity: sha512-2sAr11EgwPudAuyk4Ite+fWGYJspiFSiZDU2D8/vjjI7BaB9FG6ksYqww3svoMMnjPUWBCjKPDELpZTxViLJbw==} - engines: {node: '>=14.0.0'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /sass-embedded-android-arm@1.78.0: - resolution: {integrity: sha512-YM6nrmKsj+ImaSTd96F+jzbWSbhPkRN4kedbLgIJ5FsILNa9NAqhmrCQz9pdcjuAhyfxWImdUACsT23CPGENZQ==} - engines: {node: '>=14.0.0'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true - - /sass-embedded-android-ia32@1.78.0: - resolution: {integrity: sha512-TyJOo4TgnHpOfC/PfqCBqd+jGRanWoRd4Br/0KAfIvaIFjTGIPdk26vUyDVugV1J8QUEY4INGE8EXAuDeRldUQ==} - engines: {node: '>=14.0.0'} - cpu: [ia32] - os: [android] - requiresBuild: true - dev: true - optional: true - - /sass-embedded-android-riscv64@1.78.0: - resolution: {integrity: sha512-wwajpsVRuhb7ixrkA3Yu60V2LtROYn45PIYeda30/MrMJi9k3xEqHLhodTexFm6wZoKclGSDZ6L9U5q0XyRKiQ==} - engines: {node: '>=14.0.0'} - cpu: [riscv64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /sass-embedded-android-x64@1.78.0: - resolution: {integrity: sha512-k5l66PO0LgSHMDbDzAQ/vqrXMlJ3r42ZHJA8MJvUbA6sQxTzDS381V7L+EhOATwyI225j2FhEeTHW6rr4WBQzA==} - engines: {node: '>=14.0.0'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /sass-embedded-darwin-arm64@1.78.0: - resolution: {integrity: sha512-3JaxceFSR6N+a22hPYYkj1p45eBaWTt/M8MPTbfzU3TGZrU9bmRX7WlUVtXTo1yYI2iMf22nCv0PQ5ExFF3FMQ==} - engines: {node: '>=14.0.0'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /sass-embedded-darwin-x64@1.78.0: - resolution: {integrity: sha512-UMTijqE3fJ8vEaaD7GPG7G3GsHuPKOdpS8vuA2v2uwO3BPFp/rEKah66atvGqvGO+0JYApkSv0YTnnexSrkHIQ==} - engines: {node: '>=14.0.0'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /sass-embedded-linux-arm64@1.78.0: - resolution: {integrity: sha512-juMIMpp3DIAiQ842y+boqh0u2SjN4m3mDKrDfMuBznj8DSQoy9J/3e4hLh3g+p0/j83WuROu5nNoYxm2Xz8rww==} - engines: {node: '>=14.0.0'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /sass-embedded-linux-arm@1.78.0: - resolution: {integrity: sha512-JafT+Co0RK8oO3g9TfVRuG7tkYeh35yDGTgqCFxLrktnkiw5pmIagCfpjxk5GBcSfJMOzhCgclTCDJWAuHGuMQ==} - engines: {node: '>=14.0.0'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /sass-embedded-linux-ia32@1.78.0: - resolution: {integrity: sha512-Gy8GW5g6WX9t8CT2Dto5AL6ikB+pG7aAXWXvfu3RFHktixSwSbyy6CeGqSk1t0xyJCFkQQA/V8HU9bNdeHiBxg==} - engines: {node: '>=14.0.0'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /sass-embedded-linux-musl-arm64@1.78.0: - resolution: {integrity: sha512-Lu/TlRHbe9aJY7B7PwWCJz7pTT5Rc50VkApWEmPiU/nu0mGbSpg0Xwar6pNeG8+98ubgKKdRb01N3bvclf5a4A==} - engines: {node: '>=14.0.0'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /sass-embedded-linux-musl-arm@1.78.0: - resolution: {integrity: sha512-DUVXtcsfsiOJ2Zwp4Y3T6KZWX8h0gWpzmFUrx+gSIbg67vV8Ww2DWMjWRwqLe7HOLTYBegMBYpMgMgZiPtXhIA==} - engines: {node: '>=14.0.0'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /sass-embedded-linux-musl-ia32@1.78.0: - resolution: {integrity: sha512-1E5ywUnq6MRPAecr2r/vDOBr93wXyculEmfyF5JRG8mUufMaxGIhfx64OQE6Drjs+EDURcYZ+Qcg6/ubJWqhcw==} - engines: {node: '>=14.0.0'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /sass-embedded-linux-musl-riscv64@1.78.0: - resolution: {integrity: sha512-YvQEvX7ctn5BwC79+HBagDYIciEkwcl2NLgoydmEsBO/0+ncMKSGnjsn/iRzErbq1KJNyjGEni8eSHlrtQI1vQ==} - engines: {node: '>=14.0.0'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /sass-embedded-linux-musl-x64@1.78.0: - resolution: {integrity: sha512-azdUcZZvZmtUBslIKr2/l4aQrTX7BvO96TD0GLdWz9vuXZrokYm09AJZEnb5j6Pk5I4Xr0yM6BG1Vgcbzqi5Zg==} - engines: {node: '>=14.0.0'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /sass-embedded-linux-riscv64@1.78.0: - resolution: {integrity: sha512-g8M6vqHMjZUoH9C1WJsgwu+qmwdJAAMDaJTM1emeAScUZMTaQGzm+Q6C5oSGnAGR3XLT/drgbHhbmruXDgkdeQ==} - engines: {node: '>=14.0.0'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /sass-embedded-linux-x64@1.78.0: - resolution: {integrity: sha512-m997ThzpMwql4u6LzZCoHPIQkgK6bbLPLc7ydemo2Wusqzh6j8XAGxVT5oANp6s2Dmj+yh49pKDozal+tzEX9w==} - engines: {node: '>=14.0.0'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /sass-embedded-win32-arm64@1.78.0: - resolution: {integrity: sha512-qTLIIC5URYRmeuYYllfoL0K1cHSUd+f3sFHAA6fjtdgf288usd6ToCbWpuFb0BtVceEfGQX8lEp+teOG7n7Quw==} - engines: {node: '>=14.0.0'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /sass-embedded-win32-ia32@1.78.0: - resolution: {integrity: sha512-BrOWh18T6Y9xgCokGXElEnd8j03fO4W83bwJ9wHRRkrQWaeHtHs3XWW0fX1j2brngWUTjU+jcYUijWF1Z60krw==} - engines: {node: '>=14.0.0'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /sass-embedded-win32-x64@1.78.0: - resolution: {integrity: sha512-C14iFDJd7oGhmQehRiEL7GtzMmLwubcDqsBarQ+u9LbHoDlUQfIPd7y8mVtNgtxJCdrAO/jc5qR4C+85yE3xPQ==} - engines: {node: '>=14.0.0'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /sass-embedded@1.78.0: - resolution: {integrity: sha512-NR2kvhWVFABmBm0AqgFw9OweQycs0Qs+/teJ9Su+BUY7up+f8S5F/Zi+7QtAqJlewsQyUNfzm1vRuM+20lBwRQ==} - engines: {node: '>=16.0.0'} - hasBin: true - dependencies: - '@bufbuild/protobuf': 1.10.0 - buffer-builder: 0.2.0 - immutable: 4.3.7 - rxjs: 7.8.1 - supports-color: 8.1.1 - varint: 6.0.0 - optionalDependencies: - sass-embedded-android-arm: 1.78.0 - sass-embedded-android-arm64: 1.78.0 - sass-embedded-android-ia32: 1.78.0 - sass-embedded-android-riscv64: 1.78.0 - sass-embedded-android-x64: 1.78.0 - sass-embedded-darwin-arm64: 1.78.0 - sass-embedded-darwin-x64: 1.78.0 - sass-embedded-linux-arm: 1.78.0 - sass-embedded-linux-arm64: 1.78.0 - sass-embedded-linux-ia32: 1.78.0 - sass-embedded-linux-musl-arm: 1.78.0 - sass-embedded-linux-musl-arm64: 1.78.0 - sass-embedded-linux-musl-ia32: 1.78.0 - sass-embedded-linux-musl-riscv64: 1.78.0 - sass-embedded-linux-musl-x64: 1.78.0 - sass-embedded-linux-riscv64: 1.78.0 - sass-embedded-linux-x64: 1.78.0 - sass-embedded-win32-arm64: 1.78.0 - sass-embedded-win32-ia32: 1.78.0 - sass-embedded-win32-x64: 1.78.0 - dev: true - - /sass-loader@16.0.2(sass-embedded@1.78.0)(webpack@5.95.0): + /sass-loader@16.0.2(sass@1.77.6)(webpack@5.95.0): resolution: {integrity: sha512-Ll6iXZ1EYwYT19SqW4mSBb76vSSi8JgzElmzIerhEGgzB5hRjDQIWsPmuk1UrAXkR16KJHqVY0eH+5/uw9Tmfw==} engines: {node: '>= 18.12.0'} peerDependencies: @@ -7000,10 +6813,20 @@ packages: optional: true dependencies: neo-async: 2.6.2 - sass-embedded: 1.78.0 + sass: 1.77.6 webpack: 5.95.0(webpack-cli@5.1.4) dev: true + /sass@1.77.6: + resolution: {integrity: sha512-ByXE1oLD79GVq9Ht1PeHWCPMPB8XHpBuz1r85oByKHjZY6qV6rWnQovQzXJXuQ/XyE1Oj3iPk3lo28uzaRA2/Q==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + chokidar: 3.6.0 + immutable: 4.3.7 + source-map-js: 1.2.1 + dev: true + /saxes@6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} @@ -7623,10 +7446,6 @@ packages: resolution: {integrity: sha512-gqc4x7O9t1I4xWr7x6/jtQWPr4PZK26SmeA0iyTv1WyoECfAGnu5JEOExmMEP+5Fz66AT9OiCBO3GII4wDQHLw==} dev: false - /varint@6.0.0: - resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==} - dev: true - /w3c-xmlserializer@4.0.0: resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} engines: {node: '>=14'}