From c2e79cf9505b029ceff5f6c21e1dba9ed6297712 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20Robin?= Date: Tue, 17 Oct 2023 16:13:18 +0700 Subject: [PATCH 01/13] Closes #6137: remove unnecessary exclusions css background images' lazyload (#6210) --- inc/Engine/Media/Lazyload/CSS/Subscriber.php | 48 ------------------- .../Subscriber/addLazyloadScriptExcludeJs.php | 43 ----------------- ...dLazyloadScriptRocketDelayJsExclusions.php | 38 --------------- .../addLazyloadScriptRocketExcludeDeferJs.php | 38 --------------- .../Subscriber/addLazyloadScriptExcludeJs.php | 28 ----------- ...dLazyloadScriptRocketDelayJsExclusions.php | 40 ---------------- .../addLazyloadScriptRocketExcludeDeferJs.php | 29 ----------- 7 files changed, 264 deletions(-) delete mode 100644 tests/Integration/inc/Engine/Media/Lazyload/CSS/Subscriber/addLazyloadScriptExcludeJs.php delete mode 100644 tests/Integration/inc/Engine/Media/Lazyload/CSS/Subscriber/addLazyloadScriptRocketDelayJsExclusions.php delete mode 100644 tests/Integration/inc/Engine/Media/Lazyload/CSS/Subscriber/addLazyloadScriptRocketExcludeDeferJs.php delete mode 100644 tests/Unit/inc/Engine/Media/Lazyload/CSS/Subscriber/addLazyloadScriptExcludeJs.php delete mode 100644 tests/Unit/inc/Engine/Media/Lazyload/CSS/Subscriber/addLazyloadScriptRocketDelayJsExclusions.php delete mode 100644 tests/Unit/inc/Engine/Media/Lazyload/CSS/Subscriber/addLazyloadScriptRocketExcludeDeferJs.php diff --git a/inc/Engine/Media/Lazyload/CSS/Subscriber.php b/inc/Engine/Media/Lazyload/CSS/Subscriber.php index 69cf2acd10..c84adfff95 100644 --- a/inc/Engine/Media/Lazyload/CSS/Subscriber.php +++ b/inc/Engine/Media/Lazyload/CSS/Subscriber.php @@ -145,9 +145,6 @@ public static function get_subscribed_events() { 'rocket_buffer' => [ 'maybe_replace_css_images', 1002 ], 'after_rocket_clean_domain' => 'clear_generated_css', 'wp_enqueue_scripts' => 'insert_lazyload_script', - 'rocket_exclude_js' => 'add_lazyload_script_exclude_js', - 'rocket_exclude_defer_js' => 'add_lazyload_script_rocket_exclude_defer_js', - 'rocket_delay_js_exclusions' => 'add_lazyload_script_rocket_delay_js_exclusions', 'rocket_css_image_lazyload_images_load' => [ 'exclude_rocket_lazyload_excluded_src', 10, 2 ], 'rocket_lazyload_css_ignored_urls' => 'remove_svg_from_lazyload_css', ]; @@ -560,51 +557,6 @@ protected function is_excluded( string $string ) { // phpcs:ignore Universal.Nam return false; } - /** - * Add the lazyload script to exclude js exclusions. - * - * @param array $js_files Exclusions. - * @return array - */ - public function add_lazyload_script_exclude_js( array $js_files ) { - if ( ! $this->is_activated() ) { - return $js_files; - } - - $js_files [] = '#rocket_lazyload_css-js-after'; - return $js_files; - } - - /** - * Add the lazyload script to defer js exclusions. - * - * @param array $exclude_defer_js Exclusions. - * @return array - */ - public function add_lazyload_script_rocket_exclude_defer_js( array $exclude_defer_js ) { - if ( ! $this->is_activated() ) { - return $exclude_defer_js; - } - - $exclude_defer_js [] = '#rocket_lazyload_css-js-after'; - return $exclude_defer_js; - } - - /** - * Add the lazyload script to delay js exclusions. - * - * @param array $js_files Exclusions. - * @return array - */ - public function add_lazyload_script_rocket_delay_js_exclusions( array $js_files ) { - if ( ! $this->is_activated() ) { - return $js_files; - } - - $js_files [] = '#rocket_lazyload_css-js-after'; - return $js_files; - } - /** * Is the feature activated. * diff --git a/tests/Integration/inc/Engine/Media/Lazyload/CSS/Subscriber/addLazyloadScriptExcludeJs.php b/tests/Integration/inc/Engine/Media/Lazyload/CSS/Subscriber/addLazyloadScriptExcludeJs.php deleted file mode 100644 index 76e068a8e0..0000000000 --- a/tests/Integration/inc/Engine/Media/Lazyload/CSS/Subscriber/addLazyloadScriptExcludeJs.php +++ /dev/null @@ -1,43 +0,0 @@ -unregisterAllCallbacksExcept('rocket_exclude_js', 'add_lazyload_script_exclude_js'); - add_filter('pre_get_rocket_option_lazyload_css_bg_img', [$this, 'lazyload_css_bg_img']); - } - - public function tear_down() - { - remove_filter('pre_get_rocket_option_lazyload_css_bg_img', [$this, 'lazyload_css_bg_img']); - $this->restoreWpFilter('rocket_exclude_js'); - parent::tear_down(); - } - - /** - * @dataProvider configTestData - */ - public function testShouldReturnAsExpected( $config, $expected ) - { - $this->config = $config; - $this->assertSame($expected, apply_filters('rocket_exclude_js', $config['js_files'])); - } - - public function lazyload_css_bg_img() { - return $this->config['enabled']; - } -} diff --git a/tests/Integration/inc/Engine/Media/Lazyload/CSS/Subscriber/addLazyloadScriptRocketDelayJsExclusions.php b/tests/Integration/inc/Engine/Media/Lazyload/CSS/Subscriber/addLazyloadScriptRocketDelayJsExclusions.php deleted file mode 100644 index f32ce57370..0000000000 --- a/tests/Integration/inc/Engine/Media/Lazyload/CSS/Subscriber/addLazyloadScriptRocketDelayJsExclusions.php +++ /dev/null @@ -1,38 +0,0 @@ -config = $config; - $this->assertSame($expected, apply_filters('rocket_delay_js_exclusions', $config['js_files'])); - } - - public function lazyload_css_bg_img() { - return $this->config['enabled']; - } -} diff --git a/tests/Integration/inc/Engine/Media/Lazyload/CSS/Subscriber/addLazyloadScriptRocketExcludeDeferJs.php b/tests/Integration/inc/Engine/Media/Lazyload/CSS/Subscriber/addLazyloadScriptRocketExcludeDeferJs.php deleted file mode 100644 index b8ea6d7a31..0000000000 --- a/tests/Integration/inc/Engine/Media/Lazyload/CSS/Subscriber/addLazyloadScriptRocketExcludeDeferJs.php +++ /dev/null @@ -1,38 +0,0 @@ -config = $config; - $this->assertSame($expected, apply_filters('rocket_exclude_defer_js', $config['exclude_defer_js'])); - } - - public function lazyload_css_bg_img() { - return $this->config['enabled']; - } -} diff --git a/tests/Unit/inc/Engine/Media/Lazyload/CSS/Subscriber/addLazyloadScriptExcludeJs.php b/tests/Unit/inc/Engine/Media/Lazyload/CSS/Subscriber/addLazyloadScriptExcludeJs.php deleted file mode 100644 index 0d7e0cea81..0000000000 --- a/tests/Unit/inc/Engine/Media/Lazyload/CSS/Subscriber/addLazyloadScriptExcludeJs.php +++ /dev/null @@ -1,28 +0,0 @@ -init_subscriber(); - } - - /** - * @dataProvider configTestData - */ - public function testShouldReturnAsExpected( $config, $expected ) - { - $this->options->expects()->get('lazyload_css_bg_img', false)->andReturn($config['enabled']); - $this->assertSame($expected, $this->subscriber->add_lazyload_script_exclude_js($config['js_files'])); - } -} diff --git a/tests/Unit/inc/Engine/Media/Lazyload/CSS/Subscriber/addLazyloadScriptRocketDelayJsExclusions.php b/tests/Unit/inc/Engine/Media/Lazyload/CSS/Subscriber/addLazyloadScriptRocketDelayJsExclusions.php deleted file mode 100644 index 548358e258..0000000000 --- a/tests/Unit/inc/Engine/Media/Lazyload/CSS/Subscriber/addLazyloadScriptRocketDelayJsExclusions.php +++ /dev/null @@ -1,40 +0,0 @@ -init_subscriber(); - } - - /** - * @dataProvider configTestData - */ - public function testShouldReturnAsExpected( $config, $expected ) - { - $this->options->expects()->get('lazyload_css_bg_img', false)->andReturn($config['enabled']); - $this->assertSame($expected, $this->subscriber->add_lazyload_script_rocket_delay_js_exclusions($config['js_files'])); - } -} diff --git a/tests/Unit/inc/Engine/Media/Lazyload/CSS/Subscriber/addLazyloadScriptRocketExcludeDeferJs.php b/tests/Unit/inc/Engine/Media/Lazyload/CSS/Subscriber/addLazyloadScriptRocketExcludeDeferJs.php deleted file mode 100644 index 0eed23d3c5..0000000000 --- a/tests/Unit/inc/Engine/Media/Lazyload/CSS/Subscriber/addLazyloadScriptRocketExcludeDeferJs.php +++ /dev/null @@ -1,29 +0,0 @@ -init_subscriber(); - } - - /** - * @dataProvider configTestData - */ - public function testShouldReturnAsExpected( $config, $expected ) - { - $this->options->expects()->get('lazyload_css_bg_img', false)->andReturn($config['enabled']); - $this->assertSame($expected, $this->subscriber->add_lazyload_script_rocket_exclude_defer_js($config['exclude_defer_js'])); - } -} From a68a4e1bfc82a0654e6cf6cd9ca2c5cd585001f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20Robin?= Date: Tue, 17 Oct 2023 16:14:17 +0700 Subject: [PATCH 02/13] Closes #6175 Fatal error related to Logger (#6212) --- inc/Engine/Cache/PurgeActionsSubscriber.php | 16 ++++++++ tests/Fixtures/content/endingContent.php | 4 ++ .../Cache/PurgeActionsSubscriber/onUpdate.php | 17 ++++++++ .../Cache/PurgeActionsSubscriber/onUpdate.php | 41 +++++++++++++++++++ views/cache/advanced-cache.php | 4 ++ 5 files changed, 82 insertions(+) create mode 100644 tests/Fixtures/inc/Engine/Cache/PurgeActionsSubscriber/onUpdate.php create mode 100644 tests/Unit/inc/Engine/Cache/PurgeActionsSubscriber/onUpdate.php diff --git a/inc/Engine/Cache/PurgeActionsSubscriber.php b/inc/Engine/Cache/PurgeActionsSubscriber.php index 6f07bc4ac3..820b75ec2a 100644 --- a/inc/Engine/Cache/PurgeActionsSubscriber.php +++ b/inc/Engine/Cache/PurgeActionsSubscriber.php @@ -57,6 +57,7 @@ public static function get_subscribed_events() { 'rocket_after_save_dynamic_lists' => 'purge_cache_after_saving_dynamic_lists', 'update_option_' . $slug => [ 'purge_cache_reject_uri_partially', 10, 2 ], 'update_option_blog_public' => 'purge_cache', + 'wp_rocket_upgrade' => [ 'on_update', 10, 2 ], ]; } @@ -193,4 +194,19 @@ public function purge_cache_after_saving_dynamic_lists( $should_purge = true ) { } $this->purge_cache(); } + + /** + * Regenerate the advanced cache file on update + * + * @param string $new_version New plugin version. + * @param string $old_version Previous plugin version. + * + * @return void + */ + public function on_update( $new_version, $old_version ) { + if ( version_compare( $old_version, '3.15.3', '>=' ) ) { + return; + } + rocket_generate_advanced_cache_file(); + } } diff --git a/tests/Fixtures/content/endingContent.php b/tests/Fixtures/content/endingContent.php index 3254e12ed7..2853893f7c 100644 --- a/tests/Fixtures/content/endingContent.php +++ b/tests/Fixtures/content/endingContent.php @@ -33,11 +33,15 @@ function ( $class ) use ( $rocket_path ) { // phpcs:ignore Universal.NamingConve } } } elseif ( strpos( $class, 'WP_Rocket\\Dependencies\\Monolog\\' ) === 0 ) { + $class = str_replace( 'WP_Rocket\\Dependencies\\Monolog\\', '', $class ); + $file = $rocket_path . 'inc/Dependencies/Monolog/' . str_replace( '\\', '/', $class ) . '.php'; if ( ! file_exists( $file ) ) { $file = $rocket_path . 'vendor/monolog/monolog/src/' . str_replace( '\\', '/', $class ) . '.php'; } } elseif ( strpos( $class, 'WP_Rocket\\Dependencies\\Psr\\Log\\' ) === 0 ) { + $class = str_replace( 'WP_Rocket\\Dependencies\\Psr\\Log\\', '', $class ); + $file = $rocket_path . 'inc/Dependencies/Psr/Log/' . str_replace( '\\', '/', $class ) . '.php'; if ( ! file_exists( $file ) ) { $file = $rocket_path . 'vendor/psr/log/' . str_replace( '\\', '/', $class ) . '.php'; diff --git a/tests/Fixtures/inc/Engine/Cache/PurgeActionsSubscriber/onUpdate.php b/tests/Fixtures/inc/Engine/Cache/PurgeActionsSubscriber/onUpdate.php new file mode 100644 index 0000000000..9705c42cc7 --- /dev/null +++ b/tests/Fixtures/inc/Engine/Cache/PurgeActionsSubscriber/onUpdate.php @@ -0,0 +1,17 @@ + [ + 'config' => [ + 'new_version' => '3.15', + 'old_version' => '3.14', + 'is_superior' => false + ], + ], + 'SuperiorShouldNotGenerate' => [ + 'config' => [ + 'new_version' => '3.17', + 'old_version' => '3.16', + 'is_superior' => true + ], + ], +]; diff --git a/tests/Unit/inc/Engine/Cache/PurgeActionsSubscriber/onUpdate.php b/tests/Unit/inc/Engine/Cache/PurgeActionsSubscriber/onUpdate.php new file mode 100644 index 0000000000..1e7d05cb05 --- /dev/null +++ b/tests/Unit/inc/Engine/Cache/PurgeActionsSubscriber/onUpdate.php @@ -0,0 +1,41 @@ +subscriber = new PurgeActionsSubscriber( + Mockery::mock( Options_Data::class ), + Mockery::mock( Purge::class ) + ); + } + + /** + * @dataProvider configTestData + */ + public function testShouldDoAsExpected( $config ) + { + if ( $config['is_superior'] ) { + Functions\expect( 'rocket_generate_advanced_cache_file' )->never(); + } else { + Functions\expect( 'rocket_generate_advanced_cache_file' )->once(); + } + + $this->subscriber->on_update( $config['new_version'], $config['old_version'] ); + } +} diff --git a/views/cache/advanced-cache.php b/views/cache/advanced-cache.php index 7ed5adbc95..7880fa34d4 100644 --- a/views/cache/advanced-cache.php +++ b/views/cache/advanced-cache.php @@ -61,11 +61,15 @@ function ( $class ) use ( $rocket_path ) { // phpcs:ignore Universal.NamingConve } } } elseif ( strpos( $class, 'WP_Rocket\\Dependencies\\Monolog\\' ) === 0 ) { + $class = str_replace( 'WP_Rocket\\Dependencies\\Monolog\\', '', $class ); + $file = $rocket_path . 'inc/Dependencies/Monolog/' . str_replace( '\\', '/', $class ) . '.php'; if ( ! file_exists( $file ) ) { $file = $rocket_path . 'vendor/monolog/monolog/src/' . str_replace( '\\', '/', $class ) . '.php'; } } elseif ( strpos( $class, 'WP_Rocket\\Dependencies\\Psr\\Log\\' ) === 0 ) { + $class = str_replace( 'WP_Rocket\\Dependencies\\Psr\\Log\\', '', $class ); + $file = $rocket_path . 'inc/Dependencies/Psr/Log/' . str_replace( '\\', '/', $class ) . '.php'; if ( ! file_exists( $file ) ) { $file = $rocket_path . 'vendor/psr/log/' . str_replace( '\\', '/', $class ) . '.php'; From 65cf0238b7920328b390b912dbd897472714a790 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20Robin?= Date: Wed, 18 Oct 2023 14:59:46 +0700 Subject: [PATCH 03/13] Closes #6157: Improve Pressidium compatibility (#6221) Co-authored-by: Vasilis Manthos --- composer.json | 9 +- inc/3rd-party/3rd-party.php | 1 - inc/3rd-party/hosting/pressidium.php | 61 -------- inc/ThirdParty/Hostings/HostResolver.php | 5 + .../Hostings/HostSubscriberFactory.php | 2 + inc/ThirdParty/Hostings/Pressidium.php | 137 ++++++++++++++++++ tests/Fixtures/classes/NinukisCaching.php | 24 +++ .../Hostings/Pressidium/cleanPost.php | 25 ++++ .../Pressidium/pressidiumVarnishField.php | 11 ++ .../Hostings/Pressidium/purgeUrl.php | 54 +++++++ tests/Integration/bootstrap.php | 4 + .../Hostings/Pressidium/cleanPost.php | 44 ++++++ .../Pressidium/clearCacheAfterPressidium.php | 48 ++++++ .../Pressidium/pressidiumVarnishField.php | 20 +++ .../Hostings/Pressidium/purgeUrl.php | 41 ++++++ .../Hostings/Pressidium/cleanPost.php | 42 ++++++ .../Hostings/Pressidium/cleanPressidium.php | 34 +++++ .../Pressidium/clearCacheAfterPressidium.php | 36 +++++ .../Pressidium/pressidiumVarnishField.php | 33 +++++ .../Hostings/Pressidium/purgeUrl.php | 44 ++++++ 20 files changed, 610 insertions(+), 65 deletions(-) delete mode 100644 inc/3rd-party/hosting/pressidium.php create mode 100644 inc/ThirdParty/Hostings/Pressidium.php create mode 100644 tests/Fixtures/classes/NinukisCaching.php create mode 100644 tests/Fixtures/inc/ThirdParty/Hostings/Pressidium/cleanPost.php create mode 100644 tests/Fixtures/inc/ThirdParty/Hostings/Pressidium/pressidiumVarnishField.php create mode 100644 tests/Fixtures/inc/ThirdParty/Hostings/Pressidium/purgeUrl.php create mode 100644 tests/Integration/inc/ThirdParty/Hostings/Pressidium/cleanPost.php create mode 100644 tests/Integration/inc/ThirdParty/Hostings/Pressidium/clearCacheAfterPressidium.php create mode 100644 tests/Integration/inc/ThirdParty/Hostings/Pressidium/pressidiumVarnishField.php create mode 100644 tests/Integration/inc/ThirdParty/Hostings/Pressidium/purgeUrl.php create mode 100644 tests/Unit/inc/ThirdParty/Hostings/Pressidium/cleanPost.php create mode 100644 tests/Unit/inc/ThirdParty/Hostings/Pressidium/cleanPressidium.php create mode 100644 tests/Unit/inc/ThirdParty/Hostings/Pressidium/clearCacheAfterPressidium.php create mode 100644 tests/Unit/inc/ThirdParty/Hostings/Pressidium/pressidiumVarnishField.php create mode 100644 tests/Unit/inc/ThirdParty/Hostings/Pressidium/purgeUrl.php diff --git a/composer.json b/composer.json index 6ee7b65824..4cee9eee87 100644 --- a/composer.json +++ b/composer.json @@ -117,7 +117,7 @@ }, "scripts": { "test-unit": "\"vendor/bin/phpunit\" --testsuite unit --colors=always --configuration tests/Unit/phpunit.xml.dist", - "test-integration": "\"vendor/bin/phpunit\" --testsuite integration --colors=always --configuration tests/Integration/phpunit.xml.dist --exclude-group AdminOnly,BeaverBuilder,Elementor,Hummingbird,WithSmush,WithWoo,WithAmp,WithAmpAndCloudflare,WithSCCSS,Cloudways,Dreampress,Cloudflare,CloudflareAdmin,Multisite,WPEngine,SpinUpWP,WordPressCom,O2Switch,PDFEmbedder,PDFEmbedderPremium,PDFEmbedderSecure,Godaddy,LiteSpeed,RevolutionSlider,WordFence,ConvertPlug,Kinsta,Jetpack,RankMathSEO,AllInOneSeoPack,SEOPress,TheSEOFramework,OneCom,RocketLazyLoad,WPXCloud,TheEventsCalendar,Perfmatters,RapidLoad,ProIsp,TranslatePress,WPGeotargeting", + "test-integration": "\"vendor/bin/phpunit\" --testsuite integration --colors=always --configuration tests/Integration/phpunit.xml.dist --exclude-group AdminOnly,BeaverBuilder,Elementor,Hummingbird,WithSmush,WithWoo,WithAmp,WithAmpAndCloudflare,WithSCCSS,Cloudways,Dreampress,Cloudflare,CloudflareAdmin,Multisite,WPEngine,SpinUpWP,WordPressCom,O2Switch,PDFEmbedder,PDFEmbedderPremium,PDFEmbedderSecure,Godaddy,LiteSpeed,RevolutionSlider,WordFence,ConvertPlug,Kinsta,Jetpack,RankMathSEO,AllInOneSeoPack,SEOPress,TheSEOFramework,OneCom,RocketLazyLoad,WPXCloud,TheEventsCalendar,Perfmatters,RapidLoad,ProIsp,TranslatePress,WPGeotargeting,Pressidium", "test-integration-adminonly": "\"vendor/bin/phpunit\" --testsuite integration --colors=always --configuration tests/Integration/phpunit.xml.dist --group AdminOnly", "test-integration-bb": "\"vendor/bin/phpunit\" --testsuite integration --colors=always --configuration tests/Integration/phpunit.xml.dist --group BeaverBuilder", "test-integration-cloudflare": "\"vendor/bin/phpunit\" --testsuite integration --colors=always --configuration tests/Integration/phpunit.xml.dist --group Cloudflare", @@ -158,7 +158,9 @@ "test-integration-rapidload": "\"vendor/bin/phpunit\" --testsuite integration --colors=always --configuration tests/Integration/phpunit.xml.dist --group RapidLoad", "test-integration-proisp": "\"vendor/bin/phpunit\" --testsuite integration --colors=always --configuration tests/Integration/phpunit.xml.dist --group ProIsp", "test-integration-wp-geotargeting": "\"vendor/bin/phpunit\" --testsuite integration --colors=always --configuration tests/Integration/phpunit.xml.dist --group WPGeotargeting", - "test-integration-translatepress": "\"vendor/bin/phpunit\" --testsuite integration --colors=always --configuration tests/Integration/phpunit.xml.dist --group TranslatePress", + "test-integration-translatepress": "\"vendor/bin/phpunit\" --testsuite integration --colors=always --configuration tests/Integration/phpunit.xml.dist --group TranslatePress", + "test-integration-pressidium": "\"vendor/bin/phpunit\" --testsuite integration --colors=always --configuration tests/Integration/phpunit.xml.dist --group Pressidium", + "run-tests": [ "@test-unit", "@test-integration", @@ -200,7 +202,8 @@ "@test-integration-rapidload", "@test-integration-proisp", "@test-integration-wp-geotargeting", - "@test-integration-translatepress" + "@test-integration-translatepress", + "@test-integration-pressidium" ], "run-stan": "vendor/bin/phpstan analyze --memory-limit=2G --no-progress", "install-codestandards": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin::run", diff --git a/inc/3rd-party/3rd-party.php b/inc/3rd-party/3rd-party.php index 9a2be94e6f..79c88ae713 100644 --- a/inc/3rd-party/3rd-party.php +++ b/inc/3rd-party/3rd-party.php @@ -20,7 +20,6 @@ require WP_ROCKET_3RD_PARTY_PATH . 'hosting/pagely.php'; require WP_ROCKET_3RD_PARTY_PATH . 'hosting/nginx.php'; -require WP_ROCKET_3RD_PARTY_PATH . 'hosting/pressidium.php'; require WP_ROCKET_3RD_PARTY_PATH . 'plugins/slider/meta-slider.php'; require WP_ROCKET_3RD_PARTY_PATH . 'plugins/slider/soliloquy.php'; diff --git a/inc/3rd-party/hosting/pressidium.php b/inc/3rd-party/hosting/pressidium.php deleted file mode 100644 index f2342e936f..0000000000 --- a/inc/3rd-party/hosting/pressidium.php +++ /dev/null @@ -1,61 +0,0 @@ -purgeAllCaches(); - } - add_action( 'after_rocket_clean_domain', 'rocket_clean_pressidium' ); -} diff --git a/inc/ThirdParty/Hostings/HostResolver.php b/inc/ThirdParty/Hostings/HostResolver.php index 048697866c..ae3630394b 100644 --- a/inc/ThirdParty/Hostings/HostResolver.php +++ b/inc/ThirdParty/Hostings/HostResolver.php @@ -118,6 +118,11 @@ function_exists( 'wpe_param' ) return 'kinsta'; } + if ( defined( 'WP_NINUKIS_WP_NAME' ) || class_exists( 'NinukisCaching' ) ) { + self::$hostname = 'pressidium'; + return self::$hostname; + } + return ''; } diff --git a/inc/ThirdParty/Hostings/HostSubscriberFactory.php b/inc/ThirdParty/Hostings/HostSubscriberFactory.php index 917b49c8f2..bba5cf5b56 100644 --- a/inc/ThirdParty/Hostings/HostSubscriberFactory.php +++ b/inc/ThirdParty/Hostings/HostSubscriberFactory.php @@ -51,6 +51,8 @@ public function get_subscriber() { return new OneCom(); case 'proisp': return new ProIsp(); + case 'pressidium': + return new Pressidium(); default: return new NullSubscriber(); } diff --git a/inc/ThirdParty/Hostings/Pressidium.php b/inc/ThirdParty/Hostings/Pressidium.php new file mode 100644 index 0000000000..19c72c4367 --- /dev/null +++ b/inc/ThirdParty/Hostings/Pressidium.php @@ -0,0 +1,137 @@ +purgeAllCaches(); + } + + /** + * Returns the path of URLs. + * + * @param array|string $urls Urls we want to get paths. + * @return array|void the path. + */ + private function get_paths( $urls ) { + if ( ! is_array( $urls ) ) { + $urls = (array) $urls; + } + + $paths = []; + + foreach ( $urls as $url ) { + $parsed_url = get_rocket_parse_url( $url ); + $paths[] = $parsed_url['path']; + + } + return $paths; + } + + /** + * Purge the cache of Pressidium from paths. + * + * @param array $paths Paths of pages we are going to purge cache. + * + * @return void + */ + private function purge_cache( $paths ) { + NinukisCaching::get_instance()->purge_cache( $paths ); + } + + /** + * Purge the cache for the given URL. + * + * @param string|array $url URL we want to purge. + * + * @return void + */ + public function purge_url( $url ) { + $paths = $this->get_paths( $url ); + $this->purge_cache( $paths ); + } + + /** + * Clean cache of post. + * + * @param WP_Post $post Post that need to be cleaned. + * @param array $purge_urls URLs that need to be purged. + * + * @return void + */ + public function clean_post( $post, $purge_urls ) { + // Purge related urls. + $paths = $this->get_paths( $purge_urls ); + $this->purge_cache( $paths ); + } +} diff --git a/tests/Fixtures/classes/NinukisCaching.php b/tests/Fixtures/classes/NinukisCaching.php new file mode 100644 index 0000000000..f673968ad5 --- /dev/null +++ b/tests/Fixtures/classes/NinukisCaching.php @@ -0,0 +1,24 @@ + [ + 'config' => [ + 'url' => ['https://example.com/asd'], + 'post' => [ + 'post_id' => 123, + 'post_title' => 'Lorem ipsum', + 'post_content' => 'Lorem ipsum dolor sit amet', + 'post_status' => 'publish', + 'post_date' => '2020-03-01', + ], + + 'path' => ['/asd'], + 'parsed_url' => [ + 'scheme' => 'https', + 'host' => 'example.com', + 'path' => '/asd', + ], + ], + 'expected' => [ + ] + ] +]; diff --git a/tests/Fixtures/inc/ThirdParty/Hostings/Pressidium/pressidiumVarnishField.php b/tests/Fixtures/inc/ThirdParty/Hostings/Pressidium/pressidiumVarnishField.php new file mode 100644 index 0000000000..2e2c18daed --- /dev/null +++ b/tests/Fixtures/inc/ThirdParty/Hostings/Pressidium/pressidiumVarnishField.php @@ -0,0 +1,11 @@ + [ + 'config' => [], + 'expected' => [ + 'varnish_auto_purge' => [ + 'title' => 'Your site is hosted on Pressidium, we have enabled Varnish auto-purge for compatibility.' + ] + ] + ] +]; diff --git a/tests/Fixtures/inc/ThirdParty/Hostings/Pressidium/purgeUrl.php b/tests/Fixtures/inc/ThirdParty/Hostings/Pressidium/purgeUrl.php new file mode 100644 index 0000000000..e50f90788d --- /dev/null +++ b/tests/Fixtures/inc/ThirdParty/Hostings/Pressidium/purgeUrl.php @@ -0,0 +1,54 @@ + [ + 'config' => [ + 'urls' => 'https://example.com/asd', + 'path' => ['/asd'], + 'parsed_url' => [ + 'https://example.com/asd' => [ + 'scheme' => 'https', + 'host' => 'example.com', + 'path' => '/asd', + ], + ], + ], + 'expected' => [ + ], + ], + 'shouldPurgeMultipleUrls' => [ + 'config' => [ + 'urls' => [ + 'https://example.com/asd', + 'https://example.com/qwe', + 'https://example.com/xzc', + 'https://example.com/asd/qwe' + ], + 'path' => ['/asd', '/qwe', '/xzc', '/asd/qwe'], + 'parsed_url' => [ + 'https://example.com/asd' => [ + 'scheme' => 'https', + 'host' => 'example.com', + 'path' => '/asd', + ], + 'https://example.com/qwe' => [ + 'scheme' => 'https', + 'host' => 'example.com', + 'path' => '/qwe', + ], + 'https://example.com/xzc' => [ + 'scheme' => 'https', + 'host' => 'example.com', + 'path' => '/xzc', + ], + 'https://example.com/asd/qwe' => [ + 'scheme' => 'https', + 'host' => 'example.com', + 'path' => '/asd/qwe', + ] + ], + ], + 'expected' => [ + ], + ], +]; diff --git a/tests/Integration/bootstrap.php b/tests/Integration/bootstrap.php index d0bd22720c..ec45e1775b 100644 --- a/tests/Integration/bootstrap.php +++ b/tests/Integration/bootstrap.php @@ -119,6 +119,10 @@ function() { $_SERVER[ 'DH_USER'] = 'wp_74cgrq'; } + if ( BootstrapManager::isGroup( 'Pressidium' ) ) { + define('WP_NINUKIS_WP_NAME', 'WP_NINUKIS_WP_NAME'); + } + if ( BootstrapManager::isGroup( 'PDFEmbedder' ) ) { require WP_ROCKET_PLUGIN_ROOT . '/vendor/wpackagist-plugin/pdf-embedder/pdf_embedder.php'; } diff --git a/tests/Integration/inc/ThirdParty/Hostings/Pressidium/cleanPost.php b/tests/Integration/inc/ThirdParty/Hostings/Pressidium/cleanPost.php new file mode 100644 index 0000000000..d508e1b68d --- /dev/null +++ b/tests/Integration/inc/ThirdParty/Hostings/Pressidium/cleanPost.php @@ -0,0 +1,44 @@ +ninukis_caching = Mockery::mock('overload:' . NinukisCaching::class); + } + + public function tear_down(): void + { + parent::tear_down(); + } + + /** + * @dataProvider configTestData + */ + public function testShouldReturnExpected($config, $expected): void + { + $post = $this->factory->post->create_and_get( $config['post'] ); + + $this->ninukis_caching->expects()->purge_url($config['url']); + + do_action('after_rocket_clean_post', $post, $config['url'], ''); + } +} diff --git a/tests/Integration/inc/ThirdParty/Hostings/Pressidium/clearCacheAfterPressidium.php b/tests/Integration/inc/ThirdParty/Hostings/Pressidium/clearCacheAfterPressidium.php new file mode 100644 index 0000000000..02df4f1851 --- /dev/null +++ b/tests/Integration/inc/ThirdParty/Hostings/Pressidium/clearCacheAfterPressidium.php @@ -0,0 +1,48 @@ +user->create( [ 'role' => 'administrator' ] ); + wp_set_current_user( $current_user ); + + Functions\expect( 'check_admin_referer' ) + ->once() + ->andReturn( true ); + + Functions\expect('rocket_clean_domain'); + + do_action('admin_init'); + } +} diff --git a/tests/Integration/inc/ThirdParty/Hostings/Pressidium/pressidiumVarnishField.php b/tests/Integration/inc/ThirdParty/Hostings/Pressidium/pressidiumVarnishField.php new file mode 100644 index 0000000000..3ac9c99330 --- /dev/null +++ b/tests/Integration/inc/ThirdParty/Hostings/Pressidium/pressidiumVarnishField.php @@ -0,0 +1,20 @@ +assertSame($expected, apply_filters('rocket_varnish_field_settings', $config)); + } +} diff --git a/tests/Integration/inc/ThirdParty/Hostings/Pressidium/purgeUrl.php b/tests/Integration/inc/ThirdParty/Hostings/Pressidium/purgeUrl.php new file mode 100644 index 0000000000..f40812c84a --- /dev/null +++ b/tests/Integration/inc/ThirdParty/Hostings/Pressidium/purgeUrl.php @@ -0,0 +1,41 @@ +ninukis_caching = Mockery::mock('overload:' . NinukisCaching::class); + } + + public function tear_down(): void + { + parent::tear_down(); + } + + /** + * @dataProvider configTestData + */ + public function testShouldReturnExpected($config): void + { + $this->ninukis_caching->expects()->purge_url(); + + do_action('after_rocket_clean_file'); + } +} diff --git a/tests/Unit/inc/ThirdParty/Hostings/Pressidium/cleanPost.php b/tests/Unit/inc/ThirdParty/Hostings/Pressidium/cleanPost.php new file mode 100644 index 0000000000..95627ef145 --- /dev/null +++ b/tests/Unit/inc/ThirdParty/Hostings/Pressidium/cleanPost.php @@ -0,0 +1,42 @@ +subscriber = new Pressidium(); + } + + /** + * @dataProvider configTestData + */ + public function testShouldReturnExpected( $config, $expected ) + { + Functions\when('wp_parse_url')->justReturn($config['parsed_url']); + + $ninukis_caching = Mockery::mock('overload:' . NinukisCaching::class); + $ninukis_caching->expects()->get_instance()->andReturn($ninukis_caching); + $ninukis_caching->expects()->get_paths($config['url'])->andReturn($config['path']); + $ninukis_caching->expects()->purge_cache($config['path']); + + $this->subscriber->purge_url($config['url']); + } +} diff --git a/tests/Unit/inc/ThirdParty/Hostings/Pressidium/cleanPressidium.php b/tests/Unit/inc/ThirdParty/Hostings/Pressidium/cleanPressidium.php new file mode 100644 index 0000000000..22d8bbc845 --- /dev/null +++ b/tests/Unit/inc/ThirdParty/Hostings/Pressidium/cleanPressidium.php @@ -0,0 +1,34 @@ +subscriber = new Pressidium(); + } + + public function testShouldReturnExpected() + { + $ninukis_plugin = Mockery::mock('overload:' . NinukisCaching::class); + $ninukis_plugin->expects()->get_instance()->andReturn($ninukis_plugin); + $ninukis_plugin->expects()->purgeAllCaches(); + $this->subscriber->clean_pressidium(); + } +} diff --git a/tests/Unit/inc/ThirdParty/Hostings/Pressidium/clearCacheAfterPressidium.php b/tests/Unit/inc/ThirdParty/Hostings/Pressidium/clearCacheAfterPressidium.php new file mode 100644 index 0000000000..fb4c84ebf1 --- /dev/null +++ b/tests/Unit/inc/ThirdParty/Hostings/Pressidium/clearCacheAfterPressidium.php @@ -0,0 +1,36 @@ +subscriber = new Pressidium(); + $_POST['purge-all'] = true; + if(! defined('WP_NINUKIS_WP_NAME')) { + define('WP_NINUKIS_WP_NAME', 'WP_NINUKIS_WP_NAME'); + } + } + + public function testShouldReturnExpected() + { + Functions\expect('current_user_can')->with('manage_options')->andReturn(true); + Functions\expect('check_admin_referer')->with(WP_NINUKIS_WP_NAME . '-caching' )->andReturn(true); + Functions\expect('rocket_clean_domain'); + $this->subscriber->clear_cache_after_pressidium(); + } +} diff --git a/tests/Unit/inc/ThirdParty/Hostings/Pressidium/pressidiumVarnishField.php b/tests/Unit/inc/ThirdParty/Hostings/Pressidium/pressidiumVarnishField.php new file mode 100644 index 0000000000..0c5ec64f68 --- /dev/null +++ b/tests/Unit/inc/ThirdParty/Hostings/Pressidium/pressidiumVarnishField.php @@ -0,0 +1,33 @@ +subscriber = new Pressidium(); + } + + /** + * @dataProvider configTestData + */ + public function testShouldReturnExpected( $config, $expected ) + { + $this->stubTranslationFunctions(); + $this->assertSame($expected, $this->subscriber->pressidium_varnish_field($config)); + } +} diff --git a/tests/Unit/inc/ThirdParty/Hostings/Pressidium/purgeUrl.php b/tests/Unit/inc/ThirdParty/Hostings/Pressidium/purgeUrl.php new file mode 100644 index 0000000000..c946f46ca0 --- /dev/null +++ b/tests/Unit/inc/ThirdParty/Hostings/Pressidium/purgeUrl.php @@ -0,0 +1,44 @@ +subscriber = new Pressidium(); + } + + /** + * @dataProvider configTestData + */ + public function testShouldReturnExpected( $config, $expected ) + { + Functions\when( 'wp_parse_url' )->alias( function( $url = '' ) use ($config) { + return $config['parsed_url'][$url]; + } ); + + $ninukis_plugin = Mockery::mock('overload:' . NinukisCaching::class); + $ninukis_plugin->expects()->get_instance()->andReturn($ninukis_plugin); + + $ninukis_plugin->expects()->get_paths($config['urls'])->andReturn($config['path']); + $ninukis_plugin->expects()->purge_cache($config['path']); + $this->subscriber->purge_url($config['urls']); + } +} From 8b42685dec70f8a75f18795fdfa0b07c0b65c7b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20Robin?= Date: Thu, 19 Oct 2023 18:33:25 +0700 Subject: [PATCH 04/13] Closes #6204: Refine RUCSS error reporting (#6216) Co-authored-by: mostafa-hisham Co-authored-by: mostafa-hisham Co-authored-by: COQUARD Cyrille --- .../Optimization/RUCSS/Controller/UsedCSS.php | 10 +- .../RUCSS/Database/Queries/UsedCSS.php | 23 ++- .../RUCSS/Database/Row/UsedCSS.php | 8 + .../RUCSS/Database/Schemas/UsedCSS.php | 10 + .../RUCSS/Database/Tables/UsedCSS.php | 21 +- .../Optimization/RUCSS/Frontend/APIClient.php | 4 +- .../Controller/UsedCSS/updateMessage.php | 25 +++ .../RUCSS/Cron/Subscriber/checkJobStatus.php | 192 ++++++++++++++++++ tests/Integration/DBTrait.php | 12 +- .../RUCSS/Cron/Subscriber/checkJobStatus.php | 78 +++++++ .../Controller/UsedCSS/check_job_status.php | 4 + .../Controller/UsedCSS/updateMessage.php | 49 +++++ 12 files changed, 428 insertions(+), 8 deletions(-) create mode 100644 tests/Fixtures/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/updateMessage.php create mode 100644 tests/Fixtures/inc/Engine/Optimization/RUCSS/Cron/Subscriber/checkJobStatus.php create mode 100644 tests/Integration/inc/Engine/Optimization/RUCSS/Cron/Subscriber/checkJobStatus.php create mode 100644 tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/updateMessage.php diff --git a/inc/Engine/Optimization/RUCSS/Controller/UsedCSS.php b/inc/Engine/Optimization/RUCSS/Controller/UsedCSS.php index e06e888b6d..79d736735c 100644 --- a/inc/Engine/Optimization/RUCSS/Controller/UsedCSS.php +++ b/inc/Engine/Optimization/RUCSS/Controller/UsedCSS.php @@ -690,6 +690,7 @@ public function check_job_status( int $id ) { // Increment the retries number with 1 , Change status to pending again and change job id on timeout. $this->used_css_query->increment_retries( $id, $row_details->retries ); + $this->used_css_query->update_message( $id, $job_details['code'], $job_details['message'], $row_details->error_message ); // @Todo: Maybe we can add this row to the async job to get the status before the next cron @@ -704,7 +705,14 @@ public function check_job_status( int $id ) { $css = $this->apply_font_display_swap( $job_details['contents']['shakedCSS'] ); - $hash = md5( $css ); + /** + * RUCSS hash. + * + * @param string $hash RUCSS hash. + * @param string $css RUCSS content. + * @param UsedCSSRow $row_details Job details. + */ + $hash = (string) apply_filters( 'rocket_rucss_hash', md5( $css ), $css, $row_details ); if ( ! $this->filesystem->write_used_css( $hash, $css ) ) { $message = 'RUCSS: Could not write used CSS to the filesystem: ' . $row_details->url; diff --git a/inc/Engine/Optimization/RUCSS/Database/Queries/UsedCSS.php b/inc/Engine/Optimization/RUCSS/Database/Queries/UsedCSS.php index af8c612feb..c10bdc370c 100644 --- a/inc/Engine/Optimization/RUCSS/Database/Queries/UsedCSS.php +++ b/inc/Engine/Optimization/RUCSS/Database/Queries/UsedCSS.php @@ -174,6 +174,7 @@ public function create_new_job( string $url, string $job_id, string $queue_name, 'status' => 'pending', 'retries' => 0, 'last_accessed' => current_time( 'mysql', true ), + 'submitted_at' => current_time( 'mysql', true ), ]; return $this->add_item( $item ); } @@ -220,6 +221,7 @@ public function reset_job( int $id, string $job_id ) { 'error_message' => '', 'retries' => 0, 'modified' => current_time( 'mysql', true ), + 'submitted_at' => current_time( 'mysql', true ), ] ); } @@ -243,7 +245,7 @@ public function make_status_failed( int $id, string $error_code, string $error_m [ 'status' => 'failed', 'error_code' => $error_code, - 'error_message' => $error_message, + 'error_message' => current_time( 'mysql', true ) . " {$error_code}: {$error_message}", ] ); } @@ -514,4 +516,23 @@ private function table_exists(): bool { return $exists; } + + /** + * Update the error message. + * + * @param int $job_id Job ID. + * @param int $code Response code. + * @param string $message Response message. + * @param string $previous_message Previous saved message. + * + * @return bool + */ + public function update_message( int $job_id, int $code, string $message, string $previous_message = '' ): bool { + return $this->update_item( + $job_id, + [ + 'error_message' => $previous_message . ' - ' . current_time( 'mysql', true ) . " {$code}: {$message}", + ] + ); + } } diff --git a/inc/Engine/Optimization/RUCSS/Database/Row/UsedCSS.php b/inc/Engine/Optimization/RUCSS/Database/Row/UsedCSS.php index aa953c73fc..612de39b72 100644 --- a/inc/Engine/Optimization/RUCSS/Database/Row/UsedCSS.php +++ b/inc/Engine/Optimization/RUCSS/Database/Row/UsedCSS.php @@ -106,6 +106,13 @@ class UsedCSS extends Row { */ public $unprocessedcss; + /** + * Submitted date + * + * @var int + */ + public $submitted_at; + /** * UsedCSS constructor. * @@ -128,5 +135,6 @@ public function __construct( $item ) { $this->status = (string) $this->status; $this->modified = empty( $this->modified ) ? 0 : strtotime( $this->modified ); $this->last_accessed = empty( $this->last_accessed ) ? 0 : strtotime( $this->last_accessed ); + $this->submitted_at = empty( $this->submitted_at ) ? 0 : strtotime( $this->submitted_at ); } } diff --git a/inc/Engine/Optimization/RUCSS/Database/Schemas/UsedCSS.php b/inc/Engine/Optimization/RUCSS/Database/Schemas/UsedCSS.php index e89fbf3bfb..064b5e54f6 100644 --- a/inc/Engine/Optimization/RUCSS/Database/Schemas/UsedCSS.php +++ b/inc/Engine/Optimization/RUCSS/Database/Schemas/UsedCSS.php @@ -154,5 +154,15 @@ class UsedCSS extends Schema { 'date_query' => true, 'sortable' => true, ], + + // SUBMITTED_AT column. + [ + 'name' => 'submitted_at', + 'type' => 'timestamp', + 'default' => null, + 'created' => true, + 'date_query' => true, + 'sortable' => true, + ], ]; } diff --git a/inc/Engine/Optimization/RUCSS/Database/Tables/UsedCSS.php b/inc/Engine/Optimization/RUCSS/Database/Tables/UsedCSS.php index 5c432ec13d..2ac29cf71f 100644 --- a/inc/Engine/Optimization/RUCSS/Database/Tables/UsedCSS.php +++ b/inc/Engine/Optimization/RUCSS/Database/Tables/UsedCSS.php @@ -28,7 +28,7 @@ class UsedCSS extends Table { * * @var int */ - protected $version = 20220926; + protected $version = 20231010; /** * Key => value array of versions => methods. @@ -41,6 +41,7 @@ class UsedCSS extends Table { 20220513 => 'add_hash_column', 20220920 => 'make_status_column_index_instead_queue_name', 20221104 => 'add_error_columns', + 20231010 => 'add_submitted_at_column', ]; /** @@ -73,6 +74,7 @@ protected function set_schema() { status varchar(255) NOT NULL default '', modified timestamp NOT NULL default '0000-00-00 00:00:00', last_accessed timestamp NOT NULL default '0000-00-00 00:00:00', + submitted_at timestamp NULL, PRIMARY KEY (id), KEY url (url(150), is_mobile), KEY modified (modified), @@ -323,4 +325,21 @@ private function make_error_code_column_index() { $index_added = $this->get_db()->query( "ALTER TABLE {$this->table_name} ADD INDEX `error_code_index` (`error_code`) " ); return $this->is_success( $index_added ); } + + /** + * Adds the submitted_at column + * + * @return bool + */ + protected function add_submitted_at_column() { + $submitted_at_column_exists = $this->column_exists( 'submitted_at' ); + + $created = true; + + if ( ! $submitted_at_column_exists ) { + $created &= $this->get_db()->query( "ALTER TABLE `{$this->table_name}` ADD COLUMN submitted_at timestamp NULL AFTER last_accessed" ); + } + + return $this->is_success( $created ); + } } diff --git a/inc/Engine/Optimization/RUCSS/Frontend/APIClient.php b/inc/Engine/Optimization/RUCSS/Frontend/APIClient.php index 69784e0520..2caea09048 100644 --- a/inc/Engine/Optimization/RUCSS/Frontend/APIClient.php +++ b/inc/Engine/Optimization/RUCSS/Frontend/APIClient.php @@ -48,7 +48,7 @@ public function add_to_queue( string $url, array $options ): array { $default = [ 'code' => 400, - 'message' => 'Bad json', + 'message' => 'No message. Defaulted in add_to_queue', 'contents' => [ 'jobId' => 0, 'queueName' => '', @@ -93,7 +93,7 @@ public function get_queue_job_status( $job_id, $queue_name, $is_home = false ) { $default = [ 'code' => 400, 'status' => 'failed', - 'message' => 'Bad json', + 'message' => 'No message. Defaulted in get_queue_job_status', 'contents' => [ 'success' => false, 'shakedCSS' => '', diff --git a/tests/Fixtures/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/updateMessage.php b/tests/Fixtures/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/updateMessage.php new file mode 100644 index 0000000000..8bd7059ee8 --- /dev/null +++ b/tests/Fixtures/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/updateMessage.php @@ -0,0 +1,25 @@ + [ + 'config' => [ + 'ressources' => [ + 'job_id' => 123, + 'code' => 200, + 'message' => 'message', + 'previous_message' => '' + ], + 'result' => true + ], + 'expected' => [ + 'ressources' => [ + 'job_id' => 123, + 'code' => 200, + 'message' => 'message', + 'previous_message' => '', + 'error_message' => ' - 2023-10-11 20:21:00 200: message' + ], + 'result' => true + ] + ] +]; diff --git a/tests/Fixtures/inc/Engine/Optimization/RUCSS/Cron/Subscriber/checkJobStatus.php b/tests/Fixtures/inc/Engine/Optimization/RUCSS/Cron/Subscriber/checkJobStatus.php new file mode 100644 index 0000000000..1aef4d2616 --- /dev/null +++ b/tests/Fixtures/inc/Engine/Optimization/RUCSS/Cron/Subscriber/checkJobStatus.php @@ -0,0 +1,192 @@ + "rucss_jobs", + "data" => [ + "url" => "https://example.org/", + "use_cache" => false, + "is_mobile" => false, + "continent_code" => "EU", + "queue_name" => "rucssJob_EU_Home", + "is_home" => true, + "pluginSafeList" => [ + ], + "skipAttrs" => [ + ], + "start_at" => 1691650637819 + ], + "opts" => [ + "attempts" => 0, + "delay" => 0, + "removeOnFail" => [ + "age" => 1800 + ], + "removeOnComplete" => [ + "age" => 1800 + ] + ], + "id" => "6026944", + "progress" => 0, + "returnvalue" => [ + "code" => 200, + "status" => "completed", + "elapsed_time" => "467ms", + "coverage_time" => "450ms", + "purge_time" => "17ms", + "message" => "Treeshaked successfully!", + "contents" => [ + "success" => true, + "shakedCSS" => "body{background-color:#f0f0f2;margin:0;padding:0;font-family:-apple-system,system-ui,BlinkMacSystemFont,\"Segoe UI\",\"Open Sans\", \"Helvetica Neue\",Helvetica,Arial,sans-serif}div{width:600px;margin:5em auto;padding:2em;background-color:#fdfdff;border-radius:.5em;box-shadow:2px 3px 7px 2px rgba(0,0,0,.02)}a:link,a:visited{color:#38488f;text-decoration:none}@media (max-width:700px){div{margin:0 auto;width:auto}}", + "shakedCSS_size" => 409, + "orginalCSS_size" => 650 + ], + "server_ip" => "51.178.134.82" + ], + "stacktrace" => [ + ], + "attemptsMade" => 1, + "delay" => 0, + "timestamp" => 1691650637819, + "finishedOn" => 1691650638313, + "processedOn" => 1691650637834 +]); + +$error_response = json_encode([ + "name" => "rucss_jobs", + "data" => [ + "url" => "https://testrocket.cloudaccess.host/fr/", + "use_cache" => false, + "is_mobile" => false, + "continent_code" => "EU", + "queue_name" => "rucssJob_EU_Home", + "is_home" => true, + "pluginSafeList" => [ + ], + "skipAttrs" => [ + ], + "start_at" => 1691650390780 + ], + "opts" => [ + "attempts" => 0, + "delay" => 0, + "removeOnFail" => [ + "age" => 1800 + ], + "removeOnComplete" => [ + "age" => 1800 + ] + ], + "id" => "6026821", + "progress" => 0, + "returnvalue" => [ + "code" => 500, + "status" => "failed", + "error" => "Error", + "message" => "net::ERR_NAME_NOT_RESOLVED at https://testrocket.cloudaccess.host/fr/" + ], + "stacktrace" => [ + ], + "attemptsMade" => 1, + "delay" => 0, + "timestamp" => 1691650390780, + "finishedOn" => 1691650390888, + "processedOn" => 1691650390781 +]); + +$success_response_create = json_encode( [ + "code" => 200, + "message" => "Added to Queue successfully.", + "contents" => [ + "jobId" => "OVH_EU--6026944", + "queueName" => "EU", + "isHome" => true, + "queueFullName" => "rucssJob_EU_Home" + ] +]); + +return [ + 'structure' => [], + 'test_data' => [ + 'rowShouldShouldReturnCss' => [ + 'config' => [ + 'hash' => 'hash', + 'row' => [ + 'url' => 'https://example.org', + 'job_id' => '123', + 'queue_name' => 'queue', + ], + 'request' => [ + 'url' => 'http://localhostrucss-job', + 'method' => 'GET', + 'response' => [ + 'response' => [ + 'code' => 200, + ], + 'body' => $success_response + ] + ] + ], + 'expected' => [ + 'rows' => [ + [ + 'status' => 'completed', + 'job_id' => '123', + 'queue_name' => 'queue', + 'hash' => 'hash', + ] + ], + 'files' => [ + '/wp-content/cache/used-css/1/h/a/s/h.css.gz' => [ + 'exists' => true, + ] + ] + ] + ], + '408ShouldRecreateJob' => [ + 'config' => [ + 'hash' => 'hash', + 'row' => [ + 'url' => 'https://example.org', + 'job_id' => '123', + 'queue_name' => 'queue', + ], + 'request' => [ + 'url' => 'http://localhostrucss-job', + 'method' => 'GET', + 'response' => [ + 'response' => [ + 'code' => 408, + 'message' => 'bad json' + ], + 'body' => $error_response + ] + ], + 'create' => [ + 'url' => 'http://localhostrucss-job', + 'method' => 'POST', + 'response' => [ + 'response' => [ + 'code' => 200, + ], + 'body' => $success_response_create + ] + ] + ], + 'expected' => [ + 'rows' => [ + [ + 'status' => 'pending', + 'job_id' => 'OVH_EU--6026944', + 'queue_name' => 'queue', + 'hash' => '', + ] + ], + 'files' => [ + '/wp-content/cache/used-css/1/h/a/s/h.css.gz' => [ + 'exists' => false, + ] + ] + ] + ], + ] +]; diff --git a/tests/Integration/DBTrait.php b/tests/Integration/DBTrait.php index 04ee9d38c6..4699d305c9 100644 --- a/tests/Integration/DBTrait.php +++ b/tests/Integration/DBTrait.php @@ -5,8 +5,14 @@ trait DBTrait { public static function resourceFound( array $resource ) : bool { $container = apply_filters( 'rocket_container', null ); - $resource_query = $container->get( 'rucss_resources_query' ); - return $resource_query->query( $resource ); + $resource_query = $container->get( 'rucss_used_css_query' ); + return count($resource_query->query( $resource )) > 0; + } + + public static function addResource(array $resource) { + $container = apply_filters( 'rocket_container', null ); + $resource_query = $container->get( 'rucss_used_css_query' ); + return $resource_query->create_new_job($resource['url'], $resource['job_id'], $resource['queue_name']); } public static function cacheFound( array $cache): bool { @@ -37,7 +43,7 @@ public static function installFresh() { $rucss_usedcss_table = $container->get( 'rucss_usedcss_table' ); $rucss_usedcss_table->install(); - + $container->get( 'rucss_used_css_query' )::$table_exists = true; $preload_cache_table = $container->get( 'preload_caches_table' ); $preload_cache_table->install(); } diff --git a/tests/Integration/inc/Engine/Optimization/RUCSS/Cron/Subscriber/checkJobStatus.php b/tests/Integration/inc/Engine/Optimization/RUCSS/Cron/Subscriber/checkJobStatus.php new file mode 100644 index 0000000000..39eb29fc7b --- /dev/null +++ b/tests/Integration/inc/Engine/Optimization/RUCSS/Cron/Subscriber/checkJobStatus.php @@ -0,0 +1,78 @@ +config = $config; + $id = self::addResource($config['row']); + do_action('rocket_rucss_job_check_status', $id); + + foreach ($expected['rows'] as $row) { + self::assertTrue(self::resourceFound($row)); + } + foreach ($expected['files'] as $path => $file) { + self::assertSame($file['exists'], $this->filesystem->exists($path)); + } + } + + + public function mock_http($response, $args, $url) { + if($url === $this->config['request']['url'] && $args['method'] === $this->config['request']['method'] ) { + return $this->config['request']['response']; + } + + if($url === $this->config['create']['url'] && $args['method'] === $this->config['create']['method'] ) { + return $this->config['create']['response']; + } + + return $response; + } + public function rucss_hash() { + return $this->config['hash']; + } +} + diff --git a/tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/check_job_status.php b/tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/check_job_status.php index 8a5d1ce9da..4a27922ccd 100644 --- a/tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/check_job_status.php +++ b/tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/check_job_status.php @@ -144,6 +144,10 @@ public function testShouldReturnAsExpected( $config, $expected ) { ->method( 'increment_retries' ) ->with( $config['job_id'], $row_details->retries ); + $this->usedCssQuery->expects(self::once()) + ->method('update_message') + ->with($config['job_id'], $job_details['code'], $job_details['message']); + $this->usedCss->check_job_status( $config['job_id'] ); return; diff --git a/tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/updateMessage.php b/tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/updateMessage.php new file mode 100644 index 0000000000..c70357ab7e --- /dev/null +++ b/tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/updateMessage.php @@ -0,0 +1,49 @@ +usedCss = $this->createPartialMock(UsedCSS::class, ['update_item']); + + } + + public function tearDown(): void { + parent::tearDown(); + } + + /** + * @dataProvider configTestData + */ + public function testShouldReturnAsExpected( $config, $expected ) + { + $this->usedCss->expects(self::once())->method('update_item')->with( + $expected['ressources']['job_id'], + [ + 'error_message' => $expected['ressources']['error_message'] + ] + )->willReturn($config['result']); + + Functions\expect('current_time')->andReturn('2023-10-11 20:21:00'); + + $this->assertSame( + $expected['result'], + $this->usedCss->update_message( + $config['ressources']['job_id'], + $config['ressources']['code'], + $config['ressources']['message'], + $config['ressources']['previous_message'] + ) + ); + } +} From 593b17717eca9793dc71a4bf2261c8030cd4d655 Mon Sep 17 00:00:00 2001 From: Cyrille C <18537428+CrochetFeve0251@users.noreply.github.com> Date: Thu, 19 Oct 2023 14:33:41 +0200 Subject: [PATCH 05/13] Revert "Closes #6204: Refine RUCSS error reporting" (#6236) --- .../Optimization/RUCSS/Controller/UsedCSS.php | 10 +- .../RUCSS/Database/Queries/UsedCSS.php | 23 +-- .../RUCSS/Database/Row/UsedCSS.php | 8 - .../RUCSS/Database/Schemas/UsedCSS.php | 10 - .../RUCSS/Database/Tables/UsedCSS.php | 21 +- .../Optimization/RUCSS/Frontend/APIClient.php | 4 +- .../Controller/UsedCSS/updateMessage.php | 25 --- .../RUCSS/Cron/Subscriber/checkJobStatus.php | 192 ------------------ tests/Integration/DBTrait.php | 12 +- .../RUCSS/Cron/Subscriber/checkJobStatus.php | 78 ------- .../Controller/UsedCSS/check_job_status.php | 4 - .../Controller/UsedCSS/updateMessage.php | 49 ----- 12 files changed, 8 insertions(+), 428 deletions(-) delete mode 100644 tests/Fixtures/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/updateMessage.php delete mode 100644 tests/Fixtures/inc/Engine/Optimization/RUCSS/Cron/Subscriber/checkJobStatus.php delete mode 100644 tests/Integration/inc/Engine/Optimization/RUCSS/Cron/Subscriber/checkJobStatus.php delete mode 100644 tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/updateMessage.php diff --git a/inc/Engine/Optimization/RUCSS/Controller/UsedCSS.php b/inc/Engine/Optimization/RUCSS/Controller/UsedCSS.php index 79d736735c..e06e888b6d 100644 --- a/inc/Engine/Optimization/RUCSS/Controller/UsedCSS.php +++ b/inc/Engine/Optimization/RUCSS/Controller/UsedCSS.php @@ -690,7 +690,6 @@ public function check_job_status( int $id ) { // Increment the retries number with 1 , Change status to pending again and change job id on timeout. $this->used_css_query->increment_retries( $id, $row_details->retries ); - $this->used_css_query->update_message( $id, $job_details['code'], $job_details['message'], $row_details->error_message ); // @Todo: Maybe we can add this row to the async job to get the status before the next cron @@ -705,14 +704,7 @@ public function check_job_status( int $id ) { $css = $this->apply_font_display_swap( $job_details['contents']['shakedCSS'] ); - /** - * RUCSS hash. - * - * @param string $hash RUCSS hash. - * @param string $css RUCSS content. - * @param UsedCSSRow $row_details Job details. - */ - $hash = (string) apply_filters( 'rocket_rucss_hash', md5( $css ), $css, $row_details ); + $hash = md5( $css ); if ( ! $this->filesystem->write_used_css( $hash, $css ) ) { $message = 'RUCSS: Could not write used CSS to the filesystem: ' . $row_details->url; diff --git a/inc/Engine/Optimization/RUCSS/Database/Queries/UsedCSS.php b/inc/Engine/Optimization/RUCSS/Database/Queries/UsedCSS.php index c10bdc370c..af8c612feb 100644 --- a/inc/Engine/Optimization/RUCSS/Database/Queries/UsedCSS.php +++ b/inc/Engine/Optimization/RUCSS/Database/Queries/UsedCSS.php @@ -174,7 +174,6 @@ public function create_new_job( string $url, string $job_id, string $queue_name, 'status' => 'pending', 'retries' => 0, 'last_accessed' => current_time( 'mysql', true ), - 'submitted_at' => current_time( 'mysql', true ), ]; return $this->add_item( $item ); } @@ -221,7 +220,6 @@ public function reset_job( int $id, string $job_id ) { 'error_message' => '', 'retries' => 0, 'modified' => current_time( 'mysql', true ), - 'submitted_at' => current_time( 'mysql', true ), ] ); } @@ -245,7 +243,7 @@ public function make_status_failed( int $id, string $error_code, string $error_m [ 'status' => 'failed', 'error_code' => $error_code, - 'error_message' => current_time( 'mysql', true ) . " {$error_code}: {$error_message}", + 'error_message' => $error_message, ] ); } @@ -516,23 +514,4 @@ private function table_exists(): bool { return $exists; } - - /** - * Update the error message. - * - * @param int $job_id Job ID. - * @param int $code Response code. - * @param string $message Response message. - * @param string $previous_message Previous saved message. - * - * @return bool - */ - public function update_message( int $job_id, int $code, string $message, string $previous_message = '' ): bool { - return $this->update_item( - $job_id, - [ - 'error_message' => $previous_message . ' - ' . current_time( 'mysql', true ) . " {$code}: {$message}", - ] - ); - } } diff --git a/inc/Engine/Optimization/RUCSS/Database/Row/UsedCSS.php b/inc/Engine/Optimization/RUCSS/Database/Row/UsedCSS.php index 612de39b72..aa953c73fc 100644 --- a/inc/Engine/Optimization/RUCSS/Database/Row/UsedCSS.php +++ b/inc/Engine/Optimization/RUCSS/Database/Row/UsedCSS.php @@ -106,13 +106,6 @@ class UsedCSS extends Row { */ public $unprocessedcss; - /** - * Submitted date - * - * @var int - */ - public $submitted_at; - /** * UsedCSS constructor. * @@ -135,6 +128,5 @@ public function __construct( $item ) { $this->status = (string) $this->status; $this->modified = empty( $this->modified ) ? 0 : strtotime( $this->modified ); $this->last_accessed = empty( $this->last_accessed ) ? 0 : strtotime( $this->last_accessed ); - $this->submitted_at = empty( $this->submitted_at ) ? 0 : strtotime( $this->submitted_at ); } } diff --git a/inc/Engine/Optimization/RUCSS/Database/Schemas/UsedCSS.php b/inc/Engine/Optimization/RUCSS/Database/Schemas/UsedCSS.php index 064b5e54f6..e89fbf3bfb 100644 --- a/inc/Engine/Optimization/RUCSS/Database/Schemas/UsedCSS.php +++ b/inc/Engine/Optimization/RUCSS/Database/Schemas/UsedCSS.php @@ -154,15 +154,5 @@ class UsedCSS extends Schema { 'date_query' => true, 'sortable' => true, ], - - // SUBMITTED_AT column. - [ - 'name' => 'submitted_at', - 'type' => 'timestamp', - 'default' => null, - 'created' => true, - 'date_query' => true, - 'sortable' => true, - ], ]; } diff --git a/inc/Engine/Optimization/RUCSS/Database/Tables/UsedCSS.php b/inc/Engine/Optimization/RUCSS/Database/Tables/UsedCSS.php index 2ac29cf71f..5c432ec13d 100644 --- a/inc/Engine/Optimization/RUCSS/Database/Tables/UsedCSS.php +++ b/inc/Engine/Optimization/RUCSS/Database/Tables/UsedCSS.php @@ -28,7 +28,7 @@ class UsedCSS extends Table { * * @var int */ - protected $version = 20231010; + protected $version = 20220926; /** * Key => value array of versions => methods. @@ -41,7 +41,6 @@ class UsedCSS extends Table { 20220513 => 'add_hash_column', 20220920 => 'make_status_column_index_instead_queue_name', 20221104 => 'add_error_columns', - 20231010 => 'add_submitted_at_column', ]; /** @@ -74,7 +73,6 @@ protected function set_schema() { status varchar(255) NOT NULL default '', modified timestamp NOT NULL default '0000-00-00 00:00:00', last_accessed timestamp NOT NULL default '0000-00-00 00:00:00', - submitted_at timestamp NULL, PRIMARY KEY (id), KEY url (url(150), is_mobile), KEY modified (modified), @@ -325,21 +323,4 @@ private function make_error_code_column_index() { $index_added = $this->get_db()->query( "ALTER TABLE {$this->table_name} ADD INDEX `error_code_index` (`error_code`) " ); return $this->is_success( $index_added ); } - - /** - * Adds the submitted_at column - * - * @return bool - */ - protected function add_submitted_at_column() { - $submitted_at_column_exists = $this->column_exists( 'submitted_at' ); - - $created = true; - - if ( ! $submitted_at_column_exists ) { - $created &= $this->get_db()->query( "ALTER TABLE `{$this->table_name}` ADD COLUMN submitted_at timestamp NULL AFTER last_accessed" ); - } - - return $this->is_success( $created ); - } } diff --git a/inc/Engine/Optimization/RUCSS/Frontend/APIClient.php b/inc/Engine/Optimization/RUCSS/Frontend/APIClient.php index 2caea09048..69784e0520 100644 --- a/inc/Engine/Optimization/RUCSS/Frontend/APIClient.php +++ b/inc/Engine/Optimization/RUCSS/Frontend/APIClient.php @@ -48,7 +48,7 @@ public function add_to_queue( string $url, array $options ): array { $default = [ 'code' => 400, - 'message' => 'No message. Defaulted in add_to_queue', + 'message' => 'Bad json', 'contents' => [ 'jobId' => 0, 'queueName' => '', @@ -93,7 +93,7 @@ public function get_queue_job_status( $job_id, $queue_name, $is_home = false ) { $default = [ 'code' => 400, 'status' => 'failed', - 'message' => 'No message. Defaulted in get_queue_job_status', + 'message' => 'Bad json', 'contents' => [ 'success' => false, 'shakedCSS' => '', diff --git a/tests/Fixtures/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/updateMessage.php b/tests/Fixtures/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/updateMessage.php deleted file mode 100644 index 8bd7059ee8..0000000000 --- a/tests/Fixtures/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/updateMessage.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - 'config' => [ - 'ressources' => [ - 'job_id' => 123, - 'code' => 200, - 'message' => 'message', - 'previous_message' => '' - ], - 'result' => true - ], - 'expected' => [ - 'ressources' => [ - 'job_id' => 123, - 'code' => 200, - 'message' => 'message', - 'previous_message' => '', - 'error_message' => ' - 2023-10-11 20:21:00 200: message' - ], - 'result' => true - ] - ] -]; diff --git a/tests/Fixtures/inc/Engine/Optimization/RUCSS/Cron/Subscriber/checkJobStatus.php b/tests/Fixtures/inc/Engine/Optimization/RUCSS/Cron/Subscriber/checkJobStatus.php deleted file mode 100644 index 1aef4d2616..0000000000 --- a/tests/Fixtures/inc/Engine/Optimization/RUCSS/Cron/Subscriber/checkJobStatus.php +++ /dev/null @@ -1,192 +0,0 @@ - "rucss_jobs", - "data" => [ - "url" => "https://example.org/", - "use_cache" => false, - "is_mobile" => false, - "continent_code" => "EU", - "queue_name" => "rucssJob_EU_Home", - "is_home" => true, - "pluginSafeList" => [ - ], - "skipAttrs" => [ - ], - "start_at" => 1691650637819 - ], - "opts" => [ - "attempts" => 0, - "delay" => 0, - "removeOnFail" => [ - "age" => 1800 - ], - "removeOnComplete" => [ - "age" => 1800 - ] - ], - "id" => "6026944", - "progress" => 0, - "returnvalue" => [ - "code" => 200, - "status" => "completed", - "elapsed_time" => "467ms", - "coverage_time" => "450ms", - "purge_time" => "17ms", - "message" => "Treeshaked successfully!", - "contents" => [ - "success" => true, - "shakedCSS" => "body{background-color:#f0f0f2;margin:0;padding:0;font-family:-apple-system,system-ui,BlinkMacSystemFont,\"Segoe UI\",\"Open Sans\", \"Helvetica Neue\",Helvetica,Arial,sans-serif}div{width:600px;margin:5em auto;padding:2em;background-color:#fdfdff;border-radius:.5em;box-shadow:2px 3px 7px 2px rgba(0,0,0,.02)}a:link,a:visited{color:#38488f;text-decoration:none}@media (max-width:700px){div{margin:0 auto;width:auto}}", - "shakedCSS_size" => 409, - "orginalCSS_size" => 650 - ], - "server_ip" => "51.178.134.82" - ], - "stacktrace" => [ - ], - "attemptsMade" => 1, - "delay" => 0, - "timestamp" => 1691650637819, - "finishedOn" => 1691650638313, - "processedOn" => 1691650637834 -]); - -$error_response = json_encode([ - "name" => "rucss_jobs", - "data" => [ - "url" => "https://testrocket.cloudaccess.host/fr/", - "use_cache" => false, - "is_mobile" => false, - "continent_code" => "EU", - "queue_name" => "rucssJob_EU_Home", - "is_home" => true, - "pluginSafeList" => [ - ], - "skipAttrs" => [ - ], - "start_at" => 1691650390780 - ], - "opts" => [ - "attempts" => 0, - "delay" => 0, - "removeOnFail" => [ - "age" => 1800 - ], - "removeOnComplete" => [ - "age" => 1800 - ] - ], - "id" => "6026821", - "progress" => 0, - "returnvalue" => [ - "code" => 500, - "status" => "failed", - "error" => "Error", - "message" => "net::ERR_NAME_NOT_RESOLVED at https://testrocket.cloudaccess.host/fr/" - ], - "stacktrace" => [ - ], - "attemptsMade" => 1, - "delay" => 0, - "timestamp" => 1691650390780, - "finishedOn" => 1691650390888, - "processedOn" => 1691650390781 -]); - -$success_response_create = json_encode( [ - "code" => 200, - "message" => "Added to Queue successfully.", - "contents" => [ - "jobId" => "OVH_EU--6026944", - "queueName" => "EU", - "isHome" => true, - "queueFullName" => "rucssJob_EU_Home" - ] -]); - -return [ - 'structure' => [], - 'test_data' => [ - 'rowShouldShouldReturnCss' => [ - 'config' => [ - 'hash' => 'hash', - 'row' => [ - 'url' => 'https://example.org', - 'job_id' => '123', - 'queue_name' => 'queue', - ], - 'request' => [ - 'url' => 'http://localhostrucss-job', - 'method' => 'GET', - 'response' => [ - 'response' => [ - 'code' => 200, - ], - 'body' => $success_response - ] - ] - ], - 'expected' => [ - 'rows' => [ - [ - 'status' => 'completed', - 'job_id' => '123', - 'queue_name' => 'queue', - 'hash' => 'hash', - ] - ], - 'files' => [ - '/wp-content/cache/used-css/1/h/a/s/h.css.gz' => [ - 'exists' => true, - ] - ] - ] - ], - '408ShouldRecreateJob' => [ - 'config' => [ - 'hash' => 'hash', - 'row' => [ - 'url' => 'https://example.org', - 'job_id' => '123', - 'queue_name' => 'queue', - ], - 'request' => [ - 'url' => 'http://localhostrucss-job', - 'method' => 'GET', - 'response' => [ - 'response' => [ - 'code' => 408, - 'message' => 'bad json' - ], - 'body' => $error_response - ] - ], - 'create' => [ - 'url' => 'http://localhostrucss-job', - 'method' => 'POST', - 'response' => [ - 'response' => [ - 'code' => 200, - ], - 'body' => $success_response_create - ] - ] - ], - 'expected' => [ - 'rows' => [ - [ - 'status' => 'pending', - 'job_id' => 'OVH_EU--6026944', - 'queue_name' => 'queue', - 'hash' => '', - ] - ], - 'files' => [ - '/wp-content/cache/used-css/1/h/a/s/h.css.gz' => [ - 'exists' => false, - ] - ] - ] - ], - ] -]; diff --git a/tests/Integration/DBTrait.php b/tests/Integration/DBTrait.php index 4699d305c9..04ee9d38c6 100644 --- a/tests/Integration/DBTrait.php +++ b/tests/Integration/DBTrait.php @@ -5,14 +5,8 @@ trait DBTrait { public static function resourceFound( array $resource ) : bool { $container = apply_filters( 'rocket_container', null ); - $resource_query = $container->get( 'rucss_used_css_query' ); - return count($resource_query->query( $resource )) > 0; - } - - public static function addResource(array $resource) { - $container = apply_filters( 'rocket_container', null ); - $resource_query = $container->get( 'rucss_used_css_query' ); - return $resource_query->create_new_job($resource['url'], $resource['job_id'], $resource['queue_name']); + $resource_query = $container->get( 'rucss_resources_query' ); + return $resource_query->query( $resource ); } public static function cacheFound( array $cache): bool { @@ -43,7 +37,7 @@ public static function installFresh() { $rucss_usedcss_table = $container->get( 'rucss_usedcss_table' ); $rucss_usedcss_table->install(); - $container->get( 'rucss_used_css_query' )::$table_exists = true; + $preload_cache_table = $container->get( 'preload_caches_table' ); $preload_cache_table->install(); } diff --git a/tests/Integration/inc/Engine/Optimization/RUCSS/Cron/Subscriber/checkJobStatus.php b/tests/Integration/inc/Engine/Optimization/RUCSS/Cron/Subscriber/checkJobStatus.php deleted file mode 100644 index 39eb29fc7b..0000000000 --- a/tests/Integration/inc/Engine/Optimization/RUCSS/Cron/Subscriber/checkJobStatus.php +++ /dev/null @@ -1,78 +0,0 @@ -config = $config; - $id = self::addResource($config['row']); - do_action('rocket_rucss_job_check_status', $id); - - foreach ($expected['rows'] as $row) { - self::assertTrue(self::resourceFound($row)); - } - foreach ($expected['files'] as $path => $file) { - self::assertSame($file['exists'], $this->filesystem->exists($path)); - } - } - - - public function mock_http($response, $args, $url) { - if($url === $this->config['request']['url'] && $args['method'] === $this->config['request']['method'] ) { - return $this->config['request']['response']; - } - - if($url === $this->config['create']['url'] && $args['method'] === $this->config['create']['method'] ) { - return $this->config['create']['response']; - } - - return $response; - } - public function rucss_hash() { - return $this->config['hash']; - } -} - diff --git a/tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/check_job_status.php b/tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/check_job_status.php index 4a27922ccd..8a5d1ce9da 100644 --- a/tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/check_job_status.php +++ b/tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/check_job_status.php @@ -144,10 +144,6 @@ public function testShouldReturnAsExpected( $config, $expected ) { ->method( 'increment_retries' ) ->with( $config['job_id'], $row_details->retries ); - $this->usedCssQuery->expects(self::once()) - ->method('update_message') - ->with($config['job_id'], $job_details['code'], $job_details['message']); - $this->usedCss->check_job_status( $config['job_id'] ); return; diff --git a/tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/updateMessage.php b/tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/updateMessage.php deleted file mode 100644 index c70357ab7e..0000000000 --- a/tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/updateMessage.php +++ /dev/null @@ -1,49 +0,0 @@ -usedCss = $this->createPartialMock(UsedCSS::class, ['update_item']); - - } - - public function tearDown(): void { - parent::tearDown(); - } - - /** - * @dataProvider configTestData - */ - public function testShouldReturnAsExpected( $config, $expected ) - { - $this->usedCss->expects(self::once())->method('update_item')->with( - $expected['ressources']['job_id'], - [ - 'error_message' => $expected['ressources']['error_message'] - ] - )->willReturn($config['result']); - - Functions\expect('current_time')->andReturn('2023-10-11 20:21:00'); - - $this->assertSame( - $expected['result'], - $this->usedCss->update_message( - $config['ressources']['job_id'], - $config['ressources']['code'], - $config['ressources']['message'], - $config['ressources']['previous_message'] - ) - ); - } -} From 9f6068c218ce0a56ce5eee903a2f0f17deab2a4f Mon Sep 17 00:00:00 2001 From: Caspar Green Date: Thu, 19 Oct 2023 09:18:16 -0400 Subject: [PATCH 06/13] DRAFT PR - Testing failing integration test on Github action (#3543) --- tests/Integration/inc/common/rocketGetPurgeUrls.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Integration/inc/common/rocketGetPurgeUrls.php b/tests/Integration/inc/common/rocketGetPurgeUrls.php index 168bc7eb20..24ab125b85 100644 --- a/tests/Integration/inc/common/rocketGetPurgeUrls.php +++ b/tests/Integration/inc/common/rocketGetPurgeUrls.php @@ -6,7 +6,7 @@ use Brain\Monkey\Functions; /** - * @covers ::rocket_clean_cache_theme_update + * @covers ::rocket_get_purge_urls * @uses ::rocket_clean_domain * * @group Common From 30247ee2fbaafc61bfa91a2d39bfd315e874a45e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20Robin?= Date: Thu, 19 Oct 2023 20:57:24 +0700 Subject: [PATCH 07/13] Closes #6206: Conflict with Advanced Ads plugin causes fatal error when viewing Popular tab in the Ad New plugins page (#6226) --- inc/Engine/Plugin/InformationSubscriber.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/inc/Engine/Plugin/InformationSubscriber.php b/inc/Engine/Plugin/InformationSubscriber.php index 9e2b2452cf..93f11c3e78 100644 --- a/inc/Engine/Plugin/InformationSubscriber.php +++ b/inc/Engine/Plugin/InformationSubscriber.php @@ -177,6 +177,9 @@ public function add_plugins_to_result( $result, $action, $args ) { if ( in_array( $slug, $result_slugs, true ) ) { foreach ( $result->plugins as $index => $plugin ) { + if ( is_object( $plugin ) ) { + $plugin = (array) $plugin; + } if ( $slug === $plugin['slug'] ) { $move = $plugin; unset( $result->plugins[ $index ] ); From d0e9867140cf60bae15c43510993110faef685a2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 20 Oct 2023 09:05:25 -0400 Subject: [PATCH 08/13] Bump @babel/traverse from 7.16.3 to 7.23.2 (#6231) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 291 ++++++++++++++++++++++++---------------------- 1 file changed, 153 insertions(+), 138 deletions(-) diff --git a/package-lock.json b/package-lock.json index be616e6df7..2ab0f5e42b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -46,12 +46,13 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", - "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", "dev": true, "dependencies": { - "@babel/highlight": "^7.16.0" + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" }, "engines": { "node": ">=6.9.0" @@ -115,14 +116,15 @@ } }, "node_modules/@babel/generator": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", - "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", + "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" + "@babel/types": "^7.23.0", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" }, "engines": { "node": ">=6.9.0" @@ -226,51 +228,47 @@ "@babel/core": "^7.4.0-0" } }, - "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", - "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "dev": true, - "dependencies": { - "@babel/types": "^7.16.0" - }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-function-name": { + "node_modules/@babel/helper-explode-assignable-expression": { "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", - "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", + "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", "dev": true, "dependencies": { - "@babel/helper-get-function-arity": "^7.16.0", - "@babel/template": "^7.16.0", "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-get-function-arity": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", - "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", - "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -394,21 +392,30 @@ } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", - "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dev": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@babel/helper-string-parser": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", - "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true, "engines": { "node": ">=6.9.0" @@ -453,13 +460,13 @@ } }, "node_modules/@babel/highlight": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", - "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.15.7", - "chalk": "^2.0.0", + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, "engines": { @@ -467,9 +474,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.16.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz", - "integrity": "sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -1662,32 +1669,33 @@ "dev": true }, "node_modules/@babel/template": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", - "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.16.0", - "@babel/parser": "^7.16.0", - "@babel/types": "^7.16.0" + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.3.tgz", - "integrity": "sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.16.0", - "@babel/generator": "^7.16.0", - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-hoist-variables": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "@babel/parser": "^7.16.3", - "@babel/types": "^7.16.0", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -1696,12 +1704,13 @@ } }, "node_modules/@babel/types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", - "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.15.7", + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, "engines": { @@ -4168,7 +4177,7 @@ "node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, "node_modules/color-support": { @@ -6707,7 +6716,7 @@ "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, "engines": { "node": ">=4" @@ -12314,12 +12323,13 @@ }, "dependencies": { "@babel/code-frame": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", - "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", "dev": true, "requires": { - "@babel/highlight": "^7.16.0" + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" } }, "@babel/compat-data": { @@ -12363,14 +12373,15 @@ } }, "@babel/generator": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", - "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", + "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", "dev": true, "requires": { - "@babel/types": "^7.16.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" + "@babel/types": "^7.23.0", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" } }, "@babel/helper-annotate-as-pure": { @@ -12444,6 +12455,12 @@ "semver": "^6.1.2" } }, + "@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true + }, "@babel/helper-explode-assignable-expression": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", @@ -12454,32 +12471,22 @@ } }, "@babel/helper-function-name": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", - "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.16.0", - "@babel/template": "^7.16.0", - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", - "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", - "dev": true, - "requires": { - "@babel/types": "^7.16.0" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" } }, "@babel/helper-hoist-variables": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", - "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.22.5" } }, "@babel/helper-member-expression-to-functions": { @@ -12573,18 +12580,24 @@ } }, "@babel/helper-split-export-declaration": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", - "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.22.5" } }, + "@babel/helper-string-parser": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "dev": true + }, "@babel/helper-validator-identifier": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", - "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true }, "@babel/helper-validator-option": { @@ -12617,20 +12630,20 @@ } }, "@babel/highlight": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", - "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.15.7", - "chalk": "^2.0.0", + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.16.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz", - "integrity": "sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", "dev": true }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { @@ -13426,40 +13439,42 @@ } }, "@babel/template": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", - "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", "dev": true, "requires": { - "@babel/code-frame": "^7.16.0", - "@babel/parser": "^7.16.0", - "@babel/types": "^7.16.0" + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" } }, "@babel/traverse": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.3.tgz", - "integrity": "sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.0", - "@babel/generator": "^7.16.0", - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-hoist-variables": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "@babel/parser": "^7.16.3", - "@babel/types": "^7.16.0", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", - "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.15.7", + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" } }, @@ -15603,7 +15618,7 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, "color-support": { @@ -17697,7 +17712,7 @@ "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true }, "has-gulplog": { From b613a0d95e9b04cb2e2688483485f2da77be3e6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20Robin?= Date: Mon, 23 Oct 2023 13:48:42 +0700 Subject: [PATCH 09/13] Closes #6186: Update Delay JS to latest version (#6198) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Gael Robin <“robin.gael@gmail.com”> --- assets/js/lazyload-scripts.min.js | 2 +- .../Engine/Optimization/DelayJS/Subscriber/addDelayJsScript.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/js/lazyload-scripts.min.js b/assets/js/lazyload-scripts.min.js index 9dc8092872..581bc3583e 100644 --- a/assets/js/lazyload-scripts.min.js +++ b/assets/js/lazyload-scripts.min.js @@ -1 +1 @@ -class RocketLazyLoadScripts{constructor(){this.v="1.2.3",this.triggerEvents=["keydown","mousedown","mousemove","touchmove","touchstart","touchend","wheel"],this.userEventHandler=this._triggerListener.bind(this),this.touchStartHandler=this._onTouchStart.bind(this),this.touchMoveHandler=this._onTouchMove.bind(this),this.touchEndHandler=this._onTouchEnd.bind(this),this.clickHandler=this._onClick.bind(this),this.interceptedClicks=[],window.addEventListener("pageshow",t=>{this.persisted=t.persisted}),window.addEventListener("DOMContentLoaded",()=>{this._preconnect3rdParties()}),this.delayedScripts={normal:[],async:[],defer:[]},this.trash=[],this.allJQueries=[]}_addUserInteractionListener(t){if(document.hidden){t._triggerListener();return}this.triggerEvents.forEach(e=>window.addEventListener(e,t.userEventHandler,{passive:!0})),window.addEventListener("touchstart",t.touchStartHandler,{passive:!0}),window.addEventListener("mousedown",t.touchStartHandler),document.addEventListener("visibilitychange",t.userEventHandler)}_removeUserInteractionListener(){this.triggerEvents.forEach(t=>window.removeEventListener(t,this.userEventHandler,{passive:!0})),document.removeEventListener("visibilitychange",this.userEventHandler)}_onTouchStart(t){"HTML"!==t.target.tagName&&(window.addEventListener("touchend",this.touchEndHandler),window.addEventListener("mouseup",this.touchEndHandler),window.addEventListener("touchmove",this.touchMoveHandler,{passive:!0}),window.addEventListener("mousemove",this.touchMoveHandler),t.target.addEventListener("click",this.clickHandler),this._renameDOMAttribute(t.target,"onclick","rocket-onclick"),this._pendingClickStarted())}_onTouchMove(t){window.removeEventListener("touchend",this.touchEndHandler),window.removeEventListener("mouseup",this.touchEndHandler),window.removeEventListener("touchmove",this.touchMoveHandler,{passive:!0}),window.removeEventListener("mousemove",this.touchMoveHandler),t.target.removeEventListener("click",this.clickHandler),this._renameDOMAttribute(t.target,"rocket-onclick","onclick"),this._pendingClickFinished()}_onTouchEnd(t){window.removeEventListener("touchend",this.touchEndHandler),window.removeEventListener("mouseup",this.touchEndHandler),window.removeEventListener("touchmove",this.touchMoveHandler,{passive:!0}),window.removeEventListener("mousemove",this.touchMoveHandler)}_onClick(t){t.target.removeEventListener("click",this.clickHandler),this._renameDOMAttribute(t.target,"rocket-onclick","onclick"),this.interceptedClicks.push(t),t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation(),this._pendingClickFinished()}_replayClicks(){window.removeEventListener("touchstart",this.touchStartHandler,{passive:!0}),window.removeEventListener("mousedown",this.touchStartHandler),this.interceptedClicks.forEach(t=>{t.target.dispatchEvent(new MouseEvent("click",{view:t.view,bubbles:!0,cancelable:!0}))})}_waitForPendingClicks(){return new Promise(t=>{this._isClickPending?this._pendingClickFinished=t:t()})}_pendingClickStarted(){this._isClickPending=!0}_pendingClickFinished(){this._isClickPending=!1}_renameDOMAttribute(t,e,r){t.hasAttribute&&t.hasAttribute(e)&&(event.target.setAttribute(r,event.target.getAttribute(e)),event.target.removeAttribute(e))}_triggerListener(){this._removeUserInteractionListener(this),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",this._loadEverythingNow.bind(this)):this._loadEverythingNow()}_preconnect3rdParties(){let t=[];document.querySelectorAll("script[type=rocketlazyloadscript]").forEach(e=>{if(e.hasAttribute("src")){let r=new URL(e.src).origin;r!==location.origin&&t.push({src:r,crossOrigin:e.crossOrigin||"module"===e.getAttribute("data-rocket-type")})}}),t=[...new Map(t.map(t=>[JSON.stringify(t),t])).values()],this._batchInjectResourceHints(t,"preconnect")}async _loadEverythingNow(){this.lastBreath=Date.now(),this._delayEventListeners(this),this._delayJQueryReady(this),this._handleDocumentWrite(),this._registerAllDelayedScripts(),this._preloadAllScripts(),await this._loadScriptsFromList(this.delayedScripts.normal),await this._loadScriptsFromList(this.delayedScripts.defer),await this._loadScriptsFromList(this.delayedScripts.async);try{await this._triggerDOMContentLoaded(),await this._triggerWindowLoad()}catch(t){console.error(t)}window.dispatchEvent(new Event("rocket-allScriptsLoaded")),this._waitForPendingClicks().then(()=>{this._replayClicks()}),this._emptyTrash()}_registerAllDelayedScripts(){document.querySelectorAll("script[type=rocketlazyloadscript]").forEach(t=>{t.hasAttribute("data-rocket-src")?t.hasAttribute("async")&&!1!==t.async?this.delayedScripts.async.push(t):t.hasAttribute("defer")&&!1!==t.defer||"module"===t.getAttribute("data-rocket-type")?this.delayedScripts.defer.push(t):this.delayedScripts.normal.push(t):this.delayedScripts.normal.push(t)})}async _transformScript(t){return new Promise((await this._littleBreath(),navigator.userAgent.indexOf("Firefox/")>0||""===navigator.vendor)?e=>{let r=document.createElement("script");[...t.attributes].forEach(t=>{let e=t.nodeName;"type"!==e&&("data-rocket-type"===e&&(e="type"),"data-rocket-src"===e&&(e="src"),r.setAttribute(e,t.nodeValue))}),t.text&&(r.text=t.text),r.hasAttribute("src")?(r.addEventListener("load",e),r.addEventListener("error",e)):(r.text=t.text,e());try{t.parentNode.replaceChild(r,t)}catch(i){e()}}:async e=>{function r(){t.setAttribute("data-rocket-status","failed"),e()}try{let i=t.getAttribute("data-rocket-type"),n=t.getAttribute("data-rocket-src");t.text,i?(t.type=i,t.removeAttribute("data-rocket-type")):t.removeAttribute("type"),t.addEventListener("load",function r(){t.setAttribute("data-rocket-status","executed"),e()}),t.addEventListener("error",r),n?(t.removeAttribute("data-rocket-src"),t.src=n):t.src="data:text/javascript;base64,"+window.btoa(unescape(encodeURIComponent(t.text)))}catch(s){r()}})}async _loadScriptsFromList(t){let e=t.shift();return e&&e.isConnected?(await this._transformScript(e),this._loadScriptsFromList(t)):Promise.resolve()}_preloadAllScripts(){this._batchInjectResourceHints([...this.delayedScripts.normal,...this.delayedScripts.defer,...this.delayedScripts.async],"preload")}_batchInjectResourceHints(t,e){var r=document.createDocumentFragment();t.forEach(t=>{let i=t.getAttribute&&t.getAttribute("data-rocket-src")||t.src;if(i){let n=document.createElement("link");n.href=i,n.rel=e,"preconnect"!==e&&(n.as="script"),t.getAttribute&&"module"===t.getAttribute("data-rocket-type")&&(n.crossOrigin=!0),t.crossOrigin&&(n.crossOrigin=t.crossOrigin),t.integrity&&(n.integrity=t.integrity),r.appendChild(n),this.trash.push(n)}}),document.head.appendChild(r)}_delayEventListeners(t){let e={};function r(t,r){!function t(r){!e[r]&&(e[r]={originalFunctions:{add:r.addEventListener,remove:r.removeEventListener},eventsToRewrite:[]},r.addEventListener=function(){arguments[0]=i(arguments[0]),e[r].originalFunctions.add.apply(r,arguments)},r.removeEventListener=function(){arguments[0]=i(arguments[0]),e[r].originalFunctions.remove.apply(r,arguments)});function i(t){return e[r].eventsToRewrite.indexOf(t)>=0?"rocket-"+t:t}}(t),e[t].eventsToRewrite.push(r)}function i(t,e){let r=t[e];Object.defineProperty(t,e,{get:()=>r||function(){},set(i){t["rocket"+e]=r=i}})}r(document,"DOMContentLoaded"),r(window,"DOMContentLoaded"),r(window,"load"),r(window,"pageshow"),r(document,"readystatechange"),i(document,"onreadystatechange"),i(window,"onload"),i(window,"onpageshow")}_delayJQueryReady(t){let e;function r(r){if(r&&r.fn&&!t.allJQueries.includes(r)){r.fn.ready=r.fn.init.prototype.ready=function(e){return t.domReadyFired?e.bind(document)(r):document.addEventListener("rocket-DOMContentLoaded",()=>e.bind(document)(r)),r([])};let i=r.fn.on;r.fn.on=r.fn.init.prototype.on=function(){if(this[0]===window){function t(t){return t.split(" ").map(t=>"load"===t||0===t.indexOf("load.")?"rocket-jquery-load":t).join(" ")}"string"==typeof arguments[0]||arguments[0]instanceof String?arguments[0]=t(arguments[0]):"object"==typeof arguments[0]&&Object.keys(arguments[0]).forEach(e=>{let r=arguments[0][e];delete arguments[0][e],arguments[0][t(e)]=r})}return i.apply(this,arguments),this},t.allJQueries.push(r)}e=r}r(window.jQuery),Object.defineProperty(window,"jQuery",{get:()=>e,set(t){r(t)}})}async _triggerDOMContentLoaded(){this.domReadyFired=!0,await this._littleBreath(),document.dispatchEvent(new Event("rocket-DOMContentLoaded")),await this._littleBreath(),window.dispatchEvent(new Event("rocket-DOMContentLoaded")),await this._littleBreath(),document.dispatchEvent(new Event("rocket-readystatechange")),await this._littleBreath(),document.rocketonreadystatechange&&document.rocketonreadystatechange()}async _triggerWindowLoad(){await this._littleBreath(),window.dispatchEvent(new Event("rocket-load")),await this._littleBreath(),window.rocketonload&&window.rocketonload(),await this._littleBreath(),this.allJQueries.forEach(t=>t(window).trigger("rocket-jquery-load")),await this._littleBreath();let t=new Event("rocket-pageshow");t.persisted=this.persisted,window.dispatchEvent(t),await this._littleBreath(),window.rocketonpageshow&&window.rocketonpageshow({persisted:this.persisted})}_handleDocumentWrite(){let t=new Map;document.write=document.writeln=function(e){let r=document.currentScript;r||console.error("WPRocket unable to document.write this: "+e);let i=document.createRange(),n=r.parentElement,s=t.get(r);void 0===s&&(s=r.nextSibling,t.set(r,s));let a=document.createDocumentFragment();i.setStart(a,0),a.appendChild(i.createContextualFragment(e)),n.insertBefore(a,s)}}async _littleBreath(){Date.now()-this.lastBreath>45&&(await this._requestAnimFrame(),this.lastBreath=Date.now())}async _requestAnimFrame(){return document.hidden?new Promise(t=>setTimeout(t)):new Promise(t=>requestAnimationFrame(t))}_emptyTrash(){this.trash.forEach(t=>t.remove())}static run(){let t=new RocketLazyLoadScripts;t._addUserInteractionListener(t)}}RocketLazyLoadScripts.run(); \ No newline at end of file +class RocketLazyLoadScripts{constructor(){this.v="1.2.4",this.triggerEvents=["keydown","mousedown","mousemove","touchmove","touchstart","touchend","wheel"],this.userEventHandler=this._triggerListener.bind(this),this.touchStartHandler=this._onTouchStart.bind(this),this.touchMoveHandler=this._onTouchMove.bind(this),this.touchEndHandler=this._onTouchEnd.bind(this),this.clickHandler=this._onClick.bind(this),this.interceptedClicks=[],window.addEventListener("pageshow",t=>{this.persisted=t.persisted}),window.addEventListener("DOMContentLoaded",()=>{this._preconnect3rdParties()}),this.delayedScripts={normal:[],async:[],defer:[]},this.trash=[],this.allJQueries=[]}_addUserInteractionListener(t){if(document.hidden){t._triggerListener();return}this.triggerEvents.forEach(e=>window.addEventListener(e,t.userEventHandler,{passive:!0})),window.addEventListener("touchstart",t.touchStartHandler,{passive:!0}),window.addEventListener("mousedown",t.touchStartHandler),document.addEventListener("visibilitychange",t.userEventHandler)}_removeUserInteractionListener(){this.triggerEvents.forEach(t=>window.removeEventListener(t,this.userEventHandler,{passive:!0})),document.removeEventListener("visibilitychange",this.userEventHandler)}_onTouchStart(t){"HTML"!==t.target.tagName&&(window.addEventListener("touchend",this.touchEndHandler),window.addEventListener("mouseup",this.touchEndHandler),window.addEventListener("touchmove",this.touchMoveHandler,{passive:!0}),window.addEventListener("mousemove",this.touchMoveHandler),t.target.addEventListener("click",this.clickHandler),this._renameDOMAttribute(t.target,"onclick","rocket-onclick"),this._pendingClickStarted())}_onTouchMove(t){window.removeEventListener("touchend",this.touchEndHandler),window.removeEventListener("mouseup",this.touchEndHandler),window.removeEventListener("touchmove",this.touchMoveHandler,{passive:!0}),window.removeEventListener("mousemove",this.touchMoveHandler),t.target.removeEventListener("click",this.clickHandler),this._renameDOMAttribute(t.target,"rocket-onclick","onclick"),this._pendingClickFinished()}_onTouchEnd(){window.removeEventListener("touchend",this.touchEndHandler),window.removeEventListener("mouseup",this.touchEndHandler),window.removeEventListener("touchmove",this.touchMoveHandler,{passive:!0}),window.removeEventListener("mousemove",this.touchMoveHandler)}_onClick(t){t.target.removeEventListener("click",this.clickHandler),this._renameDOMAttribute(t.target,"rocket-onclick","onclick"),this.interceptedClicks.push(t),t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation(),this._pendingClickFinished()}_replayClicks(){window.removeEventListener("touchstart",this.touchStartHandler,{passive:!0}),window.removeEventListener("mousedown",this.touchStartHandler),this.interceptedClicks.forEach(t=>{t.target.dispatchEvent(new MouseEvent("click",{view:t.view,bubbles:!0,cancelable:!0}))})}_waitForPendingClicks(){return new Promise(t=>{this._isClickPending?this._pendingClickFinished=t:t()})}_pendingClickStarted(){this._isClickPending=!0}_pendingClickFinished(){this._isClickPending=!1}_renameDOMAttribute(t,e,r){t.hasAttribute&&t.hasAttribute(e)&&(event.target.setAttribute(r,event.target.getAttribute(e)),event.target.removeAttribute(e))}_triggerListener(){this._removeUserInteractionListener(this),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",this._loadEverythingNow.bind(this)):this._loadEverythingNow()}_preconnect3rdParties(){let t=[];document.querySelectorAll("script[type=rocketlazyloadscript][data-rocket-src]").forEach(e=>{let r=e.getAttribute("data-rocket-src");if(r&&0!==r.indexOf("data:")){0===r.indexOf("//")&&(r=location.protocol+r);try{let i=new URL(r).origin;i!==location.origin&&t.push({src:i,crossOrigin:e.crossOrigin||"module"===e.getAttribute("data-rocket-type")})}catch(n){}}}),t=[...new Map(t.map(t=>[JSON.stringify(t),t])).values()],this._batchInjectResourceHints(t,"preconnect")}async _loadEverythingNow(){this.lastBreath=Date.now(),this._delayEventListeners(),this._delayJQueryReady(this),this._handleDocumentWrite(),this._registerAllDelayedScripts(),this._preloadAllScripts(),await this._loadScriptsFromList(this.delayedScripts.normal),await this._loadScriptsFromList(this.delayedScripts.defer),await this._loadScriptsFromList(this.delayedScripts.async);try{await this._triggerDOMContentLoaded(),await this._pendingWebpackRequests(this),await this._triggerWindowLoad()}catch(t){console.error(t)}window.dispatchEvent(new Event("rocket-allScriptsLoaded")),this._waitForPendingClicks().then(()=>{this._replayClicks()}),this._emptyTrash()}_registerAllDelayedScripts(){document.querySelectorAll("script[type=rocketlazyloadscript]").forEach(t=>{t.hasAttribute("data-rocket-src")?t.hasAttribute("async")&&!1!==t.async?this.delayedScripts.async.push(t):t.hasAttribute("defer")&&!1!==t.defer||"module"===t.getAttribute("data-rocket-type")?this.delayedScripts.defer.push(t):this.delayedScripts.normal.push(t):this.delayedScripts.normal.push(t)})}async _transformScript(t){if(await this._littleBreath(),!0===t.noModule&&"noModule"in HTMLScriptElement.prototype){t.setAttribute("data-rocket-status","skipped");return}return new Promise(navigator.userAgent.indexOf("Firefox/")>0||""===navigator.vendor?e=>{let r=document.createElement("script");[...t.attributes].forEach(t=>{let e=t.nodeName;"type"!==e&&("data-rocket-type"===e&&(e="type"),"data-rocket-src"===e&&(e="src"),r.setAttribute(e,t.nodeValue))}),t.text&&(r.text=t.text),r.hasAttribute("src")?(r.addEventListener("load",e),r.addEventListener("error",e)):(r.text=t.text,e());try{t.parentNode.replaceChild(r,t)}catch(i){e()}}:e=>{function r(){t.setAttribute("data-rocket-status","failed"),e()}try{let i=t.getAttribute("data-rocket-type"),n=t.getAttribute("data-rocket-src");i?(t.type=i,t.removeAttribute("data-rocket-type")):t.removeAttribute("type"),t.addEventListener("load",function r(){t.setAttribute("data-rocket-status","executed"),e()}),t.addEventListener("error",r),n?(t.removeAttribute("data-rocket-src"),t.src=n):t.src="data:text/javascript;base64,"+window.btoa(unescape(encodeURIComponent(t.text)))}catch(s){r()}})}async _loadScriptsFromList(t){let e=t.shift();return e&&e.isConnected?(await this._transformScript(e),this._loadScriptsFromList(t)):Promise.resolve()}_preloadAllScripts(){this._batchInjectResourceHints([...this.delayedScripts.normal,...this.delayedScripts.defer,...this.delayedScripts.async],"preload")}_batchInjectResourceHints(t,e){var r=document.createDocumentFragment();t.forEach(t=>{let i=t.getAttribute&&t.getAttribute("data-rocket-src")||t.src;if(i){let n=document.createElement("link");n.href=i,n.rel=e,"preconnect"!==e&&(n.as="script"),t.getAttribute&&"module"===t.getAttribute("data-rocket-type")&&(n.crossOrigin=!0),t.crossOrigin&&(n.crossOrigin=t.crossOrigin),t.integrity&&(n.integrity=t.integrity),r.appendChild(n),this.trash.push(n)}}),document.head.appendChild(r)}_delayEventListeners(){let t={};function e(e,r){!function e(r){!t[r]&&(t[r]={originalFunctions:{add:r.addEventListener,remove:r.removeEventListener},eventsToRewrite:[]},r.addEventListener=function(){arguments[0]=i(arguments[0]),t[r].originalFunctions.add.apply(r,arguments)},r.removeEventListener=function(){arguments[0]=i(arguments[0]),t[r].originalFunctions.remove.apply(r,arguments)});function i(e){return t[r].eventsToRewrite.indexOf(e)>=0?"rocket-"+e:e}}(e),t[e].eventsToRewrite.push(r)}function r(t,e){let r=t[e];Object.defineProperty(t,e,{get:()=>r||function(){},set(i){t["rocket"+e]=r=i}})}e(document,"DOMContentLoaded"),e(window,"DOMContentLoaded"),e(window,"load"),e(window,"pageshow"),e(document,"readystatechange"),r(document,"onreadystatechange"),r(window,"onload"),r(window,"onpageshow")}_delayJQueryReady(t){let e;function r(t){return t.split(" ").map(t=>"load"===t||0===t.indexOf("load.")?"rocket-jquery-load":t).join(" ")}function i(i){if(i&&i.fn&&!t.allJQueries.includes(i)){i.fn.ready=i.fn.init.prototype.ready=function(e){return t.domReadyFired?e.bind(document)(i):document.addEventListener("rocket-DOMContentLoaded",()=>e.bind(document)(i)),i([])};let n=i.fn.on;i.fn.on=i.fn.init.prototype.on=function(){return this[0]===window&&("string"==typeof arguments[0]||arguments[0]instanceof String?arguments[0]=r(arguments[0]):"object"==typeof arguments[0]&&Object.keys(arguments[0]).forEach(t=>{let e=arguments[0][t];delete arguments[0][t],arguments[0][r(t)]=e})),n.apply(this,arguments),this},t.allJQueries.push(i)}e=i}i(window.jQuery),Object.defineProperty(window,"jQuery",{get:()=>e,set(t){i(t)}})}async _pendingWebpackRequests(t){let e=document.querySelector("script[data-webpack]");async function r(){return new Promise(t=>{e.addEventListener("load",t),e.addEventListener("error",t)})}e&&(await r(),await t._requestAnimFrame(),await t._pendingWebpackRequests(t))}async _triggerDOMContentLoaded(){this.domReadyFired=!0,await this._littleBreath(),document.dispatchEvent(new Event("rocket-DOMContentLoaded")),await this._littleBreath(),window.dispatchEvent(new Event("rocket-DOMContentLoaded")),await this._littleBreath(),document.dispatchEvent(new Event("rocket-readystatechange")),await this._littleBreath(),document.rocketonreadystatechange&&document.rocketonreadystatechange()}async _triggerWindowLoad(){await this._littleBreath(),window.dispatchEvent(new Event("rocket-load")),await this._littleBreath(),window.rocketonload&&window.rocketonload(),await this._littleBreath(),this.allJQueries.forEach(t=>t(window).trigger("rocket-jquery-load")),await this._littleBreath();let t=new Event("rocket-pageshow");t.persisted=this.persisted,window.dispatchEvent(t),await this._littleBreath(),window.rocketonpageshow&&window.rocketonpageshow({persisted:this.persisted})}_handleDocumentWrite(){let t=new Map;document.write=document.writeln=function(e){let r=document.currentScript;r||console.error("WPRocket unable to document.write this: "+e);let i=document.createRange(),n=r.parentElement,s=t.get(r);void 0===s&&(s=r.nextSibling,t.set(r,s));let a=document.createDocumentFragment();i.setStart(a,0),a.appendChild(i.createContextualFragment(e)),n.insertBefore(a,s)}}async _littleBreath(){Date.now()-this.lastBreath>45&&(await this._requestAnimFrame(),this.lastBreath=Date.now())}async _requestAnimFrame(){return document.hidden?new Promise(t=>setTimeout(t)):new Promise(t=>requestAnimationFrame(t))}_emptyTrash(){this.trash.forEach(t=>t.remove())}static run(){let t=new RocketLazyLoadScripts;t._addUserInteractionListener(t)}}RocketLazyLoadScripts.run(); \ No newline at end of file diff --git a/tests/Fixtures/inc/Engine/Optimization/DelayJS/Subscriber/addDelayJsScript.php b/tests/Fixtures/inc/Engine/Optimization/DelayJS/Subscriber/addDelayJsScript.php index b3914ddc1d..83e3ef685a 100644 --- a/tests/Fixtures/inc/Engine/Optimization/DelayJS/Subscriber/addDelayJsScript.php +++ b/tests/Fixtures/inc/Engine/Optimization/DelayJS/Subscriber/addDelayJsScript.php @@ -7,7 +7,7 @@ $ie_compat = ''; -$delay_js = ''; +$delay_js = ''; $expected = ' ' . $ie_compat . $delay_js . 'Sample Page From a23c147b38baeb51d6a0039e190dc514ec994605 Mon Sep 17 00:00:00 2001 From: Cyrille C <18537428+CrochetFeve0251@users.noreply.github.com> Date: Mon, 23 Oct 2023 14:15:06 +0200 Subject: [PATCH 10/13] Enhancement/6213 prevent 400 (#6230) Co-authored-by: mostafa-hisham Co-authored-by: mostafa-hisham Co-authored-by: Gael Robin Co-authored-by: Vasilis Manthos --- .../Optimization/RUCSS/AbstractAPIClient.php | 3 +- .../RUCSS/Context/RUCSSContext.php | 56 +++ .../RUCSS/Context/RUCSSOptimizeContext.php | 46 +++ .../Optimization/RUCSS/Controller/UsedCSS.php | 361 ++++++++---------- .../Optimization/RUCSS/Cron/Subscriber.php | 50 +++ .../RUCSS/Database/Queries/UsedCSS.php | 105 ++++- .../RUCSS/Database/Row/UsedCSS.php | 8 + .../RUCSS/Database/Schemas/UsedCSS.php | 10 + .../RUCSS/Database/Tables/UsedCSS.php | 21 +- .../Optimization/RUCSS/Frontend/APIClient.php | 6 +- .../RUCSS/Frontend/Subscriber.php | 17 +- .../Optimization/RUCSS/ServiceProvider.php | 17 +- ...heck_job_status.php => checkJobStatus.php} | 4 - .../UsedCSS/processOnSubmitJobs.php | 69 ++++ .../Controller/UsedCSS/processPendingJobs.php | 41 ++ .../RUCSS/Controller/UsedCSS/treeshake.php | 160 +------- .../Controller/UsedCSS/updateMessage.php | 25 ++ .../RUCSS/Cron/Subscriber/CSS/rucss.css | 0 .../RUCSS/Cron/Subscriber/checkJobStatus.php | 192 ++++++++++ .../Cron/Subscriber/cronRemoveFailedJobs.php | 15 +- .../Cron/Subscriber/processOnSubmitJobs.php | 320 ++++++++++++++++ .../Cron/Subscriber/processPendingJobs.php | 132 +++++++ .../Cron/Subscriber/scheduleOnSubmitJobs.php | 24 ++ .../Database/Queries/UsedCSS/createNewJob.php | 49 +++ .../Database/Queries/UsedCSS/resetJob.php | 45 +++ .../RUCSS/Frontend/Subscriber/HTML/input.html | 10 + .../Frontend/Subscriber/HTML/output.html | 10 + .../RUCSS/Frontend/Subscriber/treeshake.php | 75 ++++ tests/HTTPCallTrait.php | 31 ++ tests/Integration/DBTrait.php | 19 +- .../RUCSS/Cron/Subscriber/addInterval.php | 6 + .../RUCSS/Cron/Subscriber/checkJobStatus.php | 79 ++++ .../Cron/Subscriber/cronRemoveFailedJobs.php | 3 +- .../Cron/Subscriber/processOnSubmitJobs.php | 67 ++++ .../Cron/Subscriber/scheduleOnSubmitJobs.php | 50 +++ .../RUCSS/Frontend/Subscriber/treeshake.php | 65 ++++ .../RUCSS/Controller/UsedCSS/UsedCSSTrait.php | 81 ++++ ...heck_job_status.php => checkJobStatus.php} | 44 +-- .../Controller/UsedCSS/clearFailedUrls.php | 30 +- .../UsedCSS/processOnSubmitJobs.php | 113 ++++++ .../Controller/UsedCSS/processPendingJobs.php | 120 ++++++ .../RUCSS/Controller/UsedCSS/treeshake.php | 30 +- .../Controller/UsedCSS/updateMessage.php | 49 +++ .../Database/Queries/UsedCSS/createNewJob.php | 39 ++ .../Database/Queries/UsedCSS/resetJob.php | 40 ++ .../RUCSS/Frontend/Subscriber/onInstall.php | 7 +- .../RUCSS/Frontend/Subscriber/onUpdate.php | 7 +- 47 files changed, 2299 insertions(+), 452 deletions(-) create mode 100644 inc/Engine/Optimization/RUCSS/Context/RUCSSContext.php create mode 100644 inc/Engine/Optimization/RUCSS/Context/RUCSSOptimizeContext.php rename tests/Fixtures/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/{check_job_status.php => checkJobStatus.php} (96%) create mode 100644 tests/Fixtures/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/processOnSubmitJobs.php create mode 100644 tests/Fixtures/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/processPendingJobs.php create mode 100644 tests/Fixtures/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/updateMessage.php create mode 100644 tests/Fixtures/inc/Engine/Optimization/RUCSS/Cron/Subscriber/CSS/rucss.css create mode 100644 tests/Fixtures/inc/Engine/Optimization/RUCSS/Cron/Subscriber/checkJobStatus.php create mode 100644 tests/Fixtures/inc/Engine/Optimization/RUCSS/Cron/Subscriber/processOnSubmitJobs.php create mode 100644 tests/Fixtures/inc/Engine/Optimization/RUCSS/Cron/Subscriber/processPendingJobs.php create mode 100644 tests/Fixtures/inc/Engine/Optimization/RUCSS/Cron/Subscriber/scheduleOnSubmitJobs.php create mode 100644 tests/Fixtures/inc/Engine/Optimization/RUCSS/Database/Queries/UsedCSS/createNewJob.php create mode 100644 tests/Fixtures/inc/Engine/Optimization/RUCSS/Database/Queries/UsedCSS/resetJob.php create mode 100644 tests/Fixtures/inc/Engine/Optimization/RUCSS/Frontend/Subscriber/HTML/input.html create mode 100644 tests/Fixtures/inc/Engine/Optimization/RUCSS/Frontend/Subscriber/HTML/output.html create mode 100644 tests/Fixtures/inc/Engine/Optimization/RUCSS/Frontend/Subscriber/treeshake.php create mode 100644 tests/HTTPCallTrait.php create mode 100644 tests/Integration/inc/Engine/Optimization/RUCSS/Cron/Subscriber/checkJobStatus.php create mode 100644 tests/Integration/inc/Engine/Optimization/RUCSS/Cron/Subscriber/processOnSubmitJobs.php create mode 100644 tests/Integration/inc/Engine/Optimization/RUCSS/Cron/Subscriber/scheduleOnSubmitJobs.php create mode 100644 tests/Integration/inc/Engine/Optimization/RUCSS/Frontend/Subscriber/treeshake.php create mode 100644 tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/UsedCSSTrait.php rename tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/{check_job_status.php => checkJobStatus.php} (85%) create mode 100644 tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/processOnSubmitJobs.php create mode 100644 tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/processPendingJobs.php create mode 100644 tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/updateMessage.php create mode 100644 tests/Unit/inc/Engine/Optimization/RUCSS/Database/Queries/UsedCSS/createNewJob.php create mode 100644 tests/Unit/inc/Engine/Optimization/RUCSS/Database/Queries/UsedCSS/resetJob.php diff --git a/inc/Engine/Optimization/RUCSS/AbstractAPIClient.php b/inc/Engine/Optimization/RUCSS/AbstractAPIClient.php index d4f7a0c04e..002b57fba5 100644 --- a/inc/Engine/Optimization/RUCSS/AbstractAPIClient.php +++ b/inc/Engine/Optimization/RUCSS/AbstractAPIClient.php @@ -80,8 +80,7 @@ private function handle_request( array $args, string $type = 'post' ) { ]; $args['method'] = strtoupper( $type ); - - $response = wp_remote_request( + $response = wp_remote_request( $api_url . $this->request_path, $args ); diff --git a/inc/Engine/Optimization/RUCSS/Context/RUCSSContext.php b/inc/Engine/Optimization/RUCSS/Context/RUCSSContext.php new file mode 100644 index 0000000000..dc3fba54e6 --- /dev/null +++ b/inc/Engine/Optimization/RUCSS/Context/RUCSSContext.php @@ -0,0 +1,56 @@ +filesystem = $filesystem; + } + + + /** + * Check if the operation is allowed. + * + * @param array $data Data to provide to the context. + * @return bool + */ + public function is_allowed( array $data = [] ): bool { + $is_allowed = $this->run_common_checks( + [ + 'do_not_optimize' => false, + 'bypass' => false, + 'option' => 'remove_unused_css', + 'password_protected' => false, + 'post_excluded' => 'remove_unused_css', + 'logged_in' => false, + ] + ); + + if ( ! $is_allowed ) { + return false; + } + + return $this->filesystem->is_writable_folder(); + } +} diff --git a/inc/Engine/Optimization/RUCSS/Context/RUCSSOptimizeContext.php b/inc/Engine/Optimization/RUCSS/Context/RUCSSOptimizeContext.php new file mode 100644 index 0000000000..9413ac06d3 --- /dev/null +++ b/inc/Engine/Optimization/RUCSS/Context/RUCSSOptimizeContext.php @@ -0,0 +1,46 @@ +run_common_checks( + [ + 'bypass' => false, + 'option' => 'remove_unused_css', + 'post_excluded' => 'remove_unused_css', + ] + ); + + if ( 'local' === wp_get_environment_type() ) { + return false; + } + + if ( ! current_user_can( 'rocket_remove_unused_css' ) ) { + return false; + } + + if ( is_admin() ) { + return false; + } + + if ( ! $is_allowed ) { + return false; + } + + if ( ! rocket_can_display_options() ) { + return false; + } + + return true; + } +} diff --git a/inc/Engine/Optimization/RUCSS/Controller/UsedCSS.php b/inc/Engine/Optimization/RUCSS/Controller/UsedCSS.php index e06e888b6d..2ed7c88948 100644 --- a/inc/Engine/Optimization/RUCSS/Controller/UsedCSS.php +++ b/inc/Engine/Optimization/RUCSS/Controller/UsedCSS.php @@ -4,18 +4,21 @@ namespace WP_Rocket\Engine\Optimization\RUCSS\Controller; use WP_Rocket\Admin\Options_Data; +use WP_Rocket\Engine\Common\Context\ContextInterface; use WP_Rocket\Engine\Common\Queue\QueueInterface; use WP_Rocket\Engine\Optimization\CSSTrait; use WP_Rocket\Engine\Optimization\DynamicLists\DefaultLists\DataManager; use WP_Rocket\Engine\Optimization\RegexTrait; use WP_Rocket\Engine\Optimization\RUCSS\Database\Queries\UsedCSS as UsedCSS_Query; use WP_Rocket\Engine\Optimization\RUCSS\Frontend\APIClient; -use WP_Rocket\Logger\Logger; use WP_Admin_Bar; +use WP_Rocket\Logger\LoggerAware; +use WP_Rocket\Logger\LoggerAwareInterface; -class UsedCSS { +class UsedCSS implements LoggerAwareInterface { use RegexTrait; use CSSTrait; + use LoggerAware; /** * UsedCss Query instance. @@ -59,6 +62,20 @@ class UsedCSS { */ private $filesystem; + /** + * RUCSS context. + * + * @var ContextInterface + */ + protected $context; + + /** + * RUCSS optimize url context. + * + * @var ContextInterface + */ + protected $optimize_url_context; + /** * External exclusions list, can be urls or attributes. * @@ -83,12 +100,14 @@ class UsedCSS { /** * Instantiate the class. * - * @param Options_Data $options Options instance. - * @param UsedCSS_Query $used_css_query Usedcss Query instance. - * @param APIClient $api APIClient instance. - * @param QueueInterface $queue Queue instance. - * @param DataManager $data_manager DataManager instance. - * @param Filesystem $filesystem Filesystem instance. + * @param Options_Data $options Options instance. + * @param UsedCSS_Query $used_css_query Usedcss Query instance. + * @param APIClient $api APIClient instance. + * @param QueueInterface $queue Queue instance. + * @param DataManager $data_manager DataManager instance. + * @param Filesystem $filesystem Filesystem instance. + * @param ContextInterface $context RUCSS context. + * @param ContextInterface $optimize_url_context RUCSS optimize url context. */ public function __construct( Options_Data $options, @@ -96,52 +115,18 @@ public function __construct( APIClient $api, QueueInterface $queue, DataManager $data_manager, - Filesystem $filesystem + Filesystem $filesystem, + ContextInterface $context, + ContextInterface $optimize_url_context ) { - $this->options = $options; - $this->used_css_query = $used_css_query; - $this->api = $api; - $this->queue = $queue; - $this->data_manager = $data_manager; - $this->filesystem = $filesystem; - } - - /** - * Determines if we treeshake the CSS. - * - * @return boolean - */ - public function is_allowed(): bool { - if ( rocket_get_constant( 'DONOTROCKETOPTIMIZE' ) ) { - return false; - } - - if ( rocket_bypass() ) { - return false; - } - - if ( ! $this->is_enabled() ) { - return false; - } - - if ( $this->is_password_protected() ) { - return false; - } - - if ( is_rocket_post_excluded_option( 'remove_unused_css' ) ) { - return false; - } - - // Bailout if user is logged in. - if ( is_user_logged_in() ) { - return false; - } - - if ( ! $this->filesystem->is_writable_folder() ) { - return false; - } - - return true; + $this->options = $options; + $this->used_css_query = $used_css_query; + $this->api = $api; + $this->queue = $queue; + $this->data_manager = $data_manager; + $this->filesystem = $filesystem; + $this->context = $context; + $this->optimize_url_context = $optimize_url_context; } /** @@ -155,40 +140,6 @@ public function is_enabled() { return (bool) $this->options->get( 'remove_unused_css', 0 ); } - /** - * Can optimize url. - * - * @return bool - */ - private function can_optimize_url() { - if ( rocket_bypass() ) { - return false; - } - - if ( ! $this->is_enabled() ) { - return false; - } - - return ! is_rocket_post_excluded_option( 'remove_unused_css' ); - } - - /** - * Checks if on a single post and if it is password protected - * - * @since 3.11 - * - * @return bool - */ - private function is_password_protected(): bool { - if ( ! is_singular() ) { - return false; - } - - $post = get_post(); - - return ! empty( $post->post_password ); - } - /** * Start treeshaking the current page. * @@ -197,7 +148,7 @@ private function is_password_protected(): bool { * @return string */ public function treeshake( string $html ): string { - if ( ! $this->is_allowed() ) { + if ( ! $this->context->is_allowed() ) { return $html; } @@ -215,25 +166,7 @@ public function treeshake( string $html ): string { $used_css = $this->used_css_query->get_row( $url, $is_mobile ); if ( empty( $used_css ) ) { - $add_to_queue_response = $this->add_url_to_the_queue( $url, $is_mobile ); - if ( false === $add_to_queue_response || ! isset( $add_to_queue_response['contents'], $add_to_queue_response['contents']['jobId'], $add_to_queue_response['contents']['queueName'] ) ) { - return $html; - } - - /** - * Lock preload URL. - * - * @param string $url URL to lock - */ - do_action( 'rocket_preload_lock_url', $url ); - - // We got jobid and queue name so save them into the DB and change status to be pending. - $this->used_css_query->create_new_job( - $url, - $add_to_queue_response['contents']['jobId'], - $add_to_queue_response['contents']['queueName'], - $is_mobile - ); + $this->add_url_to_the_queue( $url, $is_mobile ); return $html; } @@ -245,7 +178,6 @@ public function treeshake( string $html ): string { if ( empty( $used_css_content ) ) { $this->used_css_query->delete_by_url( $url ); - return $html; } @@ -264,51 +196,15 @@ public function treeshake( string $html ): string { * @param string $url page URL. * @param bool $is_mobile page is for mobile. * - * @return array|bool An array of response data, or false. + * @return void */ public function add_url_to_the_queue( string $url, bool $is_mobile ) { - /** - * Filters the RUCSS safelist - * - * @since 3.11 - * - * @param array $safelist Array of safelist values. - */ - $safelist = apply_filters( 'rocket_rucss_safelist', $this->options->get( 'remove_unused_css_safelist', [] ) ); - - /** - * Filters the styles attributes to be skipped (blocked) by RUCSS. - * - * @since 3.14 - * - * @param array $skipped_attr Array of safelist values. - */ - $skipped_attr = apply_filters( 'rocket_rucss_skip_styles_with_attr', [] ); - $skipped_attr = ( is_array( $skipped_attr ) ) ? $skipped_attr : []; - - $config = [ - 'treeshake' => 1, - 'rucss_safelist' => $safelist, - 'skip_attr' => $skipped_attr, - 'is_mobile' => $is_mobile, - 'is_home' => $this->is_home( $url ), - ]; - - $add_to_queue_response = $this->api->add_to_queue( $url, $config ); - if ( 200 !== $add_to_queue_response['code'] ) { - Logger::error( - 'Error when contacting the RUCSS API.', - [ - 'rucss error', - 'url' => $url, - 'code' => $add_to_queue_response['code'], - 'message' => $add_to_queue_response['message'], - ] - ); - - return false; + $used_css_row = $this->used_css_query->get_row( $url, $is_mobile ); + if ( empty( $used_css_row ) ) { + $this->used_css_query->create_new_job( $url, '', '', $is_mobile ); + return; } - return $add_to_queue_response; + $this->used_css_query->reset_job( (int) $used_css_row->id ); } /** * Delete used css based on URL. @@ -575,10 +471,10 @@ private function is_home( string $url ): bool { * @return void */ public function process_pending_jobs() { - Logger::debug( 'RUCSS: Start processing pending jobs inside cron.' ); + $this->logger::debug( 'RUCSS: Start processing pending jobs inside cron.' ); if ( ! $this->is_enabled() ) { - Logger::debug( 'RUCSS: Stop processing cron iteration because option is disabled.' ); + $this->logger::debug( 'RUCSS: Stop processing cron iteration because option is disabled.' ); return; } @@ -594,17 +490,17 @@ public function process_pending_jobs() { */ $rows = apply_filters( 'rocket_rucss_pending_jobs_cron_rows_count', 100 ); - Logger::debug( "RUCSS: Start getting number of {$rows} pending jobs." ); + $this->logger::debug( "RUCSS: Start getting number of {$rows} pending jobs." ); $pending_jobs = $this->used_css_query->get_pending_jobs( $rows ); if ( ! $pending_jobs ) { - Logger::debug( 'RUCSS: No pending jobs are there.' ); + $this->logger::debug( 'RUCSS: No pending jobs are there.' ); return; } foreach ( $pending_jobs as $used_css_row ) { - Logger::debug( "RUCSS: Send the job for url {$used_css_row->url} to Async task to check its job status." ); + $this->logger::debug( "RUCSS: Send the job for url {$used_css_row->url} to Async task to check its job status." ); // Change status to in-progress. $this->used_css_query->make_status_inprogress( (int) $used_css_row->id ); @@ -621,11 +517,10 @@ public function process_pending_jobs() { * @return void */ public function check_job_status( int $id ) { - Logger::debug( 'RUCSS: Start checking job status for row ID: ' . $id ); - $new_job_id = false; + $this->logger::debug( 'RUCSS: Start checking job status for row ID: ' . $id ); $row_details = $this->used_css_query->get_item( $id ); if ( ! $row_details ) { - Logger::debug( 'RUCSS: Row ID not found ', compact( 'id' ) ); + $this->logger::debug( 'RUCSS: Row ID not found ', compact( 'id' ) ); // Nothing in DB, bailout. return; @@ -648,7 +543,7 @@ public function check_job_status( int $id ) { if ( isset( $job_details['contents']['shakedCSS_size'] ) && intval( $job_details['contents']['shakedCSS_size'] ) < $min_rucss_size ) { $message = 'RUCSS: shakedCSS size is less than ' . $min_rucss_size; - Logger::error( $message ); + $this->logger::error( $message ); $this->used_css_query->make_status_failed( $id, '500', $message ); return; } @@ -660,11 +555,11 @@ public function check_job_status( int $id ) { || ! isset( $job_details['contents']['shakedCSS'] ) ) { - Logger::debug( 'RUCSS: Job status failed for url: ' . $row_details->url, $job_details ); + $this->logger::debug( 'RUCSS: Job status failed for url: ' . $row_details->url, $job_details ); // Failure, check the retries number. if ( $row_details->retries >= 3 ) { - Logger::debug( 'RUCSS: Job failed 3 times for url: ' . $row_details->url ); + $this->logger::debug( 'RUCSS: Job failed 3 times for url: ' . $row_details->url ); /** * Unlock preload URL. * @@ -680,16 +575,13 @@ public function check_job_status( int $id ) { // on timeout errors with code 408 create new job. switch ( $job_details['code'] ) { case 408: - $add_to_queue_response = $this->add_url_to_the_queue( $row_details->url, (bool) $row_details->is_mobile ); - if ( false !== $add_to_queue_response ) { - $new_job_id = $add_to_queue_response['contents']['jobId']; - $this->used_css_query->update_job_id( $id, $new_job_id ); - } - break; + $this->add_url_to_the_queue( $row_details->url, (bool) $row_details->is_mobile ); + return; } // Increment the retries number with 1 , Change status to pending again and change job id on timeout. - $this->used_css_query->increment_retries( $id, $row_details->retries ); + $this->used_css_query->increment_retries( $id, (int) $row_details->retries ); + $this->used_css_query->update_message( $id, $job_details['code'], $job_details['message'], $row_details->error_message ); // @Todo: Maybe we can add this row to the async job to get the status before the next cron @@ -704,18 +596,25 @@ public function check_job_status( int $id ) { $css = $this->apply_font_display_swap( $job_details['contents']['shakedCSS'] ); - $hash = md5( $css ); + /** + * RUCSS hash. + * + * @param string $hash RUCSS hash. + * @param string $css RUCSS content. + * @param UsedCSSRow $row_details Job details. + */ + $hash = (string) apply_filters( 'rocket_rucss_hash', md5( $css ), $css, $row_details ); if ( ! $this->filesystem->write_used_css( $hash, $css ) ) { $message = 'RUCSS: Could not write used CSS to the filesystem: ' . $row_details->url; - Logger::error( $message ); + $this->logger::error( $message ); $this->used_css_query->make_status_failed( $id, '', $message ); return; } // Everything is fine, save the usedcss into DB, change status to completed and reset queue_name and job_id. - Logger::debug( 'RUCSS: Save used CSS for url: ' . $row_details->url ); + $this->logger::debug( 'RUCSS: Save used CSS for url: ' . $row_details->url ); $this->used_css_query->make_status_completed( $id, $hash ); @@ -738,23 +637,7 @@ public function check_job_status( int $id ) { public function add_clear_usedcss_bar_item( WP_Admin_Bar $wp_admin_bar ) { global $post; - if ( 'local' === wp_get_environment_type() ) { - return; - } - - if ( ! current_user_can( 'rocket_remove_unused_css' ) ) { - return; - } - - if ( is_admin() ) { - return; - } - - if ( ! $this->can_optimize_url() ) { - return; - } - - if ( ! rocket_can_display_options() ) { + if ( ! $this->optimize_url_context->is_allowed() ) { return; } @@ -862,11 +745,7 @@ public function clear_failed_urls() { continue; } - $add_to_queue_response = $this->add_url_to_the_queue( $row->url, (bool) $row->is_mobile ); - if ( false !== $add_to_queue_response ) { - $new_job_id = $add_to_queue_response['contents']['jobId']; - $this->used_css_query->reset_job( $id, $new_job_id ); - } + $this->add_url_to_the_queue( $row->url, (bool) $row->is_mobile ); } /** @@ -1100,4 +979,100 @@ static function ( $item ) { public function has_one_completed_row_at_least() { return $this->used_css_query->get_completed_count() > 0; } + + /** + * Process on submit jobs. + * + * @return void + */ + public function process_on_submit_jobs() { + /** + * Pending rows cont. + * + * @param int $count Number of rows. + */ + $pending_job = (int) apply_filters( 'rocket_rucss_pending_jobs_cron_rows_count', 100 ); + + /** + * Maximum processing rows. + * + * @param int $max Max processing rows. + */ + $max_pending_rows = (int) apply_filters( 'rocket_rucss_max_pending_jobs', 3 * $pending_job, $pending_job ); + $rows = $this->used_css_query->get_on_submit_jobs( $max_pending_rows ); + + foreach ( $rows as $row ) { + $response = $this->send_api( $row->url, (bool) $row->is_mobile ); + if ( false === $response || ! isset( $response['contents'], $response['contents']['jobId'], $response['contents']['queueName'] ) ) { + continue; + } + + /** + * Lock preload URL. + * + * @param string $url URL to lock + */ + do_action( 'rocket_preload_lock_url', $row->url ); + + $this->used_css_query->make_status_pending( + (int) $row->id, + $response['contents']['jobId'], + $response['contents']['queueName'], + (bool) $row->is_mobile + ); + } + } + + /** + * Send the job to the API. + * + * @param string $url URL to work on. + * @param bool $is_mobile Is the page for mobile. + * @return array|false + */ + protected function send_api( string $url, bool $is_mobile ) { + /** + * Filters the RUCSS safelist + * + * @since 3.11 + * + * @param array $safelist Array of safelist values. + */ + $safelist = apply_filters( 'rocket_rucss_safelist', $this->options->get( 'remove_unused_css_safelist', [] ) ); + + /** + * Filters the styles attributes to be skipped (blocked) by RUCSS. + * + * @since 3.14 + * + * @param array $skipped_attr Array of safelist values. + */ + $skipped_attr = apply_filters( 'rocket_rucss_skip_styles_with_attr', [] ); + $skipped_attr = ( is_array( $skipped_attr ) ) ? $skipped_attr : []; + + $config = [ + 'treeshake' => 1, + 'rucss_safelist' => $safelist, + 'skip_attr' => $skipped_attr, + 'is_mobile' => $is_mobile, + 'is_home' => $this->is_home( $url ), + ]; + + $add_to_queue_response = $this->api->add_to_queue( $url, $config ); + if ( 200 !== $add_to_queue_response['code'] ) { + $this->logger::error( + 'Error when contacting the RUCSS API.', + [ + 'rucss error', + 'url' => $url, + 'code' => $add_to_queue_response['code'], + 'message' => $add_to_queue_response['message'], + ] + ); + + return false; + } + + return $add_to_queue_response; + } } diff --git a/inc/Engine/Optimization/RUCSS/Cron/Subscriber.php b/inc/Engine/Optimization/RUCSS/Cron/Subscriber.php index bafd3b09fb..4a772022ac 100644 --- a/inc/Engine/Optimization/RUCSS/Cron/Subscriber.php +++ b/inc/Engine/Optimization/RUCSS/Cron/Subscriber.php @@ -42,6 +42,7 @@ public function __construct( UsedCSS $used_css, Database $database ) { public static function get_subscribed_events(): array { return [ 'rocket_rucss_pending_jobs' => 'process_pending_jobs', + 'rocket_rucss_on_submit_jobs' => 'process_on_submit_jobs', 'rocket_rucss_job_check_status' => 'check_job_status', 'rocket_rucss_clean_rows_time_event' => 'cron_clean_rows', 'cron_schedules' => 'add_interval', @@ -52,6 +53,7 @@ public static function get_subscribed_events(): array { [ 'schedule_pending_jobs' ], [ 'initialize_rucss_queue_runner' ], [ 'schedule_removing_failed_jobs' ], + [ 'schedule_on_submit_jobs' ], ], ]; } @@ -97,6 +99,15 @@ public function process_pending_jobs() { $this->used_css->process_pending_jobs(); } + /** + * Process on submit jobs with Cron iteration. + * + * @return void + */ + public function process_on_submit_jobs() { + $this->used_css->process_on_submit_jobs(); + } + /** * Cron callback for deleting old rows in both table databases. * @@ -174,9 +185,48 @@ public function add_interval( $schedules ) { 'display' => esc_html__( 'WP Rocket clear Remove Unused CSS failed jobs', 'rocket' ), ]; + /** + * Filters the cron interval for processing on submit jobs. + * + * @param int $interval Interval in seconds. + */ + $interval = (int) apply_filters( 'rocket_remove_rucss_on_submit_jobs_cron_interval', 1 * rocket_get_constant( 'MINUTE_IN_SECONDS', 60 ) ); + + $schedules['rocket_rucss_on_submit_jobs'] = [ + 'interval' => $interval, + 'display' => esc_html__( 'WP Rocket procees on submit jobs', 'rocket' ), + ]; + return $schedules; } + /** + * Schedule on submit jobs. + * + * @return void + */ + public function schedule_on_submit_jobs() { + if ( + ! $this->used_css->is_enabled() + && + wp_next_scheduled( 'rocket_rucss_on_submit_jobs' ) + ) { + wp_clear_scheduled_hook( 'rocket_rucss_on_submit_jobs' ); + + return; + } + + if ( ! $this->used_css->is_enabled() ) { + return; + } + + if ( wp_next_scheduled( 'rocket_rucss_on_submit_jobs' ) ) { + return; + } + + wp_schedule_event( time(), 'rocket_rucss_on_submit_jobs', 'rocket_rucss_on_submit_jobs' ); + } + /** * Schedules cron to get RUCSS pendings jobs. * diff --git a/inc/Engine/Optimization/RUCSS/Database/Queries/UsedCSS.php b/inc/Engine/Optimization/RUCSS/Database/Queries/UsedCSS.php index af8c612feb..ace35c4aa7 100644 --- a/inc/Engine/Optimization/RUCSS/Database/Queries/UsedCSS.php +++ b/inc/Engine/Optimization/RUCSS/Database/Queries/UsedCSS.php @@ -3,6 +3,8 @@ namespace WP_Rocket\Engine\Optimization\RUCSS\Database\Queries; use WP_Rocket\Dependencies\Database\Query; +use WP_Rocket\Engine\Optimization\RUCSS\Database\Row\UsedCSS as UsedCSSRow; +use WP_Rocket\Engine\Optimization\RUCSS\Database\Schemas\UsedCSS as UsedCSSSchema; /** * RUCSS UsedCSS Query. @@ -32,7 +34,7 @@ class UsedCSS extends Query { * * @var string */ - protected $table_schema = '\\WP_Rocket\\Engine\\Optimization\\RUCSS\\Database\\Schemas\\UsedCSS'; + protected $table_schema = UsedCSSSchema::class; /** Item ******************************************************************/ @@ -65,7 +67,7 @@ class UsedCSS extends Query { * * @var mixed */ - protected $item_shape = '\\WP_Rocket\\Engine\\Optimization\\RUCSS\\Database\\Row\\UsedCSS'; + protected $item_shape = UsedCSSRow::class; /** * Table status. @@ -114,6 +116,49 @@ public function get_pending_jobs( int $count = 100 ) { ); } + /** + * Fetch on submit jobs. + * + * @param int $count Number of jobs to fetch. + * @return array|int + */ + public function get_on_submit_jobs( int $count = 100 ) { + if ( ! self::$table_exists && ! $this->table_exists() ) { + return []; + } + + $in_progress_count = $this->query( + [ + 'count' => true, + 'status' => [ 'in-progress' ], + ] + ); + $pending_count = $this->query( + [ + 'count' => true, + 'status' => [ 'pending' ], + ] + ); + + $processing_count = $in_progress_count + $pending_count; + + if ( 0 !== $count && $processing_count >= $count ) { + return []; + } + + $query_params = [ + 'status' => 'to-submit', + 'orderby' => 'modified', + 'order' => 'asc', + ]; + + if ( 0 !== $count ) { + $query_params['number'] = ( $count - $processing_count ); + } + + return $this->query( $query_params ); + } + /** * Increment retries number and change status back to pending. * @@ -161,7 +206,7 @@ public function update_job_id( $id, $new_job_id ) { * * @return bool */ - public function create_new_job( string $url, string $job_id, string $queue_name, bool $is_mobile = false ) { + public function create_new_job( string $url, string $job_id = '', string $queue_name = '', bool $is_mobile = false ) { if ( ! self::$table_exists && ! $this->table_exists() ) { return false; } @@ -171,9 +216,10 @@ public function create_new_job( string $url, string $job_id, string $queue_name, 'is_mobile' => $is_mobile, 'job_id' => $job_id, 'queue_name' => $queue_name, - 'status' => 'pending', + 'status' => 'to-submit', 'retries' => 0, 'last_accessed' => current_time( 'mysql', true ), + 'submitted_at' => current_time( 'mysql', true ), ]; return $this->add_item( $item ); } @@ -206,7 +252,7 @@ public function make_status_inprogress( int $id ) { * * @return bool */ - public function reset_job( int $id, string $job_id ) { + public function reset_job( int $id, string $job_id = '' ) { if ( ! self::$table_exists && ! $this->table_exists() ) { return false; } @@ -215,11 +261,12 @@ public function reset_job( int $id, string $job_id ) { $id, [ 'job_id' => $job_id, - 'status' => 'pending', + 'status' => 'to-submit', 'error_code' => '', 'error_message' => '', 'retries' => 0, 'modified' => current_time( 'mysql', true ), + 'submitted_at' => current_time( 'mysql', true ), ] ); } @@ -243,7 +290,7 @@ public function make_status_failed( int $id, string $error_code, string $error_m [ 'status' => 'failed', 'error_code' => $error_code, - 'error_message' => $error_message, + 'error_message' => current_time( 'mysql', true ) . " {$error_code}: {$error_message}", ] ); } @@ -514,4 +561,48 @@ private function table_exists(): bool { return $exists; } + + /** + * Update the error message. + * + * @param int $job_id Job ID. + * @param int $code Response code. + * @param string $message Response message. + * @param string $previous_message Previous saved message. + * + * @return bool + */ + public function update_message( int $job_id, int $code, string $message, string $previous_message = '' ): bool { + return $this->update_item( + $job_id, + [ + 'error_message' => $previous_message . ' - ' . current_time( 'mysql', true ) . " {$code}: {$message}", + ] + ); + } + + /** + * Change the status to be pending. + * + * @param int $id DB row ID. + * @param string $job_id API job_id. + * @param string $queue_name API Queue name. + * @param bool $is_mobile if the request is for mobile page. + * @return bool + */ + public function make_status_pending( int $id, string $job_id = '', string $queue_name = '', bool $is_mobile = false ) { + if ( ! self::$table_exists && ! $this->table_exists() ) { + return false; + } + + return $this->update_item( + $id, + [ + 'job_id' => $job_id, + 'queue_name' => $queue_name, + 'status' => 'pending', + 'is_mobile' => $is_mobile, + ] + ); + } } diff --git a/inc/Engine/Optimization/RUCSS/Database/Row/UsedCSS.php b/inc/Engine/Optimization/RUCSS/Database/Row/UsedCSS.php index aa953c73fc..612de39b72 100644 --- a/inc/Engine/Optimization/RUCSS/Database/Row/UsedCSS.php +++ b/inc/Engine/Optimization/RUCSS/Database/Row/UsedCSS.php @@ -106,6 +106,13 @@ class UsedCSS extends Row { */ public $unprocessedcss; + /** + * Submitted date + * + * @var int + */ + public $submitted_at; + /** * UsedCSS constructor. * @@ -128,5 +135,6 @@ public function __construct( $item ) { $this->status = (string) $this->status; $this->modified = empty( $this->modified ) ? 0 : strtotime( $this->modified ); $this->last_accessed = empty( $this->last_accessed ) ? 0 : strtotime( $this->last_accessed ); + $this->submitted_at = empty( $this->submitted_at ) ? 0 : strtotime( $this->submitted_at ); } } diff --git a/inc/Engine/Optimization/RUCSS/Database/Schemas/UsedCSS.php b/inc/Engine/Optimization/RUCSS/Database/Schemas/UsedCSS.php index e89fbf3bfb..064b5e54f6 100644 --- a/inc/Engine/Optimization/RUCSS/Database/Schemas/UsedCSS.php +++ b/inc/Engine/Optimization/RUCSS/Database/Schemas/UsedCSS.php @@ -154,5 +154,15 @@ class UsedCSS extends Schema { 'date_query' => true, 'sortable' => true, ], + + // SUBMITTED_AT column. + [ + 'name' => 'submitted_at', + 'type' => 'timestamp', + 'default' => null, + 'created' => true, + 'date_query' => true, + 'sortable' => true, + ], ]; } diff --git a/inc/Engine/Optimization/RUCSS/Database/Tables/UsedCSS.php b/inc/Engine/Optimization/RUCSS/Database/Tables/UsedCSS.php index 5c432ec13d..2ac29cf71f 100644 --- a/inc/Engine/Optimization/RUCSS/Database/Tables/UsedCSS.php +++ b/inc/Engine/Optimization/RUCSS/Database/Tables/UsedCSS.php @@ -28,7 +28,7 @@ class UsedCSS extends Table { * * @var int */ - protected $version = 20220926; + protected $version = 20231010; /** * Key => value array of versions => methods. @@ -41,6 +41,7 @@ class UsedCSS extends Table { 20220513 => 'add_hash_column', 20220920 => 'make_status_column_index_instead_queue_name', 20221104 => 'add_error_columns', + 20231010 => 'add_submitted_at_column', ]; /** @@ -73,6 +74,7 @@ protected function set_schema() { status varchar(255) NOT NULL default '', modified timestamp NOT NULL default '0000-00-00 00:00:00', last_accessed timestamp NOT NULL default '0000-00-00 00:00:00', + submitted_at timestamp NULL, PRIMARY KEY (id), KEY url (url(150), is_mobile), KEY modified (modified), @@ -323,4 +325,21 @@ private function make_error_code_column_index() { $index_added = $this->get_db()->query( "ALTER TABLE {$this->table_name} ADD INDEX `error_code_index` (`error_code`) " ); return $this->is_success( $index_added ); } + + /** + * Adds the submitted_at column + * + * @return bool + */ + protected function add_submitted_at_column() { + $submitted_at_column_exists = $this->column_exists( 'submitted_at' ); + + $created = true; + + if ( ! $submitted_at_column_exists ) { + $created &= $this->get_db()->query( "ALTER TABLE `{$this->table_name}` ADD COLUMN submitted_at timestamp NULL AFTER last_accessed" ); + } + + return $this->is_success( $created ); + } } diff --git a/inc/Engine/Optimization/RUCSS/Frontend/APIClient.php b/inc/Engine/Optimization/RUCSS/Frontend/APIClient.php index 69784e0520..9820afcf23 100644 --- a/inc/Engine/Optimization/RUCSS/Frontend/APIClient.php +++ b/inc/Engine/Optimization/RUCSS/Frontend/APIClient.php @@ -48,9 +48,9 @@ public function add_to_queue( string $url, array $options ): array { $default = [ 'code' => 400, - 'message' => 'Bad json', + 'message' => 'No message. Defaulted in add_to_queue', 'contents' => [ - 'jobId' => 0, + 'jobId' => '0', 'queueName' => '', ], ]; @@ -93,7 +93,7 @@ public function get_queue_job_status( $job_id, $queue_name, $is_home = false ) { $default = [ 'code' => 400, 'status' => 'failed', - 'message' => 'Bad json', + 'message' => 'No message. Defaulted in get_queue_job_status', 'contents' => [ 'success' => false, 'shakedCSS' => '', diff --git a/inc/Engine/Optimization/RUCSS/Frontend/Subscriber.php b/inc/Engine/Optimization/RUCSS/Frontend/Subscriber.php index c64516d3e5..751b2f153b 100644 --- a/inc/Engine/Optimization/RUCSS/Frontend/Subscriber.php +++ b/inc/Engine/Optimization/RUCSS/Frontend/Subscriber.php @@ -3,6 +3,8 @@ namespace WP_Rocket\Engine\Optimization\RUCSS\Frontend; +use WP_Rocket\Engine\Common\Context\ContextInterface; +use WP_Rocket\Engine\Optimization\RUCSS\Context\RUCSSContext; use WP_Rocket\Event_Management\Subscriber_Interface; use WP_Rocket\Engine\Optimization\RUCSS\Controller\UsedCSS; @@ -15,13 +17,22 @@ class Subscriber implements Subscriber_Interface { */ private $used_css; + /** + * RUCSS context. + * + * @var ContextInterface + */ + protected $context; + /** * Instantiate the class * - * @param UsedCSS $used_css UsedCSS instance. + * @param UsedCSS $used_css UsedCSS instance. + * @param ContextInterface $context RUCSS context. */ - public function __construct( UsedCSS $used_css ) { + public function __construct( UsedCSS $used_css, ContextInterface $context ) { $this->used_css = $used_css; + $this->context = $context; } /** @@ -59,7 +70,7 @@ public function treeshake( string $html ): string { * @return bool */ public function maybe_disable_preload_fonts( $value ): bool { - if ( $this->used_css->is_allowed() ) { + if ( $this->context->is_allowed() ) { return true; } diff --git a/inc/Engine/Optimization/RUCSS/ServiceProvider.php b/inc/Engine/Optimization/RUCSS/ServiceProvider.php index 7a3f782816..05f2aba46c 100644 --- a/inc/Engine/Optimization/RUCSS/ServiceProvider.php +++ b/inc/Engine/Optimization/RUCSS/ServiceProvider.php @@ -4,6 +4,8 @@ use WP_Rocket\Dependencies\League\Container\ServiceProvider\AbstractServiceProvider; use WP_Rocket\Engine\Optimization\RUCSS\Admin\{Database, OptionSubscriber, Settings}; use WP_Rocket\Engine\Optimization\RUCSS\Admin\Subscriber as AdminSubscriber; +use WP_Rocket\Engine\Optimization\RUCSS\Context\RUCSSContext; +use WP_Rocket\Engine\Optimization\RUCSS\Context\RUCSSOptimizeContext; use WP_Rocket\Engine\Optimization\RUCSS\Controller\Filesystem; use WP_Rocket\Engine\Optimization\RUCSS\Controller\Queue; use WP_Rocket\Engine\Optimization\RUCSS\Controller\UsedCSS as UsedCSSController; @@ -67,13 +69,23 @@ public function register() { $this->getContainer()->add( 'rucss_filesystem', Filesystem::class ) ->addArgument( rocket_get_constant( 'WP_ROCKET_USED_CSS_PATH' ) ) ->addArgument( rocket_direct_filesystem() ); + + $this->getContainer()->add( 'rucss_context', RUCSSContext::class ) + ->addArgument( $this->getContainer()->get( 'options' ) ) + ->addArgument( $this->getContainer()->get( 'rucss_filesystem' ) ); + + $this->getContainer()->add( 'rucss_optimize_context', RUCSSOptimizeContext::class ) + ->addArgument( $this->getContainer()->get( 'options' ) ); + $this->getContainer()->add( 'rucss_used_css_controller', UsedCSSController::class ) ->addArgument( $this->getContainer()->get( 'options' ) ) ->addArgument( $this->getContainer()->get( 'rucss_used_css_query' ) ) ->addArgument( $this->getContainer()->get( 'rucss_frontend_api_client' ) ) ->addArgument( $this->getContainer()->get( 'rucss_queue' ) ) ->addArgument( $this->getContainer()->get( 'dynamic_lists_defaultlists_data_manager' ) ) - ->addArgument( $this->getContainer()->get( 'rucss_filesystem' ) ); + ->addArgument( $this->getContainer()->get( 'rucss_filesystem' ) ) + ->addArgument( $this->getContainer()->get( 'rucss_context' ) ) + ->addArgument( $this->getContainer()->get( 'rucss_optimize_context' ) ); $this->getContainer()->share( 'rucss_option_subscriber', OptionSubscriber::class ) ->addArgument( $this->getContainer()->get( 'rucss_settings' ) ); @@ -83,7 +95,8 @@ public function register() { ->addArgument( $this->getContainer()->get( 'rucss_used_css_controller' ) ) ->addArgument( $this->getContainer()->get( 'rucss_queue' ) ); $this->getContainer()->share( 'rucss_frontend_subscriber', FrontendSubscriber::class ) - ->addArgument( $this->getContainer()->get( 'rucss_used_css_controller' ) ); + ->addArgument( $this->getContainer()->get( 'rucss_used_css_controller' ) ) + ->addArgument( $this->getContainer()->get( 'rucss_context' ) ); $this->getContainer()->share( 'rucss_cron_subscriber', CronSubscriber::class ) ->addArgument( $this->getContainer()->get( 'rucss_used_css_controller' ) ) ->addArgument( $this->getContainer()->get( 'rucss_database' ) ); diff --git a/tests/Fixtures/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/check_job_status.php b/tests/Fixtures/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/checkJobStatus.php similarity index 96% rename from tests/Fixtures/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/check_job_status.php rename to tests/Fixtures/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/checkJobStatus.php index bcbc1c8e42..594c274060 100644 --- a/tests/Fixtures/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/check_job_status.php +++ b/tests/Fixtures/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/checkJobStatus.php @@ -101,10 +101,6 @@ 'code' => 408, 'message' => 'timeout' ], - 'add_to_queue_response' => [ - 'code' => 200, - 'contents' => [ 'jobId' => 2 ] - ], ], 'expected' => '', diff --git a/tests/Fixtures/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/processOnSubmitJobs.php b/tests/Fixtures/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/processOnSubmitJobs.php new file mode 100644 index 0000000000..11b87f97f9 --- /dev/null +++ b/tests/Fixtures/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/processOnSubmitJobs.php @@ -0,0 +1,69 @@ + [ + 'config' => [ + 'home_url' => 'http://example.org', + 'pending_count' => 100, + 'max_processing' => 300, + 'rows' => [ + (object) [ + 'id' => 1, + 'url' => 'http://example.org', + 'is_mobile' => false, + ], + (object) [ + 'id' => 2, + 'url' => 'http://example.org/2', + 'is_mobile' => false, + ] + ], + 'add_to_queue' => [ + [ + 'url' => 'http://example.org', + 'configs' => [ + 'treeshake' => 1, + 'rucss_safelist' => [], + 'skip_attr' => [], + 'is_mobile' => false, + 'is_home' => true, + ], + 'response' => [ + 'code' => 200, + 'message' => 'message', + 'contents' => [ + 'jobId' => 'jobId', + 'queueName' => 'queueName', + ] + ] + ], + [ + 'url' => 'http://example.org/2', + 'configs' => [ + 'treeshake' => 1, + 'rucss_safelist' => [], + 'skip_attr' => [], + 'is_mobile' => false, + 'is_home' => false, + ], + 'response' => [ + 'code' => 400, + 'message' => 'message', + ] + ] + ], + 'make_status_pending' => [ + [ + 'id' => 1, + 'jobId' => 'jobId', + 'queueName' => 'queueName', + 'mobile' => false, + ] + ] + ], + 'expected' => [ + 'pending_count' => 100, + 'max_processing' => 300 + ] + ], + +]; diff --git a/tests/Fixtures/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/processPendingJobs.php b/tests/Fixtures/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/processPendingJobs.php new file mode 100644 index 0000000000..3cd77c66c3 --- /dev/null +++ b/tests/Fixtures/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/processPendingJobs.php @@ -0,0 +1,41 @@ + [ + 'config' => [ + 'enabled' => false, + 'rows_count' => 100, + ], + 'expected' => [ + 'rows_count' => 100, + 'in_progress' => null + ] + ], + 'noPendingShouldBailOut' => [ + 'configs' => [ + 'rows_count' => 100, + 'enabled' => true, + 'rows' => [ + ] + ], + 'expected' => [ + 'rows_count' => 100, + 'in_progress' => null, + ] + ], + 'pendingShouldPassInProgress' => [ + 'configs' => [ + 'rows_count' => 100, + 'enabled' => true, + 'rows' => [ + (object) [ + 'id' => 10, + 'url' => 'http://example.org' + ] + ] + ], + 'expected' => [ + 'rows_count' => 100, + 'in_progress' => 10, + ] + ] +]; diff --git a/tests/Fixtures/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/treeshake.php b/tests/Fixtures/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/treeshake.php index 68ae47acee..2c97586d38 100644 --- a/tests/Fixtures/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/treeshake.php +++ b/tests/Fixtures/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/treeshake.php @@ -38,67 +38,14 @@ 'response' => [ 'code' => 200, 'contents' => [ - 'jobId' => 'id', - 'queueName' => 'name', + 'jobId' => '', + 'queueName' => '', ] ] ] ], 'expected' => file_get_contents(WP_ROCKET_TESTS_FIXTURES_DIR . '/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/HTML/original.php'), ], - 'expectFetchCssWithJobAndReturnSameWhenEmptyUsedCssAndQueueFailed' => [ - 'config' => [ - 'html' => file_get_contents(WP_ROCKET_TESTS_FIXTURES_DIR . '/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/HTML/original.php'), - 'is_allowed' => true, - 'home_url' => 'http://example.com', - 'is_mobile' => [ - 'has_mobile_cache' => true, - 'is_caching_mobile_files' => true, - 'is_mobile' => true, - ], - 'get_existing_used_css' => [ - 'used_css' => null - ], - 'create_new_job' => [ - 'create_job' => true, - 'safelist' => [], - 'skipped_attr' => [], - 'config' => [ - 'treeshake' => 1, - 'rucss_safelist' => [], - 'skip_attr' => [], - 'is_mobile' => true, - 'is_home' => true, - ], - 'response' => [ - 'code' => 400, - 'message' => 'message', - ] - ] - ], - 'expected' => file_get_contents(WP_ROCKET_TESTS_FIXTURES_DIR . '/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/HTML/original.php'), - ], - 'expectedSameHTMlWhenNoEmptyUsedCSSAndWrongStatus' => [ - 'config' => [ - 'html' => file_get_contents(WP_ROCKET_TESTS_FIXTURES_DIR . '/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/HTML/original.php'), - 'is_allowed' => true, - 'home_url' => 'http://example.com', - 'is_mobile' => [ - 'has_mobile_cache' => true, - 'is_caching_mobile_files' => true, - 'is_mobile' => true, - ], - 'get_existing_used_css' => [ - 'used_css' => (object) [ - 'hash' => '1234', - 'status' => 'failed', - 'id' => 1, - 'css' => '', - ] - ], - ], - 'expected' => file_get_contents(WP_ROCKET_TESTS_FIXTURES_DIR . '/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/HTML/original.php'), - ], 'expectedSameHTMlWhenNoEmptyUsedCSSAndEmptyCSS' => [ 'config' => [ 'html' => file_get_contents(WP_ROCKET_TESTS_FIXTURES_DIR . '/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/HTML/original.php'), @@ -237,107 +184,4 @@ 'expected' => file_get_contents(WP_ROCKET_TESTS_FIXTURES_DIR . '/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/HTML/original_without_title.php'), ], - 'noContentShouldReturnSame' => [ - 'config' => [ - 'html' => file_get_contents(WP_ROCKET_TESTS_FIXTURES_DIR . '/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/HTML/original.php'), - 'is_allowed' => true, - 'home_url' => 'http://example.com', - 'is_mobile' => [ - 'has_mobile_cache' => false, - 'is_caching_mobile_files' => false, - 'is_mobile' => false, - ], - 'get_existing_used_css' => [ - 'used_css' => null - ], - 'create_new_job' => [ - 'create_job' => false, - 'safelist' => [], - 'skipped_attr' => [], - 'config' => [ - 'treeshake' => 1, - 'rucss_safelist' => [], - 'skip_attr' => [], - 'is_mobile' => false, - 'is_home' => true, - ], - 'is_success_response' => true, - 'response' => [ - 'code' => 200, - - ] - ] - ], - 'expected' => file_get_contents(WP_ROCKET_TESTS_FIXTURES_DIR . '/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/HTML/original.php'), - ], - 'noJobIdShouldReturnSame' => [ - 'config' => [ - 'html' => file_get_contents(WP_ROCKET_TESTS_FIXTURES_DIR . '/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/HTML/original.php'), - 'is_allowed' => true, - 'home_url' => 'http://example.com', - 'is_mobile' => [ - 'has_mobile_cache' => false, - 'is_caching_mobile_files' => false, - 'is_mobile' => false, - ], - 'get_existing_used_css' => [ - 'used_css' => null - ], - 'create_new_job' => [ - 'create_job' => false, - 'safelist' => [], - 'skipped_attr' => [], - 'config' => [ - 'treeshake' => 1, - 'rucss_safelist' => [], - 'skip_attr' => [], - 'is_mobile' => false, - 'is_home' => true, - ], - 'is_success_response' => true, - 'response' => [ - 'code' => 200, - 'contents' => [ - 'queueName' => 'name', - ] - ] - ] - ], - 'expected' => file_get_contents(WP_ROCKET_TESTS_FIXTURES_DIR . '/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/HTML/original.php'), - ], - 'noQueueNameShouldReturnSame' => [ - 'config' => [ - 'html' => file_get_contents(WP_ROCKET_TESTS_FIXTURES_DIR . '/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/HTML/original.php'), - 'is_allowed' => true, - 'home_url' => 'http://example.com', - 'is_mobile' => [ - 'has_mobile_cache' => false, - 'is_caching_mobile_files' => false, - 'is_mobile' => false, - ], - 'get_existing_used_css' => [ - 'used_css' => null - ], - 'create_new_job' => [ - 'create_job' => false, - 'safelist' => [], - 'skipped_attr' => [], - 'config' => [ - 'treeshake' => 1, - 'rucss_safelist' => [], - 'skip_attr' => [], - 'is_mobile' => false, - 'is_home' => true, - ], - 'is_success_response' => true, - 'response' => [ - 'code' => 200, - 'contents' => [ - 'jobId' => 'id', - ] - ] - ] - ], - 'expected' => file_get_contents(WP_ROCKET_TESTS_FIXTURES_DIR . '/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/HTML/original.php'), - ], ]; diff --git a/tests/Fixtures/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/updateMessage.php b/tests/Fixtures/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/updateMessage.php new file mode 100644 index 0000000000..8bd7059ee8 --- /dev/null +++ b/tests/Fixtures/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/updateMessage.php @@ -0,0 +1,25 @@ + [ + 'config' => [ + 'ressources' => [ + 'job_id' => 123, + 'code' => 200, + 'message' => 'message', + 'previous_message' => '' + ], + 'result' => true + ], + 'expected' => [ + 'ressources' => [ + 'job_id' => 123, + 'code' => 200, + 'message' => 'message', + 'previous_message' => '', + 'error_message' => ' - 2023-10-11 20:21:00 200: message' + ], + 'result' => true + ] + ] +]; diff --git a/tests/Fixtures/inc/Engine/Optimization/RUCSS/Cron/Subscriber/CSS/rucss.css b/tests/Fixtures/inc/Engine/Optimization/RUCSS/Cron/Subscriber/CSS/rucss.css new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/Fixtures/inc/Engine/Optimization/RUCSS/Cron/Subscriber/checkJobStatus.php b/tests/Fixtures/inc/Engine/Optimization/RUCSS/Cron/Subscriber/checkJobStatus.php new file mode 100644 index 0000000000..07b2fe4176 --- /dev/null +++ b/tests/Fixtures/inc/Engine/Optimization/RUCSS/Cron/Subscriber/checkJobStatus.php @@ -0,0 +1,192 @@ + "rucss_jobs", + "data" => [ + "url" => "https://example.org/", + "use_cache" => false, + "is_mobile" => false, + "continent_code" => "EU", + "queue_name" => "rucssJob_EU_Home", + "is_home" => true, + "pluginSafeList" => [ + ], + "skipAttrs" => [ + ], + "start_at" => 1691650637819 + ], + "opts" => [ + "attempts" => 0, + "delay" => 0, + "removeOnFail" => [ + "age" => 1800 + ], + "removeOnComplete" => [ + "age" => 1800 + ] + ], + "id" => "6026944", + "progress" => 0, + "returnvalue" => [ + "code" => 200, + "status" => "completed", + "elapsed_time" => "467ms", + "coverage_time" => "450ms", + "purge_time" => "17ms", + "message" => "Treeshaked successfully!", + "contents" => [ + "success" => true, + "shakedCSS" => "body{background-color:#f0f0f2;margin:0;padding:0;font-family:-apple-system,system-ui,BlinkMacSystemFont,\"Segoe UI\",\"Open Sans\", \"Helvetica Neue\",Helvetica,Arial,sans-serif}div{width:600px;margin:5em auto;padding:2em;background-color:#fdfdff;border-radius:.5em;box-shadow:2px 3px 7px 2px rgba(0,0,0,.02)}a:link,a:visited{color:#38488f;text-decoration:none}@media (max-width:700px){div{margin:0 auto;width:auto}}", + "shakedCSS_size" => 409, + "orginalCSS_size" => 650 + ], + "server_ip" => "51.178.134.82" + ], + "stacktrace" => [ + ], + "attemptsMade" => 1, + "delay" => 0, + "timestamp" => 1691650637819, + "finishedOn" => 1691650638313, + "processedOn" => 1691650637834 +]); + +$error_response = json_encode([ + "name" => "rucss_jobs", + "data" => [ + "url" => "https://testrocket.cloudaccess.host/fr/", + "use_cache" => false, + "is_mobile" => false, + "continent_code" => "EU", + "queue_name" => "rucssJob_EU_Home", + "is_home" => true, + "pluginSafeList" => [ + ], + "skipAttrs" => [ + ], + "start_at" => 1691650390780 + ], + "opts" => [ + "attempts" => 0, + "delay" => 0, + "removeOnFail" => [ + "age" => 1800 + ], + "removeOnComplete" => [ + "age" => 1800 + ] + ], + "id" => "6026821", + "progress" => 0, + "returnvalue" => [ + "code" => 500, + "status" => "failed", + "error" => "Error", + "message" => "net::ERR_NAME_NOT_RESOLVED at https://testrocket.cloudaccess.host/fr/" + ], + "stacktrace" => [ + ], + "attemptsMade" => 1, + "delay" => 0, + "timestamp" => 1691650390780, + "finishedOn" => 1691650390888, + "processedOn" => 1691650390781 +]); + +$success_response_create = json_encode( [ + "code" => 200, + "message" => "Added to Queue successfully.", + "contents" => [ + "jobId" => "OVH_EU--6026944", + "queueName" => "EU", + "isHome" => true, + "queueFullName" => "rucssJob_EU_Home" + ] +]); + +return [ + 'structure' => [], + 'test_data' => [ + 'rowShouldShouldReturnCss' => [ + 'config' => [ + 'hash' => 'hash', + 'row' => [ + 'url' => 'https://example.org', + 'job_id' => '123', + 'queue_name' => 'queue', + ], + 'request' => [ + 'url' => 'http://localhostrucss-job', + 'method' => 'GET', + 'response' => [ + 'response' => [ + 'code' => 200, + ], + 'body' => $success_response + ] + ] + ], + 'expected' => [ + 'rows' => [ + [ + 'status' => 'completed', + 'job_id' => '123', + 'queue_name' => 'queue', + 'hash' => 'hash', + ] + ], + 'files' => [ + '/wp-content/cache/used-css/1/h/a/s/h.css.gz' => [ + 'exists' => true, + ] + ] + ] + ], + '408ShouldRecreateJob' => [ + 'config' => [ + 'hash' => 'hash', + 'row' => [ + 'url' => 'https://example.org', + 'job_id' => '123', + 'queue_name' => 'queue', + ], + 'request' => [ + 'url' => 'http://localhostrucss-job', + 'method' => 'GET', + 'response' => [ + 'response' => [ + 'code' => 408, + 'message' => 'bad json' + ], + 'body' => $error_response + ] + ], + 'create' => [ + 'url' => 'http://localhostrucss-job', + 'method' => 'POST', + 'response' => [ + 'response' => [ + 'code' => 200, + ], + 'body' => $success_response_create + ] + ] + ], + 'expected' => [ + 'rows' => [ + [ + 'status' => 'to-submit', + 'job_id' => '', + 'queue_name' => 'queue', + 'hash' => '', + ] + ], + 'files' => [ + '/wp-content/cache/used-css/1/h/a/s/h.css.gz' => [ + 'exists' => false, + ] + ] + ] + ], + ] +]; diff --git a/tests/Fixtures/inc/Engine/Optimization/RUCSS/Cron/Subscriber/cronRemoveFailedJobs.php b/tests/Fixtures/inc/Engine/Optimization/RUCSS/Cron/Subscriber/cronRemoveFailedJobs.php index f311e705ae..2fa8d1c5d0 100644 --- a/tests/Fixtures/inc/Engine/Optimization/RUCSS/Cron/Subscriber/cronRemoveFailedJobs.php +++ b/tests/Fixtures/inc/Engine/Optimization/RUCSS/Cron/Subscriber/cronRemoveFailedJobs.php @@ -51,7 +51,7 @@ 'retries' => 0, 'is_mobile' => false, 'job_id' => 304732178, - 'status' => 'pending', + 'status' => 'to-submit', 'modified' => $old_date, 'last_accessed' => $old_date, ], @@ -62,7 +62,7 @@ 'retries' => 0, 'is_mobile' => false, 'job_id' => 969832401, - 'status' => 'pending', + 'status' => 'to-submit', 'modified' => $old_date, 'last_accessed' => $old_date, ], @@ -89,15 +89,4 @@ ], 'expected' => $pending_used_css, ], - 'shouldNotDeleteFailedJobsNoResponse' => [ - 'input' => [ - 'used_css' => $failed_used_css, - 'add_job_to_queue_response'=> [ - 'headers'=>[], - 'response' => array('code' => 404,'message'=> "error."), - 'body'=>'' - ] - ], - 'expected' => [], - ], ]; diff --git a/tests/Fixtures/inc/Engine/Optimization/RUCSS/Cron/Subscriber/processOnSubmitJobs.php b/tests/Fixtures/inc/Engine/Optimization/RUCSS/Cron/Subscriber/processOnSubmitJobs.php new file mode 100644 index 0000000000..e4c511988f --- /dev/null +++ b/tests/Fixtures/inc/Engine/Optimization/RUCSS/Cron/Subscriber/processOnSubmitJobs.php @@ -0,0 +1,320 @@ + [ + 'config' => [ + 'rows' => [ + [ + 'url' => 'http://example.org', + 'job_id' => '', + 'queue_name' => '', + 'is_mobile' => false, + 'status' => 'to-submit', + 'retries' => 0, + ], + [ + 'url' => 'http://example.org/2', + 'job_id' => '', + 'queue_name' => '', + 'is_mobile' => false, + 'status' => 'to-submit', + 'retries' => 0, + ], + [ + 'url' => 'http://example.org/3', + 'job_id' => '', + 'queue_name' => '', + 'is_mobile' => false, + 'status' => 'to-submit', + 'retries' => 0, + ] + ], + 'max_rows' => 100, + 'http' => [ + 'http://localhostrucss-job' => [ + 'body' => json_encode([ + 'code' => 200, + 'contents' => [ + 'jobId' => 'job_id', + 'queueName' => 'queue_name', + ], + ]), + 'response' => ['code' => 200 ] + ] + ] + ], + 'expected' => [ + 'rows' => [ + [ + 'url' => 'http://example.org', + 'job_id' => 'job_id', + 'queue_name' => 'queue_name', + 'is_mobile' => false, + 'status' => 'pending', + 'retries' => 0, + ], + [ + 'url' => 'http://example.org/2', + 'job_id' => 'job_id', + 'queue_name' => 'queue_name', + 'is_mobile' => false, + 'status' => 'pending', + 'retries' => 0, + ], + [ + 'url' => 'http://example.org/3', + 'job_id' => 'job_id', + 'queue_name' => 'queue_name', + 'is_mobile' => false, + 'status' => 'pending', + 'retries' => 0, + ] + ] + ] + ], + 'ShouldAddRightNumberOfPending' => [ + 'config' => [ + 'rows' => [ + [ + 'url' => 'http://example.org', + 'job_id' => '', + 'queue_name' => '', + 'is_mobile' => false, + 'status' => 'to-submit', + 'retries' => 0, + ], + [ + 'url' => 'http://example.org/2', + 'job_id' => '', + 'queue_name' => '', + 'is_mobile' => false, + 'status' => 'to-submit', + 'retries' => 0, + ], + [ + 'url' => 'http://example.org/3', + 'job_id' => '', + 'queue_name' => '', + 'is_mobile' => false, + 'status' => 'to-submit', + 'retries' => 0, + ] + ], + 'max_rows' => 2, + 'http' => [ + 'http://localhostrucss-job' => [ + 'body' => json_encode([ + 'code' => 200, + 'contents' => [ + 'jobId' => 'job_id', + 'queueName' => 'queue_name', + ], + ]), + 'response' => ['code' => 200 ] + ] + ] + ], + 'expected' => [ + 'rows' => [ + [ + 'url' => 'http://example.org', + 'job_id' => 'job_id', + 'queue_name' => 'queue_name', + 'is_mobile' => false, + 'status' => 'pending', + 'retries' => 0, + ], + [ + 'url' => 'http://example.org/2', + 'job_id' => 'job_id', + 'queue_name' => 'queue_name', + 'is_mobile' => false, + 'status' => 'pending', + 'retries' => 0, + ], + [ + 'url' => 'http://example.org/3', + 'job_id' => '', + 'queue_name' => '', + 'is_mobile' => false, + 'status' => 'to-submit', + 'retries' => 0, + ] + ] + ] + ], + 'ShouldAddRightNumberOfPendingWithExisting' => [ + 'config' => [ + 'rows' => [ + [ + 'url' => 'http://example.org', + 'job_id' => 'job_id', + 'queue_name' => 'queue_name', + 'is_mobile' => false, + 'status' => 'pending', + 'retries' => 0, + ], + [ + 'url' => 'http://example.org/2', + 'job_id' => 'job_id', + 'queue_name' => 'queue_name', + 'is_mobile' => false, + 'status' => 'in-progress', + 'retries' => 0, + ], + [ + 'url' => 'http://example.org/3', + 'job_id' => '', + 'queue_name' => '', + 'is_mobile' => false, + 'status' => 'to-submit', + 'retries' => 0, + ], + [ + 'url' => 'http://example.org/4', + 'job_id' => '', + 'queue_name' => '', + 'is_mobile' => false, + 'status' => 'to-submit', + 'retries' => 0, + ] + ], + 'max_rows' => 2, + 'http' => [ + 'http://localhostrucss-job' => [ + 'body' => json_encode([ + 'code' => 200, + 'contents' => [ + 'jobId' => 'job_id', + 'queueName' => 'queue_name', + ], + ]), + 'response' => ['code' => 200 ] + ] + ] + ], + 'expected' => [ + 'rows' => [ + [ + 'url' => 'http://example.org', + 'job_id' => '', + 'queue_name' => '', + 'is_mobile' => false, + 'status' => 'pending', + 'retries' => 0, + ], + [ + 'url' => 'http://example.org/2', + 'job_id' => 'job_id', + 'queue_name' => 'queue_name', + 'is_mobile' => false, + 'status' => 'in-progress', + 'retries' => 0, + ], + [ + 'url' => 'http://example.org/3', + 'job_id' => '', + 'queue_name' => '', + 'is_mobile' => false, + 'status' => 'to-submit', + 'retries' => 0, + ], + [ + 'url' => 'http://example.org/4', + 'job_id' => '', + 'queue_name' => '', + 'is_mobile' => false, + 'status' => 'to-submit', + 'retries' => 0, + ] + ] + ] + ], + 'MaxZeroShouldLoadAll' => [ + 'config' => [ + 'rows' => [ + [ + 'url' => 'http://example.org', + 'job_id' => 'job_id', + 'queue_name' => 'queue_name', + 'is_mobile' => false, + 'status' => 'pending', + 'retries' => 0, + ], + [ + 'url' => 'http://example.org/2', + 'job_id' => 'job_id', + 'queue_name' => 'queue_name', + 'is_mobile' => false, + 'status' => 'in-progress', + 'retries' => 0, + ], + [ + 'url' => 'http://example.org/3', + 'job_id' => '', + 'queue_name' => '', + 'is_mobile' => false, + 'status' => 'to-submit', + 'retries' => 0, + ], + [ + 'url' => 'http://example.org/4', + 'job_id' => '', + 'queue_name' => '', + 'is_mobile' => false, + 'status' => 'to-submit', + 'retries' => 0, + ] + ], + 'max_rows' => 0, + 'http' => [ + 'http://localhostrucss-job' => [ + 'body' => json_encode([ + 'code' => 200, + 'contents' => [ + 'jobId' => 'job_id', + 'queueName' => 'queue_name', + ], + ]), + 'response' => ['code' => 200 ] + ] + ] + ], + 'expected' => [ + 'rows' => [ + [ + 'url' => 'http://example.org', + 'job_id' => '', + 'queue_name' => '', + 'is_mobile' => false, + 'status' => 'pending', + 'retries' => 0, + ], + [ + 'url' => 'http://example.org/2', + 'job_id' => 'job_id', + 'queue_name' => 'queue_name', + 'is_mobile' => false, + 'status' => 'in-progress', + 'retries' => 0, + ], + [ + 'url' => 'http://example.org/3', + 'job_id' => 'job_id', + 'queue_name' => 'queue_name', + 'is_mobile' => false, + 'status' => 'pending', + 'retries' => 0, + ], + [ + 'url' => 'http://example.org/4', + 'job_id' => 'job_id', + 'queue_name' => 'queue_name', + 'is_mobile' => false, + 'status' => 'pending', + 'retries' => 0, + ] + ] + ] + ], + +]; diff --git a/tests/Fixtures/inc/Engine/Optimization/RUCSS/Cron/Subscriber/processPendingJobs.php b/tests/Fixtures/inc/Engine/Optimization/RUCSS/Cron/Subscriber/processPendingJobs.php new file mode 100644 index 0000000000..26f60ab689 --- /dev/null +++ b/tests/Fixtures/inc/Engine/Optimization/RUCSS/Cron/Subscriber/processPendingJobs.php @@ -0,0 +1,132 @@ + "rucss_jobs", + "data" => [ + "url" => "https://example.org/", + "use_cache" => false, + "is_mobile" => false, + "continent_code" => "EU", + "queue_name" => "rucssJob_EU_Home", + "is_home" => true, + "pluginSafeList" => [ + ], + "skipAttrs" => [ + ], + "start_at" => 1691650637819 + ], + "opts" => [ + "attempts" => 0, + "delay" => 0, + "removeOnFail" => [ + "age" => 1800 + ], + "removeOnComplete" => [ + "age" => 1800 + ] + ], + "id" => "6026944", + "progress" => 0, + "returnvalue" => [ + "code" => 200, + "status" => "completed", + "elapsed_time" => "467ms", + "coverage_time" => "450ms", + "purge_time" => "17ms", + "message" => "Treeshaked successfully!", + "contents" => [ + "success" => true, + "shakedCSS" => "body{background-color:#f0f0f2;margin:0;padding:0;font-family:-apple-system,system-ui,BlinkMacSystemFont,\"Segoe UI\",\"Open Sans\", \"Helvetica Neue\",Helvetica,Arial,sans-serif}div{width:600px;margin:5em auto;padding:2em;background-color:#fdfdff;border-radius:.5em;box-shadow:2px 3px 7px 2px rgba(0,0,0,.02)}a:link,a:visited{color:#38488f;text-decoration:none}@media (max-width:700px){div{margin:0 auto;width:auto}}", + "shakedCSS_size" => 409, + "orginalCSS_size" => 650 + ], + "server_ip" => "51.178.134.82" + ], + "stacktrace" => [ +], + "attemptsMade" => 1, + "delay" => 0, + "timestamp" => 1691650637819, + "finishedOn" => 1691650638313, + "processedOn" => 1691650637834 +]); + +$error_response = json_encode([ + "name" => "rucss_jobs", + "data" => [ + "url" => "https://testrocket.cloudaccess.host/fr/", + "use_cache" => false, + "is_mobile" => false, + "continent_code" => "EU", + "queue_name" => "rucssJob_EU_Home", + "is_home" => true, + "pluginSafeList" => [ + ], + "skipAttrs" => [ + ], + "start_at" => 1691650390780 + ], + "opts" => [ + "attempts" => 0, + "delay" => 0, + "removeOnFail" => [ + "age" => 1800 + ], + "removeOnComplete" => [ + "age" => 1800 + ] + ], + "id" => "6026821", + "progress" => 0, + "returnvalue" => [ + "code" => 500, + "status" => "failed", + "error" => "Error", + "message" => "net::ERR_NAME_NOT_RESOLVED at https://testrocket.cloudaccess.host/fr/" + ], + "stacktrace" => [ + ], + "attemptsMade" => 1, + "delay" => 0, + "timestamp" => 1691650390780, + "finishedOn" => 1691650390888, + "processedOn" => 1691650390781 +]); + +return [ + 'structure' => [], + 'test_data' => [ + 'rowShouldShouldReturnCss' => [ + 'config' => [ + 'row' => [ + 'url' => 'https://example.org', + 'job_id' => '123', + 'queue_name' => 'queue', + ], + 'request' => [ + 'url' => 'https://saas.wp-rocket.me/rucss-job', + 'response' => [ + 'response' => [ + 'code' => 200, + ], + 'body' => $success_response + ] + ] + ], + 'expected' => [ + 'rows' => [ + 'hash' => '1234', + 'status' => 'completed', + 'id' => 1, + 'css' => '', + ], + 'files' => [ + 'rucss' => [ + 'exists' => true, + 'content' => file_get_contents(__DIR__ . '/CSS/rucss.css') + ] + ] + ] + ], + ] +]; diff --git a/tests/Fixtures/inc/Engine/Optimization/RUCSS/Cron/Subscriber/scheduleOnSubmitJobs.php b/tests/Fixtures/inc/Engine/Optimization/RUCSS/Cron/Subscriber/scheduleOnSubmitJobs.php new file mode 100644 index 0000000000..5146988283 --- /dev/null +++ b/tests/Fixtures/inc/Engine/Optimization/RUCSS/Cron/Subscriber/scheduleOnSubmitJobs.php @@ -0,0 +1,24 @@ + [ + 'config' => [ + 'scheduled' => false, + 'rucss' => true, + ], + 'expected' => true + ], + 'alreadyPresentShouldNotRegister' => [ + 'config' => [ + 'scheduled' => true, + 'rucss' => true, + ], + 'expected' => true + ], + 'alreadyPresentAndDisabledShouldRemove' => [ + 'config' => [ + 'scheduled' => true, + 'rucss' => false, + ], + 'expected' => false + ], +]; diff --git a/tests/Fixtures/inc/Engine/Optimization/RUCSS/Database/Queries/UsedCSS/createNewJob.php b/tests/Fixtures/inc/Engine/Optimization/RUCSS/Database/Queries/UsedCSS/createNewJob.php new file mode 100644 index 0000000000..6d47cc6591 --- /dev/null +++ b/tests/Fixtures/inc/Engine/Optimization/RUCSS/Database/Queries/UsedCSS/createNewJob.php @@ -0,0 +1,49 @@ + [ + 'config' => [ + 'url' => 'https://example.org', + 'job_id' => 'EU-1', + 'queue_name' => 'EU', + 'is_mobile' => false, + 'now' => '2023-10-11 20:21:00', + 'result' => true + ], + 'expected' => [ + 'item' => [ + 'url' => 'https://example.org', + 'job_id' => 'EU-1', + 'queue_name' => 'EU', + 'is_mobile' => false, + 'status' => 'to-submit', + 'retries' => 0, + 'last_accessed' => '2023-10-11 20:21:00', + 'submitted_at' => '2023-10-11 20:21:00', + ], + 'result' => true + ] + ], + 'createWithoutJobIdAndQueueNameShouldAdd' => [ + 'config' => [ + 'url' => 'https://example.org', + 'job_id' => '', + 'queue_name' => '', + 'is_mobile' => false, + 'now' => '2023-10-11 20:21:00', + 'result' => true + ], + 'expected' => [ + 'item' => [ + 'url' => 'https://example.org', + 'job_id' => '', + 'queue_name' => '', + 'is_mobile' => false, + 'status' => 'to-submit', + 'retries' => 0, + 'last_accessed' => '2023-10-11 20:21:00', + 'submitted_at' => '2023-10-11 20:21:00', + ], + 'result' => true + ] + ], +]; diff --git a/tests/Fixtures/inc/Engine/Optimization/RUCSS/Database/Queries/UsedCSS/resetJob.php b/tests/Fixtures/inc/Engine/Optimization/RUCSS/Database/Queries/UsedCSS/resetJob.php new file mode 100644 index 0000000000..6e63902a49 --- /dev/null +++ b/tests/Fixtures/inc/Engine/Optimization/RUCSS/Database/Queries/UsedCSS/resetJob.php @@ -0,0 +1,45 @@ + [ + 'config' => [ + 'id' => 0, + 'job_id' => 'EU-1', + 'now' => '2023-10-11 20:21:00', + 'updated' => true, + ], + 'expected' => [ + 'id' => 0, + 'data' => [ + 'job_id' => 'EU-1', + 'status' => 'to-submit', + 'error_code' => '', + 'error_message' => '', + 'retries' => 0, + 'modified' => '2023-10-11 20:21:00', + 'submitted_at' => '2023-10-11 20:21:00', + ], + 'result' => true + ] + ], + 'resetJobIdMissingShouldUpdateItem' => [ + 'config' => [ + 'id' => 0, + 'job_id' => '', + 'now' => '2023-10-11 20:21:00', + 'updated' => true, + ], + 'expected' => [ + 'id' => 0, + 'data' => [ + 'job_id' => '', + 'status' => 'to-submit', + 'error_code' => '', + 'error_message' => '', + 'retries' => 0, + 'modified' => '2023-10-11 20:21:00', + 'submitted_at' => '2023-10-11 20:21:00', + ], + 'result' => true + ] + ], +]; diff --git a/tests/Fixtures/inc/Engine/Optimization/RUCSS/Frontend/Subscriber/HTML/input.html b/tests/Fixtures/inc/Engine/Optimization/RUCSS/Frontend/Subscriber/HTML/input.html new file mode 100644 index 0000000000..917ece4bba --- /dev/null +++ b/tests/Fixtures/inc/Engine/Optimization/RUCSS/Frontend/Subscriber/HTML/input.html @@ -0,0 +1,10 @@ + + + + + Title + + + + + diff --git a/tests/Fixtures/inc/Engine/Optimization/RUCSS/Frontend/Subscriber/HTML/output.html b/tests/Fixtures/inc/Engine/Optimization/RUCSS/Frontend/Subscriber/HTML/output.html new file mode 100644 index 0000000000..917ece4bba --- /dev/null +++ b/tests/Fixtures/inc/Engine/Optimization/RUCSS/Frontend/Subscriber/HTML/output.html @@ -0,0 +1,10 @@ + + + + + Title + + + + + diff --git a/tests/Fixtures/inc/Engine/Optimization/RUCSS/Frontend/Subscriber/treeshake.php b/tests/Fixtures/inc/Engine/Optimization/RUCSS/Frontend/Subscriber/treeshake.php new file mode 100644 index 0000000000..a5ba8eea3e --- /dev/null +++ b/tests/Fixtures/inc/Engine/Optimization/RUCSS/Frontend/Subscriber/treeshake.php @@ -0,0 +1,75 @@ + [ + 'shouldAddNewRow' => [ + 'config' => [ + 'rucss' => true, + 'html' => $html_input, + 'rows' => [ + + ], + 'files' => [ + + ] + + ], + 'expected' => [ + 'html' => $html_output, + 'rows' => [ + [ + 'url' => 'http://example.org', + 'job_id' => '', + 'queue_name' => '', + 'is_mobile' => false, + 'status' => 'to-submit', + 'retries' => 0, + ] + ], + 'files' => [ + + ] + ] + ], + 'ExistingRowShouldNotReset' => [ + 'config' => [ + 'rucss' => true, + 'html' => $html_input, + 'rows' => [ + [ + 'url' => 'http://example.org', + 'job_id' => '', + 'queue_name' => '', + 'is_mobile' => false, + 'status' => 'pending', + 'retries' => 3, + ] + ], + 'files' => [ + + ] + + ], + 'expected' => [ + 'html' => $html_output, + 'rows' => [ + [ + 'url' => 'http://example.org', + 'job_id' => '', + 'queue_name' => '', + 'is_mobile' => false, + 'status' => 'pending', + 'retries' => 0, + ] + ], + 'files' => [ + + ] + ] + ], + ] +]; diff --git a/tests/HTTPCallTrait.php b/tests/HTTPCallTrait.php new file mode 100644 index 0000000000..cdd4289853 --- /dev/null +++ b/tests/HTTPCallTrait.php @@ -0,0 +1,31 @@ +config && key_exists('http', $this->config)) { + return $response; + } + foreach ($this->config['http'] as $mocked_url => $response_fixture) { + if($url === $mocked_url) { + return $response_fixture; + } + } + + return $response; + } +} diff --git a/tests/Integration/DBTrait.php b/tests/Integration/DBTrait.php index 04ee9d38c6..c58a62403a 100644 --- a/tests/Integration/DBTrait.php +++ b/tests/Integration/DBTrait.php @@ -5,8 +5,21 @@ trait DBTrait { public static function resourceFound( array $resource ) : bool { $container = apply_filters( 'rocket_container', null ); - $resource_query = $container->get( 'rucss_resources_query' ); - return $resource_query->query( $resource ); + $resource_query = $container->get( 'rucss_used_css_query' ); + return count($resource_query->query( $resource )) > 0; + } + + public static function addResource(array $resource) { + $container = apply_filters( 'rocket_container', null ); + $resource_query = $container->get( 'rucss_used_css_query' ); + $job_id = $resource_query->create_new_job($resource['url'], $resource['job_id'], $resource['queue_name']); + if(key_exists('status', $resource) && 'in-progress' === $resource['status']) { + $resource_query->make_status_inprogress($job_id); + } + if(key_exists('status', $resource) && 'pending' === $resource['status']) { + $resource_query->make_status_pending($job_id); + } + return $job_id; } public static function cacheFound( array $cache): bool { @@ -37,7 +50,7 @@ public static function installFresh() { $rucss_usedcss_table = $container->get( 'rucss_usedcss_table' ); $rucss_usedcss_table->install(); - + $container->get( 'rucss_used_css_query' )::$table_exists = true; $preload_cache_table = $container->get( 'preload_caches_table' ); $preload_cache_table->install(); } diff --git a/tests/Integration/inc/Engine/Optimization/RUCSS/Cron/Subscriber/addInterval.php b/tests/Integration/inc/Engine/Optimization/RUCSS/Cron/Subscriber/addInterval.php index 730034ad83..b0884c2676 100644 --- a/tests/Integration/inc/Engine/Optimization/RUCSS/Cron/Subscriber/addInterval.php +++ b/tests/Integration/inc/Engine/Optimization/RUCSS/Cron/Subscriber/addInterval.php @@ -3,6 +3,7 @@ namespace WP_Rocket\Tests\Integration\inc\Engine\Optimization\RUCSS\Cron\Subscriber; +use WP_Rocket\Tests\Integration\FilterTrait; use WP_Rocket\Tests\Integration\TestCase; /** @@ -11,14 +12,17 @@ * @group RUCSS */ class Test_AddInterval extends TestCase { + private $rucss; private $interval; + public function tear_down() { remove_filter( 'pre_get_rocket_option_remove_unused_css', [ $this, 'set_rucss_option' ] ); remove_filter( 'rocket_rucss_pending_jobs_cron_interval', [ $this, 'set_interval'] ); remove_filter( 'rocket_remove_rucss_failed_jobs_cron_interval', [ $this, 'set_interval'] ); + parent::tear_down(); } @@ -41,9 +45,11 @@ public function testShouldDoExpected( $config, $expected ) { if ( null === $expected ) { $this->assertArrayNotHasKey( 'rocket_rucss_pending_jobs', $schedules ); $this->assertArrayNotHasKey( 'rocket_remove_rucss_failed_jobs', $schedules ); + $this->assertArrayNotHasKey( 'rocket_rucss_on_submit_jobs', $schedules ); } else { $this->assertArrayHasKey( 'rocket_rucss_pending_jobs', $schedules ); $this->assertArrayHasKey( 'rocket_remove_rucss_failed_jobs', $schedules ); + $this->assertArrayHasKey( 'rocket_rucss_on_submit_jobs', $schedules ); $this->assertContains( $expected, $schedules diff --git a/tests/Integration/inc/Engine/Optimization/RUCSS/Cron/Subscriber/checkJobStatus.php b/tests/Integration/inc/Engine/Optimization/RUCSS/Cron/Subscriber/checkJobStatus.php new file mode 100644 index 0000000000..40fd1d25c4 --- /dev/null +++ b/tests/Integration/inc/Engine/Optimization/RUCSS/Cron/Subscriber/checkJobStatus.php @@ -0,0 +1,79 @@ +config = $config; + $id = self::addResource($config['row']); + do_action('rocket_rucss_job_check_status', $id); + + foreach ($expected['rows'] as $row) { + self::assertTrue(self::resourceFound($row)); + } + foreach ($expected['files'] as $path => $file) { + self::assertSame($file['exists'], $this->filesystem->exists($path)); + } + } + + + public function mock_http($response, $args, $url) { + if($url === $this->config['request']['url'] && $args['method'] === $this->config['request']['method'] ) { + return $this->config['request']['response']; + } + + if($url === $this->config['create']['url'] && $args['method'] === $this->config['create']['method'] ) { + return $this->config['create']['response']; + } + + return $response; + } + public function rucss_hash() { + return $this->config['hash']; + } + +} + diff --git a/tests/Integration/inc/Engine/Optimization/RUCSS/Cron/Subscriber/cronRemoveFailedJobs.php b/tests/Integration/inc/Engine/Optimization/RUCSS/Cron/Subscriber/cronRemoveFailedJobs.php index c0302578f3..877733304d 100644 --- a/tests/Integration/inc/Engine/Optimization/RUCSS/Cron/Subscriber/cronRemoveFailedJobs.php +++ b/tests/Integration/inc/Engine/Optimization/RUCSS/Cron/Subscriber/cronRemoveFailedJobs.php @@ -52,8 +52,7 @@ public function testShouldDoExpected( $input, $expected ){ do_action( 'rocket_remove_rucss_failed_jobs' ); $rucss_usedcss_query = $container->get( 'rucss_used_css_query' ); - $resultUsedCssAfterClean = $rucss_usedcss_query->query( [ 'status' => 'pending' ] ); - + $resultUsedCssAfterClean = $rucss_usedcss_query->query( [ 'status' => 'to-submit' ] ); $this->assertCount( count( $expected ), $resultUsedCssAfterClean ); } public function edit_http_request($response, $args, $url) { diff --git a/tests/Integration/inc/Engine/Optimization/RUCSS/Cron/Subscriber/processOnSubmitJobs.php b/tests/Integration/inc/Engine/Optimization/RUCSS/Cron/Subscriber/processOnSubmitJobs.php new file mode 100644 index 0000000000..5ce56f08c5 --- /dev/null +++ b/tests/Integration/inc/Engine/Optimization/RUCSS/Cron/Subscriber/processOnSubmitJobs.php @@ -0,0 +1,67 @@ +setup_http(); + } + + public function tear_down() + { + $this->tear_down_http(); + remove_filter('rocket_rucss_max_pending_jobs', [$this, 'max_rows']); + parent::tear_down(); + } + + /** + * @dataProvider configTestData + */ + public function testShouldDoAsExpected( $config, $expected ) + { + $this->config = $config; + + foreach ($config['rows'] as $row) { + self::addResource($row); + } + + do_action('rocket_rucss_on_submit_jobs'); + + foreach ($expected['rows'] as $row) { + $this->assertTrue(self::resourceFound($row), json_encode($row) . ' not found'); + } + } + + public function max_rows() { + return $this->config['max_rows']; + } + + +} diff --git a/tests/Integration/inc/Engine/Optimization/RUCSS/Cron/Subscriber/scheduleOnSubmitJobs.php b/tests/Integration/inc/Engine/Optimization/RUCSS/Cron/Subscriber/scheduleOnSubmitJobs.php new file mode 100644 index 0000000000..137a8d7469 --- /dev/null +++ b/tests/Integration/inc/Engine/Optimization/RUCSS/Cron/Subscriber/scheduleOnSubmitJobs.php @@ -0,0 +1,50 @@ +config = $config; + + if ( $config['scheduled'] ) { + wp_schedule_event( time(), 'rocket_rucss_on_submit_jobs', 'rocket_rucss_on_submit_jobs' ); + } + + do_action('init'); + + + if ( $expected ) { + $this->assertNotFalse( wp_next_scheduled( 'rocket_rucss_on_submit_jobs' ) ); + } else { + $this->assertFalse( wp_next_scheduled( 'rocket_rucss_on_submit_jobs' ) ); + } + } + + public function rucss() { + return $this->config['rucss']; + } +} diff --git a/tests/Integration/inc/Engine/Optimization/RUCSS/Frontend/Subscriber/treeshake.php b/tests/Integration/inc/Engine/Optimization/RUCSS/Frontend/Subscriber/treeshake.php new file mode 100644 index 0000000000..6862ed179a --- /dev/null +++ b/tests/Integration/inc/Engine/Optimization/RUCSS/Frontend/Subscriber/treeshake.php @@ -0,0 +1,65 @@ +config = $config; + + foreach ($config['rows'] as $row) { + self::addResource($row); + } + + $this->assertSame($expected['html'], apply_filters('rocket_buffer', $config['html'])); + + foreach ($expected['rows'] as $row) { + $this->assertTrue(self::resourceFound($row), json_encode($row) . ' not found'); + } + } + + public function rucss() { + return $this->config['rucss']; + } +} diff --git a/tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/UsedCSSTrait.php b/tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/UsedCSSTrait.php new file mode 100644 index 0000000000..9224f6abde --- /dev/null +++ b/tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/UsedCSSTrait.php @@ -0,0 +1,81 @@ +options = Mockery::mock(Options_Data::class); + $this->used_css_query = $this->createMock(UsedCSS_Query::class); + $this->api = Mockery::mock(APIClient::class); + $this->queue = Mockery::mock(QueueInterface::class); + $this->data_manager = Mockery::mock(DataManager::class); + $this->filesystem = Mockery::mock(Filesystem::class); + $this->database = Mockery::mock(Database::class); + $this->context = Mockery::mock(ContextInterface::class); + $this->optimisedContext = Mockery::mock(ContextInterface::class); + + $this->usedcss = new UsedCSS($this->options, $this->used_css_query, $this->api, $this->queue, $this->data_manager, $this->filesystem, $this->context, $this->optimisedContext); + $this->set_logger($this->usedcss); + } +} diff --git a/tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/check_job_status.php b/tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/checkJobStatus.php similarity index 85% rename from tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/check_job_status.php rename to tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/checkJobStatus.php index 8a5d1ce9da..ef52e5eff3 100644 --- a/tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/check_job_status.php +++ b/tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/checkJobStatus.php @@ -1,6 +1,7 @@ queue = Mockery::mock( QueueInterface::class ); $this->data_manager = Mockery::mock( DataManager::class ); $this->filesystem = Mockery::mock( Filesystem::class ); + $this->context = Mockery::mock(ContextInterface::class); + $this->optimisedContext = Mockery::mock(ContextInterface::class); $this->usedCss = Mockery::mock( - UsedCSS::class . '[is_allowed,update_last_accessed]', + UsedCSS::class . '[is_allowed,update_last_accessed,add_url_to_the_queue]', [ $this->options, $this->usedCssQuery, $this->api, $this->queue, $this->data_manager, - $this->filesystem + $this->filesystem, + $this->context, + $this->optimisedContext, ] ); + + $this->set_logger($this->usedCss); } protected function tearDown(): void { @@ -58,8 +67,7 @@ protected function tearDown(): void { * @dataProvider configTestData */ public function testShouldReturnAsExpected( $config, $expected ) { - Logger::disable_debug(); - $new_job_id = false; + $this->logger->allows()->error(Mockery::any()); if ( $config['row_details'] ) { $row_details = new UsedCSS_Row( $config['row_details'] ); } else { @@ -68,9 +76,6 @@ public function testShouldReturnAsExpected( $config, $expected ) { if ( isset( $config['job_details'] ) ) { $job_details = $config['job_details']; } - if ( isset( $config['add_to_queue_response'] ) ) { - $add_to_queue_response = $config['add_to_queue_response']; - } if ( isset( $job_details['contents']['shakedCSS'] ) ) { $css = $job_details['contents']['shakedCSS']; $hash = md5( $css ); @@ -85,7 +90,6 @@ public function testShouldReturnAsExpected( $config, $expected ) { if ( ! $row_details ) { return; } - //$this->usedCss->expects()->is_home( $row_details->url); Functions\expect( 'home_url' ) ->with() ->zeroOrMoreTimes() @@ -124,26 +128,20 @@ public function testShouldReturnAsExpected( $config, $expected ) { // on timeout errors with code 408 create new job. if ( 408 === $job_details['code'] ) { - $this->options->expects()->get( 'remove_unused_css_safelist', [] )->andReturn( [] ); - $this->api->expects()->add_to_queue( $row_details->url, [ - 'treeshake' => 1, - 'rucss_safelist' => [], - 'skip_attr' => [], - 'is_mobile' => $row_details->is_mobile, - 'is_home' => $row_details->is_home, - ] ) - ->andReturn( $add_to_queue_response ); - if ( false !== $add_to_queue_response ) { - $new_job_id = $add_to_queue_response['contents']['jobId']; - $this->usedCssQuery->expects( self::once() ) - ->method( 'update_job_id' ) - ->with( $config['job_id'], $new_job_id ); - } + + $this->usedCss->expects()->add_url_to_the_queue( $config['row_details']['url'], (bool) $config['row_details']['is_mobile'] ); + + $this->usedCss->check_job_status( $config['job_id'] ); + return; } $this->usedCssQuery->expects( self::once() ) ->method( 'increment_retries' ) ->with( $config['job_id'], $row_details->retries ); + $this->usedCssQuery->expects(self::once()) + ->method('update_message') + ->with($config['job_id'], $job_details['code'], $job_details['message']); + $this->usedCss->check_job_status( $config['job_id'] ); return; diff --git a/tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/clearFailedUrls.php b/tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/clearFailedUrls.php index 60f25b3df2..73639cd1a4 100644 --- a/tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/clearFailedUrls.php +++ b/tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/clearFailedUrls.php @@ -1,6 +1,7 @@ queue = Mockery::mock( QueueInterface::class ); $this->data_manager = Mockery::mock( DataManager::class ); $this->filesystem = Mockery::mock( Filesystem::class ); + $this->context = Mockery::mock(ContextInterface::class); + $this->optimisedContext = Mockery::mock(ContextInterface::class); $this->usedCss = Mockery::mock( - UsedCSS::class . '[is_allowed,update_last_accessed]', + UsedCSS::class . '[is_allowed,update_last_accessed,add_url_to_the_queue]', [ $this->options, $this->usedCssQuery, $this->api, $this->queue, $this->data_manager, - $this->filesystem + $this->filesystem, + $this->context, + $this->optimisedContext, ] ); } @@ -68,26 +73,9 @@ public function testShouldReturnAsExpected( $config, $expected ) { } else { foreach ( $config['rows'] as $row ) { - $this->options->expects() - ->get( 'remove_unused_css_safelist', [] ) - ->andReturn( [] ); Functions\when( 'home_url' )->justReturn( 'http://example.org' ); - $this->api->expects()->add_to_queue( $row->url, [ - 'treeshake' => 1, - 'rucss_safelist' => [], - 'skip_attr' => [], - 'is_mobile' => $row->is_mobile, - 'is_home' => false, - ] ) - ->andReturn( $config['add_to_queue_response']); - $this->usedCssQuery->expects( self::any() ) - ->method( 'reset_job' ) - ->with($this->anything()) - ->will($this->returnCallback( - function ( $value ) use ($row) { - return $value === $row->id; - } - ) ); + + $this->usedCss->expects()->add_url_to_the_queue($row->url, $row->is_mobile); } } diff --git a/tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/processOnSubmitJobs.php b/tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/processOnSubmitJobs.php new file mode 100644 index 0000000000..e113134186 --- /dev/null +++ b/tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/processOnSubmitJobs.php @@ -0,0 +1,113 @@ +options = Mockery::mock(Options_Data::class); + $this->used_css_query = $this->createMock(UsedCSS_Query::class); + $this->api = Mockery::mock(APIClient::class); + $this->queue = Mockery::mock(QueueInterface::class); + $this->data_manager = Mockery::mock(DataManager::class); + $this->filesystem = Mockery::mock(Filesystem::class); + $this->context = Mockery::mock(ContextInterface::class); + $this->optimize_url_context = Mockery::mock(ContextInterface::class); + + $this->usedcss = new UsedCSS($this->options, $this->used_css_query, $this->api, $this->queue, $this->data_manager, $this->filesystem, $this->context, $this->optimize_url_context); + + $this->set_logger($this->usedcss); + } + + /** + * @dataProvider configTestData + */ + public function testShouldDoAsExpected( $config, $expected ) + { + $this->logger->expects()->error(Mockery::any(), Mockery::any()); + $this->options->allows()->get( 'remove_unused_css_safelist', [] )->andReturn([]); + + Functions\when('home_url')->justReturn($config['home_url']); + + Filters\expectApplied('rocket_rucss_pending_jobs_cron_rows_count')->with(100)->andReturn($config['pending_count']); + Filters\expectApplied('rocket_rucss_max_pending_jobs')->with(3 * $expected['pending_count'])->andReturn($config['max_processing']); + + $this->used_css_query->expects(self::once())->method('get_on_submit_jobs')->with($expected['max_processing'])->willReturn($config['rows']); + + foreach ($config['add_to_queue'] as $queue) { + $this->api->expects()->add_to_queue($queue['url'], $queue['configs'])->andReturn($queue['response']); + } + + foreach ($config['make_status_pending'] as $pending) { + $this->used_css_query->expects(self::once())->method('make_status_pending')->with($pending['id'], $pending['jobId'], $pending['queueName'], $pending['mobile']); + } + + $this->usedcss->process_on_submit_jobs(); + } +} diff --git a/tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/processPendingJobs.php b/tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/processPendingJobs.php new file mode 100644 index 0000000000..bebcffea50 --- /dev/null +++ b/tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/processPendingJobs.php @@ -0,0 +1,120 @@ +options = Mockery::mock(Options_Data::class); + $this->used_css_query = $this->createMock(UsedCSS_Query::class); + $this->api = Mockery::mock(APIClient::class); + $this->queue = Mockery::mock(QueueInterface::class); + $this->data_manager = Mockery::mock(DataManager::class); + $this->filesystem = Mockery::mock(Filesystem::class); + $this->database = Mockery::mock(Database::class); + $this->context = Mockery::mock(ContextInterface::class); + $this->optimisedContext = Mockery::mock(ContextInterface::class); + + $this->usedcss = new UsedCSS($this->options, $this->used_css_query, $this->api, $this->queue, $this->data_manager, $this->filesystem, $this->context, $this->optimisedContext,); + $this->set_logger($this->usedcss); + } + + /** + * @dataProvider configTestData + */ + public function testShouldDoAsExpected( $config, $expected ) + { + + $this->options->allows()->get('remove_unused_css', 0)->andReturn($config['enabled']); + + $this->configureDisabled($config, $expected); + $this->configureEnabled($config, $expected); + + $this->usedcss->process_pending_jobs(); + } + + protected function configureDisabled($config, $expected) { + if( $config['enabled']) { + return; + } + $this->used_css_query->expects(self::never())->method('make_status_inprogress'); + } + + protected function configureEnabled($config, $expected) { + if(! $config['enabled']) { + return; + } + + Filters\expectApplied('rocket_rucss_pending_jobs_cron_rows_count')->with(100)->andReturn($config['rows_count']); + + $this->used_css_query->expects(self::once())->method('get_pending_jobs')->with($expected['rows_count'])->willReturn($config['rows']); + + if( ! $expected['in_progress'] ) { + return; + } + + $this->queue->expects()->add_job_status_check_async($expected['in_progress']); + $this->used_css_query->expects(self::atLeastOnce())->method('make_status_inprogress')->with($expected['in_progress']); + } +} diff --git a/tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/treeshake.php b/tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/treeshake.php index 94491c0048..ee49be2b43 100644 --- a/tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/treeshake.php +++ b/tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/treeshake.php @@ -1,6 +1,7 @@ queue = Mockery::mock(QueueInterface::class); $this->data_manager = Mockery::mock( DataManager::class ); $this->filesystem = Mockery::mock( Filesystem::class ); + $this->context = Mockery::mock(ContextInterface::class); + $this->optimisedContext = Mockery::mock(ContextInterface::class); + $this->usedCss = Mockery::mock( UsedCSS::class . '[is_allowed,update_last_accessed]', [ @@ -42,9 +50,13 @@ protected function setUp(): void $this->api, $this->queue, $this->data_manager, - $this->filesystem + $this->filesystem, + $this->context, + $this->optimisedContext, ] ); + + $this->set_logger($this->usedCss); } protected function tearDown(): void @@ -57,7 +69,6 @@ protected function tearDown(): void * @dataProvider configTestData */ public function testShouldReturnAsExpected($config, $expected) { - Logger::disable_debug(); $wp = new WP(); $GLOBALS['wp'] = $wp; @@ -66,7 +77,7 @@ public function testShouldReturnAsExpected($config, $expected) { ->zeroOrMoreTimes() ->andReturn( $config['home_url'] ); - $this->usedCss->expects()->is_allowed()->andReturn($config['is_allowed']); + $this->context->expects()->is_allowed()->andReturn($config['is_allowed']); $this->configureIsMobile($config); @@ -132,7 +143,7 @@ protected function configureGetExistingUsedCss($config) { $usedCssRow = null; } - $this->usedCssQuery->expects(self::once())->method('get_row')->with($config['home_url'], $config['is_mobile']['is_mobile'])->willReturn($usedCssRow); + $this->usedCssQuery->expects(self::atLeastOnce())->method('get_row')->with($config['home_url'], $config['is_mobile']['is_mobile'])->willReturn($usedCssRow); if ( ! empty( $config['get_existing_used_css']['used_css']->hash ) ) { $this->filesystem->shouldReceive( 'get_used_css' ) @@ -148,17 +159,6 @@ protected function configureCreateNewJob($config) { return; } - $this->options->expects()->get('remove_unused_css_safelist', [])->andReturn($config['create_new_job']['safelist']); - - Brain\Monkey\Filters\expectApplied('rocket_rucss_safelist')->with($config['create_new_job']['safelist'])->andReturn($config['create_new_job']['safelist']); - Brain\Monkey\Filters\expectApplied('rocket_rucss_skip_styles_with_attr')->with($config['create_new_job']['skipped_attr'])->andReturn($config['create_new_job']['skipped_attr']); - - $this->api->expects()->add_to_queue($config['home_url'], $config['create_new_job']['config'])->andReturn - ($config['create_new_job']['response']); - if(! key_exists('is_success_response', $config['create_new_job']) || ! $config['create_new_job']['is_success_response'] || ! $config['create_new_job']['create_job']){ - return; - } - $this->usedCssQuery->expects(self::once())->method('create_new_job')->with($config['home_url'], $config['create_new_job']['response']['contents']['jobId'], $config['create_new_job']['response']['contents']['queueName'], $config['is_mobile']['is_mobile'] ); } diff --git a/tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/updateMessage.php b/tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/updateMessage.php new file mode 100644 index 0000000000..c70357ab7e --- /dev/null +++ b/tests/Unit/inc/Engine/Optimization/RUCSS/Controller/UsedCSS/updateMessage.php @@ -0,0 +1,49 @@ +usedCss = $this->createPartialMock(UsedCSS::class, ['update_item']); + + } + + public function tearDown(): void { + parent::tearDown(); + } + + /** + * @dataProvider configTestData + */ + public function testShouldReturnAsExpected( $config, $expected ) + { + $this->usedCss->expects(self::once())->method('update_item')->with( + $expected['ressources']['job_id'], + [ + 'error_message' => $expected['ressources']['error_message'] + ] + )->willReturn($config['result']); + + Functions\expect('current_time')->andReturn('2023-10-11 20:21:00'); + + $this->assertSame( + $expected['result'], + $this->usedCss->update_message( + $config['ressources']['job_id'], + $config['ressources']['code'], + $config['ressources']['message'], + $config['ressources']['previous_message'] + ) + ); + } +} diff --git a/tests/Unit/inc/Engine/Optimization/RUCSS/Database/Queries/UsedCSS/createNewJob.php b/tests/Unit/inc/Engine/Optimization/RUCSS/Database/Queries/UsedCSS/createNewJob.php new file mode 100644 index 0000000000..286e0d71d6 --- /dev/null +++ b/tests/Unit/inc/Engine/Optimization/RUCSS/Database/Queries/UsedCSS/createNewJob.php @@ -0,0 +1,39 @@ +usedcss = $this->createPartialMock(UsedCSS::class, ['add_item']); + } + + /** + * @dataProvider configTestData + */ + public function testShouldReturnAsExpected( $config, $expected ) + { + Functions\when('current_time')->justReturn($config['now']); + $this->usedcss::$table_exists = true; + + $this->usedcss->expects(self::once())->method('add_item')->with($expected['item'])->willReturn($config['result']); + + $this->assertSame($expected['result'], $this->usedcss->create_new_job($config['url'], $config['job_id'], $config['queue_name'], $config['is_mobile'])); + } +} diff --git a/tests/Unit/inc/Engine/Optimization/RUCSS/Database/Queries/UsedCSS/resetJob.php b/tests/Unit/inc/Engine/Optimization/RUCSS/Database/Queries/UsedCSS/resetJob.php new file mode 100644 index 0000000000..a704f67cd2 --- /dev/null +++ b/tests/Unit/inc/Engine/Optimization/RUCSS/Database/Queries/UsedCSS/resetJob.php @@ -0,0 +1,40 @@ +usedcss = $this->createPartialMock(UsedCSS::class, ['update_item']); + } + + /** + * @dataProvider configTestData + */ + public function testShouldReturnAsExpected( $config, $expected ) + { + Functions\when('current_time')->justReturn($config['now']); + + $this->usedcss::$table_exists = true; + + $this->usedcss->expects(self::once())->method('update_item')->with($expected['id'], $expected['data'])->willReturn($config['updated']); + + $this->assertSame($expected['result'], $this->usedcss->reset_job($config['id'], $config['job_id'])); + } +} diff --git a/tests/Unit/inc/Engine/Optimization/RUCSS/Frontend/Subscriber/onInstall.php b/tests/Unit/inc/Engine/Optimization/RUCSS/Frontend/Subscriber/onInstall.php index fd21d19f92..eeb0929ed2 100644 --- a/tests/Unit/inc/Engine/Optimization/RUCSS/Frontend/Subscriber/onInstall.php +++ b/tests/Unit/inc/Engine/Optimization/RUCSS/Frontend/Subscriber/onInstall.php @@ -2,6 +2,7 @@ namespace WP_Rocket\Tests\Unit\inc\Engine\Optimization\RUCSS\Frontend\Subscriber; +use WP_Rocket\Engine\Common\Context\ContextInterface; use WP_Rocket\Engine\Optimization\RUCSS\Frontend\Subscriber; use Mockery; use WP_Rocket\Engine\Optimization\RUCSS\Controller\UsedCSS; @@ -20,6 +21,8 @@ class Test_onInstall extends TestCase { */ protected $used_css; + protected $context; + /** * @var Subscriber */ @@ -29,7 +32,9 @@ public function set_up() { parent::set_up(); $this->used_css = Mockery::mock(UsedCSS::class); - $this->subscriber = new Subscriber($this->used_css); + $this->context = Mockery::mock(ContextInterface::class); + + $this->subscriber = new Subscriber($this->used_css, $this->context); } public function testShouldDoAsExpected() diff --git a/tests/Unit/inc/Engine/Optimization/RUCSS/Frontend/Subscriber/onUpdate.php b/tests/Unit/inc/Engine/Optimization/RUCSS/Frontend/Subscriber/onUpdate.php index 549794282f..fdc917c681 100644 --- a/tests/Unit/inc/Engine/Optimization/RUCSS/Frontend/Subscriber/onUpdate.php +++ b/tests/Unit/inc/Engine/Optimization/RUCSS/Frontend/Subscriber/onUpdate.php @@ -2,6 +2,7 @@ namespace WP_Rocket\Tests\Unit\inc\Engine\Optimization\RUCSS\Frontend\Subscriber; +use WP_Rocket\Engine\Common\Context\ContextInterface; use WP_Rocket\Engine\Optimization\RUCSS\Frontend\Subscriber; use Mockery; use WP_Rocket\Engine\Optimization\RUCSS\Controller\UsedCSS; @@ -20,6 +21,8 @@ class Test_onUpdate extends TestCase { */ protected $used_css; + protected $context; + /** * @var Subscriber */ @@ -29,7 +32,9 @@ public function set_up() { parent::set_up(); $this->used_css = Mockery::mock(UsedCSS::class); - $this->subscriber = new Subscriber($this->used_css); + $this->context = Mockery::mock(ContextInterface::class); + + $this->subscriber = new Subscriber($this->used_css, $this->context); } /** From a5348565beb7e25f2ead69c38efb82daff9b4813 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20Perona?= Date: Mon, 23 Oct 2023 08:44:38 -0400 Subject: [PATCH 11/13] Update version to 3.15.3-alpha1 (#6238) --- wp-rocket.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wp-rocket.php b/wp-rocket.php index 26877c115f..d5859019a9 100755 --- a/wp-rocket.php +++ b/wp-rocket.php @@ -3,7 +3,7 @@ * Plugin Name: WP Rocket * Plugin URI: https://wp-rocket.me * Description: The best WordPress performance plugin. - * Version: 3.15.2 + * Version: 3.15.3-alpha1 * Requires at least: 5.8 * Requires PHP: 7.3 * Code Name: Iego @@ -20,7 +20,7 @@ defined( 'ABSPATH' ) || exit; // Rocket defines. -define( 'WP_ROCKET_VERSION', '3.15.2' ); +define( 'WP_ROCKET_VERSION', '3.15.3-alpha1' ); define( 'WP_ROCKET_WP_VERSION', '5.8' ); define( 'WP_ROCKET_WP_VERSION_TESTED', '6.3.1' ); define( 'WP_ROCKET_PHP_VERSION', '7.3' ); From 048c4e8de676860cc019b8c4a998160f4e693af1 Mon Sep 17 00:00:00 2001 From: Tabrisrp Date: Tue, 24 Oct 2023 13:48:27 +0000 Subject: [PATCH 12/13] update dynamic lists --- dynamic-lists-delayjs.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dynamic-lists-delayjs.json b/dynamic-lists-delayjs.json index 11c94a1e2c..cbe9db28ae 100644 --- a/dynamic-lists-delayjs.json +++ b/dynamic-lists-delayjs.json @@ -1 +1 @@ -{"plugins":{"ffc21030-519a-4853-8cea-49f959e82731":{"id":"plugin:def67a2c1ddd6df2353e4772b6fd4e5b","title":"Additional Variation Images Gallery for WooCommerce","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/woo-variation-gallery\/assets\/js\/slick.min.js","\/woo-variation-gallery\/assets\/js\/frontend.min.js","\/wp-includes\/js\/underscore.min.js","variation_custom_fields"],"is_default":0,"condition":"woo-variation-gallery\/woo-variation-gallery.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"0e7dc253-acd0-4421-877f-a7101d848717":{"id":"plugin:4b82cc7379d46c6272f5d556bb264eec","title":"Advanced Ads","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/uploads\/(.*).js","advanced_ads_ready","advadsCfpQueue","adsbygoogle","adservice.google","\/advanced-ads(.*)","advads_items","advads_tracking_ads"],"is_default":0,"condition":"advanced-ads\/advanced-ads.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"a4d5c058-9120-47ee-977c-f30f83fb1a75":{"id":"plugin:a076fbb79772f497349a76ee74a7f708","title":"All-in-one Compliance for GDPR \/ CCPA Cookie Consent","type":"plugin","icon":"","exclusions":["iubenda_cs.js","var _iub"],"is_default":0,"condition":"iubenda-cookie-law-solution\/iubenda_cookie_solution.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"79a5082f-821a-4a4b-a0e3-caaf22cf3f75":{"id":"plugin:9bdceaa1bb89135730a3b2aa4db94c22","title":"AMO Team Showcase","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/amo-team-showcase\/public\/js\/wookmark.js","\/amo-team-showcase\/public\/js\/amo-team-showcase-public.js","\/wp-includes\/js\/imagesloaded.min.js","amoTeamVars"],"is_default":0,"condition":"amo-team-showcase\/amo-team-showcase.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"1d058cae-4460-4354-bab3-a96445650bd8":{"id":"plugin:b739df50f3f5bf400075f17dca652517","title":"AnyWhere Elementor Pro","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/anywhere-elementor-pro\/build\/index.js"],"is_default":0,"condition":"anywhere-elementor-pro\/anywhere-elementor-pro.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"8a1614c7-55b1-4b6d-88e5-6e8ddc630dae":{"id":"plugin:46741e77eaf4d13a0c80be6b86379758","title":"Astra - Pro Addon","type":"plugin","icon":"","exclusions":["\/astra-addon\/astra-addon-(.*).js"],"is_default":0,"condition":"astra-addon\/astra-addon.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"37d96403-f9ea-4481-b2f8-374d7c93e61a":{"id":"plugin:ccd87807930a1856717fd276c336db9a","title":"Beaver Builder","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/uploads\/bb-plugin\/","\/bb-plugin\/js\/yui3.min.js","\/wp-includes\/js\/imagesloaded.min.js","\/bb-plugin\/js\/fl-slideshow.min.js"],"is_default":0,"condition":"beaver-builder-lite-version\/fl-builder.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"f83dbf3b-783e-4ef9-9b18-8a469ca7102d":{"title":"Bloom","condition":"bloom\/bloom.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/bloom\/"],"icon_url":"","type":"plugin","id":"plugin:e57cdfbc09f4e0f7445c279d9f580bdd","is_default":0,"created_at":1685189070},"135aadd2-cd4a-44ae-8dcf-801f3f2316c0":{"id":"plugin:055ef01accbad6378e3d1a4965600964","title":"Booked","type":"plugin","icon":"","exclusions":["\/booked\/","\/js\/jquery\/ui\/datepicker.min.js"],"is_default":0,"condition":"booked\/booked.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"ddfee9b0-e5a9-4d3f-8c21-b999cbb61c33":{"id":"plugin:492f9b0d55f3bf07c68e915ea1dfb72a","title":"Bookly","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/bookly-responsive-appointment-booking-tool\/frontend\/","window.bookly"],"is_default":0,"condition":"bookly-responsive-appointment-booking-tool\/main.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"7a013fd6-0881-4dbe-8e93-33edefe7f717":{"id":"plugin:e1ec2daca513de476bd3dae79366e9ab","title":"Borlabs Cookie","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","borlabsCookieConfig","borlabs-cookie.min.js","borlabsCookieContentBlocker","BorlabsCookieBox"],"is_default":0,"condition":"borlabs-cookie\/borlabs-cookie.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"3999e680-4049-4494-945c-768cecc1a2c4":{"id":"plugin:43019d66af7b41e65bb602c01e10c6a0","title":"Brizy","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/brizy\/public\/editor-build\/(.*)-wp\/editor\/js\/group-(.*).js","\/brizy\/public\/editor-build\/(.*)-wp\/editor\/js\/preview.js","Brizy.emit"],"is_default":0,"condition":"brizy\/brizy.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"af4d9357-3def-42a1-86b7-419553444b4d":{"id":"plugin:5c317f9f244597d8f236ecb7d8e41752","title":"Carousel Upsells and Related Product for WooCommerce","type":"plugin","icon":"","exclusions":["\/carousel-upsells-and-related-product-for-woocommerce\/assets\/js\/glide.min.js","carusel_poduct_related"],"is_default":0,"condition":"carousel-upsells-and-related-product-for-woocommerce\/ffxf-woo-glide-related-and-upsells.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"1d866d90-5451-43ba-a4d1-75b64f9235e1":{"id":"plugin:0a3a29603ebac8fe0808f64f5c8edbb2","title":"clickskeks.at Cookiebanner","type":"plugin","icon":"","exclusions":["clickskeks"],"is_default":0,"condition":"clickskeks\/index.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"c09695cc-2387-4416-881a-c0b392188a26":{"title":"Complianz","condition":"complianz-gdpr\/complianz-gpdr.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","complianz"],"icon_url":"","type":"plugin","id":"plugin:a766f95208154cd69a3e15150a42f325","is_default":0,"created_at":1685188788},"7e551e3b-fbe4-4235-87a9-b476bc9e2020":{"id":"plugin:949b1b923d51d10a2fb67a2a39d166b3","title":"Content Egg","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/content-egg\/res\/js\/morrisjs\/morris.min.js","\/content-egg\/res\/js\/morrisjs\/raphael.min.js","Morris.Area"],"is_default":0,"condition":"content-egg\/content-egg.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"7fbca6c5-9239-4550-a755-6f041f867a57":{"title":"Cookie Notice & Compliance for GDPR \/ CCPA","condition":"cookie-notice\/cookie-notice.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/cookie-notice\/","var cnArgs"],"icon_url":"","type":"plugin","id":"plugin:213d0f883ae27aefb3a7937656bbd11e","is_default":0,"created_at":1681379736},"26722567-fe35-44b5-a5a7-fb0f3a38c3f2":{"id":"plugin:1d10ad30bbcf0fd4b26e9625a07abcfc","title":"Cookiebot CMP","type":"plugin","icon":"","exclusions":["consent.cookiebot.com"],"is_default":0,"condition":"cookiebot\/cookiebot.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"74110e36-89e5-440d-bec3-7133da3277c2":{"id":"plugin:edcf103293ceab711e999d419d038ca1","title":"Coupon Referral Program","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/coupon-referral-program\/","\/wp-includes\/js\/jquery\/ui\/draggable.min.js"],"is_default":0,"condition":"coupon-referral-program\/coupon-referral-program.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"ed63e02f-d6c5-481a-bcb9-aae15f72aa21":{"id":"plugin:c3e26264dcfd25802805b4fd1a2a449c","title":"Crisp - Live Chat and Chatbot","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","CRISP_RUNTIME_CONFIG","l.js"],"is_default":0,"condition":"crisp\/crisp.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"a8eb622b-279c-4f84-86e0-785e9497add7":{"id":"plugin:6e4bf949e12f0bebfefb48f6c316102a","title":"Custom Twitter Feeds pro","type":"plugin","icon":"","exclusions":["\/custom-twitter-feeds-pro\/js\/ctf-scripts.min.js"],"is_default":0,"condition":"custom-twitter-feeds-pro\/custom-twitter-feed.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"1624ef15-e25b-406d-bdf9-d4b78d7a59e7":{"id":"plugin:1f893b343e72ce55e6c9013fbda172fa","title":"Customer Reviews for WooCommerce Plugin","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js ","\/jquery-migrate(.min)?.js","\/customer-reviews-woocommerce\/js\/colcade.js"],"is_default":0,"condition":"customer-reviews-woocommerce\/ivole.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"c15fe3b3-0eaa-48f9-bf04-0e778b1f8c63":{"title":"Divi - Supreme","condition":"supreme-modules-for-divi\/supreme-modules-for-divi.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js",".dipi_preloader_wrapper_outer","\/Divi\/js\/scripts.min.js","\/Divi\/js\/custom.unified.js","\/js\/magnific-popup.js","var DIVI","\/supreme-modules-for-divi\/"],"icon_url":"","type":"plugin","id":"plugin:b5489ae4d8b949f536d6dd2e5b0c1a95","is_default":0,"created_at":1679738701},"dd31451b-989a-4517-b02a-e2c2e2023366":{"id":"plugin:5caed322df984bbfd3ecb506cf12b688","title":"Divi Den Pro","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/ddpro\/build\/freddie\/js\/freddieScriptPageTransition.js","\/ddpro\/build\/freddie\/js\/freddieScriptsHeaders.js","\/ddpro\/build\/freddie\/js\/freddieScriptsContents.js","\/ddpro\/build\/freddie\/js\/gsap\/gsap.min.js"],"is_default":0,"condition":"ddpro\/ddpro.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"2b006370-cc90-42c1-9656-a30fbfbc91c6":{"id":"plugin:402d9b241b04934dd30f32e7ba490e63","title":"Divi Mobile","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","divi-menu","dm_nav"],"is_default":0,"condition":"divi-mobile\/divi-mobile.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"666bbed9-7ce3-457c-ad6e-b5e056d05010":{"title":"Divi Overlays","condition":"divi-overlays\/divi-overlays.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js",".dipi_preloader_wrapper_outer","\/Divi\/js\/scripts.min.js","\/Divi\/js\/custom.unified.js","var DIVI","\/divi-overlays\/"],"icon_url":"","type":"plugin","id":"plugin:1c828c93d87298d2a27c76e13d0880ba","is_default":0,"created_at":1679738664},"42a404af-7792-44be-9baa-565dc3baf25d":{"title":"Divi Pixel","condition":"divi-pixel\/divi-pixel.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js",".dipi_preloader_wrapper_outer","\/divi-pixel\/dist\/public\/js\/hamburger.min.js"],"icon_url":"","type":"plugin","id":"plugin:dd2494945a487a6cc74d3ab1b2137ccb","is_default":0,"created_at":1686859169},"85f5c099-c481-4c38-bbb9-8b76113bdfd5":{"title":"Divi Supreme Pro","condition":"supreme-modules-pro-for-divi\/supreme-modules-pro-for-divi.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","elm.style.display","\/supreme-modules-pro-for-divi\/includes\/modules\/ImageCarousel\/frontend.min.js","\/supreme-modules-pro-for-divi\/public\/js\/swiper-bundle.min.js"],"icon_url":"","type":"plugin","id":"plugin:3d5f0ae7751702fd1bb490fcf991a334","is_default":0,"created_at":1695118162},"0b78d762-c7be-45de-9aae-0c5078ec0619":{"id":"plugin:b5fc0101608d0b0627268dc49e3e1f8f","title":"Divi Toolbox","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","jQuery('.preloader')","\/divi-toolbox\/assets\/js\/toolbox-scripts.js"],"is_default":0,"condition":"divi-toolbox\/divi-toolbox.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"8baba0f8-4449-47d8-a87d-9b6a116e7684":{"title":"Dynamic Pricing & Discounts Lite for WooCommerce","condition":"woo-dynamic-pricing-discounts-lite\/dynamic-pricing-discounts-lite-for-woocommerce.php","exclusions":["\/woo-dynamic-pricing-discounts-lite\/assets\/OwlCarousel\/dist\/owl.carousel.min.js","\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js"],"icon_url":"","type":"plugin","id":"plugin:185062bf08db42515488e1853d1f4917","is_default":0,"created_at":1677857247},"0fa129f2-5869-4db7-9bf0-69e4b3549ee2":{"id":"plugin:27478327aa44075a86176fad95640d76","title":"Dynamic Product Gallery for WooCommerce","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/woocommerce-dynamic-gallery\/","a3revWCDynamicGallery"],"is_default":0,"condition":"woocommerce-dynamic-gallery\/wc_dynamic_gallery_woocommerce.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"9958c6be-2f67-4791-95c3-a7ad96d599c0":{"title":"Dynamic Product Gallery Premium for WooCommerce","condition":"woocommerce-dynamic-gallery-pro\/wc_dynamic_gallery_woocommerce.php","exclusions":["\/jquery-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?$","\/jquery-migrate(.*)(.min|.slim|.slim.min)?.js(\\?(.*))?$","\/woocommerce-dynamic-gallery-pro\/assets\/js\/mygallery\/jquery.a3-dgallery.js","settings_defaults_","a3revWCDynamicGallery"],"icon_url":"","type":"plugin","id":"plugin:11dc02a76019f00422f4ac85f47f5135","is_default":0,"created_at":1683208937},"ce26ed21-1be5-481f-80d4-31edfac6d890":{"title":"Dynamic.ooo - Dynamic Content for Elementor","condition":"dynamic-content-for-elementor\/dynamic-content-for-elementor.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","\/wp-includes\/js\/imagesloaded.min.js","ElementorProFrontendConfig","elementorFrontendConfig","\/dynamic-content-for-elementor\/assets\/","\/wp-includes\/js\/dist\/hooks.min.js","\/wp-includes\/js\/dist\/i18n.min.js"],"icon_url":"","type":"plugin","id":"plugin:d2bd5b348abe016bdc722acce7755062","is_default":0,"created_at":1683355024},"6a3161a6-1a6f-457a-a9ee-54b376981927":{"id":"plugin:ee1dec033c6481a77fe88de5bef1a02d","title":"Easy Table of Contents","type":"plugin","icon":"","exclusions":["\/easy-table-of-contents\/assets\/js\/front.min.js"],"is_default":0,"condition":"easy-table-of-contents\/easy-table-of-contents.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"25a534a0-2c1f-4cf4-9e19-7941bc032b3a":{"id":"plugin:41c8f5f0ab00cb39654aedd783d194e0","title":"Ecwid Ecommerce Shopping Cart","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js ","\/jquery-migrate(.min)?.js ","app.ecwid.com\/script.js ","\/ecwid-shopping-cart\/js\/frontend.js ","\/ecwid-shopping-cart\/js\/static-page.js ","ecwidParamswindow.ec ","jQuery.mobile ","xSearch ","xCategoriesV2 ","xProductBrowser ","Ecwid.init"],"is_default":0,"condition":"ecwid-shopping-cart\/ecwid-shopping-cart.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"40464325-5bae-4a20-bc97-553499e09a73":{"title":"Elementor","condition":"elementor\/elementor.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","\/wp-includes\/js\/imagesloaded.min.js","ElementorProFrontendConfig","elementorFrontendConfig","\/happy-elementor-addons-pro\/","\/header-footer-elementor\/inc\/js\/frontend.js","\/wp-includes\/js\/jquery\/ui\/core.min.js","\/wp-includes\/js\/dist\/api-fetch.min.js","\/wp-includes\/js\/dist\/hooks.min.js","\/wp-includes\/js\/dist\/i18n.min.js"],"icon_url":"","type":"plugin","id":"plugin:1d15783218a3137bec4ee8df5353e218","is_default":0,"created_at":1694425872},"ac86b64c-c80a-4053-894d-6caa8b4fdce8":{"title":"Elementor Loop Carrousel","condition":"elementor\/elementor.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-includes\/js\/jquery\/ui\/core.min.js","\/wp-includes\/js\/dist\/api-fetch.min.js","\/wp-includes\/js\/dist\/hooks.min.js","\/wp-includes\/js\/dist\/i18n.min.js"],"icon_url":"","type":"plugin","id":"plugin:0eb8d0bbd1c7ca05ac133ea634f676b7","is_default":0,"created_at":1694442056},"a8fc9fd1-f6d3-41eb-abe9-ef176de6d7e2":{"title":"Elementor - Lazy Load Background Images","condition":"elementor\/elementor.php","exclusions":["lazyloadRunObserver"],"icon_url":"","type":"plugin","id":"plugin:bf248cb2876558452a566c5dd89262b8","is_default":0,"created_at":1694453032},"1948aff5-7850-4979-91fa-0ce181484508":{"id":"plugin:de658ae6c2d05a5a4a947efecf5e0c16","title":"Elementor Custom Skin","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","ElementorProFrontendConfig","elementorFrontendConfig","\/ele-custom-skin(.*)\/assets\/js\/"],"is_default":0,"condition":"ele-custom-skin\/ele-custom-skin.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"25708299-c596-4416-8ad8-740aee0f2752":{"title":"Elementor Pro","condition":"elementor-pro\/elementor-pro.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","\/wp-includes\/js\/imagesloaded.min.js","ElementorProFrontendConfig","elementorFrontendConfig","\/happy-elementor-addons-pro\/","\/header-footer-elementor\/inc\/js\/frontend.js"],"icon_url":"","type":"plugin","id":"plugin:030ad23e3851ed7adfa7b9b6c13cf5a6","is_default":0,"created_at":1679490021},"f34dd874-4b34-41e6-a31c-ece3c1efbffc":{"id":"plugin:305581ad4294a30eeb1247982f626005","title":"Elementor Pro - SmartMenus","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor-pro\/assets\/lib\/smartmenus\/jquery.smartmenus.min.js","\/elementor-pro\/assets\/js\/preloaded-elements-handlers.min.js"],"is_default":0,"condition":"elementor-pro\/elementor-pro.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"111cc8b2-0be9-438b-9aa3-7f1e301a5697":{"id":"plugin:5ae9f5d99224d5ebc7d0c0bbf5b99787","title":"Elementor Pro - User Cache","type":"plugin","icon":"","exclusions":["\/wp-includes\/js\/underscore.min.js","\/wp-includes\/js\/jquery\/ui\/core.min.js","\/wp-includes\/js\/backbone.min.js","elementorAdminBarConfig","elementorCommonConfig","elementorWebCliConfig","elementorDevToolsConfig"],"is_default":0,"condition":"elementor-pro\/elementor-pro.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"c1713bf8-e0c3-4cb5-8b3f-841b06aa87ed":{"title":"ElementsKit Lite - Megamenu","condition":"elementskit-lite\/elementskit-lite.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","ElementorProFrontendConfig","elementorFrontendConfig","\/elementskit(.*)\/"],"icon_url":"","type":"plugin","id":"plugin:b91fed2fc4478dbb7067742c1ee4691b","is_default":0,"created_at":1683270249},"706ff35d-8e33-4b04-a986-346faff704e9":{"id":"plugin:417192424139d89fb2a5b1ee1f2b9613","title":"Essential Addons for Elementor","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","ElementorProFrontendConfig","elementorFrontendConfig","\/essential-addons(-for)?-elementor(-lite)?\/.*(.min)?.js"],"is_default":0,"condition":"essential-addons-for-elementor-lite\/essential_adons_elementor.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"b38556dc-2bc4-430f-9c55-7191cf7773db":{"id":"plugin:057757d0593ad9d2dc58124f0077a5df","title":"Essential Addons for Elementor Pro","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","ElementorProFrontendConfig","elementorFrontendConfig","\/essential-addons(-for)?-elementor(-lite)?\/.*(.min)?.js"],"is_default":0,"condition":"essential-addons-elementor\/essential_adons_elementor.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"719b988f-0d60-40c2-ba46-88f943119cb1":{"id":"plugin:c8e6c490f6438f566ade600c33531a85","title":"Essential Grid","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/essential-grid\/","lightboxOptions"],"is_default":0,"condition":"essential-grid\/essential-grid.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"47d3d2ab-160d-4b07-ac25-8250b9e6a951":{"id":"plugin:dafd19fa48a1fef890dc4348052fcb75","title":"EventON Lite","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/eventon-lite\/assets\/js\/(.*)"],"is_default":0,"condition":"eventon-lite\/eventon.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"219968d7-cf1f-4ee0-917a-db35dcc93a3e":{"id":"plugin:49ff465628fc3cb6d7f23ff81d9b8339","title":"FacetWP","type":"plugin","icon":"","exclusions":["\/facetwp\/assets\/js\/dist\/front.min.js","window.FWP_"],"is_default":0,"condition":"facetwp\/index.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"acce5701-5917-48d5-83ab-3e626aa420c5":{"id":"plugin:78a1c88a56fa957c802074b6418c6fac","title":"FacetWP - Flyout menu","type":"plugin","icon":"","exclusions":["\/facetwp-flyout\/assets\/js\/front.js"],"is_default":0,"condition":"facetwp-flyout\/facetwp-flyout.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"f2a5b95f-1a22-46d2-8b72-42a53e46ae3f":{"id":"plugin:5d7555892a3a9968fde3fa3a335fc3d8","title":"FiboSearch - Ajax Search for WooCommerce","type":"plugin","icon":"","exclusions":["\/wp-includes\/js\/jquery\/jquery.js","\/wp-includes\/js\/jquery\/jquery-migrate.js","\/ajax-search-for-woocommerce-premium\/assets\/js\/search.js"],"is_default":0,"condition":"ajax-search-for-woocommerce\/ajax-search-for-woocommerce.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"7d1404e9-be76-449c-87aa-919557abe82d":{"id":"plugin:ad46179e8b0584abaf52056b846da227","title":"FlexBlock","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/flo-flex-builder\/dist\/flex-public.min.js","flexDebug"],"is_default":0,"condition":"flo-flex-builder\/flo-flex-builder.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"b9c6a2dc-b226-4e2c-b85e-29ee55b8f751":{"id":"plugin:567a2b15db30ef6bd4904e4317139aac","title":"Fluent Forms","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/fluentform\/public\/js\/(.*).js","\/fluentformpro\/public\/js\/(.*).js"],"is_default":0,"condition":"fluentform\/fluentform.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"10874f8a-2855-4e80-bc46-e484589b76a8":{"id":"plugin:e78c153103f698b2b34892332d6b3b62","title":"Flying Images","type":"plugin","icon":"","exclusions":["flyingImages"],"is_default":0,"condition":"nazy-load\/flying-images.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"53958499-dacd-41d6-93bc-1534fe7d9eda":{"id":"plugin:5a0e40a6c5783856893b803189de1404","title":"FooGallery Premium","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/plugins\/foobox-image-lightbox\/free\/js\/foobox.free.min.js","\/plugins\/foogallery-premium\/pro\/extensions\/default-templates\/shared\/js\/foogallery.min.js"],"is_default":0,"condition":"foogallery-premium\/foogallery.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"7870d704-2024-4622-838c-fad37d5c6753":{"id":"plugin:ebb5efb57b19ae60e734e456ca2df3f8","title":"Formidable Forms","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","frmSigs","\/formidable-signature\/js\/frm.signature.min.js"],"is_default":0,"condition":"formidable\/formidable.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"3f24f9b3-e59e-400f-a784-999f93f60fab":{"id":"plugin:0b08523445b8869a67ca40e777704692","title":"Forminator","type":"plugin","icon":"","exclusions":["\/wp-includes\/js\/jquery\/jquery.min.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","forminatorFront","\/forminator\/build\/front\/front.multi.min.js","\/forminator\/assets\/js\/library\/jquery.validate.min.js","\/forminator\/assets\/forminator-ui\/js\/forminator-form.min.js","\/forminator\/assets\/forminator-ui\/js\/select2.full.min.js","\/wp-includes\/js\/jquery\/ui\/datepicker.min.js","\/wp-includes\/js\/dist\/vendor\/moment.min.js"],"is_default":0,"condition":"forminator\/forminator.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"3a600ded-3454-48fb-9811-46afa2ab3c05":{"id":"plugin:5759bf0d47ac3457485314b381a9b528","title":"GDPR Cookie Compliance","type":"plugin","icon":"","exclusions":["\/wp-includes\/js\/jquery\/jquery.min.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/gdpr-cookie-compliance\/dist\/scripts\/main.js"],"is_default":0,"condition":"gdpr-cookie-compliance\/moove-gdpr.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"e21aaa5e-7354-471d-ab86-85f99f48830c":{"id":"plugin:ffb40036ab0583218561de7c28c6bd9b","title":"GDPR Cookie Consent","type":"plugin","icon":"","exclusions":["\/wp-includes\/js\/jquery\/jquery.min.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/public\/js\/cookie-law-info-public.js","Cli_Data"],"is_default":0,"condition":"webtoffee-gdpr-cookie-consent\/cookie-law-info.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"c11ca4ea-1a23-49ee-9a6b-1e549de50ea2":{"id":"plugin:3877953c5ec1e66db92ad844ae8ebafc","title":"Getwid - Gutenberg Blocks","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/wp-includes\/js\/jquery\/ui\/tabs.min.js","\/wp-includes\/js\/jquery\/ui\/core.min.js"],"is_default":0,"condition":"getwid\/getwid.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"3773bb33-b168-4f68-9963-512da24ac4da":{"title":"GoodLayers Core","condition":"goodlayers-core\/goodlayers-core.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js ","\/jquery-migrate(.min)?.js ","\/goodlayers-core\/plugins\/script.js ","\/goodlayers-core\/include\/js\/page-builder.js"],"icon_url":"","type":"plugin","id":"plugin:5f124509a56ca2e0644246919ec70434","is_default":0,"created_at":1677854322},"2adabe9b-6e03-4a67-959f-492813d40f69":{"title":"Google Tag Manager for WooCommerce PRO","condition":"gtm-ecommerce-woo-pro\/gtm-ecommerce-woo-pro.php","exclusions":["\/gtm-ecommerce-woo-pro\/assets\/gtm-ecommerce-woo-pro.js"],"icon_url":"","type":"plugin","id":"plugin:e54fd4313007b6fedf8ab4df0e05277a","is_default":0,"created_at":1691218549},"7bf261ac-89d4-492f-8a3d-1c5809b9579a":{"title":"Gravity Forms","condition":"gravityforms\/gravityforms.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/gravityforms\/","gform","recaptcha","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/wp-includes\/js\/plupload\/plupload.min.js","\/wp-includes\/js\/plupload\/moxie.min.js"],"icon_url":"","type":"plugin","id":"plugin:7a1c1606d094f6bff83c0ee155908367","is_default":0,"created_at":1694457903},"12340193-5c35-4b0d-b0bc-bea690cf1cae":{"id":"plugin:2f3112dd98c39aeb6bde618c9026a29f","title":"Green Forms","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","leform.min.js","leform_customjs_handlers","leform_ajax_url"],"is_default":0,"condition":"green-forms\/green-forms.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"4d20b427-47cf-4cdf-91c7-ff53602d3b2a":{"id":"plugin:0eb769dddc58f998e913345841b1d0b3","title":"GTM4WP","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","dataLayer"],"is_default":0,"condition":"duracelltomi-google-tag-manager\/duracelltomi-google-tag-manager-for-wordpress.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"a2b3c237-728c-49d6-882a-e3885444e9b4":{"id":"plugin:3b085ccda851ccf129d9506462f0cd65","title":"GTranslate","type":"plugin","icon":"","exclusions":["translate.google.com","googleTranslateElementInit"],"is_default":0,"condition":"gtranslate\/gtranslate.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"40cd9336-e73f-4a61-a7f6-27ec1ca6892c":{"id":"plugin:e1f17c1eac230219e6fec3ac07406a0d","title":"HBook","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/hbook\/","hb_booking_form_data","hb_max_date"],"is_default":0,"condition":"hbook\/hbook.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"192224c7-df72-4e3d-8f13-3206ac5b2e90":{"title":"Helper - OpenAI Chatbot for WordPress","condition":"\/helper\/index.php","exclusions":["\/wp-includes\/js\/jquery\/jquery.min.js","\/helper\/js\/helper.min.js","mdpHelper"],"icon_url":"","type":"plugin","id":"plugin:07311d992a8a9d6af91e4766d2cb9ac9","is_default":0,"created_at":1691599768},"99cfbb2e-5678-42c2-928f-5cb09d7e43da":{"id":"plugin:269c5766fba124a838ac012a4b5a1a13","title":"HUSKY - Products Filter for WooCommerce","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/woocommerce-products-filter\/(.*)","woof"],"is_default":0,"condition":"woocommerce-products-filter\/index.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"3a964eac-4aeb-49a7-9fd6-4c31b2645dee":{"id":"plugin:d457acfec0f86aac6733f1446f4fc94f","title":"Instagram Feed Pro","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/instagram-feed-pro\/js\/sbi-scripts.min.js","sb_instagram_js_options"],"is_default":0,"condition":"instagram-feed-pro\/instagram-feed.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"8f9f4788-1b8d-468b-b291-1fcbd48618b9":{"id":"plugin:513b0c0ec8e12130af9b4bbbb17d7275","title":"Interactive Geo Maps","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/interactive-geo-maps-premium\/assets\/public\/map-service\/app.min.js","\/interactive-geo-maps\/assets\/public\/map-service\/app.js","iMapsData","cdn.amcharts.com\/lib\/"],"is_default":0,"condition":"interactive-geo-maps\/interactive-geo-maps.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"cf650ca3-afa0-4a13-9e4f-f7cca19abac6":{"title":"Ivory Search","condition":"add-search-to-menu\/add-search-to-menu.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/add-search-to-menu\/public\/js\/ivory-search.min.js"],"icon_url":"","type":"plugin","id":"plugin:7430e9d2c985ae0a3339a7b7e1acc318","is_default":0,"created_at":1677852711},"17a5dd54-1f5e-4d57-a56d-a8a970651954":{"id":"plugin:1c8a1e1ba89a601f88654f094139b469","title":"JetBlocks","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/jet-blocks\/assets\/js\/jet-blocks.min.js"],"is_default":0,"condition":"jet-blocks\/jet-blocks.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"b6f78c90-9823-459a-8dc1-1257e5f0d4e3":{"id":"plugin:dac9ec782180f33d0fcc7c4e0e569b9d","title":"JetBlog","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor-pro\/","\/elementor\/","\/jet-blog\/","ElementorProFrontendConfig","elementorFrontendConfig","hasJetBlogPlaylist"],"is_default":0,"condition":"jet-blog\/jet-blog.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"e17173d8-6ef8-4e27-ba0f-379c9aea7eda":{"id":"plugin:0fe8895d1da5247b73a5d0b482df4ac4","title":"JetElements","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","ElementorProFrontendConfig","elementorFrontendConfig","\/jet-elements\/","hasJetBlogPlaylist","jetElements","\/wp-includes\/js\/jquery\/ui\/"],"is_default":0,"condition":"jet-elements\/jet-elements.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"cfd77501-9c9e-4f11-b994-0178a592fc08":{"title":"JetEngine","condition":"jet-engine\/jet-engine.php","exclusions":["\/jet-engine\/"],"icon_url":"","type":"plugin","id":"plugin:bc998e71546860c8c7f70c45a6c18972","is_default":0,"created_at":1686208296},"36fed829-a2d9-41b5-94f6-2c3b9f07a94e":{"id":"plugin:433a3173f2d06f7d02c7b91c06ed215d","title":"JetMenu","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor-pro\/","\/elementor\/","\/jet-blog\/assets\/js\/lib\/slick\/slick.min.js","\/jet-elements\/","\/jet-menu\/","elementorFrontendConfig","ElementorProFrontendConfig","hasJetBlogPlaylist","JetEngineSettings","jetMenuPublicSettings","\/jet-reviews\/assets\/js\/lib\/vue.min.js"],"is_default":0,"condition":"jet-menu\/jet-menu.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"580cfed7-f034-4e39-bc7a-cdd01923ce87":{"id":"plugin:51714cfdb43f231a1c93e7cffb1007ab","title":"JetPopup","type":"plugin","icon":"","exclusions":["\/jet-popup\/assets\/js\/lib\/anime-js\/anime.min.js","\/jet-popup\/assets\/js\/jet-popup-frontend.js","\/jet-woo-builder\/","var jetPopupData"],"is_default":0,"condition":"jet-popup\/jet-popup.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"d9cd2730-12e2-42d7-a082-6f0efcd466cc":{"id":"plugin:df3bc4b6a8a9f28a5ba24cb7496bbc72","title":"JetProductGallery","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/jet-woo-product-gallery\/assets\/lib\/swiper\/swiper.min.js","\/jet-woo-product-gallery\/assets\/js\/jet-woo-product-gallery.min.js"],"is_default":0,"condition":"jet-woo-product-gallery\/jet-woo-product-gallery.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"544aa37b-4d52-4182-99e8-abe23585da14":{"id":"plugin:5921fc95965ac7fccb7296957bd9abff","title":"JetReviews","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/jet-reviews\/assets\/js\/jet-reviews-frontend.js","\/jet-reviews\/assets\/js\/lib\/vue.min.js","jetReviewsWidget"],"is_default":0,"condition":"jet-reviews\/jet-reviews.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"a8460089-34b4-4f8f-8694-5d92fa48aa82":{"title":"JetSmartFilters","condition":"jet-smart-filters\/jet-smart-filters.php","exclusions":["jetOffcanvasInitialized"],"icon_url":"","type":"plugin","id":"plugin:0cd63a514de1f1acb88e2bde65c4bc8d","is_default":0,"created_at":1694447256},"fe3c4915-6f8b-49b7-aa9c-c97b264d9f12":{"id":"plugin:a346b60514ef52afeffc6e2ef2793da3","title":"JetSticky","type":"plugin","icon":"","exclusions":["\/jetsticky-for-elementor\/"],"is_default":0,"condition":"jetsticky-for-elementor\/jetsticky-for-elementor.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"b7f89562-230c-4f63-8360-7aad6df31e02":{"id":"plugin:829272546b040d5aaeeeaf976b6cd4ec","title":"JetTricks","type":"plugin","icon":"","exclusions":["\/jet-tricks\/"],"is_default":0,"condition":"jet-tricks\/jet-tricks.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"90451e2a-553a-4496-9fa4-cffedbe69d43":{"id":"plugin:f44f3dbd09149f57db370e4132b057db","title":"JetWoo Widgets For Elementor","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","ElementorProFrontendConfig","elementorFrontendConfig","\/jetwoo-widgets-for-elementor\/assets\/js\/jet-woo-widgets.js","\/jet-woo-builder\/assets\/js\/jet-woo-builder.min.js","\/jet-woo-builder\/assets\/js\/frontend.min.js","\/wp-includes\/js\/imagesloaded.min.js"],"is_default":0,"condition":"jet-woo-builder\/jet-woo-builder.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"944718c2-48c6-4f53-aaa2-460d07e033cc":{"id":"plugin:ed318a971f8a047bed5b02ad546a9c18","title":"JetWooBuilder","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-includes\/js\/dist\/hooks.min.js","\/wp-includes\/js\/dist\/i18n.min.js","\/elementor-pro\/","\/elementor\/","elementorFrontendConfig","ElementorProFrontendConfig","JetEngineSettings","\/jet-woo-builder\/","\/jet-woo-builder-custom-quantity-selectors-main\/assets\/js\/main.js"],"is_default":0,"condition":"jet-woo-builder\/jet-woo-builder.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"f5b62f59-1dae-4cdf-ac3f-f5e846fc9918":{"id":"plugin:9562e253cd4ac2b1e1f70e32cb4e32dc","title":"Layer Slider","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/LayerSlider\/assets\/static\/layerslider\/js\/layerslider.utils.js","\/LayerSlider\/assets\/static\/layerslider\/js\/layerslider.kreaturamedia.jquery.js","\/LayerSlider\/assets\/static\/layerslider\/js\/layerslider.transitions.js","initLayerSlider"],"is_default":0,"condition":"LayerSlider\/layerslider.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"e2be718d-83a2-4fa0-bc98-f0df52be3dc1":{"id":"plugin:1425e2735306796fe1539d9184a77e10","title":"LoftLoader Pro","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","loftloader.min.js"],"is_default":0,"condition":"loftloader-pro\/loftloader-pro.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"cfa18552-656e-453c-9e14-c07522dc6598":{"id":"plugin:0bf67b8ba84771e1a367fe24590ef09c","title":"MailUp for WordPress","type":"plugin","icon":"","exclusions":["\/mailup-email-and-newsletter-subscription-form\/public\/js\/mailup-public.js","mailup-js-extra"],"is_default":0,"condition":"mailup-email-and-newsletter-subscription-form\/mailup.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"c5330c66-ba7b-45b1-87e4-ce590ab005dd":{"id":"plugin:10d0de28911c5f66463b9c8783f8148a","title":"Maintenance","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/maintenance\/"],"is_default":0,"condition":"maintenance\/maintenance.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"267aef71-afa0-4848-b6f8-3e1ca15c3a23":{"id":"plugin:9460789bdfe77425c895f130991a4cb4","title":"Maps Marker Pro","type":"plugin","icon":"","exclusions":["\/maps-marker-pro\/js\/mapsmarkerpro.js","var mapsMarkerPro"],"is_default":0,"condition":"maps-marker-pro\/maps-marker-pro.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"b5a88b63-e906-49b3-8134-420139915ea6":{"title":"Master Popups","condition":"master-popups\/master-popups.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/plugins\/master-popups\/assets\/public\/js\/master-popups-libs.min.js"],"icon_url":"","type":"plugin","id":"plugin:8fd7bd2c8b0a33e62798573abd12be63","is_default":0,"created_at":1681305305},"4be41549-bf4d-4c49-8346-0f8a3b88fdba":{"id":"plugin:de888634cc4bd51576eed319d5a528fd","title":"Master Slider","type":"plugin","icon":"","exclusions":["masterslider"],"is_default":0,"condition":"master-slider\/master-slider.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"087bee18-7cd1-4c10-8acc-19e1b7c4f4cd":{"id":"plugin:b71309a89bf3c8b558b6fca5d6531919","title":"Max Mega Menu","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-includes\/js\/hoverIntent.min.js","\/megamenu\/js\/maxmegamenu.js","var megamenu"],"is_default":0,"condition":"megamenu\/megamenu.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"cf22f0b9-01f4-409e-8a93-ad6743095abd":{"id":"plugin:94a7bae84ef2816494be4af66c577bfc","title":"Meta Slider","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/ml-slider\/","var metaslider"],"is_default":0,"condition":"ml-slider\/ml-slider.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"bb2cbc0d-20da-415e-8218-c17f1db53579":{"title":"Monarch","condition":"monarch\/monarch.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","dt-place-monarch-icons"],"icon_url":"","type":"plugin","id":"plugin:b7335d6d6d5c5134ea10ac2d9b04226c","is_default":0,"created_at":1677853476},"a98d6a80-4610-4ede-bd33-c3e15bed0a95":{"id":"plugin:4f8651262425ef6d7c223c68a2ec2063","title":"Monster Insights","type":"plugin","icon":"","exclusions":["__gtagTracker","monsterinsights_frontend","\/google-analytics-for-wordpress\/assets\/js\/frontend-gtag.min.js"],"is_default":0,"condition":"google-analytics-for-wordpress\/googleanalytics.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"26e1a36e-7a03-449e-8ecc-e42c41ca291c":{"id":"plugin:f8fc66b302dec2327bdec0434a3b275b","title":"Motion.page","type":"plugin","icon":"","exclusions":["\/motionpage\/core\/includes\/assets\/js\/(.*)","\/motionpage\/core\/includes\/assets\/js\/gsap\/(.*)","\/motionpage\/assets\/js\/(.*)","\/motionpage\/assets\/js\/gsap\/(.*)"],"is_default":0,"condition":"motionpage\/motionpage.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"459fd663-7f80-45fd-8308-d3484981e161":{"title":"Ninja Forms","condition":"ninja-forms\/ninja-forms.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-includes\/js\/underscore.min.js","\/wp-includes\/js\/backbone.min.js","\/ninja-forms\/assets\/js\/min\/front-end-deps.js","\/ninja-forms\/assets\/js\/min\/front-end.js","nf-"],"icon_url":"","type":"plugin","id":"plugin:1d3ae9c1a96d5062616968b81eef319d","is_default":0,"created_at":1681377675},"c97440dd-7592-40e7-8c98-dac20d39808f":{"id":"plugin:723a588dcd49285ea9f7404e2379b47f","title":"Ninja Tables","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/ninja-tables(.*)\/assets\/","\/ninja-tables(.*)\/public\/","\/wp-includes\/js\/dist\/vendor\/moment.min.js","ninja_table_instance_","ninja_filter_","ninja_table_ready_init_table_id"],"is_default":0,"condition":"ninja-tables\/ninja-tables.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"ebc01f06-8c35-47fa-9c63-8959c5cbd915":{"id":"plugin:f41a52ab1dd50a81cd3a5e341af0007c","title":"NotificationX","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/notificationx\/assets\/public\/js\/(.*).js","notificationXArr"],"is_default":0,"condition":"notificationx\/notificationx.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"3aaf4a1b-591a-48b7-8d60-e6d65c0f94c9":{"id":"plugin:be8fc72a8b8e8eb5958be13737cff47c","title":"Ocean Elementor Widgets","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","ElementorProFrontendConfig","elementorFrontendConfig","\/ocean-elementor-widgets\/"],"is_default":0,"condition":"ocean-elementor-widgets\/ocean-elementor-widgets.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"f053a7d3-62b0-4312-b0ca-6ff63380eb0b":{"id":"plugin:1a14afe852fefe7b22ccad3893672a29","title":"One Click Accessibility","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/pojo-accessibility\/assets\/js\/app.min.js"],"is_default":0,"condition":"pojo-accessibility\/pojo-accessibility.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"61e11800-48a9-4354-8a4c-ac9a2b4b033a":{"id":"plugin:b9ed0fe6f2cdbd305691a6b857f4b3dc","title":"OoohBoi Steroids for Elementor","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","ElementorProFrontendConfig","elementorFrontendConfig","\/ooohboi-steroids-for-elementor\/"],"is_default":0,"condition":"ooohboi-steroids-for-elementor\/ooohboi-steroids.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"560b78a2-f051-490b-9dc6-a602dece0d81":{"id":"plugin:f1ff18a3e04c4e0995fca9cabffe57a7","title":"Optimole","type":"plugin","icon":"","exclusions":["optimoleData"],"is_default":0,"condition":"optimole-wp\/optimole-wp.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"b0fda458-4bf2-41e9-a159-60d4bb6102a6":{"id":"plugin:48ec18bd3f59772d98f85dddab75e305","title":"OSM - OpenStreetMap","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/osm\/js\/OL\/","\/osm\/js\/osm-v3-plugin-lib.js","vectorM"],"is_default":0,"condition":"osm\/osm.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"3743ed67-e0d1-4243-bb1f-ee48a445dd10":{"id":"plugin:9eacf0b76484af0259cd788f4923f20c","title":"OxyExtras","type":"plugin","icon":"","exclusions":["vime","vime.esm.js"],"is_default":0,"condition":"oxyextras\/plugin.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"52a21e27-af5b-4476-8d6d-54c323fd1443":{"id":"plugin:e852555c4b4789d78a96d76f503b3262","title":"Oxygen Builder","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/component-framework\/vendor\/aos\/aos.js","AOS.init","oxygen_init_pro_menu","oxy-pro-menu-show-dropdown","oxy-shape-divider","oxygenVSBInitToggleJs"],"is_default":0,"condition":"oxygen\/functions.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"ebd282b9-e175-4b83-90a2-fe12389ccd11":{"id":"plugin:6f9419e58ec86c94e7698aaaaf9dc715","title":"PageLoader by Bonfire","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/pageloader-by-bonfire\/pageloader.js","bonfire-pageloader-overlay"],"is_default":0,"condition":"pageloader-by-bonfire\/pageloader-by-bonfire.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"0baf6353-aa70-41a9-a3bc-d89870a5839b":{"id":"plugin:3a4c4518eb0f60108ab4934fab27d335","title":"PDF Embedder","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/pdf-embedder\/js\/(.*).js"],"is_default":0,"condition":"pdf-embedder\/pdf_embedder.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"cba51ec1-87cc-44eb-b12b-d652e3446507":{"id":"plugin:4f90aca5957cccbf623e3bbc31afa204","title":"Perfect Brands for WooCommerce","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/perfect-woocommerce-brands\/assets\/lib\/slick\/slick.min.js","\/perfect-woocommerce-brands\/assets\/js\/functions-frontend.min.js"],"is_default":0,"condition":"perfect-woocommerce-brands\/perfect-woocommerce-brands.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"808e7a4e-025c-4fae-bf82-de3716e5eb0d":{"id":"plugin:84fe214646388d7c021dda25003ac165","title":"Photonic","type":"plugin","icon":"","exclusions":["\/photonic\/include\/js\/front-end\/module\/photonic-baguettebox.min.js"],"is_default":0,"condition":"photonic\/photonic.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"936aff7d-a8ac-4473-a7b5-4b1611b6c557":{"id":"plugin:6838be282f853f71be282783cb1c162b","title":"Pixel Caffein","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/pixel-caffeine\/build\/frontend.js","aepc_pixel"],"is_default":0,"condition":"pixel-caffeine\/pixel-caffeine.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"ab3a4ef5-2732-4b46-a7c3-17b4e9405cd1":{"id":"plugin:afe0eb7c64d4556a7111c56dd8c4d307","title":"Pixel Manager for WooCommerce","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/woocommerce-pixel-manager-pro\/js\/public\/","wpm"],"is_default":0,"condition":"woocommerce-pixel-manager-pro\/woocommerce-pixel-manager.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"2774f964-50b2-425e-8a30-0a02f421b7e4":{"id":"plugin:38d4b2986868f543639cd1ebc3e510aa","title":"Popup Builder","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/popup-builder\/public\/js\/(.*).js","\/popupbuilder-exit-intent\/public\/javascript\/ExitIntent.js","var sgpbPublicUrl","SGPB_POPUP_PARAMS"],"is_default":0,"condition":"popup-builder\/popup-builder.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"82dbb1e5-31f9-43d7-b522-52819aa49ba5":{"id":"plugin:786717922362642f34a7ff58e919bd95","title":"Popup Maker","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-includes\/js\/jquery\/ui\/core.min.js","\/pum\/pum-site-scripts.js","pum","\/plugins\/popup-maker\/assets\/js\/site.min.js"],"is_default":0,"condition":"popup-maker\/popup-maker.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"48e08305-1f1c-4ef4-9f13-24af1b155abc":{"id":"plugin:17831cbb64e469c7f66224c8c63d0a58","title":"PowerPack Addons for Elementor","type":"plugin","icon":"","exclusions":["\/powerpack-lite-for-elementor\/assets\/js\/min\/frontend.min.js"],"is_default":0,"condition":"powerpack-lite-for-elementor\/powerpack-lite-elementor.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"e037ae2f-e36b-4f1a-ada8-eb8fde6746f2":{"id":"plugin:80e1283ea1afead3ca904fad792643c5","title":"Preloader Plus","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/preloader-plus\/(.*)"],"is_default":0,"condition":"preloader-plus\/preloader-plus.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"90fed478-e89a-455c-8371-836bee58fb81":{"title":"Premium Addons for Elementor","condition":"premium-addons-for-elementor\/premium-addons-for-elementor.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/premium-addons-for-elementor\/assets\/frontend\/min-js\/premium-addons.min.js","\/premium-addons-for-elementor\/assets\/frontend\/min-js\/isotope.min.js","\/premium-addons-elementor\/pa-frontend-(.*).min.js","\/premium-addons-for-elementor\/assets\/frontend\/min-js\/slick.min.js","\/premium-addons-pro\/assets\/frontend\/min-js\/tooltipster.min.js","window.scopes_array","lottie.min.js","\/premium-addons-for-elementor\/assets\/frontend\/min-js\/premium-nav-menu.min.js"],"icon_url":"","type":"plugin","id":"plugin:debbfbbcbdf9ffb465bbc40008d99f02","is_default":0,"created_at":1693315214},"7e43c261-77be-48fc-b25a-8953a654ae85":{"id":"plugin:100a0382fcf3d1b6b22da928bce46ea8","title":"Presto Player","type":"plugin","icon":"","exclusions":["\/wp-includes\/js\/dist\/vendor\/regenerator-runtime.min.js","\/presto-player\/dist\/components\/web-components\/web-components.esm.js","\/presto-player\/src\/player\/player-static.js","var player","\/wp-includes\/js\/dist\/api-fetch.min.js","\/wp-includes\/js\/dist\/hooks.min.js","\/wp-includes\/js\/dist\/i18n.min.js"],"is_default":0,"condition":"presto-player\/presto-player.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"3d6f509f-d040-4279-9a2f-a4e6eae1e9df":{"id":"plugin:c0fce700121492b566517e68301db382","title":"Price Based on Country for WooCommerce Pro","type":"plugin","icon":"","exclusions":["\/woocommerce-product-price-based-on-countries\/assets\/js\/ajax-geolocation.min.js","\/woocommerce-price-based-country-pro-addon\/assets\/js\/currency-switcher.min.js","add-to-cart.min.js","cart-fragments.min.js"],"is_default":0,"condition":"woocommerce-price-based-country-pro-addon\/woocommerce-price-based-country-pro-addon.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"b970bc8a-bcbe-4d08-8ac0-a6853ab3f036":{"id":"plugin:f1ecfe258440b371124999ca3bfbfff3","title":"Prime Slider","type":"plugin","icon":"","exclusions":["\/plugins\/bdthemes-prime-slider-lite\/assets\/js\/bdt-uikit.min.js"],"is_default":0,"condition":"bdthemes-prime-slider-lite\/bdthemes-prime-slider.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"e5458963-f167-4b68-88e4-77dd39af2842":{"id":"plugin:29ea8f4dd72f5a5c5927917fb0665a05","title":"PRO Elements","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/pro-elements\/"],"is_default":0,"condition":"pro-elements\/pro-elements.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"b119ad72-f498-4576-bb71-9e6d8c37b68f":{"title":"Product Filter by WBW (for WooCommerce)","condition":"woo-product-filter\/woo-product-filter.php","exclusions":["\/jquery-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?$","\/jquery-migrate(.*)(.min|.slim|.slim.min)?.js(\\?(.*))?$","\/wp-content\/plugins\/woo-product-filter\/modules\/woofilters\/js\/frontend.woofilters.js","\/wp-includes\/js\/jquery\/ui\/mouse.min.js","\/wp-includes\/js\/jquery\/ui\/core.min.js","\/wp-includes\/js\/jquery\/ui\/slider.min.js"],"icon_url":"","type":"plugin","id":"plugin:e57ad91e0d94fab011353af544873743","is_default":0,"created_at":1685686062},"7b779aca-e497-4da3-8e51-fa12837d15ab":{"title":"Product Filters for WooCommerce","condition":"woocommerce-product-filters\/woocommerce-product-filters.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/woocommerce-product-filters\/","\/woocommerce\/assets\/js\/accounting\/accounting.min.js","\/wp-includes\/js\/jquery\/ui\/","wcpf-load-project","WCPFData"],"icon_url":"","type":"plugin","id":"plugin:719469f1c977f7109d3d6ee21ecd5a16","is_default":0,"created_at":1691235154},"2b2a51f2-bd47-4591-92d8-4a690bce5d99":{"id":"plugin:a898898b2b0ea2cd82e20a6d3a3aa47b","title":"Product Gallery Slider for WooCommerce","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/twist\/assets\/js\/slick.min.js","wpgs-public-js-after"],"is_default":0,"condition":"twist\/twist.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"062c5be3-e5ea-4958-9619-44e3410f237e":{"title":"Product Video Gallery for Woocommerce","condition":"product-video-gallery-slider-for-woocommerce\/product-video-gallery-slider-for-woocommerce.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/product-video-gallery-slider-for-woocommerce\/public\/js\/nickx.front.js"],"icon_url":"","type":"plugin","id":"plugin:bbc653a91f0635cd2edb0b741aa62b85","is_default":0,"created_at":1693512477},"34d225a4-688c-476b-846b-420774160d6b":{"id":"plugin:e0b123d324c6fc85b8682660c34f8829","title":"Rank Math SEO","type":"plugin","icon":"","exclusions":["local_ga_js"],"is_default":0,"condition":"seo-by-rank-math\/rank-math.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"02305ca0-2c2a-4eef-a802-b8a942771ecc":{"title":"Retainful","condition":"retainful-next-order-coupon-for-woocommerce\/retainful-next-order-coupon-for-woocommerce.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/retainful-next-order-coupon-for-woocommerce\/src\/premium\/assets\/js\/atc-popup.min.js","\/retainful-next-order-coupon-for-woocommerce\/src\/premium\/assets\/js\/exit-intent-popup.js","retainful.com","rnoc-add-to-cart-js-before","rnoc_redirect_coupon_popup"],"icon_url":"","type":"plugin","id":"plugin:f9fdee19ba6aed961d96d86e1521a761","is_default":0,"created_at":1679331508},"b4055250-5813-400f-b663-d390fee989e4":{"id":"plugin:d6a4d07d1b4022d886df52322dcd8a6f","title":"Revolution Slider","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/revslider\/public\/assets\/js\/","\/revslider-(.*)-addon\/","setREVStartSize","rev_slider_","revslider_","window.RS_MODULES"],"is_default":0,"condition":"revslider\/revslider.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"0b4e061a-b366-4d5a-a00e-bded4b107133":{"title":"Royal Elementor Addons","condition":"royal-elementor-addons\/wpr-addons.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/royal-elementor-addons\/assets\/js\/frontend.min.js","\/royal-elementor-addons\/assets\/js\/lib\/jarallax\/jarallax.min.js"],"icon_url":"","type":"plugin","id":"plugin:c4b464373716d7ac8e3cfb019aaa6102","is_default":0,"created_at":1688124503},"1b19ec89-171a-4f85-8c4b-b1bcfc6b1433":{"id":"plugin:5e3f85d8c82cc184b945415d1a862601","title":"Sassy Social Share","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/sassy-social-share\/public\/js\/sassy-social-share-public.js","heateorSssLoadEvent"],"is_default":0,"condition":"sassy-social-share\/sassy-social-share.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"f5899925-2ab7-43b6-abc4-51b76d664ca6":{"title":"Scrollsequence","condition":"scrollsequence-pro\/scrollsequence-pro.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/scrollsequence-pro\/public\/js\/gsap__premium_only.js","\/scrollsequence-pro\/public\/js\/gsap-scrolltrigger__premium_only.js","\/scrollsequence-pro\/public\/js\/ssq-lib__premium_only.js","scrollsequence-input-script"],"icon_url":"","type":"plugin","id":"plugin:3df51830b6b80668fc342c8dcea495cf","is_default":0,"created_at":1678111131},"043827fc-3df8-45d6-9cd2-14fbe962987a":{"id":"plugin:9d60b5d2de4d828b78c7b088024377d6","title":"ShiftNav Pro - Responsive Mobile Menu","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/shiftnav-pro\/assets\/js\/shiftnav(.*).js"],"is_default":0,"condition":"shiftnav-pro\/shiftnav.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"bcbaf240-e76f-4620-b7d5-4852c46d4be7":{"id":"plugin:56279bd768c8f27ad1972b6774738bcf","title":"ShiftNav \u2013 Responsive Mobile Menu","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/shiftnav-responsive-mobile-menu\/"],"is_default":0,"condition":"shiftnav-responsive-mobile-menu\/shiftnav-responsive-mobile-menu.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"bbe0543b-b5af-467b-a90d-e2975d892d8d":{"id":"plugin:1bc7ac87d8ab2301a1b904919dc7a798","title":"Short Pixel Adaptive Image","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js ","\/jquery-migrate(.min)?.js","\/shortpixel-adaptive-images\/assets\/js\/ai(.*).min.js","spai_settings"],"is_default":0,"condition":"shortpixel-adaptive-images\/short-pixel-ai.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"543ab43a-6bd3-4948-a09e-3b95e7c9209d":{"id":"plugin:ce4dea8ddc3caa8d00e95cec3202d32a","title":"Showcase IDX","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js ","\/jquery-migrate(.min)?.js","SIDX","search.showcaseidx.com\/js\/app-(.*).js","cdn.shortpixel.ai"],"is_default":0,"condition":"showcase-idx\/showcaseidx.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"a16bcab7-1169-46b9-a425-b091478d8312":{"id":"plugin:3ea7d9f75ad03620b0bce2517bd5b8d1","title":"Side Cart WooCommerce","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/plugins\/woocommerce\/assets\/js\/frontend\/cart-fragments.min.js","\/plugins\/woocommerce\/assets\/js\/frontend\/add-to-cart.min.js","\/plugins\/woocommerce\/assets\/js\/jquery-blockui\/jquery.blockUI.min.js","\/plugins\/woocommerce\/assets\/js\/js-cookie\/js.cookie.min.js"],"is_default":0,"condition":"side-cart-woocommerce\/xoo-wsc-main.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"521f748e-cf09-4019-bd28-b52daef5f16f":{"id":"plugin:7843983bf90dbae16c6e889382c71b23","title":"Simple Banner","type":"plugin","icon":"","exclusions":["\/wp-includes\/js\/jquery\/jquery.min.js","\/simple-banner\/","simpleBannerScriptParams"],"is_default":0,"condition":"simple-banner\/simple-banner.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"76026e82-d9cf-482c-b480-55c57693a184":{"id":"plugin:b6825f971d35a5515d095564a2e40936","title":"Site Kit by Google","type":"plugin","icon":"","exclusions":["google-analytics.com\/analytics.js","ga\\( '","ga\\('","\/gtag\/js","gtag\\(","\/gtm.js"],"is_default":0,"condition":"google-site-kit\/google-site-kit.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"79c458d7-f7f7-4072-919d-ad337bde6ae3":{"id":"plugin:5ce5dfecdc9d3292c69a1413bbd17d3c","title":"Slick Menu","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js ","\/jquery-migrate(.min)?.js","\/slick-menu\/"],"is_default":0,"condition":"slick-menu\/slick-menu.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"dd0ea584-0c99-4c30-b46d-da35b94c9f0a":{"id":"plugin:ffb5f8cc0ea17886dbd05f601ca3eec0","title":"Slider by Soliloquy","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js ","\/jquery-migrate(.min)?.js","soliloquy-min.js","soliloquy_slider"],"is_default":0,"condition":"soliloquy-lite\/soliloquy-lite.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"ecb2fffc-d289-4f68-ae94-71131f17deee":{"id":"plugin:2f373822dceb191c31c8ad2183d51869","title":"Smart Slider 3","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js ","\/jquery-migrate(.min)?.js","\/smart-slider-3\/(.*).js","_N2"],"is_default":0,"condition":"smart-slider-3\/smart-slider-3.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"284ede43-bf80-419e-8414-46c26cb746f0":{"id":"plugin:720ec9fbbd8a52ce525959a68a5310b3","title":"Smart Slider 3 Pro","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js ","\/jquery-migrate(.min)?.js","\/SmartSlider3\/(.*).js","_N2"],"is_default":0,"condition":"nextend-smart-slider3-pro\/nextend-smart-slider3-pro.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"c3334c29-4160-42df-a1ce-f8aeeaee8668":{"title":"Super Socializer","condition":"super-socializer\/super_socializer.php","exclusions":["theChamp","\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js"],"icon_url":"","type":"plugin","id":"plugin:660defe26748470c3a47366cd4012579","is_default":0,"created_at":1677853633},"f18b4242-fe3f-4e2b-bfc9-ac2fb3939a90":{"title":"Superfly Menu","condition":"superfly-menu\/main.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate((.*?)(.min?)?).js","\/superfly-menu\/includes\/vendor\/looks_awesome\/icon_manager\/js\/md5.js","\/superfly-menu\/includes\/vendor\/looks_awesome\/icon_manager\/js\/util.js","\/superfly-menu\/js\/public.min.js","window.SFM_is_mobile","var SFM_skew_disabled","var SFM_template"],"icon_url":"","type":"plugin","id":"plugin:ccb15175093bc6c437b78797f0698a7b","is_default":0,"created_at":1684301673},"1a05c00a-8562-45bc-80e8-987a4574b1c9":{"title":"Symplr Ads","condition":"symplr-ads\/symplr-plugin.php","exclusions":["\/symplr-ads\/","cdns.symplr.de"],"icon_url":"","type":"plugin","id":"plugin:3b6d39e28a87e86c4659491e2368ff61","is_default":0,"created_at":1692199959},"858d2d7f-bdac-4d27-ba26-baa9ace96ba4":{"id":"plugin:7d93008296bb5c7c43d4cba185ed2632","title":"Tabby Responsive Tabs","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/tabby-responsive-tabs\/js\/tabby.js","RESPONSIVEUI"],"is_default":0,"condition":"tabby-responsive-tabs\/tabby-responsive-tabs.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"e44a5c93-bb77-4624-a121-d846905137ea":{"id":"plugin:2f563bbb7e92363ec3fb2989a1c7dffe","title":"The Plus Addons for Elementor","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/theplus-addons\/(.*)"],"is_default":0,"condition":"the-plus-addons-for-elementor-page-builder\/theplus_elementor_addon.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"2bbac961-b000-4802-ae97-d52472ec6750":{"title":"The Plus Addons for Elementor Premium","condition":"theplus_elementor_addon\/theplus_elementor_addon.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/wp-content\/plugins\/theplus_elementor_addon\/","\/elementor\/","\/elementor-pro\/","\/wp-includes\/js\/imagesloaded.min.js","ElementorProFrontendConfig","elementorFrontendConfig"],"icon_url":"","type":"plugin","id":"plugin:6e127deaaeefbe57ff945b1f9e274518","is_default":0,"created_at":1688143611},"666b45e8-749c-4140-bd17-e1cd589e03ee":{"id":"plugin:b9c418b47c986935a1151ab9b42f8971","title":"ThemeREX Addons","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/trx_addons\/js\/__scripts-full.js","\/trx_addons\/components\/cpt\/layouts\/shortcodes\/menu\/superfish.min.js"],"is_default":0,"condition":"trx_addons\/trx_addons.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"a750cada-eb58-4df4-9966-21c8a69332ba":{"id":"plugin:75af9efe22c5cc776636266feb55adf1","title":"Thrive Architect","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js"],"is_default":0,"condition":"thrive-visual-editor\/thrive-visual-editor.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"13714cde-680e-4ca4-8607-c35952d6a5f2":{"title":"Thrive Comments","condition":"thrive-comments\/thrive-comments.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/thrive-leads\/","window.TL_Const","var ml=","\/thrive-comments\/assets\/js\/","ThriveComments","\/wp-includes\/js\/underscore.min.js","\/wp-includes\/js\/backbone.min.js"],"icon_url":"","type":"plugin","id":"plugin:6a72d06ca2f6a888b0d9d5ea93af2edc","is_default":0,"created_at":1677852974},"aa7ca898-499f-4f04-b419-3de199996969":{"id":"plugin:b84d82c02cade64ade00712b9c5652aa","title":"Thrive Leads","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/thrive-leads\/","window.TL_Const","var ml=","\/thrive-comments\/assets\/js\/","ThriveComments","\/wp-includes\/js\/underscore.min.js","\/wp-includes\/js\/backbone.min.js"],"is_default":0,"condition":"thrive-leads\/thrive-leads.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"9eee297a-8241-4ef2-af97-46074bd0898c":{"id":"plugin:5bb61b0559b0a3fd578315b553451327","title":"Thrive Quiz Builder","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js"],"is_default":0,"condition":"thrive-quiz-builder\/thrive-quiz-builder.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"c2f3ec2a-5b09-4845-aa95-84841783fbfc":{"id":"plugin:a7f3e5206abff19ca7cf142260181738","title":"Thrive Ultimatum","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/thrive-ultimatum\/","var TVE_Ult_"],"is_default":0,"condition":"thrive-ultimatum\/thrive-ultimatum.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"d48b8d2f-e071-4a30-840a-306154a115a0":{"id":"plugin:f57be2014b6a489d053f8367fa6c0f9f","title":"Tidio Chat","type":"plugin","icon":"","exclusions":["document.tidioChatCode"],"is_default":0,"condition":"tidio-live-chat\/tidio-elements.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"cb6d33ed-7eb4-4ff9-9ad0-7fc54fbecf6f":{"id":"plugin:c9e0485ec256d4a6a8d92a98c18d76fc","title":"Toolset Blocks","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","toolsetCommonEs.fontToHead","toolsetCommonEs.styleToHead","\/toolset-blocks\/vendor\/toolset\/blocks\/public\/js\/frontend.js","\/toolset-blocks\/vendor\/toolset\/common-es\/public\/toolset-common-es-frontend.js","\/toolset-blocks\/public\/js\/views-frontend.js","\/wp-includes\/js\/underscore.min.js"],"is_default":0,"condition":"toolset-blocks\/wp-views.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"4bac6350-0925-49fb-904a-372f22fd6baf":{"id":"plugin:71beda322b37f7fc7d456822493cb972","title":"Top Bar Pro","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/plugins\/topbar-pro\/js\/tpbr_front.min.js","\/plugins\/topbar-pro\/js\/jquery.cookie.js"],"is_default":0,"condition":"topbar-pro\/topbar_pro.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"033486e7-0ddc-4915-a848-31504d00448e":{"title":"Twenty20 Image Before-After","condition":"twenty20\/ttwenty.php","exclusions":["\/twenty20\/assets\/js\/(.*).js","\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","twentytwenty-container"],"icon_url":"","type":"plugin","id":"plugin:23441bba9d3602bc932d697c7cb8aa1f","is_default":0,"created_at":1677858089},"7675a34d-006e-4672-99d5-a81e1b8e47f9":{"id":"plugin:3d59cc34167a7f8123e66b627148e0b7","title":"UberMenu","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/ubermenu\/assets\/js\/ubermenu.min.js"],"is_default":0,"condition":"ubermenu\/ubermenu.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"8233178a-e7b3-43ce-b193-bd0d9c960933":{"id":"plugin:86424c46157c1c7e2e1571055813beee","title":"Ultimate Addons for Elementor","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/ultimate-elementor\/assets\/lib\/slick\/slick.min.js","\/ultimate-elementor\/assets\/min-js\/uael-frontend.min.js","\/ultimate-elementor\/assets\/lib\/isotope\/isotope.min.js","\/ultimate-elementor\/assets\/lib\/jquery-element-resize\/jquery_resize.min.js","\/ultimate-elementor\/assets\/lib\/fancybox\/jquery_fancybox.min.js","\/ultimate-elementor\/assets\/lib\/justifiedgallery\/justifiedgallery.min.js","\/elementor-pro\/assets\/js\/frontend.min.js","\/wp-includes\/js\/imagesloaded.min.js","\/js_composer\/assets\/js\/dist\/js_composer_front.min.js","\/elementor\/assets\/lib\/swiper\/swiper.min.js","\/nasa-core\/assets\/js\/min\/jquery.slick.min.js","\/elementor\/","\/elementor-pro\/","ElementorProFrontendConfig","elementorFrontendConfig"],"is_default":0,"condition":"ultimate-elementor\/ultimate-elementor.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"8bddf484-6c78-4147-a4e6-d3039904e5f6":{"title":"Ultimate Addons for Elementor - Mobile Menu","condition":"ultimate-elementor\/ultimate-elementor.php","exclusions":["\/jquery-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?$","\/jquery-migrate(.*)(.min|.slim|.slim.min)?.js(\\?(.*))?$","\/ultimate-elementor\/assets\/js\/uael-nav-menu.js","\/ultimate-elementor\/assets\/min-js\/uael-nav-menu.min.js"],"icon_url":"","type":"plugin","id":"plugin:70cfade3a7adbb54196f6acccc5a176f","is_default":0,"created_at":1694771327},"028504f7-b1cd-4318-8a6d-ce186197e89d":{"id":"plugin:0f0a91f0c454021a5ff9fc25c3ed419f","title":"Ultimate Addons for WPBakery Page Builder","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/Ultimate_VC_Addons\/assets\/"],"is_default":0,"condition":"Ultimate_VC_Addons\/Ultimate_VC_Addons.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"5754af3d-a6af-49eb-b731-bdd82f26dc4e":{"id":"plugin:34db8636812bad84c8aea037c2ddc8c2","title":"Ultimate Responsive Image Slider","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","sliderPro"],"is_default":0,"condition":"ultimate-responsive-image-slider\/ultimate-responsive-image-slider.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"78ae882d-ae31-4179-b677-8893814938c7":{"title":"Unlimited Elements for Elementor Premium - Slider","condition":"unlimited-elements-for-elementor-premium\/unlimited-elements-pro.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","ElementorProFrontendConfig","elementorFrontendConfig","\/unlimited-elements-for-elementor-premium\/","uc_"],"icon_url":"","type":"plugin","id":"plugin:17260bc347b8c29bee0010e9ec164184","is_default":0,"created_at":1683270377},"051cbfbb-7ad2-4f06-a493-3cf423a80904":{"id":"plugin:6717ef5673a956bc08ca4a5117065d53","title":"Variation Swatches for WooCommerce","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/jquery\/ui\/","\/woo-variation-swatches\/","\/woo-variation-swatches-pro\/","underscore.min.js"],"is_default":0,"condition":"woo-variation-swatches\/woo-variation-swatches.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"6879caba-7224-4eca-bcb2-370785b495ea":{"id":"plugin:57597b7683e01892932083413f085134","title":"Web Accessibility By accessiBe","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/accessibe\/","acsbJS"],"is_default":0,"condition":"accessibe\/accessiebe.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"bd6732fe-4c2b-40a1-9035-8464057e2da5":{"title":"WooCommerce - Cart Fragments","condition":"woocommerce\/woocommerce.php","exclusions":["\/wp-includes\/js\/jquery\/jquery.min.js","\/woocommerce\/assets\/js\/frontend\/cart-fragments.min.js","\/woocommerce\/assets\/js\/js-cookie\/js.cookie.min.js"],"icon_url":"","type":"plugin","id":"plugin:201de694c6fc28c8d580a3b2ca484218","is_default":0,"created_at":1680937567},"d044900d-07e1-4533-9516-33106efcb259":{"title":"WooCommerce - Product description","condition":"woocommerce\/woocommerce.php","exclusions":["\/plugins\/woocommerce\/assets\/js\/frontend\/single-product.min.js","\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js"],"icon_url":"","type":"plugin","id":"plugin:a82644b4c9417ea3a240939a73344700","is_default":0,"created_at":1679309756},"bff953b1-2213-4666-8112-76a84a3cc207":{"title":"WooCommerce - Product Gallery","condition":"woocommerce\/woocommerce.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/woocommerce\/?(.*)\/assets\/js\/zoom\/jquery.zoom(.min)?.js","\/woocommerce\/?(.*)\/assets\/js\/photoswipe\/","\/woocommerce\/?(.*)\/assets\/js\/flexslider\/jquery.flexslider(.min)?.js","\/woocommerce\/?(.*)\/assets\/js\/frontend\/single-product(.min)?.js","wc_single_product_params"],"icon_url":"","type":"plugin","id":"plugin:7665868ff97c265628f376523a4f9ecc","is_default":0,"created_at":1686579689},"016e6ddf-c6e7-49ec-bd3f-2585d9e45895":{"title":"WooCommerce - Select2 library","condition":"woocommerce\/woocommerce.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/woocommerce\/assets\/js\/select2\/select2(.*).js"],"icon_url":"","type":"plugin","id":"plugin:4bca670bd5d55dd24b17fb0193b0891e","is_default":0,"created_at":1681459540},"b9b2c6d7-944f-4ae3-ae04-c9e2204b9dab":{"id":"plugin:9165c768e978d6ad3f696db8c78ccbb2","title":"WooCommerce Attribute Swatches","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/iconic-woo-attribute-swatches-premium\/assets\/frontend\/js\/main.min.js","\/iconic-woo-attribute-swatches-premium\/assets\/vendor\/flickity\/flickity.pkgd.min.js","iconic_was_vars"],"is_default":0,"condition":"iconic-woo-attribute-swatches-premium\/iconic-woo-attribute-swatches.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"4506c5e9-7349-44c9-9967-34370c83facb":{"title":"WooCommerce Bookings","condition":"woocommerce-bookings\/woocommerce-bookings.php","exclusions":["\/wp-includes\/js\/jquery\/jquery.min.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/woocommerce-bookings\/dist\/frontend.js","\/wp-includes\/js\/dist\/date.min.js","\/wp-includes\/js\/dist\/vendor\/moment.min.js","\/wp-includes\/js\/jquery\/ui\/datepicker.min.js","\/wp-includes\/js\/underscore.min.js","\/woocommerce\/assets\/js\/jquery-blockui\/jquery.blockUI.min.js","\/wp-includes\/js\/dist\/hooks.min.js"],"icon_url":"","type":"plugin","id":"plugin:14dec6d289b9977fa3a74116feecebcc","is_default":0,"created_at":1693998405},"fec9cd04-c358-45da-a1a8-1668b964016b":{"id":"plugin:456f3b849ba3b6647246aca9d7cdaed5","title":"WooCommerce Product Reviews Pro","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","wc_product_reviews_pro","\/woocommerce-product-reviews-pro\/assets\/js\/frontend\/wc-product-reviews-pro-frontend.min.js","\/woocommerce\/assets\/js\/jquery-tiptip\/jquery.tipTip.min.js"],"is_default":0,"condition":"woocommerce-product-reviews-pro\/woocommerce-product-reviews-pro.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"551a9399-627f-4978-9bae-5cc8e0aefc82":{"id":"plugin:c8577e74eef3b082fb6403760d53f68c","title":"WooCommerce TM Extra Product Options","type":"plugin","icon":"","exclusions":["\/woocommerce-tm-extra-product-options\/assets\/js\/epo.min.js","\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-includes\/js\/jquery\/ui\/core.min.js","\/wp-includes\/js\/jquery\/ui\/mouse.min.js","\/wp-includes\/js\/jquery\/ui\/slider.min.js","\/wp-includes\/js\/underscore.min.js","\/wp-includes\/js\/wp-util.min.js","\/wp-includes\/js\/dist\/hooks.js","\/wp-includes\/js\/dist\/i18n.js"],"is_default":0,"condition":"woocommerce-tm-extra-product-options\/tm-woo-extra-product-options.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"3cac4650-6a52-448e-8e48-e99a772a59a2":{"id":"plugin:c6e6cab8c80fa3fe57d609f72d2d5c56","title":"WooLentor","type":"plugin","icon":"","exclusions":["\/woolementor\/assets\/third-party\/slick\/slick.min.js","\/woolentor-addons","woolentor_addons"],"is_default":0,"condition":"woolentor-addons\/woolentor_addons_elementor.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"67aeb4cb-1a00-4d10-a00c-34888b4c0dba":{"title":"WooThumbs for WooCommerce","condition":"woothumbs-premium\/woothumbs-premium.php","exclusions":["\/wp-includes\/js\/dist\/hooks.min.js","\/wp-includes\/js\/underscore.min.js","\/wp-includes\/js\/wp-embed.min.js","\/wp-includes\/js\/wp-util.min.js","\/woothumbs-premium\/(.*)"],"icon_url":"","type":"plugin","id":"plugin:b97b1d3f627769e1dd8305aa25af993c","is_default":0,"created_at":1679065404},"c7a14763-88d0-4344-a6af-e0a8dc5fa8d5":{"id":"plugin:31b9e812a025e5750a6ef0980ee7d2db","title":"WordPress Mega Menu \u2013 QuadMenu","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/quadmenu","#private-menu","#public-menu"],"is_default":0,"condition":"quadmenu\/quadmenu.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"f699fdbd-84a7-4f24-b729-3e4a4f83a4dd":{"id":"plugin:601f8fc7d10cad1c2ec2949c0d9b1651","title":"WP Armour","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/honeypot\/includes\/js\/wpa.js","\/wp-armour-extended\/includes\/js\/wpae.js","wpa_hidden_field","wpa_add_test"],"is_default":0,"condition":"wp-armour-extended\/wp-armour-extended.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"6a28aae5-ef91-43fc-8204-92e3a25642b4":{"id":"plugin:5728f3b9856dfe37a36ab15b0a637198","title":"WP Go Maps","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","maps.googleapis.com"],"is_default":0,"condition":"wp-google-maps\/wpGoogleMaps.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"c9b991d1-a653-404b-be85-e276b1814e7d":{"title":"WP Google Map Pro","condition":"wp-google-map-gold\/wp-google-map-gold.php","exclusions":["\/wp-includes\/js\/jquery\/jquery.min.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","maps.google.com\/maps\/api\/js","\/wp-includes\/js\/masonry.min.js","\/wp-google-map-gold\/(.*)"],"icon_url":"","type":"plugin","id":"plugin:dc12a9b7b9c4c7ce3c532b6b377739f2","is_default":0,"created_at":1677858391},"1f8f9fbf-fbf0-4e3a-b77c-af0fa47e950d":{"id":"plugin:87f572f5f0ec143a8fceba77d0616197","title":"WP Google Maps Pro","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-google-maps(.*)","maps.googleapis.com","mgl_","wpgmza"],"is_default":0,"condition":"wp-google-maps-pro\/wp-google-maps-pro.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"41e4b98c-e63f-4800-a478-02592562322b":{"id":"plugin:3735ca768ede98b25795f4cb057ff4ed","title":"WP iCal Availability","type":"plugin","icon":"","exclusions":["\/wp-ical-availability\/js\/custom-select.js","\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-ical-availability\/"],"is_default":0,"condition":"wp-ical-availability\/wp-ical-availability.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"2b06c5b8-dc32-4bb0-8504-3a9f1c3a1ec0":{"title":"WP MapIt","condition":"wp-mapit\/wp_mapit.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-mapit\/wp_mapit\/js\/leaflet.js","\/wp-mapit\/wp_mapit\/js\/wp_mapit_multipin.js"],"icon_url":"","type":"plugin","id":"plugin:ba8d1c7f294a3f5b593556eb3b0bc7d9","is_default":0,"created_at":1679331261},"2039eafd-1c11-4e21-a61b-30857f291ae3":{"id":"plugin:927b8bf7806f2d287559b86a0b455a59","title":"WP Responsive Menu","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-responsive-menu\/(.*)"],"is_default":0,"condition":"wp-responsive-menu\/wp-responsive-menu.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"e06be942-cccd-4b2d-a268-06dc78f0b820":{"title":"WP Search with Algolia","condition":"wp-search-with-algolia\/algolia.php","exclusions":["\/wp-search-with-algolia\/js\/algoliasearch\/dist\/algoliasearch-lite.umd.js","\/wp-search-with-algolia\/js\/autocomplete-noconflict.js","\/wp-search-with-algolia\/js\/autocomplete.js\/dist\/autocomplete.min.js","var algolia"],"icon_url":"","type":"plugin","id":"plugin:43267e659d599fbb6b42c719b49bb7a7","is_default":0,"created_at":1677857180},"4fc2a7ae-b9e6-410e-93cf-e6d1962add6a":{"id":"plugin:4fb90fc73fc2b5d1e37ea2dadfd3cef3","title":"WP Smart Preloader","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js ","\/jquery-migrate(.min)?.js","\/wp-smart-preloader\/assets\/js\/wsp-main-script(.min)?.js"],"is_default":0,"condition":"wp-smart-preloader\/wp-preloader.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"7ecf40ce-2bcd-412c-bb01-9e71fecf6be8":{"id":"plugin:d37bb5054a24471ca1675d9ab49d01b0","title":"WP Store Locator","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js ","\/jquery-migrate(.min)?.js","\/wp-store-locator\/","\/wp-includes\/js\/underscore.min.js","maps.google.com"],"is_default":0,"condition":"wp-store-locator\/wp-store-locator.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"7a1d19a2-3a48-40ab-8051-f642fc63ce2d":{"title":"WP Ultimate Post Grid","condition":"wp-ultimate-post-grid\/wp-ultimate-post-grid.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?$","\/wp-ultimate-post-grid\/dist\/public.js","\/wp-ultimate-post-grid-premium\/dist\/public-premium.js","wpupg_grid_args"],"icon_url":"","type":"plugin","id":"plugin:e24341fef49bd64b89682d583218c108","is_default":0,"created_at":1686597940},"76c86163-ddf3-4113-b620-de9d5058f505":{"id":"plugin:517d7d24da9a7072ed389d0fb30374a0","title":"WPBakery Page Builder","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/js_composer\/assets\/js\/dist\/js_composer_front.min.js"],"is_default":0,"condition":"js_composer\/js_composer.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"4f5e5b98-c326-4b9f-9ada-3b257862132c":{"id":"plugin:1ec7138c950c355e7af60d49c81139fc","title":"wpDataTables","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wpdatatables\/","highcharts"],"is_default":0,"condition":"wpdatatables\/wpdatatables.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"18be1b8c-0bc4-4a01-abc6-a127aff380c6":{"id":"plugin:c62ca58ea081c1271de8dadfa7daac69","title":"WPForms","type":"plugin","icon":"","exclusions":["\/wpforms-offline-forms\/assets\/js\/wpforms-offline-forms.min.js","wpforms-offline-forms-js-extra","wpformsRecaptchaLoad"],"is_default":0,"condition":"wpforms\/wpforms.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"8a3cacb6-81bd-456a-a1cc-a4025f8e5234":{"id":"plugin:0992ac952c0a05bb35e18b1d5744d346","title":"WPForms Lite","type":"plugin","icon":"","exclusions":["wpformsRecaptchaLoad","\/wpforms-offline-forms\/assets\/js\/wpforms-offline-forms.min.js","wpforms-offline-forms-js-extra"],"is_default":0,"condition":"wpforms-lite\/wpforms.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"98bbd410-5b01-4244-a8eb-715765180328":{"title":"XL WooCommerce Sales Triggers","condition":"xl-woocommerce-sales-triggers\/xl-woocommerce-sales-triggers.php","exclusions":["\/xl-woocommerce-sales-triggers\/assets\/js\/wcst_combined.min.js","\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js"],"icon_url":"","type":"plugin","id":"plugin:ba9e526ddb0157e69757530c6b18b714","is_default":0,"created_at":1677856813},"bf9f9620-dd0e-4e6f-9a45-4eb78a148f42":{"id":"plugin:58663fc781232169e865f6fe7cf1afaa","title":"YITH WooCommerce Ajax Product Filter","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/yith-woocommerce-ajax-navigation\/assets\/js\/yith-wcan-shortcodes.min.js"],"is_default":0,"condition":"yith-woocommerce-ajax-navigation\/init.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"b053279d-e07c-438c-bb3e-3a1f4f5d7c5e":{"id":"plugin:68b637fd247e40c8e135e4771d739b07","title":"YITH WooCommerce AJAX Product Filter Premium","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/yith-woocommerce-ajax-product-filter-premium\/assets\/js\/yith-wcan-shortcodes.min.js"],"is_default":0,"condition":"yith-woocommerce-ajax-product-filter-premium\/init.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"d94dbbf3-bcab-4e47-9fbb-6b3a7cf92787":{"title":"Yotpo Social Reviews for Woocommerce","condition":"yotpo-social-reviews-for-woocommerce\/wc_yotpo.php","exclusions":["\/yotpo-social-reviews-for-woocommerce\/assets\/js\/headerScript.js"],"icon_url":"","type":"plugin","id":"plugin:45ab742b3fccbd04d7bc973c8582be87","is_default":0,"created_at":1680686421}},"themes":{"9c623554-5834-4669-9e96-1b894c1939b2":{"id":"theme:0193ea55fce2ada93b262f2824008c0f","title":"Andaman","type":"theme","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/andaman\/assets\/js\/","\/wp-andaman-plugins\/shortcodes\/vc_extend\/"],"is_default":0,"condition":"andaman","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"7374c5a5-69f8-460f-b44f-dee884a824cd":{"id":"theme:24cbda63f1b898ade5562ab4ec6d97a5","title":"Artale","type":"theme","icon":"","exclusions":["\/artale-elementor\/assets\/js\/modulobox.js","\/artale-elementor\/assets\/js\/artale-elementor.js","\/artale\/js\/jquery-stellar.js","\/artale\/js\/core\/artale-plugins.js","\/artale\/js\/core\/artale-custom.js","var loader"],"is_default":0,"condition":"artale","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"03a9cc62-c167-447d-beb2-65c76c96b056":{"title":"Astra","condition":"astra","exclusions":["\/astra\/assets\/js\/minified\/frontend.min.js"],"icon_url":"","type":"theme","id":"theme:3cce5f3eaf76e098ba8e28f7bbba3f92","is_default":0,"created_at":1681390022},"2a2b54cb-8e1d-49d2-bfca-93eee231e470":{"id":"theme:72a8d63e59c10bdf512a62b862d143a7","title":"Astra - Carousel","type":"theme","icon":"","exclusions":["var astra","\/astra\/assets\/js\/minified\/style.min.js"],"is_default":0,"condition":"astra","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"7783361f-66fc-4d95-a054-4e9545bb5b48":{"title":"Auteur","condition":"g5plus-auteur","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/g5plus-auteur\/assets\/js\/core.min.js","\/g5plus-auteur\/assets\/vendors\/","\/auteur-framework\/libs\/smart-framework\/assets\/vendors\/perfect-scrollbar\/js\/perfect-scrollbar.jquery.min.js","\/wp-includes\/js\/imagesloaded.min.js"],"icon_url":"","type":"theme","id":"theme:6207fe478e269e7547bda70a46607a49","is_default":0,"created_at":1679737107},"4c618038-8fc7-4d48-8d41-a32da14e5c1e":{"title":"AutoTrader","condition":"autotrader","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/autotrader\/(.*).js"],"icon_url":"","type":"theme","id":"theme:046dfeee2b77390c53e0e7f93b6a3792","is_default":0,"created_at":1679736741},"18f04f23-35a0-4c45-8cb6-a91d57ca1790":{"id":"theme:835da12f43373029659f766920e81b47","title":"Avada - Animations & mobile-specific actions","type":"theme","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/uploads\/fusion-scripts\/(.*).js","window.off_canvas_","\/plugins\/fusion-builder\/","\/plugins\/fusion-core\/","\/Avada\/includes\/"],"is_default":0,"condition":"Avada","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"90135867-1b95-498b-80d6-f5dbf2f6b318":{"title":"Avada - FAQ shortcode","condition":"Avada","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/plugins\/fusion-core\/js\/min\/avada-faqs.js"],"icon_url":"","type":"theme","id":"theme:b084708c80d8582546e5430219aa4670","is_default":0,"created_at":1678277160},"d23b5bb1-1d7f-4109-bf69-b20a2be2d337":{"id":"theme:5e7a2248e1a53d9bb27b187deb541248","title":"Avada - Fusion carousel","type":"theme","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/includes\/lib\/assets\/min\/js\/library\/jquery.carouFredSel.js","\/includes\/lib\/assets\/min\/js\/general\/fusion-carousel.js","fusionCarouselVars"],"is_default":0,"condition":"Avada","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"98dfa8c1-e72a-4cef-a0b2-8f0c322490fc":{"id":"theme:f16fb109027f4994a7649a8b1663e6f7","title":"Avada - Fusion form","type":"theme","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/fusion-builder\/assets\/js\/min\/general\/fusion-form.js","\/fusion-builder\/assets\/js\/min\/general\/fusion-form-logics.js","\/includes\/lib\/assets\/min\/js\/library\/cssua.js","\/includes\/lib\/assets\/min\/js\/general\/fusion.js","\/includes\/lib\/assets\/min\/js\/library\/modernizr.js"],"is_default":0,"condition":"Avada","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"026801fa-af67-47ba-b966-347693f0585f":{"id":"theme:33f50696d353d8bd4eb59ff6e8f44c97","title":"Avada - Fusion grid gallery","type":"theme","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/fusion-builder\/assets\/js\/min\/general\/fusion-gallery.js","\/includes\/lib\/assets\/min\/js\/library\/imagesLoaded.js","\/includes\/lib\/assets\/min\/js\/library\/isotope.js","\/includes\/lib\/assets\/min\/js\/library\/packery.js","\/includes\/lib\/assets\/min\/js\/library\/lazysizes.js"],"is_default":0,"condition":"Avada","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"c8349314-15a3-481e-973b-e4d936e4420e":{"id":"theme:56fa9993a573540c83eda9c49fae5e3c","title":"Avada - Fusion slider","type":"theme","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/fusion-core\/js\/min\/avada-fusion-slider.js","\/Avada\/includes\/"],"is_default":0,"condition":"Avada","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"7a04bc85-0fec-4487-ae05-bb2e5d8d0420":{"title":"Avada - Load Portfolio on pageload","condition":"Avada","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/library\/packery.js","\/library\/isotope.js","\/library\/imagesLoaded.js","\/general\/fusion-lightbox.js","\/fusion-core\/js\/min\/avada-portfolio.js"],"icon_url":"","type":"theme","id":"theme:c3f0ed4d94499b68c77d95db37d1d399","is_default":0,"created_at":1696601814},"55bd510c-78aa-49d5-8304-8be2ee2ab0da":{"id":"theme:2189c1c769d65cfc2182e4822847071b","title":"Avada - Mobile menu","type":"theme","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/assets\/min\/js\/general\/avada-menu.js","\/includes\/lib\/assets\/min\/js\/library\/modernizr.js","\/includes\/lib\/assets\/min\/js\/library\/jquery.easing.js"],"is_default":0,"condition":"Avada","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"ddf00672-c35c-4b68-aeca-925e68bf12b2":{"id":"theme:97a185f08af70c39c7e221faab0f73eb","title":"Avada - OffCanvas","type":"theme","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/uploads\/fusion-scripts\/(.*).min.js","window.off_canvas_"],"is_default":0,"condition":"Avada","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"17544cc3-9d3a-4611-bc5d-44d04e2786fa":{"title":"Avada - Show the Portfolio grid on page load","condition":"Avada","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/includes\/lib\/assets\/min\/js\/library\/imagesLoaded.js","\/includes\/lib\/assets\/min\/js\/library\/isotope.js","\/includes\/lib\/assets\/min\/js\/library\/lazysizes.js","\/includes\/lib\/assets\/min\/js\/library\/modernizr.js","\/includes\/lib\/assets\/min\/js\/library\/packery.js","\/fusion-core\/js\/min\/avada-portfolio.js","avadaPortfolioVars"],"icon_url":"","type":"theme","id":"theme:9d1a9b0c2ca20fca764a82f197b962fd","is_default":0,"created_at":1696601823},"c6c3347c-14e0-4766-afa5-df33a47f5a5a":{"id":"theme:3ff44421b404c5efffa25e78e479e4ea","title":"Avada - Sticky menu","type":"theme","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/Avada\/assets\/min\/js\/general\/avada-menu.js"],"is_default":0,"condition":"Avada","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"232596c1-6a6a-4fe8-a5c3-a60fa74a9456":{"id":"theme:0d727d80bb132f17c737e55883fe4be0","title":"Avada - WooCommerce product gallery","type":"theme","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/assets\/min\/js\/general\/avada-woo-product-images.js","\/includes\/lib\/assets\/min\/js\/library\/jquery.flexslider.js"],"is_default":0,"condition":"Avada","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"95ece7e4-3b19-45e5-aa28-14f833c9afca":{"title":"Avesa","condition":"avesa","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/avesa\/js\/main.js","\/avesa\/js\/isotope.js","\/sw_core\/js\/slick.min.js","\/avesa\/js\/bootstrap-datetimepicker.min.js","\/avesa\/js\/bootstrap.min.js"],"icon_url":"","type":"theme","id":"theme:aad8bfcc594eec02e3b0d635198dee5e","is_default":0,"created_at":1679737993},"f2bfe477-4e45-4e52-a7d9-4d0ba3a92258":{"title":"Besa","condition":"besa","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/besa\/js\/"],"icon_url":"","type":"theme","id":"theme:c238e89523c46ca28b08e401f42f6ccc","is_default":0,"created_at":1679738204},"bd94908c-8138-4995-986b-47ec66494bdd":{"title":"BeTheme","condition":"betheme","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/betheme\/","mfn","\/wp-includes\/js\/jquery\/ui\/tabs.min.js","\/wp-includes\/js\/jquery\/ui\/core.min.js"],"icon_url":"","type":"theme","id":"theme:b99156eb9eeb357c0a70bd3bda6861cc","is_default":0,"created_at":1679738639},"6fb2b9d7-6ecc-4260-999c-938fbebdbf01":{"id":"theme:de8504b73ea228d0ea9bbce69752092e","title":"Bridge","type":"theme","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/bridge-creative\/bridge\/js\/","\/wp-includes\/js\/"],"is_default":0,"condition":"bridge","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"65698b6b-85dd-41ef-8fd7-718f1e983dba":{"title":"Car Dealer","condition":"cardealer","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-includes\/js\/jquery\/(.*)","\/cardealer\/js\/(.*)"],"icon_url":"","type":"theme","id":"theme:b1111424fff61af8d1e152dcdd6810f6","is_default":0,"created_at":1679737517},"087fb457-a09d-4140-84bd-c9bc1e8195b7":{"title":"CheerUp","condition":"cheerup","exclusions":["\/cheerup\/js\/jquery.sticky-sidebar.js","\/cheerup\/js\/object-fit-images.js","\/cheerup\/js\/jquery.fitvids.js","\/cheerup\/js\/jquery.mfp-lightbox.js","\/cheerup\/js\/ie-polyfills.js","\/cheerup\/js\/theme.js","\/wp-includes\/js\/imagesloaded.min.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/wp-includes\/js\/jquery\/jquery.min.js"],"icon_url":"","type":"theme","id":"theme:13bcf562f45afb245dc4f76fecfba6d6","is_default":0,"created_at":1696429398},"eb86aedb-91e6-480c-b76c-756ac1da41be":{"title":"Clover","condition":"clover-theme","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/clover-theme\/"],"icon_url":"","type":"theme","id":"theme:89372f3d9321ae09c94488592084da29","is_default":0,"created_at":1679738878},"6e90b649-5736-497f-9bc6-515900cfea8a":{"title":"Divi - Animations","condition":"Divi","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js",".dipi_preloader_wrapper_outer","\/Divi\/js\/scripts.min.js","\/Divi\/js\/custom.unified.js","\/js\/magnific-popup.js","var DIVI"],"icon_url":"","type":"theme","id":"theme:c0abf30dba4ff13db836d1b01685953a","is_default":0,"created_at":1679737389},"70916c43-4e02-4932-b6aa-91a1815bc755":{"title":"Divi - Background video","condition":"Divi","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate.min.js","\/Divi\/js\/custom.unified.js","\/js\/mediaelement\/(.*)","mejs"],"icon_url":"","type":"theme","id":"theme:c7edea41ae6716291e2d32a2ab429209","is_default":0,"created_at":1679738240},"08531785-9818-4e30-903e-564637a2ad7a":{"title":"Divi - Counter module","condition":"Divi","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js",".dipi_preloader_wrapper_outer","\/Divi\/js\/scripts.min.js","\/Divi\/js\/custom.unified.js","\/js\/magnific-popup.js","var DIVI","\/Divi\/includes\/builder\/feature\/dynamic-assets\/assets\/js\/easypiechart.js"],"icon_url":"","type":"theme","id":"theme:2c46b9f5a770f260c3f7115bb330b2d5","is_default":0,"created_at":1679736810},"b996762a-84ef-440d-a089-73a187936fbf":{"title":"Divi - Mobile menu","condition":"Divi","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate.min.js","\/Divi\/js\/scripts.min.js","\/Divi\/js\/custom.unified.js"],"icon_url":"","type":"theme","id":"theme:b9116994f4e4b9b9fa574440c00d2f0d","is_default":0,"created_at":1679738580},"ae096e1e-9c36-46ad-a3d1-c26ea507276b":{"title":"Divi - Sticky elements","condition":"Divi","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js",".dipi_preloader_wrapper_outer","\/Divi\/js\/scripts.min.js","\/Divi\/includes\/builder\/feature\/dynamic-assets\/assets\/js\/sticky-elements.js","var DIVI"],"icon_url":"","type":"theme","id":"theme:8b62db03c90245f3e690335b079b05dc","is_default":0,"created_at":1679737191},"349f31f0-dd10-41d3-b0a4-9c5df64879f8":{"title":"Divi - Sticky menu","condition":"Divi","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/js\/jquery\/jquery-migrate.min.js","\/Divi\/js\/scripts.min.js","\/Divi\/includes\/builder\/feature\/dynamic-assets\/assets\/js\/magnific-popup.js","jqueryParams","firstHeader"],"icon_url":"","type":"theme","id":"theme:b7b84aca0f0dc6a1ced31d38626c50ea","is_default":0,"created_at":1679738821},"59563458-5f04-4959-b3e2-53e49e169d67":{"title":"Divi - WooCommerce Single Product Images","condition":"Divi","exclusions":["\/Divi\/js\/scripts.min.js"],"icon_url":"","type":"theme","id":"theme:f9c5bdba8b39fc877b41dea00fa756f9","is_default":0,"created_at":1684342262},"6426539e-4e43-4fef-ab5a-3eb7b2a8b057":{"title":"Eikra","condition":"eikra","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate.min.js","\/eikra\/assets\/js\/","EikraObj"],"icon_url":"","type":"theme","id":"theme:55d2581ad975eb6325bc97fc3d3b0cb8","is_default":0,"created_at":1679738450},"59020bd6-069f-4f2d-afa2-fbdefa03211c":{"title":"Ekko","condition":"ekko","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/ekko\/"],"icon_url":"","type":"theme","id":"theme:2c06f4a1949f8ba4e77042a47674fd9e","is_default":0,"created_at":1679737803},"d82f5cdd-c5d3-4596-94dc-1e25aaff2083":{"title":"Elessi","condition":"elessi-theme","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elessi-theme\/assets\/js\/min\/functions.min.js","\/elessi-theme\/assets\/js\/min\/main.min.js"],"icon_url":"","type":"theme","id":"theme:d5d2b7fda7b8a2b5b91d430f7602e230","is_default":0,"created_at":1679737773},"f0587c21-54d0-429d-8efe-18a93dacb18d":{"id":"theme:5fc04cc678cb54567aedb51027933002","title":"Enfold","type":"theme","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/dynamic_avia\/avia-footer-scripts-(.*).js","var avia_is_mobile"],"is_default":0,"condition":"enfold","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"cc0550cb-918e-419d-b4f2-1809cf666dbb":{"id":"theme:eb759a03d0ca292c948f09d004a2963f","title":"Enfold - LayerSlider","type":"theme","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","layerslider"],"is_default":0,"condition":"enfold","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"ec883654-4f63-4fae-a3ef-923dcbc2426d":{"title":"Enfold - Shortcodes","condition":"enfold","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/enfold\/js\/avia.js","\/enfold\/js\/shortcodes.js","\/enfold\/config-templatebuilder\/avia-shortcodes\/","\/enfold\/js\/avia-compat.js","\/enfold\/js\/waypoints\/waypoints.min.js","\/enfold\/js\/avia-snippet-(.*).js"],"icon_url":"","type":"theme","id":"theme:072fc4077d7071791d774d6ddbf5dc2a","is_default":0,"created_at":1684519716},"fe3546f0-be3e-4173-8992-a7f6f203b82f":{"title":"Envision","condition":"envision","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/envision\/lib\/js\/app.min.js","var CloudFwOp"],"is_default":1,"icon_url":"","type":"theme","id":"theme:fc5f7d69b646ed95835badc0fc23bc11","created_at":1679737494},"d997b942-19de-4710-9c81-79d3c65cbd76":{"id":"theme:047f009f2a1f4cdf2088c46be47e385b","title":"Ewebot","type":"theme","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/gt3-themes-core\/","\/uploads\/gt3-assets\/js\/(.*)","\/wp-includes\/js\/imagesloaded.min.js"],"is_default":0,"condition":"ewebot","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"53d29aec-8ae4-4273-b748-f5bd52dfe177":{"title":"Farvis","condition":"farvis","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/farvis\/"],"icon_url":"","type":"theme","id":"theme:26bff2f3a6ff6347d35edf5c77a35687","is_default":0,"created_at":1679737972},"fb01246b-a5f8-4021-b514-c02cf55e80bd":{"title":"Flatsome","condition":"flatsome","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/flatsome\/assets\/js\/flatsome.js","\/flatsome\/assets\/libs\/packery.pkgd.min.js","\/flatsome\/assets\/js\/woocommerce.js"],"icon_url":"","type":"theme","id":"theme:26fb1cf80f074ca199d8a7e94c5fc796","is_default":0,"created_at":1679738732},"4d65dc12-9ce7-4171-94a7-9821fd95240e":{"id":"theme:28a6f8b3319c107a34603be0f01a4bcf","title":"Flatsome - Google map","type":"theme","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","maps.googleapis.com","google.maps.LatLng","\/wp-includes\/js\/hoverIntent.min.js"],"is_default":0,"condition":"flatsome","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"890e15b6-c66b-4a9e-9b7d-55417df94916":{"title":"Flatsome - Images","condition":"flatsome","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/flatsome\/inc\/integrations\/wp-rocket\/flatsome-wp-rocket.js","\/flatsome\/assets\/js\/flatsome.js","\/flatsome\/inc\/extensions\/flatsome-lazy-load\/flatsome-lazy-load.js"],"icon_url":"","type":"theme","id":"theme:f2d60aad9f2f5395e3e145cf8f8ab165","is_default":0,"created_at":1679737691},"cb54d070-8ee0-4c35-9fa9-b2bac73ccf39":{"title":"Frida","condition":"frida","exclusions":["\/wp-includes\/js\/jquery\/jquery.min.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/frida\/"],"icon_url":"","type":"theme","id":"theme:109ddf56796a5133e12279f3daa5ff62","is_default":0,"created_at":1679738013},"9e78539a-03d9-442b-ab94-dd3b7a9658e4":{"id":"theme:80a330247d61d729fcd78dc01de6ed2f","title":"GeneratePress - Mobile menu","type":"theme","icon":"","exclusions":["\/generatepress\/assets\/js\/menu.min.js","generatepressMenu","\/gp-premium\/menu-plus\/functions\/js\/offside.min.js"],"is_default":0,"condition":"generatepress","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"2c72e7e6-cb77-44e9-af87-d5c42ae6db52":{"title":"Honor - WPBakery fix","condition":"honor","exclusions":["\/honor\/js\/__scripts.js","HONOR_STORAGE","\/js_composer\/"],"icon_url":"","type":"theme","id":"theme:9f228373ff4d172655dbf5cb3b1bc23a","is_default":0,"created_at":1679736895},"9309d1d3-1035-4a2c-8ced-075bc3ff9957":{"title":"HotelMaster","condition":"hotelmaster","exclusions":["\/wp-includes\/js\/jquery\/jquery.min.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/hotelmaster\/javascript\/gdlr-script.js","\/hotelmaster\/plugins\/dl-menu\/modernizr.custom.js","\/hotelmaster\/plugins\/dl-menu\/jquery.dlmenu.js","\/hotelmaster\/plugins\/superfish\/js\/superfish.js","\/hotelmaster\/plugins\/jquery.easing.js"],"icon_url":"","type":"theme","id":"theme:978eaddad3b1047e479407b6d92197aa","is_default":0,"created_at":1679738595},"4a09f745-cbb1-47c8-b50a-c8014d5d1335":{"id":"theme:e813a548bceac6765a1cdf2316f1a6ab","title":"HotelMaster - Blog","type":"theme","icon":"","exclusions":["\/wp-includes\/js\/masonry.min.js","\/gp-premium\/blog\/functions\/js\/scripts.min.js","\/wp-includes\/js\/imagesloaded.min.js"],"is_default":0,"condition":"hotelmaster","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"f2d8f704-ec68-4278-9ca2-885daa0c1ce5":{"id":"theme:398a264e302e42640553681e8759cd07","title":"HotelMaster - Masonry","type":"theme","icon":"","exclusions":["\/gp-premium\/menu-plus\/functions\/js\/offside.min.js","offSide"],"is_default":0,"condition":"hotelmaster","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"df52436c-53d6-461a-b81a-cd0b21680524":{"title":"JNews","condition":"jnews","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate.min.js","\/jnews\/assets\/js\/","jnews","jfla"],"icon_url":"","type":"theme","id":"theme:5d90e451984f9d894b1aabb0d00f30a2","is_default":0,"created_at":1679738860},"87ed69a2-3295-4fad-a82e-eeb02925a5dc":{"title":"Jobify","condition":"jobify","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js ","\/jquery-migrate(.min)?.js","\/jobify\/js\/jobify.min.js","\/jobify\/js\/select2.full.min.js"],"icon_url":"","type":"theme","id":"theme:592006aa4562a6915e344e5e2a09e5ee","is_default":0,"created_at":1686856948},"28a0b1ea-8d2f-4931-a48a-166b8df8a773":{"title":"JOYN","condition":"joyn","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/swift-framework\/includes\/page-builder\/frontend-assets\/js\/lib\/modernizr-custom.js","\/swift-framework\/includes\/page-builder\/frontend-assets\/js\/spb-functions.min.js","\/swift-framework\/includes\/swift-slider\/assets\/js\/swift-slider.min.js","\/swift-framework\/public\/js\/lib\/imagesloaded.pkgd.min.js","\/joyn\/js\/owl.carousel.min.js","\/joyn\/js\/theme-scripts.js","\/joyn\/js\/functions.js"],"icon_url":"","type":"theme","id":"theme:c395470ad2d4d681836cd942bbb03120","is_default":0,"created_at":1679738527},"542be60a-2346-4740-9a41-8a580c4f013c":{"title":"Juno Toys","condition":"junotoys","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate.min.js","\/junotoys\/fw\/js\/core.init.js","\/junotoys\/fw\/js\/core.utils.js","\/junotoys\/fw\/js\/superfish.js","\/junotoys\/fw\/js\/swiper\/swiper.js","\/trx_utils\/shortcodes\/theme.shortcodes.js","\/wp-includes\/js\/jquery\/ui\/(.*)"],"icon_url":"","type":"theme","id":"theme:2acab38e8356d36355bb81d931e7fba4","is_default":0,"created_at":1679737788},"06167710-10c7-446e-a08b-ce676e444102":{"title":"Jupiter","condition":"jupiter","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/jupiter\/","\/wp-includes\/js\/underscore.min.js","WebFont.load"],"icon_url":"","type":"theme","id":"theme:89c5c30498c2989611f9044be006197c","is_default":0,"created_at":1679738430},"5d042e1f-7e62-4ec4-ba31-30d396004522":{"title":"JupiterX","condition":"jupiterx","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/jupiterx\/(.*).js","\/wp-includes\/js\/underscore.min.js","WebFont.load"],"icon_url":"","type":"theme","id":"theme:b06632962a4948d4944fd8d79ffbfceb","is_default":0,"created_at":1679737312},"c4b030ea-66a1-4729-85bf-a484e373a316":{"title":"Kadence","condition":"kadence","exclusions":["\/kadence\/assets\/js\/navigation.min.js","mobile_menu_breakpoint ","kadenceConfig"],"icon_url":"","type":"theme","id":"theme:4b7907ee68218db279648da9bf7102d1","is_default":0,"created_at":1679737958},"20c605b4-3e3a-4bb0-a5e5-a08e2cb0f31f":{"title":"Kalium","condition":"kalium","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/kalium\/assets\/js\/main.min.js","mobile_menu_breakpoint","var _k"],"icon_url":"","type":"theme","id":"theme:1fcb99a1ab06e1e36635365ed3e59ce5","is_default":0,"created_at":1679737406},"e1e04a7d-635a-4e28-83d9-e345ce40e354":{"title":"Kava","condition":"kava","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/kava\/assets\/js\/theme-script.js"],"icon_url":"","type":"theme","id":"theme:359d67efbf530c998245225dd3245a88","is_default":0,"created_at":1679738609},"e833c36e-ee89-4924-b608-3f28327c2f85":{"title":"Lay","condition":"lay","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/wp-includes\/js\/backbone.min.js","\/wp-includes\/js\/underscore.min.js","\/lay\/","\/laytheme-carousel\/","window.laytheme"],"icon_url":"","type":"theme","id":"theme:7c718c6da874ea6e4b27c6d70bc4e7e8","is_default":0,"created_at":1679737453},"2df2ef47-a833-4711-ba54-48dc62586f37":{"id":"theme:85d9922ac61ed833fd047a67029df8e5","title":"LazaNews","type":"theme","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/jquery.custom.js"],"is_default":0,"condition":"lazanews","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"9443304a-34e9-4700-a03a-5f8f62f83ed1":{"title":"Listeo","condition":"listeo","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/listeo\/js\/"],"icon_url":"","type":"theme","id":"theme:db7da585545001f5ae614a2810f08f3a","is_default":0,"created_at":1679737244},"77afa73c-c4a8-42a8-aaee-43f6a761364e":{"title":"ListingPro","condition":"listingpro","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/listingpro\/assets\/lib\/jquerym.menu\/js\/jquery.mmenu.min.all.js","\/listingpro\/assets\/lib\/Magnific-Popup-master\/jquery.magnific-popup.min.js","\/listingpro\/assets\/js\/select2.full.min.js","\/listingpro\/assets\/js\/jquery.city-autocomplete.js","\/listingpro\/assets\/js\/chosen.jquery.min.js","\/listingpro\/assets\/lib\/bootstrap\/js\/bootstrap-slider.js","\/listingpro\/assets\/js\/jquery-ui.js","\/listingpro\/assets\/js\/mapbox.js","\/listingpro\/assets\/js\/main.js","\/listingpro\/assets\/js\/leaflet.markercluster.js","maps"],"icon_url":"","type":"theme","id":"theme:0b365e43dfc65d2b1b70fac6510c7c9c","is_default":0,"created_at":1679737938},"01b369b5-b578-4314-8e95-40b67a41d75a":{"title":"Master Study","condition":"masterstudy","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/masterstudy\/assets\/js\/custom.js ","\/masterstudy\/assets\/vendors\/jquery.fancybox.min.js ","\/masterstudy\/assets\/js\/select2.full.min.js"],"icon_url":"","type":"theme","id":"theme:0ee224c20e4ef7d546733d933db598f2","is_default":0,"created_at":1679737878},"6b000cc7-d33b-4109-9c39-6119a5d81cde":{"title":"Maya","condition":"maya","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/maya\/js\/jquery.mobilemenu.js","\/maya\/js\/jquery.custom.js","\/maya\/core\/includes\/js\/jquery.tipsy.js"],"icon_url":"","type":"theme","id":"theme:719fe28004fcdd81a820602924aa8074","is_default":0,"created_at":1679737916},"ef3c76d6-1041-473d-81ea-a5a6e8c86735":{"title":"MH Magazine","condition":"mh-magazine","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/mh-magazine\/"],"icon_url":"","type":"theme","id":"theme:2a0cd6efc2f46be69de61712729a2ec9","is_default":0,"created_at":1679737743},"9cbb2777-5524-43b8-af36-692b27452c0d":{"title":"Minimog","condition":"minimog","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/minimog\/"],"icon_url":"","type":"theme","id":"theme:61c0c235042359ee7d2a9035e79a7da2","is_default":0,"created_at":1679738135},"7eb81c74-8062-4a6c-bf66-b7c5bc160141":{"title":"Moozo Elementor","condition":"moozo-elementor","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/moozo-elementor\/assets\/js\/countdown.js","\/moozo-elementor\/assets\/vendor\/countdown\/countdown.min.js"],"icon_url":"","type":"theme","id":"theme:2ddb538c8e6b6c766fffd0d5c861fd82","is_default":0,"created_at":1679738623},"e90b7bfa-9ff6-4e1a-bf29-6207d55fdd39":{"title":"Motor","condition":"motor","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/motor\/js\/"],"icon_url":"","type":"theme","id":"theme:b33538179f5661a86cbe327a1793e199","is_default":0,"created_at":1683973354},"445e625a-f955-41fa-84de-65d9ea19be07":{"title":"My Listing","condition":"my-listing","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/my-listing\/assets\/","\/wp-includes\/js\/dist\/vendor\/moment.min.js","maps.googleapis.com","MyListing","_Explore_Settings"],"icon_url":"","type":"theme","id":"theme:afacb777229ddf5cabceacc64948057d","is_default":0,"created_at":1679737725},"00b8cd2d-2781-4fbb-ac5d-00750ba94ac9":{"title":"Neve - Mobile menu","condition":"neve","exclusions":["\/neve\/assets\/js\/build\/modern\/frontend.js"],"icon_url":"","type":"theme","id":"theme:5ae731cc06dd9284f8172675a6fe81ab","is_default":0,"created_at":1679738714},"483abc54-f1fc-47dc-bfc1-a269c7d1c849":{"title":"Newspaper - Images","condition":"Newspaper","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","tagdiv_theme.min.js","tdBlocksArray","\/wp-includes\/js\/underscore.min.js","\/td-cloud-library\/assets\/js\/","\/npm\/slick-carousel@1.8.1\/slick\/slick.min.js","tdb-gallery-wrap","tdBlocksArray","tdb_"],"icon_url":"","type":"theme","id":"theme:649ff22527bac2b1c8e0115cd3851d53","is_default":0,"created_at":1695805761},"50db8d14-d421-4237-be14-a6f7b5c11ec5":{"title":"Newspaper - Slider & YouTube","condition":"Newspaper","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","tagdiv_theme.min.js","tdBlocksArray","tdb_globals","td_youtube_list_ids","iosSlider","\/td-cloud-library\/assets\/js\/js_files_for_front.min.js","\/wp-includes\/js\/underscore.min.js","\/td-cloud-library\/assets\/js\/","\/npm\/slick-carousel@1.8.1\/slick\/slick.min.js","tdb-gallery-wrap","tdBlocksArray","tdb_"],"icon_url":"","type":"theme","id":"theme:7e2eeee57ae458c5959342eda6526bf1","is_default":0,"created_at":1695805747},"514f4c30-2b67-4648-960e-dfe1cc401ca5":{"title":"Niva","condition":"niva","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/niva\/js\/","\/sweetthemes-framework\/js\/","mt_typed"],"icon_url":"","type":"theme","id":"theme:c4838f73a344b829ed626635e210dcf4","is_default":0,"created_at":1679738256},"e67ee504-c3b1-455e-88ab-1fae8c830652":{"title":"OceanWP","condition":"oceanwp","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/oceanwp\/"],"icon_url":"","type":"theme","id":"theme:db37af4b7d12695d37d9256313a5f37a","is_default":0,"created_at":1679737552},"e44e240a-8765-4f4f-b67e-d54e4b727506":{"title":"OceanWP - Mobile menu","condition":"oceanwp","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/ocean-side-panel\/assets\/js\/side-panel.min.js","\/oceanwp\/assets\/js\/theme.vanilla.min.js"],"icon_url":"","type":"theme","id":"theme:9babbcd52b2ce558d299a06cd1130a11","is_default":0,"created_at":1679738463},"897b0100-958d-4a02-b6b2-1e753e9869f4":{"title":"PenNews","condition":"pennews","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js ","\/jquery-migrate(.min)?.js","\/pennews\/js\/script.min.js","\/pennews\/js\/script.lib.min.js"],"icon_url":"","type":"theme","id":"theme:02811fa00bc1471bb5be0457ce0ee005","is_default":0,"created_at":1679737471},"edd3ba03-e0fd-4b6e-911b-60b29f3471bf":{"title":"Pharmacy Mentor","condition":"pharmacymentor","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/pharmacymentor\/"],"icon_url":"","type":"theme","id":"theme:3188aaf1ef2c39937450f2a14ebb1174","is_default":0,"created_at":1679738214},"725415ff-cc76-45cc-a131-3170e5aa30fc":{"title":"Porto","condition":"porto","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-includes\/js\/jquery\/ui\/","\/porto\/js\/theme.js","\/porto\/js\/theme.min.js"],"icon_url":"","type":"theme","id":"theme:8493f398f200c8dffe60d46439dd3360","is_default":0,"created_at":1679737758},"2c19bcec-f3ff-4873-bfd7-db6bc0f6433c":{"title":"Porto - Owl Carousel","condition":"porto","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/wp-includes\/js\/jquery\/ui\/","\/porto\/js\/theme(|.min).js","\/porto\/js\/libs\/owl.carousel(|.min).js","\/porto\/js\/theme-async(|.min).js","\/prettyPhoto\/jquery.prettyPhoto(|.min).js"],"icon_url":"","type":"theme","id":"theme:f34f5199fb7fca78852cd3fb7758f178","is_default":0,"created_at":1687527252},"31347ccb-f69e-4cd3-bd47-b80ce14ac76e":{"title":"ProPhoto","condition":"prophoto7","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/prophoto7\/js\/bundle.front.js","\/wp-includes\/js\/underscore.min.js","PROPHOTO"],"icon_url":"","type":"theme","id":"theme:a5836a56c4472fade4dc6ebfe2281554","is_default":0,"created_at":1679737425},"a8208c04-865c-49aa-ab96-41e378d391c8":{"title":"Publisher","condition":"publisher","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/publisher\/js\/"],"icon_url":"","type":"theme","id":"theme:32c73be0cb175da278c8e2af0811b0d1","is_default":0,"created_at":1679738169},"a0d69f3d-1356-4a1d-a600-2f2f788b8a9a":{"title":"REHub","condition":"rehub-theme","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/rehub-theme\/js\/custom_floatpanel.js"],"icon_url":"","type":"theme","id":"theme:321af1febb74f488cf911380893739b2","is_default":0,"created_at":1679738502},"8b74bbe5-7f32-42df-908f-78c99a8cad82":{"title":"Rey","condition":"rey","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/rey\/scripts-(.*).js","\/rey-core\/assets\/js\/"],"icon_url":"","type":"theme","id":"theme:e46567cd0f3ec9b37e7230dc87eac367","is_default":0,"created_at":1679737011},"5c9115d3-bcbd-49d6-8feb-4880d2b82bfe":{"title":"Rife Free","condition":"rife-free","exclusions":["\/rife-free\/js\/script.min.js","\/rife-free\/js\/isotope.pkgd.min.js","\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","var reJS"],"icon_url":"","type":"theme","id":"theme:74a449954de79625eccc6750e87af8f6","is_default":0,"created_at":1679738107},"6542b2fd-1f91-4862-aa18-11eecc02faaf":{"title":"Roisin","condition":"roisin","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/themes\/roisin\/assets\/js\/main.min.js","\/plugins\/roisin-core\/assets\/js\/roisin-core.min.js","\/wp-includes\/js\/hoverIntent.min.js"],"icon_url":"","type":"theme","id":"theme:8f38fe58034772931110930b91cb6797","is_default":0,"created_at":1685964523},"5a192ad9-d150-4aa0-8efc-d68131cb7a37":{"title":"Sahifa - Mobile Menu","condition":"sahifa","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/themes\/sahifa\/js\/ilightbox.packed.js","\/translate_a\/element.js"],"icon_url":"","type":"theme","id":"theme:06ebe49f4c1e5b04cece831f8bb198a3","is_default":0,"created_at":1687540363},"7ae9d978-d63c-4a58-beb3-418bebb5b23c":{"title":"Salient","condition":"salient","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js ","\/jquery-migrate(.min)?.js","\/salient\/","winW > bodyW"],"icon_url":"","type":"theme","id":"theme:b3e12d57ac23897be1bb2c673e3fc761","is_default":0,"created_at":1679736950},"35aaa6c5-4a37-4161-b504-fb3ebc4b1148":{"id":"theme:d612db1dd8dc76faa6a36a9ebfd336dc","title":"Salient - Nectar slider","type":"theme","icon":"","exclusions":["\/salient-nectar-slider\/js\/nectar-slider.js","\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js ","\/jquery-migrate(.min)?.js"],"is_default":0,"condition":"salient","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"84c95206-3e59-4eb3-a0c9-e2231a1c0a48":{"title":"SEO Lounge","condition":"seolounge","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?$","\/js_composer\/assets\/js\/dist\/js_composer_front.min.js","\/seolounge\/js\/radiantthemes-custom.js","\/seolounge\/js\/radiantthemes-core.min.js"],"icon_url":"","type":"theme","id":"theme:3d72b779d9c4ba6b51cc5b245b141433","is_default":0,"created_at":1691695809},"cd44aa56-088a-40dd-bf1e-f835efa68626":{"title":"Shoptimizer","condition":"shoptimizer","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/shoptimizer\/assets\/js\/lazyload-bg.js","\/shoptimizer\/assets\/js\/main.min.js"],"icon_url":"","type":"theme","id":"theme:6c32b43f4da639e5901574fac6b7d387","is_default":0,"created_at":1679737143},"d2c48a48-430a-4eea-bc05-99b66f1f6a7b":{"title":"SmartMag","condition":"smart-mag","exclusions":["\/smart-mag\/js\/lazyload.js"],"icon_url":"","type":"theme","id":"theme:23d6b7878bd0087addb067db3fa39864","is_default":0,"created_at":1679738490},"dd0d9133-ef17-4dac-b174-9f25d535838f":{"title":"Soledad","condition":"soledad","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/soledad\/js\/main.js","\/soledad\/js\/more-post.js","\/soledad\/js\/libs-script.min.js"],"icon_url":"","type":"theme","id":"theme:d3f78b26c2d11c99230171cc6378d06e","is_default":0,"created_at":1679737664},"d657dc56-5c04-439a-8987-401f89a65bf9":{"title":"Stockholm","condition":"stockholm","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/stockholm\/js\/"],"icon_url":"","type":"theme","id":"theme:fcfff492e00727b63cf5dff9f59bc2a4","is_default":0,"created_at":1679738378},"121f9b1b-d3cd-4dde-915e-0b348abf6687":{"title":"Storefront","condition":"storefront","exclusions":["\/storefront\/assets\/js\/navigation.min.js"],"icon_url":"","type":"theme","id":"theme:f0dca7e4eaedf573d4664be249845942","is_default":0,"created_at":1679738793},"41cfc83f-ff02-4a35-a3b7-e92db213b224":{"title":"StreamTube","condition":"streamtube","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/streamtube\/","\/streamtube-core\/"],"icon_url":"","type":"theme","id":"theme:9772ccddd470688f6bc6aee86e34d29b","is_default":0,"created_at":1679331431},"aec0a548-4c6b-400a-80ed-19a49e0faef0":{"title":"The7","condition":"dt-the7","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","loader-removed","\/Ultimate_VC_Addons\/assets\/min-js\/","\/dt-the7\/","\/js_composer\/"],"icon_url":"","type":"theme","id":"theme:7934c689fd20e30b6bfc69bb9d46cb63","is_default":0,"created_at":1679737892},"538354ff-d69f-40be-b0cc-df3790599dd2":{"title":"TheGem","condition":"thegem","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/thegem\/js\/","gemSettings","thegemSlideshow","tgpLazyItemsOptions"],"icon_url":"","type":"theme","id":"theme:153c54fe73897da838ce39152b1db5a8","is_default":0,"created_at":1679738477},"68f2de3b-e2b8-4edf-b82f-93fd7834c65f":{"title":"Total","condition":"Total","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/Total\/assets\/js\/total.min.js"],"icon_url":"","type":"theme","id":"theme:96b0141273eabab320119c467cdcaf17","is_default":0,"created_at":1679737571},"6dc1cb35-6b50-4da0-9834-dddf169edaa6":{"id":"theme:7c37c885d7fecf788f635734f99e8610","title":"Townhub","type":"theme","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/townhub-add-ons\/assets\/js\/(.*)","\/wp-includes\/js\/dist\/vendor\/react.js","\/wp-includes\/js\/dist\/vendor\/react-dom.js"],"is_default":0,"condition":"townhub","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"f484f86b-e316-4871-9322-dee3925349fe":{"title":"Travel Monster - Owl Carousel","condition":"travel-monster","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/wp-content\/plugins\/wp-travel-engine\/assets\/lib\/owl-carousel(.*)\/owl.carousel(|.min).js","var isRtl"],"icon_url":"","type":"theme","id":"theme:d3e8da87b3affd399205438fbc8a4f05","is_default":0,"created_at":1690822771},"14cb0a85-8bee-491e-99d7-5f20a07f4bdd":{"title":"Uncode","condition":"uncode","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/uncode\/library\/js\/init(.min)?.js","\/uncode\/library\/js\/plugins(.min)?.js","\/uncode\/library\/js\/app(.min)?.js","\/uncode\/library\/js\/woocommerce-uncode(.min)?.js","\/wp-includes\/js\/mediaelement\/mediaelement-and-player.min.js","initHeader","initBox","fixMenuHeight","initRow"],"icon_url":"","type":"theme","id":"theme:18ba19b98aefbb6c0fde6c6bf92e9cfc","is_default":0,"created_at":1679738154},"88e96479-1aa2-4adc-8f07-20bc0368a63f":{"title":"Werkstatt","condition":"werkstatt","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/js\/underscore.min.js","\/werkstatt\/assets\/js\/vendor.min.js","\/werkstatt\/assets\/js\/fullscreen.min.js","\/werkstatt\/assets\/js\/app.min.js"],"icon_url":"","type":"theme","id":"theme:38faa29db5a07b8fef6aee9cc11cafec","is_default":0,"created_at":1679737639},"60c4110b-a960-4d44-b619-6d79514dbf75":{"title":"Woodmart","condition":"woodmart","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-includes\/js\/imagesloaded.min.js","\/woodmart\/js\/scripts\/wc\/","\/woodmart\/js\/scripts\/global\/","\/woodmart\/js\/libs\/owl.carousel.min.js","\/woodmart\/js\/libs\/owl.carousel.js","\/woodmart\/js\/libs\/slick.js","\/woodmart\/js\/libs\/autocomplete.min.js"],"icon_url":"","type":"theme","id":"theme:06338f13cb89e5309ad2eb7e4d457be4","is_default":0,"created_at":1695633901},"119ebd1c-6b46-4f07-8d6a-3498d9c8814f":{"title":"XStore","condition":"xstore","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/xstore\/js\/","\/et-core-plugin\/packages\/st-woo-swatches\/public\/js\/frontend.min.js"],"icon_url":"","type":"theme","id":"theme:3de9d9ba385200548f177d9c704ae92a","is_default":0,"created_at":1679738190},"9a7a548c-07a1-4dff-93fc-6e8230b67853":{"id":"theme:119d329456073aa10969d7cbd9760f28","title":"YOOtheme Pro","type":"theme","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","uikit.min.js"],"is_default":0,"condition":"yootheme","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"f74c499e-b7d9-4590-8671-379f51f468c8":{"title":"Zeen","condition":"zeen","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/zeen\/assets\/js\/","\/js.cookie.min.js"],"icon_url":"","type":"theme","id":"theme:acb52844f996627788836366404a3245","is_default":0,"created_at":1679737859}},"scripts":{"dd0c5a5b-ec56-49f9-9aa4-89e1e3a6a28a":{"title":"Amazon Ads","exclusions":["amazon-adsystem.com"],"icon_url":"","type":"script","id":"script:b82a5936d8ea0745016caeb71629ae5d","is_default":0,"created_at":1681390276},"980edf32-c64b-4370-bf23-c62b079e71c3":{"title":"Google AdSense","exclusions":["adsbygoogle"],"icon_url":"","type":"script","id":"script:0206e6040c8ff64b8d6ee5fef2ce1c90","is_default":0,"created_at":1681377840},"2499bb90-0753-4b2b-9bd4-1525f94c7437":{"title":"Google Analytics","exclusions":["google-analytics.com\/analytics.js","ga\\( '","ga\\('"],"icon_url":"","type":"script","id":"script:d86cf69a8b82547a94ca3f6a307cf9a6","is_default":0,"created_at":1681388311},"6f460036-3106-4b8c-9951-d32de9b1258f":{"title":"Google Maps","exclusions":["maps.googleapis.com","maps.google.com"],"icon_url":"","type":"script","id":"script:4d60ab2c6d11d753267484006c23e54c","is_default":0,"created_at":1681390259},"ac2d5720-9418-468c-80a0-3874ee743c0f":{"title":"Google Optimize","exclusions":["a,s,y,n,c,h,i,d,e","googleoptimize.com\/optimize.js","async-hide"],"icon_url":"","type":"script","id":"script:031a0cece38c4739df67f910dcabf1bd","is_default":0,"created_at":1681390261},"122e6ebb-51fd-477f-97fb-559593f1a48b":{"title":"Google Recaptcha","exclusions":["recaptcha"],"icon_url":"","type":"script","id":"script:032cb16577cbf07bc7c02bac83bd936d","is_default":0,"created_at":1681390264},"219277ae-b2ac-4d42-913d-eaea40985295":{"title":"Google Tag Manager","exclusions":["\/gtag\/js","gtag\\(","\/gtm.js","async-hide"],"icon_url":"","type":"script","id":"script:1d3c65b2b03ef35e14df6b163ea3a1f6","is_default":0,"created_at":1681390266},"f632e3f4-20e6-471e-a78d-86afbea63586":{"title":"HubSpot","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","js.hsforms.net","hbspt.forms.create"],"icon_url":"","type":"script","id":"script:de4bd8ef4675ebb85a055955de76d0ee","is_default":0,"created_at":1679331623},"5d606add-ffb8-4a06-b295-5f722710fbfd":{"title":"Refari","exclusions":["widget.refari.co","refari"],"icon_url":"","type":"script","id":"script:a705e197b13b47e72a105c923e044358","is_default":0,"created_at":1683797056},"742ec14a-27a1-4789-b9c8-a9c3a3cf7042":{"title":"Reviews.io","exclusions":["\/carousel-inline-iframeless\/dist.js","carouselInlineWidget"],"icon_url":"","type":"script","id":"script:4df445c576f45889506ba175a4c39fdc","is_default":0,"created_at":1684389426},"05d3eb78-f574-49be-95e1-3f11714005d1":{"id":"script:ce7566d1d08cc094b74cf283cf9c56a5","title":"Stripe","type":"script","icon":"","exclusions":["js.stripe.com"],"is_default":0,"condition":"","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"b56bf06c-2f8c-4757-b536-a689fb0e75f9":{"title":"Typekit","exclusions":["typekit"],"icon_url":"","type":"script","id":"script:7815e38b93e3b500a632681bd594bd61","is_default":0,"created_at":1681390268},"49c38c0a-43b9-4237-88cb-57ddd519f0ad":{"title":"Venatus Media","exclusions":["\/ad-manager.min.js","__vm_add"],"icon_url":"","type":"script","id":"script:abe11528732aed9a19a97e73b242faa5","is_default":0,"created_at":1681390272},"2c1d0998-8ab5-478c-8eb9-9e375b46363e":{"title":"Wistia","exclusions":["fast.wistia.com"],"icon_url":"","type":"script","id":"script:9a0111f8c3186c1cb3113587c660c041","is_default":0,"created_at":1681390274},"0627fe24-7e9d-400f-b064-d98bec2ba85e":{"id":"script:dbd1875130c71eb4b2ef768ad18d820c","title":"Yandex Ads","type":"script","icon":"","exclusions":["yandex.ru","window.yaContextCb"],"is_default":0,"condition":"","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""}}} \ No newline at end of file +{"plugins":{"ffc21030-519a-4853-8cea-49f959e82731":{"id":"plugin:def67a2c1ddd6df2353e4772b6fd4e5b","title":"Additional Variation Images Gallery for WooCommerce","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/woo-variation-gallery\/assets\/js\/slick.min.js","\/woo-variation-gallery\/assets\/js\/frontend.min.js","\/wp-includes\/js\/underscore.min.js","variation_custom_fields"],"is_default":0,"condition":"woo-variation-gallery\/woo-variation-gallery.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"0e7dc253-acd0-4421-877f-a7101d848717":{"id":"plugin:4b82cc7379d46c6272f5d556bb264eec","title":"Advanced Ads","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/uploads\/(.*).js","advanced_ads_ready","advadsCfpQueue","adsbygoogle","adservice.google","\/advanced-ads(.*)","advads_items","advads_tracking_ads"],"is_default":0,"condition":"advanced-ads\/advanced-ads.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"a4d5c058-9120-47ee-977c-f30f83fb1a75":{"id":"plugin:a076fbb79772f497349a76ee74a7f708","title":"All-in-one Compliance for GDPR \/ CCPA Cookie Consent","type":"plugin","icon":"","exclusions":["iubenda_cs.js","var _iub"],"is_default":0,"condition":"iubenda-cookie-law-solution\/iubenda_cookie_solution.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"79a5082f-821a-4a4b-a0e3-caaf22cf3f75":{"id":"plugin:9bdceaa1bb89135730a3b2aa4db94c22","title":"AMO Team Showcase","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/amo-team-showcase\/public\/js\/wookmark.js","\/amo-team-showcase\/public\/js\/amo-team-showcase-public.js","\/wp-includes\/js\/imagesloaded.min.js","amoTeamVars"],"is_default":0,"condition":"amo-team-showcase\/amo-team-showcase.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"1d058cae-4460-4354-bab3-a96445650bd8":{"id":"plugin:b739df50f3f5bf400075f17dca652517","title":"AnyWhere Elementor Pro","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/anywhere-elementor-pro\/build\/index.js"],"is_default":0,"condition":"anywhere-elementor-pro\/anywhere-elementor-pro.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"8a1614c7-55b1-4b6d-88e5-6e8ddc630dae":{"id":"plugin:46741e77eaf4d13a0c80be6b86379758","title":"Astra - Pro Addon","type":"plugin","icon":"","exclusions":["\/astra-addon\/astra-addon-(.*).js"],"is_default":0,"condition":"astra-addon\/astra-addon.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"37d96403-f9ea-4481-b2f8-374d7c93e61a":{"id":"plugin:ccd87807930a1856717fd276c336db9a","title":"Beaver Builder","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/uploads\/bb-plugin\/","\/bb-plugin\/js\/yui3.min.js","\/wp-includes\/js\/imagesloaded.min.js","\/bb-plugin\/js\/fl-slideshow.min.js"],"is_default":0,"condition":"beaver-builder-lite-version\/fl-builder.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"f83dbf3b-783e-4ef9-9b18-8a469ca7102d":{"title":"Bloom","condition":"bloom\/bloom.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/bloom\/"],"icon_url":"","type":"plugin","id":"plugin:e57cdfbc09f4e0f7445c279d9f580bdd","is_default":0,"created_at":1685189070},"135aadd2-cd4a-44ae-8dcf-801f3f2316c0":{"id":"plugin:055ef01accbad6378e3d1a4965600964","title":"Booked","type":"plugin","icon":"","exclusions":["\/booked\/","\/js\/jquery\/ui\/datepicker.min.js"],"is_default":0,"condition":"booked\/booked.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"ddfee9b0-e5a9-4d3f-8c21-b999cbb61c33":{"id":"plugin:492f9b0d55f3bf07c68e915ea1dfb72a","title":"Bookly","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/bookly-responsive-appointment-booking-tool\/frontend\/","window.bookly"],"is_default":0,"condition":"bookly-responsive-appointment-booking-tool\/main.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"7a013fd6-0881-4dbe-8e93-33edefe7f717":{"id":"plugin:e1ec2daca513de476bd3dae79366e9ab","title":"Borlabs Cookie","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","borlabsCookieConfig","borlabs-cookie.min.js","borlabsCookieContentBlocker","BorlabsCookieBox"],"is_default":0,"condition":"borlabs-cookie\/borlabs-cookie.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"3999e680-4049-4494-945c-768cecc1a2c4":{"id":"plugin:43019d66af7b41e65bb602c01e10c6a0","title":"Brizy","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/brizy\/public\/editor-build\/(.*)-wp\/editor\/js\/group-(.*).js","\/brizy\/public\/editor-build\/(.*)-wp\/editor\/js\/preview.js","Brizy.emit"],"is_default":0,"condition":"brizy\/brizy.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"af4d9357-3def-42a1-86b7-419553444b4d":{"id":"plugin:5c317f9f244597d8f236ecb7d8e41752","title":"Carousel Upsells and Related Product for WooCommerce","type":"plugin","icon":"","exclusions":["\/carousel-upsells-and-related-product-for-woocommerce\/assets\/js\/glide.min.js","carusel_poduct_related"],"is_default":0,"condition":"carousel-upsells-and-related-product-for-woocommerce\/ffxf-woo-glide-related-and-upsells.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"1d866d90-5451-43ba-a4d1-75b64f9235e1":{"id":"plugin:0a3a29603ebac8fe0808f64f5c8edbb2","title":"clickskeks.at Cookiebanner","type":"plugin","icon":"","exclusions":["clickskeks"],"is_default":0,"condition":"clickskeks\/index.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"c09695cc-2387-4416-881a-c0b392188a26":{"title":"Complianz","condition":"complianz-gdpr\/complianz-gpdr.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","complianz"],"icon_url":"","type":"plugin","id":"plugin:a766f95208154cd69a3e15150a42f325","is_default":0,"created_at":1685188788},"7e551e3b-fbe4-4235-87a9-b476bc9e2020":{"id":"plugin:949b1b923d51d10a2fb67a2a39d166b3","title":"Content Egg","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/content-egg\/res\/js\/morrisjs\/morris.min.js","\/content-egg\/res\/js\/morrisjs\/raphael.min.js","Morris.Area"],"is_default":0,"condition":"content-egg\/content-egg.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"7fbca6c5-9239-4550-a755-6f041f867a57":{"title":"Cookie Notice & Compliance for GDPR \/ CCPA","condition":"cookie-notice\/cookie-notice.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/cookie-notice\/","var cnArgs"],"icon_url":"","type":"plugin","id":"plugin:213d0f883ae27aefb3a7937656bbd11e","is_default":0,"created_at":1681379736},"26722567-fe35-44b5-a5a7-fb0f3a38c3f2":{"id":"plugin:1d10ad30bbcf0fd4b26e9625a07abcfc","title":"Cookiebot CMP","type":"plugin","icon":"","exclusions":["consent.cookiebot.com"],"is_default":0,"condition":"cookiebot\/cookiebot.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"74110e36-89e5-440d-bec3-7133da3277c2":{"id":"plugin:edcf103293ceab711e999d419d038ca1","title":"Coupon Referral Program","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/coupon-referral-program\/","\/wp-includes\/js\/jquery\/ui\/draggable.min.js"],"is_default":0,"condition":"coupon-referral-program\/coupon-referral-program.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"ed63e02f-d6c5-481a-bcb9-aae15f72aa21":{"id":"plugin:c3e26264dcfd25802805b4fd1a2a449c","title":"Crisp - Live Chat and Chatbot","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","CRISP_RUNTIME_CONFIG","l.js"],"is_default":0,"condition":"crisp\/crisp.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"a8eb622b-279c-4f84-86e0-785e9497add7":{"id":"plugin:6e4bf949e12f0bebfefb48f6c316102a","title":"Custom Twitter Feeds pro","type":"plugin","icon":"","exclusions":["\/custom-twitter-feeds-pro\/js\/ctf-scripts.min.js"],"is_default":0,"condition":"custom-twitter-feeds-pro\/custom-twitter-feed.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"1624ef15-e25b-406d-bdf9-d4b78d7a59e7":{"id":"plugin:1f893b343e72ce55e6c9013fbda172fa","title":"Customer Reviews for WooCommerce Plugin","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js ","\/jquery-migrate(.min)?.js","\/customer-reviews-woocommerce\/js\/colcade.js"],"is_default":0,"condition":"customer-reviews-woocommerce\/ivole.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"c15fe3b3-0eaa-48f9-bf04-0e778b1f8c63":{"title":"Divi - Supreme","condition":"supreme-modules-for-divi\/supreme-modules-for-divi.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js",".dipi_preloader_wrapper_outer","\/Divi\/js\/scripts.min.js","\/Divi\/js\/custom.unified.js","\/js\/magnific-popup.js","var DIVI","\/supreme-modules-for-divi\/"],"icon_url":"","type":"plugin","id":"plugin:b5489ae4d8b949f536d6dd2e5b0c1a95","is_default":0,"created_at":1679738701},"dd31451b-989a-4517-b02a-e2c2e2023366":{"id":"plugin:5caed322df984bbfd3ecb506cf12b688","title":"Divi Den Pro","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/ddpro\/build\/freddie\/js\/freddieScriptPageTransition.js","\/ddpro\/build\/freddie\/js\/freddieScriptsHeaders.js","\/ddpro\/build\/freddie\/js\/freddieScriptsContents.js","\/ddpro\/build\/freddie\/js\/gsap\/gsap.min.js"],"is_default":0,"condition":"ddpro\/ddpro.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"2b006370-cc90-42c1-9656-a30fbfbc91c6":{"id":"plugin:402d9b241b04934dd30f32e7ba490e63","title":"Divi Mobile","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","divi-menu","dm_nav"],"is_default":0,"condition":"divi-mobile\/divi-mobile.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"666bbed9-7ce3-457c-ad6e-b5e056d05010":{"title":"Divi Overlays","condition":"divi-overlays\/divi-overlays.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js",".dipi_preloader_wrapper_outer","\/Divi\/js\/scripts.min.js","\/Divi\/js\/custom.unified.js","var DIVI","\/divi-overlays\/"],"icon_url":"","type":"plugin","id":"plugin:1c828c93d87298d2a27c76e13d0880ba","is_default":0,"created_at":1679738664},"42a404af-7792-44be-9baa-565dc3baf25d":{"title":"Divi Pixel","condition":"divi-pixel\/divi-pixel.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js",".dipi_preloader_wrapper_outer","\/divi-pixel\/dist\/public\/js\/hamburger.min.js"],"icon_url":"","type":"plugin","id":"plugin:dd2494945a487a6cc74d3ab1b2137ccb","is_default":0,"created_at":1686859169},"85f5c099-c481-4c38-bbb9-8b76113bdfd5":{"title":"Divi Supreme Pro","condition":"supreme-modules-pro-for-divi\/supreme-modules-pro-for-divi.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","elm.style.display","\/supreme-modules-pro-for-divi\/includes\/modules\/ImageCarousel\/frontend.min.js","\/supreme-modules-pro-for-divi\/public\/js\/swiper-bundle.min.js"],"icon_url":"","type":"plugin","id":"plugin:3d5f0ae7751702fd1bb490fcf991a334","is_default":0,"created_at":1695118162},"0b78d762-c7be-45de-9aae-0c5078ec0619":{"id":"plugin:b5fc0101608d0b0627268dc49e3e1f8f","title":"Divi Toolbox","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","jQuery('.preloader')","\/divi-toolbox\/assets\/js\/toolbox-scripts.js"],"is_default":0,"condition":"divi-toolbox\/divi-toolbox.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"8baba0f8-4449-47d8-a87d-9b6a116e7684":{"title":"Dynamic Pricing & Discounts Lite for WooCommerce","condition":"woo-dynamic-pricing-discounts-lite\/dynamic-pricing-discounts-lite-for-woocommerce.php","exclusions":["\/woo-dynamic-pricing-discounts-lite\/assets\/OwlCarousel\/dist\/owl.carousel.min.js","\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js"],"icon_url":"","type":"plugin","id":"plugin:185062bf08db42515488e1853d1f4917","is_default":0,"created_at":1677857247},"0fa129f2-5869-4db7-9bf0-69e4b3549ee2":{"id":"plugin:27478327aa44075a86176fad95640d76","title":"Dynamic Product Gallery for WooCommerce","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/woocommerce-dynamic-gallery\/","a3revWCDynamicGallery"],"is_default":0,"condition":"woocommerce-dynamic-gallery\/wc_dynamic_gallery_woocommerce.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"9958c6be-2f67-4791-95c3-a7ad96d599c0":{"title":"Dynamic Product Gallery Premium for WooCommerce","condition":"woocommerce-dynamic-gallery-pro\/wc_dynamic_gallery_woocommerce.php","exclusions":["\/jquery-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?$","\/jquery-migrate(.*)(.min|.slim|.slim.min)?.js(\\?(.*))?$","\/woocommerce-dynamic-gallery-pro\/assets\/js\/mygallery\/jquery.a3-dgallery.js","settings_defaults_","a3revWCDynamicGallery"],"icon_url":"","type":"plugin","id":"plugin:11dc02a76019f00422f4ac85f47f5135","is_default":0,"created_at":1683208937},"ce26ed21-1be5-481f-80d4-31edfac6d890":{"title":"Dynamic.ooo - Dynamic Content for Elementor","condition":"dynamic-content-for-elementor\/dynamic-content-for-elementor.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","\/wp-includes\/js\/imagesloaded.min.js","ElementorProFrontendConfig","elementorFrontendConfig","\/dynamic-content-for-elementor\/assets\/","\/wp-includes\/js\/dist\/hooks.min.js","\/wp-includes\/js\/dist\/i18n.min.js"],"icon_url":"","type":"plugin","id":"plugin:d2bd5b348abe016bdc722acce7755062","is_default":0,"created_at":1683355024},"6a3161a6-1a6f-457a-a9ee-54b376981927":{"id":"plugin:ee1dec033c6481a77fe88de5bef1a02d","title":"Easy Table of Contents","type":"plugin","icon":"","exclusions":["\/easy-table-of-contents\/assets\/js\/front.min.js"],"is_default":0,"condition":"easy-table-of-contents\/easy-table-of-contents.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"25a534a0-2c1f-4cf4-9e19-7941bc032b3a":{"id":"plugin:41c8f5f0ab00cb39654aedd783d194e0","title":"Ecwid Ecommerce Shopping Cart","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js ","\/jquery-migrate(.min)?.js ","app.ecwid.com\/script.js ","\/ecwid-shopping-cart\/js\/frontend.js ","\/ecwid-shopping-cart\/js\/static-page.js ","ecwidParamswindow.ec ","jQuery.mobile ","xSearch ","xCategoriesV2 ","xProductBrowser ","Ecwid.init"],"is_default":0,"condition":"ecwid-shopping-cart\/ecwid-shopping-cart.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"40464325-5bae-4a20-bc97-553499e09a73":{"title":"Elementor","condition":"elementor\/elementor.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","\/wp-includes\/js\/imagesloaded.min.js","ElementorProFrontendConfig","elementorFrontendConfig","\/happy-elementor-addons-pro\/","\/header-footer-elementor\/inc\/js\/frontend.js","\/wp-includes\/js\/jquery\/ui\/core.min.js","\/wp-includes\/js\/dist\/api-fetch.min.js","\/wp-includes\/js\/dist\/hooks.min.js","\/wp-includes\/js\/dist\/i18n.min.js"],"icon_url":"","type":"plugin","id":"plugin:1d15783218a3137bec4ee8df5353e218","is_default":0,"created_at":1694425872},"ac86b64c-c80a-4053-894d-6caa8b4fdce8":{"title":"Elementor Loop Carrousel","condition":"elementor\/elementor.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-includes\/js\/jquery\/ui\/core.min.js","\/wp-includes\/js\/dist\/api-fetch.min.js","\/wp-includes\/js\/dist\/hooks.min.js","\/wp-includes\/js\/dist\/i18n.min.js"],"icon_url":"","type":"plugin","id":"plugin:0eb8d0bbd1c7ca05ac133ea634f676b7","is_default":0,"created_at":1694442056},"a8fc9fd1-f6d3-41eb-abe9-ef176de6d7e2":{"title":"Elementor - Lazy Load Background Images","condition":"elementor\/elementor.php","exclusions":["lazyloadRunObserver"],"icon_url":"","type":"plugin","id":"plugin:bf248cb2876558452a566c5dd89262b8","is_default":0,"created_at":1694453032},"1948aff5-7850-4979-91fa-0ce181484508":{"id":"plugin:de658ae6c2d05a5a4a947efecf5e0c16","title":"Elementor Custom Skin","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","ElementorProFrontendConfig","elementorFrontendConfig","\/ele-custom-skin(.*)\/assets\/js\/"],"is_default":0,"condition":"ele-custom-skin\/ele-custom-skin.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"25708299-c596-4416-8ad8-740aee0f2752":{"title":"Elementor Pro","condition":"elementor-pro\/elementor-pro.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","\/wp-includes\/js\/imagesloaded.min.js","ElementorProFrontendConfig","elementorFrontendConfig","\/happy-elementor-addons-pro\/","\/header-footer-elementor\/inc\/js\/frontend.js"],"icon_url":"","type":"plugin","id":"plugin:030ad23e3851ed7adfa7b9b6c13cf5a6","is_default":0,"created_at":1679490021},"f34dd874-4b34-41e6-a31c-ece3c1efbffc":{"id":"plugin:305581ad4294a30eeb1247982f626005","title":"Elementor Pro - SmartMenus","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor-pro\/assets\/lib\/smartmenus\/jquery.smartmenus.min.js","\/elementor-pro\/assets\/js\/preloaded-elements-handlers.min.js"],"is_default":0,"condition":"elementor-pro\/elementor-pro.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"111cc8b2-0be9-438b-9aa3-7f1e301a5697":{"id":"plugin:5ae9f5d99224d5ebc7d0c0bbf5b99787","title":"Elementor Pro - User Cache","type":"plugin","icon":"","exclusions":["\/wp-includes\/js\/underscore.min.js","\/wp-includes\/js\/jquery\/ui\/core.min.js","\/wp-includes\/js\/backbone.min.js","elementorAdminBarConfig","elementorCommonConfig","elementorWebCliConfig","elementorDevToolsConfig"],"is_default":0,"condition":"elementor-pro\/elementor-pro.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"c1713bf8-e0c3-4cb5-8b3f-841b06aa87ed":{"title":"ElementsKit Lite - Megamenu","condition":"elementskit-lite\/elementskit-lite.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","ElementorProFrontendConfig","elementorFrontendConfig","\/elementskit(.*)\/"],"icon_url":"","type":"plugin","id":"plugin:b91fed2fc4478dbb7067742c1ee4691b","is_default":0,"created_at":1683270249},"706ff35d-8e33-4b04-a986-346faff704e9":{"id":"plugin:417192424139d89fb2a5b1ee1f2b9613","title":"Essential Addons for Elementor","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","ElementorProFrontendConfig","elementorFrontendConfig","\/essential-addons(-for)?-elementor(-lite)?\/.*(.min)?.js"],"is_default":0,"condition":"essential-addons-for-elementor-lite\/essential_adons_elementor.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"b38556dc-2bc4-430f-9c55-7191cf7773db":{"id":"plugin:057757d0593ad9d2dc58124f0077a5df","title":"Essential Addons for Elementor Pro","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","ElementorProFrontendConfig","elementorFrontendConfig","\/essential-addons(-for)?-elementor(-lite)?\/.*(.min)?.js"],"is_default":0,"condition":"essential-addons-elementor\/essential_adons_elementor.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"719b988f-0d60-40c2-ba46-88f943119cb1":{"id":"plugin:c8e6c490f6438f566ade600c33531a85","title":"Essential Grid","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/essential-grid\/","lightboxOptions"],"is_default":0,"condition":"essential-grid\/essential-grid.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"47d3d2ab-160d-4b07-ac25-8250b9e6a951":{"id":"plugin:dafd19fa48a1fef890dc4348052fcb75","title":"EventON Lite","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/eventon-lite\/assets\/js\/(.*)"],"is_default":0,"condition":"eventon-lite\/eventon.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"219968d7-cf1f-4ee0-917a-db35dcc93a3e":{"id":"plugin:49ff465628fc3cb6d7f23ff81d9b8339","title":"FacetWP","type":"plugin","icon":"","exclusions":["\/facetwp\/assets\/js\/dist\/front.min.js","window.FWP_"],"is_default":0,"condition":"facetwp\/index.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"acce5701-5917-48d5-83ab-3e626aa420c5":{"id":"plugin:78a1c88a56fa957c802074b6418c6fac","title":"FacetWP - Flyout menu","type":"plugin","icon":"","exclusions":["\/facetwp-flyout\/assets\/js\/front.js"],"is_default":0,"condition":"facetwp-flyout\/facetwp-flyout.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"f2a5b95f-1a22-46d2-8b72-42a53e46ae3f":{"id":"plugin:5d7555892a3a9968fde3fa3a335fc3d8","title":"FiboSearch - Ajax Search for WooCommerce","type":"plugin","icon":"","exclusions":["\/wp-includes\/js\/jquery\/jquery.js","\/wp-includes\/js\/jquery\/jquery-migrate.js","\/ajax-search-for-woocommerce-premium\/assets\/js\/search.js"],"is_default":0,"condition":"ajax-search-for-woocommerce\/ajax-search-for-woocommerce.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"7d1404e9-be76-449c-87aa-919557abe82d":{"id":"plugin:ad46179e8b0584abaf52056b846da227","title":"FlexBlock","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/flo-flex-builder\/dist\/flex-public.min.js","flexDebug"],"is_default":0,"condition":"flo-flex-builder\/flo-flex-builder.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"b9c6a2dc-b226-4e2c-b85e-29ee55b8f751":{"id":"plugin:567a2b15db30ef6bd4904e4317139aac","title":"Fluent Forms","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/fluentform\/public\/js\/(.*).js","\/fluentformpro\/public\/js\/(.*).js"],"is_default":0,"condition":"fluentform\/fluentform.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"10874f8a-2855-4e80-bc46-e484589b76a8":{"id":"plugin:e78c153103f698b2b34892332d6b3b62","title":"Flying Images","type":"plugin","icon":"","exclusions":["flyingImages"],"is_default":0,"condition":"nazy-load\/flying-images.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"53958499-dacd-41d6-93bc-1534fe7d9eda":{"id":"plugin:5a0e40a6c5783856893b803189de1404","title":"FooGallery Premium","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/plugins\/foobox-image-lightbox\/free\/js\/foobox.free.min.js","\/plugins\/foogallery-premium\/pro\/extensions\/default-templates\/shared\/js\/foogallery.min.js"],"is_default":0,"condition":"foogallery-premium\/foogallery.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"7870d704-2024-4622-838c-fad37d5c6753":{"id":"plugin:ebb5efb57b19ae60e734e456ca2df3f8","title":"Formidable Forms","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","frmSigs","\/formidable-signature\/js\/frm.signature.min.js"],"is_default":0,"condition":"formidable\/formidable.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"3f24f9b3-e59e-400f-a784-999f93f60fab":{"id":"plugin:0b08523445b8869a67ca40e777704692","title":"Forminator","type":"plugin","icon":"","exclusions":["\/wp-includes\/js\/jquery\/jquery.min.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","forminatorFront","\/forminator\/build\/front\/front.multi.min.js","\/forminator\/assets\/js\/library\/jquery.validate.min.js","\/forminator\/assets\/forminator-ui\/js\/forminator-form.min.js","\/forminator\/assets\/forminator-ui\/js\/select2.full.min.js","\/wp-includes\/js\/jquery\/ui\/datepicker.min.js","\/wp-includes\/js\/dist\/vendor\/moment.min.js"],"is_default":0,"condition":"forminator\/forminator.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"3a600ded-3454-48fb-9811-46afa2ab3c05":{"id":"plugin:5759bf0d47ac3457485314b381a9b528","title":"GDPR Cookie Compliance","type":"plugin","icon":"","exclusions":["\/wp-includes\/js\/jquery\/jquery.min.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/gdpr-cookie-compliance\/dist\/scripts\/main.js"],"is_default":0,"condition":"gdpr-cookie-compliance\/moove-gdpr.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"e21aaa5e-7354-471d-ab86-85f99f48830c":{"id":"plugin:ffb40036ab0583218561de7c28c6bd9b","title":"GDPR Cookie Consent","type":"plugin","icon":"","exclusions":["\/wp-includes\/js\/jquery\/jquery.min.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/public\/js\/cookie-law-info-public.js","Cli_Data"],"is_default":0,"condition":"webtoffee-gdpr-cookie-consent\/cookie-law-info.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"c11ca4ea-1a23-49ee-9a6b-1e549de50ea2":{"id":"plugin:3877953c5ec1e66db92ad844ae8ebafc","title":"Getwid - Gutenberg Blocks","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/wp-includes\/js\/jquery\/ui\/tabs.min.js","\/wp-includes\/js\/jquery\/ui\/core.min.js"],"is_default":0,"condition":"getwid\/getwid.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"3773bb33-b168-4f68-9963-512da24ac4da":{"title":"GoodLayers Core","condition":"goodlayers-core\/goodlayers-core.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js ","\/jquery-migrate(.min)?.js ","\/goodlayers-core\/plugins\/script.js ","\/goodlayers-core\/include\/js\/page-builder.js"],"icon_url":"","type":"plugin","id":"plugin:5f124509a56ca2e0644246919ec70434","is_default":0,"created_at":1677854322},"2adabe9b-6e03-4a67-959f-492813d40f69":{"title":"Google Tag Manager for WooCommerce PRO","condition":"gtm-ecommerce-woo-pro\/gtm-ecommerce-woo-pro.php","exclusions":["\/gtm-ecommerce-woo-pro\/assets\/gtm-ecommerce-woo-pro.js"],"icon_url":"","type":"plugin","id":"plugin:e54fd4313007b6fedf8ab4df0e05277a","is_default":0,"created_at":1691218549},"7bf261ac-89d4-492f-8a3d-1c5809b9579a":{"title":"Gravity Forms","condition":"gravityforms\/gravityforms.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/gravityforms\/","gform","recaptcha","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/wp-includes\/js\/plupload\/plupload.min.js","\/wp-includes\/js\/plupload\/moxie.min.js"],"icon_url":"","type":"plugin","id":"plugin:7a1c1606d094f6bff83c0ee155908367","is_default":0,"created_at":1694457903},"12340193-5c35-4b0d-b0bc-bea690cf1cae":{"id":"plugin:2f3112dd98c39aeb6bde618c9026a29f","title":"Green Forms","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","leform.min.js","leform_customjs_handlers","leform_ajax_url"],"is_default":0,"condition":"green-forms\/green-forms.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"4d20b427-47cf-4cdf-91c7-ff53602d3b2a":{"id":"plugin:0eb769dddc58f998e913345841b1d0b3","title":"GTM4WP","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","dataLayer"],"is_default":0,"condition":"duracelltomi-google-tag-manager\/duracelltomi-google-tag-manager-for-wordpress.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"a2b3c237-728c-49d6-882a-e3885444e9b4":{"id":"plugin:3b085ccda851ccf129d9506462f0cd65","title":"GTranslate","type":"plugin","icon":"","exclusions":["translate.google.com","googleTranslateElementInit"],"is_default":0,"condition":"gtranslate\/gtranslate.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"40cd9336-e73f-4a61-a7f6-27ec1ca6892c":{"id":"plugin:e1f17c1eac230219e6fec3ac07406a0d","title":"HBook","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/hbook\/","hb_booking_form_data","hb_max_date"],"is_default":0,"condition":"hbook\/hbook.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"192224c7-df72-4e3d-8f13-3206ac5b2e90":{"title":"Helper - OpenAI Chatbot for WordPress","condition":"\/helper\/index.php","exclusions":["\/wp-includes\/js\/jquery\/jquery.min.js","\/helper\/js\/helper.min.js","mdpHelper"],"icon_url":"","type":"plugin","id":"plugin:07311d992a8a9d6af91e4766d2cb9ac9","is_default":0,"created_at":1691599768},"99cfbb2e-5678-42c2-928f-5cb09d7e43da":{"id":"plugin:269c5766fba124a838ac012a4b5a1a13","title":"HUSKY - Products Filter for WooCommerce","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/woocommerce-products-filter\/(.*)","woof"],"is_default":0,"condition":"woocommerce-products-filter\/index.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"3a964eac-4aeb-49a7-9fd6-4c31b2645dee":{"id":"plugin:d457acfec0f86aac6733f1446f4fc94f","title":"Instagram Feed Pro","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/instagram-feed-pro\/js\/sbi-scripts.min.js","sb_instagram_js_options"],"is_default":0,"condition":"instagram-feed-pro\/instagram-feed.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"8f9f4788-1b8d-468b-b291-1fcbd48618b9":{"id":"plugin:513b0c0ec8e12130af9b4bbbb17d7275","title":"Interactive Geo Maps","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/interactive-geo-maps-premium\/assets\/public\/map-service\/app.min.js","\/interactive-geo-maps\/assets\/public\/map-service\/app.js","iMapsData","cdn.amcharts.com\/lib\/"],"is_default":0,"condition":"interactive-geo-maps\/interactive-geo-maps.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"cf650ca3-afa0-4a13-9e4f-f7cca19abac6":{"title":"Ivory Search","condition":"add-search-to-menu\/add-search-to-menu.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/add-search-to-menu\/public\/js\/ivory-search.min.js"],"icon_url":"","type":"plugin","id":"plugin:7430e9d2c985ae0a3339a7b7e1acc318","is_default":0,"created_at":1677852711},"17a5dd54-1f5e-4d57-a56d-a8a970651954":{"id":"plugin:1c8a1e1ba89a601f88654f094139b469","title":"JetBlocks","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/jet-blocks\/assets\/js\/jet-blocks.min.js"],"is_default":0,"condition":"jet-blocks\/jet-blocks.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"b6f78c90-9823-459a-8dc1-1257e5f0d4e3":{"id":"plugin:dac9ec782180f33d0fcc7c4e0e569b9d","title":"JetBlog","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor-pro\/","\/elementor\/","\/jet-blog\/","ElementorProFrontendConfig","elementorFrontendConfig","hasJetBlogPlaylist"],"is_default":0,"condition":"jet-blog\/jet-blog.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"e17173d8-6ef8-4e27-ba0f-379c9aea7eda":{"id":"plugin:0fe8895d1da5247b73a5d0b482df4ac4","title":"JetElements","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","ElementorProFrontendConfig","elementorFrontendConfig","\/jet-elements\/","hasJetBlogPlaylist","jetElements","\/wp-includes\/js\/jquery\/ui\/"],"is_default":0,"condition":"jet-elements\/jet-elements.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"cfd77501-9c9e-4f11-b994-0178a592fc08":{"title":"JetEngine","condition":"jet-engine\/jet-engine.php","exclusions":["\/jet-engine\/"],"icon_url":"","type":"plugin","id":"plugin:bc998e71546860c8c7f70c45a6c18972","is_default":0,"created_at":1686208296},"36fed829-a2d9-41b5-94f6-2c3b9f07a94e":{"id":"plugin:433a3173f2d06f7d02c7b91c06ed215d","title":"JetMenu","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor-pro\/","\/elementor\/","\/jet-blog\/assets\/js\/lib\/slick\/slick.min.js","\/jet-elements\/","\/jet-menu\/","elementorFrontendConfig","ElementorProFrontendConfig","hasJetBlogPlaylist","JetEngineSettings","jetMenuPublicSettings","\/jet-reviews\/assets\/js\/lib\/vue.min.js"],"is_default":0,"condition":"jet-menu\/jet-menu.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"580cfed7-f034-4e39-bc7a-cdd01923ce87":{"id":"plugin:51714cfdb43f231a1c93e7cffb1007ab","title":"JetPopup","type":"plugin","icon":"","exclusions":["\/jet-popup\/assets\/js\/lib\/anime-js\/anime.min.js","\/jet-popup\/assets\/js\/jet-popup-frontend.js","\/jet-woo-builder\/","var jetPopupData"],"is_default":0,"condition":"jet-popup\/jet-popup.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"d9cd2730-12e2-42d7-a082-6f0efcd466cc":{"id":"plugin:df3bc4b6a8a9f28a5ba24cb7496bbc72","title":"JetProductGallery","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/jet-woo-product-gallery\/assets\/lib\/swiper\/swiper.min.js","\/jet-woo-product-gallery\/assets\/js\/jet-woo-product-gallery.min.js"],"is_default":0,"condition":"jet-woo-product-gallery\/jet-woo-product-gallery.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"544aa37b-4d52-4182-99e8-abe23585da14":{"id":"plugin:5921fc95965ac7fccb7296957bd9abff","title":"JetReviews","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/jet-reviews\/assets\/js\/jet-reviews-frontend.js","\/jet-reviews\/assets\/js\/lib\/vue.min.js","jetReviewsWidget"],"is_default":0,"condition":"jet-reviews\/jet-reviews.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"a8460089-34b4-4f8f-8694-5d92fa48aa82":{"title":"JetSmartFilters","condition":"jet-smart-filters\/jet-smart-filters.php","exclusions":["jetOffcanvasInitialized"],"icon_url":"","type":"plugin","id":"plugin:0cd63a514de1f1acb88e2bde65c4bc8d","is_default":0,"created_at":1694447256},"fe3c4915-6f8b-49b7-aa9c-c97b264d9f12":{"id":"plugin:a346b60514ef52afeffc6e2ef2793da3","title":"JetSticky","type":"plugin","icon":"","exclusions":["\/jetsticky-for-elementor\/"],"is_default":0,"condition":"jetsticky-for-elementor\/jetsticky-for-elementor.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"853479dc-fff5-47cf-9a60-bf9b00f71fc4":{"title":"JetTabs for Elementor","condition":"jet-tabs\/jet-tabs.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/elementor\/","\/elementor-pro\/","\/wp-includes\/js\/imagesloaded.min.js","ElementorProFrontendConfig","elementorFrontendConfig","\/wp-content\/plugins\/jet-tabs\/assets\/js\/jet-tabs-frontend.min.js"],"icon_url":"","type":"plugin","id":"plugin:d887a6ffea25d759e8aecdb6b78917f7","is_default":0,"created_at":1697130971},"b7f89562-230c-4f63-8360-7aad6df31e02":{"id":"plugin:829272546b040d5aaeeeaf976b6cd4ec","title":"JetTricks","type":"plugin","icon":"","exclusions":["\/jet-tricks\/"],"is_default":0,"condition":"jet-tricks\/jet-tricks.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"90451e2a-553a-4496-9fa4-cffedbe69d43":{"id":"plugin:f44f3dbd09149f57db370e4132b057db","title":"JetWoo Widgets For Elementor","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","ElementorProFrontendConfig","elementorFrontendConfig","\/jetwoo-widgets-for-elementor\/assets\/js\/jet-woo-widgets.js","\/jet-woo-builder\/assets\/js\/jet-woo-builder.min.js","\/jet-woo-builder\/assets\/js\/frontend.min.js","\/wp-includes\/js\/imagesloaded.min.js"],"is_default":0,"condition":"jet-woo-builder\/jet-woo-builder.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"944718c2-48c6-4f53-aaa2-460d07e033cc":{"id":"plugin:ed318a971f8a047bed5b02ad546a9c18","title":"JetWooBuilder","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-includes\/js\/dist\/hooks.min.js","\/wp-includes\/js\/dist\/i18n.min.js","\/elementor-pro\/","\/elementor\/","elementorFrontendConfig","ElementorProFrontendConfig","JetEngineSettings","\/jet-woo-builder\/","\/jet-woo-builder-custom-quantity-selectors-main\/assets\/js\/main.js"],"is_default":0,"condition":"jet-woo-builder\/jet-woo-builder.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"f5b62f59-1dae-4cdf-ac3f-f5e846fc9918":{"id":"plugin:9562e253cd4ac2b1e1f70e32cb4e32dc","title":"Layer Slider","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/LayerSlider\/assets\/static\/layerslider\/js\/layerslider.utils.js","\/LayerSlider\/assets\/static\/layerslider\/js\/layerslider.kreaturamedia.jquery.js","\/LayerSlider\/assets\/static\/layerslider\/js\/layerslider.transitions.js","initLayerSlider"],"is_default":0,"condition":"LayerSlider\/layerslider.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"e2be718d-83a2-4fa0-bc98-f0df52be3dc1":{"id":"plugin:1425e2735306796fe1539d9184a77e10","title":"LoftLoader Pro","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","loftloader.min.js"],"is_default":0,"condition":"loftloader-pro\/loftloader-pro.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"cfa18552-656e-453c-9e14-c07522dc6598":{"id":"plugin:0bf67b8ba84771e1a367fe24590ef09c","title":"MailUp for WordPress","type":"plugin","icon":"","exclusions":["\/mailup-email-and-newsletter-subscription-form\/public\/js\/mailup-public.js","mailup-js-extra"],"is_default":0,"condition":"mailup-email-and-newsletter-subscription-form\/mailup.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"c5330c66-ba7b-45b1-87e4-ce590ab005dd":{"id":"plugin:10d0de28911c5f66463b9c8783f8148a","title":"Maintenance","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/maintenance\/"],"is_default":0,"condition":"maintenance\/maintenance.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"267aef71-afa0-4848-b6f8-3e1ca15c3a23":{"id":"plugin:9460789bdfe77425c895f130991a4cb4","title":"Maps Marker Pro","type":"plugin","icon":"","exclusions":["\/maps-marker-pro\/js\/mapsmarkerpro.js","var mapsMarkerPro"],"is_default":0,"condition":"maps-marker-pro\/maps-marker-pro.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"b5a88b63-e906-49b3-8134-420139915ea6":{"title":"Master Popups","condition":"master-popups\/master-popups.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/plugins\/master-popups\/assets\/public\/js\/master-popups-libs.min.js"],"icon_url":"","type":"plugin","id":"plugin:8fd7bd2c8b0a33e62798573abd12be63","is_default":0,"created_at":1681305305},"4be41549-bf4d-4c49-8346-0f8a3b88fdba":{"id":"plugin:de888634cc4bd51576eed319d5a528fd","title":"Master Slider","type":"plugin","icon":"","exclusions":["masterslider"],"is_default":0,"condition":"master-slider\/master-slider.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"087bee18-7cd1-4c10-8acc-19e1b7c4f4cd":{"id":"plugin:b71309a89bf3c8b558b6fca5d6531919","title":"Max Mega Menu","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-includes\/js\/hoverIntent.min.js","\/megamenu\/js\/maxmegamenu.js","var megamenu"],"is_default":0,"condition":"megamenu\/megamenu.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"cf22f0b9-01f4-409e-8a93-ad6743095abd":{"id":"plugin:94a7bae84ef2816494be4af66c577bfc","title":"Meta Slider","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/ml-slider\/","var metaslider"],"is_default":0,"condition":"ml-slider\/ml-slider.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"bb2cbc0d-20da-415e-8218-c17f1db53579":{"title":"Monarch","condition":"monarch\/monarch.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","dt-place-monarch-icons"],"icon_url":"","type":"plugin","id":"plugin:b7335d6d6d5c5134ea10ac2d9b04226c","is_default":0,"created_at":1677853476},"a98d6a80-4610-4ede-bd33-c3e15bed0a95":{"id":"plugin:4f8651262425ef6d7c223c68a2ec2063","title":"Monster Insights","type":"plugin","icon":"","exclusions":["__gtagTracker","monsterinsights_frontend","\/google-analytics-for-wordpress\/assets\/js\/frontend-gtag.min.js"],"is_default":0,"condition":"google-analytics-for-wordpress\/googleanalytics.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"26e1a36e-7a03-449e-8ecc-e42c41ca291c":{"id":"plugin:f8fc66b302dec2327bdec0434a3b275b","title":"Motion.page","type":"plugin","icon":"","exclusions":["\/motionpage\/core\/includes\/assets\/js\/(.*)","\/motionpage\/core\/includes\/assets\/js\/gsap\/(.*)","\/motionpage\/assets\/js\/(.*)","\/motionpage\/assets\/js\/gsap\/(.*)"],"is_default":0,"condition":"motionpage\/motionpage.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"459fd663-7f80-45fd-8308-d3484981e161":{"title":"Ninja Forms","condition":"ninja-forms\/ninja-forms.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-includes\/js\/underscore.min.js","\/wp-includes\/js\/backbone.min.js","\/ninja-forms\/assets\/js\/min\/front-end-deps.js","\/ninja-forms\/assets\/js\/min\/front-end.js","nf-"],"icon_url":"","type":"plugin","id":"plugin:1d3ae9c1a96d5062616968b81eef319d","is_default":0,"created_at":1681377675},"c97440dd-7592-40e7-8c98-dac20d39808f":{"id":"plugin:723a588dcd49285ea9f7404e2379b47f","title":"Ninja Tables","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/ninja-tables(.*)\/assets\/","\/ninja-tables(.*)\/public\/","\/wp-includes\/js\/dist\/vendor\/moment.min.js","ninja_table_instance_","ninja_filter_","ninja_table_ready_init_table_id"],"is_default":0,"condition":"ninja-tables\/ninja-tables.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"ebc01f06-8c35-47fa-9c63-8959c5cbd915":{"id":"plugin:f41a52ab1dd50a81cd3a5e341af0007c","title":"NotificationX","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/notificationx\/assets\/public\/js\/(.*).js","notificationXArr"],"is_default":0,"condition":"notificationx\/notificationx.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"3aaf4a1b-591a-48b7-8d60-e6d65c0f94c9":{"id":"plugin:be8fc72a8b8e8eb5958be13737cff47c","title":"Ocean Elementor Widgets","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","ElementorProFrontendConfig","elementorFrontendConfig","\/ocean-elementor-widgets\/"],"is_default":0,"condition":"ocean-elementor-widgets\/ocean-elementor-widgets.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"f053a7d3-62b0-4312-b0ca-6ff63380eb0b":{"id":"plugin:1a14afe852fefe7b22ccad3893672a29","title":"One Click Accessibility","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/pojo-accessibility\/assets\/js\/app.min.js"],"is_default":0,"condition":"pojo-accessibility\/pojo-accessibility.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"61e11800-48a9-4354-8a4c-ac9a2b4b033a":{"id":"plugin:b9ed0fe6f2cdbd305691a6b857f4b3dc","title":"OoohBoi Steroids for Elementor","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","ElementorProFrontendConfig","elementorFrontendConfig","\/ooohboi-steroids-for-elementor\/"],"is_default":0,"condition":"ooohboi-steroids-for-elementor\/ooohboi-steroids.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"560b78a2-f051-490b-9dc6-a602dece0d81":{"id":"plugin:f1ff18a3e04c4e0995fca9cabffe57a7","title":"Optimole","type":"plugin","icon":"","exclusions":["optimoleData"],"is_default":0,"condition":"optimole-wp\/optimole-wp.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"b0fda458-4bf2-41e9-a159-60d4bb6102a6":{"id":"plugin:48ec18bd3f59772d98f85dddab75e305","title":"OSM - OpenStreetMap","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/osm\/js\/OL\/","\/osm\/js\/osm-v3-plugin-lib.js","vectorM"],"is_default":0,"condition":"osm\/osm.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"3743ed67-e0d1-4243-bb1f-ee48a445dd10":{"id":"plugin:9eacf0b76484af0259cd788f4923f20c","title":"OxyExtras","type":"plugin","icon":"","exclusions":["vime","vime.esm.js"],"is_default":0,"condition":"oxyextras\/plugin.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"52a21e27-af5b-4476-8d6d-54c323fd1443":{"id":"plugin:e852555c4b4789d78a96d76f503b3262","title":"Oxygen Builder","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/component-framework\/vendor\/aos\/aos.js","AOS.init","oxygen_init_pro_menu","oxy-pro-menu-show-dropdown","oxy-shape-divider","oxygenVSBInitToggleJs"],"is_default":0,"condition":"oxygen\/functions.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"ebd282b9-e175-4b83-90a2-fe12389ccd11":{"id":"plugin:6f9419e58ec86c94e7698aaaaf9dc715","title":"PageLoader by Bonfire","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/pageloader-by-bonfire\/pageloader.js","bonfire-pageloader-overlay"],"is_default":0,"condition":"pageloader-by-bonfire\/pageloader-by-bonfire.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"0baf6353-aa70-41a9-a3bc-d89870a5839b":{"id":"plugin:3a4c4518eb0f60108ab4934fab27d335","title":"PDF Embedder","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/pdf-embedder\/js\/(.*).js"],"is_default":0,"condition":"pdf-embedder\/pdf_embedder.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"cba51ec1-87cc-44eb-b12b-d652e3446507":{"id":"plugin:4f90aca5957cccbf623e3bbc31afa204","title":"Perfect Brands for WooCommerce","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/perfect-woocommerce-brands\/assets\/lib\/slick\/slick.min.js","\/perfect-woocommerce-brands\/assets\/js\/functions-frontend.min.js"],"is_default":0,"condition":"perfect-woocommerce-brands\/perfect-woocommerce-brands.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"808e7a4e-025c-4fae-bf82-de3716e5eb0d":{"id":"plugin:84fe214646388d7c021dda25003ac165","title":"Photonic","type":"plugin","icon":"","exclusions":["\/photonic\/include\/js\/front-end\/module\/photonic-baguettebox.min.js"],"is_default":0,"condition":"photonic\/photonic.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"936aff7d-a8ac-4473-a7b5-4b1611b6c557":{"id":"plugin:6838be282f853f71be282783cb1c162b","title":"Pixel Caffein","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/pixel-caffeine\/build\/frontend.js","aepc_pixel"],"is_default":0,"condition":"pixel-caffeine\/pixel-caffeine.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"ab3a4ef5-2732-4b46-a7c3-17b4e9405cd1":{"id":"plugin:afe0eb7c64d4556a7111c56dd8c4d307","title":"Pixel Manager for WooCommerce","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/woocommerce-pixel-manager-pro\/js\/public\/","wpm"],"is_default":0,"condition":"woocommerce-pixel-manager-pro\/woocommerce-pixel-manager.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"2774f964-50b2-425e-8a30-0a02f421b7e4":{"id":"plugin:38d4b2986868f543639cd1ebc3e510aa","title":"Popup Builder","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/popup-builder\/public\/js\/(.*).js","\/popupbuilder-exit-intent\/public\/javascript\/ExitIntent.js","var sgpbPublicUrl","SGPB_POPUP_PARAMS"],"is_default":0,"condition":"popup-builder\/popup-builder.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"82dbb1e5-31f9-43d7-b522-52819aa49ba5":{"id":"plugin:786717922362642f34a7ff58e919bd95","title":"Popup Maker","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-includes\/js\/jquery\/ui\/core.min.js","\/pum\/pum-site-scripts.js","pum","\/plugins\/popup-maker\/assets\/js\/site.min.js"],"is_default":0,"condition":"popup-maker\/popup-maker.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"48e08305-1f1c-4ef4-9f13-24af1b155abc":{"id":"plugin:17831cbb64e469c7f66224c8c63d0a58","title":"PowerPack Addons for Elementor","type":"plugin","icon":"","exclusions":["\/powerpack-lite-for-elementor\/assets\/js\/min\/frontend.min.js"],"is_default":0,"condition":"powerpack-lite-for-elementor\/powerpack-lite-elementor.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"e037ae2f-e36b-4f1a-ada8-eb8fde6746f2":{"id":"plugin:80e1283ea1afead3ca904fad792643c5","title":"Preloader Plus","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/preloader-plus\/(.*)"],"is_default":0,"condition":"preloader-plus\/preloader-plus.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"90fed478-e89a-455c-8371-836bee58fb81":{"title":"Premium Addons for Elementor","condition":"premium-addons-for-elementor\/premium-addons-for-elementor.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/premium-addons-for-elementor\/assets\/frontend\/min-js\/premium-addons.min.js","\/premium-addons-for-elementor\/assets\/frontend\/min-js\/isotope.min.js","\/premium-addons-elementor\/pa-frontend-(.*).min.js","\/premium-addons-for-elementor\/assets\/frontend\/min-js\/slick.min.js","\/premium-addons-pro\/assets\/frontend\/min-js\/tooltipster.min.js","window.scopes_array","lottie.min.js","\/premium-addons-for-elementor\/assets\/frontend\/min-js\/premium-nav-menu.min.js"],"icon_url":"","type":"plugin","id":"plugin:debbfbbcbdf9ffb465bbc40008d99f02","is_default":0,"created_at":1693315214},"7e43c261-77be-48fc-b25a-8953a654ae85":{"id":"plugin:100a0382fcf3d1b6b22da928bce46ea8","title":"Presto Player","type":"plugin","icon":"","exclusions":["\/wp-includes\/js\/dist\/vendor\/regenerator-runtime.min.js","\/presto-player\/dist\/components\/web-components\/web-components.esm.js","\/presto-player\/src\/player\/player-static.js","var player","\/wp-includes\/js\/dist\/api-fetch.min.js","\/wp-includes\/js\/dist\/hooks.min.js","\/wp-includes\/js\/dist\/i18n.min.js"],"is_default":0,"condition":"presto-player\/presto-player.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"3d6f509f-d040-4279-9a2f-a4e6eae1e9df":{"id":"plugin:c0fce700121492b566517e68301db382","title":"Price Based on Country for WooCommerce Pro","type":"plugin","icon":"","exclusions":["\/woocommerce-product-price-based-on-countries\/assets\/js\/ajax-geolocation.min.js","\/woocommerce-price-based-country-pro-addon\/assets\/js\/currency-switcher.min.js","add-to-cart.min.js","cart-fragments.min.js"],"is_default":0,"condition":"woocommerce-price-based-country-pro-addon\/woocommerce-price-based-country-pro-addon.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"b970bc8a-bcbe-4d08-8ac0-a6853ab3f036":{"id":"plugin:f1ecfe258440b371124999ca3bfbfff3","title":"Prime Slider","type":"plugin","icon":"","exclusions":["\/plugins\/bdthemes-prime-slider-lite\/assets\/js\/bdt-uikit.min.js"],"is_default":0,"condition":"bdthemes-prime-slider-lite\/bdthemes-prime-slider.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"e5458963-f167-4b68-88e4-77dd39af2842":{"id":"plugin:29ea8f4dd72f5a5c5927917fb0665a05","title":"PRO Elements","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/pro-elements\/"],"is_default":0,"condition":"pro-elements\/pro-elements.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"b119ad72-f498-4576-bb71-9e6d8c37b68f":{"title":"Product Filter by WBW (for WooCommerce)","condition":"woo-product-filter\/woo-product-filter.php","exclusions":["\/jquery-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?$","\/jquery-migrate(.*)(.min|.slim|.slim.min)?.js(\\?(.*))?$","\/wp-content\/plugins\/woo-product-filter\/modules\/woofilters\/js\/frontend.woofilters.js","\/wp-includes\/js\/jquery\/ui\/mouse.min.js","\/wp-includes\/js\/jquery\/ui\/core.min.js","\/wp-includes\/js\/jquery\/ui\/slider.min.js"],"icon_url":"","type":"plugin","id":"plugin:e57ad91e0d94fab011353af544873743","is_default":0,"created_at":1685686062},"7b779aca-e497-4da3-8e51-fa12837d15ab":{"title":"Product Filters for WooCommerce","condition":"woocommerce-product-filters\/woocommerce-product-filters.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/woocommerce-product-filters\/","\/woocommerce\/assets\/js\/accounting\/accounting.min.js","\/wp-includes\/js\/jquery\/ui\/","wcpf-load-project","WCPFData"],"icon_url":"","type":"plugin","id":"plugin:719469f1c977f7109d3d6ee21ecd5a16","is_default":0,"created_at":1691235154},"2b2a51f2-bd47-4591-92d8-4a690bce5d99":{"id":"plugin:a898898b2b0ea2cd82e20a6d3a3aa47b","title":"Product Gallery Slider for WooCommerce","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/twist\/assets\/js\/slick.min.js","wpgs-public-js-after"],"is_default":0,"condition":"twist\/twist.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"062c5be3-e5ea-4958-9619-44e3410f237e":{"title":"Product Video Gallery for Woocommerce","condition":"product-video-gallery-slider-for-woocommerce\/product-video-gallery-slider-for-woocommerce.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/product-video-gallery-slider-for-woocommerce\/public\/js\/nickx.front.js"],"icon_url":"","type":"plugin","id":"plugin:bbc653a91f0635cd2edb0b741aa62b85","is_default":0,"created_at":1693512477},"34d225a4-688c-476b-846b-420774160d6b":{"id":"plugin:e0b123d324c6fc85b8682660c34f8829","title":"Rank Math SEO","type":"plugin","icon":"","exclusions":["local_ga_js"],"is_default":0,"condition":"seo-by-rank-math\/rank-math.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"02305ca0-2c2a-4eef-a802-b8a942771ecc":{"title":"Retainful","condition":"retainful-next-order-coupon-for-woocommerce\/retainful-next-order-coupon-for-woocommerce.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/retainful-next-order-coupon-for-woocommerce\/src\/premium\/assets\/js\/atc-popup.min.js","\/retainful-next-order-coupon-for-woocommerce\/src\/premium\/assets\/js\/exit-intent-popup.js","retainful.com","rnoc-add-to-cart-js-before","rnoc_redirect_coupon_popup"],"icon_url":"","type":"plugin","id":"plugin:f9fdee19ba6aed961d96d86e1521a761","is_default":0,"created_at":1679331508},"b4055250-5813-400f-b663-d390fee989e4":{"id":"plugin:d6a4d07d1b4022d886df52322dcd8a6f","title":"Revolution Slider","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/revslider\/public\/assets\/js\/","\/revslider-(.*)-addon\/","setREVStartSize","rev_slider_","revslider_","window.RS_MODULES"],"is_default":0,"condition":"revslider\/revslider.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"0b4e061a-b366-4d5a-a00e-bded4b107133":{"title":"Royal Elementor Addons","condition":"royal-elementor-addons\/wpr-addons.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/royal-elementor-addons\/assets\/js\/frontend.min.js","\/royal-elementor-addons\/assets\/js\/lib\/jarallax\/jarallax.min.js"],"icon_url":"","type":"plugin","id":"plugin:c4b464373716d7ac8e3cfb019aaa6102","is_default":0,"created_at":1688124503},"1b19ec89-171a-4f85-8c4b-b1bcfc6b1433":{"id":"plugin:5e3f85d8c82cc184b945415d1a862601","title":"Sassy Social Share","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/sassy-social-share\/public\/js\/sassy-social-share-public.js","heateorSssLoadEvent"],"is_default":0,"condition":"sassy-social-share\/sassy-social-share.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"f5899925-2ab7-43b6-abc4-51b76d664ca6":{"title":"Scrollsequence","condition":"scrollsequence-pro\/scrollsequence-pro.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/scrollsequence-pro\/public\/js\/gsap__premium_only.js","\/scrollsequence-pro\/public\/js\/gsap-scrolltrigger__premium_only.js","\/scrollsequence-pro\/public\/js\/ssq-lib__premium_only.js","scrollsequence-input-script"],"icon_url":"","type":"plugin","id":"plugin:3df51830b6b80668fc342c8dcea495cf","is_default":0,"created_at":1678111131},"043827fc-3df8-45d6-9cd2-14fbe962987a":{"id":"plugin:9d60b5d2de4d828b78c7b088024377d6","title":"ShiftNav Pro - Responsive Mobile Menu","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/shiftnav-pro\/assets\/js\/shiftnav(.*).js"],"is_default":0,"condition":"shiftnav-pro\/shiftnav.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"bcbaf240-e76f-4620-b7d5-4852c46d4be7":{"id":"plugin:56279bd768c8f27ad1972b6774738bcf","title":"ShiftNav \u2013 Responsive Mobile Menu","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/shiftnav-responsive-mobile-menu\/"],"is_default":0,"condition":"shiftnav-responsive-mobile-menu\/shiftnav-responsive-mobile-menu.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"bbe0543b-b5af-467b-a90d-e2975d892d8d":{"id":"plugin:1bc7ac87d8ab2301a1b904919dc7a798","title":"Short Pixel Adaptive Image","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js ","\/jquery-migrate(.min)?.js","\/shortpixel-adaptive-images\/assets\/js\/ai(.*).min.js","spai_settings"],"is_default":0,"condition":"shortpixel-adaptive-images\/short-pixel-ai.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"543ab43a-6bd3-4948-a09e-3b95e7c9209d":{"id":"plugin:ce4dea8ddc3caa8d00e95cec3202d32a","title":"Showcase IDX","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js ","\/jquery-migrate(.min)?.js","SIDX","search.showcaseidx.com\/js\/app-(.*).js","cdn.shortpixel.ai"],"is_default":0,"condition":"showcase-idx\/showcaseidx.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"a16bcab7-1169-46b9-a425-b091478d8312":{"id":"plugin:3ea7d9f75ad03620b0bce2517bd5b8d1","title":"Side Cart WooCommerce","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/plugins\/woocommerce\/assets\/js\/frontend\/cart-fragments.min.js","\/plugins\/woocommerce\/assets\/js\/frontend\/add-to-cart.min.js","\/plugins\/woocommerce\/assets\/js\/jquery-blockui\/jquery.blockUI.min.js","\/plugins\/woocommerce\/assets\/js\/js-cookie\/js.cookie.min.js"],"is_default":0,"condition":"side-cart-woocommerce\/xoo-wsc-main.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"521f748e-cf09-4019-bd28-b52daef5f16f":{"id":"plugin:7843983bf90dbae16c6e889382c71b23","title":"Simple Banner","type":"plugin","icon":"","exclusions":["\/wp-includes\/js\/jquery\/jquery.min.js","\/simple-banner\/","simpleBannerScriptParams"],"is_default":0,"condition":"simple-banner\/simple-banner.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"76026e82-d9cf-482c-b480-55c57693a184":{"id":"plugin:b6825f971d35a5515d095564a2e40936","title":"Site Kit by Google","type":"plugin","icon":"","exclusions":["google-analytics.com\/analytics.js","ga\\( '","ga\\('","\/gtag\/js","gtag\\(","\/gtm.js"],"is_default":0,"condition":"google-site-kit\/google-site-kit.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"79c458d7-f7f7-4072-919d-ad337bde6ae3":{"id":"plugin:5ce5dfecdc9d3292c69a1413bbd17d3c","title":"Slick Menu","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js ","\/jquery-migrate(.min)?.js","\/slick-menu\/"],"is_default":0,"condition":"slick-menu\/slick-menu.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"dd0ea584-0c99-4c30-b46d-da35b94c9f0a":{"id":"plugin:ffb5f8cc0ea17886dbd05f601ca3eec0","title":"Slider by Soliloquy","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js ","\/jquery-migrate(.min)?.js","soliloquy-min.js","soliloquy_slider"],"is_default":0,"condition":"soliloquy-lite\/soliloquy-lite.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"ecb2fffc-d289-4f68-ae94-71131f17deee":{"id":"plugin:2f373822dceb191c31c8ad2183d51869","title":"Smart Slider 3","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js ","\/jquery-migrate(.min)?.js","\/smart-slider-3\/(.*).js","_N2"],"is_default":0,"condition":"smart-slider-3\/smart-slider-3.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"284ede43-bf80-419e-8414-46c26cb746f0":{"id":"plugin:720ec9fbbd8a52ce525959a68a5310b3","title":"Smart Slider 3 Pro","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js ","\/jquery-migrate(.min)?.js","\/SmartSlider3\/(.*).js","_N2"],"is_default":0,"condition":"nextend-smart-slider3-pro\/nextend-smart-slider3-pro.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"c3334c29-4160-42df-a1ce-f8aeeaee8668":{"title":"Super Socializer","condition":"super-socializer\/super_socializer.php","exclusions":["theChamp","\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js"],"icon_url":"","type":"plugin","id":"plugin:660defe26748470c3a47366cd4012579","is_default":0,"created_at":1677853633},"f18b4242-fe3f-4e2b-bfc9-ac2fb3939a90":{"title":"Superfly Menu","condition":"superfly-menu\/main.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate((.*?)(.min?)?).js","\/superfly-menu\/includes\/vendor\/looks_awesome\/icon_manager\/js\/md5.js","\/superfly-menu\/includes\/vendor\/looks_awesome\/icon_manager\/js\/util.js","\/superfly-menu\/js\/public.min.js","window.SFM_is_mobile","var SFM_skew_disabled","var SFM_template"],"icon_url":"","type":"plugin","id":"plugin:ccb15175093bc6c437b78797f0698a7b","is_default":0,"created_at":1684301673},"1a05c00a-8562-45bc-80e8-987a4574b1c9":{"title":"Symplr Ads","condition":"symplr-ads\/symplr-plugin.php","exclusions":["\/symplr-ads\/","cdns.symplr.de"],"icon_url":"","type":"plugin","id":"plugin:3b6d39e28a87e86c4659491e2368ff61","is_default":0,"created_at":1692199959},"858d2d7f-bdac-4d27-ba26-baa9ace96ba4":{"id":"plugin:7d93008296bb5c7c43d4cba185ed2632","title":"Tabby Responsive Tabs","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/tabby-responsive-tabs\/js\/tabby.js","RESPONSIVEUI"],"is_default":0,"condition":"tabby-responsive-tabs\/tabby-responsive-tabs.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"e44a5c93-bb77-4624-a121-d846905137ea":{"id":"plugin:2f563bbb7e92363ec3fb2989a1c7dffe","title":"The Plus Addons for Elementor","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/theplus-addons\/(.*)"],"is_default":0,"condition":"the-plus-addons-for-elementor-page-builder\/theplus_elementor_addon.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"2bbac961-b000-4802-ae97-d52472ec6750":{"title":"The Plus Addons for Elementor Premium","condition":"theplus_elementor_addon\/theplus_elementor_addon.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/wp-content\/plugins\/theplus_elementor_addon\/","\/elementor\/","\/elementor-pro\/","\/wp-includes\/js\/imagesloaded.min.js","ElementorProFrontendConfig","elementorFrontendConfig"],"icon_url":"","type":"plugin","id":"plugin:6e127deaaeefbe57ff945b1f9e274518","is_default":0,"created_at":1688143611},"666b45e8-749c-4140-bd17-e1cd589e03ee":{"id":"plugin:b9c418b47c986935a1151ab9b42f8971","title":"ThemeREX Addons","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/trx_addons\/js\/__scripts-full.js","\/trx_addons\/components\/cpt\/layouts\/shortcodes\/menu\/superfish.min.js"],"is_default":0,"condition":"trx_addons\/trx_addons.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"a750cada-eb58-4df4-9966-21c8a69332ba":{"id":"plugin:75af9efe22c5cc776636266feb55adf1","title":"Thrive Architect","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js"],"is_default":0,"condition":"thrive-visual-editor\/thrive-visual-editor.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"13714cde-680e-4ca4-8607-c35952d6a5f2":{"title":"Thrive Comments","condition":"thrive-comments\/thrive-comments.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/thrive-leads\/","window.TL_Const","var ml=","\/thrive-comments\/assets\/js\/","ThriveComments","\/wp-includes\/js\/underscore.min.js","\/wp-includes\/js\/backbone.min.js"],"icon_url":"","type":"plugin","id":"plugin:6a72d06ca2f6a888b0d9d5ea93af2edc","is_default":0,"created_at":1677852974},"aa7ca898-499f-4f04-b419-3de199996969":{"id":"plugin:b84d82c02cade64ade00712b9c5652aa","title":"Thrive Leads","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/thrive-leads\/","window.TL_Const","var ml=","\/thrive-comments\/assets\/js\/","ThriveComments","\/wp-includes\/js\/underscore.min.js","\/wp-includes\/js\/backbone.min.js"],"is_default":0,"condition":"thrive-leads\/thrive-leads.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"9eee297a-8241-4ef2-af97-46074bd0898c":{"id":"plugin:5bb61b0559b0a3fd578315b553451327","title":"Thrive Quiz Builder","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js"],"is_default":0,"condition":"thrive-quiz-builder\/thrive-quiz-builder.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"c2f3ec2a-5b09-4845-aa95-84841783fbfc":{"id":"plugin:a7f3e5206abff19ca7cf142260181738","title":"Thrive Ultimatum","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/thrive-ultimatum\/","var TVE_Ult_"],"is_default":0,"condition":"thrive-ultimatum\/thrive-ultimatum.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"d48b8d2f-e071-4a30-840a-306154a115a0":{"id":"plugin:f57be2014b6a489d053f8367fa6c0f9f","title":"Tidio Chat","type":"plugin","icon":"","exclusions":["document.tidioChatCode"],"is_default":0,"condition":"tidio-live-chat\/tidio-elements.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"cb6d33ed-7eb4-4ff9-9ad0-7fc54fbecf6f":{"id":"plugin:c9e0485ec256d4a6a8d92a98c18d76fc","title":"Toolset Blocks","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","toolsetCommonEs.fontToHead","toolsetCommonEs.styleToHead","\/toolset-blocks\/vendor\/toolset\/blocks\/public\/js\/frontend.js","\/toolset-blocks\/vendor\/toolset\/common-es\/public\/toolset-common-es-frontend.js","\/toolset-blocks\/public\/js\/views-frontend.js","\/wp-includes\/js\/underscore.min.js"],"is_default":0,"condition":"toolset-blocks\/wp-views.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"4bac6350-0925-49fb-904a-372f22fd6baf":{"id":"plugin:71beda322b37f7fc7d456822493cb972","title":"Top Bar Pro","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/plugins\/topbar-pro\/js\/tpbr_front.min.js","\/plugins\/topbar-pro\/js\/jquery.cookie.js"],"is_default":0,"condition":"topbar-pro\/topbar_pro.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"033486e7-0ddc-4915-a848-31504d00448e":{"title":"Twenty20 Image Before-After","condition":"twenty20\/ttwenty.php","exclusions":["\/twenty20\/assets\/js\/(.*).js","\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","twentytwenty-container"],"icon_url":"","type":"plugin","id":"plugin:23441bba9d3602bc932d697c7cb8aa1f","is_default":0,"created_at":1677858089},"7675a34d-006e-4672-99d5-a81e1b8e47f9":{"id":"plugin:3d59cc34167a7f8123e66b627148e0b7","title":"UberMenu","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/ubermenu\/assets\/js\/ubermenu.min.js"],"is_default":0,"condition":"ubermenu\/ubermenu.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"8233178a-e7b3-43ce-b193-bd0d9c960933":{"id":"plugin:86424c46157c1c7e2e1571055813beee","title":"Ultimate Addons for Elementor","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/ultimate-elementor\/assets\/lib\/slick\/slick.min.js","\/ultimate-elementor\/assets\/min-js\/uael-frontend.min.js","\/ultimate-elementor\/assets\/lib\/isotope\/isotope.min.js","\/ultimate-elementor\/assets\/lib\/jquery-element-resize\/jquery_resize.min.js","\/ultimate-elementor\/assets\/lib\/fancybox\/jquery_fancybox.min.js","\/ultimate-elementor\/assets\/lib\/justifiedgallery\/justifiedgallery.min.js","\/elementor-pro\/assets\/js\/frontend.min.js","\/wp-includes\/js\/imagesloaded.min.js","\/js_composer\/assets\/js\/dist\/js_composer_front.min.js","\/elementor\/assets\/lib\/swiper\/swiper.min.js","\/nasa-core\/assets\/js\/min\/jquery.slick.min.js","\/elementor\/","\/elementor-pro\/","ElementorProFrontendConfig","elementorFrontendConfig"],"is_default":0,"condition":"ultimate-elementor\/ultimate-elementor.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"8bddf484-6c78-4147-a4e6-d3039904e5f6":{"title":"Ultimate Addons for Elementor - Mobile Menu","condition":"ultimate-elementor\/ultimate-elementor.php","exclusions":["\/jquery-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?$","\/jquery-migrate(.*)(.min|.slim|.slim.min)?.js(\\?(.*))?$","\/ultimate-elementor\/assets\/js\/uael-nav-menu.js","\/ultimate-elementor\/assets\/min-js\/uael-nav-menu.min.js"],"icon_url":"","type":"plugin","id":"plugin:70cfade3a7adbb54196f6acccc5a176f","is_default":0,"created_at":1694771327},"028504f7-b1cd-4318-8a6d-ce186197e89d":{"id":"plugin:0f0a91f0c454021a5ff9fc25c3ed419f","title":"Ultimate Addons for WPBakery Page Builder","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/Ultimate_VC_Addons\/assets\/"],"is_default":0,"condition":"Ultimate_VC_Addons\/Ultimate_VC_Addons.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"5754af3d-a6af-49eb-b731-bdd82f26dc4e":{"id":"plugin:34db8636812bad84c8aea037c2ddc8c2","title":"Ultimate Responsive Image Slider","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","sliderPro"],"is_default":0,"condition":"ultimate-responsive-image-slider\/ultimate-responsive-image-slider.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"78ae882d-ae31-4179-b677-8893814938c7":{"title":"Unlimited Elements for Elementor Premium - Slider","condition":"unlimited-elements-for-elementor-premium\/unlimited-elements-pro.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","ElementorProFrontendConfig","elementorFrontendConfig","\/unlimited-elements-for-elementor-premium\/","uc_"],"icon_url":"","type":"plugin","id":"plugin:17260bc347b8c29bee0010e9ec164184","is_default":0,"created_at":1683270377},"051cbfbb-7ad2-4f06-a493-3cf423a80904":{"id":"plugin:6717ef5673a956bc08ca4a5117065d53","title":"Variation Swatches for WooCommerce","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/jquery\/ui\/","\/woo-variation-swatches\/","\/woo-variation-swatches-pro\/","underscore.min.js"],"is_default":0,"condition":"woo-variation-swatches\/woo-variation-swatches.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"6879caba-7224-4eca-bcb2-370785b495ea":{"id":"plugin:57597b7683e01892932083413f085134","title":"Web Accessibility By accessiBe","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/accessibe\/","acsbJS"],"is_default":0,"condition":"accessibe\/accessiebe.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"bd6732fe-4c2b-40a1-9035-8464057e2da5":{"title":"WooCommerce - Cart Fragments","condition":"woocommerce\/woocommerce.php","exclusions":["\/wp-includes\/js\/jquery\/jquery.min.js","\/woocommerce\/assets\/js\/frontend\/cart-fragments.min.js","\/woocommerce\/assets\/js\/js-cookie\/js.cookie.min.js"],"icon_url":"","type":"plugin","id":"plugin:201de694c6fc28c8d580a3b2ca484218","is_default":0,"created_at":1680937567},"d044900d-07e1-4533-9516-33106efcb259":{"title":"WooCommerce - Product description","condition":"woocommerce\/woocommerce.php","exclusions":["\/plugins\/woocommerce\/assets\/js\/frontend\/single-product.min.js","\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js"],"icon_url":"","type":"plugin","id":"plugin:a82644b4c9417ea3a240939a73344700","is_default":0,"created_at":1679309756},"bff953b1-2213-4666-8112-76a84a3cc207":{"title":"WooCommerce - Product Gallery","condition":"woocommerce\/woocommerce.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/woocommerce\/?(.*)\/assets\/js\/zoom\/jquery.zoom(.min)?.js","\/woocommerce\/?(.*)\/assets\/js\/photoswipe\/","\/woocommerce\/?(.*)\/assets\/js\/flexslider\/jquery.flexslider(.min)?.js","\/woocommerce\/?(.*)\/assets\/js\/frontend\/single-product(.min)?.js","wc_single_product_params"],"icon_url":"","type":"plugin","id":"plugin:7665868ff97c265628f376523a4f9ecc","is_default":0,"created_at":1686579689},"016e6ddf-c6e7-49ec-bd3f-2585d9e45895":{"title":"WooCommerce - Select2 library","condition":"woocommerce\/woocommerce.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/woocommerce\/assets\/js\/select2\/select2(.*).js"],"icon_url":"","type":"plugin","id":"plugin:4bca670bd5d55dd24b17fb0193b0891e","is_default":0,"created_at":1681459540},"b9b2c6d7-944f-4ae3-ae04-c9e2204b9dab":{"id":"plugin:9165c768e978d6ad3f696db8c78ccbb2","title":"WooCommerce Attribute Swatches","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/iconic-woo-attribute-swatches-premium\/assets\/frontend\/js\/main.min.js","\/iconic-woo-attribute-swatches-premium\/assets\/vendor\/flickity\/flickity.pkgd.min.js","iconic_was_vars"],"is_default":0,"condition":"iconic-woo-attribute-swatches-premium\/iconic-woo-attribute-swatches.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"4506c5e9-7349-44c9-9967-34370c83facb":{"title":"WooCommerce Bookings","condition":"woocommerce-bookings\/woocommerce-bookings.php","exclusions":["\/wp-includes\/js\/jquery\/jquery.min.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/woocommerce-bookings\/dist\/frontend.js","\/wp-includes\/js\/dist\/date.min.js","\/wp-includes\/js\/dist\/vendor\/moment.min.js","\/wp-includes\/js\/jquery\/ui\/datepicker.min.js","\/wp-includes\/js\/underscore.min.js","\/woocommerce\/assets\/js\/jquery-blockui\/jquery.blockUI.min.js","\/wp-includes\/js\/dist\/hooks.min.js"],"icon_url":"","type":"plugin","id":"plugin:14dec6d289b9977fa3a74116feecebcc","is_default":0,"created_at":1693998405},"fec9cd04-c358-45da-a1a8-1668b964016b":{"id":"plugin:456f3b849ba3b6647246aca9d7cdaed5","title":"WooCommerce Product Reviews Pro","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","wc_product_reviews_pro","\/woocommerce-product-reviews-pro\/assets\/js\/frontend\/wc-product-reviews-pro-frontend.min.js","\/woocommerce\/assets\/js\/jquery-tiptip\/jquery.tipTip.min.js"],"is_default":0,"condition":"woocommerce-product-reviews-pro\/woocommerce-product-reviews-pro.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"551a9399-627f-4978-9bae-5cc8e0aefc82":{"id":"plugin:c8577e74eef3b082fb6403760d53f68c","title":"WooCommerce TM Extra Product Options","type":"plugin","icon":"","exclusions":["\/woocommerce-tm-extra-product-options\/assets\/js\/epo.min.js","\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-includes\/js\/jquery\/ui\/core.min.js","\/wp-includes\/js\/jquery\/ui\/mouse.min.js","\/wp-includes\/js\/jquery\/ui\/slider.min.js","\/wp-includes\/js\/underscore.min.js","\/wp-includes\/js\/wp-util.min.js","\/wp-includes\/js\/dist\/hooks.js","\/wp-includes\/js\/dist\/i18n.js"],"is_default":0,"condition":"woocommerce-tm-extra-product-options\/tm-woo-extra-product-options.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"3cac4650-6a52-448e-8e48-e99a772a59a2":{"id":"plugin:c6e6cab8c80fa3fe57d609f72d2d5c56","title":"WooLentor","type":"plugin","icon":"","exclusions":["\/woolementor\/assets\/third-party\/slick\/slick.min.js","\/woolentor-addons","woolentor_addons"],"is_default":0,"condition":"woolentor-addons\/woolentor_addons_elementor.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"67aeb4cb-1a00-4d10-a00c-34888b4c0dba":{"title":"WooThumbs for WooCommerce","condition":"woothumbs-premium\/woothumbs-premium.php","exclusions":["\/wp-includes\/js\/dist\/hooks.min.js","\/wp-includes\/js\/underscore.min.js","\/wp-includes\/js\/wp-embed.min.js","\/wp-includes\/js\/wp-util.min.js","\/woothumbs-premium\/(.*)"],"icon_url":"","type":"plugin","id":"plugin:b97b1d3f627769e1dd8305aa25af993c","is_default":0,"created_at":1679065404},"c7a14763-88d0-4344-a6af-e0a8dc5fa8d5":{"id":"plugin:31b9e812a025e5750a6ef0980ee7d2db","title":"WordPress Mega Menu \u2013 QuadMenu","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/quadmenu","#private-menu","#public-menu"],"is_default":0,"condition":"quadmenu\/quadmenu.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"f699fdbd-84a7-4f24-b729-3e4a4f83a4dd":{"id":"plugin:601f8fc7d10cad1c2ec2949c0d9b1651","title":"WP Armour","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/honeypot\/includes\/js\/wpa.js","\/wp-armour-extended\/includes\/js\/wpae.js","wpa_hidden_field","wpa_add_test"],"is_default":0,"condition":"wp-armour-extended\/wp-armour-extended.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"6a28aae5-ef91-43fc-8204-92e3a25642b4":{"id":"plugin:5728f3b9856dfe37a36ab15b0a637198","title":"WP Go Maps","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","maps.googleapis.com"],"is_default":0,"condition":"wp-google-maps\/wpGoogleMaps.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"c9b991d1-a653-404b-be85-e276b1814e7d":{"title":"WP Google Map Pro","condition":"wp-google-map-gold\/wp-google-map-gold.php","exclusions":["\/wp-includes\/js\/jquery\/jquery.min.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","maps.google.com\/maps\/api\/js","\/wp-includes\/js\/masonry.min.js","\/wp-google-map-gold\/(.*)"],"icon_url":"","type":"plugin","id":"plugin:dc12a9b7b9c4c7ce3c532b6b377739f2","is_default":0,"created_at":1677858391},"1f8f9fbf-fbf0-4e3a-b77c-af0fa47e950d":{"id":"plugin:87f572f5f0ec143a8fceba77d0616197","title":"WP Google Maps Pro","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-google-maps(.*)","maps.googleapis.com","mgl_","wpgmza"],"is_default":0,"condition":"wp-google-maps-pro\/wp-google-maps-pro.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"41e4b98c-e63f-4800-a478-02592562322b":{"id":"plugin:3735ca768ede98b25795f4cb057ff4ed","title":"WP iCal Availability","type":"plugin","icon":"","exclusions":["\/wp-ical-availability\/js\/custom-select.js","\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-ical-availability\/"],"is_default":0,"condition":"wp-ical-availability\/wp-ical-availability.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"2b06c5b8-dc32-4bb0-8504-3a9f1c3a1ec0":{"title":"WP MapIt","condition":"wp-mapit\/wp_mapit.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-mapit\/wp_mapit\/js\/leaflet.js","\/wp-mapit\/wp_mapit\/js\/wp_mapit_multipin.js"],"icon_url":"","type":"plugin","id":"plugin:ba8d1c7f294a3f5b593556eb3b0bc7d9","is_default":0,"created_at":1679331261},"2039eafd-1c11-4e21-a61b-30857f291ae3":{"id":"plugin:927b8bf7806f2d287559b86a0b455a59","title":"WP Responsive Menu","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-responsive-menu\/(.*)"],"is_default":0,"condition":"wp-responsive-menu\/wp-responsive-menu.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"e06be942-cccd-4b2d-a268-06dc78f0b820":{"title":"WP Search with Algolia","condition":"wp-search-with-algolia\/algolia.php","exclusions":["\/wp-search-with-algolia\/js\/algoliasearch\/dist\/algoliasearch-lite.umd.js","\/wp-search-with-algolia\/js\/autocomplete-noconflict.js","\/wp-search-with-algolia\/js\/autocomplete.js\/dist\/autocomplete.min.js","var algolia"],"icon_url":"","type":"plugin","id":"plugin:43267e659d599fbb6b42c719b49bb7a7","is_default":0,"created_at":1677857180},"4fc2a7ae-b9e6-410e-93cf-e6d1962add6a":{"id":"plugin:4fb90fc73fc2b5d1e37ea2dadfd3cef3","title":"WP Smart Preloader","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js ","\/jquery-migrate(.min)?.js","\/wp-smart-preloader\/assets\/js\/wsp-main-script(.min)?.js"],"is_default":0,"condition":"wp-smart-preloader\/wp-preloader.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"7ecf40ce-2bcd-412c-bb01-9e71fecf6be8":{"id":"plugin:d37bb5054a24471ca1675d9ab49d01b0","title":"WP Store Locator","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js ","\/jquery-migrate(.min)?.js","\/wp-store-locator\/","\/wp-includes\/js\/underscore.min.js","maps.google.com"],"is_default":0,"condition":"wp-store-locator\/wp-store-locator.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"7a1d19a2-3a48-40ab-8051-f642fc63ce2d":{"title":"WP Ultimate Post Grid","condition":"wp-ultimate-post-grid\/wp-ultimate-post-grid.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?$","\/wp-ultimate-post-grid\/dist\/public.js","\/wp-ultimate-post-grid-premium\/dist\/public-premium.js","wpupg_grid_args"],"icon_url":"","type":"plugin","id":"plugin:e24341fef49bd64b89682d583218c108","is_default":0,"created_at":1686597940},"76c86163-ddf3-4113-b620-de9d5058f505":{"id":"plugin:517d7d24da9a7072ed389d0fb30374a0","title":"WPBakery Page Builder","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/js_composer\/assets\/js\/dist\/js_composer_front.min.js"],"is_default":0,"condition":"js_composer\/js_composer.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"4f5e5b98-c326-4b9f-9ada-3b257862132c":{"id":"plugin:1ec7138c950c355e7af60d49c81139fc","title":"wpDataTables","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wpdatatables\/","highcharts"],"is_default":0,"condition":"wpdatatables\/wpdatatables.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"18be1b8c-0bc4-4a01-abc6-a127aff380c6":{"id":"plugin:c62ca58ea081c1271de8dadfa7daac69","title":"WPForms","type":"plugin","icon":"","exclusions":["\/wpforms-offline-forms\/assets\/js\/wpforms-offline-forms.min.js","wpforms-offline-forms-js-extra","wpformsRecaptchaLoad"],"is_default":0,"condition":"wpforms\/wpforms.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"8a3cacb6-81bd-456a-a1cc-a4025f8e5234":{"id":"plugin:0992ac952c0a05bb35e18b1d5744d346","title":"WPForms Lite","type":"plugin","icon":"","exclusions":["wpformsRecaptchaLoad","\/wpforms-offline-forms\/assets\/js\/wpforms-offline-forms.min.js","wpforms-offline-forms-js-extra"],"is_default":0,"condition":"wpforms-lite\/wpforms.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"98bbd410-5b01-4244-a8eb-715765180328":{"title":"XL WooCommerce Sales Triggers","condition":"xl-woocommerce-sales-triggers\/xl-woocommerce-sales-triggers.php","exclusions":["\/xl-woocommerce-sales-triggers\/assets\/js\/wcst_combined.min.js","\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js"],"icon_url":"","type":"plugin","id":"plugin:ba9e526ddb0157e69757530c6b18b714","is_default":0,"created_at":1677856813},"bf9f9620-dd0e-4e6f-9a45-4eb78a148f42":{"id":"plugin:58663fc781232169e865f6fe7cf1afaa","title":"YITH WooCommerce Ajax Product Filter","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/yith-woocommerce-ajax-navigation\/assets\/js\/yith-wcan-shortcodes.min.js"],"is_default":0,"condition":"yith-woocommerce-ajax-navigation\/init.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"b053279d-e07c-438c-bb3e-3a1f4f5d7c5e":{"id":"plugin:68b637fd247e40c8e135e4771d739b07","title":"YITH WooCommerce AJAX Product Filter Premium","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/yith-woocommerce-ajax-product-filter-premium\/assets\/js\/yith-wcan-shortcodes.min.js"],"is_default":0,"condition":"yith-woocommerce-ajax-product-filter-premium\/init.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"d94dbbf3-bcab-4e47-9fbb-6b3a7cf92787":{"title":"Yotpo Social Reviews for Woocommerce","condition":"yotpo-social-reviews-for-woocommerce\/wc_yotpo.php","exclusions":["\/yotpo-social-reviews-for-woocommerce\/assets\/js\/headerScript.js"],"icon_url":"","type":"plugin","id":"plugin:45ab742b3fccbd04d7bc973c8582be87","is_default":0,"created_at":1680686421}},"themes":{"9c623554-5834-4669-9e96-1b894c1939b2":{"id":"theme:0193ea55fce2ada93b262f2824008c0f","title":"Andaman","type":"theme","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/andaman\/assets\/js\/","\/wp-andaman-plugins\/shortcodes\/vc_extend\/"],"is_default":0,"condition":"andaman","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"7374c5a5-69f8-460f-b44f-dee884a824cd":{"id":"theme:24cbda63f1b898ade5562ab4ec6d97a5","title":"Artale","type":"theme","icon":"","exclusions":["\/artale-elementor\/assets\/js\/modulobox.js","\/artale-elementor\/assets\/js\/artale-elementor.js","\/artale\/js\/jquery-stellar.js","\/artale\/js\/core\/artale-plugins.js","\/artale\/js\/core\/artale-custom.js","var loader"],"is_default":0,"condition":"artale","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"03a9cc62-c167-447d-beb2-65c76c96b056":{"title":"Astra","condition":"astra","exclusions":["\/astra\/assets\/js\/minified\/frontend.min.js"],"icon_url":"","type":"theme","id":"theme:3cce5f3eaf76e098ba8e28f7bbba3f92","is_default":0,"created_at":1681390022},"2a2b54cb-8e1d-49d2-bfca-93eee231e470":{"id":"theme:72a8d63e59c10bdf512a62b862d143a7","title":"Astra - Carousel","type":"theme","icon":"","exclusions":["var astra","\/astra\/assets\/js\/minified\/style.min.js"],"is_default":0,"condition":"astra","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"7783361f-66fc-4d95-a054-4e9545bb5b48":{"title":"Auteur","condition":"g5plus-auteur","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/g5plus-auteur\/assets\/js\/core.min.js","\/g5plus-auteur\/assets\/vendors\/","\/auteur-framework\/libs\/smart-framework\/assets\/vendors\/perfect-scrollbar\/js\/perfect-scrollbar.jquery.min.js","\/wp-includes\/js\/imagesloaded.min.js"],"icon_url":"","type":"theme","id":"theme:6207fe478e269e7547bda70a46607a49","is_default":0,"created_at":1679737107},"4c618038-8fc7-4d48-8d41-a32da14e5c1e":{"title":"AutoTrader","condition":"autotrader","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/autotrader\/(.*).js"],"icon_url":"","type":"theme","id":"theme:046dfeee2b77390c53e0e7f93b6a3792","is_default":0,"created_at":1679736741},"18f04f23-35a0-4c45-8cb6-a91d57ca1790":{"id":"theme:835da12f43373029659f766920e81b47","title":"Avada - Animations & mobile-specific actions","type":"theme","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/uploads\/fusion-scripts\/(.*).js","window.off_canvas_","\/plugins\/fusion-builder\/","\/plugins\/fusion-core\/","\/Avada\/includes\/"],"is_default":0,"condition":"Avada","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"90135867-1b95-498b-80d6-f5dbf2f6b318":{"title":"Avada - FAQ shortcode","condition":"Avada","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/plugins\/fusion-core\/js\/min\/avada-faqs.js"],"icon_url":"","type":"theme","id":"theme:b084708c80d8582546e5430219aa4670","is_default":0,"created_at":1678277160},"d23b5bb1-1d7f-4109-bf69-b20a2be2d337":{"id":"theme:5e7a2248e1a53d9bb27b187deb541248","title":"Avada - Fusion carousel","type":"theme","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/includes\/lib\/assets\/min\/js\/library\/jquery.carouFredSel.js","\/includes\/lib\/assets\/min\/js\/general\/fusion-carousel.js","fusionCarouselVars"],"is_default":0,"condition":"Avada","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"98dfa8c1-e72a-4cef-a0b2-8f0c322490fc":{"id":"theme:f16fb109027f4994a7649a8b1663e6f7","title":"Avada - Fusion form","type":"theme","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/fusion-builder\/assets\/js\/min\/general\/fusion-form.js","\/fusion-builder\/assets\/js\/min\/general\/fusion-form-logics.js","\/includes\/lib\/assets\/min\/js\/library\/cssua.js","\/includes\/lib\/assets\/min\/js\/general\/fusion.js","\/includes\/lib\/assets\/min\/js\/library\/modernizr.js"],"is_default":0,"condition":"Avada","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"026801fa-af67-47ba-b966-347693f0585f":{"id":"theme:33f50696d353d8bd4eb59ff6e8f44c97","title":"Avada - Fusion grid gallery","type":"theme","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/fusion-builder\/assets\/js\/min\/general\/fusion-gallery.js","\/includes\/lib\/assets\/min\/js\/library\/imagesLoaded.js","\/includes\/lib\/assets\/min\/js\/library\/isotope.js","\/includes\/lib\/assets\/min\/js\/library\/packery.js","\/includes\/lib\/assets\/min\/js\/library\/lazysizes.js"],"is_default":0,"condition":"Avada","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"c8349314-15a3-481e-973b-e4d936e4420e":{"id":"theme:56fa9993a573540c83eda9c49fae5e3c","title":"Avada - Fusion slider","type":"theme","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/fusion-core\/js\/min\/avada-fusion-slider.js","\/Avada\/includes\/"],"is_default":0,"condition":"Avada","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"7a04bc85-0fec-4487-ae05-bb2e5d8d0420":{"title":"Avada - Load Portfolio on pageload","condition":"Avada","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/library\/packery.js","\/library\/isotope.js","\/library\/imagesLoaded.js","\/general\/fusion-lightbox.js","\/fusion-core\/js\/min\/avada-portfolio.js"],"icon_url":"","type":"theme","id":"theme:c3f0ed4d94499b68c77d95db37d1d399","is_default":0,"created_at":1696601814},"55bd510c-78aa-49d5-8304-8be2ee2ab0da":{"id":"theme:2189c1c769d65cfc2182e4822847071b","title":"Avada - Mobile menu","type":"theme","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/assets\/min\/js\/general\/avada-menu.js","\/includes\/lib\/assets\/min\/js\/library\/modernizr.js","\/includes\/lib\/assets\/min\/js\/library\/jquery.easing.js"],"is_default":0,"condition":"Avada","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"ddf00672-c35c-4b68-aeca-925e68bf12b2":{"id":"theme:97a185f08af70c39c7e221faab0f73eb","title":"Avada - OffCanvas","type":"theme","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/uploads\/fusion-scripts\/(.*).min.js","window.off_canvas_"],"is_default":0,"condition":"Avada","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"17544cc3-9d3a-4611-bc5d-44d04e2786fa":{"title":"Avada - Show the Portfolio grid on page load","condition":"Avada","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/includes\/lib\/assets\/min\/js\/library\/imagesLoaded.js","\/includes\/lib\/assets\/min\/js\/library\/isotope.js","\/includes\/lib\/assets\/min\/js\/library\/lazysizes.js","\/includes\/lib\/assets\/min\/js\/library\/modernizr.js","\/includes\/lib\/assets\/min\/js\/library\/packery.js","\/fusion-core\/js\/min\/avada-portfolio.js","avadaPortfolioVars"],"icon_url":"","type":"theme","id":"theme:9d1a9b0c2ca20fca764a82f197b962fd","is_default":0,"created_at":1696601823},"c6c3347c-14e0-4766-afa5-df33a47f5a5a":{"id":"theme:3ff44421b404c5efffa25e78e479e4ea","title":"Avada - Sticky menu","type":"theme","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/Avada\/assets\/min\/js\/general\/avada-menu.js"],"is_default":0,"condition":"Avada","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"232596c1-6a6a-4fe8-a5c3-a60fa74a9456":{"id":"theme:0d727d80bb132f17c737e55883fe4be0","title":"Avada - WooCommerce product gallery","type":"theme","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/assets\/min\/js\/general\/avada-woo-product-images.js","\/includes\/lib\/assets\/min\/js\/library\/jquery.flexslider.js"],"is_default":0,"condition":"Avada","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"95ece7e4-3b19-45e5-aa28-14f833c9afca":{"title":"Avesa","condition":"avesa","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/avesa\/js\/main.js","\/avesa\/js\/isotope.js","\/sw_core\/js\/slick.min.js","\/avesa\/js\/bootstrap-datetimepicker.min.js","\/avesa\/js\/bootstrap.min.js"],"icon_url":"","type":"theme","id":"theme:aad8bfcc594eec02e3b0d635198dee5e","is_default":0,"created_at":1679737993},"f2bfe477-4e45-4e52-a7d9-4d0ba3a92258":{"title":"Besa","condition":"besa","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/besa\/js\/"],"icon_url":"","type":"theme","id":"theme:c238e89523c46ca28b08e401f42f6ccc","is_default":0,"created_at":1679738204},"bd94908c-8138-4995-986b-47ec66494bdd":{"title":"BeTheme","condition":"betheme","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/betheme\/","mfn","\/wp-includes\/js\/jquery\/ui\/tabs.min.js","\/wp-includes\/js\/jquery\/ui\/core.min.js"],"icon_url":"","type":"theme","id":"theme:b99156eb9eeb357c0a70bd3bda6861cc","is_default":0,"created_at":1679738639},"6fb2b9d7-6ecc-4260-999c-938fbebdbf01":{"id":"theme:de8504b73ea228d0ea9bbce69752092e","title":"Bridge","type":"theme","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/bridge-creative\/bridge\/js\/","\/wp-includes\/js\/"],"is_default":0,"condition":"bridge","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"65698b6b-85dd-41ef-8fd7-718f1e983dba":{"title":"Car Dealer","condition":"cardealer","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-includes\/js\/jquery\/(.*)","\/cardealer\/js\/(.*)"],"icon_url":"","type":"theme","id":"theme:b1111424fff61af8d1e152dcdd6810f6","is_default":0,"created_at":1679737517},"087fb457-a09d-4140-84bd-c9bc1e8195b7":{"title":"CheerUp","condition":"cheerup","exclusions":["\/cheerup\/js\/jquery.sticky-sidebar.js","\/cheerup\/js\/object-fit-images.js","\/cheerup\/js\/jquery.fitvids.js","\/cheerup\/js\/jquery.mfp-lightbox.js","\/cheerup\/js\/ie-polyfills.js","\/cheerup\/js\/theme.js","\/wp-includes\/js\/imagesloaded.min.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/wp-includes\/js\/jquery\/jquery.min.js"],"icon_url":"","type":"theme","id":"theme:13bcf562f45afb245dc4f76fecfba6d6","is_default":0,"created_at":1696429398},"eb86aedb-91e6-480c-b76c-756ac1da41be":{"title":"Clover","condition":"clover-theme","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/clover-theme\/"],"icon_url":"","type":"theme","id":"theme:89372f3d9321ae09c94488592084da29","is_default":0,"created_at":1679738878},"6e90b649-5736-497f-9bc6-515900cfea8a":{"title":"Divi - Animations","condition":"Divi","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js",".dipi_preloader_wrapper_outer","\/Divi\/js\/scripts.min.js","\/Divi\/js\/custom.unified.js","\/js\/magnific-popup.js","var DIVI"],"icon_url":"","type":"theme","id":"theme:c0abf30dba4ff13db836d1b01685953a","is_default":0,"created_at":1679737389},"70916c43-4e02-4932-b6aa-91a1815bc755":{"title":"Divi - Background video","condition":"Divi","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate.min.js","\/Divi\/js\/custom.unified.js","\/js\/mediaelement\/(.*)","mejs"],"icon_url":"","type":"theme","id":"theme:c7edea41ae6716291e2d32a2ab429209","is_default":0,"created_at":1679738240},"08531785-9818-4e30-903e-564637a2ad7a":{"title":"Divi - Counter module","condition":"Divi","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js",".dipi_preloader_wrapper_outer","\/Divi\/js\/scripts.min.js","\/Divi\/js\/custom.unified.js","\/js\/magnific-popup.js","var DIVI","\/Divi\/includes\/builder\/feature\/dynamic-assets\/assets\/js\/easypiechart.js"],"icon_url":"","type":"theme","id":"theme:2c46b9f5a770f260c3f7115bb330b2d5","is_default":0,"created_at":1679736810},"b996762a-84ef-440d-a089-73a187936fbf":{"title":"Divi - Mobile menu","condition":"Divi","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate.min.js","\/Divi\/js\/scripts.min.js","\/Divi\/js\/custom.unified.js"],"icon_url":"","type":"theme","id":"theme:b9116994f4e4b9b9fa574440c00d2f0d","is_default":0,"created_at":1679738580},"ae096e1e-9c36-46ad-a3d1-c26ea507276b":{"title":"Divi - Sticky elements","condition":"Divi","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js",".dipi_preloader_wrapper_outer","\/Divi\/js\/scripts.min.js","\/Divi\/includes\/builder\/feature\/dynamic-assets\/assets\/js\/sticky-elements.js","var DIVI"],"icon_url":"","type":"theme","id":"theme:8b62db03c90245f3e690335b079b05dc","is_default":0,"created_at":1679737191},"349f31f0-dd10-41d3-b0a4-9c5df64879f8":{"title":"Divi - Sticky menu","condition":"Divi","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/js\/jquery\/jquery-migrate.min.js","\/Divi\/js\/scripts.min.js","\/Divi\/includes\/builder\/feature\/dynamic-assets\/assets\/js\/magnific-popup.js","jqueryParams","firstHeader"],"icon_url":"","type":"theme","id":"theme:b7b84aca0f0dc6a1ced31d38626c50ea","is_default":0,"created_at":1679738821},"59563458-5f04-4959-b3e2-53e49e169d67":{"title":"Divi - WooCommerce Single Product Images","condition":"Divi","exclusions":["\/Divi\/js\/scripts.min.js"],"icon_url":"","type":"theme","id":"theme:f9c5bdba8b39fc877b41dea00fa756f9","is_default":0,"created_at":1684342262},"6426539e-4e43-4fef-ab5a-3eb7b2a8b057":{"title":"Eikra","condition":"eikra","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate.min.js","\/eikra\/assets\/js\/","EikraObj"],"icon_url":"","type":"theme","id":"theme:55d2581ad975eb6325bc97fc3d3b0cb8","is_default":0,"created_at":1679738450},"59020bd6-069f-4f2d-afa2-fbdefa03211c":{"title":"Ekko","condition":"ekko","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/ekko\/"],"icon_url":"","type":"theme","id":"theme:2c06f4a1949f8ba4e77042a47674fd9e","is_default":0,"created_at":1679737803},"d82f5cdd-c5d3-4596-94dc-1e25aaff2083":{"title":"Elessi","condition":"elessi-theme","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elessi-theme\/assets\/js\/min\/functions.min.js","\/elessi-theme\/assets\/js\/min\/main.min.js"],"icon_url":"","type":"theme","id":"theme:d5d2b7fda7b8a2b5b91d430f7602e230","is_default":0,"created_at":1679737773},"f0587c21-54d0-429d-8efe-18a93dacb18d":{"id":"theme:5fc04cc678cb54567aedb51027933002","title":"Enfold","type":"theme","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/dynamic_avia\/avia-footer-scripts-(.*).js","var avia_is_mobile"],"is_default":0,"condition":"enfold","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"cc0550cb-918e-419d-b4f2-1809cf666dbb":{"id":"theme:eb759a03d0ca292c948f09d004a2963f","title":"Enfold - LayerSlider","type":"theme","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","layerslider"],"is_default":0,"condition":"enfold","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"ec883654-4f63-4fae-a3ef-923dcbc2426d":{"title":"Enfold - Shortcodes","condition":"enfold","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/enfold\/js\/avia.js","\/enfold\/js\/shortcodes.js","\/enfold\/config-templatebuilder\/avia-shortcodes\/","\/enfold\/js\/avia-compat.js","\/enfold\/js\/waypoints\/waypoints.min.js","\/enfold\/js\/avia-snippet-(.*).js"],"icon_url":"","type":"theme","id":"theme:072fc4077d7071791d774d6ddbf5dc2a","is_default":0,"created_at":1684519716},"fe3546f0-be3e-4173-8992-a7f6f203b82f":{"title":"Envision","condition":"envision","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/envision\/lib\/js\/app.min.js","var CloudFwOp"],"is_default":1,"icon_url":"","type":"theme","id":"theme:fc5f7d69b646ed95835badc0fc23bc11","created_at":1679737494},"d997b942-19de-4710-9c81-79d3c65cbd76":{"id":"theme:047f009f2a1f4cdf2088c46be47e385b","title":"Ewebot","type":"theme","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/gt3-themes-core\/","\/uploads\/gt3-assets\/js\/(.*)","\/wp-includes\/js\/imagesloaded.min.js"],"is_default":0,"condition":"ewebot","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"53d29aec-8ae4-4273-b748-f5bd52dfe177":{"title":"Farvis","condition":"farvis","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/farvis\/"],"icon_url":"","type":"theme","id":"theme:26bff2f3a6ff6347d35edf5c77a35687","is_default":0,"created_at":1679737972},"fb01246b-a5f8-4021-b514-c02cf55e80bd":{"title":"Flatsome","condition":"flatsome","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/flatsome\/assets\/js\/flatsome.js","\/flatsome\/assets\/libs\/packery.pkgd.min.js","\/flatsome\/assets\/js\/woocommerce.js"],"icon_url":"","type":"theme","id":"theme:26fb1cf80f074ca199d8a7e94c5fc796","is_default":0,"created_at":1679738732},"4d65dc12-9ce7-4171-94a7-9821fd95240e":{"id":"theme:28a6f8b3319c107a34603be0f01a4bcf","title":"Flatsome - Google map","type":"theme","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","maps.googleapis.com","google.maps.LatLng","\/wp-includes\/js\/hoverIntent.min.js"],"is_default":0,"condition":"flatsome","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"890e15b6-c66b-4a9e-9b7d-55417df94916":{"title":"Flatsome - Images","condition":"flatsome","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/flatsome\/inc\/integrations\/wp-rocket\/flatsome-wp-rocket.js","\/flatsome\/assets\/js\/flatsome.js","\/flatsome\/inc\/extensions\/flatsome-lazy-load\/flatsome-lazy-load.js"],"icon_url":"","type":"theme","id":"theme:f2d60aad9f2f5395e3e145cf8f8ab165","is_default":0,"created_at":1679737691},"cb54d070-8ee0-4c35-9fa9-b2bac73ccf39":{"title":"Frida","condition":"frida","exclusions":["\/wp-includes\/js\/jquery\/jquery.min.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/frida\/"],"icon_url":"","type":"theme","id":"theme:109ddf56796a5133e12279f3daa5ff62","is_default":0,"created_at":1679738013},"9e78539a-03d9-442b-ab94-dd3b7a9658e4":{"id":"theme:80a330247d61d729fcd78dc01de6ed2f","title":"GeneratePress - Mobile menu","type":"theme","icon":"","exclusions":["\/generatepress\/assets\/js\/menu.min.js","generatepressMenu","\/gp-premium\/menu-plus\/functions\/js\/offside.min.js"],"is_default":0,"condition":"generatepress","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"2c72e7e6-cb77-44e9-af87-d5c42ae6db52":{"title":"Honor - WPBakery fix","condition":"honor","exclusions":["\/honor\/js\/__scripts.js","HONOR_STORAGE","\/js_composer\/"],"icon_url":"","type":"theme","id":"theme:9f228373ff4d172655dbf5cb3b1bc23a","is_default":0,"created_at":1679736895},"9309d1d3-1035-4a2c-8ced-075bc3ff9957":{"title":"HotelMaster","condition":"hotelmaster","exclusions":["\/wp-includes\/js\/jquery\/jquery.min.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/hotelmaster\/javascript\/gdlr-script.js","\/hotelmaster\/plugins\/dl-menu\/modernizr.custom.js","\/hotelmaster\/plugins\/dl-menu\/jquery.dlmenu.js","\/hotelmaster\/plugins\/superfish\/js\/superfish.js","\/hotelmaster\/plugins\/jquery.easing.js"],"icon_url":"","type":"theme","id":"theme:978eaddad3b1047e479407b6d92197aa","is_default":0,"created_at":1679738595},"4a09f745-cbb1-47c8-b50a-c8014d5d1335":{"id":"theme:e813a548bceac6765a1cdf2316f1a6ab","title":"HotelMaster - Blog","type":"theme","icon":"","exclusions":["\/wp-includes\/js\/masonry.min.js","\/gp-premium\/blog\/functions\/js\/scripts.min.js","\/wp-includes\/js\/imagesloaded.min.js"],"is_default":0,"condition":"hotelmaster","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"f2d8f704-ec68-4278-9ca2-885daa0c1ce5":{"id":"theme:398a264e302e42640553681e8759cd07","title":"HotelMaster - Masonry","type":"theme","icon":"","exclusions":["\/gp-premium\/menu-plus\/functions\/js\/offside.min.js","offSide"],"is_default":0,"condition":"hotelmaster","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"df52436c-53d6-461a-b81a-cd0b21680524":{"title":"JNews","condition":"jnews","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate.min.js","\/jnews\/assets\/js\/","jnews","jfla"],"icon_url":"","type":"theme","id":"theme:5d90e451984f9d894b1aabb0d00f30a2","is_default":0,"created_at":1679738860},"87ed69a2-3295-4fad-a82e-eeb02925a5dc":{"title":"Jobify","condition":"jobify","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js ","\/jquery-migrate(.min)?.js","\/jobify\/js\/jobify.min.js","\/jobify\/js\/select2.full.min.js"],"icon_url":"","type":"theme","id":"theme:592006aa4562a6915e344e5e2a09e5ee","is_default":0,"created_at":1686856948},"28a0b1ea-8d2f-4931-a48a-166b8df8a773":{"title":"JOYN","condition":"joyn","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/swift-framework\/includes\/page-builder\/frontend-assets\/js\/lib\/modernizr-custom.js","\/swift-framework\/includes\/page-builder\/frontend-assets\/js\/spb-functions.min.js","\/swift-framework\/includes\/swift-slider\/assets\/js\/swift-slider.min.js","\/swift-framework\/public\/js\/lib\/imagesloaded.pkgd.min.js","\/joyn\/js\/owl.carousel.min.js","\/joyn\/js\/theme-scripts.js","\/joyn\/js\/functions.js"],"icon_url":"","type":"theme","id":"theme:c395470ad2d4d681836cd942bbb03120","is_default":0,"created_at":1679738527},"542be60a-2346-4740-9a41-8a580c4f013c":{"title":"Juno Toys","condition":"junotoys","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate.min.js","\/junotoys\/fw\/js\/core.init.js","\/junotoys\/fw\/js\/core.utils.js","\/junotoys\/fw\/js\/superfish.js","\/junotoys\/fw\/js\/swiper\/swiper.js","\/trx_utils\/shortcodes\/theme.shortcodes.js","\/wp-includes\/js\/jquery\/ui\/(.*)"],"icon_url":"","type":"theme","id":"theme:2acab38e8356d36355bb81d931e7fba4","is_default":0,"created_at":1679737788},"06167710-10c7-446e-a08b-ce676e444102":{"title":"Jupiter","condition":"jupiter","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/jupiter\/","\/wp-includes\/js\/underscore.min.js","WebFont.load"],"icon_url":"","type":"theme","id":"theme:89c5c30498c2989611f9044be006197c","is_default":0,"created_at":1679738430},"5d042e1f-7e62-4ec4-ba31-30d396004522":{"title":"JupiterX","condition":"jupiterx","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/jupiterx\/(.*).js","\/wp-includes\/js\/underscore.min.js","WebFont.load"],"icon_url":"","type":"theme","id":"theme:b06632962a4948d4944fd8d79ffbfceb","is_default":0,"created_at":1679737312},"c4b030ea-66a1-4729-85bf-a484e373a316":{"title":"Kadence","condition":"kadence","exclusions":["\/kadence\/assets\/js\/navigation.min.js","mobile_menu_breakpoint ","kadenceConfig"],"icon_url":"","type":"theme","id":"theme:4b7907ee68218db279648da9bf7102d1","is_default":0,"created_at":1679737958},"20c605b4-3e3a-4bb0-a5e5-a08e2cb0f31f":{"title":"Kalium","condition":"kalium","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/kalium\/assets\/js\/main.min.js","mobile_menu_breakpoint","var _k"],"icon_url":"","type":"theme","id":"theme:1fcb99a1ab06e1e36635365ed3e59ce5","is_default":0,"created_at":1679737406},"e1e04a7d-635a-4e28-83d9-e345ce40e354":{"title":"Kava","condition":"kava","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/kava\/assets\/js\/theme-script.js"],"icon_url":"","type":"theme","id":"theme:359d67efbf530c998245225dd3245a88","is_default":0,"created_at":1679738609},"e833c36e-ee89-4924-b608-3f28327c2f85":{"title":"Lay","condition":"lay","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/wp-includes\/js\/backbone.min.js","\/wp-includes\/js\/underscore.min.js","\/lay\/","\/laytheme-carousel\/","window.laytheme"],"icon_url":"","type":"theme","id":"theme:7c718c6da874ea6e4b27c6d70bc4e7e8","is_default":0,"created_at":1679737453},"2df2ef47-a833-4711-ba54-48dc62586f37":{"id":"theme:85d9922ac61ed833fd047a67029df8e5","title":"LazaNews","type":"theme","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/jquery.custom.js"],"is_default":0,"condition":"lazanews","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"9443304a-34e9-4700-a03a-5f8f62f83ed1":{"title":"Listeo","condition":"listeo","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/listeo\/js\/"],"icon_url":"","type":"theme","id":"theme:db7da585545001f5ae614a2810f08f3a","is_default":0,"created_at":1679737244},"77afa73c-c4a8-42a8-aaee-43f6a761364e":{"title":"ListingPro","condition":"listingpro","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/listingpro\/assets\/lib\/jquerym.menu\/js\/jquery.mmenu.min.all.js","\/listingpro\/assets\/lib\/Magnific-Popup-master\/jquery.magnific-popup.min.js","\/listingpro\/assets\/js\/select2.full.min.js","\/listingpro\/assets\/js\/jquery.city-autocomplete.js","\/listingpro\/assets\/js\/chosen.jquery.min.js","\/listingpro\/assets\/lib\/bootstrap\/js\/bootstrap-slider.js","\/listingpro\/assets\/js\/jquery-ui.js","\/listingpro\/assets\/js\/mapbox.js","\/listingpro\/assets\/js\/main.js","\/listingpro\/assets\/js\/leaflet.markercluster.js","maps"],"icon_url":"","type":"theme","id":"theme:0b365e43dfc65d2b1b70fac6510c7c9c","is_default":0,"created_at":1679737938},"01b369b5-b578-4314-8e95-40b67a41d75a":{"title":"Master Study","condition":"masterstudy","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/masterstudy\/assets\/js\/custom.js ","\/masterstudy\/assets\/vendors\/jquery.fancybox.min.js ","\/masterstudy\/assets\/js\/select2.full.min.js"],"icon_url":"","type":"theme","id":"theme:0ee224c20e4ef7d546733d933db598f2","is_default":0,"created_at":1679737878},"6b000cc7-d33b-4109-9c39-6119a5d81cde":{"title":"Maya","condition":"maya","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/maya\/js\/jquery.mobilemenu.js","\/maya\/js\/jquery.custom.js","\/maya\/core\/includes\/js\/jquery.tipsy.js"],"icon_url":"","type":"theme","id":"theme:719fe28004fcdd81a820602924aa8074","is_default":0,"created_at":1679737916},"ef3c76d6-1041-473d-81ea-a5a6e8c86735":{"title":"MH Magazine","condition":"mh-magazine","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/mh-magazine\/"],"icon_url":"","type":"theme","id":"theme:2a0cd6efc2f46be69de61712729a2ec9","is_default":0,"created_at":1679737743},"9cbb2777-5524-43b8-af36-692b27452c0d":{"title":"Minimog","condition":"minimog","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/minimog\/"],"icon_url":"","type":"theme","id":"theme:61c0c235042359ee7d2a9035e79a7da2","is_default":0,"created_at":1679738135},"7eb81c74-8062-4a6c-bf66-b7c5bc160141":{"title":"Moozo Elementor","condition":"moozo-elementor","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/moozo-elementor\/assets\/js\/countdown.js","\/moozo-elementor\/assets\/vendor\/countdown\/countdown.min.js"],"icon_url":"","type":"theme","id":"theme:2ddb538c8e6b6c766fffd0d5c861fd82","is_default":0,"created_at":1679738623},"e90b7bfa-9ff6-4e1a-bf29-6207d55fdd39":{"title":"Motor","condition":"motor","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/motor\/js\/"],"icon_url":"","type":"theme","id":"theme:b33538179f5661a86cbe327a1793e199","is_default":0,"created_at":1683973354},"445e625a-f955-41fa-84de-65d9ea19be07":{"title":"My Listing","condition":"my-listing","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/my-listing\/assets\/","\/wp-includes\/js\/dist\/vendor\/moment.min.js","maps.googleapis.com","MyListing","_Explore_Settings"],"icon_url":"","type":"theme","id":"theme:afacb777229ddf5cabceacc64948057d","is_default":0,"created_at":1679737725},"00b8cd2d-2781-4fbb-ac5d-00750ba94ac9":{"title":"Neve - Mobile menu","condition":"neve","exclusions":["\/neve\/assets\/js\/build\/modern\/frontend.js"],"icon_url":"","type":"theme","id":"theme:5ae731cc06dd9284f8172675a6fe81ab","is_default":0,"created_at":1679738714},"483abc54-f1fc-47dc-bfc1-a269c7d1c849":{"title":"Newspaper - Images","condition":"Newspaper","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","tagdiv_theme.min.js","tdBlocksArray","\/wp-includes\/js\/underscore.min.js","\/td-cloud-library\/assets\/js\/","\/npm\/slick-carousel@1.8.1\/slick\/slick.min.js","tdb-gallery-wrap","tdBlocksArray","tdb_"],"icon_url":"","type":"theme","id":"theme:649ff22527bac2b1c8e0115cd3851d53","is_default":0,"created_at":1695805761},"50db8d14-d421-4237-be14-a6f7b5c11ec5":{"title":"Newspaper - Slider & YouTube","condition":"Newspaper","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","tagdiv_theme.min.js","tdBlocksArray","tdb_globals","td_youtube_list_ids","iosSlider","\/td-cloud-library\/assets\/js\/js_files_for_front.min.js","\/wp-includes\/js\/underscore.min.js","\/td-cloud-library\/assets\/js\/","\/npm\/slick-carousel@1.8.1\/slick\/slick.min.js","tdb-gallery-wrap","tdBlocksArray","tdb_"],"icon_url":"","type":"theme","id":"theme:7e2eeee57ae458c5959342eda6526bf1","is_default":0,"created_at":1695805747},"514f4c30-2b67-4648-960e-dfe1cc401ca5":{"title":"Niva","condition":"niva","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/niva\/js\/","\/sweetthemes-framework\/js\/","mt_typed"],"icon_url":"","type":"theme","id":"theme:c4838f73a344b829ed626635e210dcf4","is_default":0,"created_at":1679738256},"e67ee504-c3b1-455e-88ab-1fae8c830652":{"title":"OceanWP","condition":"oceanwp","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/oceanwp\/"],"icon_url":"","type":"theme","id":"theme:db37af4b7d12695d37d9256313a5f37a","is_default":0,"created_at":1679737552},"e44e240a-8765-4f4f-b67e-d54e4b727506":{"title":"OceanWP - Mobile menu","condition":"oceanwp","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/ocean-side-panel\/assets\/js\/side-panel.min.js","\/oceanwp\/assets\/js\/theme.vanilla.min.js"],"icon_url":"","type":"theme","id":"theme:9babbcd52b2ce558d299a06cd1130a11","is_default":0,"created_at":1679738463},"897b0100-958d-4a02-b6b2-1e753e9869f4":{"title":"PenNews","condition":"pennews","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js ","\/jquery-migrate(.min)?.js","\/pennews\/js\/script.min.js","\/pennews\/js\/script.lib.min.js"],"icon_url":"","type":"theme","id":"theme:02811fa00bc1471bb5be0457ce0ee005","is_default":0,"created_at":1679737471},"edd3ba03-e0fd-4b6e-911b-60b29f3471bf":{"title":"Pharmacy Mentor","condition":"pharmacymentor","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/pharmacymentor\/"],"icon_url":"","type":"theme","id":"theme:3188aaf1ef2c39937450f2a14ebb1174","is_default":0,"created_at":1679738214},"725415ff-cc76-45cc-a131-3170e5aa30fc":{"title":"Porto","condition":"porto","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-includes\/js\/jquery\/ui\/","\/porto\/js\/theme.js","\/porto\/js\/theme.min.js"],"icon_url":"","type":"theme","id":"theme:8493f398f200c8dffe60d46439dd3360","is_default":0,"created_at":1679737758},"2c19bcec-f3ff-4873-bfd7-db6bc0f6433c":{"title":"Porto - Owl Carousel","condition":"porto","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/wp-includes\/js\/jquery\/ui\/","\/porto\/js\/theme(|.min).js","\/porto\/js\/libs\/owl.carousel(|.min).js","\/porto\/js\/theme-async(|.min).js","\/prettyPhoto\/jquery.prettyPhoto(|.min).js"],"icon_url":"","type":"theme","id":"theme:f34f5199fb7fca78852cd3fb7758f178","is_default":0,"created_at":1687527252},"31347ccb-f69e-4cd3-bd47-b80ce14ac76e":{"title":"ProPhoto","condition":"prophoto7","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/prophoto7\/js\/bundle.front.js","\/wp-includes\/js\/underscore.min.js","PROPHOTO"],"icon_url":"","type":"theme","id":"theme:a5836a56c4472fade4dc6ebfe2281554","is_default":0,"created_at":1679737425},"a8208c04-865c-49aa-ab96-41e378d391c8":{"title":"Publisher","condition":"publisher","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/publisher\/js\/"],"icon_url":"","type":"theme","id":"theme:32c73be0cb175da278c8e2af0811b0d1","is_default":0,"created_at":1679738169},"a0d69f3d-1356-4a1d-a600-2f2f788b8a9a":{"title":"REHub","condition":"rehub-theme","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/rehub-theme\/js\/custom_floatpanel.js"],"icon_url":"","type":"theme","id":"theme:321af1febb74f488cf911380893739b2","is_default":0,"created_at":1679738502},"8b74bbe5-7f32-42df-908f-78c99a8cad82":{"title":"Rey","condition":"rey","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/rey\/scripts-(.*).js","\/rey-core\/assets\/js\/"],"icon_url":"","type":"theme","id":"theme:e46567cd0f3ec9b37e7230dc87eac367","is_default":0,"created_at":1679737011},"5c9115d3-bcbd-49d6-8feb-4880d2b82bfe":{"title":"Rife Free","condition":"rife-free","exclusions":["\/rife-free\/js\/script.min.js","\/rife-free\/js\/isotope.pkgd.min.js","\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","var reJS"],"icon_url":"","type":"theme","id":"theme:74a449954de79625eccc6750e87af8f6","is_default":0,"created_at":1679738107},"6542b2fd-1f91-4862-aa18-11eecc02faaf":{"title":"Roisin","condition":"roisin","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/themes\/roisin\/assets\/js\/main.min.js","\/plugins\/roisin-core\/assets\/js\/roisin-core.min.js","\/wp-includes\/js\/hoverIntent.min.js"],"icon_url":"","type":"theme","id":"theme:8f38fe58034772931110930b91cb6797","is_default":0,"created_at":1685964523},"5a192ad9-d150-4aa0-8efc-d68131cb7a37":{"title":"Sahifa - Mobile Menu","condition":"sahifa","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/themes\/sahifa\/js\/ilightbox.packed.js","\/translate_a\/element.js"],"icon_url":"","type":"theme","id":"theme:06ebe49f4c1e5b04cece831f8bb198a3","is_default":0,"created_at":1687540363},"7ae9d978-d63c-4a58-beb3-418bebb5b23c":{"title":"Salient","condition":"salient","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js ","\/jquery-migrate(.min)?.js","\/salient\/","winW > bodyW"],"icon_url":"","type":"theme","id":"theme:b3e12d57ac23897be1bb2c673e3fc761","is_default":0,"created_at":1679736950},"35aaa6c5-4a37-4161-b504-fb3ebc4b1148":{"id":"theme:d612db1dd8dc76faa6a36a9ebfd336dc","title":"Salient - Nectar slider","type":"theme","icon":"","exclusions":["\/salient-nectar-slider\/js\/nectar-slider.js","\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js ","\/jquery-migrate(.min)?.js"],"is_default":0,"condition":"salient","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"84c95206-3e59-4eb3-a0c9-e2231a1c0a48":{"title":"SEO Lounge","condition":"seolounge","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?$","\/js_composer\/assets\/js\/dist\/js_composer_front.min.js","\/seolounge\/js\/radiantthemes-custom.js","\/seolounge\/js\/radiantthemes-core.min.js"],"icon_url":"","type":"theme","id":"theme:3d72b779d9c4ba6b51cc5b245b141433","is_default":0,"created_at":1691695809},"cd44aa56-088a-40dd-bf1e-f835efa68626":{"title":"Shoptimizer","condition":"shoptimizer","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/shoptimizer\/assets\/js\/lazyload-bg.js","\/shoptimizer\/assets\/js\/main.min.js"],"icon_url":"","type":"theme","id":"theme:6c32b43f4da639e5901574fac6b7d387","is_default":0,"created_at":1679737143},"d2c48a48-430a-4eea-bc05-99b66f1f6a7b":{"title":"SmartMag","condition":"smart-mag","exclusions":["\/smart-mag\/js\/lazyload.js"],"icon_url":"","type":"theme","id":"theme:23d6b7878bd0087addb067db3fa39864","is_default":0,"created_at":1679738490},"dd0d9133-ef17-4dac-b174-9f25d535838f":{"title":"Soledad","condition":"soledad","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/soledad\/js\/main.js","\/soledad\/js\/more-post.js","\/soledad\/js\/libs-script.min.js"],"icon_url":"","type":"theme","id":"theme:d3f78b26c2d11c99230171cc6378d06e","is_default":0,"created_at":1679737664},"d657dc56-5c04-439a-8987-401f89a65bf9":{"title":"Stockholm","condition":"stockholm","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/stockholm\/js\/"],"icon_url":"","type":"theme","id":"theme:fcfff492e00727b63cf5dff9f59bc2a4","is_default":0,"created_at":1679738378},"121f9b1b-d3cd-4dde-915e-0b348abf6687":{"title":"Storefront","condition":"storefront","exclusions":["\/storefront\/assets\/js\/navigation.min.js"],"icon_url":"","type":"theme","id":"theme:f0dca7e4eaedf573d4664be249845942","is_default":0,"created_at":1679738793},"41cfc83f-ff02-4a35-a3b7-e92db213b224":{"title":"StreamTube","condition":"streamtube","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/streamtube\/","\/streamtube-core\/"],"icon_url":"","type":"theme","id":"theme:9772ccddd470688f6bc6aee86e34d29b","is_default":0,"created_at":1679331431},"aec0a548-4c6b-400a-80ed-19a49e0faef0":{"title":"The7","condition":"dt-the7","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","loader-removed","\/Ultimate_VC_Addons\/assets\/min-js\/","\/dt-the7\/","\/js_composer\/"],"icon_url":"","type":"theme","id":"theme:7934c689fd20e30b6bfc69bb9d46cb63","is_default":0,"created_at":1679737892},"538354ff-d69f-40be-b0cc-df3790599dd2":{"title":"TheGem","condition":"thegem","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/thegem\/js\/","gemSettings","thegemSlideshow","tgpLazyItemsOptions"],"icon_url":"","type":"theme","id":"theme:153c54fe73897da838ce39152b1db5a8","is_default":0,"created_at":1679738477},"68f2de3b-e2b8-4edf-b82f-93fd7834c65f":{"title":"Total","condition":"Total","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/Total\/assets\/js\/total.min.js"],"icon_url":"","type":"theme","id":"theme:96b0141273eabab320119c467cdcaf17","is_default":0,"created_at":1679737571},"6dc1cb35-6b50-4da0-9834-dddf169edaa6":{"id":"theme:7c37c885d7fecf788f635734f99e8610","title":"Townhub","type":"theme","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/townhub-add-ons\/assets\/js\/(.*)","\/wp-includes\/js\/dist\/vendor\/react.js","\/wp-includes\/js\/dist\/vendor\/react-dom.js"],"is_default":0,"condition":"townhub","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"f484f86b-e316-4871-9322-dee3925349fe":{"title":"Travel Monster - Owl Carousel","condition":"travel-monster","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/wp-content\/plugins\/wp-travel-engine\/assets\/lib\/owl-carousel(.*)\/owl.carousel(|.min).js","var isRtl"],"icon_url":"","type":"theme","id":"theme:d3e8da87b3affd399205438fbc8a4f05","is_default":0,"created_at":1690822771},"14cb0a85-8bee-491e-99d7-5f20a07f4bdd":{"title":"Uncode","condition":"uncode","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/uncode\/library\/js\/init(.min)?.js","\/uncode\/library\/js\/plugins(.min)?.js","\/uncode\/library\/js\/app(.min)?.js","\/uncode\/library\/js\/woocommerce-uncode(.min)?.js","\/wp-includes\/js\/mediaelement\/mediaelement-and-player.min.js","initHeader","initBox","fixMenuHeight","initRow"],"icon_url":"","type":"theme","id":"theme:18ba19b98aefbb6c0fde6c6bf92e9cfc","is_default":0,"created_at":1679738154},"88e96479-1aa2-4adc-8f07-20bc0368a63f":{"title":"Werkstatt","condition":"werkstatt","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/js\/underscore.min.js","\/werkstatt\/assets\/js\/vendor.min.js","\/werkstatt\/assets\/js\/fullscreen.min.js","\/werkstatt\/assets\/js\/app.min.js"],"icon_url":"","type":"theme","id":"theme:38faa29db5a07b8fef6aee9cc11cafec","is_default":0,"created_at":1679737639},"60c4110b-a960-4d44-b619-6d79514dbf75":{"title":"Woodmart","condition":"woodmart","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-includes\/js\/imagesloaded.min.js","\/woodmart\/js\/scripts\/wc\/","\/woodmart\/js\/scripts\/global\/","\/woodmart\/js\/libs\/owl.carousel.min.js","\/woodmart\/js\/libs\/owl.carousel.js","\/woodmart\/js\/libs\/slick.js","\/woodmart\/js\/libs\/autocomplete.min.js"],"icon_url":"","type":"theme","id":"theme:06338f13cb89e5309ad2eb7e4d457be4","is_default":0,"created_at":1695633901},"119ebd1c-6b46-4f07-8d6a-3498d9c8814f":{"title":"XStore","condition":"xstore","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/xstore\/js\/","\/et-core-plugin\/packages\/st-woo-swatches\/public\/js\/frontend.min.js"],"icon_url":"","type":"theme","id":"theme:3de9d9ba385200548f177d9c704ae92a","is_default":0,"created_at":1679738190},"9a7a548c-07a1-4dff-93fc-6e8230b67853":{"id":"theme:119d329456073aa10969d7cbd9760f28","title":"YOOtheme Pro","type":"theme","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","uikit.min.js"],"is_default":0,"condition":"yootheme","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"f74c499e-b7d9-4590-8671-379f51f468c8":{"title":"Zeen","condition":"zeen","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/zeen\/assets\/js\/","\/js.cookie.min.js"],"icon_url":"","type":"theme","id":"theme:acb52844f996627788836366404a3245","is_default":0,"created_at":1679737859}},"scripts":{"dd0c5a5b-ec56-49f9-9aa4-89e1e3a6a28a":{"title":"Amazon Ads","exclusions":["amazon-adsystem.com"],"icon_url":"","type":"script","id":"script:b82a5936d8ea0745016caeb71629ae5d","is_default":0,"created_at":1681390276},"980edf32-c64b-4370-bf23-c62b079e71c3":{"title":"Google AdSense","exclusions":["adsbygoogle"],"icon_url":"","type":"script","id":"script:0206e6040c8ff64b8d6ee5fef2ce1c90","is_default":0,"created_at":1681377840},"2499bb90-0753-4b2b-9bd4-1525f94c7437":{"title":"Google Analytics","exclusions":["google-analytics.com\/analytics.js","ga\\( '","ga\\('"],"icon_url":"","type":"script","id":"script:d86cf69a8b82547a94ca3f6a307cf9a6","is_default":0,"created_at":1681388311},"6f460036-3106-4b8c-9951-d32de9b1258f":{"title":"Google Maps","exclusions":["maps.googleapis.com","maps.google.com"],"icon_url":"","type":"script","id":"script:4d60ab2c6d11d753267484006c23e54c","is_default":0,"created_at":1681390259},"ac2d5720-9418-468c-80a0-3874ee743c0f":{"title":"Google Optimize","exclusions":["a,s,y,n,c,h,i,d,e","googleoptimize.com\/optimize.js","async-hide"],"icon_url":"","type":"script","id":"script:031a0cece38c4739df67f910dcabf1bd","is_default":0,"created_at":1681390261},"122e6ebb-51fd-477f-97fb-559593f1a48b":{"title":"Google Recaptcha","exclusions":["recaptcha"],"icon_url":"","type":"script","id":"script:032cb16577cbf07bc7c02bac83bd936d","is_default":0,"created_at":1681390264},"219277ae-b2ac-4d42-913d-eaea40985295":{"title":"Google Tag Manager","exclusions":["\/gtag\/js","gtag\\(","\/gtm.js","async-hide"],"icon_url":"","type":"script","id":"script:1d3c65b2b03ef35e14df6b163ea3a1f6","is_default":0,"created_at":1681390266},"f632e3f4-20e6-471e-a78d-86afbea63586":{"title":"HubSpot","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","js.hsforms.net","hbspt.forms.create"],"icon_url":"","type":"script","id":"script:de4bd8ef4675ebb85a055955de76d0ee","is_default":0,"created_at":1679331623},"5d606add-ffb8-4a06-b295-5f722710fbfd":{"title":"Refari","exclusions":["widget.refari.co","refari"],"icon_url":"","type":"script","id":"script:a705e197b13b47e72a105c923e044358","is_default":0,"created_at":1683797056},"742ec14a-27a1-4789-b9c8-a9c3a3cf7042":{"title":"Reviews.io","exclusions":["\/carousel-inline-iframeless\/dist.js","carouselInlineWidget"],"icon_url":"","type":"script","id":"script:4df445c576f45889506ba175a4c39fdc","is_default":0,"created_at":1684389426},"05d3eb78-f574-49be-95e1-3f11714005d1":{"id":"script:ce7566d1d08cc094b74cf283cf9c56a5","title":"Stripe","type":"script","icon":"","exclusions":["js.stripe.com"],"is_default":0,"condition":"","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"b56bf06c-2f8c-4757-b536-a689fb0e75f9":{"title":"Typekit","exclusions":["typekit"],"icon_url":"","type":"script","id":"script:7815e38b93e3b500a632681bd594bd61","is_default":0,"created_at":1681390268},"49c38c0a-43b9-4237-88cb-57ddd519f0ad":{"title":"Venatus Media","exclusions":["\/ad-manager.min.js","__vm_add"],"icon_url":"","type":"script","id":"script:abe11528732aed9a19a97e73b242faa5","is_default":0,"created_at":1681390272},"2c1d0998-8ab5-478c-8eb9-9e375b46363e":{"title":"Wistia","exclusions":["fast.wistia.com"],"icon_url":"","type":"script","id":"script:9a0111f8c3186c1cb3113587c660c041","is_default":0,"created_at":1681390274},"0627fe24-7e9d-400f-b064-d98bec2ba85e":{"id":"script:dbd1875130c71eb4b2ef768ad18d820c","title":"Yandex Ads","type":"script","icon":"","exclusions":["yandex.ru","window.yaContextCb"],"is_default":0,"condition":"","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""}}} \ No newline at end of file From a233ee5b60a19a88201b1e2ceaa9fe3afffe72fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20Perona?= Date: Tue, 24 Oct 2023 09:49:07 -0400 Subject: [PATCH 13/13] update version to 3.15.3 --- wp-rocket.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wp-rocket.php b/wp-rocket.php index d5859019a9..ad5b204709 100755 --- a/wp-rocket.php +++ b/wp-rocket.php @@ -3,7 +3,7 @@ * Plugin Name: WP Rocket * Plugin URI: https://wp-rocket.me * Description: The best WordPress performance plugin. - * Version: 3.15.3-alpha1 + * Version: 3.15.3 * Requires at least: 5.8 * Requires PHP: 7.3 * Code Name: Iego @@ -20,7 +20,7 @@ defined( 'ABSPATH' ) || exit; // Rocket defines. -define( 'WP_ROCKET_VERSION', '3.15.3-alpha1' ); +define( 'WP_ROCKET_VERSION', '3.15.3' ); define( 'WP_ROCKET_WP_VERSION', '5.8' ); define( 'WP_ROCKET_WP_VERSION_TESTED', '6.3.1' ); define( 'WP_ROCKET_PHP_VERSION', '7.3' );