diff --git a/README.md b/README.md
index 90cc05ee..9e0a79f1 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,5 @@
# AllTube Download
-[![Donate using Liberapay](https://liberapay.com/assets/widgets/donate.svg)](https://liberapay.com/Rudloff/donate)
-
HTML GUI for youtube-dl ([alltubedownload.net](http://alltubedownload.net/))
![Screenshot](img/screenshot.png "AllTube GUI screenshot")
diff --git a/classes/App.php b/classes/App.php
index a2b8434d..3d352b97 100644
--- a/classes/App.php
+++ b/classes/App.php
@@ -8,6 +8,7 @@
use Alltube\Exception\ConfigException;
use Alltube\Exception\DependencyException;
use Alltube\Factory\ConfigFactory;
+use Alltube\Factory\DebugBarFactory;
use Alltube\Factory\LocaleManagerFactory;
use Alltube\Factory\LoggerFactory;
use Alltube\Factory\SessionFactory;
@@ -16,6 +17,7 @@
use Alltube\Middleware\LinkHeaderMiddleware;
use Alltube\Middleware\LocaleMiddleware;
use Alltube\Middleware\RouterPathMiddleware;
+use DebugBar\DebugBarException;
use Slim\Container;
use SmartyException;
@@ -26,6 +28,7 @@ class App extends \Slim\App
* @throws ConfigException
* @throws DependencyException
* @throws SmartyException
+ * @throws DebugBarException
*/
public function __construct()
{
@@ -34,6 +37,8 @@ public function __construct()
/** @var Container $container */
$container = $this->getContainer();
+ $container['root_path'] = $this->getRootPath();
+
// Config.
$container['config'] = ConfigFactory::create($container);
@@ -43,12 +48,17 @@ public function __construct()
// Locales.
$container['locale'] = LocaleManagerFactory::create($container);
- // Smarty.
- $container['view'] = ViewFactory::create($container);
-
// Logger.
$container['logger'] = LoggerFactory::create($container);
+ if ($container->get('config')->debug) {
+ // Debug bar.
+ $container['debugbar'] = DebugBarFactory::create($container);
+ }
+
+ // Smarty.
+ $container['view'] = ViewFactory::create($container);
+
// Middlewares.
$this->add(new LocaleMiddleware($container));
$this->add(new CspMiddleware($container));
@@ -102,4 +112,17 @@ public function __construct()
[$jsonController, 'json']
)->setName('json');
}
+
+ /**
+ * @return string|null
+ */
+ private function getRootPath(): ?string
+ {
+ // realpath() can return false but we prefer using null.
+ if ($rootPath = realpath(__DIR__ . '/../')) {
+ return $rootPath;
+ }
+
+ return null;
+ }
}
diff --git a/classes/Config.php b/classes/Config.php
index 666b7416..da7a10ad 100644
--- a/classes/Config.php
+++ b/classes/Config.php
@@ -187,7 +187,7 @@ public function __construct(array $options = [])
*
* @return string
*/
- public static function addHttpToFormat(string $format)
+ public static function addHttpToFormat(string $format): string
{
$newFormat = [];
foreach (explode('/', $format) as $subformat) {
@@ -266,7 +266,7 @@ private function getEnv()
* @return Config
* @throws ConfigException
*/
- public static function fromFile(string $file)
+ public static function fromFile(string $file): Config
{
if (is_file($file)) {
return new self(Yaml::parse(strval(file_get_contents($file))));
@@ -293,7 +293,7 @@ public function setOptions(array $options)
*
* @return Downloader
*/
- public function getDownloader()
+ public function getDownloader(): Downloader
{
return new Downloader(
$this->youtubedl,
@@ -308,7 +308,7 @@ public function getDownloader()
/**
* @return string
*/
- public function getAppVersion()
+ public function getAppVersion(): string
{
$version = PrettyVersions::getRootPackageVersion();
diff --git a/classes/Controller/BaseController.php b/classes/Controller/BaseController.php
index f57b0aa3..164686e0 100644
--- a/classes/Controller/BaseController.php
+++ b/classes/Controller/BaseController.php
@@ -11,8 +11,8 @@
use Alltube\Library\Video;
use Alltube\LocaleManager;
use Aura\Session\Segment;
-use Consolidation\Log\Logger;
use Psr\Container\ContainerInterface;
+use Psr\Log\LoggerInterface;
use Slim\Http\Request;
use Slim\Http\Response;
use Slim\Router;
@@ -72,7 +72,7 @@ abstract class BaseController
protected $downloader;
/**
- * @var Logger
+ * @var LoggerInterface
*/
protected $logger;
@@ -111,7 +111,7 @@ public function __construct(ContainerInterface $container)
*
* @return string format
*/
- protected function getFormat(Request $request)
+ protected function getFormat(Request $request): string
{
$format = $request->getQueryParam('format');
if (!isset($format)) {
@@ -126,9 +126,9 @@ protected function getFormat(Request $request)
*
* @param Request $request PSR-7 request
*
- * @return string Password
+ * @return string|null Password
*/
- protected function getPassword(Request $request)
+ protected function getPassword(Request $request): ?string
{
$url = $request->getQueryParam('url');
@@ -151,7 +151,7 @@ protected function getPassword(Request $request)
*
* @return Response HTTP response
*/
- protected function displayError(Request $request, Response $response, string $message)
+ protected function displayError(Request $request, Response $response, string $message): Response
{
$controller = new FrontController($this->container);
diff --git a/classes/Controller/DownloadController.php b/classes/Controller/DownloadController.php
index b80890fd..78e8b771 100644
--- a/classes/Controller/DownloadController.php
+++ b/classes/Controller/DownloadController.php
@@ -38,7 +38,7 @@ class DownloadController extends BaseController
* @return Response HTTP response
* @throws AlltubeLibraryException
*/
- public function download(Request $request, Response $response)
+ public function download(Request $request, Response $response): Response
{
$url = $request->getQueryParam('url');
@@ -99,7 +99,7 @@ public function download(Request $request, Response $response)
* @return Response HTTP response
* @throws AlltubeLibraryException
*/
- private function getConvertedAudioResponse(Request $request, Response $response)
+ private function getConvertedAudioResponse(Request $request, Response $response): Response
{
$from = null;
$to = null;
@@ -135,7 +135,7 @@ private function getConvertedAudioResponse(Request $request, Response $response)
* @throws PasswordException
* @throws WrongPasswordException
*/
- private function getAudioResponse(Request $request, Response $response)
+ private function getAudioResponse(Request $request, Response $response): Response
{
if (!empty($request->getQueryParam('from')) || !empty($request->getQueryParam('to'))) {
// Force convert when we need to seek.
@@ -174,7 +174,7 @@ private function getAudioResponse(Request $request, Response $response)
* @return Response HTTP response
* @throws AlltubeLibraryException
*/
- private function getStream(Request $request, Response $response)
+ private function getStream(Request $request, Response $response): Response
{
if (isset($this->video->entries)) {
if ($this->config->convert && $request->getQueryParam('audio')) {
@@ -240,7 +240,7 @@ private function getStream(Request $request, Response $response)
* @return Response HTTP response
* @throws AlltubeLibraryException
*/
- private function getRemuxStream(Request $request, Response $response)
+ private function getRemuxStream(Request $request, Response $response): Response
{
if (!$this->config->remux) {
throw new RemuxException('You need to enable remux mode to merge two formats.');
@@ -267,7 +267,7 @@ private function getRemuxStream(Request $request, Response $response)
* @return Response HTTP response
* @throws AlltubeLibraryException
*/
- private function getDownloadResponse(Request $request, Response $response)
+ private function getDownloadResponse(Request $request, Response $response): Response
{
try {
$videoUrls = $this->video->getUrl();
@@ -306,7 +306,7 @@ private function getDownloadResponse(Request $request, Response $response)
* @throws YoutubedlException
* @throws PopenStreamException
*/
- private function getConvertedResponse(Request $request, Response $response)
+ private function getConvertedResponse(Request $request, Response $response): Response
{
$response = $response->withHeader(
'Content-Disposition',
diff --git a/classes/Controller/FrontController.php b/classes/Controller/FrontController.php
index 38040b8c..c8c4b45f 100644
--- a/classes/Controller/FrontController.php
+++ b/classes/Controller/FrontController.php
@@ -52,7 +52,7 @@ public function __construct(ContainerInterface $container)
*
* @return Response HTTP response
*/
- public function index(Request $request, Response $response)
+ public function index(Request $request, Response $response): Response
{
$this->view->render(
$response,
@@ -78,7 +78,7 @@ public function index(Request $request, Response $response)
*
* @return Response
*/
- public function locale(Request $request, Response $response, array $data)
+ public function locale(Request $request, Response $response, array $data): Response
{
$this->localeManager->setLocale(new Locale($data['locale']));
@@ -94,7 +94,7 @@ public function locale(Request $request, Response $response, array $data)
* @return Response HTTP response
* @throws AlltubeLibraryException
*/
- public function extractors(Request $request, Response $response)
+ public function extractors(Request $request, Response $response): Response
{
$this->view->render(
$response,
@@ -119,7 +119,7 @@ public function extractors(Request $request, Response $response)
*
* @return Response HTTP response
*/
- public function password(Request $request, Response $response)
+ public function password(Request $request, Response $response): Response
{
$this->view->render(
$response,
@@ -199,7 +199,7 @@ private function getInfoResponse(Request $request, Response $response)
* @return Response HTTP response
* @throws AlltubeLibraryException
*/
- public function info(Request $request, Response $response)
+ public function info(Request $request, Response $response): Response
{
$url = $request->getQueryParam('url') ?: $request->getQueryParam('v');
@@ -228,7 +228,7 @@ public function info(Request $request, Response $response)
*
* @return Response HTTP response
*/
- protected function displayError(Request $request, Response $response, string $message)
+ protected function displayError(Request $request, Response $response, string $message): Response
{
$this->view->render(
$response,
@@ -248,7 +248,7 @@ protected function displayError(Request $request, Response $response, string $me
* @param Response $response
* @return Response
*/
- public function notFound(Request $request, Response $response)
+ public function notFound(Request $request, Response $response): Response
{
return $this->displayError($request, $response, $this->localeManager->t('Page not found'))
->withStatus(StatusCode::HTTP_NOT_FOUND);
@@ -259,7 +259,7 @@ public function notFound(Request $request, Response $response)
* @param Response $response
* @return Response
*/
- public function notAllowed(Request $request, Response $response)
+ public function notAllowed(Request $request, Response $response): Response
{
return $this->displayError($request, $response, $this->localeManager->t('Method not allowed'))
->withStatus(StatusCode::HTTP_METHOD_NOT_ALLOWED);
@@ -274,7 +274,7 @@ public function notAllowed(Request $request, Response $response)
*
* @return Response HTTP response
*/
- public function error(Request $request, Response $response, Throwable $error)
+ public function error(Request $request, Response $response, Throwable $error): Response
{
$this->logger->error($error);
@@ -285,7 +285,7 @@ public function error(Request $request, Response $response, Throwable $error)
$response = $cspMiddleware->applyHeader($response);
if ($this->config->debug) {
- $renderer = new HtmlErrorRenderer(true);
+ $renderer = new HtmlErrorRenderer(true, null, null, $this->container->get('root_path'));
$exception = $renderer->render($error);
$response->getBody()->write($exception->getAsString());
diff --git a/classes/Controller/JsonController.php b/classes/Controller/JsonController.php
index 1247c6bc..9f916bcb 100644
--- a/classes/Controller/JsonController.php
+++ b/classes/Controller/JsonController.php
@@ -25,7 +25,7 @@ class JsonController extends BaseController
* @return Response HTTP response
* @throws AlltubeLibraryException
*/
- public function json(Request $request, Response $response)
+ public function json(Request $request, Response $response): Response
{
$url = $request->getQueryParam('url');
diff --git a/classes/ErrorHandler.php b/classes/ErrorHandler.php
index 4111da91..ec52bbc9 100644
--- a/classes/ErrorHandler.php
+++ b/classes/ErrorHandler.php
@@ -23,7 +23,7 @@ public static function handle(Throwable $e)
if (class_exists(HtmlErrorRenderer::class)) {
// If dev dependencies are loaded, we can use symfony/error-handler.
- $renderer = new HtmlErrorRenderer(true);
+ $renderer = new HtmlErrorRenderer(true, null, null, dirname(__DIR__));
$exception = $renderer->render($e);
http_response_code($exception->getStatusCode());
diff --git a/classes/Factory/ConfigFactory.php b/classes/Factory/ConfigFactory.php
index 29cd0d78..beab456e 100644
--- a/classes/Factory/ConfigFactory.php
+++ b/classes/Factory/ConfigFactory.php
@@ -20,9 +20,9 @@ class ConfigFactory
* @return Config
* @throws ConfigException
*/
- public static function create(Container $container)
+ public static function create(Container $container): Config
{
- $configPath = __DIR__ . '/../../config/config.yml';
+ $configPath = $container->get('root_path') . '/config/config.yml';
if (is_file($configPath)) {
$config = Config::fromFile($configPath);
} else {
diff --git a/classes/Factory/DebugBarFactory.php b/classes/Factory/DebugBarFactory.php
new file mode 100644
index 00000000..13070e50
--- /dev/null
+++ b/classes/Factory/DebugBarFactory.php
@@ -0,0 +1,48 @@
+get('config')));
+
+ $debugBar->addCollector(new PhpInfoCollector())
+ ->addCollector(new MessagesCollector())
+ ->addCollector($requestCollector)
+ ->addCollector(new MemoryCollector())
+ ->addCollector($configCollector)
+ ->addCollector(new SlimRouteCollector($container->get('router'), $container->get('request')));
+
+ $container->get('logger')->add('debugbar', $debugBar->getCollector('messages'));
+
+ $requestCollector->useHtmlVarDumper();
+ $configCollector->useHtmlVarDumper();
+
+ return $debugBar;
+ }
+}
diff --git a/classes/Factory/LocaleManagerFactory.php b/classes/Factory/LocaleManagerFactory.php
index 22fa2615..30df4718 100644
--- a/classes/Factory/LocaleManagerFactory.php
+++ b/classes/Factory/LocaleManagerFactory.php
@@ -15,10 +15,10 @@ class LocaleManagerFactory
/**
* @param Container $container
- * @return LocaleManager|null
+ * @return LocaleManager
* @throws DependencyException
*/
- public static function create(Container $container)
+ public static function create(Container $container): LocaleManager
{
if (!class_exists('Locale')) {
throw new DependencyException('You need to install the intl extension for PHP.');
diff --git a/classes/Factory/LoggerFactory.php b/classes/Factory/LoggerFactory.php
index 87cae0ec..da52c1df 100644
--- a/classes/Factory/LoggerFactory.php
+++ b/classes/Factory/LoggerFactory.php
@@ -3,6 +3,7 @@
namespace Alltube\Factory;
use Consolidation\Log\Logger;
+use Consolidation\Log\LoggerManager;
use Consolidation\Log\LogOutputStyler;
use Slim\Container;
use Symfony\Component\Console\Output\ConsoleOutput;
@@ -16,9 +17,9 @@ class LoggerFactory
/**
* @param Container $container
- * @return Logger
+ * @return LoggerManager
*/
- public static function create(Container $container)
+ public static function create(Container $container): LoggerManager
{
$config = $container->get('config');
if ($config->debug) {
@@ -27,9 +28,13 @@ public static function create(Container $container)
$verbosity = ConsoleOutput::VERBOSITY_NORMAL;
}
+ $loggerManager = new LoggerManager();
+
$logger = new Logger(new ConsoleOutput($verbosity));
$logger->setLogOutputStyler(new LogOutputStyler());
- return $logger;
+ $loggerManager->add('default', $logger);
+
+ return $loggerManager;
}
}
diff --git a/classes/Factory/SessionFactory.php b/classes/Factory/SessionFactory.php
index b819b2f1..05bb796d 100644
--- a/classes/Factory/SessionFactory.php
+++ b/classes/Factory/SessionFactory.php
@@ -21,7 +21,7 @@ class SessionFactory
* @param Container $container
* @return Session
*/
- public static function create(Container $container)
+ public static function create(Container $container): Session
{
$session_factory = new \Aura\Session\SessionFactory();
$session = $session_factory->newInstance($_COOKIE);
diff --git a/classes/Factory/ViewFactory.php b/classes/Factory/ViewFactory.php
index d7048b74..591369dd 100644
--- a/classes/Factory/ViewFactory.php
+++ b/classes/Factory/ViewFactory.php
@@ -7,6 +7,7 @@
namespace Alltube\Factory;
use Alltube\LocaleManager;
+use Junker\DebugBar\Bridge\SmartyCollector;
use Psr\Container\ContainerInterface;
use Slim\Http\Request;
use Slim\Http\Uri;
@@ -26,7 +27,7 @@ class ViewFactory
*
* @return string URL
*/
- private static function getCanonicalUrl(Request $request)
+ private static function getCanonicalUrl(Request $request): string
{
/** @var Uri $uri */
$uri = $request->getUri();
@@ -45,13 +46,13 @@ private static function getCanonicalUrl(Request $request)
* @return Smarty
* @throws SmartyException
*/
- public static function create(ContainerInterface $container, Request $request = null)
+ public static function create(ContainerInterface $container, Request $request = null): Smarty
{
if (!isset($request)) {
$request = $container->get('request');
}
- $view = new Smarty(__DIR__ . '/../../templates/');
+ $view = new Smarty($container->get('root_path') . '/templates/');
/** @var Uri $uri */
$uri = $request->getUri();
@@ -85,6 +86,19 @@ public static function create(ContainerInterface $container, Request $request =
$view->offsetSet('config', $container->get('config'));
$view->offsetSet('domain', $uri->withBasePath('')->getBaseUrl());
+ if ($container->has('debugbar')) {
+ $debugBar = $container->get('debugbar');
+
+ $debugBar->addCollector(new SmartyCollector($view->getSmarty()));
+
+ $view->offsetSet(
+ 'debug_render',
+ $debugBar->getJavascriptRenderer(
+ $uri->getBaseUrl() . '/vendor/maximebf/debugbar/src/DebugBar/Resources/'
+ )
+ );
+ }
+
return $view;
}
}
diff --git a/classes/Locale.php b/classes/Locale.php
index 9e81180a..bacfc9d2 100644
--- a/classes/Locale.php
+++ b/classes/Locale.php
@@ -48,7 +48,7 @@ public function __construct(string $locale)
*
* @return string ISO 15897 code
*/
- public function __toString()
+ public function __toString(): string
{
return $this->getIso15897();
}
@@ -58,7 +58,7 @@ public function __toString()
*
* @return string
*/
- public function getFullName()
+ public function getFullName(): string
{
return PHPLocale::getDisplayName($this->getIso15897(), $this->getIso15897());
}
@@ -68,7 +68,7 @@ public function getFullName()
*
* @return string
*/
- public function getIso15897()
+ public function getIso15897(): string
{
if (isset($this->region)) {
return $this->language . '_' . $this->region;
@@ -82,7 +82,7 @@ public function getIso15897()
*
* @return string
*/
- public function getBcp47()
+ public function getBcp47(): string
{
if (isset($this->region)) {
return $this->language . '-' . $this->region;
@@ -96,7 +96,7 @@ public function getBcp47()
*
* @return string
*/
- public function getIso3166()
+ public function getIso3166(): string
{
return strtolower($this->region);
}
diff --git a/classes/LocaleManager.php b/classes/LocaleManager.php
index f3f79199..884579eb 100644
--- a/classes/LocaleManager.php
+++ b/classes/LocaleManager.php
@@ -80,7 +80,7 @@ public function __construct(Session $session)
*
* @return Locale[]
*/
- public function getSupportedLocales()
+ public function getSupportedLocales(): array
{
$return = [
new Locale('en_US')
@@ -103,7 +103,7 @@ public function getSupportedLocales()
*
* @return Locale|null
*/
- public function getLocale()
+ public function getLocale(): ?Locale
{
return $this->curLocale;
}
@@ -140,7 +140,7 @@ public function unsetLocale()
*
* @return string Translated string
*/
- public function smartyTranslate(array $params, string $text = null)
+ public function smartyTranslate(array $params, string $text = null): string
{
if (isset($params['params'])) {
return $this->t($text, $params['params']);
@@ -157,7 +157,7 @@ public function smartyTranslate(array $params, string $text = null)
* @param mixed[] $params
* @return string Translated string
*/
- public function t(string $string = null, array $params = [])
+ public function t(string $string = null, array $params = []): string
{
if (isset($string)) {
return $this->translator->trans($string, $params);
diff --git a/classes/Middleware/CspMiddleware.php b/classes/Middleware/CspMiddleware.php
index c3c72ff5..88ecccf0 100644
--- a/classes/Middleware/CspMiddleware.php
+++ b/classes/Middleware/CspMiddleware.php
@@ -34,10 +34,11 @@ public function __construct(ContainerInterface $container)
* @param Response $response
* @return MessageInterface
*/
- public function applyHeader(Response $response)
+ public function applyHeader(Response $response): MessageInterface
{
$csp = new CSPBuilder();
- $csp->addDirective('default-src', [])
+ $csp->disableOldBrowserSupport()
+ ->addDirective('default-src', [])
->addDirective('font-src', ['self' => true])
->addDirective('style-src', ['self' => true])
->addDirective('manifest-src', ['self' => true])
@@ -47,9 +48,10 @@ public function applyHeader(Response $response)
->addSource('img-src', '*');
if ($this->config->debug) {
- // So symfony/debug and symfony/error-handler can work.
- $csp->setDirective('script-src', ['unsafe-inline' => true])
- ->setDirective('style-src', ['self' => true, 'unsafe-inline' => true]);
+ // So maximebf/debugbar, symfony/debug and symfony/error-handler can work.
+ $csp->setDirective('script-src', ['self' => true, 'unsafe-inline' => true])
+ ->setDirective('style-src', ['self' => true, 'unsafe-inline' => true])
+ ->addSource('img-src', 'data:');
}
return $csp->injectCSPHeader($response);
diff --git a/classes/Middleware/LocaleMiddleware.php b/classes/Middleware/LocaleMiddleware.php
index b28f357b..418ee7d0 100644
--- a/classes/Middleware/LocaleMiddleware.php
+++ b/classes/Middleware/LocaleMiddleware.php
@@ -42,7 +42,7 @@ public function __construct(ContainerInterface $container)
*
* @return Locale|null Locale if chosen, nothing otherwise
*/
- public function testLocale(array $proposedLocale)
+ public function testLocale(array $proposedLocale): ?Locale
{
foreach ($this->localeManager->getSupportedLocales() as $locale) {
$parsedLocale = AcceptLanguage::parse($locale);
@@ -67,7 +67,7 @@ public function testLocale(array $proposedLocale)
*
* @return Response
*/
- public function __invoke(Request $request, Response $response, callable $next)
+ public function __invoke(Request $request, Response $response, callable $next): Response
{
$headers = $request->getHeader('Accept-Language');
$curLocale = $this->localeManager->getLocale();
diff --git a/classes/Stream/PlaylistArchiveStream.php b/classes/Stream/PlaylistArchiveStream.php
index 1bf08ff8..5c9ed4a1 100644
--- a/classes/Stream/PlaylistArchiveStream.php
+++ b/classes/Stream/PlaylistArchiveStream.php
@@ -113,7 +113,7 @@ public function write($string)
*
* @return int|null
*/
- public function getSize()
+ public function getSize(): ?int
{
return null;
}
@@ -123,7 +123,7 @@ public function getSize()
*
* @return bool
*/
- public function isSeekable()
+ public function isSeekable(): bool
{
return true;
}
@@ -143,7 +143,7 @@ public function rewind()
*
* @return bool
*/
- public function isWritable()
+ public function isWritable(): bool
{
return true;
}
@@ -153,7 +153,7 @@ public function isWritable()
*
* @return bool
*/
- public function isReadable()
+ public function isReadable(): bool
{
return true;
}
@@ -173,7 +173,7 @@ public function getContents()
*
* @param string|null $key string $key Specific metadata to retrieve.
*
- * @return array|mixed|null
+ * @return mixed|null
*/
public function getMetadata($key = null)
{
@@ -208,7 +208,7 @@ public function detach()
*
* @return string
*/
- public function __toString()
+ public function __toString(): string
{
$this->rewind();
@@ -243,7 +243,7 @@ public function seek($offset, $whence = SEEK_SET)
*
* @return bool
*/
- public function eof()
+ public function eof(): bool
{
return $this->isComplete && feof($this->buffer);
}
@@ -272,12 +272,12 @@ protected function startVideoStream(Video $video)
/**
* Read data from the stream.
*
- * @param mixed $count Number of bytes to read
+ * @param mixed $length Number of bytes to read
*
* @return string|false
* @throws AlltubeLibraryException
*/
- public function read($count)
+ public function read($length)
{
// If the archive is complete, we only read the remaining buffer.
if (!$this->isComplete) {
@@ -297,15 +297,22 @@ public function read($count)
}
} else {
// Continue streaming the current video.
- $this->stream_file_part($this->curVideoStream->read($count));
+ $this->stream_file_part($this->curVideoStream->read($length));
}
} else {
// Start streaming the first video.
- $this->startVideoStream(current($this->videos));
+ $video = current($this->videos);
+ if ($video) {
+ $this->startVideoStream($video);
+ } else {
+ $this->push_error('Playlist was empty');
+ $this->finish();
+ $this->isComplete = true;
+ }
}
}
- return fread($this->buffer, $count);
+ return fread($this->buffer, $length);
}
/**
diff --git a/classes/Stream/YoutubeChunkStream.php b/classes/Stream/YoutubeChunkStream.php
index bf64c0aa..bb951381 100644
--- a/classes/Stream/YoutubeChunkStream.php
+++ b/classes/Stream/YoutubeChunkStream.php
@@ -39,7 +39,7 @@ public function __construct(ResponseInterface $response)
*
* @return string
*/
- public function read($length)
+ public function read($length): string
{
$size = intval($this->response->getHeader('Content-Length')[0]);
if ($size - $this->tell() < $length) {
@@ -53,7 +53,7 @@ public function read($length)
/**
* Reads all data from the stream into a string, from the beginning to end.
*/
- public function __toString()
+ public function __toString(): string
{
return (string)$this->response->getBody();
}
@@ -83,7 +83,7 @@ public function detach()
*
* @return int|null
*/
- public function getSize()
+ public function getSize(): ?int
{
return $this->response->getBody()->getSize();
}
@@ -93,7 +93,7 @@ public function getSize()
*
* @return int
*/
- public function tell()
+ public function tell(): int
{
return $this->response->getBody()->tell();
}
@@ -103,7 +103,7 @@ public function tell()
*
* @return bool
*/
- public function eof()
+ public function eof(): bool
{
return $this->response->getBody()->eof();
}
@@ -113,7 +113,7 @@ public function eof()
*
* @return bool
*/
- public function isSeekable()
+ public function isSeekable(): bool
{
return $this->response->getBody()->isSeekable();
}
@@ -146,7 +146,7 @@ public function rewind()
*
* @return bool
*/
- public function isWritable()
+ public function isWritable(): bool
{
return $this->response->getBody()->isWritable();
}
@@ -168,7 +168,7 @@ public function write($string)
*
* @return bool
*/
- public function isReadable()
+ public function isReadable(): bool
{
return $this->response->getBody()->isReadable();
}
@@ -178,7 +178,7 @@ public function isReadable()
*
* @return string
*/
- public function getContents()
+ public function getContents(): string
{
return $this->response->getBody()->getContents();
}
@@ -188,7 +188,7 @@ public function getContents()
*
* @param string|null $key Specific metadata to retrieve.
*
- * @return array|mixed|null
+ * @return mixed|null
*/
public function getMetadata($key = null)
{
diff --git a/classes/UglyRouter.php b/classes/UglyRouter.php
index 95a60cf0..51f080f9 100644
--- a/classes/UglyRouter.php
+++ b/classes/UglyRouter.php
@@ -26,7 +26,7 @@ class UglyRouter extends Router
*
* @link https://github.com/nikic/FastRoute/blob/master/src/Dispatcher.php
*/
- public function dispatch(ServerRequestInterface $request)
+ public function dispatch(ServerRequestInterface $request): array
{
$params = $request->getQueryParams();
$uri = new Uri('', '');
@@ -53,7 +53,7 @@ public function dispatch(ServerRequestInterface $request)
* @throws InvalidArgumentException If required data not provided
* @throws RuntimeException If named route does not exist
*/
- public function pathFor($name, array $data = [], array $queryParams = [])
+ public function pathFor($name, array $data = [], array $queryParams = []): string
{
$queryParams['page'] = $name;
$url = Uri::createFromString($this->relativePathFor($name, $data, $queryParams))->withPath('');
diff --git a/composer.json b/composer.json
index 154f14e6..3d5805d4 100644
--- a/composer.json
+++ b/composer.json
@@ -36,18 +36,21 @@
"symfony/translation": "^4.0",
"symfony/yaml": "^4.0",
"webfontkit/open-sans": "^1.0",
- "ytdl-org/youtube-dl": "^2020.11",
+ "ytdl-org/youtube-dl": "^2021.04",
"zonuexe/http-accept-language": "^0.4.1"
},
"require-dev": {
"consolidation/robo": "^2.1",
+ "enlightn/security-checker": "^1.4",
"ergebnis/composer-normalize": "^2.6",
"insite/composer-dangling-locked-deps": "^0.2.1",
+ "junker/debugbar-smarty": "^0.1.0",
+ "kitchenu/slim-debugbar": "^1.1",
+ "maximebf/debugbar": "^1.16",
"php-mock/php-mock-mockery": "^1.3",
- "phpro/grumphp": "^1.1",
- "phpstan/phpstan": "^0.12.25",
+ "phpro/grumphp": "^1.3",
+ "phpstan/phpstan": "^0.12.72",
"phpunit/phpunit": "^8.4",
- "sensiolabs/security-checker": "^6.0",
"smarty-gettext/smarty-gettext": "^1.6",
"squizlabs/php_codesniffer": "^3.5",
"symfony/error-handler": "^5.0",
@@ -87,10 +90,10 @@
"type": "package",
"package": {
"name": "ytdl-org/youtube-dl",
- "version": "2020.11.12",
+ "version": "2021.04.01",
"dist": {
"type": "zip",
- "url": "https://github.com/ytdl-org/youtube-dl/archive/2020.11.12.zip"
+ "url": "https://github.com/ytdl-org/youtube-dl/archive/2021.04.01.zip"
}
}
}
diff --git a/composer.lock b/composer.lock
index e3ba4bb5..65a1c69d 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "6902afc1fff243b16cd33396a2603e2e",
+ "content-hash": "93cbba477de92eb8ec3d913b8cd83c82",
"packages": [
{
"name": "aura/session",
@@ -233,16 +233,6 @@
"zend",
"zikula"
],
- "funding": [
- {
- "url": "https://packagist.com",
- "type": "custom"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/composer/composer",
- "type": "tidelift"
- }
- ],
"time": "2020-04-07T06:57:05+00:00"
},
{
@@ -298,20 +288,6 @@
}
],
"description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)",
- "funding": [
- {
- "url": "https://packagist.com",
- "type": "custom"
- },
- {
- "url": "https://github.com/composer",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/composer/composer",
- "type": "tidelift"
- }
- ],
"time": "2020-07-15T08:39:18+00:00"
},
{
@@ -1427,16 +1403,16 @@
},
{
"name": "symfony/console",
- "version": "v5.1.7",
+ "version": "v5.2.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "ae789a8a2ad189ce7e8216942cdb9b77319f5eb8"
+ "reference": "89d4b176d12a2946a1ae4e34906a025b7b6b135a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/ae789a8a2ad189ce7e8216942cdb9b77319f5eb8",
- "reference": "ae789a8a2ad189ce7e8216942cdb9b77319f5eb8",
+ "url": "https://api.github.com/repos/symfony/console/zipball/89d4b176d12a2946a1ae4e34906a025b7b6b135a",
+ "reference": "89d4b176d12a2946a1ae4e34906a025b7b6b135a",
"shasum": ""
},
"require": {
@@ -1473,11 +1449,6 @@
"symfony/process": ""
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.1-dev"
- }
- },
"autoload": {
"psr-4": {
"Symfony\\Component\\Console\\": ""
@@ -1500,23 +1471,15 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony Console Component",
+ "description": "Eases the creation of beautiful and testable command line interfaces",
"homepage": "https://symfony.com",
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
+ "keywords": [
+ "cli",
+ "command line",
+ "console",
+ "terminal"
],
- "time": "2020-10-07T15:23:00+00:00"
+ "time": "2021-01-28T22:06:19+00:00"
},
{
"name": "symfony/finder",
@@ -1565,38 +1528,24 @@
],
"description": "Symfony Finder Component",
"homepage": "https://symfony.com",
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
"time": "2020-03-27T16:56:45+00:00"
},
{
"name": "symfony/polyfill-ctype",
- "version": "v1.18.1",
+ "version": "v1.22.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
- "reference": "1c302646f6efc070cd46856e600e5e0684d6b454"
+ "reference": "c6c942b1ac76c82448322025e084cadc56048b4e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/1c302646f6efc070cd46856e600e5e0684d6b454",
- "reference": "1c302646f6efc070cd46856e600e5e0684d6b454",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/c6c942b1ac76c82448322025e084cadc56048b4e",
+ "reference": "c6c942b1ac76c82448322025e084cadc56048b4e",
"shasum": ""
},
"require": {
- "php": ">=5.3.3"
+ "php": ">=7.1"
},
"suggest": {
"ext-ctype": "For best performance"
@@ -1604,7 +1553,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.18-dev"
+ "dev-main": "1.22-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -1641,38 +1590,24 @@
"polyfill",
"portable"
],
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2020-07-14T12:35:20+00:00"
+ "time": "2021-01-07T16:49:33+00:00"
},
{
"name": "symfony/polyfill-intl-grapheme",
- "version": "v1.18.1",
+ "version": "v1.22.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-grapheme.git",
- "reference": "b740103edbdcc39602239ee8860f0f45a8eb9aa5"
+ "reference": "267a9adeb8ecb8071040a740930e077cdfb987af"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b740103edbdcc39602239ee8860f0f45a8eb9aa5",
- "reference": "b740103edbdcc39602239ee8860f0f45a8eb9aa5",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/267a9adeb8ecb8071040a740930e077cdfb987af",
+ "reference": "267a9adeb8ecb8071040a740930e077cdfb987af",
"shasum": ""
},
"require": {
- "php": ">=5.3.3"
+ "php": ">=7.1"
},
"suggest": {
"ext-intl": "For best performance"
@@ -1680,7 +1615,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.18-dev"
+ "dev-main": "1.22-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -1719,39 +1654,25 @@
"portable",
"shim"
],
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2020-07-14T12:35:20+00:00"
+ "time": "2021-01-07T16:49:33+00:00"
},
{
"name": "symfony/polyfill-intl-idn",
- "version": "v1.17.0",
+ "version": "v1.22.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-idn.git",
- "reference": "3bff59ea7047e925be6b7f2059d60af31bb46d6a"
+ "reference": "0eb8293dbbcd6ef6bf81404c9ce7d95bcdf34f44"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/3bff59ea7047e925be6b7f2059d60af31bb46d6a",
- "reference": "3bff59ea7047e925be6b7f2059d60af31bb46d6a",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/0eb8293dbbcd6ef6bf81404c9ce7d95bcdf34f44",
+ "reference": "0eb8293dbbcd6ef6bf81404c9ce7d95bcdf34f44",
"shasum": ""
},
"require": {
- "php": ">=5.3.3",
- "symfony/polyfill-mbstring": "^1.3",
+ "php": ">=7.1",
+ "symfony/polyfill-intl-normalizer": "^1.10",
"symfony/polyfill-php72": "^1.10"
},
"suggest": {
@@ -1760,7 +1681,11 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.17-dev"
+ "dev-main": "1.22-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
@@ -1780,6 +1705,10 @@
"name": "Laurent Bassin",
"email": "laurent@bassin.info"
},
+ {
+ "name": "Trevor Rowbotham",
+ "email": "trevor.rowbotham@pm.me"
+ },
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
@@ -1795,38 +1724,24 @@
"portable",
"shim"
],
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2020-05-12T16:47:27+00:00"
+ "time": "2021-01-07T16:49:33+00:00"
},
{
"name": "symfony/polyfill-intl-normalizer",
- "version": "v1.18.1",
+ "version": "v1.22.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
- "reference": "37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e"
+ "reference": "6e971c891537eb617a00bb07a43d182a6915faba"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e",
- "reference": "37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/6e971c891537eb617a00bb07a43d182a6915faba",
+ "reference": "6e971c891537eb617a00bb07a43d182a6915faba",
"shasum": ""
},
"require": {
- "php": ">=5.3.3"
+ "php": ">=7.1"
},
"suggest": {
"ext-intl": "For best performance"
@@ -1834,7 +1749,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.18-dev"
+ "dev-main": "1.22-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -1876,38 +1791,24 @@
"portable",
"shim"
],
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2020-07-14T12:35:20+00:00"
+ "time": "2021-01-07T17:09:11+00:00"
},
{
"name": "symfony/polyfill-mbstring",
- "version": "v1.18.1",
+ "version": "v1.22.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
- "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a"
+ "reference": "f377a3dd1fde44d37b9831d68dc8dea3ffd28e13"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/a6977d63bf9a0ad4c65cd352709e230876f9904a",
- "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/f377a3dd1fde44d37b9831d68dc8dea3ffd28e13",
+ "reference": "f377a3dd1fde44d37b9831d68dc8dea3ffd28e13",
"shasum": ""
},
"require": {
- "php": ">=5.3.3"
+ "php": ">=7.1"
},
"suggest": {
"ext-mbstring": "For best performance"
@@ -1915,7 +1816,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.18-dev"
+ "dev-main": "1.22-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -1953,43 +1854,33 @@
"portable",
"shim"
],
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2020-07-14T12:35:20+00:00"
+ "time": "2021-01-07T16:49:33+00:00"
},
{
"name": "symfony/polyfill-php72",
- "version": "v1.17.0",
+ "version": "v1.22.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php72.git",
- "reference": "f048e612a3905f34931127360bdd2def19a5e582"
+ "reference": "cc6e6f9b39fe8075b3dabfbaf5b5f645ae1340c9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/f048e612a3905f34931127360bdd2def19a5e582",
- "reference": "f048e612a3905f34931127360bdd2def19a5e582",
+ "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/cc6e6f9b39fe8075b3dabfbaf5b5f645ae1340c9",
+ "reference": "cc6e6f9b39fe8075b3dabfbaf5b5f645ae1340c9",
"shasum": ""
},
"require": {
- "php": ">=5.3.3"
+ "php": ">=7.1"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.17-dev"
+ "dev-main": "1.22-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
}
},
"autoload": {
@@ -2022,43 +1913,29 @@
"portable",
"shim"
],
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2020-05-12T16:47:27+00:00"
+ "time": "2021-01-07T16:49:33+00:00"
},
{
"name": "symfony/polyfill-php73",
- "version": "v1.18.1",
+ "version": "v1.22.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php73.git",
- "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca"
+ "reference": "a678b42e92f86eca04b7fa4c0f6f19d097fb69e2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fffa1a52a023e782cdcc221d781fe1ec8f87fcca",
- "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca",
+ "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/a678b42e92f86eca04b7fa4c0f6f19d097fb69e2",
+ "reference": "a678b42e92f86eca04b7fa4c0f6f19d097fb69e2",
"shasum": ""
},
"require": {
- "php": ">=5.3.3"
+ "php": ">=7.1"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.18-dev"
+ "dev-main": "1.22-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -2098,43 +1975,29 @@
"portable",
"shim"
],
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2020-07-14T12:35:20+00:00"
+ "time": "2021-01-07T16:49:33+00:00"
},
{
"name": "symfony/polyfill-php80",
- "version": "v1.17.1",
+ "version": "v1.22.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php80.git",
- "reference": "4a5b6bba3259902e386eb80dd1956181ee90b5b2"
+ "reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4a5b6bba3259902e386eb80dd1956181ee90b5b2",
- "reference": "4a5b6bba3259902e386eb80dd1956181ee90b5b2",
+ "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/dc3063ba22c2a1fd2f45ed856374d79114998f91",
+ "reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91",
"shasum": ""
},
"require": {
- "php": ">=7.0.8"
+ "php": ">=7.1"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.17-dev"
+ "dev-main": "1.22-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -2178,34 +2041,20 @@
"portable",
"shim"
],
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2020-06-06T08:46:27+00:00"
+ "time": "2021-01-07T16:49:33+00:00"
},
{
"name": "symfony/process",
- "version": "v5.1.7",
+ "version": "v5.2.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
- "reference": "d3a2e64866169586502f0cd9cab69135ad12cee9"
+ "reference": "313a38f09c77fbcdc1d223e57d368cea76a2fd2f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/process/zipball/d3a2e64866169586502f0cd9cab69135ad12cee9",
- "reference": "d3a2e64866169586502f0cd9cab69135ad12cee9",
+ "url": "https://api.github.com/repos/symfony/process/zipball/313a38f09c77fbcdc1d223e57d368cea76a2fd2f",
+ "reference": "313a38f09c77fbcdc1d223e57d368cea76a2fd2f",
"shasum": ""
},
"require": {
@@ -2213,11 +2062,6 @@
"symfony/polyfill-php80": "^1.15"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.1-dev"
- }
- },
"autoload": {
"psr-4": {
"Symfony\\Component\\Process\\": ""
@@ -2240,23 +2084,9 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony Process Component",
+ "description": "Executes commands in sub-processes",
"homepage": "https://symfony.com",
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2020-09-02T16:23:27+00:00"
+ "time": "2021-01-27T10:15:41+00:00"
},
{
"name": "symfony/service-contracts",
@@ -2318,34 +2148,20 @@
"interoperability",
"standards"
],
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
"time": "2020-09-07T11:33:47+00:00"
},
{
"name": "symfony/string",
- "version": "v5.1.7",
+ "version": "v5.2.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
- "reference": "4a9afe9d07bac506f75bcee8ed3ce76da5a9343e"
+ "reference": "c95468897f408dd0aca2ff582074423dd0455122"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/string/zipball/4a9afe9d07bac506f75bcee8ed3ce76da5a9343e",
- "reference": "4a9afe9d07bac506f75bcee8ed3ce76da5a9343e",
+ "url": "https://api.github.com/repos/symfony/string/zipball/c95468897f408dd0aca2ff582074423dd0455122",
+ "reference": "c95468897f408dd0aca2ff582074423dd0455122",
"shasum": ""
},
"require": {
@@ -2363,11 +2179,6 @@
"symfony/var-exporter": "^4.4|^5.0"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.1-dev"
- }
- },
"autoload": {
"psr-4": {
"Symfony\\Component\\String\\": ""
@@ -2393,7 +2204,7 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony String component",
+ "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way",
"homepage": "https://symfony.com",
"keywords": [
"grapheme",
@@ -2403,21 +2214,7 @@
"utf-8",
"utf8"
],
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2020-09-15T12:23:47+00:00"
+ "time": "2021-01-25T15:14:59+00:00"
},
{
"name": "symfony/translation",
@@ -2636,10 +2433,10 @@
},
{
"name": "ytdl-org/youtube-dl",
- "version": "2020.11.12",
+ "version": "2021.04.01",
"dist": {
"type": "zip",
- "url": "https://github.com/ytdl-org/youtube-dl/archive/2020.11.12.zip"
+ "url": "https://github.com/ytdl-org/youtube-dl/archive/2021.04.01.zip"
},
"type": "library"
},
@@ -2688,16 +2485,16 @@
"packages-dev": [
{
"name": "amphp/amp",
- "version": "v2.5.0",
+ "version": "v2.5.2",
"source": {
"type": "git",
"url": "https://github.com/amphp/amp.git",
- "reference": "f220a51458bf4dd0dedebb171ac3457813c72bbc"
+ "reference": "efca2b32a7580087adb8aabbff6be1dc1bb924a9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/amphp/amp/zipball/f220a51458bf4dd0dedebb171ac3457813c72bbc",
- "reference": "f220a51458bf4dd0dedebb171ac3457813c72bbc",
+ "url": "https://api.github.com/repos/amphp/amp/zipball/efca2b32a7580087adb8aabbff6be1dc1bb924a9",
+ "reference": "efca2b32a7580087adb8aabbff6be1dc1bb924a9",
"shasum": ""
},
"require": {
@@ -2762,13 +2559,7 @@
"non-blocking",
"promise"
],
- "funding": [
- {
- "url": "https://github.com/amphp",
- "type": "github"
- }
- ],
- "time": "2020-07-14T21:47:18+00:00"
+ "time": "2021-01-10T17:06:37+00:00"
},
{
"name": "amphp/byte-stream",
@@ -2902,21 +2693,21 @@
},
{
"name": "amphp/parallel-functions",
- "version": "v0.1.3",
+ "version": "v1.0.0",
"source": {
"type": "git",
"url": "https://github.com/amphp/parallel-functions.git",
- "reference": "12e6c602e067b02f78ddf5b720c17e9aa01ad4b4"
+ "reference": "af9795d51abfafc3676cbe7e17965479491abaad"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/amphp/parallel-functions/zipball/12e6c602e067b02f78ddf5b720c17e9aa01ad4b4",
- "reference": "12e6c602e067b02f78ddf5b720c17e9aa01ad4b4",
+ "url": "https://api.github.com/repos/amphp/parallel-functions/zipball/af9795d51abfafc3676cbe7e17965479491abaad",
+ "reference": "af9795d51abfafc3676cbe7e17965479491abaad",
"shasum": ""
},
"require": {
"amphp/amp": "^2.0.3",
- "amphp/parallel": "^0.1.8 || ^0.2 || ^1",
+ "amphp/parallel": "^1.1",
"opis/closure": "^3.0.7",
"php": ">=7"
},
@@ -2945,7 +2736,7 @@
}
],
"description": "Parallel processing made simple.",
- "time": "2018-10-28T15:29:02+00:00"
+ "time": "2020-07-10T17:05:35+00:00"
},
{
"name": "amphp/parser",
@@ -3721,6 +3512,66 @@
],
"time": "2019-10-21T16:45:58+00:00"
},
+ {
+ "name": "enlightn/security-checker",
+ "version": "v1.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/enlightn/security-checker.git",
+ "reference": "378b2493cb3bc7961c836ad164b3393c33a20754"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/enlightn/security-checker/zipball/378b2493cb3bc7961c836ad164b3393c33a20754",
+ "reference": "378b2493cb3bc7961c836ad164b3393c33a20754",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "ext-zip": "*",
+ "guzzlehttp/guzzle": "^6.3|^7.0",
+ "php": ">=5.6",
+ "symfony/console": "^3.4|^4|^5",
+ "symfony/finder": "^3|^4|^5",
+ "symfony/yaml": "^3.4|^4|^5"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^5.5|^6|^7|^8|^9"
+ },
+ "bin": [
+ "security-checker"
+ ],
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Enlightn\\SecurityChecker\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Paras Malhotra",
+ "email": "paras@laravel-enlightn.com"
+ },
+ {
+ "name": "Miguel Piedrafita",
+ "email": "soy@miguelpiedrafita.com"
+ }
+ ],
+ "description": "A PHP dependency vulnerabilities scanner based on the Security Advisories Database.",
+ "keywords": [
+ "package",
+ "php",
+ "scanner",
+ "security",
+ "security advisories",
+ "vulnerability scanner"
+ ],
+ "time": "2021-02-01T13:49:38+00:00"
+ },
{
"name": "ergebnis/composer-normalize",
"version": "2.6.0",
@@ -3784,28 +3635,6 @@
"normalizer",
"plugin"
],
- "funding": [
- {
- "url": "https://cottonbureau.com/people/andreas-moller",
- "type": "custom"
- },
- {
- "url": "https://paypal.me/localheinz",
- "type": "custom"
- },
- {
- "url": "https://www.amazon.de/hz/wishlist/ls/2NCHMSJ4BC1OW",
- "type": "custom"
- },
- {
- "url": "https://www.buymeacoffee.com/localheinz",
- "type": "custom"
- },
- {
- "url": "https://github.com/localheinz",
- "type": "github"
- }
- ],
"time": "2020-07-03T18:09:23+00:00"
},
{
@@ -3866,24 +3695,6 @@
"json",
"normalizer"
],
- "funding": [
- {
- "url": "https://paypal.me/localheinz",
- "type": "custom"
- },
- {
- "url": "https://www.amazon.de/hz/wishlist/ls/2NCHMSJ4BC1OW",
- "type": "custom"
- },
- {
- "url": "https://www.buymeacoffee.com/localheinz",
- "type": "custom"
- },
- {
- "url": "https://github.com/localheinz",
- "type": "github"
- }
- ],
"time": "2020-04-19T12:30:41+00:00"
},
{
@@ -3943,42 +3754,20 @@
"json",
"printer"
],
- "funding": [
- {
- "url": "https://cottonbureau.com/people/andreas-moller",
- "type": "custom"
- },
- {
- "url": "https://paypal.me/localheinz",
- "type": "custom"
- },
- {
- "url": "https://www.amazon.de/hz/wishlist/ls/2NCHMSJ4BC1OW",
- "type": "custom"
- },
- {
- "url": "https://www.buymeacoffee.com/localheinz",
- "type": "custom"
- },
- {
- "url": "https://github.com/localheinz",
- "type": "github"
- }
- ],
"time": "2020-07-04T17:09:39+00:00"
},
{
"name": "gitonomy/gitlib",
- "version": "v1.2.2",
+ "version": "v1.2.3",
"source": {
"type": "git",
"url": "https://github.com/gitonomy/gitlib.git",
- "reference": "d1fe4676bf1347c08dec84a14a4c5e7110740d72"
+ "reference": "d22f212b97fdb631ac73dfae65c194dc4cb0d227"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/gitonomy/gitlib/zipball/d1fe4676bf1347c08dec84a14a4c5e7110740d72",
- "reference": "d1fe4676bf1347c08dec84a14a4c5e7110740d72",
+ "url": "https://api.github.com/repos/gitonomy/gitlib/zipball/d22f212b97fdb631ac73dfae65c194dc4cb0d227",
+ "reference": "d22f212b97fdb631ac73dfae65c194dc4cb0d227",
"shasum": ""
},
"require": {
@@ -4025,13 +3814,7 @@
}
],
"description": "Library for accessing git",
- "funding": [
- {
- "url": "https://tidelift.com/funding/github/packagist/gitonomy/gitlib",
- "type": "tidelift"
- }
- ],
- "time": "2020-07-30T14:54:11+00:00"
+ "time": "2020-12-29T16:48:45+00:00"
},
{
"name": "grasmash/expander",
@@ -4215,6 +3998,45 @@
"description": "Detect dangling Composer locked dependencies",
"time": "2020-11-16T13:45:00+00:00"
},
+ {
+ "name": "junker/debugbar-smarty",
+ "version": "0.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Junker/php-debugbar-smarty.git",
+ "reference": "cf43c79e25770884cf22036ee461b8585588cd19"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Junker/php-debugbar-smarty/zipball/cf43c79e25770884cf22036ee461b8585588cd19",
+ "reference": "cf43c79e25770884cf22036ee461b8585588cd19",
+ "shasum": ""
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "Junker": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Dmitry Kosenkov",
+ "email": "dk-junker@ya.ru"
+ }
+ ],
+ "description": "Smarty Collector for PHP DebugBar",
+ "keywords": [
+ "PHP debugbar",
+ "collector",
+ "debugbar",
+ "smarty"
+ ],
+ "time": "2021-02-10T07:02:47+00:00"
+ },
{
"name": "justinrainbow/json-schema",
"version": "5.2.10",
@@ -4282,32 +4104,79 @@
"time": "2020-05-27T16:41:55+00:00"
},
{
- "name": "league/container",
- "version": "2.4.1",
+ "name": "kitchenu/slim-debugbar",
+ "version": "v1.1.1",
"source": {
"type": "git",
- "url": "https://github.com/thephpleague/container.git",
- "reference": "43f35abd03a12977a60ffd7095efd6a7808488c0"
+ "url": "https://github.com/kitchenu/Slim-DebugBar.git",
+ "reference": "906dcecd1f85239ef262312c276b1e8e5663ad50"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/container/zipball/43f35abd03a12977a60ffd7095efd6a7808488c0",
- "reference": "43f35abd03a12977a60ffd7095efd6a7808488c0",
+ "url": "https://api.github.com/repos/kitchenu/Slim-DebugBar/zipball/906dcecd1f85239ef262312c276b1e8e5663ad50",
+ "reference": "906dcecd1f85239ef262312c276b1e8e5663ad50",
"shasum": ""
},
"require": {
- "container-interop/container-interop": "^1.2",
- "php": "^5.4.0 || ^7.0"
- },
- "provide": {
- "container-interop/container-interop-implementation": "^1.2",
- "psr/container-implementation": "^1.0"
- },
- "replace": {
- "orno/di": "~2.0"
+ "maximebf/debugbar": "^1.12.0",
+ "php": ">=5.5.0",
+ "psr/http-message": "^1.0",
+ "slim/slim": "^3.0"
},
"require-dev": {
- "phpunit/phpunit": "4.*"
+ "phpunit/phpunit": "^4.0|^5.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Kitchenu\\Debugbar\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Kitchenu"
+ }
+ ],
+ "description": "PHP Debugbar integration for Slim 3",
+ "keywords": [
+ "debug",
+ "debugbar",
+ "framework",
+ "slim"
+ ],
+ "time": "2018-07-29T16:58:54+00:00"
+ },
+ {
+ "name": "league/container",
+ "version": "2.4.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/thephpleague/container.git",
+ "reference": "43f35abd03a12977a60ffd7095efd6a7808488c0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/thephpleague/container/zipball/43f35abd03a12977a60ffd7095efd6a7808488c0",
+ "reference": "43f35abd03a12977a60ffd7095efd6a7808488c0",
+ "shasum": ""
+ },
+ "require": {
+ "container-interop/container-interop": "^1.2",
+ "php": "^5.4.0 || ^7.0"
+ },
+ "provide": {
+ "container-interop/container-interop-implementation": "^1.2",
+ "psr/container-implementation": "^1.0"
+ },
+ "replace": {
+ "orno/di": "~2.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "4.*"
},
"type": "library",
"extra": {
@@ -4397,6 +4266,67 @@
],
"time": "2019-12-17T07:42:37+00:00"
},
+ {
+ "name": "maximebf/debugbar",
+ "version": "v1.16.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/maximebf/php-debugbar.git",
+ "reference": "6d51ee9e94cff14412783785e79a4e7ef97b9d62"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/6d51ee9e94cff14412783785e79a4e7ef97b9d62",
+ "reference": "6d51ee9e94cff14412783785e79a4e7ef97b9d62",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1|^8",
+ "psr/log": "^1.0",
+ "symfony/var-dumper": "^2.6|^3|^4|^5"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7.5.20 || ^9.4.2"
+ },
+ "suggest": {
+ "kriswallsmith/assetic": "The best way to manage assets",
+ "monolog/monolog": "Log using Monolog",
+ "predis/predis": "Redis storage"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.16-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "DebugBar\\": "src/DebugBar/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Maxime Bouroumeau-Fuseau",
+ "email": "maxime.bouroumeau@gmail.com",
+ "homepage": "http://maximebf.com"
+ },
+ {
+ "name": "Barry vd. Heuvel",
+ "email": "barryvdh@gmail.com"
+ }
+ ],
+ "description": "Debug bar in the browser for php application",
+ "homepage": "https://github.com/maximebf/php-debugbar",
+ "keywords": [
+ "debug",
+ "debugbar"
+ ],
+ "time": "2020-12-07T11:07:24+00:00"
+ },
{
"name": "mockery/mockery",
"version": "1.2.2",
@@ -4464,16 +4394,16 @@
},
{
"name": "monolog/monolog",
- "version": "2.1.1",
+ "version": "2.2.0",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/monolog.git",
- "reference": "f9eee5cec93dfb313a38b6b288741e84e53f02d5"
+ "reference": "1cb1cde8e8dd0f70cc0fe51354a59acad9302084"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f9eee5cec93dfb313a38b6b288741e84e53f02d5",
- "reference": "f9eee5cec93dfb313a38b6b288741e84e53f02d5",
+ "url": "https://api.github.com/repos/Seldaek/monolog/zipball/1cb1cde8e8dd0f70cc0fe51354a59acad9302084",
+ "reference": "1cb1cde8e8dd0f70cc0fe51354a59acad9302084",
"shasum": ""
},
"require": {
@@ -4486,16 +4416,17 @@
"require-dev": {
"aws/aws-sdk-php": "^2.4.9 || ^3.0",
"doctrine/couchdb": "~1.0@dev",
- "elasticsearch/elasticsearch": "^6.0",
+ "elasticsearch/elasticsearch": "^7",
"graylog2/gelf-php": "^1.4.2",
+ "mongodb/mongodb": "^1.8",
"php-amqplib/php-amqplib": "~2.4",
"php-console/php-console": "^3.1.3",
- "php-parallel-lint/php-parallel-lint": "^1.0",
"phpspec/prophecy": "^1.6.1",
+ "phpstan/phpstan": "^0.12.59",
"phpunit/phpunit": "^8.5",
"predis/predis": "^1.1",
"rollbar/rollbar": "^1.3",
- "ruflin/elastica": ">=0.90 <3.0",
+ "ruflin/elastica": ">=0.90 <7.0.1",
"swiftmailer/swiftmailer": "^5.3|^6.0"
},
"suggest": {
@@ -4515,7 +4446,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.x-dev"
+ "dev-main": "2.x-dev"
}
},
"autoload": {
@@ -4531,27 +4462,17 @@
{
"name": "Jordi Boggiano",
"email": "j.boggiano@seld.be",
- "homepage": "http://seld.be"
+ "homepage": "https://seld.be"
}
],
"description": "Sends your logs to files, sockets, inboxes, databases and various web services",
- "homepage": "http://github.com/Seldaek/monolog",
+ "homepage": "https://github.com/Seldaek/monolog",
"keywords": [
"log",
"logging",
"psr-3"
],
- "funding": [
- {
- "url": "https://github.com/Seldaek",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/monolog/monolog",
- "type": "tidelift"
- }
- ],
- "time": "2020-07-23T08:41:23+00:00"
+ "time": "2020-12-14T13:15:25+00:00"
},
{
"name": "myclabs/deep-copy",
@@ -4671,16 +4592,16 @@
},
{
"name": "opis/closure",
- "version": "3.6.0",
+ "version": "3.6.1",
"source": {
"type": "git",
"url": "https://github.com/opis/closure.git",
- "reference": "c547f8262a5fa9ff507bd06cc394067b83a75085"
+ "reference": "943b5d70cc5ae7483f6aff6ff43d7e34592ca0f5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/opis/closure/zipball/c547f8262a5fa9ff507bd06cc394067b83a75085",
- "reference": "c547f8262a5fa9ff507bd06cc394067b83a75085",
+ "url": "https://api.github.com/repos/opis/closure/zipball/943b5d70cc5ae7483f6aff6ff43d7e34592ca0f5",
+ "reference": "943b5d70cc5ae7483f6aff6ff43d7e34592ca0f5",
"shasum": ""
},
"require": {
@@ -4728,7 +4649,7 @@
"serialization",
"serialize"
],
- "time": "2020-10-11T21:42:15+00:00"
+ "time": "2020-11-07T02:01:34+00:00"
},
{
"name": "phar-io/manifest",
@@ -5152,22 +5073,22 @@
},
{
"name": "phpro/grumphp",
- "version": "v1.1.0",
+ "version": "v1.3.1",
"source": {
"type": "git",
"url": "https://github.com/phpro/grumphp.git",
- "reference": "8c0b39169ea83e6c7bdd3573ba351dd0d52a42fa"
+ "reference": "7df8f36481b9cdb5b21fedb1cdb2999234eac3e5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpro/grumphp/zipball/8c0b39169ea83e6c7bdd3573ba351dd0d52a42fa",
- "reference": "8c0b39169ea83e6c7bdd3573ba351dd0d52a42fa",
+ "url": "https://api.github.com/repos/phpro/grumphp/zipball/7df8f36481b9cdb5b21fedb1cdb2999234eac3e5",
+ "reference": "7df8f36481b9cdb5b21fedb1cdb2999234eac3e5",
"shasum": ""
},
"require": {
"amphp/amp": "^2.4",
"amphp/parallel": "^1.4",
- "amphp/parallel-functions": "^0.1.3",
+ "amphp/parallel-functions": "^1.0",
"composer-plugin-api": "~1.0 || ~2.0",
"doctrine/collections": "^1.6.7",
"ext-json": "*",
@@ -5175,7 +5096,7 @@
"monolog/monolog": "~1.16 || ^2.0",
"ondram/ci-detector": "^3.5",
"opis/closure": "^3.5",
- "php": "^7.3",
+ "php": "^7.3 || ^8.0",
"psr/container": "^1.0",
"seld/jsonlint": "~1.1",
"symfony/config": "~4.4 || ~5.0",
@@ -5190,8 +5111,8 @@
"symfony/yaml": "~4.4 || ~5.0"
},
"require-dev": {
- "brianium/paratest": "^4.1",
- "composer/composer": "~1.9 || ^2.0@dev",
+ "brianium/paratest": "^6.1.1",
+ "composer/composer": "^1.10.11 || ^2.0.1",
"nikic/php-parser": "~4.0",
"php-parallel-lint/php-parallel-lint": "^1.2",
"phpspec/phpspec": "^6.2",
@@ -5206,6 +5127,7 @@
"consolidation/robo": "Lets GrumPHP run your automated PHP tasks.",
"designsecurity/progpilot": "Lets GrumPHP be sure that there are no vulnerabilities in your code.",
"doctrine/orm": "Lets GrumPHP validate your Doctrine mapping files.",
+ "enlightn/security-checker": "Lets GrumPHP be sure that there are no known security issues.",
"ergebnis/composer-normalize": "Lets GrumPHP tidy and normalize your composer.json file.",
"friendsofphp/php-cs-fixer": "Lets GrumPHP automatically fix your codestyle.",
"friendsoftwig/twigcs": "Lets GrumPHP check Twig coding standard.",
@@ -5225,7 +5147,6 @@
"povils/phpmnd": "Lets GrumPHP help you detect magic numbers in PHP code.",
"roave/security-advisories": "Lets GrumPHP be sure that there are no known security issues.",
"sebastian/phpcpd": "Lets GrumPHP find duplicated code.",
- "sensiolabs/security-checker": "Lets GrumPHP be sure that there are no known security issues.",
"squizlabs/php_codesniffer": "Lets GrumPHP sniff on your code.",
"sstalle/php7cc": "Lets GrumPHP check PHP 5.3 - 5.6 code compatibility with PHP 7.",
"symfony/phpunit-bridge": "Lets GrumPHP run your unit tests with the phpunit-bridge of Symfony.",
@@ -5259,7 +5180,7 @@
}
],
"description": "A composer plugin that enables source code quality checks.",
- "time": "2020-10-30T11:36:42+00:00"
+ "time": "2021-02-04T06:26:46+00:00"
},
{
"name": "phpspec/prophecy",
@@ -5326,20 +5247,20 @@
},
{
"name": "phpstan/phpstan",
- "version": "0.12.25",
+ "version": "0.12.72",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpstan.git",
- "reference": "9619551d68b2d4c0d681a8df73f3c847c798ee64"
+ "reference": "ae32fb1c5e97979f424c3ccec4ee435a35754769"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpstan/zipball/9619551d68b2d4c0d681a8df73f3c847c798ee64",
- "reference": "9619551d68b2d4c0d681a8df73f3c847c798ee64",
+ "url": "https://api.github.com/repos/phpstan/phpstan/zipball/ae32fb1c5e97979f424c3ccec4ee435a35754769",
+ "reference": "ae32fb1c5e97979f424c3ccec4ee435a35754769",
"shasum": ""
},
"require": {
- "php": "^7.1"
+ "php": "^7.1|^8.0"
},
"conflict": {
"phpstan/phpstan-shim": "*"
@@ -5364,21 +5285,7 @@
"MIT"
],
"description": "PHPStan - PHP Static Analysis Tool",
- "funding": [
- {
- "url": "https://github.com/ondrejmirtes",
- "type": "github"
- },
- {
- "url": "https://www.patreon.com/phpstan",
- "type": "patreon"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan",
- "type": "tidelift"
- }
- ],
- "time": "2020-05-10T20:36:16+00:00"
+ "time": "2021-02-06T18:34:03+00:00"
},
{
"name": "phpunit/php-code-coverage",
@@ -6379,16 +6286,16 @@
},
{
"name": "seld/jsonlint",
- "version": "1.8.2",
+ "version": "1.8.3",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/jsonlint.git",
- "reference": "590cfec960b77fd55e39b7d9246659e95dd6d337"
+ "reference": "9ad6ce79c342fbd44df10ea95511a1b24dee5b57"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/590cfec960b77fd55e39b7d9246659e95dd6d337",
- "reference": "590cfec960b77fd55e39b7d9246659e95dd6d337",
+ "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/9ad6ce79c342fbd44df10ea95511a1b24dee5b57",
+ "reference": "9ad6ce79c342fbd44df10ea95511a1b24dee5b57",
"shasum": ""
},
"require": {
@@ -6424,66 +6331,7 @@
"parser",
"validator"
],
- "funding": [
- {
- "url": "https://github.com/Seldaek",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/seld/jsonlint",
- "type": "tidelift"
- }
- ],
- "time": "2020-08-25T06:56:57+00:00"
- },
- {
- "name": "sensiolabs/security-checker",
- "version": "v6.0.3",
- "source": {
- "type": "git",
- "url": "https://github.com/sensiolabs/security-checker.git",
- "reference": "a576c01520d9761901f269c4934ba55448be4a54"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sensiolabs/security-checker/zipball/a576c01520d9761901f269c4934ba55448be4a54",
- "reference": "a576c01520d9761901f269c4934ba55448be4a54",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1.3",
- "symfony/console": "^2.8|^3.4|^4.2|^5.0",
- "symfony/http-client": "^4.3|^5.0",
- "symfony/mime": "^4.3|^5.0",
- "symfony/polyfill-ctype": "^1.11"
- },
- "bin": [
- "security-checker"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "6.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "SensioLabs\\Security\\": "SensioLabs/Security"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien.potencier@gmail.com"
- }
- ],
- "description": "A security checker for your composer.lock",
- "abandoned": "https://github.com/fabpot/local-php-security-checker",
- "time": "2019-11-01T13:20:14+00:00"
+ "time": "2020-11-11T09:19:24+00:00"
},
{
"name": "smarty-gettext/smarty-gettext",
@@ -6593,16 +6441,16 @@
},
{
"name": "symfony/config",
- "version": "v5.1.7",
+ "version": "v5.2.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/config.git",
- "reference": "6ad8be6e1280f6734150d8a04a9160dd34ceb191"
+ "reference": "50e0e1314a3b2609d32b6a5a0d0fb5342494c4ab"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/config/zipball/6ad8be6e1280f6734150d8a04a9160dd34ceb191",
- "reference": "6ad8be6e1280f6734150d8a04a9160dd34ceb191",
+ "url": "https://api.github.com/repos/symfony/config/zipball/50e0e1314a3b2609d32b6a5a0d0fb5342494c4ab",
+ "reference": "50e0e1314a3b2609d32b6a5a0d0fb5342494c4ab",
"shasum": ""
},
"require": {
@@ -6626,11 +6474,6 @@
"symfony/yaml": "To use the yaml reference dumper"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.1-dev"
- }
- },
"autoload": {
"psr-4": {
"Symfony\\Component\\Config\\": ""
@@ -6653,36 +6496,22 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony Config Component",
+ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind",
"homepage": "https://symfony.com",
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2020-09-02T16:23:27+00:00"
+ "time": "2021-01-27T10:15:41+00:00"
},
{
"name": "symfony/dependency-injection",
- "version": "v5.1.7",
+ "version": "v5.2.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/dependency-injection.git",
- "reference": "2dea4a3ef2eb79138354c1d49e9372cc921af20b"
+ "reference": "62f72187be689540385dce6c68a5d4c16f034139"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/2dea4a3ef2eb79138354c1d49e9372cc921af20b",
- "reference": "2dea4a3ef2eb79138354c1d49e9372cc921af20b",
+ "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/62f72187be689540385dce6c68a5d4c16f034139",
+ "reference": "62f72187be689540385dce6c68a5d4c16f034139",
"shasum": ""
},
"require": {
@@ -6715,11 +6544,6 @@
"symfony/yaml": ""
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.1-dev"
- }
- },
"autoload": {
"psr-4": {
"Symfony\\Component\\DependencyInjection\\": ""
@@ -6742,23 +6566,9 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony DependencyInjection Component",
+ "description": "Allows you to standardize and centralize the way objects are constructed in your application",
"homepage": "https://symfony.com",
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2020-10-01T12:14:45+00:00"
+ "time": "2021-01-27T12:56:27+00:00"
},
{
"name": "symfony/deprecation-contracts",
@@ -6808,34 +6618,20 @@
],
"description": "A generic function and convention to trigger deprecation notices",
"homepage": "https://symfony.com",
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
"time": "2020-09-07T11:33:47+00:00"
},
{
"name": "symfony/dotenv",
- "version": "v5.1.7",
+ "version": "v5.2.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/dotenv.git",
- "reference": "f406eaad1231415bf753fbef5aef267a787af4e5"
+ "reference": "783f12027c6b40ab0e93d6136d9f642d1d67cd6b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dotenv/zipball/f406eaad1231415bf753fbef5aef267a787af4e5",
- "reference": "f406eaad1231415bf753fbef5aef267a787af4e5",
+ "url": "https://api.github.com/repos/symfony/dotenv/zipball/783f12027c6b40ab0e93d6136d9f642d1d67cd6b",
+ "reference": "783f12027c6b40ab0e93d6136d9f642d1d67cd6b",
"shasum": ""
},
"require": {
@@ -6846,11 +6642,6 @@
"symfony/process": "^4.4|^5.0"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.1-dev"
- }
- },
"autoload": {
"psr-4": {
"Symfony\\Component\\Dotenv\\": ""
@@ -6880,21 +6671,7 @@
"env",
"environment"
],
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2020-09-02T16:23:27+00:00"
+ "time": "2021-01-27T10:01:46+00:00"
},
{
"name": "symfony/error-handler",
@@ -6949,34 +6726,20 @@
],
"description": "Symfony ErrorHandler Component",
"homepage": "https://symfony.com",
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
"time": "2020-03-30T14:14:32+00:00"
},
{
"name": "symfony/event-dispatcher",
- "version": "v5.1.7",
+ "version": "v5.2.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "d5de97d6af175a9e8131c546db054ca32842dd0f"
+ "reference": "4f9760f8074978ad82e2ce854dff79a71fe45367"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d5de97d6af175a9e8131c546db054ca32842dd0f",
- "reference": "d5de97d6af175a9e8131c546db054ca32842dd0f",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/4f9760f8074978ad82e2ce854dff79a71fe45367",
+ "reference": "4f9760f8074978ad82e2ce854dff79a71fe45367",
"shasum": ""
},
"require": {
@@ -7007,11 +6770,6 @@
"symfony/http-kernel": ""
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.1-dev"
- }
- },
"autoload": {
"psr-4": {
"Symfony\\Component\\EventDispatcher\\": ""
@@ -7034,23 +6792,9 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony EventDispatcher Component",
+ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
"homepage": "https://symfony.com",
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2020-09-18T14:27:32+00:00"
+ "time": "2021-01-27T10:36:42+00:00"
},
{
"name": "symfony/event-dispatcher-contracts",
@@ -7112,34 +6856,20 @@
"interoperability",
"standards"
],
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
"time": "2020-09-07T11:33:47+00:00"
},
{
"name": "symfony/filesystem",
- "version": "v5.1.7",
+ "version": "v5.2.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
- "reference": "1a8697545a8d87b9f2f6b1d32414199cc5e20aae"
+ "reference": "262d033b57c73e8b59cd6e68a45c528318b15038"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/filesystem/zipball/1a8697545a8d87b9f2f6b1d32414199cc5e20aae",
- "reference": "1a8697545a8d87b9f2f6b1d32414199cc5e20aae",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/262d033b57c73e8b59cd6e68a45c528318b15038",
+ "reference": "262d033b57c73e8b59cd6e68a45c528318b15038",
"shasum": ""
},
"require": {
@@ -7147,11 +6877,6 @@
"symfony/polyfill-ctype": "~1.8"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.1-dev"
- }
- },
"autoload": {
"psr-4": {
"Symfony\\Component\\Filesystem\\": ""
@@ -7174,283 +6899,31 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony Filesystem Component",
+ "description": "Provides basic utilities for the filesystem",
"homepage": "https://symfony.com",
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2020-09-27T14:02:37+00:00"
- },
- {
- "name": "symfony/http-client",
- "version": "v5.1.2",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/http-client.git",
- "reference": "aae28b613d7a88e529df46e617f046be0236ab54"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/http-client/zipball/aae28b613d7a88e529df46e617f046be0236ab54",
- "reference": "aae28b613d7a88e529df46e617f046be0236ab54",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2.5",
- "psr/log": "^1.0",
- "symfony/http-client-contracts": "^2.1.1",
- "symfony/polyfill-php73": "^1.11",
- "symfony/polyfill-php80": "^1.15",
- "symfony/service-contracts": "^1.0|^2"
- },
- "provide": {
- "php-http/async-client-implementation": "*",
- "php-http/client-implementation": "*",
- "psr/http-client-implementation": "1.0",
- "symfony/http-client-implementation": "1.1"
- },
- "require-dev": {
- "amphp/http-client": "^4.2.1",
- "amphp/http-tunnel": "^1.0",
- "amphp/socket": "^1.1",
- "guzzlehttp/promises": "^1.3.1",
- "nyholm/psr7": "^1.0",
- "php-http/httplug": "^1.0|^2.0",
- "psr/http-client": "^1.0",
- "symfony/dependency-injection": "^4.4|^5.0",
- "symfony/http-kernel": "^4.4|^5.0",
- "symfony/process": "^4.4|^5.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\HttpClient\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony HttpClient component",
- "homepage": "https://symfony.com",
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2020-06-11T21:20:02+00:00"
- },
- {
- "name": "symfony/http-client-contracts",
- "version": "v2.1.2",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/http-client-contracts.git",
- "reference": "f8bed25edc964d015bcd87f1fec5734963931910"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/f8bed25edc964d015bcd87f1fec5734963931910",
- "reference": "f8bed25edc964d015bcd87f1fec5734963931910",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2.5"
- },
- "suggest": {
- "symfony/http-client-implementation": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Contracts\\HttpClient\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Generic abstractions related to HTTP clients",
- "homepage": "https://symfony.com",
- "keywords": [
- "abstractions",
- "contracts",
- "decoupling",
- "interfaces",
- "interoperability",
- "standards"
- ],
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2020-05-25T17:37:45+00:00"
- },
- {
- "name": "symfony/mime",
- "version": "v5.1.2",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/mime.git",
- "reference": "c0c418f05e727606e85b482a8591519c4712cf45"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/mime/zipball/c0c418f05e727606e85b482a8591519c4712cf45",
- "reference": "c0c418f05e727606e85b482a8591519c4712cf45",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2.5",
- "symfony/polyfill-intl-idn": "^1.10",
- "symfony/polyfill-mbstring": "^1.0",
- "symfony/polyfill-php80": "^1.15"
- },
- "conflict": {
- "symfony/mailer": "<4.4"
- },
- "require-dev": {
- "egulias/email-validator": "^2.1.10",
- "symfony/dependency-injection": "^4.4|^5.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Mime\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "A library to manipulate MIME messages",
- "homepage": "https://symfony.com",
- "keywords": [
- "mime",
- "mime-type"
- ],
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2020-06-09T15:07:35+00:00"
+ "time": "2021-01-27T10:01:46+00:00"
},
{
"name": "symfony/options-resolver",
- "version": "v5.1.7",
+ "version": "v5.2.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/options-resolver.git",
- "reference": "4c7e155bf7d93ea4ba3824d5a14476694a5278dd"
+ "reference": "5d0f633f9bbfcf7ec642a2b5037268e61b0a62ce"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/options-resolver/zipball/4c7e155bf7d93ea4ba3824d5a14476694a5278dd",
- "reference": "4c7e155bf7d93ea4ba3824d5a14476694a5278dd",
+ "url": "https://api.github.com/repos/symfony/options-resolver/zipball/5d0f633f9bbfcf7ec642a2b5037268e61b0a62ce",
+ "reference": "5d0f633f9bbfcf7ec642a2b5037268e61b0a62ce",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.1",
+ "symfony/polyfill-php73": "~1.0",
"symfony/polyfill-php80": "^1.15"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.1-dev"
- }
- },
"autoload": {
"psr-4": {
"Symfony\\Component\\OptionsResolver\\": ""
@@ -7473,28 +6946,14 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony OptionsResolver Component",
+ "description": "Provides an improved replacement for the array_replace PHP function",
"homepage": "https://symfony.com",
"keywords": [
"config",
"configuration",
"options"
],
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2020-09-27T03:44:28+00:00"
+ "time": "2021-01-27T12:56:27+00:00"
},
{
"name": "symfony/var-dumper",
@@ -7569,20 +7028,6 @@
"debug",
"dump"
],
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
"time": "2020-04-12T16:45:47+00:00"
},
{
@@ -7687,6 +7132,5 @@
"platform-dev": [],
"platform-overrides": {
"php": "7.3.11"
- },
- "plugin-api-version": "1.1.0"
+ }
}
diff --git a/grumphp.yml b/grumphp.yml
index 52e357bb..9ae9c117 100644
--- a/grumphp.yml
+++ b/grumphp.yml
@@ -10,7 +10,7 @@ grumphp:
xmllint: ~
yamllint: ~
composer: ~
- securitychecker: ~
+ securitychecker_enlightn: ~
composer_normalize: ~
composer_dangling_locked_deps: ~
phpcs:
diff --git a/i18n/ja_JP/LC_MESSAGES/Alltube.po b/i18n/ja_JP/LC_MESSAGES/Alltube.po
new file mode 100644
index 00000000..71acb9d0
--- /dev/null
+++ b/i18n/ja_JP/LC_MESSAGES/Alltube.po
@@ -0,0 +1,218 @@
+msgid ""
+msgstr ""
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: POEditor.com\n"
+"Project-Id-Version: Alltube Download\n"
+"Language: ja-JP\n"
+
+#: templates/inc/footer.tpl:8
+msgid "Code by @dev"
+msgstr "作成: @dev"
+
+#: templates/inc/footer.tpl:16
+msgid "Design by @designer"
+msgstr "デザイン: @designer"
+
+#: templates/inc/footer.tpl:21
+msgid "Get the code"
+msgstr "プログラムをダウンロード"
+
+#: templates/inc/footer.tpl:29
+msgid "Based on @youtubedl"
+msgstr "本ソフトは@youtubedlを基に構成されています。"
+
+#: templates/inc/footer.tpl:33
+msgid "Donate using Liberapay"
+msgstr "Liberapayで寄付"
+
+#: templates/inc/footer.tpl:35
+msgid "Donate"
+msgstr "寄付"
+
+#: templates/inc/header.tpl:4
+msgid "Switch language"
+msgstr "言語の変更"
+
+#: templates/inc/header.tpl:8
+msgid "Set language"
+msgstr "言語を設定"
+
+#: templates/info.tpl:11
+msgid "You are going to download @title."
+msgstr "ダウンロード対象: @title"
+
+#: templates/info.tpl:29
+msgid "Available formats:"
+msgstr "ダウンロード可能な形式"
+
+#: templates/info.tpl:31
+msgid "Generic formats"
+msgstr "よく使われる形式"
+
+#: templates/info.tpl:35
+msgid "Best"
+msgstr "最高品質"
+
+#: templates/info.tpl:36
+msgid "Remux best video with best audio"
+msgstr "最高品質に再エンコード"
+
+#: templates/info.tpl:37
+msgid "Worst"
+msgstr "最低品質"
+
+#: templates/info.tpl:42
+msgid "Detailed formats"
+msgstr "その他の形式"
+
+#: templates/info.tpl:86
+msgid "Stream the video through the server"
+msgstr "ビデオをサーバーに設置してダウンロード"
+
+#: templates/info.tpl:92
+msgid "Convert into a custom format:"
+msgstr "指定した形式への変換"
+
+#: templates/info.tpl:93
+msgid "Custom format"
+msgstr "カスタム形式"
+
+#: templates/info.tpl:93
+msgid "Format to convert to"
+msgstr "ファイル形式の変換"
+
+#: templates/info.tpl:98
+msgid "with"
+msgstr "と"
+
+#: templates/info.tpl:99
+msgid "Bit rate"
+msgstr "ビットレート"
+
+#: templates/info.tpl:100
+msgid "Custom bitrate"
+msgstr "カスタム・ビットレート"
+
+#: templates/info.tpl:103
+msgid "kbit/s audio"
+msgstr "kbps 音声"
+
+#: templates/info.tpl:107 templates/playlist.tpl:38 templates/password.tpl:11
+#: templates/index.tpl:19
+msgid "Download"
+msgstr "ダウンロード"
+
+#: templates/playlist.tpl:12
+msgid "Videos extracted from @title:"
+msgstr "デコードの対象: @title"
+
+#: templates/playlist.tpl:39
+msgid "More options"
+msgstr "詳細設定"
+
+#: templates/extractors.tpl:4 classes/Controller/FrontController.php:111
+msgid "Supported websites"
+msgstr "ダウンロードに対応しているサイト"
+
+#: templates/error.tpl:5
+msgid "An error occurred"
+msgstr "予期せぬエラーが発生しました。"
+
+#: templates/password.tpl:5
+msgid "This video is protected"
+msgstr "このビデオにはプロテクトがかかっています。"
+
+#: templates/password.tpl:6
+msgid "You need a password in order to download this video."
+msgstr "このビデオをダウンロードするには閲覧用のパスワードが必要です。"
+
+#: templates/password.tpl:8
+msgid "Video password"
+msgstr "閲覧用パスワード"
+
+#: templates/index.tpl:8
+msgid "Copy here the URL of your video (YouTube, Dailymotion, etc.)"
+msgstr "動画のリンク(URL)を入力欄に入力してください。(例:Youtube,Dailymotion等。)"
+
+#: templates/index.tpl:25
+msgid "Audio only (MP3)"
+msgstr "音声のみのダウンロード(mp3形式)"
+
+#: templates/index.tpl:29
+msgid "From"
+msgstr "から"
+
+#: templates/index.tpl:32
+msgid "to"
+msgstr "へ"
+
+#: templates/index.tpl:41
+msgid "See all supported websites"
+msgstr "ダウンロード可能なサイトを見る"
+
+#: templates/index.tpl:43
+msgid "Drag this to your bookmarks bar:"
+msgstr "ブックマークバーにドラッグして登録"
+
+#: templates/index.tpl:45
+msgid "Bookmarklet"
+msgstr "ブックマークボタン"
+
+#: classes/Controller/DownloadController.php:64
+#: classes/Controller/FrontController.php:166
+msgid "Wrong password"
+msgstr "パスワードが間違っています。"
+
+#: classes/Controller/DownloadController.php:69
+msgid "Conversion of playlists is not supported."
+msgstr "プレイリストからの読み出しには対応しておりません。"
+
+#: classes/Controller/DownloadController.php:76
+msgid "Conversion of M3U8 files is not supported."
+msgstr "HLS(m3u8)プレイリストファイルからの読み出しには対応しておりません。"
+
+#: classes/Controller/DownloadController.php:82
+msgid "Conversion of DASH segments is not supported."
+msgstr "MPEG DASHストリーミングからの読み出しには対応しておりません。"
+
+#: classes/Controller/FrontController.php:65
+msgid "Easily download videos from YouTube, Dailymotion, Vimeo and other websites."
+msgstr "Youtubeから動画を簡単にダウンロード!、DailymotionやVimeo等にも対応しております"
+
+#: classes/Controller/FrontController.php:112
+msgid "List of all supported websites from which AllTube Download can extract video or audio files"
+msgstr "AllTube上でのダウンロードおよびファイルの変換に対応している音声または動画ファイルのサイト"
+
+#: classes/Controller/FrontController.php:138
+msgid "Password prompt"
+msgstr "パスワード画面"
+
+#: classes/Controller/FrontController.php:140
+msgid "You need a password in order to download this video with AllTube Download"
+msgstr "このビデオをAllTubeでダウンロードするにはパスワードが必要です。"
+
+#: classes/Controller/FrontController.php:174
+msgid "Video download"
+msgstr "動画をダウンロード"
+
+#: classes/Controller/FrontController.php:176
+msgid "Download video from @extractor"
+msgstr "@extractor からダウンロードします。"
+
+#: classes/Controller/FrontController.php:182
+msgid "Download @title from @extractor"
+msgstr "@extractor から @title をダウンロードします"
+
+#: classes/Controller/FrontController.php:255
+msgid "Error"
+msgstr "エラーが発生しました。"
+
+#: classes/Controller/FrontController.php:271
+msgid "Page not found"
+msgstr "存在しないページです。"
+
+#: classes/Controller/FrontController.php:282
+msgid "Method not allowed"
+msgstr "無効なリクエストです。"
\ No newline at end of file
diff --git a/phpunit.xml b/phpunit.xml
index 90800731..8893c4ab 100644
--- a/phpunit.xml
+++ b/phpunit.xml
@@ -10,8 +10,4 @@
tests/
-
-
-
-
diff --git a/resources/FAQ.md b/resources/FAQ.md
index 4044ea00..3f138469 100644
--- a/resources/FAQ.md
+++ b/resources/FAQ.md
@@ -13,7 +13,6 @@ so it has low RAM and CPU.
AllTube probably won't switch to a more expensive hosting
because this project does not earn any financial resources
-(although [donations are welcome](https://liberapay.com/Rudloff/))
and you are encouraged to host it yourself.
## alltubedownload.net often says "An error occurred in the application…"
diff --git a/templates/inc/footer.tpl b/templates/inc/footer.tpl
index 322e3e8a..545d16ba 100644
--- a/templates/inc/footer.tpl
+++ b/templates/inc/footer.tpl
@@ -27,15 +27,11 @@
youtube-dl
"}
{t params=['@youtubedl'=>$youtubedl]}Based on @youtubedl{/t}
-
- ·
-
-
- {t}Donate{/t}
-
+{if isset($debug_render)}
+ {$debug_render->render()}
+{/if}