Plugin Directory

Changeset 2824689


Ignore:
Timestamp:
11/26/2022 09:12:32 PM (3 years ago)
Author:
codealfa
Message:

Uploading changes for version 3.2.1

Location:
jch-optimize/trunk
Files:
18 edited

Legend:

Unmodified
Added
Removed
  • jch-optimize/trunk/jch-optimize.php

    r2807121 r2824689  
    55 * Plugin URI: http://www.jch-optimize.net/
    66 * Description: Boost your WordPress site's performance with JCH Optimize as measured on PageSpeed
    7  * Version: 3.2.0
     7 * Version: 3.2.1
    88 * Author: Samuel Marshall
    99 * License: GNU/GPLv3
  • jch-optimize/trunk/lib/src/Core/Combiner.php

    r2807121 r2824689  
    6767     * @param   Registry              $params
    6868     * @param   CallbackCache         $callbackCache
     69     * @param   TaggableInterface     $taggableCache
     70     * @param   FileUtils             $fileUtils
    6971     * @param   ClientInterface|null  $http
    7072     * @param   bool                  $isBackend
     
    284286                //Probably a rewrite file
    285287                $urlPath = Paths::path2Url($path);
    286                 //Check again to make sure it exists to avoid recursive call if redirected to
    287                 //Not found error page.
    288                 if (\file_exists($urlPath)) {
    289                     try {
    290                         $response = $this->http->get($urlPath, ['Accept-Encoding' => 'identity;q=0']);
    291                         if ($response->getStatusCode() == '200') {
    292                             $body = $response->getBody();
    293                             $body->rewind();
    294                             return $body->getContents();
    295                         }
    296                     } catch (Exception $e) {
    297                         return '|"COMMENT_START Exception fetching file with message: ' . $e->getMessage() . ' COMMENT_END"|';
     288                try {
     289                    $response = $this->http->get($urlPath, ['Accept-Encoding' => 'identity;q=0']);
     290                    if ($response->getStatusCode() == '200') {
     291                        $body = $response->getBody();
     292                        $body->rewind();
     293                        return $body->getContents();
    298294                    }
     295                } catch (Exception $e) {
     296                    return '|"COMMENT_START Exception fetching file with message: ' . $e->getMessage() . ' COMMENT_END"|';
    299297                }
    300298                return '|"COMMENT_START File [' . $path . '] not found COMMENT_END"|';
  • jch-optimize/trunk/lib/src/Core/Css/Callbacks/CorrectUrls.php

    r2807121 r2824689  
    116116                if (!Url::isAbsolute($sOriginalImageUrl)) {
    117117                    $imageUrl = Url::toAbsolute($sOriginalImageUrl, $sCssFileUrl);
    118                     //If there are any external domains we'll cache them to add preconnects for them
    119                     if ($this->params->get('pro_optimizeFonts_enable', '0') && !$this->fileUtils->isInternal($imageUrl)) {
    120                         $preconnectUri = new Uri($imageUrl);
    121                         $domain = $preconnectUri->toString(['scheme', 'host']);
    122                         if (!\in_array($domain, $this->preconnects)) {
    123                             $this->preconnects[] = $domain;
    124                         }
     118                } else {
     119                    $imageUrl = $sOriginalImageUrl;
     120                }
     121                //If there are any external domains we'll cache them to add preconnects for them
     122                if ($this->params->get('pro_optimizeFonts_enable', '0') && !$this->fileUtils->isInternal($imageUrl)) {
     123                    $preconnectUri = new Uri($imageUrl);
     124                    $domain = $preconnectUri->toString(['scheme', 'host']);
     125                    if (!\in_array($domain, $this->preconnects)) {
     126                        $this->preconnects[] = $domain;
    125127                    }
    126                 } else {
     128                }
     129                //If the original url was absolute we can just return it now
     130                if (Url::isAbsolute($sOriginalImageUrl)) {
    127131                    return $matches[0];
    128132                }
  • jch-optimize/trunk/lib/src/Core/Css/Callbacks/ExtractCriticalCss.php

    r2807121 r2824689  
    2525    public $oXPath;
    2626    public $postCss = '';
     27    public $preCss = '';
    2728    public $isPostProcessing = \false;
    2829    protected $criticalCss = '';
     
    5556                }
    5657            }
     58        }
     59        //We'll compile these to prepend to the critical CSS, imported Google font files will never be expanded.
     60        if ($context == 'import') {
     61            $this->preCss .= $matches[0];
    5762        }
    5863        //We're only interested in global and conditional css
  • jch-optimize/trunk/lib/src/Core/Css/Callbacks/HandleAtRules.php

    r2807121 r2824689  
    4848        $url = $matches[3];
    4949        $media = $matches[4];
    50         if ($this->params->get('pro_optimize_gfont_enable', '0') && \strpos($url, 'fonts.googleapis.com') !== \false) {
     50        //If we're importing a Google font file we may need to optimize it
     51        if ($this->params->get('pro_optimizeFonts_enable', '0') && \strpos($url, 'fonts.googleapis.com') !== \false) {
    5152            //We have to add Gfonts here so this info will be cached
    5253            $this->gFonts[] = ['url' => $url, 'media' => $media];
  • jch-optimize/trunk/lib/src/Core/Css/Processor.php

    r2807121 r2824689  
    261261        $html = $htmlProcessor->cleanHtml();
    262262        //Place space around HTML attributes for easy processing with XPath
    263         $html = \preg_replace('#\\s*=\\s*["\']([^"\']++)["\']#i', '=" $1 "', $html);
     263        $html = \preg_replace('#\\s*=\\s*(?|"([^"]*+)"|\'([^\']*+)\'|([^\\s/>]*+))#i', '=" $1 "', $html);
    264264        //Truncate HTML to number of elements set in params
    265265        $sHtmlAboveFold = '';
     
    299299        //Process Font-Face and Key frames
    300300        $this->extractCriticalCss->isPostProcessing = \true;
     301        $preCss = $this->extractCriticalCss->preCss;
    301302        $sPostCss = $oParser->processMatchesWithCallback($this->extractCriticalCss->postCss, $this->extractCriticalCss);
    302303        JCH_DEBUG ? Profiler::stop('OptimizeCssDelivery', \true) : null;
    303         return $sCriticalCss . $sPostCss;
     304        return $preCss . $sCriticalCss . $sPostCss;
    304305        //$this->_debug(self::cssRulesRegex(), '', 'afterCleanCriticalCss');
    305306    }
  • jch-optimize/trunk/lib/src/Core/FileUtils.php

    r2807121 r2824689  
    4040    public function getPath(string $url, string $htmlUrl = '') : string
    4141    {
    42         $fileUri = new Uri(\html_entity_decode($url));
     42        $fileUri = new Uri(\urldecode(\html_entity_decode($url)));
    4343        //If the url of the HTML is not provided we can use the base path of the system uri
    4444        if ($htmlUrl == '') {
  • jch-optimize/trunk/lib/src/Core/Html/Callbacks/LazyLoad.php

    r2807121 r2824689  
    6666        $elementName = !empty($matches[1]) ? $matches[1] : \false;
    6767        $sClassAttribute = !empty($matches[2]) ? $matches[2] : \false;
    68         $sClassDelimiter = !empty($matches[3]) ? $matches[3] : \false;
     68        $sClassDelimiter = !empty($matches[3]) ? $matches[3] : '"';
    6969        $sClassValue = !empty($matches[4]) ? $matches[4] : \false;
    7070        $sSrcAttribute = $innerContent = $sStyleAttribute = !empty($matches[5]) ? $matches[5] : \false;
    71         $sSrcDelimiter = $sStyleDelimiter = !empty($matches[6]) ? $matches[6] : \false;
     71        $sSrcDelimiter = $sStyleDelimiter = !empty($matches[6]) ? $matches[6] : '"';
    7272        $sSrcValue = $sBgDeclaration = !empty($matches[7]) ? $matches[7] : \false;
    7373        $sSrcsetAttribute = $sPosterAttribute = $sCssUrl = !empty($matches[8]) ? $matches[8] : \false;
     
    147147                if ($sSrcsetAttribute !== \false && $sImgType == 'embed') {
    148148                    $sSvgSrcset = '<svg xmlns="http://www.w3.org/2000/svg" width="' . $sWidthValue . '" height="' . $sHeightValue . '"></svg>';
     149                    $sSrcsetDelimiter = $sSrcsetDelimiter ?: '"';
    149150                    $sNewSrcsetAttribute = 'srcset=' . $sSrcsetDelimiter . 'data:image/svg+xml;base64,' . \base64_encode($sSvgSrcset) . $sSrcsetDelimiter . ' data-' . $sSrcsetAttribute;
    150151                    $return = \str_replace($sSrcsetAttribute, $sNewSrcsetAttribute, $return);
  • jch-optimize/trunk/lib/src/Core/Html/FilesManager.php

    r2807121 r2824689  
    122122     */
    123123    private $fileUtils;
     124    /**
     125     * @var array Array to hold the previous match of a script with module/async/defer attribute
     126     */
     127    private static $prevDeferMatches = [];
     128    /**
     129     * @var int Current index of the defers array
     130     */
     131    private static $deferIndex = -1;
    124132    /**
    125133     * Private constructor, need to implement a singleton of this class
     
    392400        // different type is encountered
    393401        if ($this->hasAttributes($this->aMatch[0], ['type=module', 'nomodule'], $matches) || $this->hasAttributes($this->aMatch[0], ['async'], $matches) || $this->hasAttributes($this->aMatch[0], ['defer'], $matches)) {
    394             static $prevMatches = [];
    395             static $index = -1;
    396             if ($matches != $prevMatches) {
    397                 $index++;
    398                 $prevMatches = $matches;
    399             }
    400             $this->defers[$index][] = ['attribute' => $matches[0], 'script' => $this->aMatch[0], 'url' => $url];
     402            if ($matches != self::$prevDeferMatches) {
     403                self::$deferIndex++;
     404                self::$prevDeferMatches = $matches;
     405            }
     406            $this->defers[self::$deferIndex][] = ['attribute' => $matches[0], 'script' => $this->aMatch[0], 'url' => $url];
    401407            $this->bLoadJsAsync = \false;
    402408            $this->excludeJsIEO();
     
    495501            $this->excludeJsIEO();
    496502        }
     503        //Add all async, modules and nomodules to the defer array, incrementing the index each time a
     504        // different type is encountered. The defer attribute on inline scripts is ignored
     505        if ($this->hasAttributes($this->aMatch[0], ['type=module', 'nomodule'], $matches) || $this->hasAttributes($this->aMatch[0], ['async'], $matches)) {
     506            if ($matches != self::$prevDeferMatches) {
     507                self::$deferIndex++;
     508                self::$prevDeferMatches = $matches;
     509            }
     510            $this->defers[self::$deferIndex][] = ['attribute' => $matches[0], 'script' => $this->aMatch[0], 'content' => $content];
     511            $this->bLoadJsAsync = \false;
     512            $this->excludeJsIEO();
     513        }
    497514        //process PEO excludes for js scripts
    498515        if (Helper::findExcludes(@$this->aExcludes['excludes_peo']['js_script'], $content, 'js') || !$this->params->get('inlineScripts', '0') || $this->params->get('excludeAllScripts', '0')) {
  • jch-optimize/trunk/lib/src/Core/Html/Processor.php

    r2807121 r2824689  
    129129        $oJsContentElement->setNamesArray(array('script'));
    130130        //language=RegExp
    131         $oJsContentElement->addNegAttrCriteriaRegex('src|type==(?!(?>[\'"]?)(?:text|application)/javascript[\'"> ])');
     131        $oJsContentElement->addNegAttrCriteriaRegex('src|type==(?!(?>[\'"]?)(?:(?:text|application)/javascript|module)[\'"> ])');
    132132        $oJsContentElement->bCaptureContent = \true;
    133133        $oParser->addElementObject($oJsContentElement);
     
    207207            $sHtml = $this->getBodyHtml();
    208208            $sAboveFoldHtml = '';
    209             preg_replace_callback('#[^<]*+(?:<[0-9a-z]++[^>]*+>[^<]*+(?>(?>(<ul\\b[^>]*+>(?>[^<]*+<(?!ul)[^<]*+|(?1))*?</ul>[^<]*+)?)<[^0-9a-z][^<]*+)*+)#six', function ($m) use(&$sAboveFoldHtml) {
     209            preg_replace_callback('#[^<]*+(?:<[0-9a-z!]++[^>]*+>[^<]*+(?>(?>(<ul\\b[^>]*+>(?>[^<]*+<(?!ul)[^<]*+|(?1))*?</ul>[^<]*+)?)<[^0-9a-z][^<]*+)*+)#six', function ($m) use(&$sAboveFoldHtml) {
    210210                $sAboveFoldHtml .= $m[0];
    211             }, $sHtml, 100);
     211            }, $sHtml, 50);
    212212            $sBelowFoldHtml = \substr($sHtml, \strlen($sAboveFoldHtml));
    213213            try {
     
    453453            $element->addPosAttrCriteriaRegex('type==[\'"]?module');
    454454            $element->setCaptureAttributesArray(['src']);
     455            $element->setValueCriteriaRegex('(?=.)');
    455456            $parser->addElementObject($element);
    456457            return $parser->findMatches($this->getFullHtml(), PREG_PATTERN_ORDER);
  • jch-optimize/trunk/lib/src/Core/Http2Preload.php

    r2807121 r2824689  
    1616use JchOptimize\Core\Html\LinkBuilder;
    1717use JchOptimize\Core\Html\Processor;
     18use JchOptimize\Platform\Cache;
    1819use JchOptimize\Platform\Hooks;
    19 use JchOptimize\Platform\Utility;
    2020use _JchOptimizeVendor\Joomla\DI\ContainerAwareInterface;
    2121use _JchOptimizeVendor\Joomla\DI\ContainerAwareTrait;
     
    210210        //Let's make the default method 'link'
    211211        $method = 'link';
    212         if ($this->cdn->isFileOnCdn($RR_url) || Utility::isPageCacheEnabled($this->params, \true) && \JCH_PRO && $this->params->get('pro_capture_cache_enable', '1') && !$this->params->get('pro_cache_platform', '0')) {
     212        if ($this->cdn->isFileOnCdn($RR_url) || Cache::isPageCacheEnabled($this->params, \true) && \JCH_PRO && $this->params->get('pro_capture_cache_enable', '1') && !$this->params->get('pro_cache_platform', '0')) {
    213213            $method = 'html';
    214214        }
  • jch-optimize/trunk/lib/src/Core/Service/CachingProvider.php

    r2807121 r2824689  
    132132    {
    133133        $this->createCacheFolder();
     134        $params = $container->get('params');
    134135        //Use whichever lifetime is greater to ensure page cache expires before
    135         $pageCacheTtl = $container->get('params')->get('page_cache_lifetime', '900');
    136         $globalTtl = $container->get('params')->get('cache_lifetime', '900');
     136        $pageCacheTtl = $params->get('page_cache_lifetime', '900');
     137        $globalTtl = $params->get('cache_lifetime', '900');
    137138        $lifetime = max($pageCacheTtl, $globalTtl);
    138139        try {
     
    142143            $cache->getOptions()->setNamespace(Cache::getCacheNamespace())->setTtl($lifetime);
    143144            if ($cache instanceof PluginAwareInterface) {
    144                 $plugin = (new ClearExpiredByFactor())->setContainer($container);
    145                 $plugin->setLogger($container->get(LoggerInterface::class));
    146                 $plugin->getOptions()->setClearingFactor(100);
    147                 $cache->addPlugin($plugin);
     145                if ($params->get('delete_expiry', '1')) {
     146                    $plugin = (new ClearExpiredByFactor())->setContainer($container);
     147                    $plugin->setLogger($container->get(LoggerInterface::class));
     148                    $plugin->getOptions()->setClearingFactor(100);
     149                    $cache->addPlugin($plugin);
     150                }
    148151            }
    149152            //Let's make sure we can connect
  • jch-optimize/trunk/lib/src/Html/Renderer/Setting.php

    r2807121 r2824689  
    5353        echo Helper::_('select', __FUNCTION__, '1800', $aOptions);
    5454    }
     55    public static function delete_expiry()
     56    {
     57        echo Helper::_('radio', __FUNCTION__, '1');
     58    }
    5559    public static function html_minify_level()
    5660    {
     
    165169    }
    166170    public static function pro_criticalScripts()
     171    {
     172        echo Helper::_('multiselect.pro', __FUNCTION__, [], 'js', 'script');
     173    }
     174    public static function pro_criticalModules()
     175    {
     176        echo Helper::_('multiselect.pro', __FUNCTION__, [], 'js', 'file');
     177    }
     178    public static function pro_criticalModulesScripts()
    167179    {
    168180        echo Helper::_('multiselect.pro', __FUNCTION__, [], 'js', 'script');
  • jch-optimize/trunk/lib/src/Html/TabSettings.php

    r2807121 r2824689  
    5353             * Combine CSS JS
    5454             */
    55             'combineCssJsSection' => ['combine_files_enable' => [__('Enable', 'jch-optimize')], 'pro_smart_combine' => [__('Smart combine', 'jch-optimize'), __('Will try to combine system and template files together respectively that are consistent across pages. <p>This produces several smaller combined files promoting browser caching across page loads; reduces chances of excessive cache generation and takes advantages of better files delivery offered by Http/2 servers', 'jch-optimize')], 'cache_lifetime' => [__('Cache lifetime', 'jch-optimize'), __('The lifetime of the cache files generated by the plugin. <p>If you\'re using a Page Cache plugin be sure to set this higher than the lifetime set in Page Cache. <p>If you\'re having issue with excess amount of cache being generated then lowering this setting will help.', 'jch-optimize')], 'html_minify_level' => [__('HTML Minification level', 'jch-optimize'), __('If \'Minify HTML\' is enabled, this will determine the level of minification. The incremental changes per level are as follows: <dl><dt>Basic - </dt><dd>Adjoining whitespaces outside of elements are reduced to one whitespace, HTML comments preserved;</dd><dt>Advanced - </dt><dd>Remove HTML comments, whitespace around block elements and undisplayed elements, Remove unnecessary whitespaces inside of elements and around their attributes;</dd> <dt>Ultra -</dt> <dd>Remove redundant attributes, for example, \'text/javascript\', and remove quotes from around selected attributes (HTML5)</dd> </dl>', 'jch-optimize')], 'htaccess' => [__('Combined files delivery', 'jch-optimize'), __('By default, the combined files will be loaded as static CSS and JavaScript files. You would need to include directives in your .htaccess file to gzip these files. <p>You can use PHP files instead that will be gzipped if that option is set. PHP files can be loaded with a query attached with the information to find the combined files, or you can use url rewrite if it\'s available on the server so the files can be masked as static files. If your server prohibits the use of the Options +FollowSymLinks directive in .htaccess files use the respective option.', 'jch-optimize')], 'try_catch' => [__('Use try-catch', 'jch-optimize'), __('If you\'re seeing JavaScript errors in the console, you can try enabling this option to wrap each JavaScript file in a \'try-catch\' block to prevent the errors from one file affecting the combined file.', 'jch-optimize')]],
     55            'combineCssJsSection' => ['combine_files_enable' => [__('Enable', 'jch-optimize')], 'pro_smart_combine' => [__('Smart combine', 'jch-optimize'), __('Will try to combine system and template files together respectively that are consistent across pages. <p>This produces several smaller combined files promoting browser caching across page loads; reduces chances of excessive cache generation and takes advantages of better files delivery offered by Http/2 servers', 'jch-optimize')], 'cache_lifetime' => [__('Cache lifetime', 'jch-optimize'), __('The lifetime of the cache files generated by the plugin. <p>If you\'re using a Page Cache plugin be sure to set this higher than the lifetime set in Page Cache. <p>If you\'re having issue with excess amount of cache being generated then lowering this setting will help.', 'jch-optimize')], 'delete_expiry' => [__('Delete expired cache', 'jch-optimize'), __('JCH Optimize will delete cached files when they\'re expired to prevent an excess build-up of cache files on the server. <p> If you\'re using another page cache plugin, you may want to disable this to avoid having orphaned links to CSS or JavaScript files cached on the pages.')], 'html_minify_level' => [__('HTML Minification level', 'jch-optimize'), __('If \'Minify HTML\' is enabled, this will determine the level of minification. The incremental changes per level are as follows: <dl><dt>Basic - </dt><dd>Adjoining whitespaces outside of elements are reduced to one whitespace, HTML comments preserved;</dd><dt>Advanced - </dt><dd>Remove HTML comments, whitespace around block elements and undisplayed elements, Remove unnecessary whitespaces inside of elements and around their attributes;</dd> <dt>Ultra -</dt> <dd>Remove redundant attributes, for example, \'text/javascript\', and remove quotes from around selected attributes (HTML5)</dd> </dl>', 'jch-optimize')], 'htaccess' => [__('Combined files delivery', 'jch-optimize'), __('By default, the combined files will be loaded as static CSS and JavaScript files. You would need to include directives in your .htaccess file to gzip these files. <p>You can use PHP files instead that will be gzipped if that option is set. PHP files can be loaded with a query attached with the information to find the combined files, or you can use url rewrite if it\'s available on the server so the files can be masked as static files. If your server prohibits the use of the Options +FollowSymLinks directive in .htaccess files use the respective option.', 'jch-optimize')], 'try_catch' => [__('Use try-catch', 'jch-optimize'), __('If you\'re seeing JavaScript errors in the console, you can try enabling this option to wrap each JavaScript file in a \'try-catch\' block to prevent the errors from one file affecting the combined file.', 'jch-optimize')]],
    5656            /**
    5757             *Combine Css Js Auto Settings
     
    9696             * Reduce Unused JavaScript
    9797             */
    98             'reduceUnusedJavascriptSection' => ['pro_reduce_unused_js_enable' => [__('Enable', 'jch-optimize')], 'pro_criticalJs' => [__('Critical JavaScript files', 'jch-optimize'), __('Select any files required to perform initial render to exclude from the Reduce Unused JavaScript feature.', 'jch-optimize')], 'pro_criticalScripts' => [__('Critical scripts', 'jch-optimize'), __('Enter any substring of any scripts here that you need to perform any initial render.', 'jch-optimize')]],
     98            'reduceUnusedJavascriptSection' => ['pro_reduce_unused_js_enable' => [__('Enable', 'jch-optimize')], 'pro_criticalJs' => [__('Critical JavaScript files', 'jch-optimize'), __('Select any files required to perform initial render to exclude from the Reduce Unused JavaScript feature.', 'jch-optimize')], 'pro_criticalScripts' => [__('Critical scripts', 'jch-optimize'), __('Enter any substring of any scripts here that you need to perform any initial render.', 'jch-optimize')], 'pro_criticalModules' => [__('Critical modules', 'jch-optimize'), __('If your critical scripts you have added above is using any modules you may want to enter them here to exclude them from being dynamically loaded into the DOM.')], 'pro_criticalModulesScripts' => [__('Critical inline modules', 'jch-optimize'), __('You can exclude inline modules in a similar manner as outlined above.')]],
    9999            /**
    100100             * Exclude Preserving Execution Order
  • jch-optimize/trunk/lib/vendor/composer/installed.php

    r2807121 r2824689  
    33namespace _JchOptimizeVendor;
    44
    5 return array('root' => array('pretty_version' => 'dev-master', 'version' => 'dev-master', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'reference' => '7740a4d324f5b843fcd7323f8759ac8723d44f23', 'name' => 'jchoptimize/wordpress-platform', 'dev' => \false), 'versions' => array('codealfa/minify' => array('pretty_version' => '1.0.2', 'version' => '1.0.2.0', 'type' => 'library', 'install_path' => __DIR__ . '/../codealfa/minify', 'aliases' => array(), 'reference' => '2ab712ecf94ac7af1aa11a41c83b7287defc5f8c', 'dev_requirement' => \false), 'codealfa/regextokenizer' => array('pretty_version' => 'dev-filesmanager', 'version' => 'dev-filesmanager', 'type' => 'library', 'install_path' => __DIR__ . '/../codealfa/regextokenizer', 'aliases' => array(), 'reference' => 'e7b6fb3d6d6fbd3f501d86aea6d10ca7f473684e', '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' => '5f7f80cfc25e2e435f960e8ca178aeb9f786ae65', 'dev_requirement' => \false), 'container-interop/container-interop' => array('pretty_version' => '1.2.0', 'version' => '1.2.0.0', 'type' => 'library', 'install_path' => __DIR__ . '/../container-interop/container-interop', 'aliases' => array(), 'reference' => '79cbf1341c22ec75643d841642dd5d6acd83bdb8', 'dev_requirement' => \false), 'container-interop/container-interop-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '^1.2')), 'doctrine/inflector' => array('pretty_version' => '2.1.x-dev', 'version' => '2.1.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../doctrine/inflector', 'aliases' => array(), 'reference' => '3249de584daab089c823ddc3f8efb108cee85a10', 'dev_requirement' => \false), 'illuminate/container' => array('pretty_version' => '7.x-dev', 'version' => '7.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/container', 'aliases' => array(), 'reference' => '06456a2ea5656c2f1ebda37039ce14c1bfc973b3', 'dev_requirement' => \false), 'illuminate/contracts' => array('pretty_version' => '7.x-dev', 'version' => '7.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/contracts', 'aliases' => array(), 'reference' => '2449f2ea949ddf995a3dcffe5e21c768cf7d6478', 'dev_requirement' => \false), 'illuminate/events' => array('pretty_version' => '7.x-dev', 'version' => '7.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/events', 'aliases' => array(), 'reference' => '6f64db49dbfd490c6e30c983964543a054882faf', 'dev_requirement' => \false), 'illuminate/filesystem' => array('pretty_version' => '7.x-dev', 'version' => '7.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/filesystem', 'aliases' => array(), 'reference' => '2013f94a3a7dff008be54884774548e3c222c3e8', 'dev_requirement' => \false), 'illuminate/support' => array('pretty_version' => '7.x-dev', 'version' => '7.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/support', 'aliases' => array(), 'reference' => 'c7b42acd009c94a3f8b749a65f6835db90174d58', 'dev_requirement' => \false), 'illuminate/view' => array('pretty_version' => '7.x-dev', 'version' => '7.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/view', 'aliases' => array(), 'reference' => '098e583d43c8fd1d3505ed83b2d54a31ce20bcdb', 'dev_requirement' => \false), 'jchoptimize/wordpress-platform' => array('pretty_version' => 'dev-master', 'version' => 'dev-master', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'reference' => '7740a4d324f5b843fcd7323f8759ac8723d44f23', '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' => '7618deb7f8454f593970b33dcff9f14bf0afbceb', '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' => '5298258e982033afb23da21d2149ee6dfc374e24', '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' => '137ca3f8925c4529a113735404b873fad0a1305f', 'dev_requirement' => \false), 'joomla/http' => array('pretty_version' => 'dev-2.0-dev', 'version' => 'dev-2.0-dev', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/http', 'aliases' => array(0 => '2.0.x-dev'), 'reference' => 'e277a136f357896161ad41ac7bcada3f43fac04f', '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' => '147229d2e0c5ac7db6f972d19c9faa922575e5c2', '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' => '3b57f8a380fa5cd9f7a6d0a30e9e9c9446511998', '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' => '610ebc46259c3c2ff0283545862a5525a1159b2a', 'dev_requirement' => \false), 'joomla/renderer' => array('pretty_version' => '2.0.0', 'version' => '2.0.0.0', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/renderer', 'aliases' => array(), 'reference' => '482896d9b10a3a17bf87cbb531d2ebfb463a3df7', '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' => '9d60fbfbed56aff4b1afe0203237f2ba0e001894', 'dev_requirement' => \false), 'joomla/uri' => array('pretty_version' => 'dev-2.0-dev', 'version' => 'dev-2.0-dev', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/uri', 'aliases' => array(0 => '2.0.x-dev'), 'reference' => '755f1cf80e2463d9a162563e607154c64083184b', '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' => '5b4b6e3cc9fcbb19feca987860a8d4217e060f84', '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' => '1f650fe9a970703e569c79e41f97d123acfacc66', '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' => '0e640a402f9555a1a482f7dd5415c579f79c7d97', 'dev_requirement' => \false), 'laminas/laminas-cache-storage-adapter-blackhole' => array('pretty_version' => '2.1.x-dev', 'version' => '2.1.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-cache-storage-adapter-blackhole', 'aliases' => array(), 'reference' => '74fe2bade28dacc49c7f9265dd30a0886604fb8f', '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' => '74a36a029c31199fdbef905398881737ee0d3cd9', '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' => 'e67cfcb4e9ccca19890e6737262b91c1904f68da', '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-adapter-wincache' => array('pretty_version' => '1.1.x-dev', 'version' => '1.1.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-cache-storage-adapter-wincache', 'aliases' => array(), 'reference' => '63835697f3c7cc3de551a54175ab77decff111aa', 'dev_requirement' => \false), 'laminas/laminas-cache-storage-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.0')), 'laminas/laminas-diactoros' => array('pretty_version' => '2.12.x-dev', 'version' => '2.12.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-diactoros', 'aliases' => array(), 'reference' => '2b8806080a2bcbe9c59e7aff120fcbb9e346a8a7', 'dev_requirement' => \false), 'laminas/laminas-eventmanager' => array('pretty_version' => '3.4.x-dev', 'version' => '3.4.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-eventmanager', 'aliases' => array(), 'reference' => '63106a624bfdcc2a17c515188760ab1ffda37fc8', 'dev_requirement' => \false), 'laminas/laminas-json' => array('pretty_version' => '3.4.x-dev', 'version' => '3.4.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-json', 'aliases' => array(), 'reference' => '9874aa22a5d060ff51aa04978fc0e788441ffeea', '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.7.x-dev', 'version' => '3.7.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-servicemanager', 'aliases' => array(), 'reference' => '89152f8ebb149a42bedfaf321ae77c03262104b0', 'dev_requirement' => \false), 'laminas/laminas-stdlib' => array('pretty_version' => '3.11.x-dev', 'version' => '3.11.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-stdlib', 'aliases' => array(), 'reference' => 'bba0920ee8ec88d90de77ba4c647f59102ccf3c1', 'dev_requirement' => \false), 'laminas/laminas-zendframework-bridge' => array('pretty_version' => '1.4.x-dev', 'version' => '1.4.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-zendframework-bridge', 'aliases' => array(), 'reference' => '88bf037259869891afce6504cacc4f8a07b24d0f', 'dev_requirement' => \false), 'nesbot/carbon' => array('pretty_version' => 'dev-master', 'version' => 'dev-master', 'type' => 'library', 'install_path' => __DIR__ . '/../nesbot/carbon', 'aliases' => array(0 => '2.x-dev'), 'reference' => '88ac19cad69487d9345b65023f580920667d17de', '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.1.x-dev', 'version' => '1.1.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/container', 'aliases' => array(), 'reference' => '8622567409010282b7aeebe4bb841fe98b58dcaf', 'dev_requirement' => \false), 'psr/container-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.0', 1 => '~1.0', 2 => '^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' => '22b2ef5687f43679481615605d7a15c557ce85b1', 'dev_requirement' => \false), 'psr/http-factory' => array('pretty_version' => 'dev-master', 'version' => 'dev-master', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/http-factory', 'aliases' => array(0 => '1.0.x-dev'), 'reference' => '36fa03d50ff82abcae81860bdaf4ed9a1510c7cd', 'dev_requirement' => \false), 'psr/http-factory-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.0')), 'psr/http-message' => array('pretty_version' => 'dev-master', 'version' => 'dev-master', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/http-message', 'aliases' => array(0 => '1.0.x-dev'), 'reference' => 'efd67d1dc14a7ef4fc4e518e7dee91c271d524e4', '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')), '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' => 'e8b495ea28c1d97b5e0c121748d6f9b53d075c66', 'dev_requirement' => \false), 'symfony/finder' => array('pretty_version' => '5.4.x-dev', 'version' => '5.4.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/finder', 'aliases' => array(), 'reference' => '9b630f3427f3ebe7cd346c277a1408b00249dad9', 'dev_requirement' => \false), 'symfony/polyfill-mbstring' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-mbstring', 'aliases' => array(0 => '1.26.x-dev'), 'reference' => '9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e', 'dev_requirement' => \false), 'symfony/polyfill-php80' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-php80', 'aliases' => array(0 => '1.26.x-dev'), 'reference' => 'cfa0ae98841b9e461207c13ab093d76b0fa7bace', 'dev_requirement' => \false), 'symfony/translation' => array('pretty_version' => '5.4.x-dev', 'version' => '5.4.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/translation', 'aliases' => array(), 'reference' => '1639abc1177d26bcd4320e535e664cef067ab0ca', 'dev_requirement' => \false), 'symfony/translation-contracts' => array('pretty_version' => '2.5.x-dev', 'version' => '2.5.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/translation-contracts', 'aliases' => array(), 'reference' => '1211df0afa701e45a04253110e959d4af4ef0f07', 'dev_requirement' => \false), 'symfony/translation-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '2.3')), 'voku/portable-ascii' => array('pretty_version' => '1.6.1', 'version' => '1.6.1.0', 'type' => 'library', 'install_path' => __DIR__ . '/../voku/portable-ascii', 'aliases' => array(), 'reference' => '87337c91b9dfacee02452244ee14ab3c43bc485a', '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), 'zendframework/zend-servicemanager' => array('dev_requirement' => \false, 'replaced' => array(0 => '^3.4.0'))));
     5return array('root' => array('pretty_version' => 'dev-master', 'version' => 'dev-master', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'reference' => '7f2599fd71cea32f94a7692d35e748ea2d8ed801', 'name' => 'jchoptimize/wordpress-platform', 'dev' => \false), 'versions' => array('codealfa/minify' => array('pretty_version' => '1.0.2', 'version' => '1.0.2.0', 'type' => 'library', 'install_path' => __DIR__ . '/../codealfa/minify', 'aliases' => array(), 'reference' => '2ab712ecf94ac7af1aa11a41c83b7287defc5f8c', 'dev_requirement' => \false), 'codealfa/regextokenizer' => array('pretty_version' => 'dev-filesmanager', 'version' => 'dev-filesmanager', 'type' => 'library', 'install_path' => __DIR__ . '/../codealfa/regextokenizer', 'aliases' => array(), 'reference' => 'e7b6fb3d6d6fbd3f501d86aea6d10ca7f473684e', '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' => '5f7f80cfc25e2e435f960e8ca178aeb9f786ae65', 'dev_requirement' => \false), 'container-interop/container-interop' => array('pretty_version' => '1.2.0', 'version' => '1.2.0.0', 'type' => 'library', 'install_path' => __DIR__ . '/../container-interop/container-interop', 'aliases' => array(), 'reference' => '79cbf1341c22ec75643d841642dd5d6acd83bdb8', 'dev_requirement' => \false), 'container-interop/container-interop-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '^1.2')), 'doctrine/inflector' => array('pretty_version' => '2.1.x-dev', 'version' => '2.1.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../doctrine/inflector', 'aliases' => array(), 'reference' => '3249de584daab089c823ddc3f8efb108cee85a10', 'dev_requirement' => \false), 'illuminate/container' => array('pretty_version' => '7.x-dev', 'version' => '7.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/container', 'aliases' => array(), 'reference' => '06456a2ea5656c2f1ebda37039ce14c1bfc973b3', 'dev_requirement' => \false), 'illuminate/contracts' => array('pretty_version' => '7.x-dev', 'version' => '7.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/contracts', 'aliases' => array(), 'reference' => '2449f2ea949ddf995a3dcffe5e21c768cf7d6478', 'dev_requirement' => \false), 'illuminate/events' => array('pretty_version' => '7.x-dev', 'version' => '7.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/events', 'aliases' => array(), 'reference' => '6f64db49dbfd490c6e30c983964543a054882faf', 'dev_requirement' => \false), 'illuminate/filesystem' => array('pretty_version' => '7.x-dev', 'version' => '7.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/filesystem', 'aliases' => array(), 'reference' => '2013f94a3a7dff008be54884774548e3c222c3e8', 'dev_requirement' => \false), 'illuminate/support' => array('pretty_version' => '7.x-dev', 'version' => '7.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/support', 'aliases' => array(), 'reference' => 'c7b42acd009c94a3f8b749a65f6835db90174d58', 'dev_requirement' => \false), 'illuminate/view' => array('pretty_version' => '7.x-dev', 'version' => '7.9999999.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/view', 'aliases' => array(), 'reference' => '098e583d43c8fd1d3505ed83b2d54a31ce20bcdb', 'dev_requirement' => \false), 'jchoptimize/wordpress-platform' => array('pretty_version' => 'dev-master', 'version' => 'dev-master', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'reference' => '7f2599fd71cea32f94a7692d35e748ea2d8ed801', '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' => '7618deb7f8454f593970b33dcff9f14bf0afbceb', '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' => '5298258e982033afb23da21d2149ee6dfc374e24', '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' => '137ca3f8925c4529a113735404b873fad0a1305f', 'dev_requirement' => \false), 'joomla/http' => array('pretty_version' => 'dev-2.0-dev', 'version' => 'dev-2.0-dev', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/http', 'aliases' => array(0 => '2.0.x-dev'), 'reference' => 'e277a136f357896161ad41ac7bcada3f43fac04f', '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' => '147229d2e0c5ac7db6f972d19c9faa922575e5c2', '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' => '3b57f8a380fa5cd9f7a6d0a30e9e9c9446511998', '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' => '610ebc46259c3c2ff0283545862a5525a1159b2a', 'dev_requirement' => \false), 'joomla/renderer' => array('pretty_version' => '2.0.0', 'version' => '2.0.0.0', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/renderer', 'aliases' => array(), 'reference' => '482896d9b10a3a17bf87cbb531d2ebfb463a3df7', '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' => '9d60fbfbed56aff4b1afe0203237f2ba0e001894', 'dev_requirement' => \false), 'joomla/uri' => array('pretty_version' => 'dev-2.0-dev', 'version' => 'dev-2.0-dev', 'type' => 'joomla-package', 'install_path' => __DIR__ . '/../joomla/uri', 'aliases' => array(0 => '2.0.x-dev'), 'reference' => '755f1cf80e2463d9a162563e607154c64083184b', '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' => '5b4b6e3cc9fcbb19feca987860a8d4217e060f84', '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' => '1f650fe9a970703e569c79e41f97d123acfacc66', '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' => '0e640a402f9555a1a482f7dd5415c579f79c7d97', 'dev_requirement' => \false), 'laminas/laminas-cache-storage-adapter-blackhole' => array('pretty_version' => '2.1.x-dev', 'version' => '2.1.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-cache-storage-adapter-blackhole', 'aliases' => array(), 'reference' => '74fe2bade28dacc49c7f9265dd30a0886604fb8f', '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' => '74a36a029c31199fdbef905398881737ee0d3cd9', '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' => 'e67cfcb4e9ccca19890e6737262b91c1904f68da', '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-adapter-wincache' => array('pretty_version' => '1.1.x-dev', 'version' => '1.1.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-cache-storage-adapter-wincache', 'aliases' => array(), 'reference' => '63835697f3c7cc3de551a54175ab77decff111aa', 'dev_requirement' => \false), 'laminas/laminas-cache-storage-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.0')), 'laminas/laminas-diactoros' => array('pretty_version' => '2.12.x-dev', 'version' => '2.12.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-diactoros', 'aliases' => array(), 'reference' => '2b8806080a2bcbe9c59e7aff120fcbb9e346a8a7', 'dev_requirement' => \false), 'laminas/laminas-eventmanager' => array('pretty_version' => '3.4.x-dev', 'version' => '3.4.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-eventmanager', 'aliases' => array(), 'reference' => '63106a624bfdcc2a17c515188760ab1ffda37fc8', 'dev_requirement' => \false), 'laminas/laminas-json' => array('pretty_version' => '3.4.x-dev', 'version' => '3.4.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-json', 'aliases' => array(), 'reference' => '9874aa22a5d060ff51aa04978fc0e788441ffeea', '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.7.x-dev', 'version' => '3.7.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-servicemanager', 'aliases' => array(), 'reference' => '89152f8ebb149a42bedfaf321ae77c03262104b0', 'dev_requirement' => \false), 'laminas/laminas-stdlib' => array('pretty_version' => '3.11.x-dev', 'version' => '3.11.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-stdlib', 'aliases' => array(), 'reference' => 'bba0920ee8ec88d90de77ba4c647f59102ccf3c1', 'dev_requirement' => \false), 'laminas/laminas-zendframework-bridge' => array('pretty_version' => '1.4.x-dev', 'version' => '1.4.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-zendframework-bridge', 'aliases' => array(), 'reference' => '88bf037259869891afce6504cacc4f8a07b24d0f', 'dev_requirement' => \false), 'nesbot/carbon' => array('pretty_version' => 'dev-master', 'version' => 'dev-master', 'type' => 'library', 'install_path' => __DIR__ . '/../nesbot/carbon', 'aliases' => array(0 => '2.x-dev'), 'reference' => '88ac19cad69487d9345b65023f580920667d17de', '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.1.x-dev', 'version' => '1.1.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/container', 'aliases' => array(), 'reference' => '8622567409010282b7aeebe4bb841fe98b58dcaf', 'dev_requirement' => \false), 'psr/container-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.0', 1 => '~1.0', 2 => '^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' => '22b2ef5687f43679481615605d7a15c557ce85b1', 'dev_requirement' => \false), 'psr/http-factory' => array('pretty_version' => 'dev-master', 'version' => 'dev-master', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/http-factory', 'aliases' => array(0 => '1.0.x-dev'), 'reference' => '36fa03d50ff82abcae81860bdaf4ed9a1510c7cd', 'dev_requirement' => \false), 'psr/http-factory-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.0')), 'psr/http-message' => array('pretty_version' => 'dev-master', 'version' => 'dev-master', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/http-message', 'aliases' => array(0 => '1.0.x-dev'), 'reference' => 'efd67d1dc14a7ef4fc4e518e7dee91c271d524e4', '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')), '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' => 'e8b495ea28c1d97b5e0c121748d6f9b53d075c66', 'dev_requirement' => \false), 'symfony/finder' => array('pretty_version' => '5.4.x-dev', 'version' => '5.4.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/finder', 'aliases' => array(), 'reference' => '9b630f3427f3ebe7cd346c277a1408b00249dad9', 'dev_requirement' => \false), 'symfony/polyfill-mbstring' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-mbstring', 'aliases' => array(0 => '1.26.x-dev'), 'reference' => '9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e', 'dev_requirement' => \false), 'symfony/polyfill-php80' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-php80', 'aliases' => array(0 => '1.26.x-dev'), 'reference' => 'cfa0ae98841b9e461207c13ab093d76b0fa7bace', 'dev_requirement' => \false), 'symfony/translation' => array('pretty_version' => '5.4.x-dev', 'version' => '5.4.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/translation', 'aliases' => array(), 'reference' => '1639abc1177d26bcd4320e535e664cef067ab0ca', 'dev_requirement' => \false), 'symfony/translation-contracts' => array('pretty_version' => '2.5.x-dev', 'version' => '2.5.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/translation-contracts', 'aliases' => array(), 'reference' => '1211df0afa701e45a04253110e959d4af4ef0f07', 'dev_requirement' => \false), 'symfony/translation-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '2.3')), 'voku/portable-ascii' => array('pretty_version' => '1.6.1', 'version' => '1.6.1.0', 'type' => 'library', 'install_path' => __DIR__ . '/../voku/portable-ascii', 'aliases' => array(), 'reference' => '87337c91b9dfacee02452244ee14ab3c43bc485a', '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), 'zendframework/zend-servicemanager' => array('dev_requirement' => \false, 'replaced' => array(0 => '^3.4.0'))));
  • jch-optimize/trunk/media/assets/jscss.php

    r2748708 r2824689  
    4242wp_register_plugin_realpath( $plugin );
    4343
    44 require_once( $plugin );
     44define( '_WP_EXEC', '1' );
    4545
     46define( 'JCH_PLUGIN_FILE', $plugin );
     47
     48define( 'JCH_PLUGIN_URL', plugin_dir_url( JCH_PLUGIN_FILE ) );
     49define( 'JCH_PLUGIN_DIR', plugin_dir_path( JCH_PLUGIN_FILE ) );
     50define( 'JCH_CACHE_DIR', WP_CONTENT_DIR . '/cache/jch-optimize/' );
     51define( 'JCH_CACHE_URL', content_url() . '/cache/jch-optimize/' );
     52
     53$pluginDir = dirname( $plugin );
     54
     55require_once $pluginDir . '/autoload.php';
    4656
    4757try
  • jch-optimize/trunk/readme.txt

    r2807121 r2824689  
    33Contributors: codealfa
    44Tags: performance, pagespeed, cache, optimize, seo
    5 Tested up to: 6.0.3
    6 Stable tag: 3.2.0
     5Tested up to: 6.1.1
     6Stable tag: 3.2.1
    77License: GPLv3 or later
    88Requires at least: 5.0
     
    8181
    8282== Changelog ==
     83
     84= 3.2.1 =
     85* Added setting to optionally disable deletion of expired cache.
     86* Added settings for excluding critical modules in Reduce Unused JavaScript. [Pro version only]
     87* Bug fix: Some external domains were not being preconnected when Optimize Fonts is enabled. [Pro version only]
     88* Bug fix: Imported Google fonts were not being handled properly. [Pro version only]
     89* Bug fix: Reduce Unused JavaScript wasn't working properly on some sites. [Pro version only]
     90
    8391= 3.2.0 =
    8492* Improve method to generate cache key for Optimize CSS Delivery feature to prevent excess generating of cache.
  • jch-optimize/trunk/version.php

    r2807121 r2824689  
    1515defined( '_JCH_EXEC' ) or die;
    1616
    17 const JCH_VERSION  = '3.2.0';
    18 const JCH_DATE     = '2022-10-29';
     17const JCH_VERSION  = '3.2.1';
     18const JCH_DATE     = '2022-11-26';
    1919const JCH_PRO      = '0';
    2020const JCH_DEVELOP  = '0';
Note: See TracChangeset for help on using the changeset viewer.