7 class Script extends \Rsi\Fred\Minify\Handler{
11 protected $_url =
'http://mist.shitware.nl/tool/minify-js.php?key=********';
17 foreach($messages as $message){
18 foreach($this->_ignore as $ignore)
if(($descr = $message[
'description'] ??
null) && preg_match($ignore,$descr))
continue 2;
19 $prio = $this->_levels[$level = $message[
'level'] ??
null] ??
Log::INFO;
20 $this->_minify->log->add($prio,
"Script $level: $descr",$filename,$message[
'line'] ??
null,$message);
24 protected function local($script,$filename =
null){
25 if(!$this->_java || !$this->_jar)
return false;
26 $source = \Rsi\File::tempFile(
'js',$script);
27 $target = \Rsi\File::tempFile(
'js');
28 $this->
processMessages(json_decode(shell_exec(
"{$this->_java} -jar {$this->_jar} --js $source --language_out ECMASCRIPT_2015 --rewrite_polyfills=false --js_output_file $target --warning_level VERBOSE --error_format JSON 2>&1"),
true) ?: [],$filename);
29 $minified = file_get_contents($target);
35 protected function service($script,$filename =
null){
36 $ch = curl_init($this->_url);
37 curl_setopt($ch,CURLOPT_POSTFIELDS,$script);
38 curl_setopt($ch,CURLOPT_RETURNTRANSFER,
true);
39 $response = curl_exec($ch);
42 if($data = json_decode($response,
true)){
44 return $data[
'minified'] ??
null;
46 else $this->_minify->log->error(
'Invalid response',__FILE__,__LINE__,[
'response' => $response,
'error' => json_last_error_msg()]);
48 else $this->_minify->log->error(
'No response',__FILE__,__LINE__,[
'url' => $this->_url]);
52 public function source($source,$filename =
null){
54 return ($this->
local($source,$filename) ?: $this->
service($source,$filename)) ?: $source;
57 $this->_minify->log->error(
'Error while minimizing script: ' . $e->getMessage(),$e->getFile(),$e->getLine());