Plugin Directory

Changeset 3150434


Ignore:
Timestamp:
09/12/2024 05:40:28 AM (17 months ago)
Author:
shakee93
Message:

Update to version 2.3.2 from GitHub

Location:
unusedcss
Files:
54 added
50 deleted
32 edited
1 copied

Legend:

Unmodified
Added
Removed
  • unusedcss/tags/2.3.2/constants.php

    r3150033 r3150434  
    2626
    2727if ( ! defined( 'UUCSS_VERSION' ) ) {
    28     define( 'UUCSS_VERSION', '2.3.1' );
     28    define( 'UUCSS_VERSION', '2.3.2' );
    2929}
    3030
  • unusedcss/tags/2.3.2/includes/RapidLoad_Base.php

    r3150033 r3150434  
    609609            'uucss_enable_page_optimizer' => "1",
    610610            'rapidload_test_mode' => "1",
    611             'rapidload_cpcss_file_character_length' => 300000
     611            'rapidload_cpcss_file_character_length' => 0,
     612            'uucss_adaptive_image_delivery' => "1",
    612613        ];
    613614    }
  • unusedcss/tags/2.3.2/includes/RapidLoad_Utils.php

    r3150033 r3150434  
    765765        return ($string == serialize(false) || @unserialize($string) !== false);
    766766    }
     767
     768    public static function debug_log($object){
     769
     770        if(gettype($object) == "string"){
     771            error_log($object);
     772        }else{
     773            error_log(json_encode($object, JSON_PRETTY_PRINT));
     774        }
     775
     776    }
    767777}
  • unusedcss/tags/2.3.2/includes/admin/RapidLoad_Admin_Bar.php

    r3150033 r3150434  
    5353
    5454        //$package = "https://unpkg.com/@rapidload/page-optimizer@{$tag}/dist";
    55         $package = UUCSS_PLUGIN_URL . 'includes/admin/page-optimizer/dist';
    56 
    57         /*if (defined('RAPIDLOAD_DEV_MODE')) {
    58             $package = UUCSS_PLUGIN_URL . 'includes/admin/page-optimizer/dist';
    59         }*/
     55
     56        $optimizer_path = 'includes/admin/page-optimizer/dist';
    6057
    6158        $debug_titan = apply_filters('rapidload/titan/debug', false);
    6259
    6360        if ($debug_titan) {
    64             $package .= '-debug';
    65         }
    66 
    67         //wp_enqueue_style( 'rapidload_page_optimizer', $package .  '/assets/index.css',[],UUCSS_VERSION);
    68 
    69         wp_register_script( 'rapidload_page_optimizer', $package .  '/assets/index.js',[], UUCSS_VERSION . (defined('RAPIDLOAD_PLUGIN_COMMIT_ID') ? '-' . RAPIDLOAD_PLUGIN_COMMIT_ID : ''));
     61            $optimizer_path .= '-debug';
     62        }
     63
     64
     65        $package = UUCSS_PLUGIN_URL . $optimizer_path;
     66
     67        $asset_map_file = RAPIDLOAD_PLUGIN_DIR . '/' . $optimizer_path . '/asset-map.php';
     68        $indexJS = '/assets/index.js';
     69        $indexCSS = '/assets/index.css';
     70
     71        if (file_exists($asset_map_file)) {
     72            include_once($asset_map_file);
     73            if (defined('RAPIDLOAD_ASSET_MAP')) {
     74                $indexJS = isset(RAPIDLOAD_ASSET_MAP['assets/index.js']) ? RAPIDLOAD_ASSET_MAP['assets/index.js'] : $indexJS;
     75                $indexCSS = isset(RAPIDLOAD_ASSET_MAP['assets/index.css']) ? RAPIDLOAD_ASSET_MAP['assets/index.css'] : $indexCSS;
     76            }
     77        }
     78
     79        $indexJS = '/' . ltrim($indexJS, '/');
     80        $indexCSS = '/' . ltrim($indexCSS, '/');
     81
     82        wp_register_script( 'rapidload_page_optimizer', $package . $indexJS,[], UUCSS_VERSION);
    7083
    7184        $current_url = isset($_SERVER['REQUEST_URI']) ? home_url($_SERVER['REQUEST_URI']) : $this->get_current_url();
     
    7689
    7790        $data = array(
    78             'titan_stylesheet_url' => $package .  '/assets/index.css',
     91            'titan_stylesheet_url' => $package .  $indexCSS,
    7992            'load_optimizer' => !(is_admin() && $page === 'rapidload'),
    8093            'page_optimizer_package_base' => $package,
  • unusedcss/tags/2.3.2/includes/admin/RapidLoad_htaccess.php

    r3150033 r3150434  
    342342            'server' => 'apache',
    343343            'has_rapidload_rules' => $has_rapidload_rules,
    344             'status' => 'success',
     344            'status' => $has_rapidload_rules ? 'success' : 'failed',
    345345            'error' => [
    346346                'code' => null,
  • unusedcss/tags/2.3.2/includes/admin/page-optimizer/dist-debug/index.html

    r3150033 r3150434  
    1313        page_optimizer_package_base: window.location.origin,
    1414        rapidload_version: '2.2.26',
    15         optimizer_url : 'https://rapidload.io/',
    16         ajax_url : 'https://rapidload.local/wp-admin/admin-ajax.php',
     15        optimizer_url : '%VITE_OPTIMIZER_URL%',
     16        ajax_url : '%VITE_SERVER_ROOT%wp-admin/admin-ajax.php',
    1717        api_root: '%VITE_API_ROOT%/api/v1'.includes('VITE') ? 'https://api.rapidload.io/api/v1' : '%VITE_API_ROOT%/api/v1'
    1818      };
     
    122122    <script>
    123123(function(){
    124 var preloads = [{"parentTagName":"head","tagName":"link","attrs":{"rel":"manifest","href":"/manifest.webmanifest"}},{"parentTagName":"head","tagName":"script","attrs":{"type":"module","crossorigin":"","src":"/assets/index.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"modulepreload","crossorigin":"","href":"/assets/core-vendor.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"modulepreload","crossorigin":"","href":"/assets/vendor.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"modulepreload","crossorigin":"","href":"/assets/animations.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"stylesheet","crossorigin":"","href":"/assets/index2.css"}}];
     124var preloads = [{"parentTagName":"head","tagName":"link","attrs":{"rel":"manifest","href":"/manifest.webmanifest"}},{"parentTagName":"head","tagName":"script","attrs":{"type":"module","crossorigin":"","src":"/assets/index.BX9eDSbV.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"modulepreload","crossorigin":"","href":"/assets/core-vendor.a21Wwx5s.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"modulepreload","crossorigin":"","href":"/assets/vendor.C2Ge5RaU.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"modulepreload","crossorigin":"","href":"/assets/animations.CWk52Myu.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"stylesheet","crossorigin":"","href":"/assets/index.DHPscgfg.css"}}];
    125125function setAttribute(target, attrs) {
    126126for (var key in attrs) {
  • unusedcss/tags/2.3.2/includes/admin/page-optimizer/dist/index.html

    r3150033 r3150434  
    1313        page_optimizer_package_base: window.location.origin,
    1414        rapidload_version: '2.2.26',
    15         optimizer_url : 'https://rapidload.io/',
    16         ajax_url : 'https://rapidload.local/wp-admin/admin-ajax.php',
     15        optimizer_url : '%VITE_OPTIMIZER_URL%',
     16        ajax_url : '%VITE_SERVER_ROOT%wp-admin/admin-ajax.php',
    1717        api_root: '%VITE_API_ROOT%/api/v1'.includes('VITE') ? 'https://api.rapidload.io/api/v1' : '%VITE_API_ROOT%/api/v1'
    1818      };
     
    122122    <script>
    123123(function(){
    124 var preloads = [{"parentTagName":"head","tagName":"link","attrs":{"rel":"manifest","href":"/manifest.webmanifest"}},{"parentTagName":"head","tagName":"script","attrs":{"type":"module","crossorigin":"","src":"/assets/index.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"modulepreload","crossorigin":"","href":"/assets/core-vendor.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"modulepreload","crossorigin":"","href":"/assets/vendor.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"modulepreload","crossorigin":"","href":"/assets/animations.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"stylesheet","crossorigin":"","href":"/assets/index2.css"}}];
     124var preloads = [{"parentTagName":"head","tagName":"link","attrs":{"rel":"manifest","href":"/manifest.webmanifest"}},{"parentTagName":"head","tagName":"script","attrs":{"type":"module","crossorigin":"","src":"/assets/index.BX9eDSbV.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"modulepreload","crossorigin":"","href":"/assets/core-vendor.a21Wwx5s.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"modulepreload","crossorigin":"","href":"/assets/vendor.C2Ge5RaU.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"modulepreload","crossorigin":"","href":"/assets/animations.CWk52Myu.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"stylesheet","crossorigin":"","href":"/assets/index.DHPscgfg.css"}}];
    125125function setAttribute(target, attrs) {
    126126for (var key in attrs) {
  • unusedcss/tags/2.3.2/includes/admin/page-optimizer/package-lock.json

    r3150033 r3150434  
    11{
    22  "name": "@rapidload/page-optimizer",
    3   "version": "1.2.6",
     3  "version": "1.3.0",
    44  "lockfileVersion": 3,
    55  "requires": true,
     
    77    "": {
    88      "name": "@rapidload/page-optimizer",
    9       "version": "1.2.6",
     9      "version": "1.3.0",
    1010      "license": "MIT",
    1111      "dependencies": {
  • unusedcss/tags/2.3.2/includes/admin/page-optimizer/package.json

    r3150033 r3150434  
    11{
    22  "name": "@rapidload/page-optimizer",
    3   "version": "1.2.6",
     3  "version": "1.3.0",
    44  "description": "Helps you get better page speed scores by analyzing and providing optimal actions (for Wordpress)",
    55  "homepage": "https://rapidload.io/",
  • unusedcss/tags/2.3.2/includes/admin/page-optimizer/src/app/page-optimizer/components/performance-widgets/PageSpeedScore.tsx

    r3150033 r3150434  
    179179                                            <PerformanceProgressBar
    180180                                                loading={reanalyze}
    181                                                 performance={loading ? ((data?.performance && gain && metric) ?
    182                                                     (data.performance + gain >= 99) ? 99 :
    183                                                         data.performance + gain : data?.performance) : 85}>
     181                                                    performance={(data?.performance && gain && metric) ?
     182                                                        (data.performance + gain >= 99) ? 99 :
     183                                                            data.performance + gain : data?.performance}>
    184184                                                {!!(metric && gain) && (
    185185                                                    <div className='flex gap-1 flex-col text-xxs font-normal'>
  • unusedcss/tags/2.3.2/includes/admin/page-optimizer/src/components/performance-progress-bar.tsx

    r3150033 r3150434  
    1 import {buildStyles, CircularProgressbarWithChildren} from "react-circular-progressbar";
    2 import React, {ReactNode, useEffect, useState, useCallback, useMemo} from "react";
     1import { buildStyles, CircularProgressbarWithChildren } from "react-circular-progressbar";
     2import React, { ReactNode, useEffect, useState, useCallback, useMemo } from "react";
    33import usePerformanceColors from "hooks/usePerformanceColors";
    4 import {cn} from "lib/utils";
    5 import {AnimatePresence, m} from "framer-motion";
     4import { cn } from "lib/utils";
     5import { AnimatePresence, m } from "framer-motion";
    66import { Loader } from "lucide-react";
    77
     
    9090            )}
    9191            styles={progressBarStyles}
    92             value={score}
     92            value={!loading ? score : 85}
    9393        >
    9494            <AnimatePresence initial={false}>
     
    103103                >
    104104                    {!loading && <span>{score.toFixed(0)}</span>}
    105                    
     105
    106106                    <AnimatePresence mode="wait">
    107107                        {loading && message !== -1 && (
     
    111111                                animate={{ opacity: 1, y: 0 }}
    112112                                exit={{ opacity: 0, y: -10 }}
    113                                 transition={{ 
    114                                     duration: 0.3, 
     113                                transition={{
     114                                    duration: 0.3,
    115115                                    ease: [0.4, 0, 0.2, 1] // Easing function (ease-out)
    116116                                }}
     
    123123                        )}
    124124                    </AnimatePresence>
    125                    
     125
    126126                    {children && (
    127127                        <m.div
    128128                            key='children'
    129                             initial={{opacity: 0, y: 10}}
    130                             animate={{opacity: 1, y: 0}}
    131                             exit={{opacity: 0, y: 10}}
     129                            initial={{ opacity: 0, y: 10 }}
     130                            animate={{ opacity: 1, y: 0 }}
     131                            exit={{ opacity: 0, y: 10 }}
    132132                        >
    133133                            {children}
  • unusedcss/tags/2.3.2/includes/admin/page-optimizer/vite.config.ts

    r3131042 r3150434  
    1515            dynamicBase({
    1616                publicPath: 'window.rapidload_optimizer.page_optimizer_package_base',
     17                transformIndexHtml: true // BUILD + PREVIEW in local breaks when true
     18            }),
     19            {
     20                name: 'generate-asset-map',
     21                generateBundle(options, bundle) {
     22                    console.log('Generating asset map...');
     23                    const assetMap: Record<string, string> = {};
     24                    for (const [fileName, asset] of Object.entries(bundle)) {
     25                        console.log(asset.name);
    1726
    18                 transformIndexHtml:  true // BUILD + PREVIEW in local breaks when true
    19 
    20             })
     27                        if ('fileName' in asset) {
     28                            // Remove hash from the key
     29                            const keyWithoutHash = asset.fileName.replace(/(.+)\.[\w-]+(\.[^.]+)$/, '$1$2');
     30                            assetMap[keyWithoutHash] = asset.fileName;
     31                        }
     32                    }
     33                   
     34                    const phpArray = Object.entries(assetMap)
     35                        .map(([key, value]) => `    '${key}' => '${value}'`)
     36                        .join(",\n");
     37                   
     38                    const phpContent = `<?php
     39define('RAPIDLOAD_ASSET_MAP', [
     40${phpArray}
     41]);
     42`;
     43                   
     44                    this.emitFile({
     45                        type: 'asset',
     46                        fileName: 'asset-map.php',
     47                        source: phpContent
     48                    });
     49                   
     50                    console.log('Asset map generated and saved as PHP file');
     51                }
     52            }
    2153        ],
    2254        define: {
     
    5688                    },
    5789                    // entryFileNames: `assets/[name].js`,
    58                     entryFileNames: `assets/[name].js`,
    59                     chunkFileNames: `assets/[name].js`,
    60                     assetFileNames: `assets/[name].[ext]`
     90                    entryFileNames: `assets/[name].[hash].js`,
     91                    chunkFileNames: `assets/[name].[hash].js`,
     92                    assetFileNames: (assetInfo) => {
     93                        if (assetInfo.name && /\.(woff2?|eot|ttf|otf)$/.test(assetInfo.name)) {
     94                            return `assets/[name].[ext]`;
     95                        }
     96                        return `assets/[name].[hash].[ext]`;
     97                    }
    6198                }
    6299            }
  • unusedcss/tags/2.3.2/includes/modules/css/critical-css/CriticalCSS_Store.php

    r3150033 r3150434  
    163163
    164164        $data = $this->job_data->get_cpcss_data();
    165         $file_character_length = isset($this->options['rapidload_cpcss_file_character_length']) ? $this->options['rapidload_cpcss_file_character_length'] : 300000;
     165        $file_chunk_enabled = isset($this->options['rapidload_enable_cpcss_file_chunk']) && $this->options['rapidload_enable_cpcss_file_chunk'] == "1";
     166        $file_character_length = $file_chunk_enabled && isset($this->options['rapidload_cpcss_file_character_length']) ? $this->options['rapidload_cpcss_file_character_length'] : 0;
    166167        $file_character_length = apply_filters('rapidload/cpcss/file-character-length', $file_character_length);
    167168
     
    184185
    185186    function handle_css_parts($css, $suffix, $file_character_length) {
     187
     188        if($file_character_length == "0"){
     189            $file_name = 'cpcss-' . $this->encode($css) . $suffix . '.css';
     190            if (!$this->file_system->exists(CriticalCSS::$base_dir . '/' . $file_name)) {
     191                $this->file_system->put_contents(CriticalCSS::$base_dir . '/' . $file_name, $css);
     192            }
     193            return $file_name;
     194        }
     195
    186196        $parts = CriticalCSS::breakCSSIntoParts($css, $file_character_length);
    187197        $file_count = count($parts);
  • unusedcss/tags/2.3.2/includes/modules/optimizer/RapidLoad_Optimizer.php

    r3150033 r3150434  
    433433        self::$job->save(!self::$job->exist());
    434434
    435         if(isset(self::$options['uucss_enable_cache'])){
    436             self::$global_options['uucss_enable_cache'] = self::$options['uucss_enable_cache'];
    437             RapidLoad_Base::update_option('autoptimize_uucss_settings',self::$global_options);
    438         }
    439 
    440         if(isset(self::$options['rapidload_cpcss_file_character_length'])){
    441             self::$global_options['rapidload_cpcss_file_character_length'] = self::$options['rapidload_cpcss_file_character_length'];
    442             RapidLoad_Base::update_option('autoptimize_uucss_settings',self::$global_options);
    443         }
    444 
    445435        $options = [
    446436            //css
     
    454444            'uucss_safelist',
    455445            'remove_cpcss_on_user_interaction',
     446            'rapidload_enable_cpcss_file_chunk',
    456447            'rapidload_cpcss_file_character_length',
    457448            'uucss_excluded_files',
     
    559550        }
    560551
    561         self::post_optimizer_function($result);
    562 
    563552        $result->job_id = isset(self::$job) ? self::$job->id : null;
    564553
     
    579568
    580569        return[
     570            'url' => $url,
    581571            'success' => true,
    582572            'job_id' => isset(self::$job) ? self::$job->id : null,
     
    585575            'options' => self::$options,
    586576            'merged_options' => self::$merged_options,
     577            'global_options' => self::$global_options,
    587578        ];
    588579
     
    638629                'control_label' => 'CSS Chunck File Size',
    639630                'control_description' => 'Splits large critical CSS files into smaller chunks to improve speed',
    640                 'default' => 300000
     631                'default' => 0,
     632                'control_visibility' => [
     633                    [
     634                        'key' => 'rapidload_enable_cpcss_file_chunk',
     635                        'value' => true,
     636                    ]
     637                ]
     638            ),
     639            'rapidload_enable_cpcss_file_chunk' => array(
     640                'control_type' => 'checkbox',
     641                'control_label' => 'Enable CSS File Chunck',
     642                'control_description' => 'Enable Splits large critical CSS files',
     643                'control_values' => array('1', '0'),
     644                'default' => '0',
    641645            ),
    642646            'uucss_preload_font_urls' => array(
     
    11271131            ['keys' => ['unminified-javascript'], 'name' => 'Minify Javascript', 'description' => 'Remove unnecessary spaces, lines and comments from JS files.', 'category' => 'javascript', 'inputs' => ['minify_js', 'uucss_exclude_files_from_minify_js']],
    11281132            ['keys' => ['unused-css-rules'], 'name' => 'Remove Unused CSS', 'description' => 'Remove unused CSS for each page and reduce page size.', 'category' => 'css', 'inputs' => ['uucss_enable_uucss', 'uucss_excluded_files','uucss_safelist','uucss_misc_options','rapidload_purge_all']],
    1129             ['keys' => ['render-blocking-resources'], 'name' => 'Critical CSS', 'description' => 'Extract and prioritize above-the-fold CSS.', 'category' => 'css', 'inputs' => ['uucss_enable_cpcss', 'uucss_enable_cpcss_mobile', 'uucss_additional_css', 'remove_cpcss_on_user_interaction', 'rapidload_cpcss_file_character_length', 'uucss_preload_font_urls', 'cpcss_purge_url']],
     1133            ['keys' => ['render-blocking-resources'], 'name' => 'Critical CSS', 'description' => 'Extract and prioritize above-the-fold CSS.', 'category' => 'css', 'inputs' => ['uucss_enable_cpcss', 'uucss_enable_cpcss_mobile', 'uucss_additional_css', 'remove_cpcss_on_user_interaction', 'rapidload_enable_cpcss_file_chunk', 'rapidload_cpcss_file_character_length', 'uucss_preload_font_urls', 'cpcss_purge_url']],
    11301134            ['keys' => ['render-blocking-resources'], 'name' => 'Defer Javascript', 'description' => 'Render-blocking JS on website can be resolved with defer JavaScript.', 'category' => 'javascript', 'inputs' => ['uucss_load_js_method', 'uucss_excluded_js_files_from_defer']],
    11311135            ['keys' => ['offscreen-images'], 'name' => 'Lazy Load Images', 'description' => 'Delay loading of images until needed.', 'category' => 'image', 'inputs' => ['uucss_lazy_load_images', 'uucss_exclude_images_from_lazy_load']],
     
    12131217                    case 'textarea' :
    12141218                    case 'number-range' :
     1219                    case 'input' :
    12151220                    case 'number' :{
    12161221                        if(isset($input->value) && isset($input->key)){
     
    13361341        $this->associate_domain(false);
    13371342
     1343        if(isset(self::$options['rapidload_enable_cpcss_file_chunk']) && isset(self::$options['rapidload_cpcss_file_character_length'])){
     1344            self::$global_options['rapidload_enable_cpcss_file_chunk'] = self::$options['rapidload_enable_cpcss_file_chunk'];
     1345            self::$global_options['rapidload_cpcss_file_character_length'] = self::$options['rapidload_cpcss_file_character_length'];
     1346            RapidLoad_Base::update_option('autoptimize_uucss_settings',self::$global_options);
     1347        }
     1348
     1349        if(isset(self::$options['uucss_enable_cache'])){
     1350            self::$global_options['uucss_enable_cache'] = self::$options['uucss_enable_cache'];
     1351            RapidLoad_Base::update_option('autoptimize_uucss_settings',self::$global_options);
     1352        }
     1353
    13381354        self::post_optimizer_function($result);
    13391355
  • unusedcss/tags/2.3.2/readme.txt

    r3150033 r3150434  
    55Requires at least: 5.0
    66Tested up to: 6.4
    7 Stable tag: 2.3.1
     7Stable tag: 2.3.2
    88Requires PHP: 5.4
    99License: GPLv3
     
    156156== Changelog ==
    157157
     158= 2.3.2 - 12/09/2024 =
     159 * fix: Titan crash
     160
    158161= 2.3.0 - 11/09/2024 =
    159162 * feat: improve ui for better user experience
  • unusedcss/tags/2.3.2/unusedcss.php

    r3150033 r3150434  
    44Plugin URI:  https://rapidload.io/
    55Description: Makes your site even faster and lighter by automatically removing Unused CSS from your website.
    6 Version:     2.3.1
     6Version:     2.3.2
    77Author:      RapidLoad
    88Author URI:  https://rapidload.io/
  • unusedcss/trunk/constants.php

    r3150033 r3150434  
    2626
    2727if ( ! defined( 'UUCSS_VERSION' ) ) {
    28     define( 'UUCSS_VERSION', '2.3.1' );
     28    define( 'UUCSS_VERSION', '2.3.2' );
    2929}
    3030
  • unusedcss/trunk/includes/RapidLoad_Base.php

    r3150033 r3150434  
    609609            'uucss_enable_page_optimizer' => "1",
    610610            'rapidload_test_mode' => "1",
    611             'rapidload_cpcss_file_character_length' => 300000
     611            'rapidload_cpcss_file_character_length' => 0,
     612            'uucss_adaptive_image_delivery' => "1",
    612613        ];
    613614    }
  • unusedcss/trunk/includes/RapidLoad_Utils.php

    r3150033 r3150434  
    765765        return ($string == serialize(false) || @unserialize($string) !== false);
    766766    }
     767
     768    public static function debug_log($object){
     769
     770        if(gettype($object) == "string"){
     771            error_log($object);
     772        }else{
     773            error_log(json_encode($object, JSON_PRETTY_PRINT));
     774        }
     775
     776    }
    767777}
  • unusedcss/trunk/includes/admin/RapidLoad_Admin_Bar.php

    r3150033 r3150434  
    5353
    5454        //$package = "https://unpkg.com/@rapidload/page-optimizer@{$tag}/dist";
    55         $package = UUCSS_PLUGIN_URL . 'includes/admin/page-optimizer/dist';
    56 
    57         /*if (defined('RAPIDLOAD_DEV_MODE')) {
    58             $package = UUCSS_PLUGIN_URL . 'includes/admin/page-optimizer/dist';
    59         }*/
     55
     56        $optimizer_path = 'includes/admin/page-optimizer/dist';
    6057
    6158        $debug_titan = apply_filters('rapidload/titan/debug', false);
    6259
    6360        if ($debug_titan) {
    64             $package .= '-debug';
    65         }
    66 
    67         //wp_enqueue_style( 'rapidload_page_optimizer', $package .  '/assets/index.css',[],UUCSS_VERSION);
    68 
    69         wp_register_script( 'rapidload_page_optimizer', $package .  '/assets/index.js',[], UUCSS_VERSION . (defined('RAPIDLOAD_PLUGIN_COMMIT_ID') ? '-' . RAPIDLOAD_PLUGIN_COMMIT_ID : ''));
     61            $optimizer_path .= '-debug';
     62        }
     63
     64
     65        $package = UUCSS_PLUGIN_URL . $optimizer_path;
     66
     67        $asset_map_file = RAPIDLOAD_PLUGIN_DIR . '/' . $optimizer_path . '/asset-map.php';
     68        $indexJS = '/assets/index.js';
     69        $indexCSS = '/assets/index.css';
     70
     71        if (file_exists($asset_map_file)) {
     72            include_once($asset_map_file);
     73            if (defined('RAPIDLOAD_ASSET_MAP')) {
     74                $indexJS = isset(RAPIDLOAD_ASSET_MAP['assets/index.js']) ? RAPIDLOAD_ASSET_MAP['assets/index.js'] : $indexJS;
     75                $indexCSS = isset(RAPIDLOAD_ASSET_MAP['assets/index.css']) ? RAPIDLOAD_ASSET_MAP['assets/index.css'] : $indexCSS;
     76            }
     77        }
     78
     79        $indexJS = '/' . ltrim($indexJS, '/');
     80        $indexCSS = '/' . ltrim($indexCSS, '/');
     81
     82        wp_register_script( 'rapidload_page_optimizer', $package . $indexJS,[], UUCSS_VERSION);
    7083
    7184        $current_url = isset($_SERVER['REQUEST_URI']) ? home_url($_SERVER['REQUEST_URI']) : $this->get_current_url();
     
    7689
    7790        $data = array(
    78             'titan_stylesheet_url' => $package .  '/assets/index.css',
     91            'titan_stylesheet_url' => $package .  $indexCSS,
    7992            'load_optimizer' => !(is_admin() && $page === 'rapidload'),
    8093            'page_optimizer_package_base' => $package,
  • unusedcss/trunk/includes/admin/RapidLoad_htaccess.php

    r3150033 r3150434  
    342342            'server' => 'apache',
    343343            'has_rapidload_rules' => $has_rapidload_rules,
    344             'status' => 'success',
     344            'status' => $has_rapidload_rules ? 'success' : 'failed',
    345345            'error' => [
    346346                'code' => null,
  • unusedcss/trunk/includes/admin/page-optimizer/dist-debug/index.html

    r3150033 r3150434  
    1313        page_optimizer_package_base: window.location.origin,
    1414        rapidload_version: '2.2.26',
    15         optimizer_url : 'https://rapidload.io/',
    16         ajax_url : 'https://rapidload.local/wp-admin/admin-ajax.php',
     15        optimizer_url : '%VITE_OPTIMIZER_URL%',
     16        ajax_url : '%VITE_SERVER_ROOT%wp-admin/admin-ajax.php',
    1717        api_root: '%VITE_API_ROOT%/api/v1'.includes('VITE') ? 'https://api.rapidload.io/api/v1' : '%VITE_API_ROOT%/api/v1'
    1818      };
     
    122122    <script>
    123123(function(){
    124 var preloads = [{"parentTagName":"head","tagName":"link","attrs":{"rel":"manifest","href":"/manifest.webmanifest"}},{"parentTagName":"head","tagName":"script","attrs":{"type":"module","crossorigin":"","src":"/assets/index.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"modulepreload","crossorigin":"","href":"/assets/core-vendor.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"modulepreload","crossorigin":"","href":"/assets/vendor.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"modulepreload","crossorigin":"","href":"/assets/animations.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"stylesheet","crossorigin":"","href":"/assets/index2.css"}}];
     124var preloads = [{"parentTagName":"head","tagName":"link","attrs":{"rel":"manifest","href":"/manifest.webmanifest"}},{"parentTagName":"head","tagName":"script","attrs":{"type":"module","crossorigin":"","src":"/assets/index.BX9eDSbV.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"modulepreload","crossorigin":"","href":"/assets/core-vendor.a21Wwx5s.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"modulepreload","crossorigin":"","href":"/assets/vendor.C2Ge5RaU.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"modulepreload","crossorigin":"","href":"/assets/animations.CWk52Myu.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"stylesheet","crossorigin":"","href":"/assets/index.DHPscgfg.css"}}];
    125125function setAttribute(target, attrs) {
    126126for (var key in attrs) {
  • unusedcss/trunk/includes/admin/page-optimizer/dist/index.html

    r3150033 r3150434  
    1313        page_optimizer_package_base: window.location.origin,
    1414        rapidload_version: '2.2.26',
    15         optimizer_url : 'https://rapidload.io/',
    16         ajax_url : 'https://rapidload.local/wp-admin/admin-ajax.php',
     15        optimizer_url : '%VITE_OPTIMIZER_URL%',
     16        ajax_url : '%VITE_SERVER_ROOT%wp-admin/admin-ajax.php',
    1717        api_root: '%VITE_API_ROOT%/api/v1'.includes('VITE') ? 'https://api.rapidload.io/api/v1' : '%VITE_API_ROOT%/api/v1'
    1818      };
     
    122122    <script>
    123123(function(){
    124 var preloads = [{"parentTagName":"head","tagName":"link","attrs":{"rel":"manifest","href":"/manifest.webmanifest"}},{"parentTagName":"head","tagName":"script","attrs":{"type":"module","crossorigin":"","src":"/assets/index.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"modulepreload","crossorigin":"","href":"/assets/core-vendor.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"modulepreload","crossorigin":"","href":"/assets/vendor.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"modulepreload","crossorigin":"","href":"/assets/animations.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"stylesheet","crossorigin":"","href":"/assets/index2.css"}}];
     124var preloads = [{"parentTagName":"head","tagName":"link","attrs":{"rel":"manifest","href":"/manifest.webmanifest"}},{"parentTagName":"head","tagName":"script","attrs":{"type":"module","crossorigin":"","src":"/assets/index.BX9eDSbV.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"modulepreload","crossorigin":"","href":"/assets/core-vendor.a21Wwx5s.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"modulepreload","crossorigin":"","href":"/assets/vendor.C2Ge5RaU.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"modulepreload","crossorigin":"","href":"/assets/animations.CWk52Myu.js"}},{"parentTagName":"head","tagName":"link","attrs":{"rel":"stylesheet","crossorigin":"","href":"/assets/index.DHPscgfg.css"}}];
    125125function setAttribute(target, attrs) {
    126126for (var key in attrs) {
  • unusedcss/trunk/includes/admin/page-optimizer/package-lock.json

    r3150033 r3150434  
    11{
    22  "name": "@rapidload/page-optimizer",
    3   "version": "1.2.6",
     3  "version": "1.3.0",
    44  "lockfileVersion": 3,
    55  "requires": true,
     
    77    "": {
    88      "name": "@rapidload/page-optimizer",
    9       "version": "1.2.6",
     9      "version": "1.3.0",
    1010      "license": "MIT",
    1111      "dependencies": {
  • unusedcss/trunk/includes/admin/page-optimizer/package.json

    r3150033 r3150434  
    11{
    22  "name": "@rapidload/page-optimizer",
    3   "version": "1.2.6",
     3  "version": "1.3.0",
    44  "description": "Helps you get better page speed scores by analyzing and providing optimal actions (for Wordpress)",
    55  "homepage": "https://rapidload.io/",
  • unusedcss/trunk/includes/admin/page-optimizer/src/app/page-optimizer/components/performance-widgets/PageSpeedScore.tsx

    r3150033 r3150434  
    179179                                            <PerformanceProgressBar
    180180                                                loading={reanalyze}
    181                                                 performance={loading ? ((data?.performance && gain && metric) ?
    182                                                     (data.performance + gain >= 99) ? 99 :
    183                                                         data.performance + gain : data?.performance) : 85}>
     181                                                    performance={(data?.performance && gain && metric) ?
     182                                                        (data.performance + gain >= 99) ? 99 :
     183                                                            data.performance + gain : data?.performance}>
    184184                                                {!!(metric && gain) && (
    185185                                                    <div className='flex gap-1 flex-col text-xxs font-normal'>
  • unusedcss/trunk/includes/admin/page-optimizer/src/components/performance-progress-bar.tsx

    r3150033 r3150434  
    1 import {buildStyles, CircularProgressbarWithChildren} from "react-circular-progressbar";
    2 import React, {ReactNode, useEffect, useState, useCallback, useMemo} from "react";
     1import { buildStyles, CircularProgressbarWithChildren } from "react-circular-progressbar";
     2import React, { ReactNode, useEffect, useState, useCallback, useMemo } from "react";
    33import usePerformanceColors from "hooks/usePerformanceColors";
    4 import {cn} from "lib/utils";
    5 import {AnimatePresence, m} from "framer-motion";
     4import { cn } from "lib/utils";
     5import { AnimatePresence, m } from "framer-motion";
    66import { Loader } from "lucide-react";
    77
     
    9090            )}
    9191            styles={progressBarStyles}
    92             value={score}
     92            value={!loading ? score : 85}
    9393        >
    9494            <AnimatePresence initial={false}>
     
    103103                >
    104104                    {!loading && <span>{score.toFixed(0)}</span>}
    105                    
     105
    106106                    <AnimatePresence mode="wait">
    107107                        {loading && message !== -1 && (
     
    111111                                animate={{ opacity: 1, y: 0 }}
    112112                                exit={{ opacity: 0, y: -10 }}
    113                                 transition={{ 
    114                                     duration: 0.3, 
     113                                transition={{
     114                                    duration: 0.3,
    115115                                    ease: [0.4, 0, 0.2, 1] // Easing function (ease-out)
    116116                                }}
     
    123123                        )}
    124124                    </AnimatePresence>
    125                    
     125
    126126                    {children && (
    127127                        <m.div
    128128                            key='children'
    129                             initial={{opacity: 0, y: 10}}
    130                             animate={{opacity: 1, y: 0}}
    131                             exit={{opacity: 0, y: 10}}
     129                            initial={{ opacity: 0, y: 10 }}
     130                            animate={{ opacity: 1, y: 0 }}
     131                            exit={{ opacity: 0, y: 10 }}
    132132                        >
    133133                            {children}
  • unusedcss/trunk/includes/admin/page-optimizer/vite.config.ts

    r3131042 r3150434  
    1515            dynamicBase({
    1616                publicPath: 'window.rapidload_optimizer.page_optimizer_package_base',
     17                transformIndexHtml: true // BUILD + PREVIEW in local breaks when true
     18            }),
     19            {
     20                name: 'generate-asset-map',
     21                generateBundle(options, bundle) {
     22                    console.log('Generating asset map...');
     23                    const assetMap: Record<string, string> = {};
     24                    for (const [fileName, asset] of Object.entries(bundle)) {
     25                        console.log(asset.name);
    1726
    18                 transformIndexHtml:  true // BUILD + PREVIEW in local breaks when true
    19 
    20             })
     27                        if ('fileName' in asset) {
     28                            // Remove hash from the key
     29                            const keyWithoutHash = asset.fileName.replace(/(.+)\.[\w-]+(\.[^.]+)$/, '$1$2');
     30                            assetMap[keyWithoutHash] = asset.fileName;
     31                        }
     32                    }
     33                   
     34                    const phpArray = Object.entries(assetMap)
     35                        .map(([key, value]) => `    '${key}' => '${value}'`)
     36                        .join(",\n");
     37                   
     38                    const phpContent = `<?php
     39define('RAPIDLOAD_ASSET_MAP', [
     40${phpArray}
     41]);
     42`;
     43                   
     44                    this.emitFile({
     45                        type: 'asset',
     46                        fileName: 'asset-map.php',
     47                        source: phpContent
     48                    });
     49                   
     50                    console.log('Asset map generated and saved as PHP file');
     51                }
     52            }
    2153        ],
    2254        define: {
     
    5688                    },
    5789                    // entryFileNames: `assets/[name].js`,
    58                     entryFileNames: `assets/[name].js`,
    59                     chunkFileNames: `assets/[name].js`,
    60                     assetFileNames: `assets/[name].[ext]`
     90                    entryFileNames: `assets/[name].[hash].js`,
     91                    chunkFileNames: `assets/[name].[hash].js`,
     92                    assetFileNames: (assetInfo) => {
     93                        if (assetInfo.name && /\.(woff2?|eot|ttf|otf)$/.test(assetInfo.name)) {
     94                            return `assets/[name].[ext]`;
     95                        }
     96                        return `assets/[name].[hash].[ext]`;
     97                    }
    6198                }
    6299            }
  • unusedcss/trunk/includes/modules/css/critical-css/CriticalCSS_Store.php

    r3150033 r3150434  
    163163
    164164        $data = $this->job_data->get_cpcss_data();
    165         $file_character_length = isset($this->options['rapidload_cpcss_file_character_length']) ? $this->options['rapidload_cpcss_file_character_length'] : 300000;
     165        $file_chunk_enabled = isset($this->options['rapidload_enable_cpcss_file_chunk']) && $this->options['rapidload_enable_cpcss_file_chunk'] == "1";
     166        $file_character_length = $file_chunk_enabled && isset($this->options['rapidload_cpcss_file_character_length']) ? $this->options['rapidload_cpcss_file_character_length'] : 0;
    166167        $file_character_length = apply_filters('rapidload/cpcss/file-character-length', $file_character_length);
    167168
     
    184185
    185186    function handle_css_parts($css, $suffix, $file_character_length) {
     187
     188        if($file_character_length == "0"){
     189            $file_name = 'cpcss-' . $this->encode($css) . $suffix . '.css';
     190            if (!$this->file_system->exists(CriticalCSS::$base_dir . '/' . $file_name)) {
     191                $this->file_system->put_contents(CriticalCSS::$base_dir . '/' . $file_name, $css);
     192            }
     193            return $file_name;
     194        }
     195
    186196        $parts = CriticalCSS::breakCSSIntoParts($css, $file_character_length);
    187197        $file_count = count($parts);
  • unusedcss/trunk/includes/modules/optimizer/RapidLoad_Optimizer.php

    r3150033 r3150434  
    433433        self::$job->save(!self::$job->exist());
    434434
    435         if(isset(self::$options['uucss_enable_cache'])){
    436             self::$global_options['uucss_enable_cache'] = self::$options['uucss_enable_cache'];
    437             RapidLoad_Base::update_option('autoptimize_uucss_settings',self::$global_options);
    438         }
    439 
    440         if(isset(self::$options['rapidload_cpcss_file_character_length'])){
    441             self::$global_options['rapidload_cpcss_file_character_length'] = self::$options['rapidload_cpcss_file_character_length'];
    442             RapidLoad_Base::update_option('autoptimize_uucss_settings',self::$global_options);
    443         }
    444 
    445435        $options = [
    446436            //css
     
    454444            'uucss_safelist',
    455445            'remove_cpcss_on_user_interaction',
     446            'rapidload_enable_cpcss_file_chunk',
    456447            'rapidload_cpcss_file_character_length',
    457448            'uucss_excluded_files',
     
    559550        }
    560551
    561         self::post_optimizer_function($result);
    562 
    563552        $result->job_id = isset(self::$job) ? self::$job->id : null;
    564553
     
    579568
    580569        return[
     570            'url' => $url,
    581571            'success' => true,
    582572            'job_id' => isset(self::$job) ? self::$job->id : null,
     
    585575            'options' => self::$options,
    586576            'merged_options' => self::$merged_options,
     577            'global_options' => self::$global_options,
    587578        ];
    588579
     
    638629                'control_label' => 'CSS Chunck File Size',
    639630                'control_description' => 'Splits large critical CSS files into smaller chunks to improve speed',
    640                 'default' => 300000
     631                'default' => 0,
     632                'control_visibility' => [
     633                    [
     634                        'key' => 'rapidload_enable_cpcss_file_chunk',
     635                        'value' => true,
     636                    ]
     637                ]
     638            ),
     639            'rapidload_enable_cpcss_file_chunk' => array(
     640                'control_type' => 'checkbox',
     641                'control_label' => 'Enable CSS File Chunck',
     642                'control_description' => 'Enable Splits large critical CSS files',
     643                'control_values' => array('1', '0'),
     644                'default' => '0',
    641645            ),
    642646            'uucss_preload_font_urls' => array(
     
    11271131            ['keys' => ['unminified-javascript'], 'name' => 'Minify Javascript', 'description' => 'Remove unnecessary spaces, lines and comments from JS files.', 'category' => 'javascript', 'inputs' => ['minify_js', 'uucss_exclude_files_from_minify_js']],
    11281132            ['keys' => ['unused-css-rules'], 'name' => 'Remove Unused CSS', 'description' => 'Remove unused CSS for each page and reduce page size.', 'category' => 'css', 'inputs' => ['uucss_enable_uucss', 'uucss_excluded_files','uucss_safelist','uucss_misc_options','rapidload_purge_all']],
    1129             ['keys' => ['render-blocking-resources'], 'name' => 'Critical CSS', 'description' => 'Extract and prioritize above-the-fold CSS.', 'category' => 'css', 'inputs' => ['uucss_enable_cpcss', 'uucss_enable_cpcss_mobile', 'uucss_additional_css', 'remove_cpcss_on_user_interaction', 'rapidload_cpcss_file_character_length', 'uucss_preload_font_urls', 'cpcss_purge_url']],
     1133            ['keys' => ['render-blocking-resources'], 'name' => 'Critical CSS', 'description' => 'Extract and prioritize above-the-fold CSS.', 'category' => 'css', 'inputs' => ['uucss_enable_cpcss', 'uucss_enable_cpcss_mobile', 'uucss_additional_css', 'remove_cpcss_on_user_interaction', 'rapidload_enable_cpcss_file_chunk', 'rapidload_cpcss_file_character_length', 'uucss_preload_font_urls', 'cpcss_purge_url']],
    11301134            ['keys' => ['render-blocking-resources'], 'name' => 'Defer Javascript', 'description' => 'Render-blocking JS on website can be resolved with defer JavaScript.', 'category' => 'javascript', 'inputs' => ['uucss_load_js_method', 'uucss_excluded_js_files_from_defer']],
    11311135            ['keys' => ['offscreen-images'], 'name' => 'Lazy Load Images', 'description' => 'Delay loading of images until needed.', 'category' => 'image', 'inputs' => ['uucss_lazy_load_images', 'uucss_exclude_images_from_lazy_load']],
     
    12131217                    case 'textarea' :
    12141218                    case 'number-range' :
     1219                    case 'input' :
    12151220                    case 'number' :{
    12161221                        if(isset($input->value) && isset($input->key)){
     
    13361341        $this->associate_domain(false);
    13371342
     1343        if(isset(self::$options['rapidload_enable_cpcss_file_chunk']) && isset(self::$options['rapidload_cpcss_file_character_length'])){
     1344            self::$global_options['rapidload_enable_cpcss_file_chunk'] = self::$options['rapidload_enable_cpcss_file_chunk'];
     1345            self::$global_options['rapidload_cpcss_file_character_length'] = self::$options['rapidload_cpcss_file_character_length'];
     1346            RapidLoad_Base::update_option('autoptimize_uucss_settings',self::$global_options);
     1347        }
     1348
     1349        if(isset(self::$options['uucss_enable_cache'])){
     1350            self::$global_options['uucss_enable_cache'] = self::$options['uucss_enable_cache'];
     1351            RapidLoad_Base::update_option('autoptimize_uucss_settings',self::$global_options);
     1352        }
     1353
    13381354        self::post_optimizer_function($result);
    13391355
  • unusedcss/trunk/readme.txt

    r3150033 r3150434  
    55Requires at least: 5.0
    66Tested up to: 6.4
    7 Stable tag: 2.3.1
     7Stable tag: 2.3.2
    88Requires PHP: 5.4
    99License: GPLv3
     
    156156== Changelog ==
    157157
     158= 2.3.2 - 12/09/2024 =
     159 * fix: Titan crash
     160
    158161= 2.3.0 - 11/09/2024 =
    159162 * feat: improve ui for better user experience
  • unusedcss/trunk/unusedcss.php

    r3150033 r3150434  
    44Plugin URI:  https://rapidload.io/
    55Description: Makes your site even faster and lighter by automatically removing Unused CSS from your website.
    6 Version:     2.3.1
     6Version:     2.3.2
    77Author:      RapidLoad
    88Author URI:  https://rapidload.io/
Note: See TracChangeset for help on using the changeset viewer.