PluginProbe ʕ •ᴥ•ʔ
Matomo Analytics – Powerful, Privacy-First Insights for WordPress / trunk
Matomo Analytics – Powerful, Privacy-First Insights for WordPress vtrunk
5.11.1 5.11.0 5.10.2 5.10.1 trunk 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.3.0 1.3.1 1.3.2 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.1.0 4.1.1 4.1.2 4.1.3 4.10.0 4.11.0 4.12.0 4.13.0 4.13.2 4.13.3 4.13.4 4.13.5 4.14.0 4.14.1 4.14.2 4.15.0 4.15.1 4.15.2 4.15.3 4.2.0 4.3.0 4.3.1 4.4.1 4.4.2 4.5.0 4.6.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 5.0.8 5.1.0 5.1.1 5.1.2 5.1.3 5.1.4 5.1.5 5.1.6 5.1.7 5.10.0 5.2.0 5.2.1 5.2.2 5.3.0 5.3.1 5.3.2 5.3.3 5.6.0 5.6.1 5.7.0 5.7.1 5.8.0 5.8.1 5.8.2
matomo / app / core / AssetManager / UIAssetMinifier.php
matomo / app / core / AssetManager Last commit date
UIAsset 1 year ago UIAssetFetcher 1 month ago UIAssetMerger 1 month ago UIAsset.php 2 years ago UIAssetCacheBuster.php 7 months ago UIAssetCatalog.php 5 months ago UIAssetCatalogSorter.php 2 years ago UIAssetFetcher.php 1 year ago UIAssetMerger.php 1 year ago UIAssetMinifier.php 1 year ago
UIAssetMinifier.php
59 lines
1 <?php
2
3 /**
4 * Matomo - free/libre analytics platform
5 *
6 * @link https://matomo.org
7 * @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
8 *
9 * @method static \Piwik\AssetManager\UIAssetMinifier getInstance()
10 */
11 namespace Piwik\AssetManager;
12
13 use Exception;
14 use JShrink\Minifier;
15 use Piwik\Singleton;
16 class UIAssetMinifier extends Singleton
17 {
18 public const MINIFIED_JS_RATIO = 100;
19 protected function __construct()
20 {
21 self::validateDependency();
22 parent::__construct();
23 }
24 /**
25 * Indicates if the provided JavaScript content has already been minified or not.
26 * The heuristic is based on a custom ratio : (size of file) / (number of lines).
27 * The threshold (100) has been found empirically on existing files :
28 * - the ratio never exceeds 50 for non-minified content and
29 * - it never goes under 150 for minified content.
30 *
31 * @param string $content Contents of the JavaScript file
32 * @return boolean
33 */
34 public function isMinifiedJs($content)
35 {
36 $lineCount = substr_count($content, "\n");
37 if ($lineCount == 0) {
38 return \true;
39 }
40 $contentSize = strlen($content);
41 $ratio = $contentSize / $lineCount;
42 return $ratio > self::MINIFIED_JS_RATIO;
43 }
44 /**
45 * @param string $content
46 * @return string
47 */
48 public function minifyJs($content)
49 {
50 return Minifier::minify($content);
51 }
52 private static function validateDependency()
53 {
54 if (!class_exists("JShrink\\Minifier")) {
55 throw new Exception("JShrink could not be found, maybe you are using Matomo from git and need to update Composer. \$ php composer.phar update");
56 }
57 }
58 }
59