diff --git a/.php_cs.dist b/.php_cs.dist index 82034f0..601f1a8 100644 --- a/.php_cs.dist +++ b/.php_cs.dist @@ -23,6 +23,8 @@ return PhpCsFixer\Config::create() 'is_null' => ['use_yoda_style' => false], 'no_alias_functions' => true, 'non_printable_character' => ['use_escape_sequences_in_strings' => true], + 'no_unused_imports' => true, + 'php_unit_test_class_requires_covers' => false, ]) ->setFinder( PhpCsFixer\Finder::create() diff --git a/app/Comment.php b/app/Comment.php index 45632bc..fc0609b 100644 --- a/app/Comment.php +++ b/app/Comment.php @@ -2,14 +2,10 @@ namespace App; -use App\Scopes\AuthScope; -use App\Traits\AuthTrait; use Illuminate\Database\Eloquent\Model; class Comment extends Model { - use AuthTrait; - protected $fillable = [ 'text', ]; @@ -29,10 +25,10 @@ class Comment extends Model 'user', ]; - /* relationships */ + // relationships public function post() { - return $this->belongsTo(Post::class, 'post_id', 'id')->withoutGlobalScope(AuthScope::class); + return $this->belongsTo(Post::class, 'post_id', 'id'); } public function user() diff --git a/app/Http/Controllers/CommentController.php b/app/Http/Controllers/CommentController.php index 9ae765f..1bee3a9 100644 --- a/app/Http/Controllers/CommentController.php +++ b/app/Http/Controllers/CommentController.php @@ -5,7 +5,10 @@ use App\Comment; use App\Post; use App\Scopes\AuthScope; +use Illuminate\Database\Eloquent\ModelNotFoundException; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\Gate; use Laravel\Lumen\Routing\Controller as BaseController; class CommentController extends BaseController @@ -23,8 +26,7 @@ public function getAll(Request $request) 'post_id' => 'required|integer|min:1', ]); - return Comment::withoutGlobalScope(AuthScope::class) - ->where('post_id', $request->all()['post_id']) + return Comment::where('post_id', $request->all()['post_id']) ->orderBy('created_at', 'desc') ->get(); } @@ -44,10 +46,11 @@ public function new(Request $request) ]); $postId = $request->all()['post_id']; - Post::withoutGlobalScope(AuthScope::class)->findOrFail($postId); + Post::findOrFail($postId); $comment = new Comment(); $comment->fill($request->all()); + $comment->user_id = Auth::user()->id; $comment->post_id = $postId; $comment->save(); @@ -56,8 +59,12 @@ public function new(Request $request) public function update(Request $request, $id) { - /** @var Comment $comment */ - $comment = Comment::where('id', $id)->first(); + $comment = Comment::find($id); + + if (!Gate::allows('update', $comment)) { + throw new ModelNotFoundException(); + } + $comment->fill($request->all()); $comment->save(); @@ -73,8 +80,12 @@ public function update(Request $request, $id) */ public function delete($id) { - /** @var Comment $comment */ - $comment = Comment::findOrFail($id); + $comment = Comment::find($id); + + if (!Gate::allows('delete', $comment)) { + throw new ModelNotFoundException(); + } + $comment->delete(); return []; @@ -82,7 +93,6 @@ public function delete($id) private function getOne($id) { - return Comment::withoutGlobalScope(AuthScope::class) - ->findOrFail($id); + return Comment::findOrFail($id); } } diff --git a/app/Http/Controllers/PostController.php b/app/Http/Controllers/PostController.php index 9771520..f8c3d49 100644 --- a/app/Http/Controllers/PostController.php +++ b/app/Http/Controllers/PostController.php @@ -4,7 +4,10 @@ use App\Post; use App\Scopes\AuthScope; +use Illuminate\Database\Eloquent\ModelNotFoundException; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\Gate; use Laravel\Lumen\Routing\Controller as BaseController; class PostController extends BaseController @@ -16,8 +19,7 @@ public function get($id) public function getAll() { - return Post::withoutGlobalScope(AuthScope::class) - ->orderBy('created_at', 'desc') + return Post::orderBy('created_at', 'desc') ->get(); } @@ -37,6 +39,7 @@ public function new(Request $request) $post = new Post(); $post->fill($request->all()); + $post->user_id = Auth::user()->id; $post->save(); return $this->getOne($post->id); @@ -44,7 +47,12 @@ public function new(Request $request) public function update(Request $request, $id) { - $post = Post::findOrFail($id); + $post = Post::find($id); + + if (!Gate::allows('update', $post)) { + throw new ModelNotFoundException(); + } + $post->fill($request->all()); $post->save(); @@ -60,7 +68,12 @@ public function update(Request $request, $id) */ public function delete($id) { - $post = Post::findOrFail($id); + $post = Post::find($id); + + if (!Gate::allows('delete', $post)) { + throw new ModelNotFoundException(); + } + $post->delete(); return []; @@ -68,7 +81,6 @@ public function delete($id) private function getOne($id) { - return Post::withoutGlobalScope(AuthScope::class) - ->findOrFail($id); + return Post::findOrFail($id); } } diff --git a/app/Http/Middleware/CORSMiddleware.php b/app/Http/Middleware/CORSMiddleware.php deleted file mode 100644 index b375dce..0000000 --- a/app/Http/Middleware/CORSMiddleware.php +++ /dev/null @@ -1,58 +0,0 @@ -isPreflightRequest($request) ? Response(null, 204) : $next($request); - return $this->addCorsHeaders($request, $response); - } - - /** - * Determine if request is a preflight request. - * - * @param \Illuminate\Http\Request $request - * - * @return bool - */ - protected function isPreflightRequest($request) - { - return $request->isMethod('OPTIONS'); - } - - /** - * Add CORS headers. - * - * @param \Illuminate\Http\Request $request - * @param \Illuminate\Http\Response $response - * @return Response - */ - protected function addCorsHeaders($request, $response) - { - foreach ([ - 'Access-Control-Allow-Origin' => '*', - 'Access-Control-Max-Age' => (60 * 60 * 24), - 'Access-Control-Allow-Headers' => $request->header('Access-Control-Request-Headers'), - 'Access-Control-Allow-Methods' => $request->header('Access-Control-Request-Methods') - ?: 'GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS', - 'Access-Control-Allow-Credentials' => 'true', - ] as $header => $value) { - $response->header($header, $value); - } - - return $response; - } -} diff --git a/app/Policies/CommentPolicy.php b/app/Policies/CommentPolicy.php new file mode 100644 index 0000000..82bf3ab --- /dev/null +++ b/app/Policies/CommentPolicy.php @@ -0,0 +1,33 @@ +id === $comment->user_id; + } + + /** + * Determine if the given comment can be deleted by the user. + * + * @param User $user + * @param Comment $comment + * @return bool + */ + public function delete(User $user, Comment $comment) + { + return $user->id === $comment->user_id; + } +} diff --git a/app/Policies/PostPolicy.php b/app/Policies/PostPolicy.php new file mode 100644 index 0000000..9f29fbf --- /dev/null +++ b/app/Policies/PostPolicy.php @@ -0,0 +1,33 @@ +id === $post->user_id; + } + + /** + * Determine if the given post can be deleted by the user. + * + * @param User $user + * @param Post $post + * @return bool + */ + public function delete(User $user, Post $post) + { + return $user->id === $post->user_id; + } +} diff --git a/app/Post.php b/app/Post.php index 671e2fb..57ba1e8 100644 --- a/app/Post.php +++ b/app/Post.php @@ -2,14 +2,10 @@ namespace App; -use App\Scopes\AuthScope; -use App\Traits\AuthTrait; use Illuminate\Database\Eloquent\Model; class Post extends Model { - use AuthTrait; - protected $fillable = [ 'text', 'title', @@ -36,7 +32,7 @@ class Post extends Model /* relationships */ public function comments() { - return $this->hasMany(Comment::class, 'post_id')->withoutGlobalScope(AuthScope::class); + return $this->hasMany(Comment::class, 'post_id'); } public function user() diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php index abaed5f..01c755b 100644 --- a/app/Providers/AuthServiceProvider.php +++ b/app/Providers/AuthServiceProvider.php @@ -2,8 +2,13 @@ namespace App\Providers; +use App\Comment; +use App\Policies\CommentPolicy; +use App\Policies\PostPolicy; +use App\Post; use App\User; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Gate; use Illuminate\Support\ServiceProvider; class AuthServiceProvider extends ServiceProvider @@ -32,8 +37,11 @@ public function boot() $this->app['auth']->viaRequest('api', function ($request) { /** @var Request $request */ if ($request->header('Authorization')) { - return User::query()->where('token', $request->header('Authorization'))->first(); + return User::where('token', $request->header('Authorization'))->first(); } }); + + Gate::policy(Post::class, PostPolicy::class); + Gate::policy(Comment::class, CommentPolicy::class); } } diff --git a/app/Scopes/AuthScope.php b/app/Scopes/AuthScope.php deleted file mode 100644 index 38acb20..0000000 --- a/app/Scopes/AuthScope.php +++ /dev/null @@ -1,19 +0,0 @@ -where('user_id', $user->id); - } -} \ No newline at end of file diff --git a/app/Traits/AuthTrait.php b/app/Traits/AuthTrait.php deleted file mode 100644 index 44b2431..0000000 --- a/app/Traits/AuthTrait.php +++ /dev/null @@ -1,25 +0,0 @@ -user_id = $user->id; - parent::save($options); - } -} \ No newline at end of file diff --git a/bootstrap/app.php b/bootstrap/app.php index 2ac05d5..0cdcd9d 100644 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -57,10 +57,6 @@ | */ -$app->middleware([ - App\Http\Middleware\CORSMiddleware::class, -]); - $app->routeMiddleware([ 'auth' => App\Http\Middleware\AuthMiddleware::class, ]); diff --git a/composer.lock b/composer.lock index 5334ada..dec081f 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": "e40910418c52a155b898110c80f2ba06", + "content-hash": "04616b2018c0efb63b2e8baa33b67ea1", "packages": [ { "name": "brick/math", @@ -50,6 +50,16 @@ "brick", "math" ], + "support": { + "issues": "https://github.com/brick/math/issues", + "source": "https://github.com/brick/math/tree/0.9.2" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/brick/math", + "type": "tidelift" + } + ], "time": "2021-01-20T22:51:39+00:00" }, { @@ -102,62 +112,21 @@ "stream_filter_append", "stream_filter_register" ], - "time": "2020-10-02T12:38:20+00:00" - }, - { - "name": "composer/package-versions-deprecated", - "version": "1.11.99.1", - "source": { - "type": "git", - "url": "https://github.com/composer/package-versions-deprecated.git", - "reference": "7413f0b55a051e89485c5cb9f765fe24bb02a7b6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/7413f0b55a051e89485c5cb9f765fe24bb02a7b6", - "reference": "7413f0b55a051e89485c5cb9f765fe24bb02a7b6", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.1.0 || ^2.0", - "php": "^7 || ^8" - }, - "replace": { - "ocramius/package-versions": "1.11.99" - }, - "require-dev": { - "composer/composer": "^1.9.3 || ^2.0@dev", - "ext-zip": "^1.13", - "phpunit/phpunit": "^6.5 || ^7" - }, - "type": "composer-plugin", - "extra": { - "class": "PackageVersions\\Installer", - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "PackageVersions\\": "src/PackageVersions" - } + "support": { + "issues": "https://github.com/clue/stream-filter/issues", + "source": "https://github.com/clue/stream-filter/tree/v1.5.0" }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ + "funding": [ { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" + "url": "https://clue.engineering/support", + "type": "custom" }, { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be" + "url": "https://github.com/clue", + "type": "github" } ], - "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", - "time": "2020-11-11T10:22:58+00:00" + "time": "2020-10-02T12:38:20+00:00" }, { "name": "doctrine/cache", @@ -239,6 +208,24 @@ "redis", "xcache" ], + "support": { + "issues": "https://github.com/doctrine/cache/issues", + "source": "https://github.com/doctrine/cache/tree/1.10.x" + }, + "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%2Fcache", + "type": "tidelift" + } + ], "time": "2020-07-07T18:54:01+00:00" }, { @@ -332,6 +319,24 @@ "sqlserver", "sqlsrv" ], + "support": { + "issues": "https://github.com/doctrine/dbal/issues", + "source": "https://github.com/doctrine/dbal/tree/2.12.1" + }, + "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%2Fdbal", + "type": "tidelift" + } + ], "time": "2020-11-14T20:26:58+00:00" }, { @@ -408,6 +413,24 @@ "event system", "events" ], + "support": { + "issues": "https://github.com/doctrine/event-manager/issues", + "source": "https://github.com/doctrine/event-manager/tree/1.1.x" + }, + "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%2Fevent-manager", + "type": "tidelift" + } + ], "time": "2020-05-29T18:28:51+00:00" }, { @@ -485,6 +508,24 @@ "uppercase", "words" ], + "support": { + "issues": "https://github.com/doctrine/inflector/issues", + "source": "https://github.com/doctrine/inflector/tree/2.0.x" + }, + "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%2Finflector", + "type": "tidelift" + } + ], "time": "2020-05-29T15:13:26+00:00" }, { @@ -547,6 +588,24 @@ "parser", "php" ], + "support": { + "issues": "https://github.com/doctrine/lexer/issues", + "source": "https://github.com/doctrine/lexer/tree/1.2.1" + }, + "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%2Flexer", + "type": "tidelift" + } + ], "time": "2020-05-25T17:44:05+00:00" }, { @@ -598,6 +657,16 @@ "cron", "schedule" ], + "support": { + "issues": "https://github.com/dragonmantank/cron-expression/issues", + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.1.0" + }, + "funding": [ + { + "url": "https://github.com/dragonmantank", + "type": "github" + } + ], "time": "2020-11-24T19:55:57+00:00" }, { @@ -656,6 +725,16 @@ "validation", "validator" ], + "support": { + "issues": "https://github.com/egulias/EmailValidator/issues", + "source": "https://github.com/egulias/EmailValidator/tree/2.1.25" + }, + "funding": [ + { + "url": "https://github.com/egulias", + "type": "github" + } + ], "time": "2020-12-29T14:50:06+00:00" }, { @@ -708,20 +787,34 @@ "Result-Type", "result" ], + "support": { + "issues": "https://github.com/GrahamCampbell/Result-Type/issues", + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.0.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", + "type": "tidelift" + } + ], "time": "2020-04-13T13:17:36+00:00" }, { "name": "guzzlehttp/promises", - "version": "1.4.0", + "version": "1.4.1", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "60d379c243457e073cff02bc323a2a86cb355631" + "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/60d379c243457e073cff02bc323a2a86cb355631", - "reference": "60d379c243457e073cff02bc323a2a86cb355631", + "url": "https://api.github.com/repos/guzzle/promises/zipball/8e7d04f1f6450fef59366c399cfad4b9383aa30d", + "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d", "shasum": "" }, "require": { @@ -759,7 +852,11 @@ "keywords": [ "promise" ], - "time": "2020-09-30T07:37:28+00:00" + "support": { + "issues": "https://github.com/guzzle/promises/issues", + "source": "https://github.com/guzzle/promises/tree/1.4.1" + }, + "time": "2021-03-07T09:25:29+00:00" }, { "name": "guzzlehttp/psr7", @@ -830,6 +927,10 @@ "uri", "url" ], + "support": { + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/1.7.0" + }, "time": "2020-09-30T07:37:11+00:00" }, { @@ -880,20 +981,24 @@ "psr-17", "psr-7" ], + "support": { + "issues": "https://github.com/http-interop/http-factory-guzzle/issues", + "source": "https://github.com/http-interop/http-factory-guzzle/tree/master" + }, "time": "2018-07-31T19:32:56+00:00" }, { "name": "illuminate/auth", - "version": "v8.28.1", + "version": "v8.31.0", "source": { "type": "git", "url": "https://github.com/illuminate/auth.git", - "reference": "b7e6ad7fbba6e524b01de55baddc69b2295cd34e" + "reference": "638a1b2111bbbeac9ce500037e77dc52c2453e8e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/auth/zipball/b7e6ad7fbba6e524b01de55baddc69b2295cd34e", - "reference": "b7e6ad7fbba6e524b01de55baddc69b2295cd34e", + "url": "https://api.github.com/repos/illuminate/auth/zipball/638a1b2111bbbeac9ce500037e77dc52c2453e8e", + "reference": "638a1b2111bbbeac9ce500037e77dc52c2453e8e", "shasum": "" }, "require": { @@ -933,20 +1038,24 @@ ], "description": "The Illuminate Auth package.", "homepage": "https://laravel.com", - "time": "2021-02-02T13:42:30+00:00" + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2021-02-22T17:00:32+00:00" }, { "name": "illuminate/broadcasting", - "version": "v8.28.1", + "version": "v8.31.0", "source": { "type": "git", "url": "https://github.com/illuminate/broadcasting.git", - "reference": "0b02b06cb146c4fceceedb226bde37866fd5550e" + "reference": "362a64f9ada48a2197b96dbc17089eb5b40c7b43" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/broadcasting/zipball/0b02b06cb146c4fceceedb226bde37866fd5550e", - "reference": "0b02b06cb146c4fceceedb226bde37866fd5550e", + "url": "https://api.github.com/repos/illuminate/broadcasting/zipball/362a64f9ada48a2197b96dbc17089eb5b40c7b43", + "reference": "362a64f9ada48a2197b96dbc17089eb5b40c7b43", "shasum": "" }, "require": { @@ -960,7 +1069,7 @@ "psr/log": "^1.0" }, "suggest": { - "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^4.0)." + "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^4.0|^5.0)." }, "type": "library", "extra": { @@ -985,11 +1094,15 @@ ], "description": "The Illuminate Broadcasting package.", "homepage": "https://laravel.com", - "time": "2021-02-02T13:42:30+00:00" + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2021-03-02T13:27:16+00:00" }, { "name": "illuminate/bus", - "version": "v8.28.1", + "version": "v8.31.0", "source": { "type": "git", "url": "https://github.com/illuminate/bus.git", @@ -1034,20 +1147,24 @@ ], "description": "The Illuminate Bus package.", "homepage": "https://laravel.com", + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, "time": "2021-01-30T19:50:02+00:00" }, { "name": "illuminate/cache", - "version": "v8.28.1", + "version": "v8.31.0", "source": { "type": "git", "url": "https://github.com/illuminate/cache.git", - "reference": "251f524b01a422e3da51ebead2e75ef90b1ee448" + "reference": "1bee3250741ae14d76f5275d510eb5631e2c13b3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/cache/zipball/251f524b01a422e3da51ebead2e75ef90b1ee448", - "reference": "251f524b01a422e3da51ebead2e75ef90b1ee448", + "url": "https://api.github.com/repos/illuminate/cache/zipball/1bee3250741ae14d76f5275d510eb5631e2c13b3", + "reference": "1bee3250741ae14d76f5275d510eb5631e2c13b3", "shasum": "" }, "require": { @@ -1087,20 +1204,24 @@ ], "description": "The Illuminate Cache package.", "homepage": "https://laravel.com", - "time": "2021-01-24T09:49:02+00:00" + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2021-02-25T15:10:53+00:00" }, { "name": "illuminate/collections", - "version": "v8.28.1", + "version": "v8.31.0", "source": { "type": "git", "url": "https://github.com/illuminate/collections.git", - "reference": "7153004582fb4ab8809a9e491960e250e12a4e7b" + "reference": "ecc881c6dce66e22f2c236374f342d41c7ebeb67" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/collections/zipball/7153004582fb4ab8809a9e491960e250e12a4e7b", - "reference": "7153004582fb4ab8809a9e491960e250e12a4e7b", + "url": "https://api.github.com/repos/illuminate/collections/zipball/ecc881c6dce66e22f2c236374f342d41c7ebeb67", + "reference": "ecc881c6dce66e22f2c236374f342d41c7ebeb67", "shasum": "" }, "require": { @@ -1137,11 +1258,15 @@ ], "description": "The Illuminate Collections package.", "homepage": "https://laravel.com", - "time": "2021-02-15T15:07:11+00:00" + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2021-03-02T13:34:56+00:00" }, { "name": "illuminate/config", - "version": "v8.28.1", + "version": "v8.31.0", "source": { "type": "git", "url": "https://github.com/illuminate/config.git", @@ -1181,20 +1306,24 @@ ], "description": "The Illuminate Config package.", "homepage": "https://laravel.com", + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, "time": "2020-10-27T15:20:30+00:00" }, { "name": "illuminate/console", - "version": "v8.28.1", + "version": "v8.31.0", "source": { "type": "git", "url": "https://github.com/illuminate/console.git", - "reference": "3b10009e10f4187d922c7a2a51cc36c117a3b3cb" + "reference": "38dfe81a5534d259a065d884462dde28d3379c9b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/console/zipball/3b10009e10f4187d922c7a2a51cc36c117a3b3cb", - "reference": "3b10009e10f4187d922c7a2a51cc36c117a3b3cb", + "url": "https://api.github.com/repos/illuminate/console/zipball/38dfe81a5534d259a065d884462dde28d3379c9b", + "reference": "38dfe81a5534d259a065d884462dde28d3379c9b", "shasum": "" }, "require": { @@ -1237,11 +1366,15 @@ ], "description": "The Illuminate Console package.", "homepage": "https://laravel.com", - "time": "2021-02-02T13:42:30+00:00" + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2021-02-26T14:19:51+00:00" }, { "name": "illuminate/container", - "version": "v8.28.1", + "version": "v8.31.0", "source": { "type": "git", "url": "https://github.com/illuminate/container.git", @@ -1284,20 +1417,24 @@ ], "description": "The Illuminate Container package.", "homepage": "https://laravel.com", + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, "time": "2021-02-12T21:15:27+00:00" }, { "name": "illuminate/contracts", - "version": "v8.28.1", + "version": "v8.31.0", "source": { "type": "git", "url": "https://github.com/illuminate/contracts.git", - "reference": "b91459a9a0bd0de204c3cae6859ebd02dbcee6c6" + "reference": "9c7a9868d7485a82663d67109429094c8e4ed56d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/contracts/zipball/b91459a9a0bd0de204c3cae6859ebd02dbcee6c6", - "reference": "b91459a9a0bd0de204c3cae6859ebd02dbcee6c6", + "url": "https://api.github.com/repos/illuminate/contracts/zipball/9c7a9868d7485a82663d67109429094c8e4ed56d", + "reference": "9c7a9868d7485a82663d67109429094c8e4ed56d", "shasum": "" }, "require": { @@ -1328,20 +1465,24 @@ ], "description": "The Illuminate Contracts package.", "homepage": "https://laravel.com", - "time": "2021-01-20T14:18:13+00:00" + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2021-02-26T13:17:03+00:00" }, { "name": "illuminate/database", - "version": "v8.28.1", + "version": "v8.31.0", "source": { "type": "git", "url": "https://github.com/illuminate/database.git", - "reference": "5772eab7f07939c2777cf8e7868c7ec0dd08419f" + "reference": "87dd6cee1eb159dfcba95bd1d2ed59d3f3244b36" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/database/zipball/5772eab7f07939c2777cf8e7868c7ec0dd08419f", - "reference": "5772eab7f07939c2777cf8e7868c7ec0dd08419f", + "url": "https://api.github.com/repos/illuminate/database/zipball/87dd6cee1eb159dfcba95bd1d2ed59d3f3244b36", + "reference": "87dd6cee1eb159dfcba95bd1d2ed59d3f3244b36", "shasum": "" }, "require": { @@ -1392,11 +1533,15 @@ "orm", "sql" ], - "time": "2021-02-15T15:14:26+00:00" + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2021-03-04T13:08:15+00:00" }, { "name": "illuminate/encryption", - "version": "v8.28.1", + "version": "v8.31.0", "source": { "type": "git", "url": "https://github.com/illuminate/encryption.git", @@ -1439,20 +1584,24 @@ ], "description": "The Illuminate Encryption package.", "homepage": "https://laravel.com", + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, "time": "2020-12-04T20:17:36+00:00" }, { "name": "illuminate/events", - "version": "v8.28.1", + "version": "v8.31.0", "source": { "type": "git", "url": "https://github.com/illuminate/events.git", - "reference": "676787d8c54988465e7e7d95f15a7d1a23c2643b" + "reference": "b371a0ddd2cb396a275a60ee85cea062e8a7d30f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/events/zipball/676787d8c54988465e7e7d95f15a7d1a23c2643b", - "reference": "676787d8c54988465e7e7d95f15a7d1a23c2643b", + "url": "https://api.github.com/repos/illuminate/events/zipball/b371a0ddd2cb396a275a60ee85cea062e8a7d30f", + "reference": "b371a0ddd2cb396a275a60ee85cea062e8a7d30f", "shasum": "" }, "require": { @@ -1490,20 +1639,24 @@ ], "description": "The Illuminate Events package.", "homepage": "https://laravel.com", - "time": "2021-02-02T13:42:30+00:00" + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2021-02-26T13:17:03+00:00" }, { "name": "illuminate/filesystem", - "version": "v8.28.1", + "version": "v8.31.0", "source": { "type": "git", "url": "https://github.com/illuminate/filesystem.git", - "reference": "5b71c60764b64e78b943a87691e4465cd7a53698" + "reference": "3195bbfe4c3d908b003f8fe9adc7cb42c024e4d9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/filesystem/zipball/5b71c60764b64e78b943a87691e4465cd7a53698", - "reference": "5b71c60764b64e78b943a87691e4465cd7a53698", + "url": "https://api.github.com/repos/illuminate/filesystem/zipball/3195bbfe4c3d908b003f8fe9adc7cb42c024e4d9", + "reference": "3195bbfe4c3d908b003f8fe9adc7cb42c024e4d9", "shasum": "" }, "require": { @@ -1548,11 +1701,15 @@ ], "description": "The Illuminate Filesystem package.", "homepage": "https://laravel.com", - "time": "2021-02-02T13:47:20+00:00" + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2021-02-23T13:33:04+00:00" }, { "name": "illuminate/hashing", - "version": "v8.28.1", + "version": "v8.31.0", "source": { "type": "git", "url": "https://github.com/illuminate/hashing.git", @@ -1592,20 +1749,24 @@ ], "description": "The Illuminate Hashing package.", "homepage": "https://laravel.com", + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, "time": "2021-01-30T19:50:02+00:00" }, { "name": "illuminate/http", - "version": "v8.28.1", + "version": "v8.31.0", "source": { "type": "git", "url": "https://github.com/illuminate/http.git", - "reference": "36ab5185620657c49075193a0ceff968500d705f" + "reference": "8dabbf02e26cc3a29b6c01ca9c3e2369925d58b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/http/zipball/36ab5185620657c49075193a0ceff968500d705f", - "reference": "36ab5185620657c49075193a0ceff968500d705f", + "url": "https://api.github.com/repos/illuminate/http/zipball/8dabbf02e26cc3a29b6c01ca9c3e2369925d58b6", + "reference": "8dabbf02e26cc3a29b6c01ca9c3e2369925d58b6", "shasum": "" }, "require": { @@ -1646,11 +1807,15 @@ ], "description": "The Illuminate Http package.", "homepage": "https://laravel.com", - "time": "2021-02-15T15:04:20+00:00" + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2021-03-02T00:09:48+00:00" }, { "name": "illuminate/log", - "version": "v8.28.1", + "version": "v8.31.0", "source": { "type": "git", "url": "https://github.com/illuminate/log.git", @@ -1691,11 +1856,15 @@ ], "description": "The Illuminate Log package.", "homepage": "https://laravel.com", + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, "time": "2020-11-16T22:35:48+00:00" }, { "name": "illuminate/macroable", - "version": "v8.28.1", + "version": "v8.31.0", "source": { "type": "git", "url": "https://github.com/illuminate/macroable.git", @@ -1733,20 +1902,24 @@ ], "description": "The Illuminate Macroable package.", "homepage": "https://laravel.com", + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, "time": "2020-10-27T15:20:30+00:00" }, { "name": "illuminate/pagination", - "version": "v8.28.1", + "version": "v8.31.0", "source": { "type": "git", "url": "https://github.com/illuminate/pagination.git", - "reference": "0eab5a1682ac2468011e6a0ff446e94d20c90d80" + "reference": "b14dc1ca164158a86be93714433fb5dfa888217b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/pagination/zipball/0eab5a1682ac2468011e6a0ff446e94d20c90d80", - "reference": "0eab5a1682ac2468011e6a0ff446e94d20c90d80", + "url": "https://api.github.com/repos/illuminate/pagination/zipball/b14dc1ca164158a86be93714433fb5dfa888217b", + "reference": "b14dc1ca164158a86be93714433fb5dfa888217b", "shasum": "" }, "require": { @@ -1779,11 +1952,15 @@ ], "description": "The Illuminate Pagination package.", "homepage": "https://laravel.com", - "time": "2021-02-02T13:42:30+00:00" + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2021-03-04T13:08:15+00:00" }, { "name": "illuminate/pipeline", - "version": "v8.28.1", + "version": "v8.31.0", "source": { "type": "git", "url": "https://github.com/illuminate/pipeline.git", @@ -1823,20 +2000,24 @@ ], "description": "The Illuminate Pipeline package.", "homepage": "https://laravel.com", + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, "time": "2020-10-27T15:20:30+00:00" }, { "name": "illuminate/queue", - "version": "v8.28.1", + "version": "v8.31.0", "source": { "type": "git", "url": "https://github.com/illuminate/queue.git", - "reference": "8921474c8a163b95a46fa551fb12928ecda1ee9d" + "reference": "70aeb38435eec3dcfd0a6d84061caed15b4f38cd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/queue/zipball/8921474c8a163b95a46fa551fb12928ecda1ee9d", - "reference": "8921474c8a163b95a46fa551fb12928ecda1ee9d", + "url": "https://api.github.com/repos/illuminate/queue/zipball/70aeb38435eec3dcfd0a6d84061caed15b4f38cd", + "reference": "70aeb38435eec3dcfd0a6d84061caed15b4f38cd", "shasum": "" }, "require": { @@ -1884,20 +2065,24 @@ ], "description": "The Illuminate Queue package.", "homepage": "https://laravel.com", - "time": "2021-02-16T18:04:38+00:00" + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2021-02-22T17:10:38+00:00" }, { "name": "illuminate/redis", - "version": "v8.28.1", + "version": "v8.31.0", "source": { "type": "git", "url": "https://github.com/illuminate/redis.git", - "reference": "3924a24fcddd1b46543e2fa9ecd4e1b00711ca54" + "reference": "98871d4e432069d961dcb52b2d32ef705a19f626" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/redis/zipball/3924a24fcddd1b46543e2fa9ecd4e1b00711ca54", - "reference": "3924a24fcddd1b46543e2fa9ecd4e1b00711ca54", + "url": "https://api.github.com/repos/illuminate/redis/zipball/98871d4e432069d961dcb52b2d32ef705a19f626", + "reference": "98871d4e432069d961dcb52b2d32ef705a19f626", "shasum": "" }, "require": { @@ -1938,11 +2123,11 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2021-02-02T13:51:51+00:00" + "time": "2021-03-04T13:08:15+00:00" }, { "name": "illuminate/session", - "version": "v8.28.1", + "version": "v8.31.0", "source": { "type": "git", "url": "https://github.com/illuminate/session.git", @@ -1990,20 +2175,24 @@ ], "description": "The Illuminate Session package.", "homepage": "https://laravel.com", + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, "time": "2020-12-08T17:15:16+00:00" }, { "name": "illuminate/support", - "version": "v8.28.1", + "version": "v8.31.0", "source": { "type": "git", "url": "https://github.com/illuminate/support.git", - "reference": "b2f3711b8790de772703e003deb04d5766092b20" + "reference": "978e64ffb68189b70fea77e4d401f43e88fa54ca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/support/zipball/b2f3711b8790de772703e003deb04d5766092b20", - "reference": "b2f3711b8790de772703e003deb04d5766092b20", + "url": "https://api.github.com/repos/illuminate/support/zipball/978e64ffb68189b70fea77e4d401f43e88fa54ca", + "reference": "978e64ffb68189b70fea77e4d401f43e88fa54ca", "shasum": "" }, "require": { @@ -2054,20 +2243,24 @@ ], "description": "The Illuminate Support package.", "homepage": "https://laravel.com", - "time": "2021-02-15T15:06:32+00:00" + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2021-03-04T14:09:31+00:00" }, { "name": "illuminate/testing", - "version": "v8.28.1", + "version": "v8.31.0", "source": { "type": "git", "url": "https://github.com/illuminate/testing.git", - "reference": "86c650de1c8df747d5a27e766c535f459416678d" + "reference": "5aedbd329e2c74e37b52f1267027e9b87e7127eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/testing/zipball/86c650de1c8df747d5a27e766c535f459416678d", - "reference": "86c650de1c8df747d5a27e766c535f459416678d", + "url": "https://api.github.com/repos/illuminate/testing/zipball/5aedbd329e2c74e37b52f1267027e9b87e7127eb", + "reference": "5aedbd329e2c74e37b52f1267027e9b87e7127eb", "shasum": "" }, "require": { @@ -2108,11 +2301,15 @@ ], "description": "The Illuminate Testing package.", "homepage": "https://laravel.com", - "time": "2021-02-15T15:01:29+00:00" + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2021-02-18T15:11:09+00:00" }, { "name": "illuminate/translation", - "version": "v8.28.1", + "version": "v8.31.0", "source": { "type": "git", "url": "https://github.com/illuminate/translation.git", @@ -2156,20 +2353,24 @@ ], "description": "The Illuminate Translation package.", "homepage": "https://laravel.com", + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, "time": "2020-12-13T20:32:54+00:00" }, { "name": "illuminate/validation", - "version": "v8.28.1", + "version": "v8.31.0", "source": { "type": "git", "url": "https://github.com/illuminate/validation.git", - "reference": "44d46fa5a6ca47bb6bc1fee4feed84751b2d9cd2" + "reference": "bf2484815528bb4153ffe8510a2a7df7155e72a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/validation/zipball/44d46fa5a6ca47bb6bc1fee4feed84751b2d9cd2", - "reference": "44d46fa5a6ca47bb6bc1fee4feed84751b2d9cd2", + "url": "https://api.github.com/repos/illuminate/validation/zipball/bf2484815528bb4153ffe8510a2a7df7155e72a9", + "reference": "bf2484815528bb4153ffe8510a2a7df7155e72a9", "shasum": "" }, "require": { @@ -2211,11 +2412,15 @@ ], "description": "The Illuminate Validation package.", "homepage": "https://laravel.com", - "time": "2021-02-02T13:42:30+00:00" + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2021-03-04T15:19:57+00:00" }, { "name": "illuminate/view", - "version": "v8.28.1", + "version": "v8.31.0", "source": { "type": "git", "url": "https://github.com/illuminate/view.git", @@ -2261,28 +2466,36 @@ ], "description": "The Illuminate View package.", "homepage": "https://laravel.com", + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, "time": "2020-11-02T14:01:41+00:00" }, { "name": "jean85/pretty-package-versions", - "version": "1.6.0", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/Jean85/pretty-package-versions.git", - "reference": "1e0104b46f045868f11942aea058cd7186d6c303" + "reference": "b2c4ec2033a0196317a467cb197c7c843b794ddf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/1e0104b46f045868f11942aea058cd7186d6c303", - "reference": "1e0104b46f045868f11942aea058cd7186d6c303", + "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/b2c4ec2033a0196317a467cb197c7c843b794ddf", + "reference": "b2c4ec2033a0196317a467cb197c7c843b794ddf", "shasum": "" }, "require": { - "composer/package-versions-deprecated": "^1.8.0", - "php": "^7.0|^8.0" + "composer-runtime-api": "^2.0.0", + "php": "^7.1|^8.0" }, "require-dev": { - "phpunit/phpunit": "^6.0|^8.5|^9.2" + "friendsofphp/php-cs-fixer": "^2.17", + "jean85/composer-provided-replaced-stub-package": "^1.0", + "phpstan/phpstan": "^0.12.66", + "phpunit/phpunit": "^7.5|^8.5|^9.4", + "vimeo/psalm": "^4.3" }, "type": "library", "extra": { @@ -2305,14 +2518,18 @@ "email": "alessandro.lai85@gmail.com" } ], - "description": "A wrapper for ocramius/package-versions to get pretty versions strings", + "description": "A library to get pretty versions strings of installed dependencies", "keywords": [ "composer", "package", "release", "versions" ], - "time": "2021-02-04T16:20:16+00:00" + "support": { + "issues": "https://github.com/Jean85/pretty-package-versions/issues", + "source": "https://github.com/Jean85/pretty-package-versions/tree/2.0.3" + }, + "time": "2021-02-22T10:52:38+00:00" }, { "name": "laravel/legacy-factories", @@ -2364,6 +2581,10 @@ ], "description": "The legacy version of the Laravel Eloquent factories.", "homepage": "http://laravel.com", + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, "time": "2020-10-27T14:25:32+00:00" }, { @@ -2457,6 +2678,10 @@ "laravel", "lumen" ], + "support": { + "issues": "https://github.com/laravel/lumen-framework/issues", + "source": "https://github.com/laravel/lumen-framework" + }, "time": "2021-02-09T16:42:36+00:00" }, { @@ -2539,13 +2764,27 @@ "logging", "psr-3" ], - "time": "2020-12-14T13:15:25+00:00" - }, - { - "name": "nesbot/carbon", - "version": "2.45.1", - "source": { - "type": "git", + "support": { + "issues": "https://github.com/Seldaek/monolog/issues", + "source": "https://github.com/Seldaek/monolog/tree/2.2.0" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2020-12-14T13:15:25+00:00" + }, + { + "name": "nesbot/carbon", + "version": "2.45.1", + "source": { + "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", "reference": "528783b188bdb853eb21239b1722831e0f000a8d" }, @@ -2618,6 +2857,20 @@ "datetime", "time" ], + "support": { + "issues": "https://github.com/briannesbitt/Carbon/issues", + "source": "https://github.com/briannesbitt/Carbon" + }, + "funding": [ + { + "url": "https://opencollective.com/Carbon", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", + "type": "tidelift" + } + ], "time": "2021-02-11T18:30:17+00:00" }, { @@ -2664,6 +2917,10 @@ "router", "routing" ], + "support": { + "issues": "https://github.com/nikic/FastRoute/issues", + "source": "https://github.com/nikic/FastRoute/tree/master" + }, "time": "2018-02-13T20:26:39+00:00" }, { @@ -2725,6 +2982,10 @@ "serialization", "serialize" ], + "support": { + "issues": "https://github.com/opis/closure/issues", + "source": "https://github.com/opis/closure/tree/3.6.1" + }, "time": "2020-11-07T02:01:34+00:00" }, { @@ -2796,6 +3057,10 @@ "http", "httplug" ], + "support": { + "issues": "https://github.com/php-http/client-common/issues", + "source": "https://github.com/php-http/client-common/tree/2.3.0" + }, "time": "2020-07-21T10:04:13+00:00" }, { @@ -2861,6 +3126,10 @@ "message", "psr7" ], + "support": { + "issues": "https://github.com/php-http/discovery/issues", + "source": "https://github.com/php-http/discovery/tree/1.13.0" + }, "time": "2020-11-27T14:49:42+00:00" }, { @@ -2919,6 +3188,10 @@ "client", "http" ], + "support": { + "issues": "https://github.com/php-http/httplug/issues", + "source": "https://github.com/php-http/httplug/tree/master" + }, "time": "2020-07-13T15:43:23+00:00" }, { @@ -2989,6 +3262,10 @@ "message", "psr-7" ], + "support": { + "issues": "https://github.com/php-http/message/issues", + "source": "https://github.com/php-http/message/tree/1.11.0" + }, "time": "2021-02-01T08:54:58+00:00" }, { @@ -3039,6 +3316,10 @@ "stream", "uri" ], + "support": { + "issues": "https://github.com/php-http/message-factory/issues", + "source": "https://github.com/php-http/message-factory/tree/master" + }, "time": "2015-12-19T14:08:53+00:00" }, { @@ -3092,6 +3373,10 @@ "keywords": [ "promise" ], + "support": { + "issues": "https://github.com/php-http/promise/issues", + "source": "https://github.com/php-http/promise/tree/1.1.0" + }, "time": "2020-07-07T09:29:14+00:00" }, { @@ -3147,31 +3432,40 @@ "php", "type" ], + "support": { + "issues": "https://github.com/schmittjoh/php-option/issues", + "source": "https://github.com/schmittjoh/php-option/tree/1.7.5" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", + "type": "tidelift" + } + ], "time": "2020-07-20T17:29:33+00:00" }, { "name": "psr/container", - "version": "1.0.0", + "version": "1.1.1", "source": { "type": "git", "url": "https://github.com/php-fig/container.git", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=7.2.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, "autoload": { "psr-4": { "Psr\\Container\\": "src/" @@ -3184,7 +3478,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common Container Interface (PHP FIG PSR-11)", @@ -3196,7 +3490,11 @@ "container-interop", "psr" ], - "time": "2017-02-14T16:28:37+00:00" + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/1.1.1" + }, + "time": "2021-03-05T17:36:06+00:00" }, { "name": "psr/event-dispatcher", @@ -3242,6 +3540,10 @@ "psr", "psr-14" ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, "time": "2019-01-08T18:20:26+00:00" }, { @@ -3291,6 +3593,9 @@ "psr", "psr-18" ], + "support": { + "source": "https://github.com/php-fig/http-client/tree/master" + }, "time": "2020-06-29T06:28:15+00:00" }, { @@ -3343,6 +3648,9 @@ "request", "response" ], + "support": { + "source": "https://github.com/php-fig/http-factory/tree/master" + }, "time": "2019-04-30T12:38:16+00:00" }, { @@ -3393,6 +3701,9 @@ "request", "response" ], + "support": { + "source": "https://github.com/php-fig/http-message/tree/master" + }, "time": "2016-08-06T14:39:51+00:00" }, { @@ -3440,6 +3751,9 @@ "psr", "psr-3" ], + "support": { + "source": "https://github.com/php-fig/log/tree/1.1.3" + }, "time": "2020-03-23T09:12:05+00:00" }, { @@ -3488,6 +3802,9 @@ "psr-16", "simple-cache" ], + "support": { + "source": "https://github.com/php-fig/simple-cache/tree/master" + }, "time": "2017-10-23T01:57:42+00:00" }, { @@ -3528,6 +3845,10 @@ } ], "description": "A polyfill for getallheaders.", + "support": { + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" + }, "time": "2019-03-08T08:55:37+00:00" }, { @@ -3591,6 +3912,20 @@ "queue", "set" ], + "support": { + "issues": "https://github.com/ramsey/collection/issues", + "source": "https://github.com/ramsey/collection/tree/1.1.3" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", + "type": "tidelift" + } + ], "time": "2021-01-21T17:40:04+00:00" }, { @@ -3672,6 +4007,17 @@ "identifier", "uuid" ], + "support": { + "issues": "https://github.com/ramsey/uuid/issues", + "rss": "https://github.com/ramsey/uuid/releases.atom", + "source": "https://github.com/ramsey/uuid" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + } + ], "time": "2020-08-18T17:17:46+00:00" }, { @@ -3715,6 +4061,19 @@ "logging", "sentry" ], + "support": { + "source": "https://github.com/getsentry/sentry-php-sdk/tree/3.1.0" + }, + "funding": [ + { + "url": "https://sentry.io/", + "type": "custom" + }, + { + "url": "https://sentry.io/pricing/", + "type": "custom" + } + ], "time": "2020-12-01T10:31:45+00:00" }, { @@ -3805,6 +4164,20 @@ "logging", "sentry" ], + "support": { + "issues": "https://github.com/getsentry/sentry-php/issues", + "source": "https://github.com/getsentry/sentry-php/tree/3.1.5" + }, + "funding": [ + { + "url": "https://sentry.io/", + "type": "custom" + }, + { + "url": "https://sentry.io/pricing/", + "type": "custom" + } + ], "time": "2021-02-18T13:34:31+00:00" }, { @@ -3877,20 +4250,34 @@ "logging", "sentry" ], + "support": { + "issues": "https://github.com/getsentry/sentry-laravel/issues", + "source": "https://github.com/getsentry/sentry-laravel/tree/2.3.1" + }, + "funding": [ + { + "url": "https://sentry.io/", + "type": "custom" + }, + { + "url": "https://sentry.io/pricing/", + "type": "custom" + } + ], "time": "2020-12-07T09:19:29+00:00" }, { "name": "symfony/console", - "version": "v5.2.3", + "version": "v5.2.4", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "89d4b176d12a2946a1ae4e34906a025b7b6b135a" + "reference": "d6d0cc30d8c0fda4e7b213c20509b0159a8f4556" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/89d4b176d12a2946a1ae4e34906a025b7b6b135a", - "reference": "89d4b176d12a2946a1ae4e34906a025b7b6b135a", + "url": "https://api.github.com/repos/symfony/console/zipball/d6d0cc30d8c0fda4e7b213c20509b0159a8f4556", + "reference": "d6d0cc30d8c0fda4e7b213c20509b0159a8f4556", "shasum": "" }, "require": { @@ -3957,7 +4344,24 @@ "console", "terminal" ], - "time": "2021-01-28T22:06:19+00:00" + "support": { + "source": "https://github.com/symfony/console/tree/v5.2.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-02-23T10:08:49+00:00" }, { "name": "symfony/deprecation-contracts", @@ -4007,20 +4411,37 @@ ], "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/master" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2020-09-07T11:33:47+00:00" }, { "name": "symfony/error-handler", - "version": "v5.2.3", + "version": "v5.2.4", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "48f18b3609e120ea66d59142c23dc53e9562c26d" + "reference": "b547d3babcab5c31e01de59ee33e9d9c1421d7d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/48f18b3609e120ea66d59142c23dc53e9562c26d", - "reference": "48f18b3609e120ea66d59142c23dc53e9562c26d", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/b547d3babcab5c31e01de59ee33e9d9c1421d7d0", + "reference": "b547d3babcab5c31e01de59ee33e9d9c1421d7d0", "shasum": "" }, "require": { @@ -4059,20 +4480,37 @@ ], "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", - "time": "2021-01-28T22:06:19+00:00" + "support": { + "source": "https://github.com/symfony/error-handler/tree/v5.2.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-02-11T08:21:20+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v5.2.3", + "version": "v5.2.4", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "4f9760f8074978ad82e2ce854dff79a71fe45367" + "reference": "d08d6ec121a425897951900ab692b612a61d6240" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/4f9760f8074978ad82e2ce854dff79a71fe45367", - "reference": "4f9760f8074978ad82e2ce854dff79a71fe45367", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d08d6ec121a425897951900ab692b612a61d6240", + "reference": "d08d6ec121a425897951900ab692b612a61d6240", "shasum": "" }, "require": { @@ -4127,7 +4565,24 @@ ], "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", - "time": "2021-01-27T10:36:42+00:00" + "support": { + "source": "https://github.com/symfony/event-dispatcher/tree/v5.2.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-02-18T17:12:37+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -4189,20 +4644,37 @@ "interoperability", "standards" ], + "support": { + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.2.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2020-09-07T11:33:47+00:00" }, { "name": "symfony/finder", - "version": "v5.2.3", + "version": "v5.2.4", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "4adc8d172d602008c204c2e16956f99257248e03" + "reference": "0d639a0943822626290d169965804f79400e6a04" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/4adc8d172d602008c204c2e16956f99257248e03", - "reference": "4adc8d172d602008c204c2e16956f99257248e03", + "url": "https://api.github.com/repos/symfony/finder/zipball/0d639a0943822626290d169965804f79400e6a04", + "reference": "0d639a0943822626290d169965804f79400e6a04", "shasum": "" }, "require": { @@ -4233,20 +4705,37 @@ ], "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", - "time": "2021-01-28T22:06:19+00:00" + "support": { + "source": "https://github.com/symfony/finder/tree/v5.2.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-02-15T18:55:04+00:00" }, { "name": "symfony/http-client", - "version": "v5.2.3", + "version": "v5.2.4", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "22cb1a7844fff206cc5186409776e78865405ea5" + "reference": "c7d1f35a31ef153a302e3f80336170e1280b983d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/22cb1a7844fff206cc5186409776e78865405ea5", - "reference": "22cb1a7844fff206cc5186409776e78865405ea5", + "url": "https://api.github.com/repos/symfony/http-client/zipball/c7d1f35a31ef153a302e3f80336170e1280b983d", + "reference": "c7d1f35a31ef153a302e3f80336170e1280b983d", "shasum": "" }, "require": { @@ -4261,7 +4750,7 @@ "php-http/async-client-implementation": "*", "php-http/client-implementation": "*", "psr/http-client-implementation": "1.0", - "symfony/http-client-implementation": "1.1" + "symfony/http-client-implementation": "2.2" }, "require-dev": { "amphp/amp": "^2.5", @@ -4302,7 +4791,24 @@ ], "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", "homepage": "https://symfony.com", - "time": "2021-01-27T10:15:41+00:00" + "support": { + "source": "https://github.com/symfony/http-client/tree/v5.2.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-03-01T00:40:14+00:00" }, { "name": "symfony/http-client-contracts", @@ -4364,20 +4870,37 @@ "interoperability", "standards" ], + "support": { + "source": "https://github.com/symfony/http-client-contracts/tree/v2.3.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2020-10-14T17:08:19+00:00" }, { "name": "symfony/http-foundation", - "version": "v5.2.3", + "version": "v5.2.4", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "20c554c0f03f7cde5ce230ed248470cccbc34c36" + "reference": "54499baea7f7418bce7b5ec92770fd0799e8e9bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/20c554c0f03f7cde5ce230ed248470cccbc34c36", - "reference": "20c554c0f03f7cde5ce230ed248470cccbc34c36", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/54499baea7f7418bce7b5ec92770fd0799e8e9bf", + "reference": "54499baea7f7418bce7b5ec92770fd0799e8e9bf", "shasum": "" }, "require": { @@ -4420,20 +4943,37 @@ ], "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", - "time": "2021-02-03T04:42:09+00:00" - }, - { + "support": { + "source": "https://github.com/symfony/http-foundation/tree/v5.2.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-02-25T17:16:57+00:00" + }, + { "name": "symfony/http-kernel", - "version": "v5.2.3", + "version": "v5.2.4", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "89bac04f29e7b0b52f9fa6a4288ca7a8f90a1a05" + "reference": "c452dbe4f385f030c3957821bf921b13815d6140" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/89bac04f29e7b0b52f9fa6a4288ca7a8f90a1a05", - "reference": "89bac04f29e7b0b52f9fa6a4288ca7a8f90a1a05", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/c452dbe4f385f030c3957821bf921b13815d6140", + "reference": "c452dbe4f385f030c3957821bf921b13815d6140", "shasum": "" }, "require": { @@ -4468,7 +5008,7 @@ "psr/log-implementation": "1.0" }, "require-dev": { - "psr/cache": "~1.0", + "psr/cache": "^1.0|^2.0|^3.0", "symfony/browser-kit": "^4.4|^5.0", "symfony/config": "^5.0", "symfony/console": "^4.4|^5.0", @@ -4515,20 +5055,37 @@ ], "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", - "time": "2021-02-03T04:51:58+00:00" + "support": { + "source": "https://github.com/symfony/http-kernel/tree/v5.2.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-03-04T18:05:55+00:00" }, { "name": "symfony/mime", - "version": "v5.2.3", + "version": "v5.2.4", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "7dee6a43493f39b51ff6c5bb2bd576fe40a76c86" + "reference": "5155d2fe14ef1eb150e3bdbbc1ec1455df95e9cd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/7dee6a43493f39b51ff6c5bb2bd576fe40a76c86", - "reference": "7dee6a43493f39b51ff6c5bb2bd576fe40a76c86", + "url": "https://api.github.com/repos/symfony/mime/zipball/5155d2fe14ef1eb150e3bdbbc1ec1455df95e9cd", + "reference": "5155d2fe14ef1eb150e3bdbbc1ec1455df95e9cd", "shasum": "" }, "require": { @@ -4580,11 +5137,28 @@ "mime", "mime-type" ], - "time": "2021-02-02T06:10:15+00:00" + "support": { + "source": "https://github.com/symfony/mime/tree/v5.2.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-02-15T18:55:04+00:00" }, { "name": "symfony/options-resolver", - "version": "v5.2.3", + "version": "v5.2.4", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", @@ -4632,6 +5206,23 @@ "configuration", "options" ], + "support": { + "source": "https://github.com/symfony/options-resolver/tree/v5.2.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-01-27T12:56:27+00:00" }, { @@ -4694,6 +5285,23 @@ "polyfill", "portable" ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.22.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-01-07T16:49:33+00:00" }, { @@ -4758,6 +5366,23 @@ "portable", "shim" ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.22.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-01-22T09:19:47+00:00" }, { @@ -4828,6 +5453,23 @@ "portable", "shim" ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.22.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-01-22T09:19:47+00:00" }, { @@ -4895,6 +5537,23 @@ "portable", "shim" ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.22.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-01-22T09:19:47+00:00" }, { @@ -4958,6 +5617,23 @@ "portable", "shim" ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.22.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-01-22T09:19:47+00:00" }, { @@ -5017,6 +5693,23 @@ "portable", "shim" ], + "support": { + "source": "https://github.com/symfony/polyfill-php72/tree/v1.22.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-01-07T16:49:33+00:00" }, { @@ -5079,6 +5772,23 @@ "portable", "shim" ], + "support": { + "source": "https://github.com/symfony/polyfill-php73/tree/v1.22.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-01-07T16:49:33+00:00" }, { @@ -5145,6 +5855,23 @@ "portable", "shim" ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.22.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-01-07T16:49:33+00:00" }, { @@ -5207,11 +5934,28 @@ "portable", "uuid" ], + "support": { + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.22.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-01-22T09:19:47+00:00" }, { "name": "symfony/process", - "version": "v5.2.3", + "version": "v5.2.4", "source": { "type": "git", "url": "https://github.com/symfony/process.git", @@ -5252,6 +5996,23 @@ ], "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/v5.2.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2021-01-27T10:15:41+00:00" }, { @@ -5314,20 +6075,37 @@ "interoperability", "standards" ], + "support": { + "source": "https://github.com/symfony/service-contracts/tree/master" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2020-09-07T11:33:47+00:00" }, { "name": "symfony/string", - "version": "v5.2.3", + "version": "v5.2.4", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "c95468897f408dd0aca2ff582074423dd0455122" + "reference": "4e78d7d47061fa183639927ec40d607973699609" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/c95468897f408dd0aca2ff582074423dd0455122", - "reference": "c95468897f408dd0aca2ff582074423dd0455122", + "url": "https://api.github.com/repos/symfony/string/zipball/4e78d7d47061fa183639927ec40d607973699609", + "reference": "4e78d7d47061fa183639927ec40d607973699609", "shasum": "" }, "require": { @@ -5370,30 +6148,47 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "time": "2021-01-25T15:14:59+00:00" + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "source": "https://github.com/symfony/string/tree/v5.2.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-02-16T10:20:28+00:00" }, { "name": "symfony/translation", - "version": "v5.2.3", + "version": "v5.2.4", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "c021864d4354ee55160ddcfd31dc477a1bc77949" + "reference": "74b0353ab34ff4cca827a2cf909e325d96815e60" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/c021864d4354ee55160ddcfd31dc477a1bc77949", - "reference": "c021864d4354ee55160ddcfd31dc477a1bc77949", + "url": "https://api.github.com/repos/symfony/translation/zipball/74b0353ab34ff4cca827a2cf909e325d96815e60", + "reference": "74b0353ab34ff4cca827a2cf909e325d96815e60", "shasum": "" }, "require": { @@ -5410,7 +6205,7 @@ "symfony/yaml": "<4.4" }, "provide": { - "symfony/translation-implementation": "2.0" + "symfony/translation-implementation": "2.3" }, "require-dev": { "psr/log": "~1.0", @@ -5456,7 +6251,24 @@ ], "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", - "time": "2021-01-27T10:15:41+00:00" + "support": { + "source": "https://github.com/symfony/translation/tree/v5.2.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-03-04T15:41:09+00:00" }, { "name": "symfony/translation-contracts", @@ -5517,20 +6329,37 @@ "interoperability", "standards" ], + "support": { + "source": "https://github.com/symfony/translation-contracts/tree/v2.3.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], "time": "2020-09-28T13:05:58+00:00" }, { "name": "symfony/var-dumper", - "version": "v5.2.3", + "version": "v5.2.4", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "72ca213014a92223a5d18651ce79ef441c12b694" + "reference": "6a81fec0628c468cf6d5c87a4d003725e040e223" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/72ca213014a92223a5d18651ce79ef441c12b694", - "reference": "72ca213014a92223a5d18651ce79ef441c12b694", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/6a81fec0628c468cf6d5c87a4d003725e040e223", + "reference": "6a81fec0628c468cf6d5c87a4d003725e040e223", "shasum": "" }, "require": { @@ -5588,7 +6417,24 @@ "debug", "dump" ], - "time": "2021-01-27T10:15:41+00:00" + "support": { + "source": "https://github.com/symfony/var-dumper/tree/v5.2.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-02-18T23:11:19+00:00" }, { "name": "vlucas/phpdotenv", @@ -5654,6 +6500,20 @@ "env", "environment" ], + "support": { + "issues": "https://github.com/vlucas/phpdotenv/issues", + "source": "https://github.com/vlucas/phpdotenv/tree/v5.3.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", + "type": "tidelift" + } + ], "time": "2021-01-20T15:23:13+00:00" }, { @@ -5702,6 +6562,32 @@ "clean", "php" ], + "support": { + "issues": "https://github.com/voku/portable-ascii/issues", + "source": "https://github.com/voku/portable-ascii/tree/1.5.6" + }, + "funding": [ + { + "url": "https://www.paypal.me/moelleken", + "type": "custom" + }, + { + "url": "https://github.com/voku", + "type": "github" + }, + { + "url": "https://opencollective.com/portable-ascii", + "type": "open_collective" + }, + { + "url": "https://www.patreon.com/voku", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii", + "type": "tidelift" + } + ], "time": "2020-11-12T00:07:28+00:00" }, { @@ -5751,22 +6637,26 @@ "check", "validate" ], + "support": { + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.9.1" + }, "time": "2020-07-08T17:02:28+00:00" } ], "packages-dev": [ { "name": "captainhook/captainhook", - "version": "5.4.4", + "version": "5.4.5", "source": { "type": "git", "url": "https://github.com/captainhookphp/captainhook.git", - "reference": "c91b567364f20bc7c3d2db064cd59b4c4c731983" + "reference": "ece43fa22ff8b2cfae0e845c58c1367c547ff181" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/captainhookphp/captainhook/zipball/c91b567364f20bc7c3d2db064cd59b4c4c731983", - "reference": "c91b567364f20bc7c3d2db064cd59b4c4c731983", + "url": "https://api.github.com/repos/captainhookphp/captainhook/zipball/ece43fa22ff8b2cfae0e845c58c1367c547ff181", + "reference": "ece43fa22ff8b2cfae0e845c58c1367c547ff181", "shasum": "" }, "require": { @@ -5827,7 +6717,7 @@ ], "support": { "issues": "https://github.com/captainhookphp/captainhook/issues", - "source": "https://github.com/captainhookphp/captainhook/tree/5.4.4" + "source": "https://github.com/captainhookphp/captainhook/tree/5.4.5" }, "funding": [ { @@ -5835,7 +6725,7 @@ "type": "github" } ], - "time": "2020-12-07T19:38:34+00:00" + "time": "2021-03-05T15:04:36+00:00" }, { "name": "composer/semver", @@ -5983,16 +6873,16 @@ }, { "name": "doctrine/annotations", - "version": "1.12.0", + "version": "1.12.1", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "ebec9b1708c95d7602245c8172773f6b4e0c3be1" + "reference": "b17c5014ef81d212ac539f07a1001832df1b6d3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/ebec9b1708c95d7602245c8172773f6b4e0c3be1", - "reference": "ebec9b1708c95d7602245c8172773f6b4e0c3be1", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/b17c5014ef81d212ac539f07a1001832df1b6d3b", + "reference": "b17c5014ef81d212ac539f07a1001832df1b6d3b", "shasum": "" }, "require": { @@ -6047,9 +6937,9 @@ ], "support": { "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/1.12.0" + "source": "https://github.com/doctrine/annotations/tree/1.12.1" }, - "time": "2021-02-14T13:22:18+00:00" + "time": "2021-02-21T21:00:45+00:00" }, { "name": "doctrine/instantiator", @@ -6100,6 +6990,24 @@ "constructor", "instantiate" ], + "support": { + "issues": "https://github.com/doctrine/instantiator/issues", + "source": "https://github.com/doctrine/instantiator/tree/1.4.0" + }, + "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" }, { @@ -6253,6 +7161,10 @@ "faker", "fixtures" ], + "support": { + "issues": "https://github.com/fzaninotto/Faker/issues", + "source": "https://github.com/fzaninotto/Faker/tree/v1.9.2" + }, "abandoned": true, "time": "2020-12-11T09:56:16+00:00" }, @@ -6301,20 +7213,24 @@ "keywords": [ "test" ], + "support": { + "issues": "https://github.com/hamcrest/hamcrest-php/issues", + "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" + }, "time": "2020-07-09T08:09:16+00:00" }, { "name": "mockery/mockery", - "version": "1.4.2", + "version": "1.4.3", "source": { "type": "git", "url": "https://github.com/mockery/mockery.git", - "reference": "20cab678faed06fac225193be281ea0fddb43b93" + "reference": "d1339f64479af1bee0e82a0413813fe5345a54ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/20cab678faed06fac225193be281ea0fddb43b93", - "reference": "20cab678faed06fac225193be281ea0fddb43b93", + "url": "https://api.github.com/repos/mockery/mockery/zipball/d1339f64479af1bee0e82a0413813fe5345a54ea", + "reference": "d1339f64479af1bee0e82a0413813fe5345a54ea", "shasum": "" }, "require": { @@ -6369,7 +7285,11 @@ "test double", "testing" ], - "time": "2020-08-11T18:10:13+00:00" + "support": { + "issues": "https://github.com/mockery/mockery/issues", + "source": "https://github.com/mockery/mockery/tree/1.4.3" + }, + "time": "2021-02-24T09:51:49+00:00" }, { "name": "myclabs/deep-copy", @@ -6417,6 +7337,16 @@ "object", "object graph" ], + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], "time": "2020-11-13T09:40:50+00:00" }, { @@ -6473,20 +7403,24 @@ } ], "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" + }, "time": "2020-06-27T14:33:11+00:00" }, { "name": "phar-io/version", - "version": "3.0.4", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/phar-io/version.git", - "reference": "e4782611070e50613683d2b9a57730e9a3ba5451" + "reference": "bae7c545bef187884426f042434e561ab1ddb182" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/e4782611070e50613683d2b9a57730e9a3ba5451", - "reference": "e4782611070e50613683d2b9a57730e9a3ba5451", + "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182", + "reference": "bae7c545bef187884426f042434e561ab1ddb182", "shasum": "" }, "require": { @@ -6520,7 +7454,11 @@ } ], "description": "Library for handling version information and constraints", - "time": "2020-12-13T23:18:30+00:00" + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.1.0" + }, + "time": "2021-02-23T14:00:09+00:00" }, { "name": "php-cs-fixer/diff", @@ -6624,6 +7562,10 @@ "reflection", "static analysis" ], + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + }, "time": "2020-06-27T09:03:43+00:00" }, { @@ -6676,6 +7618,10 @@ } ], "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/master" + }, "time": "2020-09-03T19:13:55+00:00" }, { @@ -6721,6 +7667,10 @@ } ], "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/1.4.0" + }, "time": "2020-09-17T18:55:26+00:00" }, { @@ -6784,6 +7734,10 @@ "spy", "stub" ], + "support": { + "issues": "https://github.com/phpspec/prophecy/issues", + "source": "https://github.com/phpspec/prophecy/tree/1.12.2" + }, "time": "2020-12-19T10:15:11+00:00" }, { @@ -6847,6 +7801,16 @@ "testing", "xunit" ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/7.0.14" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], "time": "2020-12-02T13:39:03+00:00" }, { @@ -6897,6 +7861,16 @@ "filesystem", "iterator" ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/2.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], "time": "2020-11-30T08:25:21+00:00" }, { @@ -6938,6 +7912,10 @@ "keywords": [ "template" ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/1.2.1" + }, "time": "2015-06-21T13:50:34+00:00" }, { @@ -6987,6 +7965,16 @@ "keywords": [ "timer" ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/2.1.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], "time": "2020-11-30T08:20:02+00:00" }, { @@ -7036,6 +8024,16 @@ "keywords": [ "tokenizer" ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-token-stream/issues", + "source": "https://github.com/sebastianbergmann/php-token-stream/tree/master" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], "abandoned": true, "time": "2020-08-04T08:28:15+00:00" }, @@ -7120,6 +8118,20 @@ "testing", "xunit" ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "source": "https://github.com/sebastianbergmann/phpunit/tree/8.5.14" + }, + "funding": [ + { + "url": "https://phpunit.de/donate.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], "time": "2021-01-17T07:37:30+00:00" }, { @@ -7165,6 +8177,16 @@ ], "description": "Looks up which function or method a line of code belongs to", "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/1.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], "time": "2020-11-30T08:15:22+00:00" }, { @@ -7229,6 +8251,16 @@ "compare", "equality" ], + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "source": "https://github.com/sebastianbergmann/comparator/tree/3.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], "time": "2020-11-30T08:04:30+00:00" }, { @@ -7285,6 +8317,16 @@ "unidiff", "unified diff" ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "source": "https://github.com/sebastianbergmann/diff/tree/3.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], "time": "2020-11-30T07:59:04+00:00" }, { @@ -7338,6 +8380,16 @@ "environment", "hhvm" ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "source": "https://github.com/sebastianbergmann/environment/tree/4.2.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], "time": "2020-11-30T07:53:42+00:00" }, { @@ -7405,6 +8457,16 @@ "export", "exporter" ], + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "source": "https://github.com/sebastianbergmann/exporter/tree/3.1.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], "time": "2020-11-30T07:47:53+00:00" }, { @@ -7459,6 +8521,16 @@ "keywords": [ "global state" ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "source": "https://github.com/sebastianbergmann/global-state/tree/3.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], "time": "2020-11-30T07:43:24+00:00" }, { @@ -7506,6 +8578,16 @@ ], "description": "Traverses array structures and object graphs to enumerate all referenced objects", "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/3.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], "time": "2020-11-30T07:40:27+00:00" }, { @@ -7551,6 +8633,16 @@ ], "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/1.1.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], "time": "2020-11-30T07:37:18+00:00" }, { @@ -7604,6 +8696,16 @@ ], "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/3.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], "time": "2020-11-30T07:34:24+00:00" }, { @@ -7646,6 +8748,16 @@ ], "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/2.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], "time": "2020-11-30T07:30:19+00:00" }, { @@ -7692,6 +8804,16 @@ ], "description": "Collection of value objects that represent the types of the PHP type system", "homepage": "https://github.com/sebastianbergmann/type", + "support": { + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/1.1.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], "time": "2020-11-30T07:25:11+00:00" }, { @@ -7735,6 +8857,10 @@ ], "description": "Library that helps with managing the version number of Git-hosted PHP projects", "homepage": "https://github.com/sebastianbergmann/version", + "support": { + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/master" + }, "time": "2016-10-03T07:35:21+00:00" }, { @@ -7911,16 +9037,16 @@ }, { "name": "symfony/filesystem", - "version": "v5.2.3", + "version": "v5.2.4", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "262d033b57c73e8b59cd6e68a45c528318b15038" + "reference": "710d364200997a5afde34d9fe57bd52f3cc1e108" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/262d033b57c73e8b59cd6e68a45c528318b15038", - "reference": "262d033b57c73e8b59cd6e68a45c528318b15038", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/710d364200997a5afde34d9fe57bd52f3cc1e108", + "reference": "710d364200997a5afde34d9fe57bd52f3cc1e108", "shasum": "" }, "require": { @@ -7953,7 +9079,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v5.2.3" + "source": "https://github.com/symfony/filesystem/tree/v5.2.4" }, "funding": [ { @@ -7969,7 +9095,7 @@ "type": "tidelift" } ], - "time": "2021-01-27T10:01:46+00:00" + "time": "2021-02-12T10:38:38+00:00" }, { "name": "symfony/polyfill-php70", @@ -8041,7 +9167,7 @@ }, { "name": "symfony/stopwatch", - "version": "v5.2.3", + "version": "v5.2.4", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", @@ -8083,7 +9209,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v5.2.3" + "source": "https://github.com/symfony/stopwatch/tree/v5.2.4" }, "funding": [ { @@ -8139,6 +9265,16 @@ } ], "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" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], "time": "2020-07-12T23:59:07+00:00" } ], diff --git a/config/cache.php b/config/cache.php index c58a75b..7a4e4a8 100644 --- a/config/cache.php +++ b/config/cache.php @@ -3,7 +3,6 @@ use Illuminate\Support\Str; return [ - /* |-------------------------------------------------------------------------- | Default Cache Store @@ -31,7 +30,6 @@ */ 'stores' => [ - 'apc' => [ 'driver' => 'apc', ], @@ -66,7 +64,6 @@ 'driver' => 'redis', 'connection' => env('CACHE_REDIS_CONNECTION', 'default'), ], - ], /* @@ -84,5 +81,4 @@ 'CACHE_PREFIX', Str::slug(env('APP_NAME', 'lumen'), '_') . '_cache' ), - ]; diff --git a/routes/web.php b/routes/web.php index 74ad8c8..5e951a1 100644 --- a/routes/web.php +++ b/routes/web.php @@ -11,7 +11,7 @@ }); $router->get('version', function () { - return response('1.0', 200); + return response('1.0.1', 200); }); $router->post('auth', UserController::class . '@getToken'); diff --git a/tests/CommentTest.php b/tests/CommentTest.php index 5119737..1a6dabd 100644 --- a/tests/CommentTest.php +++ b/tests/CommentTest.php @@ -2,121 +2,132 @@ use App\Comment; use App\Post; -use App\Scopes\AuthScope; +use App\User; use Illuminate\Support\Str; +/** + * @internal + */ class CommentTest extends TestCase { public function testGetCommentsByPostId() { - $user = factory(App\User::class)->create(); - $post = factory(App\Post::class)->create([ - 'user_id' => $user->id + $user = factory(User::class)->create(); + $post = factory(Post::class)->create([ + 'user_id' => $user->id, ]); - $comment = factory(App\Comment::class)->create([ + $comment = factory(Comment::class)->create([ 'user_id' => $user->id, - 'post_id' => $post->id + 'post_id' => $post->id, ]); - $result = Comment::withoutGlobalScope(AuthScope::class)->find($comment->id); + $result = Comment::find($comment->id); - $this->json('GET', '/comments', ['post_id' => $post->id]) + $this->json('GET', 'comments', ['post_id' => $post->id]) ->seeStatusCode(200) ->seeJsonEquals([$result->toArray()]); } - function testCommentEdit() + public function testCommentEdit() { - $user = factory(App\User::class)->create(); - $post = factory(App\Post::class)->create([ - 'user_id' => $user->id + $user = factory(User::class)->create(); + $post = factory(Post::class)->create([ + 'user_id' => $user->id, ]); - $comment = factory(App\Comment::class)->create([ + $comment = factory(Comment::class)->create([ 'user_id' => $user->id, - 'post_id' => $post->id + 'post_id' => $post->id, ]); $newText = Str::random(300); - $this->put('/comments/' . $comment->id, ["text" => $newText]) + $this->put('comments/' . $comment->id, ['text' => $newText]) ->seeStatusCode(401); $this->notSeeInDatabase('comments', ['id' => $comment->id, 'text' => $newText]); $this->actingAs($user); - $this->put('/comments/' . $comment->id, ["text" => $newText]) + $this->put('comments/' . $comment->id, ['text' => $newText]) ->seeStatusCode(200); + $this->put('comments/' . ($comment->id + 1), ['text' => $newText]) + ->seeStatusCode(404); + $this->seeInDatabase('comments', ['id' => $comment->id, 'text' => $newText]); } - function testCommentDelete() + public function testCommentDelete() { - $user = factory(App\User::class)->create(); - $post = factory(App\Post::class)->create([ - 'user_id' => $user->id + $user = factory(User::class)->create(); + $post = factory(Post::class)->create([ + 'user_id' => $user->id, ]); - $comment = factory(App\Comment::class)->create([ + $comment = factory(Comment::class)->create([ 'user_id' => $user->id, - 'post_id' => $post->id + 'post_id' => $post->id, ]); - $this->delete('/comments/' . $comment->id) + $this->delete('comments/' . $comment->id) ->seeStatusCode(401); $this->seeInDatabase('comments', ['id' => $comment->id]); $this->actingAs($user); - $this->delete('/comments/' . $comment->id) + $this->delete('comments/' . $comment->id) ->seeStatusCode(200); $this->notSeeInDatabase('comments', ['id' => $comment->id]); - $this->delete('/comments/' . 1) + $this->delete('comments/' . 1) ->seeStatusCode(404); } - function testCommentNew() + public function testCommentNew() { - $user = factory(App\User::class)->create(); - $post = factory(App\Post::class)->create([ - 'user_id' => $user->id + $user = factory(User::class)->create(); + $post = factory(Post::class)->create([ + 'user_id' => $user->id, ]); $sampleText = Str::random(300); - $this->post('/comments', ['post_id' => $post->id, 'text' => $sampleText]) + $this->post('comments', ['post_id' => $post->id, 'text' => $sampleText]) ->seeStatusCode(401); $this->notSeeInDatabase('comments', ['user_id' => $user->id, 'post_id' => $post->id, 'text' => $sampleText]); $this->actingAs($user); - $this->post('/comments', ['post_id' => $post->id, 'text' => $sampleText]) + $this->post('comments', ['post_id' => $post->id, 'text' => $sampleText]) ->seeStatusCode(200); $this->seeInDatabase('comments', ['user_id' => $user->id, 'post_id' => $post->id, 'text' => $sampleText]); } - function testCommentCoverage() + public function testCommentCoverage() { - $user = factory(App\User::class)->create(); + $user = factory(User::class)->create(); $this->actingAs($user); - $post = factory(App\Post::class)->create(); - $comment = factory(App\Comment::class)->create([ - 'post_id' => $post->id + $post = factory(Post::class)->create([ + 'user_id' => $user->id, + ]); + $comment = factory(Comment::class)->create([ + 'post_id' => $post->id, + 'user_id' => $user->id, ]); - $post = Post::withoutGlobalScope(AuthScope::class)->find($post->id); + $post = Post::find($post->id); $this->assertEquals([$user->toArray()], $comment->user()->get()->toArray()); $this->assertEquals([$post->toArray()], $comment->post()->get()->toArray()); } - function testCommentNewValidation() + public function testCommentNewValidation() { - $user = factory(App\User::class)->create(); + $user = factory(User::class)->create(); $this->actingAs($user); - $post = factory(App\Post::class)->create(); + $post = factory(Post::class)->create([ + 'user_id' => $user->id, + ]); - $this->post('/comments', ['post_id' => $post->id]) + $this->post('comments', ['post_id' => $post->id]) ->seeStatusCode(422); $this->notSeeInDatabase('comments', ['user_id' => $user->id, 'post_id' => $post->id]); - $this->post('/comments', ['post_id' => $post->id, 'text' => 'txt']) + $this->post('comments', ['post_id' => $post->id, 'text' => 'txt']) ->seeStatusCode(200); $this->seeInDatabase('comments', ['user_id' => $user->id, 'text' => 'txt', 'post_id' => $post->id]); } diff --git a/tests/ExceptionsTest.php b/tests/ExceptionsTest.php index 027c8d7..4ff4167 100644 --- a/tests/ExceptionsTest.php +++ b/tests/ExceptionsTest.php @@ -1,11 +1,16 @@ create(); - $response = $this->call('POST', '/users/' . $user->id); + $user = factory(User::class)->create(); + $response = $this->call('POST', 'users/' . $user->id); $this->assertEquals(405, $response->status()); $this->assertEquals('Method Not Allowed.', $response->content()); @@ -13,10 +18,10 @@ public function testMethodNotAllowedEx() public function testErrorEx() { - $user = factory(App\User::class)->create(); - $response = $this->call('POST', '/auth', ['email' => $user->email]); + $user = factory(User::class)->create(); + $response = $this->call('POST', 'auth', ['email' => $user->email]); $this->assertEquals(422, $response->status()); $this->assertEquals('{"password":["The password field is required."]}', $response->content()); } -} \ No newline at end of file +} diff --git a/tests/PostTest.php b/tests/PostTest.php index 78da80a..2a0bacf 100644 --- a/tests/PostTest.php +++ b/tests/PostTest.php @@ -1,126 +1,133 @@ create(); - $post = factory(App\Post::class)->create([ - 'user_id' => $user->id + $user = factory(User::class)->create(); + $post = factory(Post::class)->create([ + 'user_id' => $user->id, ]); - $result = Post::withoutGlobalScope(AuthScope::class)->find($post->id); + $result = Post::find($post->id); - $this->json('GET', '/posts') + $this->get('posts') ->seeStatusCode(200) ->seeJsonEquals([$result->toArray()]); } public function testGetPost() { - $user = factory(App\User::class)->create(); - $post = factory(App\Post::class)->create([ - 'user_id' => $user->id + $user = factory(User::class)->create(); + $post = factory(Post::class)->create([ + 'user_id' => $user->id, ]); - $result = Post::withoutGlobalScope(AuthScope::class)->find($post->id); + $result = Post::find($post->id); - $this->get('/posts/' . $post->id) + $this->get('posts/' . $post->id) ->seeStatusCode(200) ->seeJsonEquals($result->toArray()); } public function testGetNotExistingPost() { - $this->get('/posts/' . 1) + $this->get('posts/1') ->seeStatusCode(404); } - function testPostEdit() + public function testPostEdit() { - $user = factory(App\User::class)->create(); - $post = factory(App\Post::class)->create([ - 'user_id' => $user->id + $user = factory(User::class)->create(); + $post = factory(Post::class)->create([ + 'user_id' => $user->id, ]); $newText = Str::random(300); - $this->put('/posts/' . $post->id, ['text' => $newText]) + $this->put('posts/' . $post->id, ['text' => $newText]) ->seeStatusCode(401); $this->notSeeInDatabase('posts', ['id' => $post->id, 'text' => $newText]); $this->actingAs($user); - $this->put('/posts/' . $post->id, ["text" => $newText]) + $this->put('posts/' . $post->id, ['text' => $newText]) ->seeStatusCode(200); + $this->put('posts/' . ($post->id + 1), ['text' => $newText]) + ->seeStatusCode(404); + $this->seeInDatabase('posts', ['id' => $post->id, 'text' => $newText]); } - function testPostDelete() + public function testPostDelete() { - $user = factory(App\User::class)->create(); - $post = factory(App\Post::class)->create([ - 'user_id' => $user->id + $user = factory(User::class)->create(); + $post = factory(Post::class)->create([ + 'user_id' => $user->id, ]); - $this->delete('/posts/' . $post->id) + $this->delete('posts/' . $post->id) ->seeStatusCode(401); $this->seeInDatabase('posts', ['id' => $post->id]); $this->actingAs($user); - $this->delete('/posts/' . $post->id) + $this->delete('posts/' . $post->id) ->seeStatusCode(200); $this->notSeeInDatabase('posts', ['id' => $post->id]); - $this->delete('/posts/' . 1) + $this->delete('posts/1') ->seeStatusCode(404); } - function testPostNew() + public function testPostNew() { - $user = factory(App\User::class)->create(); + $user = factory(User::class)->create(); $sampleText = Str::random(300); - $this->post('/posts', ['text' => $sampleText, 'title' => 'tit']) + $this->post('posts', ['text' => $sampleText, 'title' => 'tit']) ->seeStatusCode(401); $this->notSeeInDatabase('posts', ['user_id' => $user->id, 'text' => $sampleText]); $this->actingAs($user); - $this->post('/posts', ['text' => $sampleText, 'title' => 'tit']) + $this->post('posts', ['text' => $sampleText, 'title' => 'tit']) ->seeStatusCode(200); $this->seeInDatabase('posts', ['user_id' => $user->id, 'text' => $sampleText]); } - function testPostCoverage() + public function testPostCoverage() { - $user = factory(App\User::class)->create(); + $user = factory(User::class)->create(); $this->actingAs($user); - $post = factory(App\Post::class)->create(); + $post = factory(Post::class)->create([ + 'user_id' => $user->id, + ]); + $this->assertEquals([$user->toArray()], $post->user()->get()->toArray()); } - function testPostNewValidation() + public function testPostNewValidation() { - $user = factory(App\User::class)->create(); + $user = factory(User::class)->create(); $this->actingAs($user); - $this->post('/posts') + $this->post('posts') ->seeStatusCode(422); $this->notSeeInDatabase('posts', ['user_id' => $user->id]); - $this->post('/posts', ['title' => 'tit']) + $this->post('posts', ['title' => 'tit']) ->seeStatusCode(422); $this->notSeeInDatabase('posts', ['user_id' => $user->id]); - - $this->post('/posts', ['text' => 'txt']) + $this->post('posts', ['text' => 'txt']) ->seeStatusCode(422); $this->notSeeInDatabase('posts', ['user_id' => $user->id]); - - $this->post('/posts', ['title' => 'tit', 'text' => 'txt']) + $this->post('posts', ['title' => 'tit', 'text' => 'txt']) ->seeStatusCode(200); $this->seeInDatabase('posts', ['user_id' => $user->id, 'text' => 'txt', 'title' => 'tit']); } diff --git a/tests/UserTest.php b/tests/UserTest.php index 6c3efa5..f1443e7 100644 --- a/tests/UserTest.php +++ b/tests/UserTest.php @@ -2,12 +2,11 @@ use App\Comment; use App\Post; -use App\Scopes\AuthScope; +use App\User; use Illuminate\Support\Facades\Hash; /** * @internal - * @coversNothing */ class UserTest extends TestCase { @@ -16,7 +15,7 @@ public function testNewUser() $email = 'test@example.com'; $pwd = 'password'; - $this->post('/users', ['email' => $email, 'password' => $pwd]) + $this->post('users', ['email' => $email, 'password' => $pwd]) ->seeStatusCode(200); } @@ -25,19 +24,20 @@ public function testDuplicatedUser() $email = 'test@example.com'; $pwd = 'password'; - factory(App\User::class)->create([ + factory(User::class)->create([ 'email' => $email, ]); - $this->post('/users', ['email' => $email, 'password' => $pwd]) + $this->post('users', ['email' => $email, 'password' => $pwd]) ->seeStatusCode(422); } public function testUserUpdate() { - $user = factory(App\User::class)->create(); + $user = factory(User::class)->create(); $email = 'test@example.com'; + $password = 'password'; - $this->put('/users/' . $user->id, ['email' => $email]) + $this->put('users/' . $user->id, ['email' => $email]) ->seeStatusCode(401); /* @@ -46,54 +46,60 @@ public function testUserUpdate() In questo modo รจ possibile testare il funzionamento del meccanismo di autorizzazione via token, senza dover creare un metodo ad-hoc. */ - $this->put('/users/' . $user->id, ['email' => $email], ['Authorization' => $user->token]) + $this->put('users/' . $user->id, [ + 'email' => $email, + 'password' => $password, + ], ['Authorization' => $user->token]) ->seeStatusCode(200); } public function testGetToken() { $password = 'password'; - $user = factory(App\User::class)->create([ + $user = factory(User::class)->create([ 'password' => Hash::make($password), ]); - $this->post('/auth', ['email' => $user->email, 'password' => $password]) + $this->post('auth', ['email' => $user->email, 'password' => $password]) ->seeStatusCode(200) ->seeJsonEquals(['id' => $user->id, 'token' => $user->token]); - $this->post('/auth', ['email' => $user->email, 'password' => 'wrong']) + $this->post('auth', ['email' => $user->email, 'password' => 'wrong']) ->seeStatusCode(401); - $this->post('/auth', ['email' => 'wrong@email.com', 'password' => 'wrong']) + $this->post('auth', ['email' => 'wrong@email.com', 'password' => 'wrong']) ->seeStatusCode(404); } public function testUserControllerCoverage() { - $this->get('/users/' . 1) + $this->get('users/' . 1) ->seeStatusCode(404); - $user = factory(App\User::class)->create(); + $user = factory(User::class)->create(); - $this->get('/users/' . 1) + $this->get('users/' . 1) ->seeStatusCode(200) ->seeJsonEquals($user->toArray()); - $this->get('/users') + $this->get('users') ->seeStatusCode(200) ->seeJsonEquals([$user->toArray()]); } public function testUserCoverage() { - $user = factory(App\User::class)->create(); + $user = factory(User::class)->create(); $this->actingAs($user); - $post = factory(App\Post::class)->create(); - $comment = factory(App\Comment::class)->create([ + $post = factory(Post::class)->create([ + 'user_id' => $user->id, + ]); + $comment = factory(Comment::class)->create([ 'post_id' => $post->id, + 'user_id' => $user->id, ]); - $post = Post::withoutGlobalScope(AuthScope::class)->find($post->id); - $comment = Comment::withoutGlobalScope(AuthScope::class)->find($comment->id); + $post = Post::find($post->id); + $comment = Comment::find($comment->id); $this->assertEquals([$post->toArray()], $user->posts()->get()->toArray()); $this->assertEquals([$comment->toArray()], $user->comments()->get()->toArray()); @@ -101,40 +107,40 @@ public function testUserCoverage() public function testUserNewValidation() { - $this->post('/users') + $this->post('users') ->seeStatusCode(422); - $this->post('/users', ['email' => 'test', 'password' => 'password']) + $this->post('users', ['email' => 'test', 'password' => 'password']) ->seeStatusCode(422); - $this->post('/users', ['email' => 'test@email.com']) + $this->post('users', ['email' => 'test@email.com']) ->seeStatusCode(422); - $this->post('/users', ['email' => 'test@email.com', 'password' => 'password']) + $this->post('users', ['email' => 'test@email.com', 'password' => 'password']) ->seeStatusCode(200); } public function testUserEditValidation() { - factory(App\User::class)->create([ + factory(User::class)->create([ 'email' => 'test@email.com', ]); - $user = factory(App\User::class)->create(); + $user = factory(User::class)->create(); $this->actingAs($user); - $this->put('/users/' . $user->id, ['email' => '']) + $this->put('users/' . $user->id, ['email' => '']) ->seeStatusCode(422); - $this->put('/users/' . $user->id, ['email' => 'test']) + $this->put('users/' . $user->id, ['email' => 'test']) ->seeStatusCode(422); - $this->put('/users/' . $user->id, ['email' => 'test@email.com']) + $this->put('users/' . $user->id, ['email' => 'test@email.com']) ->seeStatusCode(409); - $this->put('/users/' . ($user->id + 1), ['email' => 'foo@bar.com']) + $this->put('users/' . ($user->id + 1), ['email' => 'foo@bar.com']) ->seeStatusCode(404); - $this->put('/users/' . $user->id, ['email' => 'foo@bar.com']) + $this->put('users/' . $user->id, ['email' => 'foo@bar.com']) ->seeStatusCode(200); } }