From fc193fdf1d67cb838f430c99823d7265a41fdea3 Mon Sep 17 00:00:00 2001 From: paranarimasu <33796518+paranarimasu@users.noreply.github.com> Date: Thu, 10 Dec 2020 23:11:41 -0600 Subject: [PATCH] chore: bump dependencies, fix StyleCI config, community docs (#91) * chore: bump dependencies, fix StyleCI config, community docs * style: fix StyleCI findings * style: fix StyleCI findings * style: fix StyleCI findings * style: fix StyleCI findings --- .github/CONTRIBUTING.md | 97 ++++ .styleci.yml | 20 +- LICENSE | 2 +- README.md | 25 +- .../Commands/AnnouncementCreateCommand.php | 11 +- .../Commands/AnnouncementDeleteCommand.php | 4 +- .../Commands/AnnouncementReadCommand.php | 6 +- .../Commands/AnnouncementUpdateCommand.php | 6 +- .../Commands/VideoReconcileCommand.php | 20 +- app/Grills/Grill.php | 12 +- app/Grills/GrillFactory.php | 11 +- app/Http/Controllers/SitemapController.php | 11 +- app/Http/Controllers/VideosController.php | 3 +- app/Http/Controllers/WelcomeController.php | 5 +- app/Http/Kernel.php | 2 +- app/Http/Middleware/LoggerMiddleware.php | 4 +- app/Providers/AppServiceProvider.php | 2 +- composer.lock | 466 ++++++++++-------- .../2017_11_26_225409_create_videos_table.php | 4 +- .../2017_12_26_221942_create_natural_sort.php | 38 +- ...28_023041_add_basename_to_videos_table.php | 4 +- database/seeds/DatabaseSeeder.php | 1 - database/seeds/VideosTableSeeder.php | 3 +- package-lock.json | 197 +------- package.json | 6 +- routes/api.php | 2 +- routes/channels.php | 2 +- routes/console.php | 2 +- tests/Unit/VideoReconcileTest.php | 105 ---- 29 files changed, 473 insertions(+), 598 deletions(-) create mode 100644 .github/CONTRIBUTING.md delete mode 100644 tests/Unit/VideoReconcileTest.php diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md new file mode 100644 index 000000000..8bb2ff203 --- /dev/null +++ b/.github/CONTRIBUTING.md @@ -0,0 +1,97 @@ +## Assignment + +Unless otherwise specified, any issue that does not have an assignee can be claimed by any volunteer. + +Please leave a comment in the issue indicating interest so that you can be designated as the assignee by a member. This is a requirement in Github to allow asssignment of contributors outside of the organization by members. + +If further discussion is needed before work can be started, please make use of the `#design` channel on the discord. + +## Development Environment + +Ensure that you have a functional local instance of AnimeThemes forked from this repository by following the [Installation Guide](https://github.com/AnimeThemes/animethemes-server/wiki/Installation). + +Enable your repository in [StyleCI](https://styleci.io/) so that code styling guidelines are followed. At the time of writing, analysis is run on push and merge. + +Set this repository as upstream to your fork. + +`git remote add upstream https://github.com/AnimeThemes/animethemes-server.git` + +Checkout release branch. + +`git checkout release-branch` + +Pull upstream changes so that your local branch is even with upstream. + +`git pull upstream release-branch` + +Push upstream changes to your remote if needed. + +`git push` + +## Feature Branch Workflow + +Once your release branch is even with upstream, create feature branch from release branch. + +`git branch new-feature-branch` + +Switch to feature branch. + +`git checkout new-feature-branch` + +Make changes in feature branch. Once completed, run tests. + +`php artisan config:clear && php artisan test` + +Execute static code analysis. + +`./vendor/bin/phpstan analyse --memory-limit=2G` + +Stage changes. Commit changes. Please include ticket ID's and use [Semantic Commit Messages](https://gist.github.com/joshbuchea/6f47e86d2510bce28f8e7f42ae84c716). + +## Cleanup Before Pull Request + +Fetch upstream master and merge with your repo's master branch +``` +git fetch upstream release-branch +git checkout release-branch +git merge upstream/release-branch +``` + +If there were any new commits, rebase your development branch +``` +git checkout new-feature-branch +git rebase release-branch +``` + +## Pull Request + +Push changes to remote. + +`git push --set-upstream origin new-feature-branch` + +Confirm StyleCI passing status on push. + +Create Pull Request from your new feature branch to upstream release branch. + +## Pruning + +Once the Pull Request is merged, delete the feature branch locally. + +`git branch -d new-feature-branch` + +Delete the remote feature branch. + +`git push origin --delete new-feature-branch` + +Pull upstream changes so that your local branch is even with upstream. + +`git pull upstream release-branch` + +Push upstream changes to your remote if needed. + +`git push` + +## References + +* [Semantic Commit Messages](https://gist.github.com/joshbuchea/6f47e86d2510bce28f8e7f42ae84c716) +* [Github Forking](https://gist.github.com/Chaser324/ce0505fbed06b947d962) diff --git a/.styleci.yml b/.styleci.yml index 1db61d96e..c006fecfd 100644 --- a/.styleci.yml +++ b/.styleci.yml @@ -1,13 +1,7 @@ -php: - preset: laravel - disabled: - - unused_use - finder: - not-name: - - index.php - - server.php -js: - finder: - not-name: - - webpack.mix.js -css: true +preset: laravel +disabled: + - unused_use +finder: + not-name: + - index.php + - server.php diff --git a/LICENSE b/LICENSE index 5253bb275..097720d8b 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2017 paranarimasu +Copyright (c) 2020 AnimeThemes Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index e469cda2c..e3539b39a 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,11 @@ -[AnimeThemes.moe](https://animethemes.moe/) is a hosting solution for [/r/AnimeThemes](https://www.reddit.com/r/AnimeThemes/), a simple and consistent repository of anime opening and ending themes. +

+StyleCI + + + +

+ +This is the repository for the server application that is responsible for AnimeThemes.moe resource management, API, and other services related to serving the AnimeThemes database. # Staff @@ -6,20 +13,6 @@ * ProWeebDev ([Github](https://github.com/ProWeebDev)) * Gaporigo ([Github](https://github.com/Gaporigo)) -# Requirements - -AnimeThemes runs on Laravel 8.x and has the same requirements - -* A web server -* `PHP >= 7.3.0` -* `composer` -* `npm` - # Installation -* Clone the repository -* Create/edit the `.env` file, providing database and S3 storage credentials -* Run `composer install` to download application packages -* Run `npm install` to download JavaScript packages -* Run `npm run dev` to install vendor JavaScript -* Run `php artisan migrate --seed` to initialize the database +Please review the [Installation Guide](https://github.com/AnimeThemes/animethemes-server/wiki/Installation) in the wiki for detailed instructions. diff --git a/app/Console/Commands/AnnouncementCreateCommand.php b/app/Console/Commands/AnnouncementCreateCommand.php index 399b2809d..fb3867810 100644 --- a/app/Console/Commands/AnnouncementCreateCommand.php +++ b/app/Console/Commands/AnnouncementCreateCommand.php @@ -13,7 +13,7 @@ class AnnouncementCreateCommand extends Command * * @var string */ - protected $signature = 'create:announcement + protected $signature = 'create:announcement {--alias= : An internal identifier with which an announcement can be referred} {--content= : The Announcement Text}'; @@ -46,6 +46,7 @@ class AnnouncementCreateCommand extends Command if (empty($alias)) { LOG::error('alias is required'); $this->error('alias is required'); + return; } @@ -54,6 +55,7 @@ class AnnouncementCreateCommand extends Command if (empty($content)) { LOG::error('content is required'); $this->error('content is required'); + return; } @@ -62,14 +64,15 @@ class AnnouncementCreateCommand extends Command if ($announcement) { LOG::error("Announcement '{$alias}' already exists"); $this->error("Announcement '{$alias}' already exists"); + return; } // Create the Announcement - $result = Announcement::create(array( + $result = Announcement::create([ 'alias' => $alias, - 'content' => $content - )); + 'content' => $content, + ]); // Confirm if Announcement was created if ($result->exists()) { diff --git a/app/Console/Commands/AnnouncementDeleteCommand.php b/app/Console/Commands/AnnouncementDeleteCommand.php index ce94e8d66..a9c483d08 100644 --- a/app/Console/Commands/AnnouncementDeleteCommand.php +++ b/app/Console/Commands/AnnouncementDeleteCommand.php @@ -45,14 +45,16 @@ class AnnouncementDeleteCommand extends Command if (empty($alias)) { LOG::error('alias is required'); $this->error('alias is required'); + return; } // Announcement must exist to be deleted $announcement = Announcement::where('alias', $alias)->first(); - if (!$announcement) { + if (! $announcement) { LOG::error("Announcement '{$alias}' does not exist"); $this->error("Announcement '{$alias}' does not exist"); + return; } diff --git a/app/Console/Commands/AnnouncementReadCommand.php b/app/Console/Commands/AnnouncementReadCommand.php index 6142501f2..23b64ab03 100644 --- a/app/Console/Commands/AnnouncementReadCommand.php +++ b/app/Console/Commands/AnnouncementReadCommand.php @@ -45,14 +45,16 @@ class AnnouncementReadCommand extends Command if (empty($alias)) { LOG::error('alias is required'); $this->error('alias is required'); + return; } // Announcement must exist to be read $announcement = Announcement::where('alias', $alias)->first(); - if (!$announcement) { + if (! $announcement) { LOG::error("Announcement '{$alias}' does not exist"); $this->error("Announcement '{$alias}' does not exist"); + return; } @@ -63,7 +65,7 @@ class AnnouncementReadCommand extends Command [ 'alias' => $announcement->alias, 'content' => $announcement->content, - ] + ], ]; $this->table($headers, $data); diff --git a/app/Console/Commands/AnnouncementUpdateCommand.php b/app/Console/Commands/AnnouncementUpdateCommand.php index cb280c261..3f1d45c2b 100644 --- a/app/Console/Commands/AnnouncementUpdateCommand.php +++ b/app/Console/Commands/AnnouncementUpdateCommand.php @@ -46,6 +46,7 @@ class AnnouncementUpdateCommand extends Command if (empty($alias)) { LOG::error('alias is required'); $this->error('alias is required'); + return; } @@ -54,14 +55,15 @@ class AnnouncementUpdateCommand extends Command // Announcement must exist to be updated $announcement = Announcement::where('alias', $alias)->first(); - if (!$announcement) { + if (! $announcement) { LOG::error("Announcement '{$alias}' does not exist"); $this->error("Announcement '{$alias}' does not exist"); + return; } // Update Content if set - if (!empty($content)) { + if (! empty($content)) { $announcement->content = $content; } diff --git a/app/Console/Commands/VideoReconcileCommand.php b/app/Console/Commands/VideoReconcileCommand.php index af3c69b33..41a1b0670 100644 --- a/app/Console/Commands/VideoReconcileCommand.php +++ b/app/Console/Commands/VideoReconcileCommand.php @@ -10,7 +10,6 @@ use Illuminate\Support\Facades\Storage; class VideoReconcileCommand extends Command { - // Result Counts public $created = 0; public $created_failed = 0; @@ -63,6 +62,7 @@ class VideoReconcileCommand extends Command $fs_videos = array_map(function ($file) { $fs_video = new Video; $fs_video->fill($file); + return $fs_video; }, $files); @@ -108,31 +108,37 @@ class VideoReconcileCommand extends Command } // Callback for video comparison in set operation - public static function compareVideos($a, $b) { + public static function compareVideos($a, $b) + { return strcmp(VideoReconcileCommand::reconciliationString($a), VideoReconcileCommand::reconciliationString($b)); } // Represent video with attributes that correspond to WebM metadata // For reconciliation purposes, other attributes such as ID and timestamps do not apply - public static function reconciliationString($video) { + public static function reconciliationString($video) + { return "basename:{$video->basename},filename:{$video->filename},path:{$video->path},size:{$video->size}"; } // Reconciliation Results - public function hasResults() { + public function hasResults() + { return $this->hasChanges() || $this->hasFailures(); } - public function hasChanges() { + public function hasChanges() + { return $this->created > 0 || $this->deleted > 0; } - public function hasFailures() { + public function hasFailures() + { return $this->created_failed > 0 || $this->deleted_failed > 0; } - public function printResults() { + public function printResults() + { if ($this->hasResults()) { if ($this->hasChanges()) { Log::info("{$this->created} Videos created, {$this->deleted} Videos deleted"); diff --git a/app/Grills/Grill.php b/app/Grills/Grill.php index 31b658b2f..c75bc8365 100644 --- a/app/Grills/Grill.php +++ b/app/Grills/Grill.php @@ -2,15 +2,17 @@ namespace App\Grills; -class Grill { - +class Grill +{ private $path; - public function __construct($path) { + public function __construct($path) + { $this->path = $path; } - public function getPath() { + public function getPath() + { return $this->path; } -} \ No newline at end of file +} diff --git a/app/Grills/GrillFactory.php b/app/Grills/GrillFactory.php index d66bd54f2..cea443cc2 100644 --- a/app/Grills/GrillFactory.php +++ b/app/Grills/GrillFactory.php @@ -6,9 +6,10 @@ use App\Grills\Grill; use Faker\Factory; use Illuminate\Support\Facades\Storage; -class GrillFactory { - - public static function getGrill() { +class GrillFactory +{ + public static function getGrill() + { // Retrieve grills through Storage Facade [see config/filesystems.php] $grill_disk = Storage::disk('grill'); $grills = $grill_disk->files(); @@ -20,5 +21,5 @@ class GrillFactory { // Return Grill return new Grill($grill_path); - } -} \ No newline at end of file + } +} diff --git a/app/Http/Controllers/SitemapController.php b/app/Http/Controllers/SitemapController.php index 7cd1f1e54..acb0ba0ea 100644 --- a/app/Http/Controllers/SitemapController.php +++ b/app/Http/Controllers/SitemapController.php @@ -3,23 +3,24 @@ namespace App\Http\Controllers; use App\Models\Video; -use Illuminate\Http\Request; class SitemapController extends Controller { - public function index() { + public function index() + { $video = Video::orderBy('updated_at', 'desc')->first(); return response()->view('sitemap.index', [ - 'video' => $video + 'video' => $video, ])->header('Content-Type', 'text/xml'); } - public function videos() { + public function videos() + { $video = Video::orderBy('updated_at', 'desc')->first(); return response()->view('sitemap.videos', [ - 'video' => $video + 'video' => $video, ])->header('Content-Type', 'text/xml'); } } diff --git a/app/Http/Controllers/VideosController.php b/app/Http/Controllers/VideosController.php index 047b983ca..3d2883f1f 100644 --- a/app/Http/Controllers/VideosController.php +++ b/app/Http/Controllers/VideosController.php @@ -8,7 +8,8 @@ use Symfony\Component\HttpFoundation\StreamedResponse; class VideosController extends Controller { - public function show($alias) { + public function show($alias) + { set_time_limit(0); $video = Video::where('basename', $alias)->orWhere('filename', $alias)->first(); diff --git a/app/Http/Controllers/WelcomeController.php b/app/Http/Controllers/WelcomeController.php index a39b837ee..1c8cdc75a 100644 --- a/app/Http/Controllers/WelcomeController.php +++ b/app/Http/Controllers/WelcomeController.php @@ -9,7 +9,8 @@ use Illuminate\Http\Request; class WelcomeController extends Controller { - public function do() { + public function do() + { // View Data $grill = GrillFactory::getGrill(); $videoCount = Video::count(); @@ -18,7 +19,7 @@ class WelcomeController extends Controller return view('welcome', [ 'announcements' => $announcements, 'grill' => $grill->getPath(), - 'videoCount' => $videoCount + 'videoCount' => $videoCount, ]); } } diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index a1c6a2f04..c0bc89e6c 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -20,7 +20,7 @@ class Kernel extends HttpKernel \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, //\App\Http\Middleware\TrimStrings::class, //\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, - \App\Http\Middleware\LoggerMiddleware::class + \App\Http\Middleware\LoggerMiddleware::class, ]; /** diff --git a/app/Http/Middleware/LoggerMiddleware.php b/app/Http/Middleware/LoggerMiddleware.php index 48ee30c30..100ffc12c 100644 --- a/app/Http/Middleware/LoggerMiddleware.php +++ b/app/Http/Middleware/LoggerMiddleware.php @@ -16,11 +16,11 @@ class LoggerMiddleware */ public function handle($request, Closure $next) { - Log::info("Request Info", [ + Log::info('Request Info', [ 'method' => $request->method(), 'full-url' => $request->fullUrl(), 'ip' => $request->ip(), - 'headers' => $request->headers->all() + 'headers' => $request->headers->all(), ]); return $next($request); diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 64e395d56..f5fa0f919 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -2,9 +2,9 @@ namespace App\Providers; -use Illuminate\Support\ServiceProvider; use Illuminate\Support\Facades\Blade; use Illuminate\Support\Facades\Schema; +use Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider { diff --git a/composer.lock b/composer.lock index 94e66de07..d9e076fc1 100644 --- a/composer.lock +++ b/composer.lock @@ -60,16 +60,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.161.1", + "version": "3.168.2", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "4c1852e9efaef18e15f2a6c914d8dc41fda2a052" + "reference": "1d6a976da857d13b156bd63613ee086c13f6dc29" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/4c1852e9efaef18e15f2a6c914d8dc41fda2a052", - "reference": "4c1852e9efaef18e15f2a6c914d8dc41fda2a052", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/1d6a976da857d13b156bd63613ee086c13f6dc29", + "reference": "1d6a976da857d13b156bd63613ee086c13f6dc29", "shasum": "" }, "require": { @@ -141,7 +141,7 @@ "s3", "sdk" ], - "time": "2020-11-13T19:17:55+00:00" + "time": "2020-12-10T19:35:18+00:00" }, { "name": "brick/math", @@ -326,16 +326,16 @@ }, { "name": "doctrine/dbal", - "version": "2.12.0", + "version": "2.12.1", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "c6d37b4c42aaa3c3ee175f05eca68056f4185646" + "reference": "adce7a954a1c2f14f85e94aed90c8489af204086" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/c6d37b4c42aaa3c3ee175f05eca68056f4185646", - "reference": "c6d37b4c42aaa3c3ee175f05eca68056f4185646", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/adce7a954a1c2f14f85e94aed90c8489af204086", + "reference": "adce7a954a1c2f14f85e94aed90c8489af204086", "shasum": "" }, "require": { @@ -429,7 +429,7 @@ "type": "tidelift" } ], - "time": "2020-10-22T17:26:24+00:00" + "time": "2020-11-14T20:26:58+00:00" }, { "name": "doctrine/event-manager", @@ -690,26 +690,29 @@ }, { "name": "dragonmantank/cron-expression", - "version": "v3.0.2", + "version": "v3.1.0", "source": { "type": "git", "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "48212cdc0a79051d50d7fc2f0645c5a321caf926" + "reference": "7a8c6e56ab3ffcc538d05e8155bb42269abf1a0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/48212cdc0a79051d50d7fc2f0645c5a321caf926", - "reference": "48212cdc0a79051d50d7fc2f0645c5a321caf926", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/7a8c6e56ab3ffcc538d05e8155bb42269abf1a0c", + "reference": "7a8c6e56ab3ffcc538d05e8155bb42269abf1a0c", "shasum": "" }, "require": { - "php": "^7.1|^8.0" + "php": "^7.2|^8.0", + "webmozart/assert": "^1.7.0" }, "replace": { "mtdowling/cron-expression": "^1.0" }, "require-dev": { - "phpstan/phpstan": "^0.11|^0.12", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-webmozart-assert": "^0.12.7", "phpunit/phpunit": "^7.0|^8.0|^9.0" }, "type": "library", @@ -740,20 +743,20 @@ "type": "github" } ], - "time": "2020-10-13T01:26:01+00:00" + "time": "2020-11-24T19:55:57+00:00" }, { "name": "egulias/email-validator", - "version": "2.1.23", + "version": "2.1.24", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "5fa792ad1853ae2bc60528dd3e5cbf4542d3c1df" + "reference": "ca90a3291eee1538cd48ff25163240695bd95448" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/5fa792ad1853ae2bc60528dd3e5cbf4542d3c1df", - "reference": "5fa792ad1853ae2bc60528dd3e5cbf4542d3c1df", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ca90a3291eee1538cd48ff25163240695bd95448", + "reference": "ca90a3291eee1538cd48ff25163240695bd95448", "shasum": "" }, "require": { @@ -798,7 +801,13 @@ "validation", "validator" ], - "time": "2020-10-31T20:37:35+00:00" + "funding": [ + { + "url": "https://github.com/egulias", + "type": "github" + } + ], + "time": "2020-11-14T15:56:27+00:00" }, { "name": "fideloper/proxy", @@ -1211,16 +1220,16 @@ }, { "name": "laravel/framework", - "version": "v8.14.0", + "version": "v8.18.1", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "b60139c9d3b475d5b5dc261c5dcafe8ca49b4a13" + "reference": "31747193c26ba0a9cb7929a912895d3cdefd10cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/b60139c9d3b475d5b5dc261c5dcafe8ca49b4a13", - "reference": "b60139c9d3b475d5b5dc261c5dcafe8ca49b4a13", + "url": "https://api.github.com/repos/laravel/framework/zipball/31747193c26ba0a9cb7929a912895d3cdefd10cf", + "reference": "31747193c26ba0a9cb7929a912895d3cdefd10cf", "shasum": "" }, "require": { @@ -1240,15 +1249,15 @@ "psr/simple-cache": "^1.0", "ramsey/uuid": "^4.0", "swiftmailer/swiftmailer": "^6.0", - "symfony/console": "^5.1", - "symfony/error-handler": "^5.1", - "symfony/finder": "^5.1", - "symfony/http-foundation": "^5.1", - "symfony/http-kernel": "^5.1", - "symfony/mime": "^5.1", - "symfony/process": "^5.1", - "symfony/routing": "^5.1", - "symfony/var-dumper": "^5.1", + "symfony/console": "^5.1.4", + "symfony/error-handler": "^5.1.4", + "symfony/finder": "^5.1.4", + "symfony/http-foundation": "^5.1.4", + "symfony/http-kernel": "^5.1.4", + "symfony/mime": "^5.1.4", + "symfony/process": "^5.1.4", + "symfony/routing": "^5.1.4", + "symfony/var-dumper": "^5.1.4", "tijsverkoyen/css-to-inline-styles": "^2.2.2", "vlucas/phpdotenv": "^5.2", "voku/portable-ascii": "^1.4.8" @@ -1293,21 +1302,21 @@ "illuminate/view": "self.version" }, "require-dev": { - "aws/aws-sdk-php": "^3.0", - "doctrine/dbal": "^2.6", + "aws/aws-sdk-php": "^3.155", + "doctrine/dbal": "^2.6|^3.0", "filp/whoops": "^2.8", "guzzlehttp/guzzle": "^6.5.5|^7.0.1", "league/flysystem-cached-adapter": "^1.0", "mockery/mockery": "^1.4.2", - "orchestra/testbench-core": "^6.5", + "orchestra/testbench-core": "^6.8", "pda/pheanstalk": "^4.0", "phpunit/phpunit": "^8.5.8|^9.3.3", "predis/predis": "^1.1.1", - "symfony/cache": "^5.1" + "symfony/cache": "^5.1.4" }, "suggest": { - "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage and SES mail driver (^3.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.6).", + "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage and SES mail driver (^3.155).", + "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.6|^3.0).", "ext-ftp": "Required to use the Flysystem FTP driver.", "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().", "ext-memcached": "Required to use the memcache cache driver.", @@ -1328,8 +1337,8 @@ "predis/predis": "Required to use the predis connector (^1.1.2).", "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^4.0).", - "symfony/cache": "Required to PSR-6 cache bridge (^5.1).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^5.1).", + "symfony/cache": "Required to PSR-6 cache bridge (^5.1.4).", + "symfony/filesystem": "Required to enable support for relative symbolic links (^5.1.4).", "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0).", "wildbit/swiftmailer-postmark": "Required to use Postmark mail driver (^3.0)." }, @@ -1370,7 +1379,7 @@ "framework", "laravel" ], - "time": "2020-11-10T14:47:10+00:00" + "time": "2020-12-08T22:05:12+00:00" }, { "name": "laravel/tinker", @@ -1870,16 +1879,16 @@ }, { "name": "nesbot/carbon", - "version": "2.41.5", + "version": "2.42.0", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "c4a9caf97cfc53adfc219043bcecf42bc663acee" + "reference": "d0463779663437392fe42ff339ebc0213bd55498" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/c4a9caf97cfc53adfc219043bcecf42bc663acee", - "reference": "c4a9caf97cfc53adfc219043bcecf42bc663acee", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/d0463779663437392fe42ff339ebc0213bd55498", + "reference": "d0463779663437392fe42ff339ebc0213bd55498", "shasum": "" }, "require": { @@ -1894,7 +1903,7 @@ "kylekatarnls/multi-tester": "^2.0", "phpmd/phpmd": "^2.9", "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.35", + "phpstan/phpstan": "^0.12.54", "phpunit/phpunit": "^7.5 || ^8.0", "squizlabs/php_codesniffer": "^3.4" }, @@ -1955,20 +1964,20 @@ "type": "tidelift" } ], - "time": "2020-10-23T06:02:30+00:00" + "time": "2020-11-28T14:25:28+00:00" }, { "name": "nikic/php-parser", - "version": "v4.10.2", + "version": "v4.10.3", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "658f1be311a230e0907f5dfe0213742aff0596de" + "reference": "dbe56d23de8fcb157bbc0cfb3ad7c7de0cfb0984" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/658f1be311a230e0907f5dfe0213742aff0596de", - "reference": "658f1be311a230e0907f5dfe0213742aff0596de", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/dbe56d23de8fcb157bbc0cfb3ad7c7de0cfb0984", + "reference": "dbe56d23de8fcb157bbc0cfb3ad7c7de0cfb0984", "shasum": "" }, "require": { @@ -2007,7 +2016,7 @@ "parser", "php" ], - "time": "2020-09-26T10:30:38+00:00" + "time": "2020-12-03T17:45:45+00:00" }, { "name": "opis/closure", @@ -2426,16 +2435,16 @@ }, { "name": "psy/psysh", - "version": "v0.10.4", + "version": "v0.10.5", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "a8aec1b2981ab66882a01cce36a49b6317dc3560" + "reference": "7c710551d4a2653afa259c544508dc18a9098956" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/a8aec1b2981ab66882a01cce36a49b6317dc3560", - "reference": "a8aec1b2981ab66882a01cce36a49b6317dc3560", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/7c710551d4a2653afa259c544508dc18a9098956", + "reference": "7c710551d4a2653afa259c544508dc18a9098956", "shasum": "" }, "require": { @@ -2494,7 +2503,7 @@ "interactive", "shell" ], - "time": "2020-05-03T19:32:03+00:00" + "time": "2020-12-04T02:51:30+00:00" }, { "name": "ralouphie/getallheaders", @@ -2694,32 +2703,31 @@ }, { "name": "swiftmailer/swiftmailer", - "version": "v6.2.3", + "version": "v6.2.4", "source": { "type": "git", "url": "https://github.com/swiftmailer/swiftmailer.git", - "reference": "149cfdf118b169f7840bbe3ef0d4bc795d1780c9" + "reference": "56f0ab23f54c4ccbb0d5dcc67ff8552e0c98d59e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/149cfdf118b169f7840bbe3ef0d4bc795d1780c9", - "reference": "149cfdf118b169f7840bbe3ef0d4bc795d1780c9", + "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/56f0ab23f54c4ccbb0d5dcc67ff8552e0c98d59e", + "reference": "56f0ab23f54c4ccbb0d5dcc67ff8552e0c98d59e", "shasum": "" }, "require": { - "egulias/email-validator": "~2.0", + "egulias/email-validator": "^2.0", "php": ">=7.0.0", "symfony/polyfill-iconv": "^1.0", "symfony/polyfill-intl-idn": "^1.10", "symfony/polyfill-mbstring": "^1.0" }, "require-dev": { - "mockery/mockery": "~0.9.1", - "symfony/phpunit-bridge": "^3.4.19|^4.1.8" + "mockery/mockery": "^1.0", + "symfony/phpunit-bridge": "^4.4|^5.0" }, "suggest": { - "ext-intl": "Needed to support internationalized email addresses", - "true/punycode": "Needed to support internationalized email addresses, if ext-intl is not installed" + "ext-intl": "Needed to support internationalized email addresses" }, "type": "library", "extra": { @@ -2752,20 +2760,30 @@ "mail", "mailer" ], - "time": "2019-11-12T09:31:26+00:00" + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/swiftmailer/swiftmailer", + "type": "tidelift" + } + ], + "time": "2020-12-08T18:02:06+00:00" }, { "name": "symfony/console", - "version": "v5.1.8", + "version": "v5.2.0", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "e0b2c29c0fa6a69089209bbe8fcff4df2a313d0e" + "reference": "3e0564fb08d44a98bd5f1960204c958e57bd586b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/e0b2c29c0fa6a69089209bbe8fcff4df2a313d0e", - "reference": "e0b2c29c0fa6a69089209bbe8fcff4df2a313d0e", + "url": "https://api.github.com/repos/symfony/console/zipball/3e0564fb08d44a98bd5f1960204c958e57bd586b", + "reference": "3e0564fb08d44a98bd5f1960204c958e57bd586b", "shasum": "" }, "require": { @@ -2826,6 +2844,12 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command line", + "console", + "terminal" + ], "funding": [ { "url": "https://symfony.com/sponsor", @@ -2840,20 +2864,20 @@ "type": "tidelift" } ], - "time": "2020-10-24T12:01:57+00:00" + "time": "2020-11-28T11:24:18+00:00" }, { "name": "symfony/css-selector", - "version": "v5.1.8", + "version": "v5.2.0", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "6cbebda22ffc0d4bb8fea0c1311c2ca54c4c8fa0" + "reference": "b8d8eb06b0942e84a69e7acebc3e9c1e6e6e7256" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/6cbebda22ffc0d4bb8fea0c1311c2ca54c4c8fa0", - "reference": "6cbebda22ffc0d4bb8fea0c1311c2ca54c4c8fa0", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/b8d8eb06b0942e84a69e7acebc3e9c1e6e6e7256", + "reference": "b8d8eb06b0942e84a69e7acebc3e9c1e6e6e7256", "shasum": "" }, "require": { @@ -2902,7 +2926,7 @@ "type": "tidelift" } ], - "time": "2020-10-24T12:01:57+00:00" + "time": "2020-10-28T21:31:18+00:00" }, { "name": "symfony/deprecation-contracts", @@ -2970,16 +2994,16 @@ }, { "name": "symfony/error-handler", - "version": "v5.1.8", + "version": "v5.2.0", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "a154f2b12fd1ec708559ba73ed58bd1304e55718" + "reference": "289008c5be039e39908d33ae0a8ac99be1210bba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/a154f2b12fd1ec708559ba73ed58bd1304e55718", - "reference": "a154f2b12fd1ec708559ba73ed58bd1304e55718", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/289008c5be039e39908d33ae0a8ac99be1210bba", + "reference": "289008c5be039e39908d33ae0a8ac99be1210bba", "shasum": "" }, "require": { @@ -3032,20 +3056,20 @@ "type": "tidelift" } ], - "time": "2020-10-24T12:01:57+00:00" + "time": "2020-10-28T21:46:03+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v5.1.8", + "version": "v5.2.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "26f4edae48c913fc183a3da0553fe63bdfbd361a" + "reference": "aa13a09811e6d2ad43f8fb336bebdb7691d85d3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/26f4edae48c913fc183a3da0553fe63bdfbd361a", - "reference": "26f4edae48c913fc183a3da0553fe63bdfbd361a", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/aa13a09811e6d2ad43f8fb336bebdb7691d85d3c", + "reference": "aa13a09811e6d2ad43f8fb336bebdb7691d85d3c", "shasum": "" }, "require": { @@ -3114,7 +3138,7 @@ "type": "tidelift" } ], - "time": "2020-10-24T12:01:57+00:00" + "time": "2020-11-01T16:14:45+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -3194,16 +3218,16 @@ }, { "name": "symfony/finder", - "version": "v5.1.8", + "version": "v5.2.0", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "e70eb5a69c2ff61ea135a13d2266e8914a67b3a0" + "reference": "fd8305521692f27eae3263895d1ef1571c71a78d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/e70eb5a69c2ff61ea135a13d2266e8914a67b3a0", - "reference": "e70eb5a69c2ff61ea135a13d2266e8914a67b3a0", + "url": "https://api.github.com/repos/symfony/finder/zipball/fd8305521692f27eae3263895d1ef1571c71a78d", + "reference": "fd8305521692f27eae3263895d1ef1571c71a78d", "shasum": "" }, "require": { @@ -3248,7 +3272,7 @@ "type": "tidelift" } ], - "time": "2020-10-24T12:01:57+00:00" + "time": "2020-11-18T09:42:36+00:00" }, { "name": "symfony/http-client-contracts", @@ -3328,16 +3352,16 @@ }, { "name": "symfony/http-foundation", - "version": "v5.1.8", + "version": "v5.2.0", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "a2860ec970404b0233ab1e59e0568d3277d32b6f" + "reference": "e4576271ee99123aa59a40564c7b5405f0ebd1e6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/a2860ec970404b0233ab1e59e0568d3277d32b6f", - "reference": "a2860ec970404b0233ab1e59e0568d3277d32b6f", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/e4576271ee99123aa59a40564c7b5405f0ebd1e6", + "reference": "e4576271ee99123aa59a40564c7b5405f0ebd1e6", "shasum": "" }, "require": { @@ -3394,20 +3418,20 @@ "type": "tidelift" } ], - "time": "2020-10-24T12:01:57+00:00" + "time": "2020-11-27T06:13:25+00:00" }, { "name": "symfony/http-kernel", - "version": "v5.1.8", + "version": "v5.2.0", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "a13b3c4d994a4fd051f4c6800c5e33c9508091dd" + "reference": "38907e5ccb2d9d371191a946734afc83c7a03160" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/a13b3c4d994a4fd051f4c6800c5e33c9508091dd", - "reference": "a13b3c4d994a4fd051f4c6800c5e33c9508091dd", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/38907e5ccb2d9d371191a946734afc83c7a03160", + "reference": "38907e5ccb2d9d371191a946734afc83c7a03160", "shasum": "" }, "require": { @@ -3427,7 +3451,7 @@ "symfony/cache": "<5.0", "symfony/config": "<5.0", "symfony/console": "<4.4", - "symfony/dependency-injection": "<4.4", + "symfony/dependency-injection": "<5.1.8", "symfony/doctrine-bridge": "<5.0", "symfony/form": "<5.0", "symfony/http-client": "<5.0", @@ -3447,7 +3471,7 @@ "symfony/config": "^5.0", "symfony/console": "^4.4|^5.0", "symfony/css-selector": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", + "symfony/dependency-injection": "^5.1.8", "symfony/dom-crawler": "^4.4|^5.0", "symfony/expression-language": "^4.4|^5.0", "symfony/finder": "^4.4|^5.0", @@ -3503,24 +3527,25 @@ "type": "tidelift" } ], - "time": "2020-10-28T05:55:23+00:00" + "time": "2020-11-30T05:54:18+00:00" }, { "name": "symfony/mime", - "version": "v5.1.8", + "version": "v5.2.0", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "f5485a92c24d4bcfc2f3fc648744fb398482ff1b" + "reference": "05f667e8fa029568964fd3bec6bc17765b853cc5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/f5485a92c24d4bcfc2f3fc648744fb398482ff1b", - "reference": "f5485a92c24d4bcfc2f3fc648744fb398482ff1b", + "url": "https://api.github.com/repos/symfony/mime/zipball/05f667e8fa029568964fd3bec6bc17765b853cc5", + "reference": "05f667e8fa029568964fd3bec6bc17765b853cc5", "shasum": "" }, "require": { "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", "symfony/polyfill-intl-idn": "^1.10", "symfony/polyfill-mbstring": "^1.0", "symfony/polyfill-php80": "^1.15" @@ -3530,7 +3555,11 @@ }, "require-dev": { "egulias/email-validator": "^2.1.10", - "symfony/dependency-injection": "^4.4|^5.0" + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/property-access": "^4.4|^5.1", + "symfony/property-info": "^4.4|^5.1", + "symfony/serializer": "^5.2" }, "type": "library", "autoload": { @@ -3575,7 +3604,7 @@ "type": "tidelift" } ], - "time": "2020-10-24T12:01:57+00:00" + "time": "2020-10-30T14:55:39+00:00" }, { "name": "symfony/polyfill-ctype", @@ -4281,16 +4310,16 @@ }, { "name": "symfony/process", - "version": "v5.1.8", + "version": "v5.2.0", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "f00872c3f6804150d6a0f73b4151daab96248101" + "reference": "240e74140d4d956265048f3025c0aecbbc302d54" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/f00872c3f6804150d6a0f73b4151daab96248101", - "reference": "f00872c3f6804150d6a0f73b4151daab96248101", + "url": "https://api.github.com/repos/symfony/process/zipball/240e74140d4d956265048f3025c0aecbbc302d54", + "reference": "240e74140d4d956265048f3025c0aecbbc302d54", "shasum": "" }, "require": { @@ -4336,20 +4365,20 @@ "type": "tidelift" } ], - "time": "2020-10-24T12:01:57+00:00" + "time": "2020-11-02T15:47:15+00:00" }, { "name": "symfony/routing", - "version": "v5.1.8", + "version": "v5.2.0", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "d6ceee2a37b61b41079005207bf37746d1bfe71f" + "reference": "130ac5175ad2fd417978baebd8062e2e6b2bc28b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/d6ceee2a37b61b41079005207bf37746d1bfe71f", - "reference": "d6ceee2a37b61b41079005207bf37746d1bfe71f", + "url": "https://api.github.com/repos/symfony/routing/zipball/130ac5175ad2fd417978baebd8062e2e6b2bc28b", + "reference": "130ac5175ad2fd417978baebd8062e2e6b2bc28b", "shasum": "" }, "require": { @@ -4363,7 +4392,7 @@ "symfony/yaml": "<4.4" }, "require-dev": { - "doctrine/annotations": "~1.2", + "doctrine/annotations": "^1.7", "psr/log": "~1.0", "symfony/config": "^5.0", "symfony/dependency-injection": "^4.4|^5.0", @@ -4423,7 +4452,7 @@ "type": "tidelift" } ], - "time": "2020-10-24T12:01:57+00:00" + "time": "2020-11-27T00:39:34+00:00" }, { "name": "symfony/service-contracts", @@ -4503,16 +4532,16 @@ }, { "name": "symfony/string", - "version": "v5.1.8", + "version": "v5.2.0", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "a97573e960303db71be0dd8fda9be3bca5e0feea" + "reference": "40e975edadd4e32cd16f3753b3bad65d9ac48242" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/a97573e960303db71be0dd8fda9be3bca5e0feea", - "reference": "a97573e960303db71be0dd8fda9be3bca5e0feea", + "url": "https://api.github.com/repos/symfony/string/zipball/40e975edadd4e32cd16f3753b3bad65d9ac48242", + "reference": "40e975edadd4e32cd16f3753b3bad65d9ac48242", "shasum": "" }, "require": { @@ -4579,27 +4608,27 @@ "type": "tidelift" } ], - "time": "2020-10-24T12:01:57+00:00" + "time": "2020-10-24T12:08:07+00:00" }, { "name": "symfony/translation", - "version": "v5.1.8", + "version": "v5.2.0", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "27980838fd261e04379fa91e94e81e662fe5a1b6" + "reference": "52f486a707510884450df461b5a6429dd7a67379" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/27980838fd261e04379fa91e94e81e662fe5a1b6", - "reference": "27980838fd261e04379fa91e94e81e662fe5a1b6", + "url": "https://api.github.com/repos/symfony/translation/zipball/52f486a707510884450df461b5a6429dd7a67379", + "reference": "52f486a707510884450df461b5a6429dd7a67379", "shasum": "" }, "require": { "php": ">=7.2.5", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php80": "^1.15", - "symfony/translation-contracts": "^2" + "symfony/translation-contracts": "^2.3" }, "conflict": { "symfony/config": "<4.4", @@ -4629,6 +4658,9 @@ }, "type": "library", "autoload": { + "files": [ + "Resources/functions.php" + ], "psr-4": { "Symfony\\Component\\Translation\\": "" }, @@ -4666,7 +4698,7 @@ "type": "tidelift" } ], - "time": "2020-10-24T12:01:57+00:00" + "time": "2020-11-28T11:24:18+00:00" }, { "name": "symfony/translation-contracts", @@ -4745,16 +4777,16 @@ }, { "name": "symfony/var-dumper", - "version": "v5.1.8", + "version": "v5.2.0", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "4e13f3fcefb1fcaaa5efb5403581406f4e840b9a" + "reference": "173a79c462b1c81e1fa26129f71e41333d846b26" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/4e13f3fcefb1fcaaa5efb5403581406f4e840b9a", - "reference": "4e13f3fcefb1fcaaa5efb5403581406f4e840b9a", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/173a79c462b1c81e1fa26129f71e41333d846b26", + "reference": "173a79c462b1c81e1fa26129f71e41333d846b26", "shasum": "" }, "require": { @@ -4826,7 +4858,7 @@ "type": "tidelift" } ], - "time": "2020-10-27T10:11:13+00:00" + "time": "2020-11-27T00:39:34+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -5022,6 +5054,55 @@ } ], "time": "2020-11-12T00:07:28+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.9.1", + "source": { + "type": "git", + "url": "https://github.com/webmozart/assert.git", + "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389", + "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0 || ^8.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<3.9.1" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.36 || ^7.5.13" + }, + "type": "library", + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "time": "2020-07-08T17:02:28+00:00" } ], "packages-dev": [ @@ -5153,16 +5234,16 @@ }, { "name": "facade/ignition", - "version": "2.5.1", + "version": "2.5.3", "source": { "type": "git", "url": "https://github.com/facade/ignition.git", - "reference": "3b3403f18bbdc0aeadf1ffaddf11a1588b12ec7a" + "reference": "d8dc4f90ed469f9f9313b976fb078c20585d5c99" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/facade/ignition/zipball/3b3403f18bbdc0aeadf1ffaddf11a1588b12ec7a", - "reference": "3b3403f18bbdc0aeadf1ffaddf11a1588b12ec7a", + "url": "https://api.github.com/repos/facade/ignition/zipball/d8dc4f90ed469f9f9313b976fb078c20585d5c99", + "reference": "d8dc4f90ed469f9f9313b976fb078c20585d5c99", "shasum": "" }, "require": { @@ -5220,7 +5301,7 @@ "laravel", "page" ], - "time": "2020-11-13T13:36:24+00:00" + "time": "2020-12-09T20:25:45+00:00" }, { "name": "facade/ignition-contracts", @@ -5694,16 +5775,16 @@ }, { "name": "phar-io/version", - "version": "3.0.2", + "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/phar-io/version.git", - "reference": "c6bb6825def89e0a32220f88337f8ceaf1975fa0" + "reference": "726c026815142e4f8677b7cb7f2249c9ffb7ecae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/c6bb6825def89e0a32220f88337f8ceaf1975fa0", - "reference": "c6bb6825def89e0a32220f88337f8ceaf1975fa0", + "url": "https://api.github.com/repos/phar-io/version/zipball/726c026815142e4f8677b7cb7f2249c9ffb7ecae", + "reference": "726c026815142e4f8677b7cb7f2249c9ffb7ecae", "shasum": "" }, "require": { @@ -5737,7 +5818,7 @@ } ], "description": "Library for handling version information and constraints", - "time": "2020-06-27T14:39:04+00:00" + "time": "2020-11-30T09:21:21+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -5950,16 +6031,16 @@ }, { "name": "phpunit/php-code-coverage", - "version": "9.2.3", + "version": "9.2.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "6b20e2055f7c29b56cb3870b3de7cc463d7add41" + "reference": "f3e026641cc91909d421802dd3ac7827ebfd97e1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/6b20e2055f7c29b56cb3870b3de7cc463d7add41", - "reference": "6b20e2055f7c29b56cb3870b3de7cc463d7add41", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f3e026641cc91909d421802dd3ac7827ebfd97e1", + "reference": "f3e026641cc91909d421802dd3ac7827ebfd97e1", "shasum": "" }, "require": { @@ -5973,7 +6054,7 @@ "sebastian/code-unit-reverse-lookup": "^2.0.2", "sebastian/complexity": "^2.0", "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0", + "sebastian/lines-of-code": "^1.0.3", "sebastian/version": "^3.0.1", "theseer/tokenizer": "^1.2.0" }, @@ -6019,7 +6100,7 @@ "type": "github" } ], - "time": "2020-10-30T10:46:41+00:00" + "time": "2020-11-28T06:44:49+00:00" }, { "name": "phpunit/php-file-iterator", @@ -6248,16 +6329,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.4.3", + "version": "9.5.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "9fa359ff5ddaa5eb2be2bedb08a6a5787a5807ab" + "reference": "8e16c225d57c3d6808014df6b1dd7598d0a5bbbe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9fa359ff5ddaa5eb2be2bedb08a6a5787a5807ab", - "reference": "9fa359ff5ddaa5eb2be2bedb08a6a5787a5807ab", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/8e16c225d57c3d6808014df6b1dd7598d0a5bbbe", + "reference": "8e16c225d57c3d6808014df6b1dd7598d0a5bbbe", "shasum": "" }, "require": { @@ -6273,7 +6354,7 @@ "phar-io/version": "^3.0.2", "php": ">=7.3", "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2", + "phpunit/php-code-coverage": "^9.2.3", "phpunit/php-file-iterator": "^3.0.5", "phpunit/php-invoker": "^3.1.1", "phpunit/php-text-template": "^2.0.3", @@ -6304,7 +6385,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.4-dev" + "dev-master": "9.5-dev" } }, "autoload": { @@ -6343,7 +6424,7 @@ "type": "github" } ], - "time": "2020-11-10T12:53:30+00:00" + "time": "2020-12-04T05:05:53+00:00" }, { "name": "sebastian/cli-parser", @@ -6879,16 +6960,16 @@ }, { "name": "sebastian/lines-of-code", - "version": "1.0.2", + "version": "1.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "acf76492a65401babcf5283296fa510782783a7a" + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/acf76492a65401babcf5283296fa510782783a7a", - "reference": "acf76492a65401babcf5283296fa510782783a7a", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", "shasum": "" }, "require": { @@ -6928,7 +7009,7 @@ "type": "github" } ], - "time": "2020-10-26T17:03:56+00:00" + "time": "2020-11-28T06:42:11+00:00" }, { "name": "sebastian/object-enumerator", @@ -7290,55 +7371,6 @@ } ], "time": "2020-07-12T23:59:07+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.9.1", - "source": { - "type": "git", - "url": "https://github.com/webmozart/assert.git", - "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389", - "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "phpstan/phpstan": "<0.12.20", - "vimeo/psalm": "<3.9.1" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.36 || ^7.5.13" - }, - "type": "library", - "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], - "time": "2020-07-08T17:02:28+00:00" } ], "aliases": [], diff --git a/database/migrations/2017_11_26_225409_create_videos_table.php b/database/migrations/2017_11_26_225409_create_videos_table.php index 0bc7c339c..aca2f218d 100644 --- a/database/migrations/2017_11_26_225409_create_videos_table.php +++ b/database/migrations/2017_11_26_225409_create_videos_table.php @@ -1,8 +1,8 @@ 0 AND tmp_position < position) THEN SET position = tmp_position; END IF; + SET tmp_position = LOCATE('0', instring); IF (tmp_position > 0 AND tmp_position < position) THEN SET position = tmp_position; END IF; SET tmp_position = LOCATE('1', instring); IF (tmp_position > 0 AND tmp_position < position) THEN SET position = tmp_position; END IF; SET tmp_position = LOCATE('2', instring); IF (tmp_position > 0 AND tmp_position < position) THEN SET position = tmp_position; END IF; SET tmp_position = LOCATE('3', instring); IF (tmp_position > 0 AND tmp_position < position) THEN SET position = tmp_position; END IF; @@ -35,13 +33,13 @@ class CreateNaturalSort extends Migration SET tmp_position = LOCATE('7', instring); IF (tmp_position > 0 AND tmp_position < position) THEN SET position = tmp_position; END IF; SET tmp_position = LOCATE('8', instring); IF (tmp_position > 0 AND tmp_position < position) THEN SET position = tmp_position; END IF; SET tmp_position = LOCATE('9', instring); IF (tmp_position > 0 AND tmp_position < position) THEN SET position = tmp_position; END IF; - + IF (position = 5000) THEN RETURN 0; END IF; RETURN position; END"); - + DB::unprepared("DROP FUNCTION IF EXISTS `udf_NaturalSortFormat`; - CREATE FUNCTION `udf_NaturalSortFormat` (`instring` varchar(4000), `numberLength` int, `sameOrderChars` char(50)) + CREATE FUNCTION `udf_NaturalSortFormat` (`instring` varchar(4000), `numberLength` int, `sameOrderChars` char(50)) RETURNS varchar(4000) LANGUAGE SQL DETERMINISTIC @@ -55,7 +53,7 @@ class CreateNaturalSort extends Migration DECLARE totalPadLength int; DECLARE i int; DECLARE sameOrderCharsLen int; - + SET totalPadLength = 0; SET instring = TRIM(instring); SET sortString = instring; @@ -63,34 +61,34 @@ class CreateNaturalSort extends Migration SET numEndIndex = 0; SET i = 1; SET sameOrderCharsLen = CHAR_LENGTH(sameOrderChars); - + WHILE (i <= sameOrderCharsLen) DO SET sortString = REPLACE(sortString, SUBSTRING(sameOrderChars, i, 1), ' '); SET i = i + 1; END WHILE; - + WHILE (numStartIndex <> 0) DO SET numStartIndex = numStartIndex + numEndIndex; SET numEndIndex = numStartIndex; - + WHILE (udf_FirstNumberPos(SUBSTRING(instring, numEndIndex, 1)) = 1) DO SET numEndIndex = numEndIndex + 1; END WHILE; - + SET numEndIndex = numEndIndex - 1; - + SET padLength = numberLength - (numEndIndex + 1 - numStartIndex); - + IF padLength < 0 THEN SET padLength = 0; END IF; - + SET sortString = INSERT(sortString, numStartIndex + totalPadLength, 0, REPEAT('0', padLength)); - + SET totalPadLength = totalPadLength + padLength; SET numStartIndex = udf_FirstNumberPos(RIGHT(instring, CHAR_LENGTH(instring) - numEndIndex)); END WHILE; - + RETURN sortString; END"); } @@ -102,7 +100,7 @@ class CreateNaturalSort extends Migration */ public function down() { - DB::unprepared("DROP FUNCTION IF EXISTS `udf_FirstNumberPos`"); - DB::unprepared("DROP FUNCTION IF EXISTS `udf_NaturalSortFormat`"); + DB::unprepared('DROP FUNCTION IF EXISTS `udf_FirstNumberPos`'); + DB::unprepared('DROP FUNCTION IF EXISTS `udf_NaturalSortFormat`'); } } diff --git a/database/migrations/2018_03_28_023041_add_basename_to_videos_table.php b/database/migrations/2018_03_28_023041_add_basename_to_videos_table.php index b33e24a5e..6bbec4a11 100644 --- a/database/migrations/2018_03_28_023041_add_basename_to_videos_table.php +++ b/database/migrations/2018_03_28_023041_add_basename_to_videos_table.php @@ -1,8 +1,8 @@ call(VideosTableSeeder::class); diff --git a/database/seeds/VideosTableSeeder.php b/database/seeds/VideosTableSeeder.php index e63379ecb..7af2495ab 100644 --- a/database/seeds/VideosTableSeeder.php +++ b/database/seeds/VideosTableSeeder.php @@ -7,7 +7,8 @@ use Illuminate\Support\Facades\Storage; class VideosTableSeeder extends Seeder { - public function run() { + public function run() + { // Remove any existing rows in Videos table // We want this table to match storage, avoiding the need for reconciliation DB::table('videos')->delete(); diff --git a/package-lock.json b/package-lock.json index 3a9e73c0c..e252a6813 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1035,11 +1035,6 @@ "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", "dev": true }, - "@types/color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" - }, "@types/glob": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", @@ -2651,18 +2646,18 @@ } }, "cross-env": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.2.tgz", - "integrity": "sha512-KZP/bMEOJEDCkDQAyRhu3RL2ZO/SUVrxQVI0G3YEQ+OLbRA3c6zgixe8Mq8a/z7+HKlNEjo8oiLUs8iRijY2Rw==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", "dev": true, "requires": { "cross-spawn": "^7.0.1" } }, "cross-spawn": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", - "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "requires": { "path-key": "^3.1.0", @@ -4826,9 +4821,9 @@ "dev": true }, "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", + "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", "dev": true }, "internal-ip": { @@ -5712,151 +5707,17 @@ } }, "modernizr": { - "version": "3.11.3", - "resolved": "https://registry.npmjs.org/modernizr/-/modernizr-3.11.3.tgz", - "integrity": "sha512-912QnDnkDxs1w1EbFD3btEGI67rssfjWwJsVXpyoLBvHUwr0r8x6KN0IUCZFH/5xnK0000YxI0N3qcqHVzWjcQ==", + "version": "3.11.4", + "resolved": "https://registry.npmjs.org/modernizr/-/modernizr-3.11.4.tgz", + "integrity": "sha512-xLtXwvuOqh4WJEKusCmtWLncNWyyjpWDwR7ak9c0oPkR+00tC/6s51Atxf51NKxmPhfVmtQNHU0gYfbIhzixFg==", "requires": { "doctrine": "^3.0.0", "file": "^0.2.2", - "lodash": "^4.17.15", + "lodash": "^4.17.20", "markdown-it": "^10.0.0", "mkdirp": "0.5.5", "requirejs": "^2.3.6", "yargs": "^15.3.1" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" - }, - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" - }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - } - }, - "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } } }, "move-concurrently": { @@ -7801,9 +7662,9 @@ "dev": true }, "sass": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.29.0.tgz", - "integrity": "sha512-ZpwAUFgnvAUCdkjwPREny+17BpUj8nh5Yr6zKPGtLNTLrmtoRYIjm7njP24COhjJldjwW1dcv52Lpf4tNZVVRA==", + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.30.0.tgz", + "integrity": "sha512-26EUhOXRLaUY7+mWuRFqGeGGNmhB1vblpTENO1Z7mAzzIZeVxZr9EZoaY1kyGLFWdSOZxRMAufiN2mkbO6dAlw==", "dev": true, "requires": { "chokidar": ">=2.0.0 <4.0.0" @@ -9949,7 +9810,6 @@ "version": "15.4.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, "requires": { "cliui": "^6.0.0", "decamelize": "^1.2.0", @@ -9967,14 +9827,12 @@ "ansi-regex": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -9983,7 +9841,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, "requires": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -9994,7 +9851,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "requires": { "color-name": "~1.1.4" } @@ -10002,20 +9858,17 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, "requires": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -10024,14 +9877,12 @@ "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, "locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, "requires": { "p-locate": "^4.1.0" } @@ -10040,7 +9891,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, "requires": { "p-limit": "^2.2.0" } @@ -10048,14 +9898,12 @@ "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" }, "string-width": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -10066,7 +9914,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, "requires": { "ansi-regex": "^5.0.0" } @@ -10075,7 +9922,6 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, "requires": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -10086,7 +9932,6 @@ "version": "18.1.3", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" diff --git a/package.json b/package.json index d70f94e4f..5f672730d 100644 --- a/package.json +++ b/package.json @@ -11,15 +11,15 @@ }, "devDependencies": { "axios": "^0.20", - "cross-env": "^7.0.2", + "cross-env": "^7.0.3", "laravel-mix": "^5.0.9", "lodash": "^4.17.20", "resolve-url-loader": "^3.1.2", - "sass": "^1.29.0", + "sass": "^1.30.0", "sass-loader": "^10.1.0" }, "dependencies": { "jquery": "^3.5.1", - "modernizr": "^3.11.3" + "modernizr": "^3.11.4" } } diff --git a/routes/api.php b/routes/api.php index 4028d89a3..51535fb5f 100644 --- a/routes/api.php +++ b/routes/api.php @@ -9,4 +9,4 @@ | routes are loaded by the RouteServiceProvider within a group which | is assigned the "api" middleware group. Enjoy building your API! | -*/ \ No newline at end of file +*/ diff --git a/routes/channels.php b/routes/channels.php index be669a675..480801e3e 100644 --- a/routes/channels.php +++ b/routes/channels.php @@ -9,4 +9,4 @@ | application supports. The given channel authorization callbacks are | used to check if an authenticated user can listen to the channel. | -*/ \ No newline at end of file +*/ diff --git a/routes/console.php b/routes/console.php index 208b68103..071f4f66d 100644 --- a/routes/console.php +++ b/routes/console.php @@ -9,4 +9,4 @@ | commands. Each Closure is bound to a command instance allowing a | simple approach to interacting with each command's IO methods. | -*/ \ No newline at end of file +*/ diff --git a/tests/Unit/VideoReconcileTest.php b/tests/Unit/VideoReconcileTest.php deleted file mode 100644 index 231267170..000000000 --- a/tests/Unit/VideoReconcileTest.php +++ /dev/null @@ -1,105 +0,0 @@ -command = new VideoReconcileCommand; - $this->video_a = Mockery::mock(Video::class)->makePartial(); - $this->video_b = Mockery::mock(Video::class)->makePartial(); - } - - public function testNoResults() { - $this->assertFalse($this->command->hasResults()); - } - - public function testNoResultsVideoCreated() { - $this->command->created++; - $this->assertTrue($this->command->hasResults()); - } - - public function testNoResultsVideoCreatedFailed() { - $this->command->created_failed++; - $this->assertTrue($this->command->hasResults()); - } - - public function testNoResultsVideoDeleted() { - $this->command->deleted++; - $this->assertTrue($this->command->hasResults()); - } - - public function testNoResultsVideoDeletedFailed() { - $this->command->deleted_failed++; - $this->assertTrue($this->command->hasResults()); - } - - public function testHasChanges() { - $this->assertFalse($this->command->hasChanges()); - } - - public function testHasChangesFailed() { - $this->command->deleted_failed++; - $this->command->created_failed++; - $this->assertFalse($this->command->hasChanges()); - } - - public function testHasChangesCreated() { - $this->command->created++; - $this->assertTrue($this->command->hasChanges()); - } - - public function testHasChangesDeleted() { - $this->command->deleted++; - $this->assertTrue($this->command->hasChanges()); - } - - public function testHasFailures() { - $this->assertFalse($this->command->hasFailures()); - } - - public function testHasFailuresSuccess() { - $this->command->created++; - $this->command->deleted++; - $this->assertFalse($this->command->hasFailures()); - } - - public function testHasFailuresCreated() { - $this->command->created_failed++; - $this->assertTrue($this->command->hasFailures()); - } - - public function testHasFailuresDeleted() { - $this->command->deleted_failed++; - $this->assertTrue($this->command->hasFailures()); - } - - public function testReconciliationString() { - $this->assertEquals(VideoReconcileCommand::reconciliationString($this->video_a), "basename:{$this->video_a->basename},filename:{$this->video_a->filename},path:{$this->video_a->path}"); - } - - public function testCompareVideosEquals() { - $this->assertEquals(VideoReconcileCommand::compareVideos($this->video_a, $this->video_a), 0); - } - - public function testCompareVideosNotEquals() { - $this->assertEquals(VideoReconcileCommand::compareVideos($this->video_a, $this->video_b), 0); - } - - public function tearDown(): void { - parent::tearDown(); - Mockery::close(); - } -}