mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-05-22 05:15:29 +09:00
Add phpass and update composer libraries
This commit is contained in:
parent
9d6284faad
commit
69c5147888
25 changed files with 1039 additions and 161 deletions
3
vendor/matthiasmullie/minify/.coveralls.yml
vendored
3
vendor/matthiasmullie/minify/.coveralls.yml
vendored
|
|
@ -1,3 +0,0 @@
|
|||
src_dir: src
|
||||
coverage_clover: build/logs/clover.xml
|
||||
json_path: build/logs/coveralls-upload.json
|
||||
59
vendor/matthiasmullie/minify/CONTRIBUTING.md
vendored
Normal file
59
vendor/matthiasmullie/minify/CONTRIBUTING.md
vendored
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
# How to contribute
|
||||
|
||||
|
||||
## Issues
|
||||
|
||||
When [filing bugs](https://github.com/matthiasmullie/minify/issues/new),
|
||||
try to be as thorough as possible:
|
||||
* What version did you use?
|
||||
* What did you try to do? ***Please post the relevant parts of your code.***
|
||||
* What went wrong? ***Please include error messages, if any.***
|
||||
* What was the expected result?
|
||||
|
||||
|
||||
## Pull requests
|
||||
|
||||
Bug fixes and general improvements to the existing codebase are always welcome.
|
||||
New features are also welcome, but will be judged on an individual basis. If
|
||||
you'd rather not risk wasting your time implementing a new feature only to see
|
||||
it turned down, please start the discussion by
|
||||
[opening an issue](https://github.com/matthiasmullie/minify/issues/new).
|
||||
|
||||
Don't forget to add your changes to the [changelog](CHANGELOG.md).
|
||||
|
||||
|
||||
### Testing
|
||||
|
||||
Please include tests for every change or addition to the code.
|
||||
To run the complete test suite:
|
||||
|
||||
```sh
|
||||
vendor/bin/phpunit
|
||||
```
|
||||
|
||||
When submitting a new pull request, please make sure that that the test suite
|
||||
passes (Travis CI will run it & report back on your pull request.)
|
||||
|
||||
To run the tests on Windows, run `tests/convert_symlinks_to_windows_style.sh`
|
||||
from the command line in order to convert Linux-style test symlinks to
|
||||
Windows-style.
|
||||
|
||||
|
||||
### Coding standards
|
||||
|
||||
All code must follow [PSR-2](http://www.php-fig.org/psr/psr-2/). Just make sure
|
||||
to run php-cs-fixer before submitting the code, it'll take care of the
|
||||
formatting for you:
|
||||
|
||||
```sh
|
||||
vendor/bin/php-cs-fixer fix src
|
||||
vendor/bin/php-cs-fixer fix tests
|
||||
```
|
||||
|
||||
Document the code thoroughly!
|
||||
|
||||
|
||||
## License
|
||||
|
||||
Note that minify is MIT-licensed, which basically allows anyone to do
|
||||
anything they like with it, without restriction.
|
||||
3
vendor/matthiasmullie/minify/composer.json
vendored
3
vendor/matthiasmullie/minify/composer.json
vendored
|
|
@ -20,8 +20,7 @@
|
|||
},
|
||||
"require-dev": {
|
||||
"matthiasmullie/scrapbook": "~1.0",
|
||||
"phpunit/phpunit": "~4.8",
|
||||
"satooshi/php-coveralls": "~1.0"
|
||||
"phpunit/phpunit": "~4.8"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
|
|
|
|||
78
vendor/matthiasmullie/minify/src/CSS.php
vendored
78
vendor/matthiasmullie/minify/src/CSS.php
vendored
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
namespace MatthiasMullie\Minify;
|
||||
|
||||
use MatthiasMullie\Minify\Exceptions\FileImportException;
|
||||
use MatthiasMullie\PathConverter\Converter;
|
||||
|
||||
/**
|
||||
|
|
@ -68,7 +69,7 @@ class CSS extends Minify
|
|||
/**
|
||||
* Move any import statements to the top.
|
||||
*
|
||||
* @param $content string Nearly finished CSS content
|
||||
* @param string $content Nearly finished CSS content
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
|
|
@ -94,12 +95,15 @@ class CSS extends Minify
|
|||
* @import's will be loaded and their content merged into the original file,
|
||||
* to save HTTP requests.
|
||||
*
|
||||
* @param string $source The file to combine imports for.
|
||||
* @param string $content The CSS content to combine imports for.
|
||||
* @param string $source The file to combine imports for.
|
||||
* @param string $content The CSS content to combine imports for.
|
||||
* @param string[] $parents Parent paths, for circular reference checks.
|
||||
*
|
||||
* @return string
|
||||
*
|
||||
* @throws FileImportException
|
||||
*/
|
||||
protected function combineImports($source, $content)
|
||||
protected function combineImports($source, $content, $parents)
|
||||
{
|
||||
$importRegexes = array(
|
||||
// @import url(xxx)
|
||||
|
|
@ -208,14 +212,20 @@ class CSS extends Minify
|
|||
|
||||
// only replace the import with the content if we can grab the
|
||||
// content of the file
|
||||
if (strlen($importPath) < PHP_MAXPATHLEN && file_exists($importPath) && is_file($importPath)) {
|
||||
if ($this->canImportFile($importPath)) {
|
||||
// check if current file was not imported previously in the same
|
||||
// import chain.
|
||||
if (in_array($importPath, $parents)) {
|
||||
throw new FileImportException('Failed to import file "'.$importPath.'": circular reference detected.');
|
||||
}
|
||||
|
||||
// grab referenced file & minify it (which may include importing
|
||||
// yet other @import statements recursively)
|
||||
$minifier = new static($importPath);
|
||||
$importContent = $minifier->execute($source);
|
||||
$importContent = $minifier->execute($source, $parents);
|
||||
|
||||
// check if this is only valid for certain media
|
||||
if ($match['media']) {
|
||||
if (!empty($match['media'])) {
|
||||
$importContent = '@media '.$match['media'].'{'.$importContent.'}';
|
||||
}
|
||||
|
||||
|
|
@ -259,20 +269,15 @@ class CSS extends Minify
|
|||
|
||||
// only replace the import with the content if we're able to get
|
||||
// the content of the file, and it's relatively small
|
||||
$import = file_exists($path);
|
||||
$import = $import && is_file($path);
|
||||
$import = $import && filesize($path) <= $this->maxImportSize * 1024;
|
||||
if (!$import) {
|
||||
continue;
|
||||
if ($this->canImportFile($path) && $this->canImportBySize($path)) {
|
||||
// grab content && base64-ize
|
||||
$importContent = $this->load($path);
|
||||
$importContent = base64_encode($importContent);
|
||||
|
||||
// build replacement
|
||||
$search[] = $match[0];
|
||||
$replace[] = 'url('.$this->importExtensions[$extension].';base64,'.$importContent.')';
|
||||
}
|
||||
|
||||
// grab content && base64-ize
|
||||
$importContent = $this->load($path);
|
||||
$importContent = base64_encode($importContent);
|
||||
|
||||
// build replacement
|
||||
$search[] = $match[0];
|
||||
$replace[] = 'url('.$this->importExtensions[$extension].';base64,'.$importContent.')';
|
||||
}
|
||||
|
||||
// replace the import statements
|
||||
|
|
@ -286,15 +291,16 @@ class CSS extends Minify
|
|||
* Minify the data.
|
||||
* Perform CSS optimizations.
|
||||
*
|
||||
* @param string[optional] $path Path to write the data to.
|
||||
* @param string[optional] $path Path to write the data to.
|
||||
* @param string[] $parents Parent paths, for circular reference checks.
|
||||
*
|
||||
* @return string The minified data.
|
||||
*/
|
||||
public function execute($path = null)
|
||||
public function execute($path = null, $parents = array())
|
||||
{
|
||||
$content = '';
|
||||
|
||||
// loop files
|
||||
// loop css data (raw data and files)
|
||||
foreach ($this->data as $source => $css) {
|
||||
/*
|
||||
* Let's first take out strings & comments, since we can't just remove
|
||||
|
|
@ -314,8 +320,9 @@ class CSS extends Minify
|
|||
// restore the string we've extracted earlier
|
||||
$css = $this->restoreExtractedData($css);
|
||||
|
||||
$source = $source ?: '';
|
||||
$css = $this->combineImports($source, $css);
|
||||
$source = is_int($source) ? '' : $source;
|
||||
$parents = $source ? array_merge($parents, array($source)) : $parents;
|
||||
$css = $this->combineImports($source, $css, $parents);
|
||||
$css = $this->importFiles($source, $css);
|
||||
|
||||
/*
|
||||
|
|
@ -443,8 +450,15 @@ class CSS extends Minify
|
|||
// determine if it's a url() or an @import match
|
||||
$type = (strpos($match[0], '@import') === 0 ? 'import' : 'url');
|
||||
|
||||
// attempting to interpret GET-params makes no sense, so let's discard them for awhile
|
||||
$params = strrchr($match['path'], '?');
|
||||
$url = $params ? substr($match['path'], 0, -strlen($params)) : $match['path'];
|
||||
|
||||
// fix relative url
|
||||
$url = $converter->convert($match['path']);
|
||||
$url = $converter->convert($url);
|
||||
|
||||
// now that the path has been converted, re-apply GET-params
|
||||
$url .= $params;
|
||||
|
||||
// build replacement
|
||||
$search[] = $match[0];
|
||||
|
|
@ -569,4 +583,16 @@ class CSS extends Minify
|
|||
|
||||
return trim($content);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if file is small enough to be imported.
|
||||
*
|
||||
* @param string $path The path to the file.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
protected function canImportBySize($path)
|
||||
{
|
||||
return ($size = @filesize($path)) && $size <= $this->maxImportSize * 1024;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,8 +3,10 @@
|
|||
namespace MatthiasMullie\Minify;
|
||||
|
||||
/**
|
||||
* @deprecated Use Exceptions\BasicException instead
|
||||
*
|
||||
* @author Matthias Mullie <minify@mullie.eu>
|
||||
*/
|
||||
class Exception extends \Exception
|
||||
abstract class Exception extends \Exception
|
||||
{
|
||||
}
|
||||
|
|
|
|||
12
vendor/matthiasmullie/minify/src/Exceptions/BasicException.php
vendored
Normal file
12
vendor/matthiasmullie/minify/src/Exceptions/BasicException.php
vendored
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<?php
|
||||
|
||||
namespace MatthiasMullie\Minify\Exceptions;
|
||||
|
||||
use MatthiasMullie\Minify\Exception;
|
||||
|
||||
/**
|
||||
* @author Matthias Mullie <minify@mullie.eu>
|
||||
*/
|
||||
abstract class BasicException extends Exception
|
||||
{
|
||||
}
|
||||
10
vendor/matthiasmullie/minify/src/Exceptions/FileImportException.php
vendored
Normal file
10
vendor/matthiasmullie/minify/src/Exceptions/FileImportException.php
vendored
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
<?php
|
||||
|
||||
namespace MatthiasMullie\Minify\Exceptions;
|
||||
|
||||
/**
|
||||
* @author Matthias Mullie <minify@mullie.eu>
|
||||
*/
|
||||
class FileImportException extends BasicException
|
||||
{
|
||||
}
|
||||
10
vendor/matthiasmullie/minify/src/Exceptions/IOException.php
vendored
Normal file
10
vendor/matthiasmullie/minify/src/Exceptions/IOException.php
vendored
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
<?php
|
||||
|
||||
namespace MatthiasMullie\Minify\Exceptions;
|
||||
|
||||
/**
|
||||
* @author Matthias Mullie <minify@mullie.eu>
|
||||
*/
|
||||
class IOException extends BasicException
|
||||
{
|
||||
}
|
||||
22
vendor/matthiasmullie/minify/src/JS.php
vendored
22
vendor/matthiasmullie/minify/src/JS.php
vendored
|
|
@ -263,12 +263,20 @@ class JS extends Minify
|
|||
// strip whitespace that ends in (or next line begin with) an operator
|
||||
// that allows statements to be broken up over multiple lines
|
||||
unset($before['+'], $before['-'], $after['+'], $after['-']);
|
||||
$content = preg_replace('/('.implode('|', $before).')\s+/', '\\1', $content);
|
||||
$content = preg_replace('/\s+('.implode('|', $after).')/', '\\1', $content);
|
||||
$content = preg_replace(
|
||||
array(
|
||||
'/('.implode('|', $before).')\s+/',
|
||||
'/\s+('.implode('|', $after).')/',
|
||||
), '\\1', $content
|
||||
);
|
||||
|
||||
// make sure + and - can't be mistaken for, or joined into ++ and --
|
||||
$content = preg_replace('/(?<![\+\-])\s*([\+\-])(?![\+\-])/', '\\1', $content);
|
||||
$content = preg_replace('/(?<![\+\-])([\+\-])\s*(?![\+\-])/', '\\1', $content);
|
||||
$content = preg_replace(
|
||||
array(
|
||||
'/(?<![\+\-])\s*([\+\-])(?![\+\-])/',
|
||||
'/(?<![\+\-])([\+\-])\s*(?![\+\-])/',
|
||||
), '\\1', $content
|
||||
);
|
||||
|
||||
/*
|
||||
* We didn't strip whitespace after a couple of operators because they
|
||||
|
|
@ -427,7 +435,7 @@ class JS extends Minify
|
|||
* we want to use property notation on) - this is to make sure
|
||||
* standalone ['value'] arrays aren't confused for keys-of-an-array.
|
||||
* We can (and only have to) check the last character, because PHP's
|
||||
* regex implementation doesn't allow un-fixed-length lookbehind
|
||||
* regex implementation doesn't allow unfixed-length look-behind
|
||||
* assertions.
|
||||
*/
|
||||
preg_match('/(\[[^\]]+\])[^\]]*$/', static::REGEX_VARIABLE, $previousChar);
|
||||
|
|
@ -436,8 +444,8 @@ class JS extends Minify
|
|||
/*
|
||||
* Make sure word preceding the ['value'] is not a keyword, e.g.
|
||||
* return['x']. Because -again- PHP's regex implementation doesn't allow
|
||||
* un-fixed-length lookbehind assertions, I'm just going to do a lot of
|
||||
* separate lookbehind assertions, one for each keyword.
|
||||
* unfixed-length look-behind assertions, I'm just going to do a lot of
|
||||
* separate look-behind assertions, one for each keyword.
|
||||
*/
|
||||
$keywords = $this->getKeywordsForRegex($keywords);
|
||||
$keywords = '(?<!'.implode(')(?<!', $keywords).')';
|
||||
|
|
|
|||
139
vendor/matthiasmullie/minify/src/Minify.php
vendored
139
vendor/matthiasmullie/minify/src/Minify.php
vendored
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
namespace MatthiasMullie\Minify;
|
||||
|
||||
use MatthiasMullie\Minify\Exceptions\IOException;
|
||||
use Psr\Cache\CacheItemInterface;
|
||||
|
||||
/**
|
||||
|
|
@ -76,52 +77,6 @@ abstract class Minify
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Load data.
|
||||
*
|
||||
* @param string $data Either a path to a file or the content itself.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function load($data)
|
||||
{
|
||||
// check if the data is a file
|
||||
if (strlen($data) < PHP_MAXPATHLEN && file_exists($data) && is_file($data)) {
|
||||
$data = file_get_contents($data);
|
||||
|
||||
// strip BOM, if any
|
||||
if (substr($data, 0, 3) == "\xef\xbb\xbf") {
|
||||
$data = substr($data, 3);
|
||||
}
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Save to file.
|
||||
*
|
||||
* @param string $content The minified data.
|
||||
* @param string $path The path to save the minified data to.
|
||||
*
|
||||
* @throws Exception
|
||||
*/
|
||||
protected function save($content, $path)
|
||||
{
|
||||
// create file & open for writing
|
||||
if (($handler = @fopen($path, 'w')) === false) {
|
||||
throw new Exception('The file "'.$path.'" could not be opened. Check if PHP has enough permissions.');
|
||||
}
|
||||
|
||||
// write to file
|
||||
if (@fwrite($handler, $content) === false) {
|
||||
throw new Exception('The file "'.$path.'" could not be written to. Check if PHP has enough permissions.');
|
||||
}
|
||||
|
||||
// close the file
|
||||
@fclose($handler);
|
||||
}
|
||||
|
||||
/**
|
||||
* Minify the data & (optionally) saves it to a file.
|
||||
*
|
||||
|
|
@ -186,13 +141,50 @@ abstract class Minify
|
|||
*/
|
||||
abstract public function execute($path = null);
|
||||
|
||||
/**
|
||||
* Load data.
|
||||
*
|
||||
* @param string $data Either a path to a file or the content itself.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function load($data)
|
||||
{
|
||||
// check if the data is a file
|
||||
if ($this->canImportFile($data)) {
|
||||
$data = file_get_contents($data);
|
||||
|
||||
// strip BOM, if any
|
||||
if (substr($data, 0, 3) == "\xef\xbb\xbf") {
|
||||
$data = substr($data, 3);
|
||||
}
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Save to file.
|
||||
*
|
||||
* @param string $content The minified data.
|
||||
* @param string $path The path to save the minified data to.
|
||||
*
|
||||
* @throws IOException
|
||||
*/
|
||||
protected function save($content, $path)
|
||||
{
|
||||
$handler = $this->openFileForWriting($path);
|
||||
|
||||
$this->writeToFile($handler, $content);
|
||||
|
||||
@fclose($handler);
|
||||
}
|
||||
|
||||
/**
|
||||
* Register a pattern to execute against the source content.
|
||||
*
|
||||
* @param string $pattern PCRE pattern.
|
||||
* @param string|callable $replacement Replacement value for matched pattern.
|
||||
*
|
||||
* @throws Exception
|
||||
*/
|
||||
protected function registerPattern($pattern, $replacement = '')
|
||||
{
|
||||
|
|
@ -316,7 +308,7 @@ abstract class Minify
|
|||
* placeholder text, so we've rid all strings from characters that may be
|
||||
* misinterpreted. Original string content will be saved in $this->extracted
|
||||
* and after doing all other minifying, we can restore the original content
|
||||
* via restoreStrings()
|
||||
* via restoreStrings().
|
||||
*
|
||||
* @param string[optional] $chars
|
||||
*/
|
||||
|
|
@ -325,7 +317,8 @@ abstract class Minify
|
|||
// PHP only supports $this inside anonymous functions since 5.4
|
||||
$minifier = $this;
|
||||
$callback = function ($match) use ($minifier) {
|
||||
if (!$match[1]) {
|
||||
// check the second index here, because the first always contains a quote
|
||||
if ($match[2] === '') {
|
||||
/*
|
||||
* Empty strings need no placeholder; they can't be confused for
|
||||
* anything else anyway.
|
||||
|
|
@ -379,4 +372,50 @@ abstract class Minify
|
|||
|
||||
return $content;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the path is a regular file and can be read.
|
||||
*
|
||||
* @param string $path
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
protected function canImportFile($path)
|
||||
{
|
||||
return strlen($path) < PHP_MAXPATHLEN && is_file($path) && is_readable($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Attempts to open file specified by $path for writing.
|
||||
*
|
||||
* @param string $path The path to the file.
|
||||
*
|
||||
* @return resource Specifier for the target file.
|
||||
*
|
||||
* @throws IOException
|
||||
*/
|
||||
protected function openFileForWriting($path)
|
||||
{
|
||||
if (($handler = @fopen($path, 'w')) === false) {
|
||||
throw new IOException('The file "'.$path.'" could not be opened for writing. Check if PHP has enough permissions.');
|
||||
}
|
||||
|
||||
return $handler;
|
||||
}
|
||||
|
||||
/**
|
||||
* Attempts to write $content to the file specified by $handler. $path is used for printing exceptions.
|
||||
*
|
||||
* @param resource $handler The resource to write to.
|
||||
* @param string $content The content to write.
|
||||
* @param string $path The path to the file (for exception printing only).
|
||||
*
|
||||
* @throws IOException
|
||||
*/
|
||||
protected function writeToFile($handler, $content, $path = '')
|
||||
{
|
||||
if (($result = @fwrite($handler, $content)) === false || ($result < strlen($content))) {
|
||||
throw new IOException('The file "'.$path.'" could not be written to. Check your disk space and file permissions.');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue