Changeset 3087340
- Timestamp:
- 05/15/2024 07:59:59 PM (23 months ago)
- Location:
- jch-optimize/trunk
- Files:
-
- 26 edited
-
jch-optimize.php (modified) (1 diff)
-
lib/src/Css/Callbacks/CorrectUrls.php (modified) (4 diffs)
-
lib/src/Css/Callbacks/HandleAtRules.php (modified) (1 diff)
-
lib/src/Css/Processor.php (modified) (1 diff)
-
lib/src/Helper.php (modified) (1 diff)
-
lib/src/Html/CacheManager.php (modified) (2 diffs)
-
lib/src/Html/Callbacks/LazyLoad.php (modified) (15 diffs)
-
lib/src/Html/FilesManager.php (modified) (1 diff)
-
lib/src/Html/HtmlManager.php (modified) (1 diff)
-
lib/src/Html/Processor.php (modified) (4 diffs)
-
lib/src/Uri/UriConverter.php (modified) (1 diff)
-
lib/vendor/codealfa/minify/src/Js.php (modified) (1 diff)
-
lib/vendor/codealfa/regextokenizer/src/Html.php (modified) (5 diffs)
-
lib/vendor/composer/autoload_classmap.php (modified) (1 diff)
-
lib/vendor/composer/autoload_static.php (modified) (1 diff)
-
lib/vendor/composer/installed.php (modified) (1 diff)
-
media/js/platform-wordpress.js (modified) (1 diff)
-
readme.txt (modified) (2 diffs)
-
src/Model/PageCache.php (modified) (1 diff)
-
src/Platform/Utility.php (modified) (2 diffs)
-
src/Plugin/Admin.php (modified) (5 diffs)
-
src/View/PageCacheHtml.php (modified) (1 diff)
-
tmpl/optimizeimages.php (modified) (1 diff)
-
tmpl/pagecache_filters.php (modified) (1 diff)
-
vendor/composer/installed.php (modified) (2 diffs)
-
version.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
jch-optimize/trunk/jch-optimize.php
r3040365 r3087340 5 5 * Plugin URI: http://www.jch-optimize.net/ 6 6 * Description: Boost your WordPress site's performance with JCH Optimize as measured on PageSpeed 7 * Version: 4.2. 07 * Version: 4.2.1 8 8 * Author: Samuel Marshall 9 9 * License: GNU/GPLv3 -
jch-optimize/trunk/lib/src/Css/Callbacks/CorrectUrls.php
r3040365 r3087340 48 48 private array $lcpImages = []; 49 49 private array $responsiveImages = []; 50 private string $postCss = ''; 50 51 51 52 public function __construct(Container $container, Registry $params, Cdn $cdn, Http2Preload $http2Preload) … … 67 68 // Lazy-load background images 68 69 if (JCH_PRO && $this->params->get('lazyload_enable', '0') && $this->params->get('pro_lazyload_bgimages', '0') && !\in_array($context, ['font-face', 'import'])) { 69 / / @see LazyLoadExtended::handleCssBgImages()70 return$this->getContainer()->get(LazyLoadExtended::class)->handleCssBgImages($this, $css);70 /** @see LazyLoadExtended::handleCssBgImages() */ 71 $css = $this->getContainer()->get(LazyLoadExtended::class)->handleCssBgImages($this, $css); 71 72 } 72 $rsCss = '';73 73 if (JCH_PRO && !empty($this->responsiveImages)) { 74 74 $rsImages = \array_reverse($this->responsiveImages, \true); 75 foreach ($rsImages as $breakpoint => $rsImage) { 76 $tmpCss = \preg_replace_callback('#'.Parser::cssUrlWithCaptureValueToken(\true).'#', fn ($match) => \str_replace($match[1], $rsImage, $match[0]), $css); 77 $rsCss .= "@media (max-width: {$breakpoint}px){{$tmpCss}}"; 78 } 75 $this->addPostCss($this->getResponsiveCss($rsImages, $css)); 79 76 } 80 77 81 return $css .$rsCss;78 return $css; 82 79 } 83 80 … … 105 102 { 106 103 return $this->cssBgImagesSelectors; 104 } 105 106 public function addPostCss(string $css): void 107 { 108 $this->postCss .= $css; 109 } 110 111 public function getPostCss(): string 112 { 113 return $this->postCss; 107 114 } 108 115 … … 179 186 return $matches[0]; 180 187 } 188 189 private function getResponsiveCss(array $rsImages, $css): string 190 { 191 $rsCss = ''; 192 foreach ($rsImages as $breakpoint => $rsImage) { 193 $tmpCss = \preg_replace_callback('#'.Parser::cssUrlWithCaptureValueToken(\true).'#', fn ($match) => \str_replace($match[1], $rsImage, $match[0]), $css); 194 $rsCss .= "@media(max-width: {$breakpoint}px) {{$tmpCss}}"; 195 } 196 197 return $rsCss; 198 } 181 199 } -
jch-optimize/trunk/lib/src/Css/Callbacks/HandleAtRules.php
r3040365 r3087340 35 35 $matches[0] = \preg_replace('#;?\\s*}$#', ';font-display:swap;}', $matches[0]); 36 36 } elseif (\preg_match('#font-display#i', $matches[0]) && $this->params->get('pro_force_swap_policy', '1')) { 37 $matches[0] = \preg_replace('#font-display[^;}/\'"]++([;}])#i', ' _JchOptimizeVendor\\font-display:swap\\1', $matches[0]);37 $matches[0] = \preg_replace('#font-display[^;}/\'"]++([;}])#i', 'font-display:swap\\1', $matches[0]); 38 38 } 39 /*if ($this->params->get('pro_optimizeFonts_enable', '0') && empty($this->cssInfos['combining-fontface'])) { 40 $this->fontFace[] = [ 41 'content' => $matches[0], 42 'media' => $this->cssInfos['media'] 43 ]; 39 if ($this->params->get('pro_optimizeFonts_enable', '0') && empty($this->cssInfos['combining-fontface'])) { 40 $this->fontFace[] = ['content' => $matches[0], 'media' => $this->cssInfos['media']]; 44 41 45 return ''; 46 }*/ 42 return ''; 43 } 44 47 45 return $matches[0]; 48 46 } -
jch-optimize/trunk/lib/src/Css/Processor.php
r3040365 r3087340 152 152 try { 153 153 $this->css = $oParser->processMatchesWithCallback($this->css, $this->correctUrls); 154 $this->css .= $this->correctUrls->getPostCss(); 154 155 } catch (Exception\PregErrorException $oException) { 155 156 $sPreMessage = $isHttp2 ? 'Http/2 preload failed' : 'ProcessUrls failed'; -
jch-optimize/trunk/lib/src/Helper.php
r3040365 r3087340 87 87 } 88 88 89 public static function getArray(string|array|null $string): array 90 { 91 if (\is_array($string)) { 92 $array = $string; 93 } elseif (\is_string($string)) { 94 $array = \explode(',', \trim($string)); 89 public static function getArray(mixed $value): array 90 { 91 if (\is_array($value)) { 92 $array = $value; 93 } elseif (\is_string($value)) { 94 $array = \explode(',', \trim($value)); 95 } elseif (\is_object($value)) { 96 $array = (array) $value; 95 97 } else { 96 98 $array = []; 97 99 } 98 100 if (!empty($array)) { 99 $array = \array_map(function ($v alue) {100 if (\is_string($v alue)) {101 return \trim($v alue);101 $array = \array_map(function ($v) { 102 if (\is_string($v)) { 103 return \trim($v); 102 104 } 103 if (\is_object($v alue)) {104 return (array) $v alue;105 if (\is_object($v)) { 106 return (array) $v; 105 107 } 106 108 107 return $v alue;109 return $v; 108 110 }, $array); 109 111 } -
jch-optimize/trunk/lib/src/Html/CacheManager.php
r3040365 r3087340 183 183 } 184 184 } 185 if ($this->params->get('lazyload_enable', '0') ) {185 if ($this->params->get('lazyload_enable', '0') && JCH_PRO && ($this->params->get('pro_lazyload_bgimages', '0') || $this->params->get('pro_lazyload_audiovideo', '0'))) { 186 186 $jsLazyLoadAssets = $this->getJsLazyLoadAssets(); 187 187 $this->getCombinedFiles($jsLazyLoadAssets, $lazyLoadCacheId, 'js'); … … 406 406 $assets = []; 407 407 $assets[]['url'] = Utils::uriFor(Paths::mediaUrl().'/core/js/ls.loader.js?'.JCH_VERSION); 408 if (JCH_PRO && $this->params->get('pro_lazyload_effects', '0')) { 409 $assets[]['url'] = Utils::uriFor(Paths::mediaUrl().'/core/js/ls.loader.effects.js?'.JCH_VERSION); 410 } 411 if (JCH_PRO && ($this->params->get('pro_lazyload_bgimages', '0') || $this->params->get('pro_lazyload_audiovideo', '0'))) { 412 $assets[]['url'] = Utils::uriFor(Paths::mediaUrl().'/lazysizes/ls.unveilhooks.min.js?'.JCH_VERSION); 413 } 408 /*if (JCH_PRO && $this->params->get('pro_lazyload_effects', '0')) { 409 $assets[]['url'] = Utils::uriFor(Paths::mediaUrl() . '/core/js/ls.loader.effects.js?' . JCH_VERSION); 410 } */ 411 $assets[]['url'] = Utils::uriFor(Paths::mediaUrl().'/lazysizes/ls.unveilhooks.min.js?'.JCH_VERSION); 414 412 $assets[]['url'] = Utils::uriFor(Paths::mediaUrl().'/lazysizes/lazysizes.min.js?'.JCH_VERSION); 415 413 -
jch-optimize/trunk/lib/src/Html/Callbacks/LazyLoad.php
r3040365 r3087340 18 18 use JchOptimize\Core\Exception\PregErrorException; 19 19 use JchOptimize\Core\FeatureHelpers\LazyLoadExtended; 20 use JchOptimize\Core\FeatureHelpers\LCPImages; 20 21 use JchOptimize\Core\FeatureHelpers\ResponsiveImages; 21 22 use JchOptimize\Core\FeatureHelpers\Webp; … … 25 26 use JchOptimize\Core\Html\Elements\Img; 26 27 use JchOptimize\Core\Html\Elements\Picture; 27 use JchOptimize\Core\Html\Elements\Source;28 28 use JchOptimize\Core\Html\Elements\Style; 29 29 use JchOptimize\Core\Html\Elements\Video; … … 45 45 46 46 /** 47 * @var int Height of <img> element inside picture47 * @var int Height of <img> element inside <picture> 48 48 */ 49 49 public int $height = 1; 50 51 50 protected array $excludes = []; 52 51 protected array $includes = []; 53 52 protected array $args = []; 54 53 … … 121 120 $aExcludeClass = Helper::getArray($this->params->get('pro_excludeLazyLoadClass', [])); 122 121 $this->excludes = ['url' => $aExcludesUrl, 'class' => $aExcludeClass]; 122 $includesFiles = Helper::getArray($this->params->get('includeLazyLoad', [])); 123 $includesFolders = Helper::getArray($this->params->get('includeLazyLoadFolders', [])); 124 $includesUrl = \array_merge($includesFiles, $includesFolders); 125 $includesClass = Helper::getArray($this->params->get('includesLazyLoadClass', [])); 126 $this->includes = ['url' => $includesUrl, 'class' => $includesClass]; 123 127 } 124 128 … … 126 130 { 127 131 $options = $this->args; 128 foreach ($element->getChildren() as $child) {129 if ($child instanceof Img) {130 if ($child->hasAttribute('data-width')) {131 $options['width'] = $child->attributeValue('data-width');132 }133 if ($child->hasAttribute('width')) {134 $options['width'] = $child->getWidth();135 }136 if ($child->hasAttribute('data-height')) {137 $options['height'] = $child->attributeValue('data-height');138 }139 if ($child->hasAttribute('height')) {140 $options['height'] = $child->getHeight();141 }142 }143 }144 132 if (empty($options['parent'])) { 145 133 $options['parent'] = $element; … … 147 135 // Process and add content of element if not self-closing 148 136 foreach ($element->getChildren() as $index => $child) { 149 if ($child instanceof HtmlElementInterface) {137 if ($child instanceof Img) { 150 138 $element->replaceChild($index, $this->lazyLoadElement($child, $options)); 151 139 } … … 155 143 private function lazyLoadElement(HtmlElementInterface $element, array $options): HtmlElementInterface 156 144 { 157 if ($options['lazyload'] ) {145 if ($options['lazyload'] && 'below_fold' == $options['section'] || $this->elementIncluded($element)) { 158 146 // If no srcset attribute was found, modify the src attribute and add a data-src attribute 159 if ($element instanceof Img && !$element->hasAttribute('srcset') || $element instanceof Iframe) { 160 if (!empty($element->getSrc())) { 161 $width = $element->getWidth() ?: ($element->attributeValue('data-width') ?: '1'); 162 $height = $element->getHeight() ?: ($element->attributeValue('data-height') ?: '1'); 163 $svg = '<svg xmlns="http://www.w3.org/2000/svg" width="'.$width.'" height="'.$height.'"></svg>'; 164 $sNewSrcValue = $element instanceof Iframe ? 'about:blank' : 'data:image/svg+xml;base64,'.\base64_encode($svg); 165 if ($element instanceof Img && $element->hasAttribute('loading')) { 166 $element->loading('lazy'); 167 } 168 $element->data('src', (string) $element->getSrc()); 169 $element->src($sNewSrcValue); 170 $element->class('jch-lazyload'); 171 } 172 } 173 // Modern browsers will lazy-load without loading the src attribute 174 if (($element instanceof Img || $element instanceof Source && $options['parent'] instanceof Picture) && $element->hasAttribute('srcset')) { 175 if (!empty($element->getSrcset())) { 176 $width = $element->getWidth() ?: ($element->attributeValue('data-width') ?: $options['width'] ?? '1'); 177 $height = $element->getHeight() ?: ($element->attributeValue('data-height') ?: $options['height'] ?? '1'); 178 $sSvgSrcset = '<svg xmlns="http://www.w3.org/2000/svg" width="'.$width.'" height="'.$height.'"></svg>'; 179 $element->data('srcset', $element->getSrcset()); 180 $element->srcset('data:image/svg+xml;base64,'.\base64_encode($sSvgSrcset)); 181 if ($element instanceof Img) { 182 if ($element->hasAttribute('loading')) { 183 $element->loading('lazy'); 184 } 185 $element->class('jch-lazyload'); 186 } 187 } 147 if ($element instanceof Img || $element instanceof Iframe) { 148 $element->loading('lazy'); 188 149 } 189 150 if (\JCH_PRO && ($element instanceof Audio || $element instanceof Video)) { … … 201 162 $this->getContainer()->get(LazyLoadExtended::class)->lazyLoadBgImages($element); 202 163 } 203 } else {164 } elseif ('above_fold' == $options['section']) { 204 165 if ($element->hasAttribute('style')) { 205 166 \preg_match('#'.CssParser::cssUrlWithCaptureValueToken(\true).'#i', $element->getStyle(), $match); … … 209 170 } 210 171 // If lazy-load enabled, remove loading="lazy" attributes from above the fold 211 if ($ this->params->get('lazyload_enable', '0') && !$options['deferred'] && $element instanceof Img) {172 if ($options['lazyload'] && $element instanceof Img) { 212 173 // Remove any lazy loading 213 174 if ($element->hasAttribute('loading')) { … … 220 181 } 221 182 222 private function elementExcluded(HtmlElementInterface $element): bool 223 { 183 private function filter(HtmlElementInterface $element, string $filterMethod): bool 184 { 185 if ('exclude' == $filterMethod) { 186 $filter = $this->excludes; 187 } else { 188 $filter = $this->includes; 189 } 224 190 // Exclude based on class 225 191 if ($element->hasAttribute('class')) { 226 if (Helper::findExcludes($ this->excludes['class'], \implode(' ', $element->getClass()))) {192 if (Helper::findExcludes($filter['class'], \implode(' ', $element->getClass()))) { 227 193 // Remove any lazy loading from excluded images 228 194 if ($element->hasAttribute('loading')) { … … 236 202 if ($element->hasAttribute('src')) { 237 203 // Abort if this file is excluded 238 if (Helper::findExcludes($ this->excludes['url'], (string) $element->attributeValue('src'))) {204 if (Helper::findExcludes($filter['url'], (string) $element->attributeValue('src'))) { 239 205 // Remove any lazy loading from excluded images 240 206 if ($element->hasAttribute('loading')) { … … 247 213 // If poster attribute was found we can also exclude using poster value 248 214 if (\JCH_PRO && $element instanceof Video && $element->hasAttribute('poster')) { 249 if (Helper::findExcludes($ this->excludes['url'], $element->getPoster())) {215 if (Helper::findExcludes($filter['url'], $element->getPoster())) { 250 216 return \true; 251 217 } … … 264 230 } 265 231 } 266 if (Helper::findExcludes($ this->excludes['url'], $image)) {232 if (Helper::findExcludes($filter['url'], $image)) { 267 233 return \true; 268 234 } … … 278 244 279 245 return \false; 246 } 247 248 private function elementExcluded(HtmlElementInterface $element): bool 249 { 250 return $this->filter($element, 'exclude'); 251 } 252 253 private function elementIncluded(HtmlElementInterface $element): bool 254 { 255 return $this->filter($element, 'include'); 280 256 } 281 257 … … 319 295 } 320 296 } 321 if ($element instanceof Img) { 322 if ($element->hasAttribute('srcset')) { 323 $srcset = $element->getSrcset(); 324 $uris = Helper::extractUrlsFromSrcset($srcset); 325 if (($src = $element->getSrc()) !== \false) { 326 $uris = \array_merge($uris, [$src]); 327 } 328 foreach ($uris as $uri) { 329 if (Helper::findMatches($lcpImages, $uri)) { 330 $element->fetchpriority('high'); 331 if ($element->hasAttribute('loading')) { 332 $element->loading('eager'); 333 } 334 335 return \true; 336 } 337 } 338 } else { 339 if (($src = $element->getSrc()) !== \false && Helper::findMatches($lcpImages, $src)) { 340 if ('picture' == $element->getParent()) { 341 $element->fetchpriority('high'); 342 } else { 343 $this->http2Preload->preload($src, 'image', '', 'high'); 344 } 345 if ($element->hasAttribute('loading')) { 346 $element->loading('eager'); 347 } 348 349 return \true; 350 } 351 } 297 if ($element instanceof Img || $element instanceof Video) { 298 return $this->getContainer()->get(LCPImages::class)->process($element); 352 299 } 353 300 -
jch-optimize/trunk/lib/src/Html/FilesManager.php
r3040365 r3087340 304 304 $media = $this->getMediaAttribute(); 305 305 // process google font files or other CSS files added to be optimized 306 if ('fonts.googleapis.com' == $uri->getHost() ) {306 if ('fonts.googleapis.com' == $uri->getHost() || Helper::findExcludes(Helper::getArray($this->params->get('pro_optimize_font_files', [])), (string) $uri)) { 307 307 if (JCH_PRO) { 308 308 // @see Fonts::pushFileToFontsArray() -
jch-optimize/trunk/lib/src/Html/HtmlManager.php
r3040365 r3087340 328 328 if (!$this->params->get('pro_reduce_unused_css', '0')) { 329 329 foreach ($cssUrls as $url) { 330 $this->appendChildToH ead($this->getPreloadStyleSheet($url, 'all', 'low'));330 $this->appendChildToHTML($this->getPreloadStyleSheet($url, 'all', 'low'), 'body'); 331 331 } 332 332 } elseif (JCH_PRO) { -
jch-optimize/trunk/lib/src/Html/Processor.php
r3040365 r3087340 86 86 { 87 87 $this->html = $html; 88 // If amp page then combine CSS and JavaScript is disabled and any feature dependent of processing generated combined files,89 // and also lazy load images.88 // If amp page then combine CSS and JavaScript is disabled and any feature dependent of 89 // processing generated combined files, and also lazy load images. 90 90 $this->isAmpPage = (bool) \preg_match('#<html [^>]*?(?:&\\#26A1;|\\bamp\\b)#i', $html); 91 91 } … … 227 227 228 228 try { 229 $http2Args = [' lazyload' => \false, 'deferred' => \false, 'parent' => ''];229 $http2Args = ['section' => 'above_fold', 'lazyload' => $bLazyLoad, 'parent' => '']; 230 230 $oAboveFoldParser = new \JchOptimize\Core\Html\Parser(); 231 231 // language=RegExp 232 $this->setupLazyLoadCriteria($oAboveFoldParser, \false);232 $this->setupLazyLoadCriteria($oAboveFoldParser, 'above_fold'); 233 233 234 234 /** @var LazyLoad $http2Callback */ … … 237 237 $processedAboveFoldHtml = $oAboveFoldParser->processMatchesWithCallback($aboveFoldHtml, $http2Callback); 238 238 $oBelowFoldParser = new \JchOptimize\Core\Html\Parser(); 239 $lazyLoadArgs = [' lazyload' => $bLazyLoad, 'deferred' => \true, 'parent' => ''];240 $this->setupLazyLoadCriteria($oBelowFoldParser, \true);239 $lazyLoadArgs = ['section' => 'below_fold', 'lazyload' => $bLazyLoad, 'parent' => '']; 240 $this->setupLazyLoadCriteria($oBelowFoldParser, 'below_fold'); 241 241 242 242 /** @var LazyLoad $lazyLoadCallback */ … … 258 258 public function processImageAttributes(): void 259 259 { 260 if ($this->params->get('img_attributes_enable', '0') || $this->params->get('lazyload_enable', '0') && $this->params->get('lazyload_autosize', '0') ||JCH_PRO && $this->params->get('pro_load_responsive_images', '0')) {260 if ($this->params->get('img_attributes_enable', '0') || JCH_PRO && $this->params->get('pro_load_responsive_images', '0')) { 261 261 !\JCH_DEBUG ?: Profiler::start('ProcessImageAttributes'); 262 262 $oParser = new \JchOptimize\Core\Html\Parser(); -
jch-optimize/trunk/lib/src/Uri/UriConverter.php
r3040365 r3087340 25 25 { 26 26 $resolvedUri = UriResolver::resolve(SystemUri::currentUri(), $uri); 27 $path = \str_replace(\JchOptimize\Core\Uri\Utils::originDomains(), Paths:: basePath().'/', (string) $resolvedUri->withQuery('')->withFragment(''));27 $path = \str_replace(\JchOptimize\Core\Uri\Utils::originDomains(), Paths::rootPath().'/', (string) $resolvedUri->withQuery('')->withFragment('')); 28 28 // convert all directory to unix style 29 29 return \strtr(\rawurldecode($path), '\\', '/'); -
jch-optimize/trunk/lib/vendor/codealfa/minify/src/Js.php
r2947895 r3087340 192 192 //characters: ! \ $ _ [ ( { + - and if it follows a non-ASCII character or an ASCII letter or digit or one of these 193 193 //characters: \ $ _ ] ) } + - " ' ` ...ie., all ASCII characters except those listed respectively 194 //(or one of these characters: ) " ' ` followed by a string)194 //(or one of these characters: ) } ] " ' ` followed by a string) 195 195 $ln = '(?<=[!\#%&*./,:;<=>?@\^|~{\[(])\n|\n(?=[\#%&*./,:;<=>?@\^|~}\])])|(?<![\)"\'`])\\n(?=[\'"`])'; 196 196 197 197 //line feeds to keep 198 $k2 = "(?<=[\$_a-z0-9\\\\\])}+\-\"'`]|$na)\\n(?=[!\$_a-z0-9\\\\\[({+\-]|$na)|(?<=[\) \"'`])\\n(?=[\"'`])";198 $k2 = "(?<=[\$_a-z0-9\\\\\])}+\-\"'`]|$na)\\n(?=[!\$_a-z0-9\\\\\[({+\-]|$na)|(?<=[\)}\]\"'`])\\n(?=[\"'`])"; 199 199 200 200 //remove unnecessary linefeeds and spaces -
jch-optimize/trunk/lib/vendor/codealfa/regextokenizer/src/Html.php
r2947895 r3087340 28 28 * Regex token for an array of HTML elements 29 29 * 30 * @param string[] $elementsArray of names of HTML elements30 * @param string[] $elements Array of names of HTML elements 31 31 * 32 32 * @return string … … 44 44 * Regex token for an HTML element 45 45 * 46 * @param string $elementName of HTML element47 * @param bool $isSelfClosingWhether element is self-closing46 * @param string $element Name of HTML element 47 * @param bool $isSelfClosing Whether element is self-closing 48 48 * 49 49 * @return string … … 58 58 } 59 59 return $tag; 60 } 61 //language=RegExp 62 public static function htmlNestedElementToken(string $element) : string 63 { 64 $attributes = self::parseAttributesStatic(); 65 return "(?<{$element}><{$element}\\b(?:\\s++{$attributes})?\\s*+>" . "(?>(?>(?:<(?!/?{$element}[^<>]*>))?[^<]++)++|(?&{$element}))*+</{$element}\\s*+>)"; 60 66 } 61 67 /** … … 82 88 * Regex token for an HTML attribute, optionally capturing the value in a capture group 83 89 * 84 * @param string$attrName85 * @param bool$captureValue86 * @param bool$captureDelimiter87 * @param string$matchedValue90 * @param string $attrName 91 * @param bool $captureValue 92 * @param bool $captureDelimiter 93 * @param string $matchedValue 88 94 * 89 95 * @return string … … 125 131 * Regex token for a self closing HTML element 126 132 * 127 * @param string $elementName of element133 * @param string $element Name of element 128 134 * 129 135 * @return string -
jch-optimize/trunk/lib/vendor/composer/autoload_classmap.php
r3040365 r3087340 73 73 'JchOptimize\\Core\\FeatureHelpers\\Fonts' => $baseDir . '/src/FeatureHelpers/Fonts.php', 74 74 'JchOptimize\\Core\\FeatureHelpers\\Http2Excludes' => $baseDir . '/src/FeatureHelpers/Http2Excludes.php', 75 'JchOptimize\\Core\\FeatureHelpers\\LCPImages' => $baseDir . '/src/FeatureHelpers/LCPImages.php', 75 76 'JchOptimize\\Core\\FeatureHelpers\\LazyLoadExtended' => $baseDir . '/src/FeatureHelpers/LazyLoadExtended.php', 76 77 'JchOptimize\\Core\\FeatureHelpers\\ReduceDom' => $baseDir . '/src/FeatureHelpers/ReduceDom.php', -
jch-optimize/trunk/lib/vendor/composer/autoload_static.php
r3040365 r3087340 336 336 'JchOptimize\\Core\\FeatureHelpers\\Fonts' => __DIR__ . '/../..' . '/src/FeatureHelpers/Fonts.php', 337 337 'JchOptimize\\Core\\FeatureHelpers\\Http2Excludes' => __DIR__ . '/../..' . '/src/FeatureHelpers/Http2Excludes.php', 338 'JchOptimize\\Core\\FeatureHelpers\\LCPImages' => __DIR__ . '/../..' . '/src/FeatureHelpers/LCPImages.php', 338 339 'JchOptimize\\Core\\FeatureHelpers\\LazyLoadExtended' => __DIR__ . '/../..' . '/src/FeatureHelpers/LazyLoadExtended.php', 339 340 'JchOptimize\\Core\\FeatureHelpers\\ReduceDom' => __DIR__ . '/../..' . '/src/FeatureHelpers/ReduceDom.php', -
jch-optimize/trunk/lib/vendor/composer/installed.php
r3040365 r3087340 3 3 namespace _JchOptimizeVendor; 4 4 5 return array('root' => array('pretty_version' => 'dev-master', 'version' => 'dev-master', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'reference' => ' 857797bdb745daf47b8f4e5410bcdc902b7b7341', 'name' => 'jchoptimize/lib', 'dev' => \false), 'versions' => array('codealfa/minify' => array('pretty_version' => 'dev-master', 'version' => 'dev-master', 'type' => 'library', 'install_path' => __DIR__ . '/../codealfa/minify', 'aliases' => array(0 => '9999999-dev'), 'reference' => 'a11d3fc4da27e170ca8cb9f966915ff9cfdc519d', 'dev_requirement' => \false), 'codealfa/regextokenizer' => array('pretty_version' => 'dev-master', 'version' => 'dev-master', 'type' => 'library', 'install_path' => __DIR__ . '/../codealfa/regextokenizer', 'aliases' => array(0 => '9999999-dev'), 'reference' => 'b660bf5d561078f40bcbf1a68eeb63428a14b17d', 'dev_requirement' => \false), 'composer/ca-bundle' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'type' => 'library', 'install_path' => __DIR__ . '/./ca-bundle', 'aliases' => array(0 => '1.x-dev'), 'reference' => '4d0ae9807cf38e759b6f10b09195b3addd7d8685', 'dev_requirement' => \false), 'container-interop/container-interop' => array('dev_requirement' => \false, 'replaced' => array(0 => '^1.2.0')), 'guzzlehttp/guzzle' => array('pretty_version' => '7.5.x-dev', 'version' => '7.5.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../guzzlehttp/guzzle', 'aliases' => array(), 'reference' => '584d1f06b5caa07b0587f5054d551ed65460ce5d', 'dev_requirement' => \false), 'guzzlehttp/promises' => array('pretty_version' => '1.5.x-dev', 'version' => '1.5.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../guzzlehttp/promises', 'aliases' => array(), 'reference' => '67ab6e18aaa14d753cc148911d273f6e6cb6721e', 'dev_requirement' => \false), 'guzzlehttp/psr7' => array('pretty_version' => '1.9.x-dev', 'version' => '1.9.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../guzzlehttp/psr7', 'aliases' => array(), 'reference' => 'e4490cabc77465aaee90b20cfc9a770f8c04be6b', 'dev_requirement' => \false), 'illuminate/collections' => array('pretty_version' => '8.x-dev', 'version' => '8.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/collections', 'aliases' => array(), 'reference' => '705a4e1ef93cd492c45b9b3e7911cccc990a07f4', 'dev_requirement' => \false), 'illuminate/contracts' => array('pretty_version' => '8.x-dev', 'version' => '8.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/contracts', 'aliases' => array(), 'reference' => '5e0fd287a1b22a6b346a9f7cd484d8cf0234585d', 'dev_requirement' => \false), 'illuminate/macroable' => array('pretty_version' => '8.x-dev', 'version' => '8.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/macroable', 'aliases' => array(), 'reference' => 'aed81891a6e046fdee72edd497f822190f61c162', 'dev_requirement' => \false), 'intervention/image' => array('pretty_version' => '2.7.2', 'version' => '2.7.2.0', 'type' => 'library', 'install_path' => __DIR__ . '/../intervention/image', 'aliases' => array(), 'reference' => '04be355f8d6734c826045d02a1079ad658322dad', 'dev_requirement' => \false), 'jchoptimize/lib' => array('pretty_version' => 'dev-master', 'version' => 'dev-master', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'reference' => '857797bdb745daf47b8f4e5410bcdc902b7b7341', 'dev_requirement' => \false), 'joomla/controller' => array('pretty_version' => 'dev-2.0-dev', 'version' => 'dev-2.0-dev', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/controller', 'aliases' => array(0 => '2.0.x-dev'), 'reference' => '6a5a386246f6e67ab0c3a4e71d27f0f208720b65', 'dev_requirement' => \false), 'joomla/di' => array('pretty_version' => 'dev-2.0-dev', 'version' => 'dev-2.0-dev', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/di', 'aliases' => array(0 => '2.0.x-dev'), 'reference' => 'b68f8de6c3a214eac22c2172f966d8965fd47f9c', 'dev_requirement' => \false), 'joomla/filesystem' => array('pretty_version' => 'dev-1.x-dev', 'version' => 'dev-1.x-dev', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/filesystem', 'aliases' => array(), 'reference' => '9ad5d9b64960f0ea56fb71364a33622843b95c27', 'dev_requirement' => \false), 'joomla/filter' => array('pretty_version' => 'dev-2.0-dev', 'version' => 'dev-2.0-dev', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/filter', 'aliases' => array(0 => '2.0.x-dev'), 'reference' => '9102630f9069351c1259b6f585a704fde7029d2a', 'dev_requirement' => \false), 'joomla/input' => array('pretty_version' => 'dev-2.0-dev', 'version' => 'dev-2.0-dev', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/input', 'aliases' => array(0 => '2.0.x-dev'), 'reference' => '80d2b6384d60307a11b9af39bdc9a8d254949e94', 'dev_requirement' => \false), 'joomla/model' => array('pretty_version' => 'dev-2.0-dev', 'version' => 'dev-2.0-dev', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/model', 'aliases' => array(0 => '2.0.x-dev'), 'reference' => 'f322645993346efa5505500f59d6471cbd0d564b', 'dev_requirement' => \false), 'joomla/registry' => array('pretty_version' => 'dev-2.0-dev', 'version' => 'dev-2.0-dev', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/registry', 'aliases' => array(0 => '2.0.x-dev'), 'reference' => 'fde95733e7e2634d64bff71f611ee02b9ceff354', 'dev_requirement' => \false), 'joomla/renderer' => array('pretty_version' => '2.0.1', 'version' => '2.0.1.0', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/renderer', 'aliases' => array(), 'reference' => '0b514c40d3858fbbbf3bf3347832bc4fc3e776da', 'dev_requirement' => \false), 'joomla/string' => array('pretty_version' => 'dev-2.0-dev', 'version' => 'dev-2.0-dev', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/string', 'aliases' => array(0 => '2.0.x-dev'), 'reference' => 'c7a9330f7316a574f3ff538053fa65dc38bafbe6', 'dev_requirement' => \false), 'joomla/utilities' => array('pretty_version' => 'dev-2.0-dev', 'version' => 'dev-2.0-dev', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/utilities', 'aliases' => array(0 => '2.0.x-dev'), 'reference' => '2baa8af18fd2ee5a185606b91ab2e273f77e5e4b', 'dev_requirement' => \false), 'joomla/view' => array('pretty_version' => 'dev-2.0-dev', 'version' => 'dev-2.0-dev', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/view', 'aliases' => array(0 => '2.0.x-dev'), 'reference' => '7d5e706b29cac01d0b1ee11b871eabaa823f9063', 'dev_requirement' => \false), 'laminas/laminas-cache' => array('pretty_version' => '3.0.x-dev', 'version' => '3.0.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-cache', 'aliases' => array(), 'reference' => '86b47eb7b05bc4d24edafb3039494ba81405983b', 'dev_requirement' => \false), 'laminas/laminas-cache-storage-adapter-apcu' => array('pretty_version' => '2.1.x-dev', 'version' => '2.1.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-cache-storage-adapter-apcu', 'aliases' => array(), 'reference' => '344aa69ff029788bd340a3bda63754d24623bd85', 'dev_requirement' => \false), 'laminas/laminas-cache-storage-adapter-blackhole' => array('pretty_version' => '2.0.x-dev', 'version' => '2.0.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-cache-storage-adapter-blackhole', 'aliases' => array(), 'reference' => 'fdb6c4b9813cc7365d72c002b09dc808e34b7002', 'dev_requirement' => \false), 'laminas/laminas-cache-storage-adapter-filesystem' => array('pretty_version' => '2.1.x-dev', 'version' => '2.1.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-cache-storage-adapter-filesystem', 'aliases' => array(), 'reference' => 'd9712a8292fc0a84219e4aba97b6b04b95057cb6', 'dev_requirement' => \false), 'laminas/laminas-cache-storage-adapter-memcached' => array('pretty_version' => '2.1.x-dev', 'version' => '2.1.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-cache-storage-adapter-memcached', 'aliases' => array(), 'reference' => '5d6795281f388842ed96acbfc3f8659d0742282f', 'dev_requirement' => \false), 'laminas/laminas-cache-storage-adapter-redis' => array('pretty_version' => '2.1.x-dev', 'version' => '2.1.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-cache-storage-adapter-redis', 'aliases' => array(), 'reference' => '289717d10a89755d3f36f799565a3fb9c7e9ab24', 'dev_requirement' => \false), 'laminas/laminas-cache-storage-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.0')), 'laminas/laminas-eventmanager' => array('pretty_version' => '3.11.x-dev', 'version' => '3.11.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-eventmanager', 'aliases' => array(), 'reference' => '9cfa79ce247c567f05ce4b7c975c6bdf9698c5dd', 'dev_requirement' => \false), 'laminas/laminas-json' => array('pretty_version' => '3.5.x-dev', 'version' => '3.5.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-json', 'aliases' => array(), 'reference' => '7a8a1d7bf2d05dd6c1fbd7c0868d3848cf2b57ec', 'dev_requirement' => \false), 'laminas/laminas-log' => array('pretty_version' => '2.14.x-dev', 'version' => '2.14.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-log', 'aliases' => array(), 'reference' => '39f3dcbd77fd0d84b190ff1332f5d3d28d56527e', 'dev_requirement' => \false), 'laminas/laminas-paginator' => array('pretty_version' => '2.11.x-dev', 'version' => '2.11.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-paginator', 'aliases' => array(), 'reference' => '7f00d5fdecd1b4f67c8e84e6f6d57bbabda4b7d8', 'dev_requirement' => \false), 'laminas/laminas-serializer' => array('pretty_version' => '2.12.x-dev', 'version' => '2.12.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-serializer', 'aliases' => array(), 'reference' => '2826fd71f202569c169456a4b84297da9ff630cd', 'dev_requirement' => \false), 'laminas/laminas-servicemanager' => array('pretty_version' => '3.20.x-dev', 'version' => '3.20.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-servicemanager', 'aliases' => array(), 'reference' => 'bc2c2cbe2dd90db8b9d16b0618f542692b76ab59', 'dev_requirement' => \false), 'laminas/laminas-stdlib' => array('pretty_version' => '3.16.x-dev', 'version' => '3.16.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-stdlib', 'aliases' => array(), 'reference' => 'f4f773641807c7ccee59b758bfe4ac4ba33ecb17', 'dev_requirement' => \false), 'league/flysystem' => array('pretty_version' => '2.x-dev', 'version' => '2.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../league/flysystem', 'aliases' => array(), 'reference' => '8aaffb653c5777781b0f7f69a5d937baf7ab6cdb', 'dev_requirement' => \false), 'league/glide' => array('pretty_version' => '2.3.0', 'version' => '2.3.0.0', 'type' => 'library', 'install_path' => __DIR__ . '/../league/glide', 'aliases' => array(), 'reference' => '2ff92c8f1edc80b74e2d3c5efccfc7223f74d407', 'dev_requirement' => \false), 'league/mime-type-detection' => array('pretty_version' => '1.14.0', 'version' => '1.14.0.0', 'type' => 'library', 'install_path' => __DIR__ . '/../league/mime-type-detection', 'aliases' => array(), 'reference' => 'b6a5854368533df0295c5761a0253656a2e52d9e', 'dev_requirement' => \false), 'nicmart/tree' => array('pretty_version' => '0.3.1', 'version' => '0.3.1.0', 'type' => 'library', 'install_path' => __DIR__ . '/../nicmart/tree', 'aliases' => array(), 'reference' => 'c55ba47c64a3cb7454c22e6d630729fc2aab23ff', 'dev_requirement' => \false), 'paragi/php-websocket-client' => array('pretty_version' => 'dev-master', 'version' => 'dev-master', 'type' => 'library', 'install_path' => __DIR__ . '/../paragi/php-websocket-client', 'aliases' => array(0 => '9999999-dev'), 'reference' => 'a40a6bf0525a1e76950d19b41201ccccb80bf9cd', 'dev_requirement' => \false), 'psr/cache' => array('pretty_version' => '1.0.1', 'version' => '1.0.1.0', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/cache', 'aliases' => array(), 'reference' => 'd11b50ad223250cf17b86e38383413f5a6764bf8', 'dev_requirement' => \false), 'psr/cache-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.0')), 'psr/container' => array('pretty_version' => '1.x-dev', 'version' => '1.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/container', 'aliases' => array(), 'reference' => '513e0666f7216c7459170d56df27dfcefe1689ea', 'dev_requirement' => \false), 'psr/container-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '~1.0', 1 => '^1.0')), 'psr/http-client' => array('pretty_version' => 'dev-master', 'version' => 'dev-master', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/http-client', 'aliases' => array(0 => '1.0.x-dev'), 'reference' => 'bb5906edc1c324c9a05aa0873d40117941e5fa90', 'dev_requirement' => \false), 'psr/http-client-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.0')), 'psr/http-message' => array('pretty_version' => '1.1', 'version' => '1.1.0.0', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/http-message', 'aliases' => array(), 'reference' => 'cb6ce4845ce34a8ad9e68117c10ee90a29919eba', 'dev_requirement' => \false), 'psr/http-message-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.0')), 'psr/log' => array('pretty_version' => '1.1.4', 'version' => '1.1.4.0', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/log', 'aliases' => array(), 'reference' => 'd49695b909c3b7628b6289db5479a1c204601f11', 'dev_requirement' => \false), 'psr/log-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.0.0')), 'psr/simple-cache' => array('pretty_version' => '1.0.1', 'version' => '1.0.1.0', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/simple-cache', 'aliases' => array(), 'reference' => '408d5eafb83c57f6365a3ca330ff23aa4a5fa39b', 'dev_requirement' => \false), 'psr/simple-cache-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.0')), 'ralouphie/getallheaders' => array('pretty_version' => '3.0.3', 'version' => '3.0.3.0', 'type' => 'library', 'install_path' => __DIR__ . '/../ralouphie/getallheaders', 'aliases' => array(), 'reference' => '120b605dfeb996808c31b6477290a714d356e822', 'dev_requirement' => \false), 'slim/php-view' => array('pretty_version' => 'dev-joomla', 'version' => 'dev-joomla', 'type' => 'library', 'install_path' => __DIR__ . '/../slim/php-view', 'aliases' => array(), 'reference' => 'ab25024a44b3c65a4c2a9968ce283233b490fcb9', 'dev_requirement' => \false), 'spatie/browsershot' => array('pretty_version' => '3.60.1', 'version' => '3.60.1.0', 'type' => 'library', 'install_path' => __DIR__ . '/../spatie/browsershot', 'aliases' => array(), 'reference' => '8779b2cd10dcd9dab4abd0127429e5578da3f9ab', 'dev_requirement' => \false), 'spatie/crawler' => array('pretty_version' => 'v6.x-dev', 'version' => '6.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../spatie/crawler', 'aliases' => array(), 'reference' => '276ecb429a770474695a1278a9ad3e719fbef259', 'dev_requirement' => \false), 'spatie/image' => array('pretty_version' => '2.2.7', 'version' => '2.2.7.0', 'type' => 'library', 'install_path' => __DIR__ . '/../spatie/image', 'aliases' => array(), 'reference' => '2f802853aab017aa615224daae1588054b5ab20e', 'dev_requirement' => \false), 'spatie/image-optimizer' => array('pretty_version' => '1.7.2', 'version' => '1.7.2.0', 'type' => 'library', 'install_path' => __DIR__ . '/../spatie/image-optimizer', 'aliases' => array(), 'reference' => '62f7463483d1bd975f6f06025d89d42a29608fe1', 'dev_requirement' => \false), 'spatie/robots-txt' => array('pretty_version' => '2.0.3', 'version' => '2.0.3.0', 'type' => 'library', 'install_path' => __DIR__ . '/../spatie/robots-txt', 'aliases' => array(), 'reference' => 'dacba2ba159364987392aa1b0002e196c5923970', 'dev_requirement' => \false), 'spatie/temporary-directory' => array('pretty_version' => '2.2.0', 'version' => '2.2.0.0', 'type' => 'library', 'install_path' => __DIR__ . '/../spatie/temporary-directory', 'aliases' => array(), 'reference' => 'efc258c9f4da28f0c7661765b8393e4ccee3d19c', 'dev_requirement' => \false), 'symfony/deprecation-contracts' => array('pretty_version' => '2.5.x-dev', 'version' => '2.5.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/deprecation-contracts', 'aliases' => array(), 'reference' => '80d075412b557d41002320b96a096ca65aa2c98d', 'dev_requirement' => \false), 'symfony/dom-crawler' => array('pretty_version' => '5.4.x-dev', 'version' => '5.4.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/dom-crawler', 'aliases' => array(), 'reference' => '728f1fc136252a626ba5a69c02bd66a3697ff201', 'dev_requirement' => \false), 'symfony/polyfill-ctype' => array('pretty_version' => '1.x-dev', 'version' => '1.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-ctype', 'aliases' => array(), 'reference' => 'ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb', 'dev_requirement' => \false), 'symfony/polyfill-mbstring' => array('pretty_version' => '1.x-dev', 'version' => '1.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-mbstring', 'aliases' => array(), 'reference' => '42292d99c55abe617799667f454222c54c60e229', 'dev_requirement' => \false), 'symfony/polyfill-php80' => array('pretty_version' => '1.x-dev', 'version' => '1.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-php80', 'aliases' => array(), 'reference' => '6caa57379c4aec19c0a12a38b59b26487dcfe4b5', 'dev_requirement' => \false), 'symfony/process' => array('pretty_version' => '5.4.x-dev', 'version' => '5.4.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/process', 'aliases' => array(), 'reference' => '8fa22178dfc368911dbd513b431cd9b06f9afe7a', 'dev_requirement' => \false), 'webmozart/assert' => array('pretty_version' => '1.11.0', 'version' => '1.11.0.0', 'type' => 'library', 'install_path' => __DIR__ . '/../webmozart/assert', 'aliases' => array(), 'reference' => '11cb2199493b2f8a3b53e7f19068fc6aac760991', 'dev_requirement' => \false)));5 return array('root' => array('pretty_version' => 'dev-master', 'version' => 'dev-master', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'reference' => '35afc258271812e2d577c7dce297c6a3db38ace3', 'name' => 'jchoptimize/lib', 'dev' => \false), 'versions' => array('codealfa/minify' => array('pretty_version' => 'dev-master', 'version' => 'dev-master', 'type' => 'library', 'install_path' => __DIR__ . '/../codealfa/minify', 'aliases' => array(0 => '9999999-dev'), 'reference' => 'a11d3fc4da27e170ca8cb9f966915ff9cfdc519d', 'dev_requirement' => \false), 'codealfa/regextokenizer' => array('pretty_version' => 'dev-master', 'version' => 'dev-master', 'type' => 'library', 'install_path' => __DIR__ . '/../codealfa/regextokenizer', 'aliases' => array(0 => '9999999-dev'), 'reference' => 'b660bf5d561078f40bcbf1a68eeb63428a14b17d', 'dev_requirement' => \false), 'composer/ca-bundle' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'type' => 'library', 'install_path' => __DIR__ . '/./ca-bundle', 'aliases' => array(0 => '1.x-dev'), 'reference' => '4d0ae9807cf38e759b6f10b09195b3addd7d8685', 'dev_requirement' => \false), 'container-interop/container-interop' => array('dev_requirement' => \false, 'replaced' => array(0 => '^1.2.0')), 'guzzlehttp/guzzle' => array('pretty_version' => '7.5.x-dev', 'version' => '7.5.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../guzzlehttp/guzzle', 'aliases' => array(), 'reference' => '584d1f06b5caa07b0587f5054d551ed65460ce5d', 'dev_requirement' => \false), 'guzzlehttp/promises' => array('pretty_version' => '1.5.x-dev', 'version' => '1.5.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../guzzlehttp/promises', 'aliases' => array(), 'reference' => '67ab6e18aaa14d753cc148911d273f6e6cb6721e', 'dev_requirement' => \false), 'guzzlehttp/psr7' => array('pretty_version' => '1.9.x-dev', 'version' => '1.9.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../guzzlehttp/psr7', 'aliases' => array(), 'reference' => 'e4490cabc77465aaee90b20cfc9a770f8c04be6b', 'dev_requirement' => \false), 'illuminate/collections' => array('pretty_version' => '8.x-dev', 'version' => '8.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/collections', 'aliases' => array(), 'reference' => '705a4e1ef93cd492c45b9b3e7911cccc990a07f4', 'dev_requirement' => \false), 'illuminate/contracts' => array('pretty_version' => '8.x-dev', 'version' => '8.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/contracts', 'aliases' => array(), 'reference' => '5e0fd287a1b22a6b346a9f7cd484d8cf0234585d', 'dev_requirement' => \false), 'illuminate/macroable' => array('pretty_version' => '8.x-dev', 'version' => '8.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/macroable', 'aliases' => array(), 'reference' => 'aed81891a6e046fdee72edd497f822190f61c162', 'dev_requirement' => \false), 'intervention/image' => array('pretty_version' => '2.7.2', 'version' => '2.7.2.0', 'type' => 'library', 'install_path' => __DIR__ . '/../intervention/image', 'aliases' => array(), 'reference' => '04be355f8d6734c826045d02a1079ad658322dad', 'dev_requirement' => \false), 'jchoptimize/lib' => array('pretty_version' => 'dev-master', 'version' => 'dev-master', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'reference' => '35afc258271812e2d577c7dce297c6a3db38ace3', 'dev_requirement' => \false), 'joomla/controller' => array('pretty_version' => 'dev-2.0-dev', 'version' => 'dev-2.0-dev', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/controller', 'aliases' => array(0 => '2.0.x-dev'), 'reference' => '6a5a386246f6e67ab0c3a4e71d27f0f208720b65', 'dev_requirement' => \false), 'joomla/di' => array('pretty_version' => 'dev-2.0-dev', 'version' => 'dev-2.0-dev', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/di', 'aliases' => array(0 => '2.0.x-dev'), 'reference' => 'b68f8de6c3a214eac22c2172f966d8965fd47f9c', 'dev_requirement' => \false), 'joomla/filesystem' => array('pretty_version' => 'dev-1.x-dev', 'version' => 'dev-1.x-dev', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/filesystem', 'aliases' => array(), 'reference' => '9ad5d9b64960f0ea56fb71364a33622843b95c27', 'dev_requirement' => \false), 'joomla/filter' => array('pretty_version' => 'dev-2.0-dev', 'version' => 'dev-2.0-dev', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/filter', 'aliases' => array(0 => '2.0.x-dev'), 'reference' => '9102630f9069351c1259b6f585a704fde7029d2a', 'dev_requirement' => \false), 'joomla/input' => array('pretty_version' => 'dev-2.0-dev', 'version' => 'dev-2.0-dev', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/input', 'aliases' => array(0 => '2.0.x-dev'), 'reference' => '80d2b6384d60307a11b9af39bdc9a8d254949e94', 'dev_requirement' => \false), 'joomla/model' => array('pretty_version' => 'dev-2.0-dev', 'version' => 'dev-2.0-dev', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/model', 'aliases' => array(0 => '2.0.x-dev'), 'reference' => 'f322645993346efa5505500f59d6471cbd0d564b', 'dev_requirement' => \false), 'joomla/registry' => array('pretty_version' => 'dev-2.0-dev', 'version' => 'dev-2.0-dev', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/registry', 'aliases' => array(0 => '2.0.x-dev'), 'reference' => 'fde95733e7e2634d64bff71f611ee02b9ceff354', 'dev_requirement' => \false), 'joomla/renderer' => array('pretty_version' => '2.0.1', 'version' => '2.0.1.0', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/renderer', 'aliases' => array(), 'reference' => '0b514c40d3858fbbbf3bf3347832bc4fc3e776da', 'dev_requirement' => \false), 'joomla/string' => array('pretty_version' => 'dev-2.0-dev', 'version' => 'dev-2.0-dev', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/string', 'aliases' => array(0 => '2.0.x-dev'), 'reference' => 'c7a9330f7316a574f3ff538053fa65dc38bafbe6', 'dev_requirement' => \false), 'joomla/utilities' => array('pretty_version' => 'dev-2.0-dev', 'version' => 'dev-2.0-dev', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/utilities', 'aliases' => array(0 => '2.0.x-dev'), 'reference' => '2baa8af18fd2ee5a185606b91ab2e273f77e5e4b', 'dev_requirement' => \false), 'joomla/view' => array('pretty_version' => 'dev-2.0-dev', 'version' => 'dev-2.0-dev', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/view', 'aliases' => array(0 => '2.0.x-dev'), 'reference' => '7d5e706b29cac01d0b1ee11b871eabaa823f9063', 'dev_requirement' => \false), 'laminas/laminas-cache' => array('pretty_version' => '3.0.x-dev', 'version' => '3.0.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-cache', 'aliases' => array(), 'reference' => '86b47eb7b05bc4d24edafb3039494ba81405983b', 'dev_requirement' => \false), 'laminas/laminas-cache-storage-adapter-apcu' => array('pretty_version' => '2.1.x-dev', 'version' => '2.1.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-cache-storage-adapter-apcu', 'aliases' => array(), 'reference' => '344aa69ff029788bd340a3bda63754d24623bd85', 'dev_requirement' => \false), 'laminas/laminas-cache-storage-adapter-blackhole' => array('pretty_version' => '2.0.x-dev', 'version' => '2.0.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-cache-storage-adapter-blackhole', 'aliases' => array(), 'reference' => 'fdb6c4b9813cc7365d72c002b09dc808e34b7002', 'dev_requirement' => \false), 'laminas/laminas-cache-storage-adapter-filesystem' => array('pretty_version' => '2.1.x-dev', 'version' => '2.1.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-cache-storage-adapter-filesystem', 'aliases' => array(), 'reference' => 'd9712a8292fc0a84219e4aba97b6b04b95057cb6', 'dev_requirement' => \false), 'laminas/laminas-cache-storage-adapter-memcached' => array('pretty_version' => '2.1.x-dev', 'version' => '2.1.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-cache-storage-adapter-memcached', 'aliases' => array(), 'reference' => '5d6795281f388842ed96acbfc3f8659d0742282f', 'dev_requirement' => \false), 'laminas/laminas-cache-storage-adapter-redis' => array('pretty_version' => '2.1.x-dev', 'version' => '2.1.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-cache-storage-adapter-redis', 'aliases' => array(), 'reference' => '289717d10a89755d3f36f799565a3fb9c7e9ab24', 'dev_requirement' => \false), 'laminas/laminas-cache-storage-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.0')), 'laminas/laminas-eventmanager' => array('pretty_version' => '3.11.x-dev', 'version' => '3.11.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-eventmanager', 'aliases' => array(), 'reference' => '9cfa79ce247c567f05ce4b7c975c6bdf9698c5dd', 'dev_requirement' => \false), 'laminas/laminas-json' => array('pretty_version' => '3.5.x-dev', 'version' => '3.5.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-json', 'aliases' => array(), 'reference' => '7a8a1d7bf2d05dd6c1fbd7c0868d3848cf2b57ec', 'dev_requirement' => \false), 'laminas/laminas-log' => array('pretty_version' => '2.14.x-dev', 'version' => '2.14.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-log', 'aliases' => array(), 'reference' => '39f3dcbd77fd0d84b190ff1332f5d3d28d56527e', 'dev_requirement' => \false), 'laminas/laminas-paginator' => array('pretty_version' => '2.11.x-dev', 'version' => '2.11.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-paginator', 'aliases' => array(), 'reference' => '7f00d5fdecd1b4f67c8e84e6f6d57bbabda4b7d8', 'dev_requirement' => \false), 'laminas/laminas-serializer' => array('pretty_version' => '2.12.x-dev', 'version' => '2.12.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-serializer', 'aliases' => array(), 'reference' => '2826fd71f202569c169456a4b84297da9ff630cd', 'dev_requirement' => \false), 'laminas/laminas-servicemanager' => array('pretty_version' => '3.20.x-dev', 'version' => '3.20.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-servicemanager', 'aliases' => array(), 'reference' => 'bc2c2cbe2dd90db8b9d16b0618f542692b76ab59', 'dev_requirement' => \false), 'laminas/laminas-stdlib' => array('pretty_version' => '3.16.x-dev', 'version' => '3.16.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-stdlib', 'aliases' => array(), 'reference' => 'f4f773641807c7ccee59b758bfe4ac4ba33ecb17', 'dev_requirement' => \false), 'league/flysystem' => array('pretty_version' => '2.x-dev', 'version' => '2.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../league/flysystem', 'aliases' => array(), 'reference' => '8aaffb653c5777781b0f7f69a5d937baf7ab6cdb', 'dev_requirement' => \false), 'league/glide' => array('pretty_version' => '2.3.0', 'version' => '2.3.0.0', 'type' => 'library', 'install_path' => __DIR__ . '/../league/glide', 'aliases' => array(), 'reference' => '2ff92c8f1edc80b74e2d3c5efccfc7223f74d407', 'dev_requirement' => \false), 'league/mime-type-detection' => array('pretty_version' => '1.14.0', 'version' => '1.14.0.0', 'type' => 'library', 'install_path' => __DIR__ . '/../league/mime-type-detection', 'aliases' => array(), 'reference' => 'b6a5854368533df0295c5761a0253656a2e52d9e', 'dev_requirement' => \false), 'nicmart/tree' => array('pretty_version' => '0.3.1', 'version' => '0.3.1.0', 'type' => 'library', 'install_path' => __DIR__ . '/../nicmart/tree', 'aliases' => array(), 'reference' => 'c55ba47c64a3cb7454c22e6d630729fc2aab23ff', 'dev_requirement' => \false), 'paragi/php-websocket-client' => array('pretty_version' => 'dev-master', 'version' => 'dev-master', 'type' => 'library', 'install_path' => __DIR__ . '/../paragi/php-websocket-client', 'aliases' => array(0 => '9999999-dev'), 'reference' => 'a40a6bf0525a1e76950d19b41201ccccb80bf9cd', 'dev_requirement' => \false), 'psr/cache' => array('pretty_version' => '1.0.1', 'version' => '1.0.1.0', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/cache', 'aliases' => array(), 'reference' => 'd11b50ad223250cf17b86e38383413f5a6764bf8', 'dev_requirement' => \false), 'psr/cache-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.0')), 'psr/container' => array('pretty_version' => '1.x-dev', 'version' => '1.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/container', 'aliases' => array(), 'reference' => '513e0666f7216c7459170d56df27dfcefe1689ea', 'dev_requirement' => \false), 'psr/container-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '~1.0', 1 => '^1.0')), 'psr/http-client' => array('pretty_version' => 'dev-master', 'version' => 'dev-master', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/http-client', 'aliases' => array(0 => '1.0.x-dev'), 'reference' => 'bb5906edc1c324c9a05aa0873d40117941e5fa90', 'dev_requirement' => \false), 'psr/http-client-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.0')), 'psr/http-message' => array('pretty_version' => '1.1', 'version' => '1.1.0.0', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/http-message', 'aliases' => array(), 'reference' => 'cb6ce4845ce34a8ad9e68117c10ee90a29919eba', 'dev_requirement' => \false), 'psr/http-message-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.0')), 'psr/log' => array('pretty_version' => '1.1.4', 'version' => '1.1.4.0', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/log', 'aliases' => array(), 'reference' => 'd49695b909c3b7628b6289db5479a1c204601f11', 'dev_requirement' => \false), 'psr/log-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.0.0')), 'psr/simple-cache' => array('pretty_version' => '1.0.1', 'version' => '1.0.1.0', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/simple-cache', 'aliases' => array(), 'reference' => '408d5eafb83c57f6365a3ca330ff23aa4a5fa39b', 'dev_requirement' => \false), 'psr/simple-cache-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.0')), 'ralouphie/getallheaders' => array('pretty_version' => '3.0.3', 'version' => '3.0.3.0', 'type' => 'library', 'install_path' => __DIR__ . '/../ralouphie/getallheaders', 'aliases' => array(), 'reference' => '120b605dfeb996808c31b6477290a714d356e822', 'dev_requirement' => \false), 'slim/php-view' => array('pretty_version' => 'dev-joomla', 'version' => 'dev-joomla', 'type' => 'library', 'install_path' => __DIR__ . '/../slim/php-view', 'aliases' => array(), 'reference' => 'ab25024a44b3c65a4c2a9968ce283233b490fcb9', 'dev_requirement' => \false), 'spatie/browsershot' => array('pretty_version' => '3.60.1', 'version' => '3.60.1.0', 'type' => 'library', 'install_path' => __DIR__ . '/../spatie/browsershot', 'aliases' => array(), 'reference' => '8779b2cd10dcd9dab4abd0127429e5578da3f9ab', 'dev_requirement' => \false), 'spatie/crawler' => array('pretty_version' => 'v6.x-dev', 'version' => '6.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../spatie/crawler', 'aliases' => array(), 'reference' => '276ecb429a770474695a1278a9ad3e719fbef259', 'dev_requirement' => \false), 'spatie/image' => array('pretty_version' => '2.2.7', 'version' => '2.2.7.0', 'type' => 'library', 'install_path' => __DIR__ . '/../spatie/image', 'aliases' => array(), 'reference' => '2f802853aab017aa615224daae1588054b5ab20e', 'dev_requirement' => \false), 'spatie/image-optimizer' => array('pretty_version' => '1.7.2', 'version' => '1.7.2.0', 'type' => 'library', 'install_path' => __DIR__ . '/../spatie/image-optimizer', 'aliases' => array(), 'reference' => '62f7463483d1bd975f6f06025d89d42a29608fe1', 'dev_requirement' => \false), 'spatie/robots-txt' => array('pretty_version' => '2.0.3', 'version' => '2.0.3.0', 'type' => 'library', 'install_path' => __DIR__ . '/../spatie/robots-txt', 'aliases' => array(), 'reference' => 'dacba2ba159364987392aa1b0002e196c5923970', 'dev_requirement' => \false), 'spatie/temporary-directory' => array('pretty_version' => '2.2.0', 'version' => '2.2.0.0', 'type' => 'library', 'install_path' => __DIR__ . '/../spatie/temporary-directory', 'aliases' => array(), 'reference' => 'efc258c9f4da28f0c7661765b8393e4ccee3d19c', 'dev_requirement' => \false), 'symfony/deprecation-contracts' => array('pretty_version' => '2.5.x-dev', 'version' => '2.5.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/deprecation-contracts', 'aliases' => array(), 'reference' => '80d075412b557d41002320b96a096ca65aa2c98d', 'dev_requirement' => \false), 'symfony/dom-crawler' => array('pretty_version' => '5.4.x-dev', 'version' => '5.4.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/dom-crawler', 'aliases' => array(), 'reference' => '728f1fc136252a626ba5a69c02bd66a3697ff201', 'dev_requirement' => \false), 'symfony/polyfill-ctype' => array('pretty_version' => '1.x-dev', 'version' => '1.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-ctype', 'aliases' => array(), 'reference' => 'ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb', 'dev_requirement' => \false), 'symfony/polyfill-mbstring' => array('pretty_version' => '1.x-dev', 'version' => '1.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-mbstring', 'aliases' => array(), 'reference' => '42292d99c55abe617799667f454222c54c60e229', 'dev_requirement' => \false), 'symfony/polyfill-php80' => array('pretty_version' => '1.x-dev', 'version' => '1.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-php80', 'aliases' => array(), 'reference' => '6caa57379c4aec19c0a12a38b59b26487dcfe4b5', 'dev_requirement' => \false), 'symfony/process' => array('pretty_version' => '5.4.x-dev', 'version' => '5.4.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/process', 'aliases' => array(), 'reference' => '8fa22178dfc368911dbd513b431cd9b06f9afe7a', 'dev_requirement' => \false), 'webmozart/assert' => array('pretty_version' => '1.11.0', 'version' => '1.11.0.0', 'type' => 'library', 'install_path' => __DIR__ . '/../webmozart/assert', 'aliases' => array(), 'reference' => '11cb2199493b2f8a3b53e7f19068fc6aac760991', 'dev_requirement' => \false))); -
jch-optimize/trunk/media/js/platform-wordpress.js
r2947895 r3087340 11 11 const jchPlatform = (function () { 12 12 13 let jch_ajax_url_optimizeimages = ajaxurl + '?action=optimizeimages ' + '&_wpnonce=' +optimize_image_url_nonce;13 let jch_ajax_url_optimizeimages = ajaxurl + '?action=optimizeimages&_wpnonce=' + jch_optimize_image_url_nonce; 14 14 let jch_ajax_url_smartcombine = ajaxurl + '?action=smartcombine'; 15 let jch_ajax_url_multiselect = ajaxurl + '?action=multiselect ';15 let jch_ajax_url_multiselect = ajaxurl + '?action=multiselect&_wpnonce=' + jch_multiselect_url_nonce; 16 16 17 17 let configure_url = ajaxurl + '?action=configuresettings'; -
jch-optimize/trunk/readme.txt
r3040365 r3087340 3 3 Contributors: codealfa 4 4 Tags: performance, pagespeed, cache, optimize, seo 5 Tested up to: 6. 4.36 Stable tag: 4.2. 05 Tested up to: 6.5.3 6 Stable tag: 4.2.1 7 7 License: GPLv3 or later 8 8 Requires at least: 5.0 … … 80 80 81 81 == Changelog == 82 83 = 4.2.1 = 84 * Fixed security vulnerability on path traversal. Unprivileged users could access directory information on the Optimize Image page 85 * Bug Fix Sort Items on Page Cache tab not working 86 * Use the loading attribute to lazy load images instead of JavaScript. JavaScript only used for background images and audio/video 87 * Asynchronously loaded CSS in Optimize CSS Delivery feature placed at bottom of page. 88 82 89 = 4.2.0 = 83 90 * Add responsive image feature to further boost LCP -
jch-optimize/trunk/src/Model/PageCache.php
r2997317 r3087340 119 119 120 120 if (! empty($fullOrderingList)) { 121 $this->pageCache->setList('list_fullordering', $fullOrderingList);121 $this->pageCache->setList('list_fullordering', str_replace('_', ' ', $fullOrderingList)); 122 122 } 123 123 -
jch-optimize/trunk/src/Platform/Utility.php
r2997317 r3087340 22 22 use function array_search; 23 23 use function count; 24 use function function_exists; 24 25 use function header; 25 26 use function headers_list; … … 56 57 } 57 58 58 return !is_user_logged_in(); 59 if (function_exists('is_user_logged_in')) { 60 return !is_user_logged_in(); 61 } 62 63 return false; 59 64 } 60 65 -
jch-optimize/trunk/src/Plugin/Admin.php
r2997317 r3087340 288 288 289 289 $loader_image = Paths::mediaUrl() . '/core/images/loader.gif'; 290 $nonce = wp_create_nonce('jch_optimize_image'); 290 $optimize_image_nonce = wp_create_nonce('jch_optimize_image'); 291 $multiselect_nonce = wp_create_nonce('jch_optimize_multiselect'); 292 $filetree_nonce = wp_create_nonce('jch_optimize_filetree'); 291 293 $imageLoaderJs = <<<JS 292 const jch_loader_image_url = "{$loader_image}" 293 const optimize_image_url_nonce = '{$nonce}'; 294 const jch_loader_image_url = "{$loader_image}"; 295 const jch_optimize_image_url_nonce = '{$optimize_image_nonce}'; 296 const jch_multiselect_url_nonce = '{$multiselect_nonce}'; 297 const jch_filetree_url_nonce = '{$filetree_nonce}'; 294 298 JS; 295 299 … … 488 492 public function doAjaxFileTree() 489 493 { 490 echo Ajax::getInstance('FileTree')->run(); 494 check_admin_referer('jch_optimize_filetree'); 495 496 if (current_user_can('manage_options')) { 497 echo Ajax::getInstance('FileTree')->run(); 498 } 499 491 500 die(); 492 501 } … … 497 506 public function doAjaxMultiSelect() 498 507 { 499 echo Ajax::getInstance('MultiSelect')->run(); 508 check_admin_referer('jch_optimize_multiselect'); 509 510 if (current_user_can('manage_options')) { 511 echo Ajax::getInstance('MultiSelect')->run(); 512 } 513 500 514 die(); 501 515 } … … 550 564 echo Ajax::getInstance('SmartCombine')->run(); 551 565 } 566 552 567 die(); 553 568 } … … 561 576 $container->get(Input::class)->def('task', 'getcacheinfo'); 562 577 $container->get(ControllerResolver::class)->resolve(); 578 563 579 die(); 564 580 } -
jch-optimize/trunk/src/View/PageCacheHtml.php
r2997317 r3087340 120 120 $orderOptions = [ 121 121 '' => 'Sort Table By:', 122 'mtime_ asc' => 'Last modified time ascending',123 'mtime_ desc' => 'Last modified time descending',124 'url_ asc' => 'Page URL ascending',125 'url_ desc' => 'Page URL descending',122 'mtime_ASC' => 'Last modified time ascending', 123 'mtime_DESC' => 'Last modified time descending', 124 'url_ASC' => 'Page URL ascending', 125 'url_DESC' => 'Page URL descending', 126 126 ]; 127 127 /** @var string|null $listFullOrderingState */ -
jch-optimize/trunk/tmpl/optimizeimages.php
r2997317 r3087340 88 88 { 89 89 root: '', 90 script: ajaxurl + '?action=filetree ',90 script: ajaxurl + '?action=filetree&_wpnonce=' + jch_filetree_url_nonce, 91 91 expandSpeed: 1000, 92 92 collapseSpeed: 1000, -
jch-optimize/trunk/tmpl/pagecache_filters.php
r2997317 r3087340 80 80 <script> 81 81 document.getElementById('clear-search').addEventListener('click', function (event) { 82 document.getElementById('filter_search').value = '' 83 document.getElementById('filter_time-1').value = '' 84 document.getElementById('filter_time-2').value = '' 85 document.getElementById('filter_device').value = '' 86 document.getElementById('filter_adapter').value = '' 87 document.getElementById('filter_http-request').value = '' 82 document.getElementById('filter_search').value = ''; 83 document.getElementById('filter_time-1').value = ''; 84 document.getElementById('filter_time-2').value = ''; 85 document.getElementById('filter_device').value = ''; 86 document.getElementById('filter_adapter').value = ''; 87 document.getElementById('filter_http-request').value = ''; 88 document.getElementById('list_limit').value = ''; 89 document.getElementById('list_fullordering').value = ''; 88 90 }) 89 91 </script> -
jch-optimize/trunk/vendor/composer/installed.php
r3040365 r3087340 6 6 'install_path' => __DIR__ . '/../../', 7 7 'aliases' => array(), 8 'reference' => ' 857797bdb745daf47b8f4e5410bcdc902b7b7341',8 'reference' => '35afc258271812e2d577c7dce297c6a3db38ace3', 9 9 'name' => 'jchoptimize/wordpress-platform', 10 10 'dev' => false, … … 17 17 'install_path' => __DIR__ . '/../../', 18 18 'aliases' => array(), 19 'reference' => ' 857797bdb745daf47b8f4e5410bcdc902b7b7341',19 'reference' => '35afc258271812e2d577c7dce297c6a3db38ace3', 20 20 'dev_requirement' => false, 21 21 ), -
jch-optimize/trunk/version.php
r3040365 r3087340 15 15 defined('_JCH_EXEC') or die; 16 16 17 const JCH_VERSION = '4.2. 0';18 const JCH_DATE = '2024-0 2-23';17 const JCH_VERSION = '4.2.1'; 18 const JCH_DATE = '2024-05-15'; 19 19 const JCH_PRO = '0'; 20 20 const JCH_DEVELOP = '0';
Note: See TracChangeset
for help on using the changeset viewer.