diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..d9a62ad --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,24 @@ +--- +name: Tests +on: + - push + - pull_request +jobs: + tests: + runs-on: ubuntu-latest + strategy: + matrix: + php-version: + - '7.3' + - '7.4' + steps: + - uses: actions/checkout@v2 + - name: Use PHP ${{ matrix.php-version }} + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-version }} + tools: composer + - run: composer install --no-progress + - run: composer check-platform-reqs + - run: composer lint + - run: composer test diff --git a/.htaccess b/.htaccess index cb3ca35..264ed2a 100644 --- a/.htaccess +++ b/.htaccess @@ -18,9 +18,6 @@ FileETag None RewriteEngine On - RewriteCond %{HTTP_HOST} ^alltube\.herokuapp\.com$ [NC] - RewriteRule ^(.*)$ https://www.alltubedownload.net/$1 [R=301,L] - RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [QSA,L] diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 02d0a2b..0000000 --- a/.travis.yml +++ /dev/null @@ -1,12 +0,0 @@ ---- -language: php -php: 7.3 -addons: - apt: - packages: - - language-pack-fr -install: composer install --no-progress -script: - - composer check-platform-reqs - - composer lint - - composer test diff --git a/README.md b/README.md index 9e0a79f..787d7df 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # AllTube Download -HTML GUI for youtube-dl ([alltubedownload.net](http://alltubedownload.net/)) +HTML GUI for youtube-dl ![Screenshot](img/screenshot.png "AllTube GUI screenshot") @@ -79,6 +79,7 @@ If you want to serve the application under a basepath and/or with a different in * X-Forwarded-Host (ex. `another.domain.com`) * X-Forwarded-Path (ex: `/alltube`) * X-Forwarded-Port (ex: `5555`) +* X-Forwarded-Proto (ex: `https`) ### Apache @@ -164,7 +165,7 @@ so that you can reuse it in your projects. ## JSON API We also provide a JSON API that you can use like this: -[/json?url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DdQw4w9WgXcQ](https://alltubedownload.net/json?url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DdQw4w9WgXcQ) +`/json?url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DdQw4w9WgXcQ` It returns a JSON object generated by youtube-dl. You can find a list of all the properties [in the youtube-dl documentation](https://github.com/ytdl-org/youtube-dl#output-template). diff --git a/app.json b/app.json index 32b2202..efe8aa1 100644 --- a/app.json +++ b/app.json @@ -2,7 +2,6 @@ "name": "AllTube Download", "description": "HTML GUI for youtube-dl", "repository": "https://github.com/Rudloff/alltube.git", - "logo": "https://alltubedownload.net/img/logo.png", "keywords": [ "alltube", "download", @@ -28,6 +27,5 @@ "value": "false", "required": false } - }, - "website": "https://alltubedownload.net/" + } } diff --git a/classes/App.php b/classes/App.php index 3d352b9..0d3f235 100644 --- a/classes/App.php +++ b/classes/App.php @@ -62,7 +62,7 @@ class App extends \Slim\App // Middlewares. $this->add(new LocaleMiddleware($container)); $this->add(new CspMiddleware($container)); - $this->add(new LinkHeaderMiddleware($container)); + $this->add(new LinkHeaderMiddleware()); $this->add(new RouterPathMiddleware($container)); // Controllers. @@ -94,7 +94,7 @@ class App extends \Slim\App $this->any( '/watch', - [$frontController, 'info'] + [$frontController, 'watch'] ); $this->any( diff --git a/classes/Config.php b/classes/Config.php index da7a10a..542200e 100644 --- a/classes/Config.php +++ b/classes/Config.php @@ -154,7 +154,7 @@ class Config /** * Config constructor. * - * @param mixed[] $options Options + * @param scalar[]|scalar[][]|null[] $options Options * @throws ConfigException */ public function __construct(array $options = []) @@ -205,7 +205,7 @@ class Config * @throws ConfigException If Python is missing * @throws ConfigException If youtube-dl is missing */ - private function validateOptions() + private function validateOptions(): void { if (!is_file($this->youtubedl)) { throw new ConfigException("Can't find youtube-dl at " . $this->youtubedl); @@ -222,11 +222,11 @@ class Config /** * Apply the provided options. * - * @param mixed[] $options Options + * @param scalar[]|scalar[][]|null[] $options Options * * @return void */ - private function applyOptions(array $options) + private function applyOptions(array $options): void { foreach ($options as $option => $value) { if (isset($this->$option) && isset($value)) { @@ -243,7 +243,7 @@ class Config * @return void * @throws ConfigException */ - private function getEnv() + private function getEnv(): void { foreach (get_object_vars($this) as $prop => $value) { try { @@ -278,11 +278,11 @@ class Config /** * Manually set some options. * - * @param mixed[] $options Options (see `config/config.example.yml` for available options) + * @param scalar[]|scalar[][]|null[] $options Options (see `config/config.example.yml` for available options) * @return void * @throws ConfigException */ - public function setOptions(array $options) + public function setOptions(array $options): void { $this->applyOptions($options); $this->validateOptions(); diff --git a/classes/Controller/BaseController.php b/classes/Controller/BaseController.php index 3279708..9562bc3 100644 --- a/classes/Controller/BaseController.php +++ b/classes/Controller/BaseController.php @@ -169,10 +169,8 @@ abstract class BaseController */ protected function getVideoPageUrl(Request $request): string { - $url = $request->getQueryParam('url') ?: $request->getQueryParam('v'); - // Prevent SSRF attacks. - $parts = Url::validateUrl($url, new Options()); + $parts = Url::validateUrl($request->getQueryParam('url'), new Options()); return $parts['url']; } diff --git a/classes/Controller/DownloadController.php b/classes/Controller/DownloadController.php index 179c7c0..dece054 100644 --- a/classes/Controller/DownloadController.php +++ b/classes/Controller/DownloadController.php @@ -220,13 +220,12 @@ class DownloadController extends BaseController if ($request->isGet()) { $response = $response->withBody($body); } - $response = $response->withHeader( + + return $response->withHeader( 'Content-Disposition', 'attachment; filename="' . $this->video->getFilename() . '"' ); - - return $response; } /** diff --git a/classes/Controller/FrontController.php b/classes/Controller/FrontController.php index b379e7b..fa0478b 100644 --- a/classes/Controller/FrontController.php +++ b/classes/Controller/FrontController.php @@ -14,6 +14,8 @@ use Alltube\Middleware\CspMiddleware; use Exception; use Graby\HttpClient\Plugin\ServerSideRequestForgeryProtection\Exception\InvalidURLException; use Slim\Http\StatusCode; +use Slim\Http\Uri; +use stdClass; use Symfony\Component\ErrorHandler\ErrorRenderer\HtmlErrorRenderer; use Throwable; use Psr\Container\ContainerInterface; @@ -146,7 +148,7 @@ class FrontController extends BaseController * @return Response HTTP response * @throws AlltubeLibraryException */ - private function getInfoResponse(Request $request, Response $response) + private function getInfoResponse(Request $request, Response $response): Response { try { $this->video->getJson(); @@ -176,6 +178,50 @@ class FrontController extends BaseController ] ); } + + $formats = []; + $genericFormatsLabel = $this->localeManager->t('Generic formats'); + $detailedFormatsLabel = $this->localeManager->t('Detailed formats'); + + foreach ($this->config->genericFormats as $id => $genericFormat) { + $formats[$genericFormatsLabel][$id] = $this->localeManager->t($genericFormat); + } + + $json = $this->video->getJson(); + if (isset($json->formats)) { + /** @var stdClass $format */ + foreach ($json->formats as $format) { + if ($this->config->stream || in_array($format->protocol, ['http', 'https'])) { + $formatParts = [ + // File extension + $format->ext, + ]; + + if (isset($format->width) || isset($format->height)) { + // Video dimensions + $formatParts[] = implode('x', array_filter([$format->width, $format->height])); + } + + if (isset($format->filesize)) { + // File size + $formatParts[] = round($format->filesize / 1000000, 2) . ' MB'; + } + + if (isset($format->format_note)) { + // Format name + $formatParts[] = $format->format_note; + } + + if (isset($format->format_id)) { + // Format ID + $formatParts[] = '(' . $format->format_id . ')'; + } + + $formats[$detailedFormatsLabel][$format->format_id] = implode(' ', $formatParts); + } + } + } + $this->view->render( $response, $template, @@ -185,6 +231,7 @@ class FrontController extends BaseController 'title' => $title, 'description' => $description, 'defaultFormat' => $this->defaultFormat, + 'formats' => $formats ] ); @@ -302,4 +349,24 @@ class FrontController extends BaseController return $this->displayError($request, $response, $message); } } + + /** + * Route that mimics YouTube video URLs ("/watch?v=foo") + * + * @param Request $request + * @param Response $response + * @return Response + */ + public function watch(Request $request, Response $response): Response + { + // We build a full YouTube URL from the video ID. + $youtubeUri = Uri::createFromString('https://www.youtube.com/watch') + ->withQuery(http_build_query(['v' => $request->getQueryParam('v')])); + + // Then pass it to the info route. + return $response->withRedirect( + Uri::createFromString($this->router->pathFor('info')) + ->withQuery(http_build_query(['url' => strval($youtubeUri)])) + ); + } } diff --git a/classes/Controller/JsonController.php b/classes/Controller/JsonController.php index fddef42..941918e 100644 --- a/classes/Controller/JsonController.php +++ b/classes/Controller/JsonController.php @@ -7,7 +7,6 @@ namespace Alltube\Controller; use Alltube\Library\Exception\AlltubeLibraryException; -use Exception; use Graby\HttpClient\Plugin\ServerSideRequestForgeryProtection\Exception\InvalidURLException; use Slim\Http\Request; use Slim\Http\Response; @@ -25,6 +24,7 @@ class JsonController extends BaseController * @param Response $response PSR-7 response * * @return Response HTTP response + * @throws AlltubeLibraryException */ public function json(Request $request, Response $response): Response { diff --git a/classes/ErrorHandler.php b/classes/ErrorHandler.php index ec52bbc..c48b354 100644 --- a/classes/ErrorHandler.php +++ b/classes/ErrorHandler.php @@ -2,6 +2,7 @@ namespace Alltube; +use Slim\Http\StatusCode; use Symfony\Component\ErrorHandler\ErrorRenderer\HtmlErrorRenderer; use Throwable; @@ -17,7 +18,7 @@ class ErrorHandler * @param Throwable $e * @return void */ - public static function handle(Throwable $e) + public static function handle(Throwable $e): void { error_log($e); @@ -29,7 +30,7 @@ class ErrorHandler http_response_code($exception->getStatusCode()); die($exception->getAsString()); } else { - http_response_code(500); + http_response_code(StatusCode::HTTP_INTERNAL_SERVER_ERROR); die('Error when starting the app: ' . htmlentities($e->getMessage())); } } diff --git a/classes/Factory/LocaleManagerFactory.php b/classes/Factory/LocaleManagerFactory.php index 30df471..4ed84ff 100644 --- a/classes/Factory/LocaleManagerFactory.php +++ b/classes/Factory/LocaleManagerFactory.php @@ -4,6 +4,7 @@ namespace Alltube\Factory; use Alltube\Exception\DependencyException; use Alltube\LocaleManager; +use Locale; use Slim\Container; /** @@ -20,7 +21,7 @@ class LocaleManagerFactory */ public static function create(Container $container): LocaleManager { - if (!class_exists('Locale')) { + if (!class_exists(Locale::class)) { 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 da52c1d..b80774d 100644 --- a/classes/Factory/LoggerFactory.php +++ b/classes/Factory/LoggerFactory.php @@ -7,6 +7,7 @@ use Consolidation\Log\LoggerManager; use Consolidation\Log\LogOutputStyler; use Slim\Container; use Symfony\Component\Console\Output\ConsoleOutput; +use Symfony\Component\Console\Output\OutputInterface; /** * Class LoggerFactory @@ -23,9 +24,9 @@ class LoggerFactory { $config = $container->get('config'); if ($config->debug) { - $verbosity = ConsoleOutput::VERBOSITY_DEBUG; + $verbosity = OutputInterface::VERBOSITY_DEBUG; } else { - $verbosity = ConsoleOutput::VERBOSITY_NORMAL; + $verbosity = OutputInterface::VERBOSITY_NORMAL; } $loggerManager = new LoggerManager(); diff --git a/classes/Factory/SessionFactory.php b/classes/Factory/SessionFactory.php index 05bb796..57dab05 100644 --- a/classes/Factory/SessionFactory.php +++ b/classes/Factory/SessionFactory.php @@ -7,6 +7,7 @@ namespace Alltube\Factory; use Aura\Session\Session; +use Aura\Session\SessionFactory as AuraSessionFactory; use Slim\Container; /** @@ -23,7 +24,7 @@ class SessionFactory */ public static function create(Container $container): Session { - $session_factory = new \Aura\Session\SessionFactory(); + $session_factory = new AuraSessionFactory(); $session = $session_factory->newInstance($_COOKIE); $session->setCookieParams(['httponly' => true]); diff --git a/classes/Factory/ViewFactory.php b/classes/Factory/ViewFactory.php index 52715f4..0c34bac 100644 --- a/classes/Factory/ViewFactory.php +++ b/classes/Factory/ViewFactory.php @@ -20,22 +20,6 @@ use SmartyException; */ class ViewFactory { - /** - * Generate the canonical URL of the current page. - * - * @param Request $request PSR-7 Request - * - * @return string URL - */ - private static function getCanonicalUrl(Request $request): string - { - /** @var Uri $uri */ - $uri = $request->getUri(); - - return $uri->withBasePath('') - ->withHost('alltubedownload.net') - ->withScheme('https'); - } /** * @param Uri $uri @@ -66,22 +50,13 @@ class ViewFactory } /** - * Create Smarty view object. + * Create a URI suitable for templates. * - * @param ContainerInterface $container Slim dependency container - * @param Request|null $request PSR-7 request - * - * @return Smarty - * @throws SmartyException + * @param Request $request + * @return Uri */ - public static function create(ContainerInterface $container, Request $request = null): Smarty + public static function prepareUri(Request $request): Uri { - if (!isset($request)) { - $request = $container->get('request'); - } - - $view = new Smarty($container->get('root_path') . '/templates/'); - /** @var Uri $uri */ $uri = $request->getUri(); if (in_array('https', $request->getHeader('X-Forwarded-Proto'))) { @@ -101,25 +76,45 @@ class ViewFactory $uri = $uri->withBasePath($path); } + return self::cleanBasePath($uri); + } + + /** + * Create Smarty view object. + * + * @param ContainerInterface $container Slim dependency container + * @param Request|null $request PSR-7 request + * + * @return Smarty + * @throws SmartyException + */ + public static function create(ContainerInterface $container, Request $request = null): Smarty + { + if (!isset($request)) { + $request = $container->get('request'); + } + + $view = new Smarty($container->get('root_path') . '/templates/'); + + $uri = self::prepareUri($request); + /** @var LocaleManager $localeManager */ $localeManager = $container->get('locale'); - $uri = self::cleanBasePath($uri); - $smartyPlugins = new SmartyPlugins($container->get('router'), $uri->withUserInfo('')); $view->registerPlugin('function', 'path_for', [$smartyPlugins, 'pathFor']); $view->registerPlugin('function', 'base_url', [$smartyPlugins, 'baseUrl']); $view->registerPlugin('block', 't', [$localeManager, 'smartyTranslate']); - $view->offsetSet('canonical', self::getCanonicalUrl($request)); $view->offsetSet('locale', $container->get('locale')); $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())); + $collector = new SmartyCollector($view->getSmarty()); + $collector->useHtmlVarDumper(); + $debugBar->addCollector($collector); $view->offsetSet( 'debug_render', diff --git a/classes/LocaleManager.php b/classes/LocaleManager.php index 884579e..44b33ad 100644 --- a/classes/LocaleManager.php +++ b/classes/LocaleManager.php @@ -114,7 +114,7 @@ class LocaleManager * @param Locale $locale Locale * @return void */ - public function setLocale(Locale $locale) + public function setLocale(Locale $locale): void { $this->translator->setLocale($locale->getIso15897()); $this->curLocale = $locale; @@ -125,7 +125,7 @@ class LocaleManager * Unset the current locale. * @return void */ - public function unsetLocale() + public function unsetLocale(): void { $this->translator->setLocale(self::DEFAULT_LOCALE); $this->curLocale = null; @@ -135,14 +135,14 @@ class LocaleManager /** * Smarty "t" block. * - * @param mixed[] $params Block parameters + * @param string[]|string[][] $params Block parameters * @param string|null $text Block content * * @return string Translated string */ public function smartyTranslate(array $params, string $text = null): string { - if (isset($params['params'])) { + if (isset($params['params']) && is_array($params['params'])) { return $this->t($text, $params['params']); } else { return $this->t($text); @@ -154,7 +154,7 @@ class LocaleManager * * @param string|null $string $string String to translate * - * @param mixed[] $params + * @param string[] $params * @return string Translated string */ public function t(string $string = null, array $params = []): string diff --git a/classes/Middleware/LinkHeaderMiddleware.php b/classes/Middleware/LinkHeaderMiddleware.php index e94e5c5..e93f71b 100644 --- a/classes/Middleware/LinkHeaderMiddleware.php +++ b/classes/Middleware/LinkHeaderMiddleware.php @@ -2,10 +2,9 @@ namespace Alltube\Middleware; -use Psr\Container\ContainerInterface; +use Alltube\Factory\ViewFactory; use Slim\Http\Request; use Slim\Http\Response; -use Slim\Router; /** * Class LinkHeaderMiddleware @@ -13,19 +12,6 @@ use Slim\Router; */ class LinkHeaderMiddleware { - /** - * @var Router - */ - private $router; - - /** - * LinkHeaderMiddleware constructor. - * @param ContainerInterface $container - */ - public function __construct(ContainerInterface $container) - { - $this->router = $container->get('router'); - } /** * @param Request $request @@ -35,12 +21,19 @@ class LinkHeaderMiddleware */ public function __invoke(Request $request, Response $response, callable $next) { + $uri = ViewFactory::prepareUri($request); + $response = $response->withHeader( 'Link', - '<' . $this->router->getBasePath() . '/css/style.css>; rel=preload; as=style' + implode( + '; ', + [ + '<' . $uri->getBasePath() . '/css/style.css>', + 'rel=preload', 'as=style' + ] + ) ); - return $next($request, $response); } } diff --git a/classes/Middleware/LocaleMiddleware.php b/classes/Middleware/LocaleMiddleware.php index 418ee7d..bb0dfac 100644 --- a/classes/Middleware/LocaleMiddleware.php +++ b/classes/Middleware/LocaleMiddleware.php @@ -38,7 +38,7 @@ class LocaleMiddleware /** * Test if a locale can be used for the current user. * - * @param mixed[] $proposedLocale Locale array created by AcceptLanguage::parse() + * @param string[] $proposedLocale Locale array created by AcceptLanguage::parse() * * @return Locale|null Locale if chosen, nothing otherwise */ diff --git a/classes/Robo/Plugin/Commands/ReleaseCommand.php b/classes/Robo/Plugin/Commands/ReleaseCommand.php index 0edd71d..52f2b6d 100644 --- a/classes/Robo/Plugin/Commands/ReleaseCommand.php +++ b/classes/Robo/Plugin/Commands/ReleaseCommand.php @@ -31,7 +31,7 @@ class ReleaseCommand extends Tasks $tmpDir = $this->_tmpDir(); - $filename = 'alltube-' . trim((string)$result->getMessage()) . '.zip'; + $filename = 'alltube-' . trim($result->getMessage()) . '.zip'; /** @var FilesystemStack $rmTask */ $rmTask = $this->taskFilesystemStack(); diff --git a/classes/Stream/ConvertedPlaylistArchiveStream.php b/classes/Stream/ConvertedPlaylistArchiveStream.php index c4114ea..35b57e4 100644 --- a/classes/Stream/ConvertedPlaylistArchiveStream.php +++ b/classes/Stream/ConvertedPlaylistArchiveStream.php @@ -23,7 +23,7 @@ class ConvertedPlaylistArchiveStream extends PlaylistArchiveStream * @return void * @throws AlltubeLibraryException */ - protected function startVideoStream(Video $video) + protected function startVideoStream(Video $video): void { $this->curVideoStream = new Stream($this->downloader->getAudioStream($video)); diff --git a/classes/Stream/PlaylistArchiveStream.php b/classes/Stream/PlaylistArchiveStream.php index 5c9ed4a..58c052f 100644 --- a/classes/Stream/PlaylistArchiveStream.php +++ b/classes/Stream/PlaylistArchiveStream.php @@ -83,7 +83,7 @@ class PlaylistArchiveStream extends ZipArchive implements StreamInterface * * @return void */ - protected function send($data) + protected function send($data): void { $pos = $this->tell(); @@ -133,7 +133,7 @@ class PlaylistArchiveStream extends ZipArchive implements StreamInterface * * @return void */ - public function rewind() + public function rewind(): void { rewind($this->buffer); } @@ -233,7 +233,7 @@ class PlaylistArchiveStream extends ZipArchive implements StreamInterface * * @return void */ - public function seek($offset, $whence = SEEK_SET) + public function seek($offset, $whence = SEEK_SET): void { fseek($this->buffer, $offset, $whence); } @@ -256,7 +256,7 @@ class PlaylistArchiveStream extends ZipArchive implements StreamInterface * @return void * @throws AlltubeLibraryException */ - protected function startVideoStream(Video $video) + protected function startVideoStream(Video $video): void { $response = $this->downloader->getHttpResponse($video); @@ -320,7 +320,7 @@ class PlaylistArchiveStream extends ZipArchive implements StreamInterface * * @return void */ - public function close() + public function close(): void { if (is_resource($this->buffer)) { fclose($this->buffer); diff --git a/classes/Stream/YoutubeChunkStream.php b/classes/Stream/YoutubeChunkStream.php index bb95138..6632eb2 100644 --- a/classes/Stream/YoutubeChunkStream.php +++ b/classes/Stream/YoutubeChunkStream.php @@ -63,7 +63,7 @@ class YoutubeChunkStream implements StreamInterface * * @return void */ - public function close() + public function close(): void { $this->response->getBody()->close(); } @@ -126,7 +126,7 @@ class YoutubeChunkStream implements StreamInterface * * @return void */ - public function seek($offset, $whence = SEEK_SET) + public function seek($offset, $whence = SEEK_SET): void { $this->response->getBody()->seek($offset, $whence); } @@ -136,7 +136,7 @@ class YoutubeChunkStream implements StreamInterface * * @return void */ - public function rewind() + public function rewind(): void { $this->response->getBody()->rewind(); } @@ -156,9 +156,9 @@ class YoutubeChunkStream implements StreamInterface * * @param mixed $string The string that is to be written * - * @return mixed + * @return int */ - public function write($string) + public function write($string): int { return $this->response->getBody()->write($string); } diff --git a/classes/UglyRouter.php b/classes/UglyRouter.php index 51f080f..8e7a201 100644 --- a/classes/UglyRouter.php +++ b/classes/UglyRouter.php @@ -22,7 +22,7 @@ class UglyRouter extends Router * * @param ServerRequestInterface $request The current HTTP request object * - * @return mixed[] + * @return int[]|string[]|array[] * * @link https://github.com/nikic/FastRoute/blob/master/src/Dispatcher.php */ @@ -55,7 +55,7 @@ class UglyRouter extends Router */ public function pathFor($name, array $data = [], array $queryParams = []): string { - $queryParams['page'] = $name; + $queryParams['page'] = $this->relativePathFor($name, $data); $url = Uri::createFromString($this->relativePathFor($name, $data, $queryParams))->withPath(''); if ($this->basePath) { diff --git a/composer.json b/composer.json index 21640dd..2a252c4 100644 --- a/composer.json +++ b/composer.json @@ -1,9 +1,8 @@ { "name": "rudloff/alltube", - "type": "project", "description": "HTML GUI for youtube-dl", - "homepage": "http://alltubedownload.net/", "license": "GPL-3.0-only", + "type": "project", "authors": [ { "name": "Pierre Rudloff", @@ -14,7 +13,7 @@ { "name": "Olivier Haquette", "email": "contact@olivierhaquette.fr", - "homepage": "http://olivierhaquette.fr/", + "homepage": "https://ographik.fr/", "role": "Designer" } ], @@ -29,22 +28,22 @@ "j0k3r/httplug-ssrf-plugin": "^2.0", "jawira/case-converter": "^3.4", "jean85/pretty-package-versions": "^1.3", - "mathmarques/smarty-view": "^1.1", + "mathmarques/smarty-view": "^1.2", "oomphinc/composer-installers-extender": "^2.0", "paragonie/csp-builder": "^2.5", "rinvex/countries": "^6.1", - "rudloff/alltube-library": "^0.1.1", - "symfony/finder": "^5.0", + "rudloff/alltube-library": "^0.1.3", + "symfony/finder": "^5.4", "symfony/translation": "^4.0", "symfony/yaml": "^4.0", "webfontkit/open-sans": "^1.0", - "ytdl-org/youtube-dl": "^2021.04", + "ytdl-org/youtube-dl": "^2021.12", "zonuexe/http-accept-language": "^0.4.1" }, "require-dev": { "consolidation/robo": "^2.1", "enlightn/security-checker": "^1.4", - "ergebnis/composer-normalize": "^2.6", + "ergebnis/composer-normalize": "^2.20", "insite/composer-dangling-locked-deps": "^0.2.1", "junker/debugbar-smarty": "^0.1.0", "kitchenu/slim-debugbar": "^1.1", @@ -52,13 +51,45 @@ "php-mock/php-mock-mockery": "^1.3", "phpro/grumphp": "^1.3", "phpstan/phpstan": "^0.12.72", - "phpunit/phpunit": "^8.4", + "phpunit/phpunit": "^9.5", + "povils/phpmnd": "^2.5", "smarty-gettext/smarty-gettext": "^1.6", "squizlabs/php_codesniffer": "^3.5", - "symfony/error-handler": "^5.0", - "symfony/var-dumper": "^5.0" + "symfony/error-handler": "^5.4", + "symfony/var-dumper": "^5.4" + }, + "repositories": [ + { + "type": "package", + "package": { + "name": "ytdl-org/youtube-dl", + "version": "2021.12.17", + "dist": { + "type": "tar", + "url": "https://yt-dl.org/downloads/2021.12.17/youtube-dl-2021.12.17.tar.gz" + } + } + } + ], + "autoload": { + "psr-4": { + "Alltube\\": "classes/" + } + }, + "autoload-dev": { + "psr-4": { + "Alltube\\Test\\": "tests/" + } }, "config": { + "allow-plugins": { + "composer/installers": true, + "cweagans/composer-patches": true, + "ergebnis/composer-normalize": true, + "insite/composer-dangling-locked-deps": true, + "oomphinc/composer-installers-extender": true, + "phpro/grumphp": true + }, "platform": { "php": "7.3.11" }, @@ -82,29 +113,6 @@ } } }, - "autoload": { - "psr-4": { - "Alltube\\": "classes/" - } - }, - "autoload-dev": { - "psr-4": { - "Alltube\\Test\\": "tests/" - } - }, - "repositories": [ - { - "type": "package", - "package": { - "name": "ytdl-org/youtube-dl", - "version": "2021.04.01", - "dist": { - "type": "zip", - "url": "https://github.com/ytdl-org/youtube-dl/archive/2021.04.01.zip" - } - } - } - ], "scripts": { "lint": "grumphp run --ansi", "release": "robo release --ansi", diff --git a/composer.lock b/composer.lock index 79871c8..c22312f 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": "87b2074ab1d8a7ee59f719e26130ca36", + "content-hash": "04ca8a247b1de3e0c910e0da6e5e5f01", "packages": [ { "name": "aura/session", @@ -325,24 +325,24 @@ }, { "name": "composer/package-versions-deprecated", - "version": "1.10.99", + "version": "1.11.99.5", "source": { "type": "git", "url": "https://github.com/composer/package-versions-deprecated.git", - "reference": "dd51b4443d58b34b6d9344cf4c288e621c9a826f" + "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/dd51b4443d58b34b6d9344cf4c288e621c9a826f", - "reference": "dd51b4443d58b34b6d9344cf4c288e621c9a826f", + "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/b4f54f74ef3453349c24a845d22392cd31e65f1d", + "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d", "shasum": "" }, "require": { "composer-plugin-api": "^1.1.0 || ^2.0", - "php": "^7" + "php": "^7 || ^8" }, "replace": { - "ocramius/package-versions": "1.10.99" + "ocramius/package-versions": "1.11.99" }, "require-dev": { "composer/composer": "^1.9.3 || ^2.0@dev", @@ -378,7 +378,7 @@ "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", "support": { "issues": "https://github.com/composer/package-versions-deprecated/issues", - "source": "https://github.com/composer/package-versions-deprecated/tree/1.10.99" + "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.5" }, "funding": [ { @@ -394,7 +394,7 @@ "type": "tidelift" } ], - "time": "2020-07-15T08:39:18+00:00" + "time": "2022-01-17T14:14:24+00:00" }, { "name": "consolidation/log", @@ -891,21 +891,27 @@ }, { "name": "jawira/case-converter", - "version": "v3.4.1", + "version": "v3.4.6", "source": { "type": "git", "url": "https://github.com/jawira/case-converter.git", - "reference": "756089a523ce268fb173a9f4af4ca95629b3a7f0" + "reference": "2f284c0760ee8085ab463f57275cf1f887fb78ae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jawira/case-converter/zipball/756089a523ce268fb173a9f4af4ca95629b3a7f0", - "reference": "756089a523ce268fb173a9f4af4ca95629b3a7f0", + "url": "https://api.github.com/repos/jawira/case-converter/zipball/2f284c0760ee8085ab463f57275cf1f887fb78ae", + "reference": "2f284c0760ee8085ab463f57275cf1f887fb78ae", "shasum": "" }, "require": { "ext-mbstring": "*", - "php": "^7.1" + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "behat/behat": "^3.0", + "phpstan/phpstan": "^1.0", + "phpunit/phpunit": "^9.0", + "vimeo/psalm": "^4.0" }, "suggest": { "pds/skeleton": "PHP Package Development Standards", @@ -924,8 +930,7 @@ "authors": [ { "name": "Jawira Portugal", - "email": "dev@tugal.be", - "homepage": "http://jawira.com/" + "email": "dev@tugal.be" } ], "description": "Convert strings between 13 naming conventions: Snake case, Camel case, Pascal case, Kebab case, Ada case, Train case, Cobol case, Macro case, Upper case, Lower case, Sentence case, Title case and Dot notation.", @@ -947,9 +952,9 @@ ], "support": { "issues": "https://github.com/jawira/case-converter/issues", - "source": "https://github.com/jawira/case-converter/tree/v3.4.1" + "source": "https://github.com/jawira/case-converter/tree/v3.4.6" }, - "time": "2019-12-15T14:31:43+00:00" + "time": "2021-11-21T19:52:51+00:00" }, { "name": "jean85/pretty-package-versions", @@ -1008,22 +1013,22 @@ }, { "name": "mathmarques/smarty-view", - "version": "1.1.2", + "version": "1.2", "source": { "type": "git", "url": "https://github.com/mathmarques/Smarty-View.git", - "reference": "2ab996e79efcc600cc324b6469c1cdbcd189c9fe" + "reference": "594b7f427a239f29146d0b5bf4b3c9f36d3fda8a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mathmarques/Smarty-View/zipball/2ab996e79efcc600cc324b6469c1cdbcd189c9fe", - "reference": "2ab996e79efcc600cc324b6469c1cdbcd189c9fe", + "url": "https://api.github.com/repos/mathmarques/Smarty-View/zipball/594b7f427a239f29146d0b5bf4b3c9f36d3fda8a", + "reference": "594b7f427a239f29146d0b5bf4b3c9f36d3fda8a", "shasum": "" }, "require": { "php": ">=5.5.0", "slim/slim": "^3.0", - "smarty/smarty": "~3.1" + "smarty/smarty": "^3.1|^4.0" }, "require-dev": { "phpunit/phpunit": "^4.8.0" @@ -1056,9 +1061,9 @@ ], "support": { "issues": "https://github.com/mathmarques/Smarty-View/issues", - "source": "https://github.com/mathmarques/Smarty-View/tree/1.1.2" + "source": "https://github.com/mathmarques/Smarty-View/tree/1.2" }, - "time": "2019-03-31T14:42:41+00:00" + "time": "2022-02-04T19:41:18+00:00" }, { "name": "nikic/fast-route", @@ -1687,24 +1692,24 @@ }, { "name": "pimple/pimple", - "version": "v3.3.0", + "version": "v3.3.1", "source": { "type": "git", "url": "https://github.com/silexphp/Pimple.git", - "reference": "e55d12f9d6a0e7f9c85992b73df1267f46279930" + "reference": "21e45061c3429b1e06233475cc0e1f6fc774d5b0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/silexphp/Pimple/zipball/e55d12f9d6a0e7f9c85992b73df1267f46279930", - "reference": "e55d12f9d6a0e7f9c85992b73df1267f46279930", + "url": "https://api.github.com/repos/silexphp/Pimple/zipball/21e45061c3429b1e06233475cc0e1f6fc774d5b0", + "reference": "21e45061c3429b1e06233475cc0e1f6fc774d5b0", "shasum": "" }, "require": { - "php": "^7.2.5", + "php": ">=7.2.5", "psr/container": "^1.0" }, "require-dev": { - "symfony/phpunit-bridge": "^3.4|^4.4|^5.0" + "symfony/phpunit-bridge": "^5.0" }, "type": "library", "extra": { @@ -1734,10 +1739,9 @@ "dependency injection" ], "support": { - "issues": "https://github.com/silexphp/Pimple/issues", - "source": "https://github.com/silexphp/Pimple/tree/master" + "source": "https://github.com/silexphp/Pimple/tree/v3.3.1" }, - "time": "2020-03-03T09:12:48+00:00" + "time": "2020-11-24T20:35:42+00:00" }, { "name": "psr/container", @@ -2132,16 +2136,16 @@ }, { "name": "rudloff/alltube-library", - "version": "0.1.1", + "version": "0.1.3", "source": { "type": "git", "url": "https://github.com/Rudloff/alltube-library.git", - "reference": "f0bbd14b06bb4df9e3fbae62a6f09b455fdcc703" + "reference": "2aa3a2ce05dd20314bed9b1e0827568fe01ef276" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Rudloff/alltube-library/zipball/f0bbd14b06bb4df9e3fbae62a6f09b455fdcc703", - "reference": "f0bbd14b06bb4df9e3fbae62a6f09b455fdcc703", + "url": "https://api.github.com/repos/Rudloff/alltube-library/zipball/2aa3a2ce05dd20314bed9b1e0827568fe01ef276", + "reference": "2aa3a2ce05dd20314bed9b1e0827568fe01ef276", "shasum": "" }, "require": { @@ -2171,9 +2175,9 @@ "homepage": "http://alltubedownload.net/", "support": { "issues": "https://github.com/Rudloff/alltube-library/issues", - "source": "https://github.com/Rudloff/alltube-library/tree/0.1.1" + "source": "https://github.com/Rudloff/alltube-library/tree/0.1.3" }, - "time": "2020-10-27T22:25:49+00:00" + "time": "2021-05-13T10:37:41+00:00" }, { "name": "slim/slim", @@ -2254,29 +2258,29 @@ }, { "name": "smarty/smarty", - "version": "v3.1.47", + "version": "v4.2.1", "source": { "type": "git", "url": "https://github.com/smarty-php/smarty.git", - "reference": "a09364fe1706cb465e910eb040e592053d7effb8" + "reference": "ffa2b81a8e354a49fd8a2f24742dc9dc399e8007" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/smarty-php/smarty/zipball/a09364fe1706cb465e910eb040e592053d7effb8", - "reference": "a09364fe1706cb465e910eb040e592053d7effb8", + "url": "https://api.github.com/repos/smarty-php/smarty/zipball/ffa2b81a8e354a49fd8a2f24742dc9dc399e8007", + "reference": "ffa2b81a8e354a49fd8a2f24742dc9dc399e8007", "shasum": "" }, "require": { - "php": "^5.2 || ^7.0" + "php": "^7.1 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^7.5 || ^6.5 || ^5.7 || ^4.8", + "phpunit/phpunit": "^8.5 || ^7.5", "smarty/smarty-lexer": "^3.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1.x-dev" + "dev-master": "4.0.x-dev" } }, "autoload": { @@ -2300,20 +2304,23 @@ { "name": "Rodney Rehm", "email": "rodney.rehm@medialize.de" + }, + { + "name": "Simon Wisselink", + "homepage": "https://www.iwink.nl/" } ], "description": "Smarty - the compiling PHP template engine", - "homepage": "http://www.smarty.net", + "homepage": "https://smarty-php.github.io/smarty/", "keywords": [ "templating" ], "support": { - "forum": "http://www.smarty.net/forums/", - "irc": "irc://irc.freenode.org/smarty", + "forum": "https://github.com/smarty-php/smarty/discussions", "issues": "https://github.com/smarty-php/smarty/issues", - "source": "https://github.com/smarty-php/smarty/tree/v3.1.47" + "source": "https://github.com/smarty-php/smarty/tree/v4.2.1" }, - "time": "2022-09-14T11:29:00+00:00" + "time": "2022-09-14T10:59:01+00:00" }, { "name": "symfony/console", @@ -2414,7 +2421,7 @@ }, { "name": "symfony/deprecation-contracts", - "version": "v2.5.1", + "version": "v2.5.2", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", @@ -2461,7 +2468,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.1" + "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.2" }, "funding": [ { @@ -2481,27 +2488,24 @@ }, { "name": "symfony/finder", - "version": "v5.0.8", + "version": "v5.4.2", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "600a52c29afc0d1caa74acbec8d3095ca7e9910d" + "reference": "e77046c252be48c48a40816187ed527703c8f76c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/600a52c29afc0d1caa74acbec8d3095ca7e9910d", - "reference": "600a52c29afc0d1caa74acbec8d3095ca7e9910d", + "url": "https://api.github.com/repos/symfony/finder/zipball/e77046c252be48c48a40816187ed527703c8f76c", + "reference": "e77046c252be48c48a40816187ed527703c8f76c", "shasum": "" }, "require": { - "php": "^7.2.5" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php80": "^1.16" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Finder\\": "" @@ -2524,10 +2528,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Finder Component", + "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v5.0.8" + "source": "https://github.com/symfony/finder/tree/v5.4.2" }, "funding": [ { @@ -2543,7 +2547,7 @@ "type": "tidelift" } ], - "time": "2020-03-27T16:56:45+00:00" + "time": "2021-12-15T11:06:13+00:00" }, { "name": "symfony/options-resolver", @@ -2616,16 +2620,16 @@ }, { "name": "symfony/polyfill-ctype", - "version": "v1.22.0", + "version": "v1.23.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "c6c942b1ac76c82448322025e084cadc56048b4e" + "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/c6c942b1ac76c82448322025e084cadc56048b4e", - "reference": "c6c942b1ac76c82448322025e084cadc56048b4e", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce", + "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce", "shasum": "" }, "require": { @@ -2637,7 +2641,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.22-dev" + "dev-main": "1.23-dev" }, "thanks": { "name": "symfony/polyfill", @@ -2675,7 +2679,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.22.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0" }, "funding": [ { @@ -2691,7 +2695,7 @@ "type": "tidelift" } ], - "time": "2021-01-07T16:49:33+00:00" + "time": "2021-02-19T12:13:01+00:00" }, { "name": "symfony/polyfill-intl-grapheme", @@ -3409,16 +3413,16 @@ }, { "name": "symfony/string", - "version": "v5.2.3", + "version": "v5.4.10", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "c95468897f408dd0aca2ff582074423dd0455122" + "reference": "4432bc7df82a554b3e413a8570ce2fea90e94097" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/c95468897f408dd0aca2ff582074423dd0455122", - "reference": "c95468897f408dd0aca2ff582074423dd0455122", + "url": "https://api.github.com/repos/symfony/string/zipball/4432bc7df82a554b3e413a8570ce2fea90e94097", + "reference": "4432bc7df82a554b3e413a8570ce2fea90e94097", "shasum": "" }, "require": { @@ -3429,11 +3433,14 @@ "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php80": "~1.15" }, + "conflict": { + "symfony/translation-contracts": ">=3.0" + }, "require-dev": { - "symfony/error-handler": "^4.4|^5.0", - "symfony/http-client": "^4.4|^5.0", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", "symfony/translation-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.4|^5.0" + "symfony/var-exporter": "^4.4|^5.0|^6.0" }, "type": "library", "autoload": { @@ -3472,7 +3479,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.2.3" + "source": "https://github.com/symfony/string/tree/v5.4.10" }, "funding": [ { @@ -3488,7 +3495,7 @@ "type": "tidelift" } ], - "time": "2021-01-25T15:14:59+00:00" + "time": "2022-06-26T15:57:47+00:00" }, { "name": "symfony/translation", @@ -3721,10 +3728,10 @@ }, { "name": "ytdl-org/youtube-dl", - "version": "2021.04.01", + "version": "2021.12.17", "dist": { - "type": "zip", - "url": "https://github.com/ytdl-org/youtube-dl/archive/2021.04.01.zip" + "type": "tar", + "url": "https://yt-dl.org/downloads/2021.12.17/youtube-dl-2021.12.17.tar.gz" }, "type": "library" }, @@ -4296,48 +4303,36 @@ }, { "name": "consolidation/annotated-command", - "version": "4.1.1", + "version": "4.5.1", "source": { "type": "git", "url": "https://github.com/consolidation/annotated-command.git", - "reference": "efc58dc0f34a45539787c5190b41b5d2a50a08da" + "reference": "701a7abe8505abe89520837be798e15a3953a367" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/consolidation/annotated-command/zipball/efc58dc0f34a45539787c5190b41b5d2a50a08da", - "reference": "efc58dc0f34a45539787c5190b41b5d2a50a08da", + "url": "https://api.github.com/repos/consolidation/annotated-command/zipball/701a7abe8505abe89520837be798e15a3953a367", + "reference": "701a7abe8505abe89520837be798e15a3953a367", "shasum": "" }, "require": { "consolidation/output-formatters": "^4.1.1", "php": ">=7.1.3", "psr/log": "^1|^2", - "symfony/console": "^4.4.8|^5", - "symfony/event-dispatcher": "^4.4.8|^5", - "symfony/finder": "^4.4.8|^5" + "symfony/console": "^4.4.8|^5|^6", + "symfony/event-dispatcher": "^4.4.8|^5|^6", + "symfony/finder": "^4.4.8|^5|^6" }, "require-dev": { - "g1a/composer-test-scenarios": "^3", - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^6", - "squizlabs/php_codesniffer": "^3" + "composer-runtime-api": "^2.0", + "phpunit/phpunit": "^7.5.20 || ^8 || ^9", + "squizlabs/php_codesniffer": "^3", + "yoast/phpunit-polyfills": "^0.2.0" }, "type": "library", "extra": { - "scenarios": { - "symfony4": { - "require": { - "symfony/console": "^4.0" - }, - "config": { - "platform": { - "php": "7.1.3" - } - } - } - }, "branch-alias": { - "dev-master": "4.x-dev" + "dev-main": "4.x-dev" } }, "autoload": { @@ -4358,9 +4353,9 @@ "description": "Initialize Symfony Console commands from annotated command class methods.", "support": { "issues": "https://github.com/consolidation/annotated-command/issues", - "source": "https://github.com/consolidation/annotated-command/tree/master" + "source": "https://github.com/consolidation/annotated-command/tree/4.5.1" }, - "time": "2020-05-27T21:11:36+00:00" + "time": "2021-12-30T04:00:37+00:00" }, { "name": "consolidation/config", @@ -4828,36 +4823,31 @@ }, { "name": "doctrine/instantiator", - "version": "1.3.0", + "version": "1.4.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "ae466f726242e637cebdd526a7d991b9433bacf1" + "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/ae466f726242e637cebdd526a7d991b9433bacf1", - "reference": "ae466f726242e637cebdd526a7d991b9433bacf1", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", + "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", "shasum": "" }, "require": { - "php": "^7.1" + "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^6.0", + "doctrine/coding-standard": "^8.0", "ext-pdo": "*", "ext-phar": "*", - "phpbench/phpbench": "^0.13", - "phpstan/phpstan-phpunit": "^0.11", - "phpstan/phpstan-shim": "^0.11", - "phpunit/phpunit": "^7.0" + "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, "autoload": { "psr-4": { "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" @@ -4871,7 +4861,7 @@ { "name": "Marco Pivetta", "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.com/" + "homepage": "https://ocramius.github.io/" } ], "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", @@ -4882,9 +4872,23 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/master" + "source": "https://github.com/doctrine/instantiator/tree/1.4.0" }, - "time": "2019-10-21T16:45:58+00:00" + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", + "type": "tidelift" + } + ], + "time": "2020-11-10T18:47:58+00:00" }, { "name": "enlightn/security-checker", @@ -4952,43 +4956,43 @@ }, { "name": "ergebnis/composer-normalize", - "version": "2.6.0", + "version": "2.20.0", "source": { "type": "git", "url": "https://github.com/ergebnis/composer-normalize.git", - "reference": "ad7a07896aaf513bdcda7ef883c793a344c04aba" + "reference": "c172e90a0afa77f2665031dfde3fccb9415bddd7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ergebnis/composer-normalize/zipball/ad7a07896aaf513bdcda7ef883c793a344c04aba", - "reference": "ad7a07896aaf513bdcda7ef883c793a344c04aba", + "url": "https://api.github.com/repos/ergebnis/composer-normalize/zipball/c172e90a0afa77f2665031dfde3fccb9415bddd7", + "reference": "c172e90a0afa77f2665031dfde3fccb9415bddd7", "shasum": "" }, "require": { - "composer-plugin-api": "^1.1.0 || ^2.0.0", - "ergebnis/json-normalizer": "~0.12.0", - "ergebnis/json-printer": "^3.0.2", - "justinrainbow/json-schema": "^5.2.10", - "localheinz/diff": "^1.0.1", - "php": "^7.1 || ^8.0" + "composer-plugin-api": "^2.0.0", + "ergebnis/json-normalizer": "^1.0.3", + "ergebnis/json-printer": "^3.1.1", + "justinrainbow/json-schema": "^5.2.11", + "localheinz/diff": "^1.1.1", + "php": "^7.3 || ^8.0" }, "require-dev": { - "composer/composer": "^1.10.8 || ^2.0.0", - "composer/package-versions-deprecated": "^1.8.1", - "ergebnis/phpstan-rules": "~0.15.0", - "ergebnis/test-util": "~1.0.0", - "jangregor/phpstan-prophecy": "~0.8.0", - "phpstan/extension-installer": "^1.0.4", - "phpstan/phpstan": "~0.12.32", - "phpstan/phpstan-deprecation-rules": "~0.12.4", - "phpstan/phpstan-phpunit": "~0.12.11", - "phpstan/phpstan-strict-rules": "~0.12.2", - "phpunit/phpunit": "^7.5.20", - "symfony/filesystem": "^4.4.9" + "composer/composer": "^2.2.1", + "ergebnis/license": "^1.1.0", + "ergebnis/php-cs-fixer-config": "^3.4.0", + "fakerphp/faker": "^1.17.0", + "phpunit/phpunit": "^9.5.11", + "psalm/plugin-phpunit": "~0.16.1", + "symfony/filesystem": "^5.4.0", + "vimeo/psalm": "^4.16.1" }, "type": "composer-plugin", "extra": { - "class": "Ergebnis\\Composer\\Normalize\\NormalizePlugin" + "class": "Ergebnis\\Composer\\Normalize\\NormalizePlugin", + "composer-normalize": { + "indent-size": 2, + "indent-style": "space" + } }, "autoload": { "psr-4": { @@ -5018,64 +5022,48 @@ "source": "https://github.com/ergebnis/composer-normalize" }, "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" + "time": "2021-12-28T11:05:22+00:00" }, { "name": "ergebnis/json-normalizer", - "version": "0.12.0", + "version": "1.0.3", "source": { "type": "git", "url": "https://github.com/ergebnis/json-normalizer.git", - "reference": "0197447cd5d8f7e82116e904196a3e9f470655db" + "reference": "4a7f064ce34d5a2e382564565cdd433dbc5b9494" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ergebnis/json-normalizer/zipball/0197447cd5d8f7e82116e904196a3e9f470655db", - "reference": "0197447cd5d8f7e82116e904196a3e9f470655db", + "url": "https://api.github.com/repos/ergebnis/json-normalizer/zipball/4a7f064ce34d5a2e382564565cdd433dbc5b9494", + "reference": "4a7f064ce34d5a2e382564565cdd433dbc5b9494", "shasum": "" }, "require": { - "ergebnis/json-printer": "^3.0.2", + "ergebnis/json-printer": "^3.1.1", "ext-json": "*", - "justinrainbow/json-schema": "^4.0.0 || ^5.0.0", - "php": "^7.1" + "justinrainbow/json-schema": "^5.2.10", + "php": "^7.2 || ^8.0" }, "require-dev": { - "ergebnis/license": "~0.1.0", - "ergebnis/php-cs-fixer-config": "^2.1.2", - "ergebnis/phpstan-rules": "~0.14.4", - "ergebnis/test-util": "~1.0.0", - "infection/infection": "~0.13.6", - "jangregor/phpstan-prophecy": "~0.6.2", - "phpstan/extension-installer": "^1.0.4", - "phpstan/phpstan": "~0.12.18", - "phpstan/phpstan-deprecation-rules": "~0.12.2", - "phpstan/phpstan-phpunit": "~0.12.8", - "phpstan/phpstan-strict-rules": "~0.12.2", - "phpunit/phpunit": "^7.5.20", - "psalm/plugin-phpunit": "~0.10.0", - "vimeo/psalm": "^3.11.2" + "ergebnis/license": "^1.1.0", + "ergebnis/php-cs-fixer-config": "^2.10.0", + "ergebnis/phpstan-rules": "~0.15.3", + "ergebnis/test-util": "^1.4.0", + "infection/infection": "~0.15.3", + "jangregor/phpstan-prophecy": "~0.8.1", + "phpstan/extension-installer": "^1.1.0", + "phpstan/phpstan": "~0.12.80", + "phpstan/phpstan-deprecation-rules": "~0.12.6", + "phpstan/phpstan-phpunit": "~0.12.17", + "phpstan/phpstan-strict-rules": "~0.12.9", + "phpunit/phpunit": "^8.5.14", + "psalm/plugin-phpunit": "~0.12.2", + "vimeo/psalm": "^3.18" }, "type": "library", "autoload": { @@ -5104,58 +5092,46 @@ "source": "https://github.com/ergebnis/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" + "time": "2021-03-06T13:33:57+00:00" }, { "name": "ergebnis/json-printer", - "version": "3.1.0", + "version": "3.1.1", "source": { "type": "git", "url": "https://github.com/ergebnis/json-printer.git", - "reference": "776a5c85ce3c67d97c6af08a67c917adbdb4758e" + "reference": "e4190dadd9937a77d8afcaf2b6c42a528ab367d6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ergebnis/json-printer/zipball/776a5c85ce3c67d97c6af08a67c917adbdb4758e", - "reference": "776a5c85ce3c67d97c6af08a67c917adbdb4758e", + "url": "https://api.github.com/repos/ergebnis/json-printer/zipball/e4190dadd9937a77d8afcaf2b6c42a528ab367d6", + "reference": "e4190dadd9937a77d8afcaf2b6c42a528ab367d6", "shasum": "" }, "require": { "ext-json": "*", "ext-mbstring": "*", - "php": "^7.1 || ^8.0" + "php": "^7.2 || ^8.0" }, "require-dev": { - "ergebnis/license": "~1.0.0", + "ergebnis/license": "^1.0.0", "ergebnis/php-cs-fixer-config": "^2.2.1", - "ergebnis/phpstan-rules": "~0.15.0", - "ergebnis/test-util": "~1.0.0", - "infection/infection": "~0.13.6", + "ergebnis/phpstan-rules": "~0.15.2", + "ergebnis/test-util": "^1.1.0", + "infection/infection": "~0.15.3", "phpstan/extension-installer": "^1.0.4", - "phpstan/phpstan": "~0.12.32", - "phpstan/phpstan-deprecation-rules": "~0.12.4", - "phpstan/phpstan-phpunit": "~0.12.11", - "phpstan/phpstan-strict-rules": "~0.12.2", - "phpunit/phpunit": "^7.5.20", - "psalm/plugin-phpunit": "~0.10.1", - "vimeo/psalm": "^3.12.2" + "phpstan/phpstan": "~0.12.40", + "phpstan/phpstan-deprecation-rules": "~0.12.5", + "phpstan/phpstan-phpunit": "~0.12.16", + "phpstan/phpstan-strict-rules": "~0.12.4", + "phpunit/phpunit": "^8.5.8", + "psalm/plugin-phpunit": "~0.11.0", + "vimeo/psalm": "^3.14.2" }, "type": "library", "autoload": { @@ -5185,28 +5161,12 @@ "source": "https://github.com/ergebnis/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" + "time": "2020-08-30T12:17:03+00:00" }, { "name": "gitonomy/gitlib", @@ -5383,20 +5343,20 @@ }, { "name": "hamcrest/hamcrest-php", - "version": "v2.0.0", + "version": "v2.0.1", "source": { "type": "git", "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "776503d3a8e85d4f9a1148614f95b7a608b046ad" + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/776503d3a8e85d4f9a1148614f95b7a608b046ad", - "reference": "776503d3a8e85d4f9a1148614f95b7a608b046ad", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", "shasum": "" }, "require": { - "php": "^5.3|^7.0" + "php": "^5.3|^7.0|^8.0" }, "replace": { "cordoval/hamcrest-php": "*", @@ -5404,14 +5364,13 @@ "kodova/hamcrest-php": "*" }, "require-dev": { - "phpunit/php-file-iterator": "1.3.3", - "phpunit/phpunit": "~4.0", - "satooshi/php-coveralls": "^1.0" + "phpunit/php-file-iterator": "^1.4 || ^2.0", + "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "2.1-dev" } }, "autoload": { @@ -5421,7 +5380,7 @@ }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD" + "BSD-3-Clause" ], "description": "This is the PHP port of Hamcrest Matchers", "keywords": [ @@ -5429,9 +5388,9 @@ ], "support": { "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/master" + "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" }, - "time": "2016-01-20T08:20:44+00:00" + "time": "2020-07-09T08:09:16+00:00" }, { "name": "insite/composer-dangling-locked-deps", @@ -5521,16 +5480,16 @@ }, { "name": "justinrainbow/json-schema", - "version": "5.2.10", + "version": "5.2.11", "source": { "type": "git", "url": "https://github.com/justinrainbow/json-schema.git", - "reference": "2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b" + "reference": "2ab6744b7296ded80f8cc4f9509abbff393399aa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b", - "reference": "2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b", + "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/2ab6744b7296ded80f8cc4f9509abbff393399aa", + "reference": "2ab6744b7296ded80f8cc4f9509abbff393399aa", "shasum": "" }, "require": { @@ -5585,9 +5544,9 @@ ], "support": { "issues": "https://github.com/justinrainbow/json-schema/issues", - "source": "https://github.com/justinrainbow/json-schema/tree/5.2.10" + "source": "https://github.com/justinrainbow/json-schema/tree/5.2.11" }, - "time": "2020-05-27T16:41:55+00:00" + "time": "2021-07-22T09:24:00+00:00" }, { "name": "kitchenu/slim-debugbar", @@ -5642,21 +5601,21 @@ }, { "name": "league/container", - "version": "2.4.1", + "version": "2.5.0", "source": { "type": "git", "url": "https://github.com/thephpleague/container.git", - "reference": "43f35abd03a12977a60ffd7095efd6a7808488c0" + "reference": "8438dc47a0674e3378bcce893a0a04d79a2c22b3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/container/zipball/43f35abd03a12977a60ffd7095efd6a7808488c0", - "reference": "43f35abd03a12977a60ffd7095efd6a7808488c0", + "url": "https://api.github.com/repos/thephpleague/container/zipball/8438dc47a0674e3378bcce893a0a04d79a2c22b3", + "reference": "8438dc47a0674e3378bcce893a0a04d79a2c22b3", "shasum": "" }, "require": { "container-interop/container-interop": "^1.2", - "php": "^5.4.0 || ^7.0" + "php": "^5.4 || ^7.0 || ^8.0" }, "provide": { "container-interop/container-interop-implementation": "^1.2", @@ -5666,7 +5625,9 @@ "orno/di": "~2.0" }, "require-dev": { - "phpunit/phpunit": "4.*" + "phpunit/phpunit": "^4.8.36", + "scrutinizer/ocular": "^1.3", + "squizlabs/php_codesniffer": "^3.5" }, "type": "library", "extra": { @@ -5705,30 +5666,36 @@ ], "support": { "issues": "https://github.com/thephpleague/container/issues", - "source": "https://github.com/thephpleague/container/tree/2.x" + "source": "https://github.com/thephpleague/container/tree/2.5.0" }, - "time": "2017-05-10T09:20:27+00:00" + "funding": [ + { + "url": "https://github.com/philipobenito", + "type": "github" + } + ], + "time": "2021-02-22T09:20:06+00:00" }, { "name": "localheinz/diff", - "version": "1.0.1", + "version": "1.1.1", "source": { "type": "git", "url": "https://github.com/localheinz/diff.git", - "reference": "bd5661db4bbed26c6f25df8851fd9f4b424a356e" + "reference": "851bb20ea8358c86f677f5f111c4ab031b1c764c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/localheinz/diff/zipball/bd5661db4bbed26c6f25df8851fd9f4b424a356e", - "reference": "bd5661db4bbed26c6f25df8851fd9f4b424a356e", + "url": "https://api.github.com/repos/localheinz/diff/zipball/851bb20ea8358c86f677f5f111c4ab031b1c764c", + "reference": "851bb20ea8358c86f677f5f111c4ab031b1c764c", "shasum": "" }, "require": { - "php": "^7.1" + "php": "^7.1 || ^8.0" }, "require-dev": { "phpunit/phpunit": "^7.5 || ^8.0", - "symfony/process": "^2 || ^3.3 || ^4" + "symfony/process": "^4.2 || ^5" }, "type": "library", "autoload": { @@ -5751,7 +5718,7 @@ } ], "description": "Fork of sebastian/diff for use with ergebnis/composer-normalize", - "homepage": "https://github.com/sebastianbergmann/diff", + "homepage": "https://github.com/localheinz/diff", "keywords": [ "diff", "udiff", @@ -5759,9 +5726,15 @@ "unified diff" ], "support": { - "source": "https://github.com/localheinz/diff/tree/master" + "source": "https://github.com/localheinz/diff/tree/main" }, - "time": "2019-12-17T07:42:37+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-07-06T04:49:32+00:00" }, { "name": "maximebf/debugbar", @@ -5830,30 +5803,33 @@ }, { "name": "mockery/mockery", - "version": "1.2.2", + "version": "1.4.4", "source": { "type": "git", "url": "https://github.com/mockery/mockery.git", - "reference": "0eb0b48c3f07b3b89f5169ce005b7d05b18cf1d2" + "reference": "e01123a0e847d52d186c5eb4b9bf58b0c6d00346" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/0eb0b48c3f07b3b89f5169ce005b7d05b18cf1d2", - "reference": "0eb0b48c3f07b3b89f5169ce005b7d05b18cf1d2", + "url": "https://api.github.com/repos/mockery/mockery/zipball/e01123a0e847d52d186c5eb4b9bf58b0c6d00346", + "reference": "e01123a0e847d52d186c5eb4b9bf58b0c6d00346", "shasum": "" }, "require": { - "hamcrest/hamcrest-php": "~2.0", + "hamcrest/hamcrest-php": "^2.0.1", "lib-pcre": ">=7.0", - "php": ">=5.6.0" + "php": "^7.3 || ^8.0" + }, + "conflict": { + "phpunit/phpunit": "<8.0" }, "require-dev": { - "phpunit/phpunit": "~5.7.10|~6.5|~7.0|~8.0" + "phpunit/phpunit": "^8.5 || ^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.4.x-dev" } }, "autoload": { @@ -5893,9 +5869,9 @@ ], "support": { "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/master" + "source": "https://github.com/mockery/mockery/tree/1.4.4" }, - "time": "2019-02-13T09:37:52+00:00" + "time": "2021-09-13T15:28:59+00:00" }, { "name": "monolog/monolog", @@ -5995,23 +5971,20 @@ }, { "name": "myclabs/deep-copy", - "version": "1.9.3", + "version": "1.10.2", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "007c053ae6f31bba39dfa19a7726f56e9763bbea" + "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/007c053ae6f31bba39dfa19a7726f56e9763bbea", - "reference": "007c053ae6f31bba39dfa19a7726f56e9763bbea", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", + "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", "shasum": "" }, "require": { - "php": "^7.1" - }, - "replace": { - "myclabs/deep-copy": "self.version" + "php": "^7.1 || ^8.0" }, "require-dev": { "doctrine/collections": "^1.0", @@ -6041,9 +6014,71 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.9.3" + "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" }, - "time": "2019-08-09T12:45:53+00:00" + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2020-11-13T09:40:50+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v4.13.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "50953a2691a922aa1769461637869a0a2faa3f53" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/50953a2691a922aa1769461637869a0a2faa3f53", + "reference": "50953a2691a922aa1769461637869a0a2faa3f53", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=7.0" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.0" + }, + "time": "2021-09-20T12:20:58+00:00" }, { "name": "ondram/ci-detector", @@ -6184,28 +6219,29 @@ }, { "name": "phar-io/manifest", - "version": "1.0.3", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/phar-io/manifest.git", - "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" + "reference": "97803eca37d319dfa7826cc2437fc020857acb53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", - "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53", "shasum": "" }, "require": { "ext-dom": "*", "ext-phar": "*", - "phar-io/version": "^2.0", - "php": "^5.6 || ^7.0" + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -6237,26 +6273,26 @@ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", "support": { "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/master" + "source": "https://github.com/phar-io/manifest/tree/2.0.3" }, - "time": "2018-07-08T19:23:20+00:00" + "time": "2021-07-20T11:28:43+00:00" }, { "name": "phar-io/version", - "version": "2.0.1", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/phar-io/version.git", - "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" + "reference": "bae7c545bef187884426f042434e561ab1ddb182" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", - "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182", + "reference": "bae7c545bef187884426f042434e561ab1ddb182", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": "^7.2 || ^8.0" }, "type": "library", "autoload": { @@ -6288,39 +6324,43 @@ "description": "Library for handling version information and constraints", "support": { "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/master" + "source": "https://github.com/phar-io/version/tree/3.1.0" }, - "time": "2018-07-08T19:19:57+00:00" + "time": "2021-02-23T14:00:09+00:00" }, { "name": "php-mock/php-mock", - "version": "2.1.2", + "version": "2.3.0", "source": { "type": "git", "url": "https://github.com/php-mock/php-mock.git", - "reference": "35379d7b382b787215617f124662d9ead72c15e3" + "reference": "a3142f257153b71c09bf9146ecf73430b3818b7c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-mock/php-mock/zipball/35379d7b382b787215617f124662d9ead72c15e3", - "reference": "35379d7b382b787215617f124662d9ead72c15e3", + "url": "https://api.github.com/repos/php-mock/php-mock/zipball/a3142f257153b71c09bf9146ecf73430b3818b7c", + "reference": "a3142f257153b71c09bf9146ecf73430b3818b7c", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0", - "phpunit/php-text-template": "^1" + "php": "^5.6 || ^7.0 || ^8.0", + "phpunit/php-text-template": "^1 || ^2" }, "replace": { "malkusch/php-mock": "*" }, "require-dev": { - "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.0" + "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.0 || ^9.0", + "squizlabs/php_codesniffer": "^3.5" }, "suggest": { "php-mock/php-mock-phpunit": "Allows integration into PHPUnit testcase with the trait PHPMock." }, "type": "library", "autoload": { + "files": [ + "autoload.php" + ], "psr-4": { "phpmock\\": [ "classes/", @@ -6353,31 +6393,37 @@ ], "support": { "issues": "https://github.com/php-mock/php-mock/issues", - "source": "https://github.com/php-mock/php-mock/tree/master" + "source": "https://github.com/php-mock/php-mock/tree/2.3.0" }, - "time": "2019-06-05T20:10:01+00:00" + "funding": [ + { + "url": "https://github.com/michalbundyra", + "type": "github" + } + ], + "time": "2020-12-11T19:20:04+00:00" }, { "name": "php-mock/php-mock-integration", - "version": "2.0.0", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/php-mock/php-mock-integration.git", - "reference": "5a0d7d7755f823bc2a230cfa45058b40f9013bc4" + "reference": "003d585841e435958a02e9b986953907b8b7609b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-mock/php-mock-integration/zipball/5a0d7d7755f823bc2a230cfa45058b40f9013bc4", - "reference": "5a0d7d7755f823bc2a230cfa45058b40f9013bc4", + "url": "https://api.github.com/repos/php-mock/php-mock-integration/zipball/003d585841e435958a02e9b986953907b8b7609b", + "reference": "003d585841e435958a02e9b986953907b8b7609b", "shasum": "" }, "require": { "php": ">=5.6", - "php-mock/php-mock": "^2", - "phpunit/php-text-template": "^1" + "php-mock/php-mock": "^2.2", + "phpunit/php-text-template": "^1 || ^2" }, "require-dev": { - "phpunit/phpunit": "^4|^5" + "phpunit/phpunit": "^5.7.27 || ^6 || ^7 || ^8 || ^9" }, "type": "library", "autoload": { @@ -6410,9 +6456,9 @@ ], "support": { "issues": "https://github.com/php-mock/php-mock-integration/issues", - "source": "https://github.com/php-mock/php-mock-integration/tree/phpunit-6" + "source": "https://github.com/php-mock/php-mock-integration/tree/2.1.0" }, - "time": "2017-02-17T21:31:34+00:00" + "time": "2020-02-08T14:40:25+00:00" }, { "name": "php-mock/php-mock-mockery", @@ -6473,29 +6519,128 @@ "time": "2018-03-27T07:00:25+00:00" }, { - "name": "phpdocumentor/reflection-common", - "version": "2.0.0", + "name": "php-parallel-lint/php-console-color", + "version": "v0.3", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a" + "url": "https://github.com/php-parallel-lint/PHP-Console-Color.git", + "reference": "b6af326b2088f1ad3b264696c9fd590ec395b49e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/63a995caa1ca9e5590304cd845c15ad6d482a62a", - "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a", + "url": "https://api.github.com/repos/php-parallel-lint/PHP-Console-Color/zipball/b6af326b2088f1ad3b264696c9fd590ec395b49e", + "reference": "b6af326b2088f1ad3b264696c9fd590ec395b49e", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=5.4.0" + }, + "replace": { + "jakub-onderka/php-console-color": "*" }, "require-dev": { - "phpunit/phpunit": "~6" + "php-parallel-lint/php-code-style": "1.0", + "php-parallel-lint/php-parallel-lint": "1.0", + "php-parallel-lint/php-var-dump-check": "0.*", + "phpunit/phpunit": "~4.3", + "squizlabs/php_codesniffer": "1.*" + }, + "type": "library", + "autoload": { + "psr-4": { + "JakubOnderka\\PhpConsoleColor\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Jakub Onderka", + "email": "jakub.onderka@gmail.com" + } + ], + "support": { + "issues": "https://github.com/php-parallel-lint/PHP-Console-Color/issues", + "source": "https://github.com/php-parallel-lint/PHP-Console-Color/tree/master" + }, + "time": "2020-05-14T05:47:14+00:00" + }, + { + "name": "php-parallel-lint/php-console-highlighter", + "version": "v0.5", + "source": { + "type": "git", + "url": "https://github.com/php-parallel-lint/PHP-Console-Highlighter.git", + "reference": "21bf002f077b177f056d8cb455c5ed573adfdbb8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-parallel-lint/PHP-Console-Highlighter/zipball/21bf002f077b177f056d8cb455c5ed573adfdbb8", + "reference": "21bf002f077b177f056d8cb455c5ed573adfdbb8", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=5.4.0", + "php-parallel-lint/php-console-color": "~0.2" + }, + "replace": { + "jakub-onderka/php-console-highlighter": "*" + }, + "require-dev": { + "php-parallel-lint/php-code-style": "~1.0", + "php-parallel-lint/php-parallel-lint": "~1.0", + "php-parallel-lint/php-var-dump-check": "~0.1", + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "~1.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "JakubOnderka\\PhpConsoleHighlighter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jakub Onderka", + "email": "acci@acci.cz", + "homepage": "http://www.acci.cz/" + } + ], + "description": "Highlight PHP code in terminal", + "support": { + "issues": "https://github.com/php-parallel-lint/PHP-Console-Highlighter/issues", + "source": "https://github.com/php-parallel-lint/PHP-Console-Highlighter/tree/master" + }, + "time": "2020-05-13T07:37:49+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.x-dev" + "dev-2.x": "2.x-dev" } }, "autoload": { @@ -6524,46 +6669,43 @@ ], "support": { "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.0.0" + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" }, - "time": "2018-08-07T13:53:10+00:00" + "time": "2020-06-27T09:03:43+00:00" }, { "name": "phpdocumentor/reflection-docblock", - "version": "4.3.2", + "version": "5.2.2", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "b83ff7cfcfee7827e1e78b637a5904fe6a96698e" + "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/b83ff7cfcfee7827e1e78b637a5904fe6a96698e", - "reference": "b83ff7cfcfee7827e1e78b637a5904fe6a96698e", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556", + "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556", "shasum": "" }, "require": { - "php": "^7.0", - "phpdocumentor/reflection-common": "^1.0.0 || ^2.0.0", - "phpdocumentor/type-resolver": "~0.4 || ^1.0.0", - "webmozart/assert": "^1.0" + "ext-filter": "*", + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.3", + "webmozart/assert": "^1.9.1" }, "require-dev": { - "doctrine/instantiator": "^1.0.5", - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^6.4" + "mockery/mockery": "~1.3.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.x-dev" + "dev-master": "5.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] + "phpDocumentor\\Reflection\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -6574,42 +6716,45 @@ { "name": "Mike van Riel", "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "account@ijaap.nl" } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", "support": { "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/4.3.2" + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master" }, - "time": "2019-09-12T14:27:41+00:00" + "time": "2020-09-03T19:13:55+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "1.0.1", + "version": "1.5.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9" + "reference": "a12f7e301eb7258bb68acd89d4aefa05c2906cae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/2e32a6d48972b2c1976ed5d8967145b6cec4a4a9", - "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/a12f7e301eb7258bb68acd89d4aefa05c2906cae", + "reference": "a12f7e301eb7258bb68acd89d4aefa05c2906cae", "shasum": "" }, "require": { - "php": "^7.1", + "php": "^7.2 || ^8.0", "phpdocumentor/reflection-common": "^2.0" }, "require-dev": { - "ext-tokenizer": "^7.1", - "mockery/mockery": "~1", - "phpunit/phpunit": "^7.0" + "ext-tokenizer": "*", + "psalm/phar": "^4.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-1.x": "1.x-dev" } }, "autoload": { @@ -6630,9 +6775,9 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/0.7.2" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.5.1" }, - "time": "2019-08-22T18:11:29+00:00" + "time": "2021-10-02T14:08:47+00:00" }, { "name": "phpro/grumphp", @@ -6751,33 +6896,33 @@ }, { "name": "phpspec/prophecy", - "version": "1.9.0", + "version": "1.14.0", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "f6811d96d97bdf400077a0cc100ae56aa32b9203" + "reference": "d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/f6811d96d97bdf400077a0cc100ae56aa32b9203", - "reference": "f6811d96d97bdf400077a0cc100ae56aa32b9203", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e", + "reference": "d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.0.2", - "php": "^5.3|^7.0", - "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0", - "sebastian/comparator": "^1.1|^2.0|^3.0", - "sebastian/recursion-context": "^1.0|^2.0|^3.0" + "doctrine/instantiator": "^1.2", + "php": "^7.2 || ~8.0, <8.2", + "phpdocumentor/reflection-docblock": "^5.2", + "sebastian/comparator": "^3.0 || ^4.0", + "sebastian/recursion-context": "^3.0 || ^4.0" }, "require-dev": { - "phpspec/phpspec": "^2.5|^3.2", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" + "phpspec/phpspec": "^6.0 || ^7.0", + "phpunit/phpunit": "^8.0 || ^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.8.x-dev" + "dev-master": "1.x-dev" } }, "autoload": { @@ -6812,22 +6957,22 @@ ], "support": { "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/master" + "source": "https://github.com/phpspec/prophecy/tree/1.14.0" }, - "time": "2019-10-03T11:07:50+00:00" + "time": "2021-09-10T09:02:12+00:00" }, { "name": "phpstan/phpstan", - "version": "0.12.72", + "version": "0.12.99", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "ae32fb1c5e97979f424c3ccec4ee435a35754769" + "reference": "b4d40f1d759942f523be267a1bab6884f46ca3f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/ae32fb1c5e97979f424c3ccec4ee435a35754769", - "reference": "ae32fb1c5e97979f424c3ccec4ee435a35754769", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/b4d40f1d759942f523be267a1bab6884f46ca3f7", + "reference": "b4d40f1d759942f523be267a1bab6884f46ca3f7", "shasum": "" }, "require": { @@ -6858,13 +7003,17 @@ "description": "PHPStan - PHP Static Analysis Tool", "support": { "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/0.12.72" + "source": "https://github.com/phpstan/phpstan/tree/0.12.99" }, "funding": [ { "url": "https://github.com/ondrejmirtes", "type": "github" }, + { + "url": "https://github.com/phpstan", + "type": "github" + }, { "url": "https://www.patreon.com/phpstan", "type": "patreon" @@ -6874,44 +7023,48 @@ "type": "tidelift" } ], - "time": "2021-02-06T18:34:03+00:00" + "time": "2021-09-12T20:09:55+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "7.0.10", + "version": "9.2.7", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "f1884187926fbb755a9aaf0b3836ad3165b478bf" + "reference": "d4c798ed8d51506800b441f7a13ecb0f76f12218" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f1884187926fbb755a9aaf0b3836ad3165b478bf", - "reference": "f1884187926fbb755a9aaf0b3836ad3165b478bf", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d4c798ed8d51506800b441f7a13ecb0f76f12218", + "reference": "d4c798ed8d51506800b441f7a13ecb0f76f12218", "shasum": "" }, "require": { "ext-dom": "*", + "ext-libxml": "*", "ext-xmlwriter": "*", - "php": "^7.2", - "phpunit/php-file-iterator": "^2.0.2", - "phpunit/php-text-template": "^1.2.1", - "phpunit/php-token-stream": "^3.1.1", - "sebastian/code-unit-reverse-lookup": "^1.0.1", - "sebastian/environment": "^4.2.2", - "sebastian/version": "^2.0.1", - "theseer/tokenizer": "^1.1.3" + "nikic/php-parser": "^4.12.0", + "php": ">=7.3", + "phpunit/php-file-iterator": "^3.0.3", + "phpunit/php-text-template": "^2.0.2", + "sebastian/code-unit-reverse-lookup": "^2.0.2", + "sebastian/complexity": "^2.0", + "sebastian/environment": "^5.1.2", + "sebastian/lines-of-code": "^1.0.3", + "sebastian/version": "^3.0.1", + "theseer/tokenizer": "^1.2.0" }, "require-dev": { - "phpunit/phpunit": "^8.2.2" + "phpunit/phpunit": "^9.3" }, "suggest": { - "ext-xdebug": "^2.7.2" + "ext-pcov": "*", + "ext-xdebug": "*" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "7.0-dev" + "dev-master": "9.2-dev" } }, "autoload": { @@ -6939,34 +7092,40 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/7.0.10" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.7" }, - "time": "2019-11-20T13:55:58+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-09-17T05:39:03+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "2.0.2", + "version": "3.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "050bedf145a257b1ff02746c31894800e5122946" + "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946", - "reference": "050bedf145a257b1ff02746c31894800e5122946", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8", + "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8", "shasum": "" }, "require": { - "php": "^7.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^7.1" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -6993,28 +7152,105 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/2.0.2" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.5" }, - "time": "2018-09-13T20:33:42+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:57:25+00:00" }, { - "name": "phpunit/php-text-template", - "version": "1.2.1", + "name": "phpunit/php-invoker", + "version": "3.1.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.3" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcntl": "*" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:58:55+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, "autoload": { "classmap": [ "src/" @@ -7038,34 +7274,40 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/1.2.1" + "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" }, - "time": "2015-06-21T13:50:34+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T05:33:50+00:00" }, { "name": "phpunit/php-timer", - "version": "2.1.2", + "version": "5.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "1038454804406b0b5f5f520358e78c1c2f71501e" + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1038454804406b0b5f5f520358e78c1c2f71501e", - "reference": "1038454804406b0b5f5f520358e78c1c2f71501e", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", "shasum": "" }, "require": { - "php": "^7.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^7.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -7091,112 +7333,67 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/master" + "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" }, - "time": "2019-06-07T04:22:29+00:00" - }, - { - "name": "phpunit/php-token-stream", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/995192df77f63a59e47f025390d2d1fdf8f425ff", - "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": "^7.1" - }, - "require-dev": { - "phpunit/phpunit": "^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ + "funding": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "url": "https://github.com/sebastianbergmann", + "type": "github" } ], - "description": "Wrapper around PHP's tokenizer extension.", - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", - "keywords": [ - "tokenizer" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-token-stream/issues", - "source": "https://github.com/sebastianbergmann/php-token-stream/tree/3.1.1" - }, - "abandoned": true, - "time": "2019-09-17T06:23:10+00:00" + "time": "2020-10-26T13:16:10+00:00" }, { "name": "phpunit/phpunit", - "version": "8.4.3", + "version": "9.5.10", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "67f9e35bffc0dd52d55d565ddbe4230454fd6a4e" + "reference": "c814a05837f2edb0d1471d6e3f4ab3501ca3899a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/67f9e35bffc0dd52d55d565ddbe4230454fd6a4e", - "reference": "67f9e35bffc0dd52d55d565ddbe4230454fd6a4e", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c814a05837f2edb0d1471d6e3f4ab3501ca3899a", + "reference": "c814a05837f2edb0d1471d6e3f4ab3501ca3899a", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.2.0", + "doctrine/instantiator": "^1.3.1", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", "ext-mbstring": "*", "ext-xml": "*", "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.9.1", - "phar-io/manifest": "^1.0.3", - "phar-io/version": "^2.0.1", - "php": "^7.2", - "phpspec/prophecy": "^1.8.1", - "phpunit/php-code-coverage": "^7.0.7", - "phpunit/php-file-iterator": "^2.0.2", - "phpunit/php-text-template": "^1.2.1", - "phpunit/php-timer": "^2.1.2", - "sebastian/comparator": "^3.0.2", - "sebastian/diff": "^3.0.2", - "sebastian/environment": "^4.2.2", - "sebastian/exporter": "^3.1.1", - "sebastian/global-state": "^3.0.0", - "sebastian/object-enumerator": "^3.0.3", - "sebastian/resource-operations": "^2.0.1", - "sebastian/type": "^1.1.3", - "sebastian/version": "^2.0.1" + "myclabs/deep-copy": "^1.10.1", + "phar-io/manifest": "^2.0.3", + "phar-io/version": "^3.0.2", + "php": ">=7.3", + "phpspec/prophecy": "^1.12.1", + "phpunit/php-code-coverage": "^9.2.7", + "phpunit/php-file-iterator": "^3.0.5", + "phpunit/php-invoker": "^3.1.1", + "phpunit/php-text-template": "^2.0.3", + "phpunit/php-timer": "^5.0.2", + "sebastian/cli-parser": "^1.0.1", + "sebastian/code-unit": "^1.0.6", + "sebastian/comparator": "^4.0.5", + "sebastian/diff": "^4.0.3", + "sebastian/environment": "^5.1.3", + "sebastian/exporter": "^4.0.3", + "sebastian/global-state": "^5.0.1", + "sebastian/object-enumerator": "^4.0.3", + "sebastian/resource-operations": "^3.0.3", + "sebastian/type": "^2.3.4", + "sebastian/version": "^3.0.2" }, "require-dev": { - "ext-pdo": "*" + "ext-pdo": "*", + "phpspec/prophecy-phpunit": "^2.0.1" }, "suggest": { "ext-soap": "*", - "ext-xdebug": "*", - "phpunit/php-invoker": "^2.0.0" + "ext-xdebug": "*" }, "bin": [ "phpunit" @@ -7204,10 +7401,13 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "8.4-dev" + "dev-master": "9.5-dev" } }, "autoload": { + "files": [ + "src/Framework/Assert/Functions.php" + ], "classmap": [ "src/" ] @@ -7232,9 +7432,76 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/8.4" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.10" }, - "time": "2019-11-06T09:42:23+00:00" + "funding": [ + { + "url": "https://phpunit.de/donate.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-09-25T07:38:51+00:00" + }, + { + "name": "povils/phpmnd", + "version": "v2.5.0", + "source": { + "type": "git", + "url": "https://github.com/povils/phpmnd.git", + "reference": "574a071e608c86f871592023a91554c68df421a5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/povils/phpmnd/zipball/574a071e608c86f871592023a91554c68df421a5", + "reference": "574a071e608c86f871592023a91554c68df421a5", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.0", + "php": "^7.1|^8.0", + "php-parallel-lint/php-console-highlighter": "^0.5", + "phpunit/php-timer": "^2.0||^3.0||^4.0||^5.0", + "symfony/console": "^4.0||^5.0", + "symfony/finder": "^4.0||^5.0" + }, + "require-dev": { + "phpunit/phpunit": "^7.0||^8.0||^9.0", + "squizlabs/php_codesniffer": "^2.8.1||^3.5" + }, + "bin": [ + "bin/phpmnd" + ], + "type": "application", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev" + } + }, + "autoload": { + "psr-4": { + "Povils\\PHPMND\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Povilas Susinskas", + "email": "povilassusinskas@gmail.com" + } + ], + "description": "A tool to detect Magic numbers in codebase", + "support": { + "issues": "https://github.com/povils/phpmnd/issues", + "source": "https://github.com/povils/phpmnd/tree/v2.5.0" + }, + "time": "2021-12-12T21:28:55+00:00" }, { "name": "psr/event-dispatcher", @@ -7287,29 +7554,141 @@ "time": "2019-01-08T18:20:26+00:00" }, { - "name": "sebastian/code-unit-reverse-lookup", + "name": "sebastian/cli-parser", "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", - "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^5.7 || ^6.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:08:49+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "1.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:08:54+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" } }, "autoload": { @@ -7331,36 +7710,42 @@ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", "support": { "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/master" + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" }, - "time": "2017-03-04T06:30:41+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:30:19+00:00" }, { "name": "sebastian/comparator", - "version": "3.0.2", + "version": "4.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da" + "reference": "55f4261989e546dc112258c7a75935a81a7ce382" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da", - "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", + "reference": "55f4261989e546dc112258c7a75935a81a7ce382", "shasum": "" }, "require": { - "php": "^7.1", - "sebastian/diff": "^3.0", - "sebastian/exporter": "^3.1" + "php": ">=7.3", + "sebastian/diff": "^4.0", + "sebastian/exporter": "^4.0" }, "require-dev": { - "phpunit/phpunit": "^7.1" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -7373,6 +7758,10 @@ "BSD-3-Clause" ], "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, { "name": "Jeff Welch", "email": "whatthejeff@gmail.com" @@ -7384,10 +7773,6 @@ { "name": "Bernhard Schussek", "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" } ], "description": "Provides the functionality to compare PHP values for equality", @@ -7399,35 +7784,41 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/master" + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" }, - "time": "2018-07-12T15:12:46+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:49:45+00:00" }, { - "name": "sebastian/diff", - "version": "3.0.2", + "name": "sebastian/complexity", + "version": "2.0.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29" + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29", - "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", "shasum": "" }, "require": { - "php": "^7.1" + "nikic/php-parser": "^4.7", + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^7.5 || ^8.0", - "symfony/process": "^2 || ^3.3 || ^4" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -7441,12 +7832,69 @@ ], "authors": [ { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - }, + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:52:27+00:00" + }, + { + "name": "sebastian/diff", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" } ], "description": "Diff implementation", @@ -7459,29 +7907,35 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/master" + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" }, - "time": "2019-02-04T06:01:07+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:10:38+00:00" }, { "name": "sebastian/environment", - "version": "4.2.3", + "version": "5.1.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368" + "reference": "388b6ced16caa751030f6a69e588299fa09200ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/464c90d7bdf5ad4e8a6aea15c091fec0603d4368", - "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", + "reference": "388b6ced16caa751030f6a69e588299fa09200ac", "shasum": "" }, "require": { - "php": "^7.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^7.5" + "phpunit/phpunit": "^9.3" }, "suggest": { "ext-posix": "*" @@ -7489,7 +7943,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -7516,36 +7970,42 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/4.2.3" + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" }, - "time": "2019-11-20T08:46:58+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:52:38+00:00" }, { "name": "sebastian/exporter", - "version": "3.1.2", + "version": "4.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e" + "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/68609e1261d215ea5b21b7987539cbfbe156ec3e", - "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65", + "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65", "shasum": "" }, "require": { - "php": "^7.0", - "sebastian/recursion-context": "^3.0" + "php": ">=7.3", + "sebastian/recursion-context": "^4.0" }, "require-dev": { "ext-mbstring": "*", - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1.x-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -7587,32 +8047,38 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/master" + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.3" }, - "time": "2019-09-14T09:02:43+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:24:23+00:00" }, { "name": "sebastian/global-state", - "version": "3.0.0", + "version": "5.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4" + "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4", - "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", + "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", "shasum": "" }, "require": { - "php": "^7.2", - "sebastian/object-reflector": "^1.1.1", - "sebastian/recursion-context": "^3.0" + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" }, "require-dev": { "ext-dom": "*", - "phpunit/phpunit": "^8.0" + "phpunit/phpunit": "^9.3" }, "suggest": { "ext-uopz": "*" @@ -7620,7 +8086,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -7645,36 +8111,99 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/master" + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" }, - "time": "2019-02-01T05:30:01+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-06-11T13:31:12+00:00" }, { - "name": "sebastian/object-enumerator", - "version": "3.0.3", + "name": "sebastian/lines-of-code", + "version": "1.0.3", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", - "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", "shasum": "" }, "require": { - "php": "^7.0", - "sebastian/object-reflector": "^1.1.1", - "sebastian/recursion-context": "^3.0" + "nikic/php-parser": "^4.6", + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-28T06:42:11+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" } }, "autoload": { @@ -7696,132 +8225,35 @@ "homepage": "https://github.com/sebastianbergmann/object-enumerator/", "support": { "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/master" + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" }, - "time": "2017-08-03T12:35:26+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:12:34+00:00" }, { "name": "sebastian/object-reflector", - "version": "1.1.1", + "version": "2.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "773f97c67f28de00d397be301821b06708fca0be" + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", - "reference": "773f97c67f28de00d397be301821b06708fca0be", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", "shasum": "" }, "require": { - "php": "^7.0" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Allows reflection of object attributes, including inherited and non-public ones", - "homepage": "https://github.com/sebastianbergmann/object-reflector/", - "support": { - "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/master" - }, - "time": "2017-03-29T09:07:27+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", - "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", - "shasum": "" - }, - "require": { - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/master" - }, - "time": "2017-03-03T06:23:57+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9", - "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9", - "shasum": "" - }, - "require": { - "php": "^7.1" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { @@ -7844,38 +8276,162 @@ "email": "sebastian@phpunit.de" } ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/master" + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" }, - "time": "2018-10-04T04:07:39+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:14:26+00:00" }, { - "name": "sebastian/type", - "version": "1.1.3", + "name": "sebastian/recursion-context", + "version": "4.0.4", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3" + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/3aaaa15fa71d27650d62a948be022fe3b48541a3", - "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", "shasum": "" }, "require": { - "php": "^7.2" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^8.2" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:17:30+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "support": { + "issues": "https://github.com/sebastianbergmann/resource-operations/issues", + "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:45:17+00:00" + }, + { + "name": "sebastian/type", + "version": "2.3.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", + "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3-dev" } }, "autoload": { @@ -7898,31 +8454,37 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/master" + "source": "https://github.com/sebastianbergmann/type/tree/2.3.4" }, - "time": "2019-07-02T08:10:15+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-06-15T12:49:02+00:00" }, { "name": "sebastian/version", - "version": "2.0.1", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" + "reference": "c6c1022351a901512170118436c764e473f6de8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", + "reference": "c6c1022351a901512170118436c764e473f6de8c", "shasum": "" }, "require": { - "php": ">=5.6" + "php": ">=7.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -7945,9 +8507,15 @@ "homepage": "https://github.com/sebastianbergmann/version", "support": { "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/master" + "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" }, - "time": "2016-10-03T07:35:21+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:39:44+00:00" }, { "name": "seld/jsonlint", @@ -8364,33 +8932,32 @@ }, { "name": "symfony/error-handler", - "version": "v5.0.8", + "version": "v5.4.2", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "949ffc17c3ac3a9f8e6232220e2da33913c04ea4" + "reference": "e0c0dd0f9d4120a20158fc9aec2367d07d38bc56" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/949ffc17c3ac3a9f8e6232220e2da33913c04ea4", - "reference": "949ffc17c3ac3a9f8e6232220e2da33913c04ea4", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/e0c0dd0f9d4120a20158fc9aec2367d07d38bc56", + "reference": "e0c0dd0f9d4120a20158fc9aec2367d07d38bc56", "shasum": "" }, "require": { - "php": "^7.2.5", - "psr/log": "^1.0", - "symfony/var-dumper": "^4.4|^5.0" + "php": ">=7.2.5", + "psr/log": "^1|^2|^3", + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "require-dev": { - "symfony/http-kernel": "^4.4|^5.0", - "symfony/serializer": "^4.4|^5.0" + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/serializer": "^4.4|^5.0|^6.0" }, + "bin": [ + "Resources/bin/patch-type-declarations" + ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\ErrorHandler\\": "" @@ -8413,10 +8980,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony ErrorHandler Component", + "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v5.0.7" + "source": "https://github.com/symfony/error-handler/tree/v5.4.2" }, "funding": [ { @@ -8432,7 +8999,7 @@ "type": "tidelift" } ], - "time": "2020-03-30T14:14:32+00:00" + "time": "2021-12-19T20:02:00+00:00" }, { "name": "symfony/event-dispatcher", @@ -8662,21 +9229,22 @@ }, { "name": "symfony/var-dumper", - "version": "v5.0.8", + "version": "v5.4.2", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "09de28632f16f81058a85fcf318397218272a07b" + "reference": "1b56c32c3679002b3a42384a580e16e2600f41c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/09de28632f16f81058a85fcf318397218272a07b", - "reference": "09de28632f16f81058a85fcf318397218272a07b", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/1b56c32c3679002b3a42384a580e16e2600f41c1", + "reference": "1b56c32c3679002b3a42384a580e16e2600f41c1", "shasum": "" }, "require": { - "php": "^7.2.5", - "symfony/polyfill-mbstring": "~1.0" + "php": ">=7.2.5", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.16" }, "conflict": { "phpunit/phpunit": "<5.4.3", @@ -8684,9 +9252,10 @@ }, "require-dev": { "ext-iconv": "*", - "symfony/console": "^4.4|^5.0", - "symfony/process": "^4.4|^5.0", - "twig/twig": "^2.4|^3.0" + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/uid": "^5.1|^6.0", + "twig/twig": "^2.13|^3.0.4" }, "suggest": { "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", @@ -8697,11 +9266,6 @@ "Resources/bin/var-dump-server" ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, "autoload": { "files": [ "Resources/functions/dump.php" @@ -8727,14 +9291,14 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony mechanism for exploring and dumping PHP variables", + "description": "Provides mechanisms for walking through any arbitrary PHP variable", "homepage": "https://symfony.com", "keywords": [ "debug", "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v5.0.8" + "source": "https://github.com/symfony/var-dumper/tree/v5.4.2" }, "funding": [ { @@ -8750,27 +9314,27 @@ "type": "tidelift" } ], - "time": "2020-04-12T16:45:47+00:00" + "time": "2021-12-29T10:10:35+00:00" }, { "name": "theseer/tokenizer", - "version": "1.1.3", + "version": "1.2.1", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9" + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9", - "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", "shasum": "" }, "require": { "ext-dom": "*", "ext-tokenizer": "*", "ext-xmlwriter": "*", - "php": "^7.0" + "php": "^7.2 || ^8.0" }, "type": "library", "autoload": { @@ -8792,35 +9356,47 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/master" + "source": "https://github.com/theseer/tokenizer/tree/1.2.1" }, - "time": "2019-06-13T22:48:21+00:00" + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2021-07-28T10:34:58+00:00" }, { "name": "webmozart/assert", - "version": "1.6.0", + "version": "1.10.0", "source": { "type": "git", "url": "https://github.com/webmozarts/assert.git", - "reference": "573381c0a64f155a0d9a23f4b0c797194805b925" + "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/573381c0a64f155a0d9a23f4b0c797194805b925", - "reference": "573381c0a64f155a0d9a23f4b0c797194805b925", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", + "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0", + "php": "^7.2 || ^8.0", "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "vimeo/psalm": "<3.6.0" + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<4.6.1 || 4.6.2" }, "require-dev": { - "phpunit/phpunit": "^4.8.36 || ^7.5.13" + "phpunit/phpunit": "^8.5.13" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10-dev" + } + }, "autoload": { "psr-4": { "Webmozart\\Assert\\": "src/" @@ -8844,9 +9420,9 @@ ], "support": { "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.6.0" + "source": "https://github.com/webmozarts/assert/tree/1.10.0" }, - "time": "2019-11-24T13:36:37+00:00" + "time": "2021-03-09T10:59:23+00:00" } ], "aliases": [], @@ -8863,5 +9439,5 @@ "platform-overrides": { "php": "7.3.11" }, - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.2.0" } diff --git a/css/style.css b/css/style.css index f8af719..8d09e05 100644 --- a/css/style.css +++ b/css/style.css @@ -255,7 +255,7 @@ footer a:hover { margin-top: 12px; position: relative; text-align: left; - width: 622px; + width: 100%; } .mp3-inner { @@ -545,6 +545,7 @@ h1 { .thumb { max-width: 700px; + height: auto; } .format { diff --git a/grumphp.yml b/grumphp.yml index 9ae9c11..fc59e81 100644 --- a/grumphp.yml +++ b/grumphp.yml @@ -13,6 +13,7 @@ grumphp: securitychecker_enlightn: ~ composer_normalize: ~ composer_dangling_locked_deps: ~ + phpmnd: ~ phpcs: standard: PSR12 phpstan: diff --git a/i18n/ar/LC_MESSAGES/Alltube.po b/i18n/ar/LC_MESSAGES/Alltube.po index c8d3e52..ae0bc6b 100644 --- a/i18n/ar/LC_MESSAGES/Alltube.po +++ b/i18n/ar/LC_MESSAGES/Alltube.po @@ -98,7 +98,7 @@ msgid "Share on Facebook" msgstr "شاركها على فيسبوك" #: templates/index.tpl:8 -msgid "Copy here the URL of your video (Youtube, Dailymotion, etc.)" +msgid "Copy here the URL of your video (YouTube, Dailymotion, etc.)" msgstr "انسخ هنا رابط الفيديو (يوتيوب، انستقرام، وغيرها)" #: templates/index.tpl:25 diff --git a/i18n/de_DE/LC_MESSAGES/Alltube.po b/i18n/de_DE/LC_MESSAGES/Alltube.po index 27f975d..0bc447e 100644 --- a/i18n/de_DE/LC_MESSAGES/Alltube.po +++ b/i18n/de_DE/LC_MESSAGES/Alltube.po @@ -131,8 +131,8 @@ msgid "Video password" msgstr "Videopasswort" #: templates/index.tpl:8 -msgid "Copy here the URL of your video (Youtube, Dailymotion, etc.)" -msgstr "Kopiere hier die URL deines Videos (Youtube, Dailymotion, etc.) hinein" +msgid "Copy here the URL of your video (YouTube, Dailymotion, etc.)" +msgstr "Kopiere hier die URL deines Videos (YouTube, Dailymotion, etc.) hinein" #: templates/index.tpl:25 msgid "Audio only (MP3)" diff --git a/i18n/es_ES/LC_MESSAGES/Alltube.po b/i18n/es_ES/LC_MESSAGES/Alltube.po index a6914ec..13351cb 100644 --- a/i18n/es_ES/LC_MESSAGES/Alltube.po +++ b/i18n/es_ES/LC_MESSAGES/Alltube.po @@ -106,8 +106,8 @@ msgid "Share on Facebook" msgstr "Compartir en Facebook" #: templates/index.tpl:8 -msgid "Copy here the URL of your video (Youtube, Dailymotion, etc.)" -msgstr "Copia aquí la URL de tu vídeo (Youtube, Dailymotion, etc.)" +msgid "Copy here the URL of your video (YouTube, Dailymotion, etc.)" +msgstr "Copia aquí la URL de tu vídeo (YouTube, Dailymotion, etc.)" #: templates/index.tpl:23 msgid "Audio only (MP3)" diff --git a/i18n/it_IT/LC_MESSAGES/Alltube.po b/i18n/it_IT/LC_MESSAGES/Alltube.po index cd7ab21..c696c43 100644 --- a/i18n/it_IT/LC_MESSAGES/Alltube.po +++ b/i18n/it_IT/LC_MESSAGES/Alltube.po @@ -59,8 +59,8 @@ msgid "Video password" msgstr "Password del video" #: templates/index.tpl:8 -msgid "Copy here the URL of your video (Youtube, Dailymotion, etc.)" -msgstr "Copia qui l'URL del video (Youtube, Dailymotion, ecc.)" +msgid "Copy here the URL of your video (YouTube, Dailymotion, etc.)" +msgstr "Copia qui l'URL del video (YouTube, Dailymotion, ecc.)" #: templates/index.tpl:25 msgid "Audio only (MP3)" diff --git a/i18n/ja_JP/LC_MESSAGES/Alltube.po b/i18n/ja_JP/LC_MESSAGES/Alltube.po index 71acb9d..74ffc7c 100644 --- a/i18n/ja_JP/LC_MESSAGES/Alltube.po +++ b/i18n/ja_JP/LC_MESSAGES/Alltube.po @@ -134,7 +134,7 @@ msgstr "閲覧用パスワード" #: templates/index.tpl:8 msgid "Copy here the URL of your video (YouTube, Dailymotion, etc.)" -msgstr "動画のリンク(URL)を入力欄に入力してください。(例:Youtube,Dailymotion等。)" +msgstr "動画のリンク(URL)を入力欄に入力してください。(例:YouTube,Dailymotion等。)" #: templates/index.tpl:25 msgid "Audio only (MP3)" diff --git a/i18n/pl_PL/LC_MESSAGES/Alltube.po b/i18n/pl_PL/LC_MESSAGES/Alltube.po index 105041a..c383bef 100644 --- a/i18n/pl_PL/LC_MESSAGES/Alltube.po +++ b/i18n/pl_PL/LC_MESSAGES/Alltube.po @@ -71,8 +71,8 @@ msgid "Video password" msgstr "Hasło do wideo" #: templates/index.tpl:8 -msgid "Copy here the URL of your video (Youtube, Dailymotion, etc.)" -msgstr "Zamieść link do wideo (Yotube, Dailymotion, itp.)" +msgid "Copy here the URL of your video (YouTube, Dailymotion, etc.)" +msgstr "Zamieść link do wideo (YouTube, Dailymotion, itp.)" #: templates/index.tpl:25 msgid "Audio only (MP3)" diff --git a/i18n/pt_BR/LC_MESSAGES/Alltube.po b/i18n/pt_BR/LC_MESSAGES/Alltube.po index 76bf759..4d29e3d 100644 --- a/i18n/pt_BR/LC_MESSAGES/Alltube.po +++ b/i18n/pt_BR/LC_MESSAGES/Alltube.po @@ -106,8 +106,8 @@ msgid "Share on Facebook" msgstr "Compartilhe no Facebook" #: templates/index.tpl:8 -msgid "Copy here the URL of your video (Youtube, Dailymotion, etc.)" -msgstr "Cole aqui a URL do vídeo (Youtube, Dailymotion, etc.)" +msgid "Copy here the URL of your video (YouTube, Dailymotion, etc.)" +msgstr "Cole aqui a URL do vídeo (YouTube, Dailymotion, etc.)" #: templates/index.tpl:24 msgid "Audio only (MP3)" diff --git a/i18n/tr_TR/LC_MESSAGES/Alltube.po b/i18n/tr_TR/LC_MESSAGES/Alltube.po index 52f9e5f..adbedd0 100644 --- a/i18n/tr_TR/LC_MESSAGES/Alltube.po +++ b/i18n/tr_TR/LC_MESSAGES/Alltube.po @@ -65,8 +65,8 @@ msgid "Video password" msgstr "Video parolası" #: templates/index.tpl:8 -msgid "Copy here the URL of your video (Youtube, Dailymotion, etc.)" -msgstr "Videonuzun URL'sini buraya kopyalayın (Youtube, Dailymotion, vb.)" +msgid "Copy here the URL of your video (YouTube, Dailymotion, etc.)" +msgstr "Videonuzun URL'sini buraya kopyalayın (YouTube, Dailymotion, vb.)" #: templates/index.tpl:25 msgid "Audio only (MP3)" diff --git a/i18n/zh_CN/LC_MESSAGES/Alltube.po b/i18n/zh_CN/LC_MESSAGES/Alltube.po index f8de9a3..336b24e 100644 --- a/i18n/zh_CN/LC_MESSAGES/Alltube.po +++ b/i18n/zh_CN/LC_MESSAGES/Alltube.po @@ -1,134 +1,227 @@ 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: zh-CN\n" -#: templates/error.tpl:6 -msgid "Please check the URL of your video." -msgstr "请检查您的视频的 URL。" - -#: templates/playlist.tpl:5 -msgid "Videos extracted from" -msgstr "视频提取自" - -#: templates/playlist.tpl:7 -msgid ":" -msgstr ":" - -#: templates/playlist.tpl:26 templates/password.tpl:10 templates/video.tpl:83 -#: templates/video.tpl:86 templates/index.tpl:18 -msgid "Download" -msgstr "下载" - -#: templates/playlist.tpl:27 -msgid "More options" -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/extractors.tpl:4 -msgid "Supported websites" -msgstr "支持的网站" - -#: templates/video.tpl:6 -msgid "You are going to download" -msgstr "你即将下载" - -#: templates/video.tpl:24 -msgid "Available formats:" -msgstr "可用的格式︰" - -#: templates/video.tpl:29 -msgid "Generic formats" -msgstr "通用格式" - -#: templates/video.tpl:32 -msgid "Best" -msgstr "最佳" - -#: templates/video.tpl:37 -msgid "Remux best video with best audio" -msgstr "重新封装最佳视频与最佳音频" - -#: templates/video.tpl:41 -msgid "Worst" -msgstr "最差" - -#: templates/video.tpl:44 -msgid "Detailed formats" -msgstr "详细格式" - -#: templates/inc/footer.tpl:4 -msgid "Code by" -msgstr "代码来自" - -#: templates/inc/footer.tpl:6 -msgid "Design by" -msgstr "设计来自" - -#: templates/inc/footer.tpl:12 -msgid "AllTube Download on Facebook" -msgstr "去Alltube Download的Facebook页面" - -#: templates/inc/footer.tpl:12 -msgid "Like us on Facebook" -msgstr "在Facebook关注我们" - -#: templates/inc/footer.tpl:14 -msgid "Get the code" -msgstr "获取代码" +#: templates/inc/footer.tpl:8 +msgid "Code by @dev" +msgstr "由 @dev 开发" #: templates/inc/footer.tpl:16 -msgid "Based on" -msgstr "基于" +msgid "Design by @designer" +msgstr "由 @designer 设计" -#: templates/inc/header.tpl:21 -msgid "Share on Twitter" -msgstr "分享到 Twitter" +#: templates/inc/footer.tpl:21 +msgid "Get the code" +msgstr "获取源代码" -#: templates/inc/header.tpl:23 -msgid "Share on Facebook" -msgstr "分享到 Facebook" +#: templates/inc/footer.tpl:29 +msgid "Based on @youtubedl" +msgstr "基于 @youtubedl" -#: templates/index.tpl:8 -msgid "Copy here the URL of your video (Youtube, Dailymotion, etc.)" -msgstr "在这里复制您的视频 (Youtube、 Dailymotion 等) 的 URL" +#: templates/inc/footer.tpl:33 +msgid "Donate using Liberapay" +msgstr "使用 Liberapay 捐赠" -#: templates/index.tpl:23 -msgid "Audio only (MP3)" -msgstr "仅限音频(mp3)" - -#: templates/index.tpl:28 -msgid "See all supported websites" -msgstr "请参阅支持的所有网站" - -#: templates/index.tpl:30 -msgid "Drag this to your bookmarks bar:" -msgstr "把这个拖到你的书签:" - -#: templates/index.tpl:31 -msgid "Bookmarklet" -msgstr "书签工具" +#: 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 +# Other translators: Please check that file for context +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 "kbit/s 的音频" + +#: 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 +# I don't think this needs to be a 100% match +msgid "Copy here the URL of your video (YouTube, Dailymotion, etc.)" +msgstr "在此处粘贴视频网址" + +#: templates/index.tpl:25 +msgid "Audio only (MP3)" +msgstr "仅音频(MP3)" + +#: templates/index.tpl:29 +# Still check that file for context +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 "不支持转换 M3U8 文件。" + +#: classes/Controller/DownloadController.php:82 +# ref. Chinese Wikipedia article about DASH +msgid "Conversion of DASH segments is not supported." +msgstr "不支持转换 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 +# NOTE: DON'T translate AllTube Download +msgid "" +"List of all supported websites from which AllTube Download can extract video " +"or audio files" +msgstr "" +"AllTube Download 能够提取视频" +"或音频文件的的所有网站" + +#: 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 Download 下载此视频" + +#: classes/Controller/FrontController.php:174 +# Download page header? +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 "不允许此请求方法" diff --git a/phpunit.xml b/phpunit.xml index 8893c4a..ed80945 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -1,10 +1,11 @@ - - - + + + classes/ - - + + tests/ diff --git a/resources/FAQ.md b/resources/FAQ.md index 3f13846..92fcf04 100644 --- a/resources/FAQ.md +++ b/resources/FAQ.md @@ -6,19 +6,6 @@ Most recent browsers automatically play a video if it is a format they know how to play. You can usually download the video by doing *File > Save to* or *ctrl + S*. -## [alltubedownload.net](https://alltubedownload.net) is too slow - -[alltubedownload.net](https://alltubedownload.net) is hosted on a free [Heroku server](https://www.heroku.com/pricing) -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 -and you are encouraged to host it yourself. - -## alltubedownload.net often says "An error occurred in the application…" - -See above. - ## Change config parameters You need to create a YAML file called `config.yml` in the `config/` folder. @@ -68,8 +55,7 @@ There are two known workarounds: * You can run AllTube locally on your computer. * You can enable streaming videos through the server (see below). - Please note that this can use a lot of resources on the server - (which is why we won't enable it on alltubedownload.net). + Please note that this can use a lot of resources on the server. ## I get a 404 error on every page except the index diff --git a/resources/manifest.json b/resources/manifest.json index 6f5e6f1..bae079f 100644 --- a/resources/manifest.json +++ b/resources/manifest.json @@ -31,7 +31,7 @@ } ], "lang": "en", - "start_url": "./", + "start_url": "../", "theme_color": "#4F4F4F", "background_color": "#EBEBEB", "orientation": "portrait" diff --git a/resources/sitemap.xml b/resources/sitemap.xml deleted file mode 100644 index f6331f0..0000000 --- a/resources/sitemap.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - https://alltubedownload.net/ - yearly - 1 - - - https://alltubedownload.net/extractors - weekly - - diff --git a/robots.txt b/robots.txt deleted file mode 100644 index fa5e4af..0000000 --- a/robots.txt +++ /dev/null @@ -1 +0,0 @@ -Sitemap: https://alltubedownload.net/resources/sitemap.xml diff --git a/runtime.txt b/runtime.txt index 0fd6938..d9a16ae 100644 --- a/runtime.txt +++ b/runtime.txt @@ -1 +1 @@ -python-3.8.6 +python-3.8.12 diff --git a/templates/error.tpl b/templates/error.tpl index abc8897..e5685fc 100644 --- a/templates/error.tpl +++ b/templates/error.tpl @@ -1,8 +1,8 @@ -{include file='inc/head.tpl'} -
-
+{extends file='page.tpl'} +{block name='main'} +
{include file="inc/logo.tpl"}

{t}An error occurred{/t}

{$error|escape|nl2br}

-
- {include file='inc/footer.tpl'} +
+{/block} diff --git a/templates/extractors.tpl b/templates/extractors.tpl index a1d1bce..24171ee 100644 --- a/templates/extractors.tpl +++ b/templates/extractors.tpl @@ -1,12 +1,12 @@ -{include file='inc/head.tpl'} -{include file='inc/header.tpl'} -{include file='inc/logo.tpl'} -

{t}Supported websites{/t}

-
-
    - {foreach $extractors as $extractor} -
  • {$extractor}
  • - {/foreach} -
-
-{include file='inc/footer.tpl'} +{extends file='page.tpl'} +{block name='main'} + {include file='inc/logo.tpl'} +

{t}Supported websites{/t}

+
+
    + {foreach $extractors as $extractor} +
  • {$extractor}
  • + {/foreach} +
+
+{/block} diff --git a/templates/inc/footer.tpl b/templates/inc/footer.tpl index 545d16b..34fd553 100644 --- a/templates/inc/footer.tpl +++ b/templates/inc/footer.tpl @@ -1,18 +1,11 @@ -
- -{if isset($debug_render)} - {$debug_render->render()} -{/if} - - diff --git a/templates/inc/head.tpl b/templates/inc/head.tpl index 4e5d68d..22409ef 100644 --- a/templates/inc/head.tpl +++ b/templates/inc/head.tpl @@ -1,5 +1,3 @@ - - @@ -11,7 +9,6 @@ {$config->appName}{if isset($title)} - {$title|escape}{/if} - @@ -27,5 +24,3 @@ {$debug_render->renderHead()} {/if} - -
diff --git a/templates/inc/header.tpl b/templates/inc/header.tpl index af28104..c93f4d3 100644 --- a/templates/inc/header.tpl +++ b/templates/inc/header.tpl @@ -27,4 +27,3 @@
{/if} -
diff --git a/templates/inc/logo.tpl b/templates/inc/logo.tpl index 47b70b3..33d612c 100644 --- a/templates/inc/logo.tpl +++ b/templates/inc/logo.tpl @@ -1,5 +1,7 @@

- {$config->appName} -

+ + {html_image file='img/logocompatiblemask.png' path_prefix={base_url}|cat:'/' alt=$config->appName} + + + diff --git a/templates/index.tpl b/templates/index.tpl index a2deb78..a06bf59 100644 --- a/templates/index.tpl +++ b/templates/index.tpl @@ -1,8 +1,8 @@ -{include file='inc/head.tpl'} -{include file='inc/header.tpl'} -
-
+{extends file='page.tpl'} +{block name='main'} +
+ {html_image file='img/logo.png' path_prefix={base_url}|cat:'/' alt=$config->appName class="logo"} +
- - -{include file='inc/footer.tpl'} +{/block} diff --git a/templates/info.tpl b/templates/info.tpl index 3ed51b9..d315588 100644 --- a/templates/info.tpl +++ b/templates/info.tpl @@ -1,111 +1,59 @@ -{include file="inc/head.tpl"} -
-
-
- {include file="inc/logo.tpl"} - {$title=" - "} -

- {t params=['@title' => $title]}You are going to download @title.{/t} -

- {if isset($video->thumbnail)} - +{extends file='page.tpl'} +{block name='main'} +
+ {include file="inc/logo.tpl"} + {include file='snippets/title.tpl' assign=title} +

+ {t params=['@title' => $title]}You are going to download @title.{/t} +

+ {if isset($video->thumbnail)} + {html_image file=$video->thumbnail itemprop="thumbnailUrl" class="thumb"} + {/if} + {if isset($video->description)} + + {/if} + {if isset($video->upload_date)} + + {/if} +
+ + + {if $config->uglyUrls} + {/if} - {if isset($video->description)} - + {if isset($video->formats) && count($video->formats) > 1} +

+ {* + To make the default generic formats translatable: + {t}Best{/t} + {t}Remux best video with best audio{/t} + {t}Worst{/t} + *} + {html_options name='format' options=$formats selected=$defaultFormat id="format" class="formats monospace"} +
+
{/if} - {if isset($video->upload_date)} - + {if $config->stream} + stream !== 'ask'}checked{/if} name="stream" id="stream"/> + +
+
{/if} -
- - - {if $config->uglyUrls} - - {/if} - {if isset($video->formats) && count($video->formats) > 1} -

- -
-
- {/if} - {if $config->stream} - stream !== 'ask'}checked{/if} name="stream" id="stream"/> - -
-
- {/if} - {if $config->convertAdvanced} - - - - {t}with{/t} - - - {t}kbit/s audio{/t} -
-
- {/if} -
- -
+ {if $config->convertAdvanced} + + + {html_options name='customFormat' values=$config->convertAdvancedFormats output=$config->convertAdvancedFormats + title="{t}Custom format{/t}" name="customFormat" aria-label="{t}Format to convert to{/t}"} + {t}with{/t} + + + {t}kbit/s audio{/t} +
+
+ {/if} +
+
- {include file="inc/footer.tpl"} +{/block} diff --git a/templates/page.tpl b/templates/page.tpl new file mode 100644 index 0000000..26823db --- /dev/null +++ b/templates/page.tpl @@ -0,0 +1,18 @@ + + +{include file='inc/head.tpl'} + +
+ {include file='inc/header.tpl'} +
+
+ {block name="main"}{/block} +
+
+ {include file='inc/footer.tpl'} +
+{if isset($debug_render)} + {$debug_render->render()} +{/if} + + diff --git a/templates/password.tpl b/templates/password.tpl index 62c0f4c..0945f54 100644 --- a/templates/password.tpl +++ b/templates/password.tpl @@ -1,14 +1,12 @@ -{include file='inc/head.tpl'} -
-
- {include file="inc/logo.tpl"} -

{t}This video is protected{/t}

-

{t}You need a password in order to download this video.{/t}

-
- - -

- -
-
- {include file='inc/footer.tpl'} +{extends file='page.tpl'} +{block name='main'} + {include file="inc/logo.tpl"} +

{t}This video is protected{/t}

+

{t}You need a password in order to download this video.{/t}

+
+ + +

+ +
+{/block} diff --git a/templates/playlist.tpl b/templates/playlist.tpl index 179a394..5b28346 100644 --- a/templates/playlist.tpl +++ b/templates/playlist.tpl @@ -1,44 +1,40 @@ -{include file="inc/head.tpl"} -
-
- {include file="inc/logo.tpl"} +{extends file='page.tpl'} +{block name='main'} + {include file="inc/logo.tpl"} - {if isset($video->title)} - {$title=" - - {$video->title} - "} -

- {t params=['@title'=>$title]}Videos extracted from @title:{/t} -

- {/if} + {if isset($video->title)} + {include file='snippets/title.tpl' assign=title} +

+ {t params=['@title'=>$title]}Videos extracted from @title:{/t} +

+ {/if} - {if $config->stream} - webpage_url}" class="downloadBtn">Download everything - {/if} - {foreach $video->entries as $entry} -
-

webpage_url}" class="downloadBtn">Download everything + {/if} + {foreach $video->entries as $entry} +
+

+ - {if !isset($entry->title)} - {if $entry->ie_key == YoutubePlaylist} - Playlist - {else} - Video - {/if} + {if !isset($entry->title)} + {if $entry->ie_key == YoutubePlaylist} + Playlist {else} - {$entry->title} + Video {/if} -

- url}">{t}Download{/t} - url}">{t}More options{/t} -
- {/foreach} - -

- {include file="inc/footer.tpl"} + {else} + {$entry->title} + {/if} + + + url}">{t}Download{/t} + url}">{t}More options{/t} +
+ {/foreach} +{/block} diff --git a/templates/snippets/designer.tpl b/templates/snippets/designer.tpl new file mode 100644 index 0000000..ff71ad6 --- /dev/null +++ b/templates/snippets/designer.tpl @@ -0,0 +1,4 @@ + diff --git a/templates/snippets/dev.tpl b/templates/snippets/dev.tpl new file mode 100644 index 0000000..9fa5294 --- /dev/null +++ b/templates/snippets/dev.tpl @@ -0,0 +1,4 @@ + diff --git a/templates/snippets/title.tpl b/templates/snippets/title.tpl new file mode 100644 index 0000000..1812417 --- /dev/null +++ b/templates/snippets/title.tpl @@ -0,0 +1,5 @@ + + + diff --git a/templates/snippets/youtubedl.tpl b/templates/snippets/youtubedl.tpl new file mode 100644 index 0000000..bad1aff --- /dev/null +++ b/templates/snippets/youtubedl.tpl @@ -0,0 +1,3 @@ + + youtube-dl + diff --git a/tests/BaseTest.php b/tests/BaseTest.php index 3d41d6a..052927a 100644 --- a/tests/BaseTest.php +++ b/tests/BaseTest.php @@ -6,7 +6,9 @@ namespace Alltube\Test; +use OndraM\CiDetector\CiDetector; use PHPUnit\Framework\TestCase; +use PHPUnit\Util\Test; /** * Abstract class used by every test. @@ -37,7 +39,11 @@ abstract class BaseTest extends TestCase */ protected function checkRequirements() { - $annotations = $this->getAnnotations(); + $ciDetector = new CiDetector(); + $annotations = Test::parseTestMethodAnnotations( + static::class, + $this->getName() + ); $requires = []; if (isset($annotations['class']['requires'])) { @@ -48,7 +54,7 @@ abstract class BaseTest extends TestCase } foreach ($requires as $require) { - if ($require == 'download' && getenv('CI')) { + if ($require == 'download' && $ciDetector->isCiDetected()) { $this->markTestSkipped('Do not run tests that download videos on CI.'); } } diff --git a/tests/DownloadControllerTest.php b/tests/DownloadControllerTest.php index 35ca8a1..b43d709 100644 --- a/tests/DownloadControllerTest.php +++ b/tests/DownloadControllerTest.php @@ -108,14 +108,6 @@ class DownloadControllerTest extends ControllerTest public function testDownloadWithRtmpStream() { $this->markTestIncomplete('We need to find another RTMP video.'); - - $config = $this->container->get('config'); - $config->setOptions(['stream' => true]); - - $this->assertRequestIsOk( - 'download', - ['url' => 'http://www.rtvnh.nl/video/131946', 'format' => 'rtmp-264'] - ); } /** @@ -161,7 +153,7 @@ class DownloadControllerTest extends ControllerTest */ public function testDownloadWithMissingPassword() { - $this->assertRequestIsClientError('download', ['url' => 'http://vimeo.com/68375962']); + $this->assertRequestIsClientError('download', ['url' => 'https://vimeo.com/68375962']); } /** @@ -172,7 +164,7 @@ class DownloadControllerTest extends ControllerTest public function testDownloadWithError() { $this->expectException(YoutubedlException::class); - $this->getRequestResult('download', ['url' => 'http://example.com/foo']); + $this->getRequestResult('download', ['url' => 'https://example.com/foo']); } /** diff --git a/tests/FrontControllerTest.php b/tests/FrontControllerTest.php index 4b77ab6..b4f6967 100644 --- a/tests/FrontControllerTest.php +++ b/tests/FrontControllerTest.php @@ -186,12 +186,12 @@ class FrontControllerTest extends ControllerTest * * @return void * @requires download - * @throws AlltubeLibraryException + * @throws AlltubeLibraryException|InvalidURLException */ public function testInfoWithPassword() { $result = $this->controller->info( - $this->container->get('request')->withQueryParams(['url' => 'http://vimeo.com/68375962']) + $this->container->get('request')->withQueryParams(['url' => 'https://vimeo.com/68375962']) ->withParsedBody(['password' => 'youtube-dl']), $this->container->get('response') ); @@ -206,8 +206,8 @@ class FrontControllerTest extends ControllerTest */ public function testInfoWithMissingPassword() { - $this->assertRequestIsClientError('info', ['url' => 'http://vimeo.com/68375962']); - $this->assertRequestIsClientError('info', ['url' => 'http://vimeo.com/68375962', 'audio' => true]); + $this->assertRequestIsClientError('info', ['url' => 'https://vimeo.com/68375962']); + $this->assertRequestIsClientError('info', ['url' => 'https://vimeo.com/68375962', 'audio' => true]); } /** diff --git a/tests/JsonControllerTest.php b/tests/JsonControllerTest.php index be46ec1..c82b764 100644 --- a/tests/JsonControllerTest.php +++ b/tests/JsonControllerTest.php @@ -49,7 +49,7 @@ class JsonControllerTest extends ControllerTest public function testJsonWithError() { $this->expectException(YoutubedlException::class); - $this->getRequestResult('json', ['url' => 'http://example.com/foo']); + $this->getRequestResult('json', ['url' => 'https://example.com/foo']); } /** diff --git a/tests/UglyRouterTest.php b/tests/UglyRouterTest.php index f0f9f79..589d980 100644 --- a/tests/UglyRouterTest.php +++ b/tests/UglyRouterTest.php @@ -79,7 +79,7 @@ class UglyRouterTest extends ContainerTest public function testPathFor() { $this->assertEquals( - '/?page=foo', + '/?page=%2Ffoo', $this->router->pathFor('foo', [], []) ); } @@ -93,7 +93,7 @@ class UglyRouterTest extends ContainerTest { $this->router->setBasePath('/bar'); $this->assertEquals( - '/bar/?page=foo', + '/bar/?page=%2Ffoo', $this->router->pathFor('foo', [], []) ); } diff --git a/tests/VideoTest.php b/tests/VideoTest.php index 2107375..31ca1b9 100644 --- a/tests/VideoTest.php +++ b/tests/VideoTest.php @@ -104,7 +104,7 @@ class VideoTest extends ContainerTest */ public function testgetUrlWithPassword() { - $video = new Video($this->downloader, 'http://vimeo.com/68375962', 'best', 'youtube-dl'); + $video = new Video($this->downloader, 'https://vimeo.com/68375962', 'best', 'youtube-dl'); foreach ($video->getUrl() as $videoURL) { $this->assertStringContainsString('vimeocdn.com', $videoURL); } @@ -119,7 +119,7 @@ class VideoTest extends ContainerTest public function testgetUrlWithMissingPassword() { $this->expectException(PasswordException::class); - $video = new Video($this->downloader, 'http://vimeo.com/68375962', $this->format); + $video = new Video($this->downloader, 'https://vimeo.com/68375962', $this->format); $video->getUrl(); } @@ -132,7 +132,7 @@ class VideoTest extends ContainerTest public function testgetUrlWithWrongPassword() { $this->expectException(WrongPasswordException::class); - $video = new Video($this->downloader, 'http://vimeo.com/68375962', 'best', 'foo'); + $video = new Video($this->downloader, 'https://vimeo.com/68375962', 'best', 'foo'); $video->getUrl(); } @@ -174,7 +174,7 @@ class VideoTest extends ContainerTest 'googlevideo.com', ], [ - 'http://www.bbc.co.uk/programmes/b039g8p7', 'bestaudio/best', + 'https://www.bbc.co.uk/programmes/b039g8p7', 'bestaudio/best', 'Kaleidoscope_Leonard_Cohen-b039d07m', 'flv', 'bbcodspdns.fcod.llnwd.net', @@ -247,7 +247,7 @@ class VideoTest extends ContainerTest public function errorUrlProvider(): array { return [ - ['http://example.com/video'], + ['https://example.com/video'], ]; } @@ -479,16 +479,11 @@ class VideoTest extends ContainerTest * @param string $format Format * * @return void - * @throws AlltubeLibraryException * @dataProvider rtmpUrlProvider */ public function testGetRtmpStream(string $url, string $format) { $this->markTestIncomplete('We need to find another RTMP video.'); - - $video = new Video($this->downloader, $url, $format); - - $this->assertStream($this->downloader->getRtmpStream($video)); } /**