diff --git a/.circleci/config.yml b/.circleci/config.yml
index 13608790a..b80170c4c 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -7,7 +7,7 @@ jobs:
build:
docker:
# Specify the version you desire here
- - image: cimg/php:7.4.26
+ - image: cimg/php:8.1.12
# Specify service dependencies here if necessary
# CircleCI maintains a library of pre-built images
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b9f060084..12c35cd56 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,33 @@
## [Unreleased](https://github.com/pixelfed/pixelfed/compare/v0.11.4...dev)
+### New Features
+- Portfolios ([#3705](https://github.com/pixelfed/pixelfed/pull/3705))
+- Server Directory ([#3762](https://github.com/pixelfed/pixelfed/pull/3762))
+- Manually verify email address (php artisan user:verifyemail) ([682f5f0f](https://github.com/pixelfed/pixelfed/commit/682f5f0f))
+
+### Updates
+- Update ApiV1Controller, include self likes in favourited_by endpoint ([58b331d2](https://github.com/pixelfed/pixelfed/commit/58b331d2))
+- Update PublicApiController, remove expensive and unused relationships ([2ecc3144](https://github.com/pixelfed/pixelfed/commit/2ecc3144))
+- Update status deletion, fix database lock issues and side effects ([04e8c96a](https://github.com/pixelfed/pixelfed/commit/04e8c96a))
+- Fix remote profile avatar urls when storing locally ([b0422d4f](https://github.com/pixelfed/pixelfed/commit/b0422d4f))
+- Enable network timeline caching by default ([c990ac2a](https://github.com/pixelfed/pixelfed/commit/c990ac2a))
+- Redirect /home to / ([97032997](https://github.com/pixelfed/pixelfed/commit/97032997))
+- Fix 2FA backup code bug ([a231b3c5](https://github.com/pixelfed/pixelfed/commit/a231b3c5))
+- Update federation config, enable remote follows by default ([59702d40](https://github.com/pixelfed/pixelfed/commit/59702d40))
+- Update ApiV1Controller, fix followAccountById with firstOrCreate() ([1d52ad0b](https://github.com/pixelfed/pixelfed/commit/1d52ad0b))
+- Update AccountService, fix delete status ([8b7121f9](https://github.com/pixelfed/pixelfed/commit/8b7121f9))
+- Update ap helpers, fix duplicate entry bug ([85cfa1ba](https://github.com/pixelfed/pixelfed/commit/85cfa1ba))
+- Update Inbox, fix handleUndoActivity ([d660e46b](https://github.com/pixelfed/pixelfed/commit/d660e46b))
+- Update HomeSettings controller, bail earlier when attempting to update email that already exists ([399bf5f8](https://github.com/pixelfed/pixelfed/commit/399bf5f8))
+- Update ProfileController, cache actor object and atom feed ([8665eab1](https://github.com/pixelfed/pixelfed/commit/8665eab1))
+- Update NotificationTransformer, fix mediaTag and modLog types ([b6c06c4b](https://github.com/pixelfed/pixelfed/commit/b6c06c4b))
+- Update landing view, add `app.name` and `app.short_description` for better customizability ([bda9d16b](https://github.com/pixelfed/pixelfed/commit/bda9d16b))
+- Update Profile, fix avatarUrl paths. Fixes #3559 #3634 ([989e4249](https://github.com/pixelfed/pixelfed/commit/989e4249))
+- Update InboxPipeline, bump request timeout from 5s to 60s ([bb120019](https://github.com/pixelfed/pixelfed/commit/bb120019))
+- Update web routes, fix missing hom route ([a9f4ddfc](https://github.com/pixelfed/pixelfed/commit/a9f4ddfc))
+- ([](https://github.com/pixelfed/pixelfed/commit/))
+
## [v0.11.4 (2022-10-04)](https://github.com/pixelfed/pixelfed/compare/v0.11.3...v0.11.4)
### New Features
@@ -94,7 +121,6 @@
- Update CollectionController, limit max title and description length ([6e76cf4b](https://github.com/pixelfed/pixelfed/commit/6e76cf4b))
- Update collection components, fix title/description padding/overflow bug and add title/description limit and input counter ([6e4272a8](https://github.com/pixelfed/pixelfed/commit/6e4272a8))
- Update Media model, fix thumbnail cdn paths ([9888af12](https://github.com/pixelfed/pixelfed/commit/9888af12))
-- ([](https://github.com/pixelfed/pixelfed/commit/))
## [v0.11.3 (2022-05-09)](https://github.com/pixelfed/pixelfed/compare/v0.11.2...v0.11.3)
diff --git a/app/Console/Commands/SendUpdateActor.php b/app/Console/Commands/SendUpdateActor.php
new file mode 100644
index 000000000..369d582a4
--- /dev/null
+++ b/app/Console/Commands/SendUpdateActor.php
@@ -0,0 +1,181 @@
+count();
+ $totalInstanceCount = Instance::count();
+ $this->info('Found ' . $totalUserCount . ' local accounts and ' . $totalInstanceCount . ' remote instances');
+
+ $task = $this->choice(
+ 'What do you want to do?',
+ [
+ 'View top instances',
+ 'Send updates to an instance'
+ ],
+ 0
+ );
+
+ if($task === 'View top instances') {
+ $this->table(
+ ['domain', 'user_count', 'last_synced'],
+ Instance::orderByDesc('user_count')->take(20)->get(['domain', 'user_count', 'actors_last_synced_at'])->toArray()
+ );
+ return Command::SUCCESS;
+ } else {
+ $domain = $this->anticipate('Enter the instance domain', function ($input) {
+ return Instance::where('domain', 'like', '%' . $input . '%')->pluck('domain')->toArray();
+ });
+ if(!$this->confirm('Are you sure you want to send actor updates to ' . $domain . '?')) {
+ return;
+ }
+ if($cur = Instance::whereDomain($domain)->whereNotNull('actors_last_synced_at')->first()) {
+ if(!$this->option('force')) {
+ $this->error('ERROR: Cannot re-sync this instance, it was already synced on ' . $cur->actors_last_synced_at);
+ return;
+ }
+ }
+ $this->touchStorageCache($domain);
+ $this->line(' ');
+ $this->error('Keep this window open during this process or it will not complete!');
+ $sharedInbox = Profile::whereDomain($domain)->whereNotNull('sharedInbox')->first();
+ if(!$sharedInbox) {
+ $this->error('ERROR: Cannot find the sharedInbox of ' . $domain);
+ return;
+ }
+ $url = $sharedInbox->sharedInbox;
+ $this->line(' ');
+ $this->info('Found sharedInbox: ' . $url);
+ $bar = $this->output->createProgressBar($totalUserCount);
+ $bar->start();
+
+ $startCache = $this->getStorageCache($domain);
+ User::whereNull('status')->when($startCache, function($query, $startCache) use($bar) {
+ $bar->advance($startCache);
+ return $query->where('id', '>', $startCache);
+ })->chunk(50, function($users) use($bar, $url, $domain) {
+ foreach($users as $user) {
+ $this->updateStorageCache($domain, $user->id);
+ $profile = Profile::find($user->profile_id);
+ if(!$profile) {
+ continue;
+ }
+ $body = $this->updateObject($profile);
+ try {
+ Helpers::sendSignedObject($profile, $url, $body);
+ } catch (HttpException $e) {
+ continue;
+ }
+ $bar->advance();
+ }
+ });
+ $bar->finish();
+ $this->line(' ');
+ $instance = Instance::whereDomain($domain)->firstOrFail();
+ $instance->actors_last_synced_at = now();
+ $instance->save();
+ $this->info('Finished!');
+ return Command::SUCCESS;
+ }
+
+ return Command::SUCCESS;
+ }
+
+ protected function updateObject($profile)
+ {
+ return [
+ '@context' => [
+ 'https://w3id.org/security/v1',
+ 'https://www.w3.org/ns/activitystreams',
+ [
+ 'manuallyApprovesFollowers' => 'as:manuallyApprovesFollowers',
+ ],
+ ],
+ 'id' => $profile->permalink('#updates/' . time()),
+ 'actor' => $profile->permalink(),
+ 'type' => 'Update',
+ 'object' => $this->actorObject($profile)
+ ];
+ }
+
+ protected function touchStorageCache($domain)
+ {
+ $path = 'actor-update-cache/' . $domain;
+ if(!Storage::exists($path)) {
+ Storage::put($path, "");
+ }
+ }
+
+ protected function getStorageCache($domain)
+ {
+ $path = 'actor-update-cache/' . $domain;
+ return Storage::get($path);
+ }
+
+ protected function updateStorageCache($domain, $value)
+ {
+ $path = 'actor-update-cache/' . $domain;
+ Storage::put($path, $value);
+ }
+
+ protected function actorObject($profile)
+ {
+ $permalink = $profile->permalink();
+ return [
+ 'id' => $permalink,
+ 'type' => 'Person',
+ 'following' => $permalink . '/following',
+ 'followers' => $permalink . '/followers',
+ 'inbox' => $permalink . '/inbox',
+ 'outbox' => $permalink . '/outbox',
+ 'preferredUsername' => $profile->username,
+ 'name' => $profile->name,
+ 'summary' => $profile->bio,
+ 'url' => $profile->url(),
+ 'manuallyApprovesFollowers' => (bool) $profile->is_private,
+ 'publicKey' => [
+ 'id' => $permalink . '#main-key',
+ 'owner' => $permalink,
+ 'publicKeyPem' => $profile->public_key,
+ ],
+ 'icon' => [
+ 'type' => 'Image',
+ 'mediaType' => 'image/jpeg',
+ 'url' => $profile->avatarUrl(),
+ ],
+ 'endpoints' => [
+ 'sharedInbox' => config('app.url') . '/f/inbox'
+ ]
+ ];
+ }
+}
diff --git a/app/Console/Commands/UserVerifyEmail.php b/app/Console/Commands/UserVerifyEmail.php
new file mode 100644
index 000000000..3b3cac5ef
--- /dev/null
+++ b/app/Console/Commands/UserVerifyEmail.php
@@ -0,0 +1,53 @@
+argument('username'))->first();
+
+ if(!$user) {
+ $this->error('Username not found');
+ return;
+ }
+
+ $user->email_verified_at = now();
+ $user->save();
+ $this->info('Successfully verified email address for ' . $user->username);
+ }
+}
diff --git a/app/Http/Controllers/AccountController.php b/app/Http/Controllers/AccountController.php
index 0d3177b9d..89f46e046 100644
--- a/app/Http/Controllers/AccountController.php
+++ b/app/Http/Controllers/AccountController.php
@@ -513,26 +513,25 @@ class AccountController extends Controller
}
}
- protected function twoFactorBackupCheck($request, $code, User $user)
- {
- $backupCodes = $user->{'2fa_backup_codes'};
- if($backupCodes) {
- $codes = json_decode($backupCodes, true);
- foreach ($codes as $c) {
- if(hash_equals($c, $code)) {
- $codes = array_flatten(array_diff($codes, [$code]));
- $user->{'2fa_backup_codes'} = json_encode($codes);
- $user->save();
- $request->session()->push('2fa.session.active', true);
- return true;
- } else {
- return false;
- }
- }
- } else {
- return false;
- }
- }
+ protected function twoFactorBackupCheck($request, $code, User $user)
+ {
+ $backupCodes = $user->{'2fa_backup_codes'};
+ if($backupCodes) {
+ $codes = json_decode($backupCodes, true);
+ foreach ($codes as $c) {
+ if(hash_equals($c, $code)) {
+ $codes = array_flatten(array_diff($codes, [$code]));
+ $user->{'2fa_backup_codes'} = json_encode($codes);
+ $user->save();
+ $request->session()->push('2fa.session.active', true);
+ return true;
+ }
+ }
+ return false;
+ } else {
+ return false;
+ }
+ }
public function accountRestored(Request $request)
{
diff --git a/app/Http/Controllers/Admin/AdminDirectoryController.php b/app/Http/Controllers/Admin/AdminDirectoryController.php
new file mode 100644
index 000000000..1e4db7d2d
--- /dev/null
+++ b/app/Http/Controllers/Admin/AdminDirectoryController.php
@@ -0,0 +1,453 @@
+all())->pluck('name');
+ $res['admins'] = User::whereIsAdmin(true)
+ ->where('2fa_enabled', true)
+ ->get()->map(function($user) {
+ return [
+ 'uid' => (string) $user->id,
+ 'pid' => (string) $user->profile_id,
+ 'username' => $user->username,
+ 'created_at' => $user->created_at
+ ];
+ });
+ $config = ConfigCache::whereK('pixelfed.directory')->first();
+ if($config) {
+ $data = $config->v ? json_decode($config->v, true) : [];
+ $res = array_merge($res, $data);
+ }
+
+ if(empty($res['summary'])) {
+ $summary = ConfigCache::whereK('app.short_description')->pluck('v');
+ $res['summary'] = $summary ? $summary[0] : null;
+ }
+
+ if(isset($res['banner_image']) && !empty($res['banner_image'])) {
+ $res['banner_image'] = url(Storage::url($res['banner_image']));
+ }
+
+ if(isset($res['favourite_posts'])) {
+ $res['favourite_posts'] = collect($res['favourite_posts'])->map(function($id) {
+ return StatusService::get($id);
+ })
+ ->filter(function($post) {
+ return $post && isset($post['account']);
+ })
+ ->values();
+ }
+
+ $res['community_guidelines'] = config_cache('app.rules') ? json_decode(config_cache('app.rules'), true) : [];
+ $res['open_registration'] = (bool) config_cache('pixelfed.open_registration');
+ $res['oauth_enabled'] = (bool) config_cache('pixelfed.oauth_enabled') && file_exists(storage_path('oauth-public.key')) && file_exists(storage_path('oauth-private.key'));
+
+ $res['activitypub_enabled'] = (bool) config_cache('federation.activitypub.enabled');
+
+ $res['feature_config'] = [
+ 'media_types' => Str::of(config_cache('pixelfed.media_types'))->explode(','),
+ 'image_quality' => config_cache('pixelfed.image_quality'),
+ 'optimize_image' => config_cache('pixelfed.optimize_image'),
+ 'max_photo_size' => config_cache('pixelfed.max_photo_size'),
+ 'max_caption_length' => config_cache('pixelfed.max_caption_length'),
+ 'max_altext_length' => config_cache('pixelfed.max_altext_length'),
+ 'enforce_account_limit' => config_cache('pixelfed.enforce_account_limit'),
+ 'max_account_size' => config_cache('pixelfed.max_account_size'),
+ 'max_album_length' => config_cache('pixelfed.max_album_length'),
+ 'account_deletion' => config_cache('pixelfed.account_deletion'),
+ ];
+
+ if(config_cache('pixelfed.directory.testimonials')) {
+ $testimonials = collect(json_decode(config_cache('pixelfed.directory.testimonials'),true))
+ ->map(function($t) {
+ return [
+ 'profile' => AccountService::get($t['profile_id']),
+ 'body' => $t['body']
+ ];
+ });
+ $res['testimonials'] = $testimonials;
+ }
+
+ $validator = Validator::make($res['feature_config'], [
+ 'media_types' => [
+ 'required',
+ function ($attribute, $value, $fail) {
+ if (!in_array('image/jpeg', $value->toArray()) || !in_array('image/png', $value->toArray())) {
+ $fail('You must enable image/jpeg and image/png support.');
+ }
+ },
+ ],
+ 'image_quality' => 'required_if:optimize_image,true|integer|min:75|max:100',
+ 'max_altext_length' => 'required|integer|min:1000|max:5000',
+ 'max_photo_size' => 'required|integer|min:15000|max:100000',
+ 'max_account_size' => 'required_if:enforce_account_limit,true|integer|min:1000000',
+ 'max_album_length' => 'required|integer|min:4|max:20',
+ 'account_deletion' => 'required|accepted',
+ 'max_caption_length' => 'required|integer|min:500|max:10000'
+ ]);
+
+ $res['requirements_validator'] = $validator->errors();
+
+ $res['is_eligible'] = $res['open_registration'] &&
+ $res['oauth_enabled'] &&
+ $res['activitypub_enabled'] &&
+ count($res['requirements_validator']) === 0 &&
+ $this->validVal($res, 'admin') &&
+ $this->validVal($res, 'summary', null, 10) &&
+ $this->validVal($res, 'favourite_posts', 3) &&
+ $this->validVal($res, 'contact_email') &&
+ $this->validVal($res, 'privacy_pledge') &&
+ $this->validVal($res, 'location');
+
+ $res['has_submitted'] = config_cache('pixelfed.directory.has_submitted') ?? false;
+ $res['synced'] = config_cache('pixelfed.directory.is_synced') ?? false;
+ $res['latest_response'] = config_cache('pixelfed.directory.latest_response') ?? null;
+
+ $path = base_path('resources/lang');
+ $langs = collect([]);
+
+ foreach (new \DirectoryIterator($path) as $io) {
+ $name = $io->getFilename();
+ $skip = ['vendor'];
+ if($io->isDot() || in_array($name, $skip)) {
+ continue;
+ }
+
+ if($io->isDir()) {
+ $langs->push(['code' => $name, 'name' => locale_get_display_name($name)]);
+ }
+ }
+
+ $res['available_languages'] = $langs->sortBy('name')->values();
+ $res['primary_locale'] = config('app.locale');
+
+ $submissionState = Http::withoutVerifying()
+ ->post('https://pixelfed.org/api/v1/directory/check-submission', [
+ 'domain' => config('pixelfed.domain.app')
+ ]);
+
+ $res['submission_state'] = $submissionState->json();
+ return $res;
+ }
+
+ protected function validVal($res, $val, $count = false, $minLen = false)
+ {
+ if(!isset($res[$val])) {
+ return false;
+ }
+
+ if($count) {
+ return count($res[$val]) >= $count;
+ }
+
+ if($minLen) {
+ return strlen($res[$val]) >= $minLen;
+ }
+
+ return $res[$val];
+ }
+
+ public function directoryStore(Request $request)
+ {
+ $this->validate($request, [
+ 'location' => 'string|min:1|max:53',
+ 'summary' => 'string|nullable|max:140',
+ 'admin_uid' => 'sometimes|nullable',
+ 'contact_email' => 'sometimes|nullable|email:rfc,dns',
+ 'favourite_posts' => 'array|max:12',
+ 'favourite_posts.*' => 'distinct',
+ 'privacy_pledge' => 'sometimes',
+ 'banner_image' => 'sometimes|mimes:jpg,png|dimensions:width=1920,height:1080|max:5000'
+ ]);
+
+ $config = ConfigCache::firstOrNew([
+ 'k' => 'pixelfed.directory'
+ ]);
+
+ $res = $config->v ? json_decode($config->v, true) : [];
+ $res['summary'] = strip_tags($request->input('summary'));
+ $res['favourite_posts'] = $request->input('favourite_posts');
+ $res['admin'] = (string) $request->input('admin_uid');
+ $res['contact_email'] = $request->input('contact_email');
+ $res['privacy_pledge'] = (bool) $request->input('privacy_pledge');
+
+ if($request->filled('location')) {
+ $exists = (new ISO3166)->name($request->location);
+ if($exists) {
+ $res['location'] = $request->input('location');
+ }
+ }
+
+ if($request->hasFile('banner_image')) {
+ collect(Storage::files('public/headers'))
+ ->filter(function($name) {
+ $protected = [
+ 'public/headers/.gitignore',
+ 'public/headers/default.jpg',
+ 'public/headers/missing.png'
+ ];
+ return !in_array($name, $protected);
+ })
+ ->each(function($name) {
+ Storage::delete($name);
+ });
+ $path = $request->file('banner_image')->store('public/headers');
+ $res['banner_image'] = $path;
+ ConfigCacheService::put('app.banner_image', url(Storage::url($path)));
+
+ Cache::forget('api:v1:instance-data-response-v1');
+ }
+
+ $config->v = json_encode($res);
+ $config->save();
+
+ ConfigCacheService::put('pixelfed.directory', $config->v);
+ $updated = json_decode($config->v, true);
+ if(isset($updated['banner_image'])) {
+ $updated['banner_image'] = url(Storage::url($updated['banner_image']));
+ }
+ return $updated;
+ }
+
+ public function directoryHandleServerSubmission(Request $request)
+ {
+ $reqs = [];
+ $reqs['feature_config'] = [
+ 'open_registration' => config_cache('pixelfed.open_registration'),
+ 'activitypub_enabled' => config_cache('federation.activitypub.enabled'),
+ 'oauth_enabled' => config_cache('pixelfed.oauth_enabled'),
+ 'media_types' => Str::of(config_cache('pixelfed.media_types'))->explode(','),
+ 'image_quality' => config_cache('pixelfed.image_quality'),
+ 'optimize_image' => config_cache('pixelfed.optimize_image'),
+ 'max_photo_size' => config_cache('pixelfed.max_photo_size'),
+ 'max_caption_length' => config_cache('pixelfed.max_caption_length'),
+ 'max_altext_length' => config_cache('pixelfed.max_altext_length'),
+ 'enforce_account_limit' => config_cache('pixelfed.enforce_account_limit'),
+ 'max_account_size' => config_cache('pixelfed.max_account_size'),
+ 'max_album_length' => config_cache('pixelfed.max_album_length'),
+ 'account_deletion' => config_cache('pixelfed.account_deletion'),
+ ];
+
+ $validator = Validator::make($reqs['feature_config'], [
+ 'open_registration' => 'required|accepted',
+ 'activitypub_enabled' => 'required|accepted',
+ 'oauth_enabled' => 'required|accepted',
+ 'media_types' => [
+ 'required',
+ function ($attribute, $value, $fail) {
+ if (!in_array('image/jpeg', $value->toArray()) || !in_array('image/png', $value->toArray())) {
+ $fail('You must enable image/jpeg and image/png support.');
+ }
+ },
+ ],
+ 'image_quality' => 'required_if:optimize_image,true|integer|min:75|max:100',
+ 'max_altext_length' => 'required|integer|min:1000|max:5000',
+ 'max_photo_size' => 'required|integer|min:15000|max:100000',
+ 'max_account_size' => 'required_if:enforce_account_limit,true|integer|min:1000000',
+ 'max_album_length' => 'required|integer|min:4|max:20',
+ 'account_deletion' => 'required|accepted',
+ 'max_caption_length' => 'required|integer|min:500|max:10000'
+ ]);
+
+ if(!$validator->validate()) {
+ return response()->json($validator->errors(), 422);
+ }
+
+ ConfigCacheService::put('pixelfed.directory.submission-key', Str::random(random_int(40, 69)));
+ ConfigCacheService::put('pixelfed.directory.submission-ts', now());
+
+ $data = (new PixelfedDirectoryController())->buildListing();
+ $res = Http::withoutVerifying()->post('https://pixelfed.org/api/v1/directory/submission', $data);
+ return 200;
+ }
+
+ public function directoryDeleteBannerImage(Request $request)
+ {
+ $bannerImage = ConfigCache::whereK('app.banner_image')->first();
+ $directory = ConfigCache::whereK('pixelfed.directory')->first();
+ if(!$bannerImage && !$directory || empty($directory->v)) {
+ return;
+ }
+ $directoryArr = json_decode($directory->v, true);
+ $path = isset($directoryArr['banner_image']) ? $directoryArr['banner_image'] : false;
+ $protected = [
+ 'public/headers/.gitignore',
+ 'public/headers/default.jpg',
+ 'public/headers/missing.png'
+ ];
+ if(!$path || in_array($path, $protected)) {
+ return;
+ }
+ if(Storage::exists($directoryArr['banner_image'])) {
+ Storage::delete($directoryArr['banner_image']);
+ }
+
+ $directoryArr['banner_image'] = 'public/headers/default.jpg';
+ $directory->v = $directoryArr;
+ $directory->save();
+ $bannerImage->v = url(Storage::url('public/headers/default.jpg'));
+ $bannerImage->save();
+ Cache::forget('api:v1:instance-data-response-v1');
+ ConfigCacheService::put('pixelfed.directory', $directory);
+ return $bannerImage->v;
+ }
+
+ public function directoryGetPopularPosts(Request $request)
+ {
+ $ids = Cache::remember('admin:api:popular_posts', 86400, function() {
+ return Status::whereLocal(true)
+ ->whereScope('public')
+ ->whereType('photo')
+ ->whereNull(['in_reply_to_id', 'reblog_of_id'])
+ ->orderByDesc('likes_count')
+ ->take(50)
+ ->pluck('id');
+ });
+
+ $res = $ids->map(function($id) {
+ return StatusService::get($id);
+ })
+ ->filter(function($post) {
+ return $post && isset($post['account']);
+ })
+ ->values();
+
+ return response()->json($res, 200, [], JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES);
+ }
+
+ public function directoryGetAddPostByIdSearch(Request $request)
+ {
+ $this->validate($request, [
+ 'q' => 'required|integer'
+ ]);
+
+ $id = $request->input('q');
+
+ $status = Status::whereLocal(true)
+ ->whereType('photo')
+ ->whereNull(['in_reply_to_id', 'reblog_of_id'])
+ ->findOrFail($id);
+
+ $res = StatusService::get($status->id);
+
+ return $res;
+ }
+
+ public function directoryDeleteTestimonial(Request $request)
+ {
+ $this->validate($request, [
+ 'profile_id' => 'required',
+ ]);
+ $profile_id = $request->input('profile_id');
+ $testimonials = ConfigCache::whereK('pixelfed.directory.testimonials')->firstOrFail();
+ $existing = collect(json_decode($testimonials->v, true))
+ ->filter(function($t) use($profile_id) {
+ return $t['profile_id'] !== $profile_id;
+ })
+ ->values();
+ ConfigCacheService::put('pixelfed.directory.testimonials', $existing);
+ return $existing;
+ }
+
+ public function directorySaveTestimonial(Request $request)
+ {
+ $this->validate($request, [
+ 'username' => 'required',
+ 'body' => 'required|string|min:5|max:500'
+ ]);
+
+ $user = User::whereUsername($request->input('username'))->whereNull('status')->firstOrFail();
+
+ $configCache = ConfigCache::firstOrCreate([
+ 'k' => 'pixelfed.directory.testimonials'
+ ]);
+
+ $testimonials = $configCache->v ? collect(json_decode($configCache->v, true)) : collect([]);
+
+ abort_if($testimonials->contains('profile_id', $user->profile_id), 422, 'Testimonial already exists');
+ abort_if($testimonials->count() == 10, 422, 'You can only have 10 active testimonials');
+
+ $testimonials->push([
+ 'profile_id' => (string) $user->profile_id,
+ 'username' => $request->input('username'),
+ 'body' => $request->input('body')
+ ]);
+
+ $configCache->v = json_encode($testimonials->toArray());
+ $configCache->save();
+ ConfigCacheService::put('pixelfed.directory.testimonials', $configCache->v);
+ $res = [
+ 'profile' => AccountService::get($user->profile_id),
+ 'body' => $request->input('body')
+ ];
+ return $res;
+ }
+
+ public function directoryUpdateTestimonial(Request $request)
+ {
+ $this->validate($request, [
+ 'profile_id' => 'required',
+ 'body' => 'required|string|min:5|max:500'
+ ]);
+
+ $profile_id = $request->input('profile_id');
+ $body = $request->input('body');
+ $user = User::whereProfileId($profile_id)->firstOrFail();
+
+ $configCache = ConfigCache::firstOrCreate([
+ 'k' => 'pixelfed.directory.testimonials'
+ ]);
+
+ $testimonials = $configCache->v ? collect(json_decode($configCache->v, true)) : collect([]);
+
+ $updated = $testimonials->map(function($t) use($profile_id, $body) {
+ if($t['profile_id'] == $profile_id) {
+ $t['body'] = $body;
+ }
+ return $t;
+ })
+ ->values();
+
+ $configCache->v = json_encode($updated);
+ $configCache->save();
+ ConfigCacheService::put('pixelfed.directory.testimonials', $configCache->v);
+
+ return $updated;
+ }
+}
diff --git a/app/Http/Controllers/Admin/AdminReportController.php b/app/Http/Controllers/Admin/AdminReportController.php
index 575342d66..59ae9dfe9 100644
--- a/app/Http/Controllers/Admin/AdminReportController.php
+++ b/app/Http/Controllers/Admin/AdminReportController.php
@@ -290,7 +290,7 @@ trait AdminReportController
->save();
Cache::forget('profiles:private');
- DeleteAccountPipeline::dispatch($user)->onQueue('high');
+ DeleteAccountPipeline::dispatch($user);
return;
}
diff --git a/app/Http/Controllers/Admin/AdminUserController.php b/app/Http/Controllers/Admin/AdminUserController.php
index 4695d6991..766299097 100644
--- a/app/Http/Controllers/Admin/AdminUserController.php
+++ b/app/Http/Controllers/Admin/AdminUserController.php
@@ -222,7 +222,7 @@ trait AdminUserController
->save();
Cache::forget('profiles:private');
- DeleteAccountPipeline::dispatch($user)->onQueue('high');
+ DeleteAccountPipeline::dispatch($user);
$msg = "Successfully deleted {$user->username}!";
$request->session()->flash('status', $msg);
@@ -294,4 +294,4 @@ trait AdminUserController
$request->session()->flash('status', $msg);
return redirect('/i/admin/users/modlogs/' . $user->id);
}
-}
\ No newline at end of file
+}
diff --git a/app/Http/Controllers/AdminController.php b/app/Http/Controllers/AdminController.php
index 37e3a7c0d..8a6f019ef 100644
--- a/app/Http/Controllers/AdminController.php
+++ b/app/Http/Controllers/AdminController.php
@@ -20,6 +20,7 @@ use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Redis;
use App\Http\Controllers\Admin\{
+ AdminDirectoryController,
AdminDiscoverController,
AdminInstanceController,
AdminReportController,
@@ -40,6 +41,7 @@ use App\Models\CustomEmoji;
class AdminController extends Controller
{
use AdminReportController,
+ AdminDirectoryController,
AdminDiscoverController,
// AdminGroupsController,
AdminMediaController,
diff --git a/app/Http/Controllers/Api/ApiV1Controller.php b/app/Http/Controllers/Api/ApiV1Controller.php
index 8eb1f43e4..d2c8b2028 100644
--- a/app/Http/Controllers/Api/ApiV1Controller.php
+++ b/app/Http/Controllers/Api/ApiV1Controller.php
@@ -8,7 +8,7 @@ use Illuminate\Support\Str;
use App\Util\ActivityPub\Helpers;
use App\Util\Media\Filter;
use Laravel\Passport\Passport;
-use Auth, Cache, DB, URL;
+use Auth, Cache, DB, Storage, URL;
use App\{
Avatar,
Bookmark,
@@ -692,10 +692,10 @@ class ApiV1Controller extends Controller
(new FollowerController())->sendFollow($user->profile, $target);
}
} else {
- $follower = new Follower();
- $follower->profile_id = $user->profile_id;
- $follower->following_id = $target->id;
- $follower->save();
+ $follower = Follower::firstOrCreate([
+ 'profile_id' => $user->profile_id,
+ 'following_id' => $target->id
+ ]);
if($remote == true && config('federation.activitypub.remoteFollow') == true) {
(new FollowerController())->sendFollow($user->profile, $target);
@@ -1375,7 +1375,7 @@ class ApiV1Controller extends Controller
'streaming_api' => 'wss://' . config('pixelfed.domain.app')
],
'stats' => $stats,
- 'thumbnail' => url('img/pixelfed-icon-color.png'),
+ 'thumbnail' => config_cache('app.banner_image') ?? url(Storage::url('public/headers/default.jpg')),
'languages' => [config('app.locale')],
'registrations' => (bool) config_cache('pixelfed.open_registration'),
'approval_required' => false,
@@ -2449,12 +2449,12 @@ class ApiV1Controller extends Controller
->limit($limit)
->get()
->map(function($like) {
- $account = AccountService::getMastodon($like->profile_id);
+ $account = AccountService::getMastodon($like->profile_id, true);
$account['follows'] = isset($like->created_at);
return $account;
})
->filter(function($account) use($user) {
- return $account && isset($account['id']) && $account['id'] != $user->profile_id;
+ return $account && isset($account['id']);
})
->values();
@@ -3023,7 +3023,7 @@ class ApiV1Controller extends Controller
}
if($sortBy == 'all' && !$request->has('cursor')) {
- $ids = Cache::remember('status:replies:all:' . $id, 86400, function() use($id) {
+ $ids = Cache::remember('status:replies:all:' . $id, 3600, function() use($id) {
return DB::table('statuses')
->where('in_reply_to_id', $id)
->orderBy('id')
@@ -3058,8 +3058,15 @@ class ApiV1Controller extends Controller
$status['favourited'] = LikeService::liked($pid, $post->id);
return $status;
})
+ ->map(function($post) {
+ if(isset($post['account']) && isset($post['account']['id'])) {
+ $account = AccountService::get($post['account']['id'], true);
+ $post['account'] = $account;
+ }
+ return $post;
+ })
->filter(function($post) {
- return $post && isset($post['id']) && isset($post['account']);
+ return $post && isset($post['id']) && isset($post['account']) && isset($post['account']['id']);
})
->values();
@@ -3109,7 +3116,7 @@ class ApiV1Controller extends Controller
});
$ids = $ids->map(function($profile) {
- return AccountService::getMastodon($profile->id, true);
+ return AccountService::get($profile->id, true);
})
->filter(function($profile) use($pid) {
return $profile && isset($profile['id']);
diff --git a/app/Http/Controllers/Api/BaseApiController.php b/app/Http/Controllers/Api/BaseApiController.php
index ce78c74e6..9dd84aa0b 100644
--- a/app/Http/Controllers/Api/BaseApiController.php
+++ b/app/Http/Controllers/Api/BaseApiController.php
@@ -90,7 +90,7 @@ class BaseApiController extends Controller
if(empty($res) && !Cache::has('pf:services:notifications:hasSynced:'.$pid)) {
Cache::put('pf:services:notifications:hasSynced:'.$pid, 1, 1209600);
- NotificationService::warmCache($pid, 400, true);
+ NotificationService::warmCache($pid, 100, true);
}
return response()->json($res);
diff --git a/app/Http/Controllers/FederationController.php b/app/Http/Controllers/FederationController.php
index 0a8254cbc..87a393545 100644
--- a/app/Http/Controllers/FederationController.php
+++ b/app/Http/Controllers/FederationController.php
@@ -96,17 +96,18 @@ class FederationController extends Controller
abort_if(!config_cache('federation.activitypub.enabled'), 404);
abort_if(!config('federation.activitypub.outbox'), 404);
- $profile = Profile::whereNull('domain')
- ->whereNull('status')
- ->whereIsPrivate(false)
- ->whereUsername($username)
- ->firstOrFail();
+ // $profile = Profile::whereNull('domain')
+ // ->whereNull('status')
+ // ->whereIsPrivate(false)
+ // ->whereUsername($username)
+ // ->firstOrFail();
- $key = 'ap:outbox:latest_10:pid:' . $profile->id;
- $ttl = now()->addMinutes(15);
- $res = Cache::remember($key, $ttl, function() use($profile) {
- return Outbox::get($profile);
- });
+ // $key = 'ap:outbox:latest_10:pid:' . $profile->id;
+ // $ttl = now()->addMinutes(15);
+ // $res = Cache::remember($key, $ttl, function() use($profile) {
+ // return Outbox::get($profile);
+ // });
+ $res = [];
return response(json_encode($res, JSON_UNESCAPED_SLASHES))->header('Content-Type', 'application/activity+json');
}
@@ -124,6 +125,7 @@ class FederationController extends Controller
if(!isset($obj['id'])) {
return;
}
+ usleep(5000);
$lockKey = 'pf:ap:del-lock:' . hash('sha256', $obj['id']);
if( isset($obj['actor']) &&
isset($obj['object']) &&
@@ -140,6 +142,15 @@ class FederationController extends Controller
Cache::put($lockKey, 1, 3600);
dispatch(new DeleteWorker($headers, $payload))->onQueue('delete');
} else {
+ if(!isset($obj['id'])) {
+ return;
+ }
+ usleep(5000);
+ $lockKey = 'pf:ap:user-inbox:activity:' . hash('sha256', $obj['id']);
+ if(Cache::get($lockKey) !== null) {
+ return;
+ }
+ Cache::put($lockKey, 1, 3600);
dispatch(new InboxValidator($username, $headers, $payload))->onQueue('high');
}
return;
diff --git a/app/Http/Controllers/PixelfedDirectoryController.php b/app/Http/Controllers/PixelfedDirectoryController.php
new file mode 100644
index 000000000..6290cd398
--- /dev/null
+++ b/app/Http/Controllers/PixelfedDirectoryController.php
@@ -0,0 +1,167 @@
+filled('sk')) {
+ abort(404);
+ }
+
+ if(!config_cache('pixelfed.directory.submission-key')) {
+ abort(404);
+ }
+
+ if(!hash_equals(config_cache('pixelfed.directory.submission-key'), $request->input('sk'))) {
+ abort(403);
+ }
+
+ $res = $this->buildListing();
+ return response()->json($res, 200, [], JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES);
+ }
+
+ public function buildListing()
+ {
+ $res = config_cache('pixelfed.directory');
+ if($res) {
+ $res = is_string($res) ? json_decode($res, true) : $res;
+ }
+
+ $res['_domain'] = config_cache('pixelfed.domain.app');
+ $res['_sk'] = config_cache('pixelfed.directory.submission-key');
+ $res['_ts'] = config_cache('pixelfed.directory.submission-ts');
+ $res['version'] = config_cache('pixelfed.version');
+
+ if(empty($res['summary'])) {
+ $summary = ConfigCache::whereK('app.short_description')->pluck('v');
+ $res['summary'] = $summary ? $summary[0] : null;
+ }
+
+ if(isset($res['admin'])) {
+ $res['admin'] = AccountService::get($res['admin'], true);
+ }
+
+ if(isset($res['banner_image']) && !empty($res['banner_image'])) {
+ $res['banner_image'] = url(Storage::url($res['banner_image']));
+ }
+
+ if(isset($res['favourite_posts'])) {
+ $res['favourite_posts'] = collect($res['favourite_posts'])->map(function($id) {
+ return StatusService::get($id);
+ })
+ ->filter(function($post) {
+ return $post && isset($post['account']);
+ })
+ ->map(function($post) {
+ return [
+ 'avatar' => $post['account']['avatar'],
+ 'display_name' => $post['account']['display_name'],
+ 'username' => $post['account']['username'],
+ 'media' => $post['media_attachments'][0]['url'],
+ 'url' => $post['url']
+ ];
+ })
+ ->values();
+ }
+
+ $guidelines = ConfigCache::whereK('app.rules')->first();
+ if($guidelines) {
+ $res['community_guidelines'] = json_decode($guidelines->v, true);
+ }
+
+ $openRegistration = ConfigCache::whereK('pixelfed.open_registration')->first();
+ if($openRegistration) {
+ $res['open_registration'] = (bool) $openRegistration;
+ }
+
+ $oauthEnabled = ConfigCache::whereK('pixelfed.oauth_enabled')->first();
+ if($oauthEnabled) {
+ $keys = file_exists(storage_path('oauth-public.key')) && file_exists(storage_path('oauth-private.key'));
+ $res['oauth_enabled'] = (bool) $oauthEnabled && $keys;
+ }
+
+ $activityPubEnabled = ConfigCache::whereK('federation.activitypub.enabled')->first();
+ if($activityPubEnabled) {
+ $res['activitypub_enabled'] = (bool) $activityPubEnabled;
+ }
+
+ $res['feature_config'] = [
+ 'media_types' => Str::of(config_cache('pixelfed.media_types'))->explode(','),
+ 'image_quality' => config_cache('pixelfed.image_quality'),
+ 'optimize_image' => config_cache('pixelfed.optimize_image'),
+ 'max_photo_size' => config_cache('pixelfed.max_photo_size'),
+ 'max_caption_length' => config_cache('pixelfed.max_caption_length'),
+ 'max_altext_length' => config_cache('pixelfed.max_altext_length'),
+ 'enforce_account_limit' => config_cache('pixelfed.enforce_account_limit'),
+ 'max_account_size' => config_cache('pixelfed.max_account_size'),
+ 'max_album_length' => config_cache('pixelfed.max_album_length'),
+ 'account_deletion' => config_cache('pixelfed.account_deletion'),
+ ];
+
+ $res['is_eligible'] = $this->validVal($res, 'admin') &&
+ $this->validVal($res, 'summary', null, 10) &&
+ $this->validVal($res, 'favourite_posts', 3) &&
+ $this->validVal($res, 'contact_email') &&
+ $this->validVal($res, 'privacy_pledge') &&
+ $this->validVal($res, 'location');
+
+ if(config_cache('pixelfed.directory.testimonials')) {
+ $res['testimonials'] = collect(json_decode(config_cache('pixelfed.directory.testimonials'), true))
+ ->map(function($testimonial) {
+ $profile = AccountService::get($testimonial['profile_id']);
+ return [
+ 'profile' => [
+ 'username' => $profile['username'],
+ 'display_name' => $profile['display_name'],
+ 'avatar' => $profile['avatar'],
+ 'created_at' => $profile['created_at']
+ ],
+ 'body' => $testimonial['body']
+ ];
+ });
+ }
+
+ $res['features_enabled'] = [
+ 'stories' => (bool) config_cache('instance.stories.enabled')
+ ];
+
+ $res['stats'] = [
+ 'user_count' => \App\User::count(),
+ 'post_count' => \App\Status::whereNull('uri')->count(),
+ ];
+
+ $res['primary_locale'] = config('app.locale');
+ $hash = hash('sha256', json_encode($res));
+ $res['_hash'] = $hash;
+ ksort($res);
+
+ return $res;
+ }
+
+ protected function validVal($res, $val, $count = false, $minLen = false)
+ {
+ if(!isset($res[$val])) {
+ return false;
+ }
+
+ if($count) {
+ return count($res[$val]) >= $count;
+ }
+
+ if($minLen) {
+ return strlen($res[$val]) >= $minLen;
+ }
+
+ return $res[$val];
+ }
+
+}
diff --git a/app/Http/Controllers/PortfolioController.php b/app/Http/Controllers/PortfolioController.php
new file mode 100644
index 000000000..5890f2d0e
--- /dev/null
+++ b/app/Http/Controllers/PortfolioController.php
@@ -0,0 +1,318 @@
+first();
+
+ if(!$user) {
+ return view('portfolio.404');
+ }
+
+ $portfolio = Portfolio::whereUserId($user->id)->firstOrFail();
+ $user = AccountService::get($user->profile_id);
+
+ if($user['locked']) {
+ return view('portfolio.404');
+ }
+
+ if($portfolio->active != true) {
+ if(!$request->user()) {
+ return view('portfolio.404');
+ }
+
+ if($request->user()->profile_id == $user['id']) {
+ return redirect(config('portfolio.path') . '/settings');
+ }
+
+ return view('portfolio.404');
+ }
+
+ return view('portfolio.show', compact('user', 'portfolio'));
+ }
+
+ public function showPost(Request $request, $username, $id)
+ {
+ $authed = $request->user();
+ $post = StatusService::get($id);
+
+ if(!$post) {
+ return view('portfolio.404');
+ }
+
+ $user = AccountService::get($post['account']['id']);
+ $portfolio = Portfolio::whereProfileId($user['id'])->first();
+
+ if($user['locked'] || $portfolio->active != true) {
+ return view('portfolio.404');
+ }
+
+ if(!$post || $post['visibility'] != 'public' || $post['pf_type'] != 'photo' || $user['id'] != $post['account']['id']) {
+ return view('portfolio.404');
+ }
+
+ return view('portfolio.show_post', compact('user', 'post', 'authed'));
+ }
+
+ public function myRedirect(Request $request)
+ {
+ abort_if(!$request->user(), 404);
+
+ $user = $request->user();
+
+ if(Portfolio::whereProfileId($user->profile_id)->exists() === false) {
+ $portfolio = new Portfolio;
+ $portfolio->profile_id = $user->profile_id;
+ $portfolio->user_id = $user->id;
+ $portfolio->active = false;
+ $portfolio->save();
+ }
+
+ $domain = config('portfolio.domain');
+ $path = config('portfolio.path');
+ $url = 'https://' . $domain . $path;
+
+ return redirect($url);
+ }
+
+ public function settings(Request $request)
+ {
+ if(!$request->user()) {
+ return redirect(route('home'));
+ }
+
+ $portfolio = Portfolio::whereUserId($request->user()->id)->first();
+
+ if(!$portfolio) {
+ $portfolio = new Portfolio;
+ $portfolio->user_id = $request->user()->id;
+ $portfolio->profile_id = $request->user()->profile_id;
+ $portfolio->save();
+ }
+
+ return view('portfolio.settings', compact('portfolio'));
+ }
+
+ public function store(Request $request)
+ {
+ abort_unless($request->user(), 404);
+
+ $this->validate($request, [
+ 'profile_source' => 'required|in:recent,custom',
+ 'layout' => 'required|in:grid,masonry',
+ 'layout_container' => 'required|in:fixed,fluid'
+ ]);
+
+ $portfolio = Portfolio::whereUserId($request->user()->id)->first();
+
+ if(!$portfolio) {
+ $portfolio = new Portfolio;
+ $portfolio->user_id = $request->user()->id;
+ $portfolio->profile_id = $request->user()->profile_id;
+ $portfolio->save();
+ }
+
+ $portfolio->active = $request->input('enabled') === 'on';
+ $portfolio->show_captions = $request->input('show_captions') === 'on';
+ $portfolio->show_license = $request->input('show_license') === 'on';
+ $portfolio->show_location = $request->input('show_location') === 'on';
+ $portfolio->show_timestamp = $request->input('show_timestamp') === 'on';
+ $portfolio->show_link = $request->input('show_link') === 'on';
+ $portfolio->profile_source = $request->input('profile_source');
+ $portfolio->show_avatar = $request->input('show_avatar') === 'on';
+ $portfolio->show_bio = $request->input('show_bio') === 'on';
+ $portfolio->profile_layout = $request->input('layout');
+ $portfolio->profile_container = $request->input('layout_container');
+ $portfolio->save();
+
+ return redirect('/' . $request->user()->username);
+ }
+
+ public function getFeed(Request $request, $id)
+ {
+ $user = AccountService::get($id, true);
+
+ if(!$user || !isset($user['id'])) {
+ return response()->json([], 404);
+ }
+
+ $portfolio = Portfolio::whereProfileId($user['id'])->first();
+
+ if(!$portfolio || !$portfolio->active) {
+ return response()->json([], 404);
+ }
+
+ if($portfolio->profile_source === 'custom' && $portfolio->metadata) {
+ return $this->getCustomFeed($portfolio);
+ }
+
+ return $this->getRecentFeed($user['id']);
+ }
+
+ protected function getCustomFeed($portfolio) {
+ if(!$portfolio->metadata['posts']) {
+ return response()->json([], 400);
+ }
+
+ return collect($portfolio->metadata['posts'])->map(function($p) {
+ return StatusService::get($p);
+ })
+ ->filter(function($p) {
+ return $p && isset($p['account']);
+ })->values();
+ }
+
+ protected function getRecentFeed($id) {
+ $media = Cache::remember('portfolio:recent-feed:' . $id, 3600, function() use($id) {
+ return DB::table('media')
+ ->whereProfileId($id)
+ ->whereNotNull('status_id')
+ ->groupBy('status_id')
+ ->orderByDesc('id')
+ ->take(50)
+ ->pluck('status_id');
+ });
+
+ return $media->map(function($sid) use($id) {
+ return StatusService::get($sid);
+ })
+ ->filter(function($post) {
+ return $post &&
+ isset($post['media_attachments']) &&
+ !empty($post['media_attachments']) &&
+ $post['pf_type'] === 'photo' &&
+ $post['visibility'] === 'public';
+ })
+ ->take(24)
+ ->values();
+ }
+
+ public function getSettings(Request $request)
+ {
+ abort_if(!$request->user(), 403);
+
+ $res = Portfolio::whereUserId($request->user()->id)->get();
+
+ if(!$res) {
+ return [];
+ }
+
+ return $res->map(function($p) {
+ return [
+ 'url' => $p->url(),
+ 'pid' => (string) $p->profile_id,
+ 'active' => (bool) $p->active,
+ 'show_captions' => (bool) $p->show_captions,
+ 'show_license' => (bool) $p->show_license,
+ 'show_location' => (bool) $p->show_location,
+ 'show_timestamp' => (bool) $p->show_timestamp,
+ 'show_link' => (bool) $p->show_link,
+ 'show_avatar' => (bool) $p->show_avatar,
+ 'show_bio' => (bool) $p->show_bio,
+ 'profile_layout' => $p->profile_layout,
+ 'profile_source' => $p->profile_source,
+ 'metadata' => $p->metadata
+ ];
+ })->first();
+ }
+
+ public function getAccountSettings(Request $request)
+ {
+ $this->validate($request, [
+ 'id' => 'required|integer'
+ ]);
+
+ $account = AccountService::get($request->input('id'));
+
+ abort_if(!$account, 404);
+
+ $p = Portfolio::whereProfileId($request->input('id'))->whereActive(1)->firstOrFail();
+
+ if(!$p) {
+ return [];
+ }
+
+ return [
+ 'url' => $p->url(),
+ 'show_captions' => (bool) $p->show_captions,
+ 'show_license' => (bool) $p->show_license,
+ 'show_location' => (bool) $p->show_location,
+ 'show_timestamp' => (bool) $p->show_timestamp,
+ 'show_link' => (bool) $p->show_link,
+ 'show_avatar' => (bool) $p->show_avatar,
+ 'show_bio' => (bool) $p->show_bio,
+ 'profile_layout' => $p->profile_layout,
+ 'profile_source' => $p->profile_source
+ ];
+ }
+
+ public function storeSettings(Request $request)
+ {
+ abort_if(!$request->user(), 403);
+
+ $this->validate($request, [
+ 'profile_layout' => 'sometimes|in:grid,masonry,album'
+ ]);
+
+ $res = Portfolio::whereUserId($request->user()->id)
+ ->update($request->only([
+ 'active',
+ 'show_captions',
+ 'show_license',
+ 'show_location',
+ 'show_timestamp',
+ 'show_link',
+ 'show_avatar',
+ 'show_bio',
+ 'profile_layout',
+ 'profile_source'
+ ]));
+
+ Cache::forget('portfolio:recent-feed:' . $request->user()->profile_id);
+
+ return 200;
+ }
+
+ public function storeCurated(Request $request)
+ {
+ abort_if(!$request->user(), 403);
+
+ $this->validate($request, [
+ 'ids' => 'required|array|max:24'
+ ]);
+
+ $pid = $request->user()->profile_id;
+
+ $ids = $request->input('ids');
+
+ Status::whereProfileId($pid)
+ ->whereScope('public')
+ ->whereIn('type', ['photo', 'photo:album'])
+ ->findOrFail($ids);
+
+ $p = Portfolio::whereProfileId($pid)->firstOrFail();
+ $p->metadata = ['posts' => $ids];
+ $p->save();
+
+ Cache::forget('portfolio:recent-feed:' . $pid);
+
+ return $request->ids;
+ }
+}
diff --git a/app/Http/Controllers/ProfileController.php b/app/Http/Controllers/ProfileController.php
index 30957cf28..3f6795d5b 100644
--- a/app/Http/Controllers/ProfileController.php
+++ b/app/Http/Controllers/ProfileController.php
@@ -187,10 +187,12 @@ class ProfileController extends Controller
abort_if(!config_cache('federation.activitypub.enabled'), 404);
abort_if($user->domain, 404);
- $fractal = new Fractal\Manager();
- $resource = new Fractal\Resource\Item($user, new ProfileTransformer);
- $res = $fractal->createData($resource)->toArray();
- return response(json_encode($res['data']))->header('Content-Type', 'application/activity+json');
+ return Cache::remember('pf:activitypub:user-object:by-id:' . $user->id, 3600, function() use($user) {
+ $fractal = new Fractal\Manager();
+ $resource = new Fractal\Resource\Item($user, new ProfileTransformer);
+ $res = $fractal->createData($resource)->toArray();
+ return response(json_encode($res['data']))->header('Content-Type', 'application/activity+json');
+ });
}
public function showAtomFeed(Request $request, $user)
@@ -201,36 +203,47 @@ class ProfileController extends Controller
abort_if(!$pid, 404);
- $profile = AccountService::get($pid);
+ $profile = AccountService::get($pid, true);
abort_if(!$profile || $profile['locked'] || !$profile['local'], 404);
- $items = DB::table('statuses')
- ->whereProfileId($pid)
- ->whereVisibility('public')
- ->whereType('photo')
- ->orderByDesc('id')
- ->take(10)
- ->get()
- ->map(function($status) {
- return StatusService::get($status->id);
- })
- ->filter(function($status) {
- return $status &&
- isset($status['account']) &&
- isset($status['media_attachments']) &&
- count($status['media_attachments']);
- })
- ->values();
- $permalink = config('app.url') . "/users/{$profile['username']}.atom";
- $headers = ['Content-Type' => 'application/atom+xml'];
+ $data = Cache::remember('pf:atom:user-feed:by-id:' . $profile['id'], 86400, function() use($pid, $profile) {
+ $items = DB::table('statuses')
+ ->whereProfileId($pid)
+ ->whereVisibility('public')
+ ->whereType('photo')
+ ->orderByDesc('id')
+ ->take(10)
+ ->get()
+ ->map(function($status) {
+ return StatusService::get($status->id);
+ })
+ ->filter(function($status) {
+ return $status &&
+ isset($status['account']) &&
+ isset($status['media_attachments']) &&
+ count($status['media_attachments']);
+ })
+ ->values();
+ $permalink = config('app.url') . "/users/{$profile['username']}.atom";
+ $headers = ['Content-Type' => 'application/atom+xml'];
- if($items && $items->count()) {
- $headers['Last-Modified'] = now()->parse($items->first()['created_at'])->toRfc7231String();
- }
+ if($items && $items->count()) {
+ $headers['Last-Modified'] = now()->parse($items->first()['created_at'])->toRfc7231String();
+ }
+
+ return compact('items', 'permalink', 'headers');
+ });
+ abort_if(!$data, 404);
return response()
- ->view('atom.user', compact('profile', 'items', 'permalink'))
- ->withHeaders($headers);
+ ->view('atom.user',
+ [
+ 'profile' => $profile,
+ 'items' => $data['items'],
+ 'permalink' => $data['permalink']
+ ]
+ )
+ ->withHeaders($data['headers']);
}
public function meRedirect()
diff --git a/app/Http/Controllers/PublicApiController.php b/app/Http/Controllers/PublicApiController.php
index 2eb7a9b49..2d4a71bdd 100644
--- a/app/Http/Controllers/PublicApiController.php
+++ b/app/Http/Controllers/PublicApiController.php
@@ -364,7 +364,6 @@ class PublicApiController extends Controller
)
->whereNull(['in_reply_to_id', 'reblog_of_id'])
->whereIn('type', ['photo', 'photo:album', 'video', 'video:album', 'photo:video:album'])
- ->with('profile', 'hashtags', 'mentions')
->whereLocal(true)
->whereScope('public')
->orderBy('id', 'desc')
@@ -517,7 +516,6 @@ class PublicApiController extends Controller
->when($textOnlyReplies != true, function($q, $textOnlyReplies) {
return $q->whereNull('in_reply_to_id');
})
- ->with('profile', 'hashtags', 'mentions')
->where('id', $dir, $id)
->whereIn('profile_id', $following)
->whereIn('visibility',['public', 'unlisted', 'private'])
@@ -564,7 +562,6 @@ class PublicApiController extends Controller
->when(!$textOnlyReplies, function($q, $textOnlyReplies) {
return $q->whereNull('in_reply_to_id');
})
- ->with('profile', 'hashtags', 'mentions')
->whereIn('profile_id', $following)
->whereIn('visibility',['public', 'unlisted', 'private'])
->orderBy('created_at', 'desc')
diff --git a/app/Http/Controllers/Settings/HomeSettings.php b/app/Http/Controllers/Settings/HomeSettings.php
index 23d434d30..e8d3d195e 100644
--- a/app/Http/Controllers/Settings/HomeSettings.php
+++ b/app/Http/Controllers/Settings/HomeSettings.php
@@ -159,7 +159,7 @@ trait HomeSettings
public function emailUpdate(Request $request)
{
$this->validate($request, [
- 'email' => 'required|email',
+ 'email' => 'required|email|unique:users,email',
]);
$changes = false;
$email = $request->input('email');
diff --git a/app/Http/Controllers/StatusController.php b/app/Http/Controllers/StatusController.php
index 7bfac3aa6..117124bb9 100644
--- a/app/Http/Controllers/StatusController.php
+++ b/app/Http/Controllers/StatusController.php
@@ -29,7 +29,7 @@ use App\Services\ReblogService;
class StatusController extends Controller
{
- public function show(Request $request, $username, int $id)
+ public function show(Request $request, $username, $id)
{
// redirect authed users to Metro 2.0
if($request->user()) {
@@ -225,7 +225,7 @@ class StatusController extends Controller
StatusService::del($status->id, true);
if ($status->profile_id == $user->profile->id || $user->is_admin == true) {
Cache::forget('profile:status_count:'.$status->profile_id);
- StatusDelete::dispatch($status);
+ StatusDelete::dispatchNow($status);
}
if($request->wantsJson()) {
diff --git a/app/Http/Middleware/TrustProxies.php b/app/Http/Middleware/TrustProxies.php
index 5517da4b7..b672ca8cd 100644
--- a/app/Http/Middleware/TrustProxies.php
+++ b/app/Http/Middleware/TrustProxies.php
@@ -2,7 +2,7 @@
namespace App\Http\Middleware;
-use Fideloper\Proxy\TrustProxies as Middleware;
+use Illuminate\Http\Middleware\TrustProxies as Middleware;
use Illuminate\Http\Request;
class TrustProxies extends Middleware
diff --git a/app/Jobs/DeletePipeline/DeleteRemoteStatusPipeline.php b/app/Jobs/DeletePipeline/DeleteRemoteStatusPipeline.php
new file mode 100644
index 000000000..e2cfe398e
--- /dev/null
+++ b/app/Jobs/DeletePipeline/DeleteRemoteStatusPipeline.php
@@ -0,0 +1,74 @@
+status = $status->withoutRelations();
+ }
+
+ /**
+ * Execute the job.
+ *
+ * @return void
+ */
+ public function handle()
+ {
+ $status = $this->status;
+
+ NetworkTimelineService::del($status->id);
+ StatusService::del($status->id, true);
+ DecrementPostCount::dispatchNow($status->profile_id);
+ Bookmark::whereStatusId($status->id)->delete();
+ Notification::whereItemType('App\Status')
+ ->whereItemId($status->id)
+ ->forceDelete();
+ DirectMessage::whereStatusId($status->id)->delete();
+ Like::whereStatusId($status->id)->forceDelete();
+ MediaTag::whereStatusId($status->id)->delete();
+ Media::whereStatusId($status->id)
+ ->get()
+ ->each(function($media) {
+ MediaDeletePipeline::dispatchNow($media);
+ });
+ Mention::whereStatusId($status->id)->forceDelete();
+ Report::whereObjectType('App\Status')->whereObjectId($status->id)->delete();
+ StatusHashtag::whereStatusId($status->id)->delete();
+ StatusView::whereStatusId($status->id)->delete();
+ Status::whereReblogOfId($status->id)->forceDelete();
+ $status->delete();
+ }
+}
diff --git a/app/Jobs/InboxPipeline/DeleteWorker.php b/app/Jobs/InboxPipeline/DeleteWorker.php
index 25dbde6dd..dead58163 100644
--- a/app/Jobs/InboxPipeline/DeleteWorker.php
+++ b/app/Jobs/InboxPipeline/DeleteWorker.php
@@ -200,7 +200,7 @@ class DeleteWorker implements ShouldQueue
if(Helpers::validateUrl($actor->remote_url) == false) {
return;
}
- $res = Zttp::timeout(5)->withHeaders([
+ $res = Zttp::timeout(60)->withHeaders([
'Accept' => 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"',
'User-Agent' => 'PixelfedBot v0.1 - https://pixelfed.org',
])->get($actor->remote_url);
diff --git a/app/Jobs/InboxPipeline/InboxValidator.php b/app/Jobs/InboxPipeline/InboxValidator.php
index 070746cd4..22a023304 100644
--- a/app/Jobs/InboxPipeline/InboxValidator.php
+++ b/app/Jobs/InboxPipeline/InboxValidator.php
@@ -70,58 +70,6 @@ class InboxValidator implements ShouldQueue
return;
}
- if( $payload['type'] === 'Delete' &&
- ( ( is_string($payload['object']) &&
- $payload['object'] === $payload['actor'] ) ||
- ( is_array($payload['object']) &&
- isset($payload['object']['id'], $payload['object']['type']) &&
- $payload['object']['type'] === 'Person' &&
- $payload['actor'] === $payload['object']['id']
- ))
- ) {
- $actor = $payload['actor'];
- $hash = strlen($actor) <= 48 ?
- 'b:' . base64_encode($actor) :
- 'h:' . hash('sha256', $actor);
-
- $lockKey = 'ap:inbox:actor-delete-exists:lock:' . $hash;
- Cache::lock($lockKey, 10)->block(5, function () use(
- $headers,
- $payload,
- $actor,
- $hash,
- $profile
- ) {
- $key = 'ap:inbox:actor-delete-exists:' . $hash;
- $actorDelete = Cache::remember($key, now()->addMinutes(15), function() use($actor) {
- return Profile::whereRemoteUrl($actor)
- ->whereNotNull('domain')
- ->exists();
- });
- if($actorDelete) {
- if($this->verifySignature($headers, $profile, $payload) == true) {
- Cache::set($key, false);
- $profile = Profile::whereNotNull('domain')
- ->whereNull('status')
- ->whereRemoteUrl($actor)
- ->first();
- if($profile) {
- DeleteRemoteProfilePipeline::dispatchNow($profile);
- }
- return;
- } else {
- // Signature verification failed, exit.
- return;
- }
- } else {
- // Remote user doesn't exist, exit early.
- return;
- }
- });
-
- return;
- }
-
if($profile->status != null) {
return;
}
@@ -228,7 +176,7 @@ class InboxValidator implements ShouldQueue
if(Helpers::validateUrl($actor->remote_url) == false) {
return;
}
- $res = Zttp::timeout(5)->withHeaders([
+ $res = Zttp::timeout(60)->withHeaders([
'Accept' => 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"',
'User-Agent' => 'PixelfedBot v0.1 - https://pixelfed.org',
])->get($actor->remote_url);
diff --git a/app/Jobs/InboxPipeline/InboxWorker.php b/app/Jobs/InboxPipeline/InboxWorker.php
index 16ac4840a..23371c3ce 100644
--- a/app/Jobs/InboxPipeline/InboxWorker.php
+++ b/app/Jobs/InboxPipeline/InboxWorker.php
@@ -66,57 +66,6 @@ class InboxWorker implements ShouldQueue
return;
}
- if( $payload['type'] === 'Delete' &&
- ( ( is_string($payload['object']) &&
- $payload['object'] === $payload['actor'] ) ||
- ( is_array($payload['object']) &&
- isset($payload['object']['id'], $payload['object']['type']) &&
- $payload['object']['type'] === 'Person' &&
- $payload['actor'] === $payload['object']['id']
- ))
- ) {
- $actor = $payload['actor'];
- $hash = strlen($actor) <= 48 ?
- 'b:' . base64_encode($actor) :
- 'h:' . hash('sha256', $actor);
-
- $lockKey = 'ap:inbox:actor-delete-exists:lock:' . $hash;
- Cache::lock($lockKey, 10)->block(5, function () use(
- $headers,
- $payload,
- $actor,
- $hash
- ) {
- $key = 'ap:inbox:actor-delete-exists:' . $hash;
- $actorDelete = Cache::remember($key, now()->addMinutes(15), function() use($actor) {
- return Profile::whereRemoteUrl($actor)
- ->whereNotNull('domain')
- ->exists();
- });
- if($actorDelete) {
- if($this->verifySignature($headers, $payload) == true) {
- Cache::set($key, false);
- $profile = Profile::whereNotNull('domain')
- ->whereNull('status')
- ->whereRemoteUrl($actor)
- ->first();
- if($profile) {
- DeleteRemoteProfilePipeline::dispatchNow($profile);
- }
- return;
- } else {
- // Signature verification failed, exit.
- return;
- }
- } else {
- // Remote user doesn't exist, exit early.
- return;
- }
- });
-
- return;
- }
-
if($this->verifySignature($headers, $payload) == true) {
(new Inbox($headers, $profile, $payload))->handle();
return;
@@ -217,7 +166,7 @@ class InboxWorker implements ShouldQueue
if(Helpers::validateUrl($actor->remote_url) == false) {
return;
}
- $res = Zttp::timeout(5)->withHeaders([
+ $res = Zttp::timeout(60)->withHeaders([
'Accept' => 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"',
'User-Agent' => 'PixelfedBot v0.1 - https://pixelfed.org',
])->get($actor->remote_url);
diff --git a/app/Jobs/MediaPipeline/MediaDeletePipeline.php b/app/Jobs/MediaPipeline/MediaDeletePipeline.php
index df91c8316..2b7a5f733 100644
--- a/app/Jobs/MediaPipeline/MediaDeletePipeline.php
+++ b/app/Jobs/MediaPipeline/MediaDeletePipeline.php
@@ -38,8 +38,14 @@ class MediaDeletePipeline implements ShouldQueue
if(config_cache('pixelfed.cloud_storage') == true) {
$disk = Storage::disk(config('filesystems.cloud'));
- $disk->delete($path);
- $disk->delete($thumb);
+
+ if($path) {
+ $disk->delete($path);
+ }
+
+ if($thumb) {
+ $disk->delete($thumb);
+ }
if(count($e) > 4 && count($disk->files($i)) == 0) {
$disk->deleteDirectory($i);
@@ -47,10 +53,10 @@ class MediaDeletePipeline implements ShouldQueue
}
$disk = Storage::disk(config('filesystems.local'));
- if($disk->exists($path)) {
+ if($path && $disk->exists($path)) {
$disk->delete($path);
}
- if($disk->exists($thumb)) {
+ if($thumb && $disk->exists($thumb)) {
$disk->delete($thumb);
}
if(count($e) > 4 && count($disk->files($i)) == 0) {
diff --git a/app/Jobs/StatusPipeline/StatusDelete.php b/app/Jobs/StatusPipeline/StatusDelete.php
index 64f5a1cba..4f395a520 100644
--- a/app/Jobs/StatusPipeline/StatusDelete.php
+++ b/app/Jobs/StatusPipeline/StatusDelete.php
@@ -5,12 +5,19 @@ namespace App\Jobs\StatusPipeline;
use DB, Storage;
use App\{
AccountInterstitial,
+ Bookmark,
CollectionItem,
+ DirectMessage,
+ Like,
+ Media,
MediaTag,
+ Mention,
Notification,
Report,
Status,
+ StatusArchived,
StatusHashtag,
+ StatusView
};
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
@@ -28,7 +35,7 @@ use GuzzleHttp\Promise;
use App\Util\ActivityPub\HttpSignature;
use App\Services\CollectionService;
use App\Services\StatusService;
-use App\Services\MediaStorageService;
+use App\Jobs\MediaPipeline\MediaDeletePipeline;
class StatusDelete implements ShouldQueue
{
@@ -71,75 +78,65 @@ class StatusDelete implements ShouldQueue
}
if(config_cache('federation.activitypub.enabled') == true) {
- $this->fanoutDelete($status);
+ return $this->fanoutDelete($status);
} else {
- $this->unlinkRemoveMedia($status);
+ return $this->unlinkRemoveMedia($status);
}
-
}
public function unlinkRemoveMedia($status)
{
- foreach ($status->media as $media) {
- MediaStorageService::delete($media, true);
- }
-
- if($status->in_reply_to_id) {
- DB::transaction(function() use($status) {
- $parent = Status::findOrFail($status->in_reply_to_id);
- --$parent->reply_count;
- $parent->save();
- });
- }
-
- DB::transaction(function() use($status) {
- CollectionItem::whereObjectType('App\Status')
- ->whereObjectId($status->id)
- ->get()
- ->each(function($col) {
- $id = $col->collection_id;
- $sid = $col->object_id;
- $col->delete();
- CollectionService::removeItem($id, $sid);
- });
+ Media::whereStatusId($status->id)
+ ->get()
+ ->each(function($media) {
+ MediaDeletePipeline::dispatchNow($media);
});
- DB::transaction(function() use($status) {
- $comments = Status::where('in_reply_to_id', $status->id)->get();
- foreach ($comments as $comment) {
- $comment->in_reply_to_id = null;
- $comment->save();
- Notification::whereItemType('App\Status')
- ->whereItemId($comment->id)
- ->delete();
- }
- $status->likes()->delete();
- Notification::whereItemType('App\Status')
- ->whereItemId($status->id)
- ->delete();
- StatusHashtag::whereStatusId($status->id)->delete();
- Report::whereObjectType('App\Status')
- ->whereObjectId($status->id)
- ->delete();
- MediaTag::where('status_id', $status->id)
- ->cursor()
- ->each(function($tag) {
- Notification::where('item_type', 'App\MediaTag')
- ->where('item_id', $tag->id)
- ->forceDelete();
- $tag->delete();
- });
- AccountInterstitial::where('item_type', 'App\Status')
- ->where('item_id', $status->id)
- ->delete();
+ if($status->in_reply_to_id) {
+ $parent = Status::findOrFail($status->in_reply_to_id);
+ --$parent->reply_count;
+ $parent->save();
+ }
- $status->forceDelete();
- });
+ Bookmark::whereStatusId($status->id)->delete();
- return true;
+ CollectionItem::whereObjectType('App\Status')
+ ->whereObjectId($status->id)
+ ->get()
+ ->each(function($col) {
+ CollectionService::removeItem($col->collection_id, $col->object_id);
+ $col->delete();
+ });
+
+ DirectMessage::whereStatusId($status->id)->delete();
+ Like::whereStatusId($status->id)->delete();
+
+ MediaTag::where('status_id', $status->id)->delete();
+ Mention::whereStatusId($status->id)->forceDelete();
+
+ Notification::whereItemType('App\Status')
+ ->whereItemId($status->id)
+ ->forceDelete();
+
+ Report::whereObjectType('App\Status')
+ ->whereObjectId($status->id)
+ ->delete();
+
+ StatusArchived::whereStatusId($status->id)->delete();
+ StatusHashtag::whereStatusId($status->id)->delete();
+ StatusView::whereStatusId($status->id)->delete();
+ Status::whereInReplyToId($status->id)->update(['in_reply_to_id' => null]);
+
+ AccountInterstitial::where('item_type', 'App\Status')
+ ->where('item_id', $status->id)
+ ->delete();
+
+ $status->forceDelete();
+
+ return 1;
}
- protected function fanoutDelete($status)
+ public function fanoutDelete($status)
{
$audience = $status->profile->getAudienceInbox();
$profile = $status->profile;
@@ -189,5 +186,6 @@ class StatusDelete implements ShouldQueue
$promise->wait();
+ return 1;
}
}
diff --git a/app/Models/ConfigCache.php b/app/Models/ConfigCache.php
index 4698b1c6b..1b4a18108 100644
--- a/app/Models/ConfigCache.php
+++ b/app/Models/ConfigCache.php
@@ -10,5 +10,5 @@ class ConfigCache extends Model
use HasFactory;
protected $table = 'config_cache';
- public $fillable = ['*'];
+ public $guarded = [];
}
diff --git a/app/Models/Portfolio.php b/app/Models/Portfolio.php
new file mode 100644
index 000000000..758e8db49
--- /dev/null
+++ b/app/Models/Portfolio.php
@@ -0,0 +1,39 @@
+ 'json'
+ ];
+
+ public function url()
+ {
+ $account = AccountService::get($this->profile_id);
+ if(!$account) {
+ return null;
+ }
+
+ return 'https://' . config('portfolio.domain') . config('portfolio.path') . '/' . $account['username'];
+ }
+}
diff --git a/app/Profile.php b/app/Profile.php
index 491606031..f02144f09 100644
--- a/app/Profile.php
+++ b/app/Profile.php
@@ -164,15 +164,16 @@ class Profile extends Model
if(substr($avatar->cdn_url, 0, 8) === 'https://') {
return $avatar->cdn_url;
} else {
- return url($avatar->cdn_url);
+ return url('/storage/avatars/default.jpg');
}
}
- if($avatar->is_remote) {
+ $path = $avatar->media_path;
+
+ if(substr($path, 0, 6) !== 'public') {
return url('/storage/avatars/default.jpg');
}
-
- $path = $avatar->media_path;
+
$path = "{$path}?v={$avatar->change_count}";
return config('app.url') . Storage::url($path);
diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php
index 2272efa5e..b08012f3e 100644
--- a/app/Providers/AppServiceProvider.php
+++ b/app/Providers/AppServiceProvider.php
@@ -29,6 +29,7 @@ use Illuminate\Support\Facades\Blade;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\ServiceProvider;
use Illuminate\Pagination\Paginator;
+use Illuminate\Support\Facades\Validator;
class AppServiceProvider extends ServiceProvider
{
@@ -54,6 +55,7 @@ class AppServiceProvider extends ServiceProvider
Horizon::auth(function ($request) {
return Auth::check() && $request->user()->is_admin;
});
+ Validator::includeUnvalidatedArrayKeys();
}
/**
diff --git a/app/Services/AccountService.php b/app/Services/AccountService.php
index 13cccffab..eb744ff9d 100644
--- a/app/Services/AccountService.php
+++ b/app/Services/AccountService.php
@@ -19,19 +19,21 @@ class AccountService
public static function get($id, $softFail = false)
{
- return Cache::remember(self::CACHE_KEY . $id, 43200, function() use($id, $softFail) {
+ $res = Cache::remember(self::CACHE_KEY . $id, 43200, function() use($id) {
$fractal = new Fractal\Manager();
$fractal->setSerializer(new ArraySerializer());
$profile = Profile::find($id);
- if(!$profile) {
- if($softFail) {
- return null;
- }
- abort(404);
+ if(!$profile || $profile->status === 'delete') {
+ return null;
}
$resource = new Fractal\Resource\Item($profile, new AccountTransformer());
return $fractal->createData($resource)->toArray();
- });
+ });
+
+ if(!$res) {
+ return $softFail ? null : abort(404);
+ }
+ return $res;
}
public static function getMastodon($id, $softFail = false)
diff --git a/app/Services/ConfigCacheService.php b/app/Services/ConfigCacheService.php
index b334e9e33..0a9055287 100644
--- a/app/Services/ConfigCacheService.php
+++ b/app/Services/ConfigCacheService.php
@@ -55,6 +55,15 @@ class ConfigCacheService
'config.discover.features',
'instance.has_legal_notice',
+
+ 'pixelfed.directory',
+ 'app.banner_image',
+ 'pixelfed.directory.submission-key',
+ 'pixelfed.directory.submission-ts',
+ 'pixelfed.directory.has_submitted',
+ 'pixelfed.directory.latest_response',
+ 'pixelfed.directory.is_synced',
+ 'pixelfed.directory.testimonials',
// 'system.user_mode'
];
diff --git a/app/Services/MediaStorageService.php b/app/Services/MediaStorageService.php
index e252aacf6..1c3272ec1 100644
--- a/app/Services/MediaStorageService.php
+++ b/app/Services/MediaStorageService.php
@@ -236,16 +236,19 @@ class MediaStorageService {
$tmpBase = storage_path('app/remcache/');
$tmpPath = 'avatar_' . $avatar->profile_id . '-' . $path;
$tmpName = $tmpBase . $tmpPath;
- $data = file_get_contents($url, false, null, 0, $head['length']);
+ $data = @file_get_contents($url, false, null, 0, $head['length']);
+ if(!$data) {
+ return;
+ }
file_put_contents($tmpName, $data);
$disk = Storage::disk($driver);
$file = $disk->putFileAs($base, new File($tmpName), $path, 'public');
$permalink = $disk->url($file);
- $avatar->media_path = $base . $path;
+ $avatar->media_path = $base . '/' . $path;
$avatar->is_remote = true;
- $avatar->cdn_url = $permalink;
+ $avatar->cdn_url = $local ? config('app.url') . $permalink : $permalink;
$avatar->size = $head['length'];
$avatar->change_count = $avatar->change_count + 1;
$avatar->last_fetched_at = now();
diff --git a/app/Transformer/ActivityPub/ProfileTransformer.php b/app/Transformer/ActivityPub/ProfileTransformer.php
index 76d398ce1..29f53425c 100644
--- a/app/Transformer/ActivityPub/ProfileTransformer.php
+++ b/app/Transformer/ActivityPub/ProfileTransformer.php
@@ -23,14 +23,11 @@ class ProfileTransformer extends Fractal\TransformerAbstract
'followers' => $profile->permalink('/followers'),
'inbox' => $profile->permalink('/inbox'),
'outbox' => $profile->permalink('/outbox'),
- //'featured' => $profile->permalink('/collections/featured'),
'preferredUsername' => $profile->username,
'name' => $profile->name,
'summary' => $profile->bio,
'url' => $profile->url(),
'manuallyApprovesFollowers' => (bool) $profile->is_private,
- // 'follower_count' => $profile->followers()->count(),
- // 'following_count' => $profile->following()->count(),
'publicKey' => [
'id' => $profile->permalink().'#main-key',
'owner' => $profile->permalink(),
diff --git a/app/Transformer/Api/NotificationTransformer.php b/app/Transformer/Api/NotificationTransformer.php
index df8d0d30c..d4f84bbef 100644
--- a/app/Transformer/Api/NotificationTransformer.php
+++ b/app/Transformer/Api/NotificationTransformer.php
@@ -32,18 +32,22 @@ class NotificationTransformer extends Fractal\TransformerAbstract
if($n->item_id && $n->item_type == 'App\ModLog') {
$ml = $n->item;
- $res['modlog'] = [
- 'id' => $ml->object_uid,
- 'url' => url('/i/admin/users/modlogs/' . $ml->object_uid)
- ];
+ if($ml && $ml->object_uid) {
+ $res['modlog'] = [
+ 'id' => $ml->object_uid,
+ 'url' => url('/i/admin/users/modlogs/' . $ml->object_uid)
+ ];
+ }
}
if($n->item_id && $n->item_type == 'App\MediaTag') {
$ml = $n->item;
- $res['tagged'] = [
- 'username' => $ml->tagged_username,
- 'post_url' => '/p/'.HashidService::encode($ml->status_id)
- ];
+ if($ml && $ml->tagged_username) {
+ $res['tagged'] = [
+ 'username' => $ml->tagged_username,
+ 'post_url' => '/p/'.HashidService::encode($ml->status_id)
+ ];
+ }
}
return $res;
diff --git a/app/Util/ActivityPub/Helpers.php b/app/Util/ActivityPub/Helpers.php
index 809a55707..1516478d0 100644
--- a/app/Util/ActivityPub/Helpers.php
+++ b/app/Util/ActivityPub/Helpers.php
@@ -419,9 +419,8 @@ class Helpers {
$cw = true;
}
- $statusLockKey = 'helpers:status-lock:' . hash('sha256', $res['id']);
- $status = Cache::lock($statusLockKey)
- ->get(function () use(
+ if($res['type'] === 'Question') {
+ $status = self::storePoll(
$profile,
$res,
$url,
@@ -430,24 +429,11 @@ class Helpers {
$cw,
$scope,
$id
- ) {
-
- if($res['type'] === 'Question') {
- $status = self::storePoll(
- $profile,
- $res,
- $url,
- $ts,
- $reply_to,
- $cw,
- $scope,
- $id
- );
- return $status;
- }
-
- return self::storeStatus($url, $profile, $res);
- });
+ );
+ return $status;
+ } else {
+ $status = self::storeStatus($url, $profile, $res);
+ }
return $status;
}
@@ -756,10 +742,10 @@ class Helpers {
[
'domain' => strtolower($domain),
'username' => Purify::clean($webfinger),
- 'webfinger' => Purify::clean($webfinger),
- 'key_id' => $res['publicKey']['id'],
],
[
+ 'webfinger' => Purify::clean($webfinger),
+ 'key_id' => $res['publicKey']['id'],
'remote_url' => $res['id'],
'name' => isset($res['name']) ? Purify::clean($res['name']) : 'user',
'bio' => isset($res['summary']) ? Purify::clean($res['summary']) : null,
diff --git a/app/Util/ActivityPub/Inbox.php b/app/Util/ActivityPub/Inbox.php
index 42d9c7a83..a8bfb87fe 100644
--- a/app/Util/ActivityPub/Inbox.php
+++ b/app/Util/ActivityPub/Inbox.php
@@ -24,6 +24,7 @@ use Illuminate\Support\Str;
use App\Jobs\LikePipeline\LikePipeline;
use App\Jobs\FollowPipeline\FollowPipeline;
use App\Jobs\DeletePipeline\DeleteRemoteProfilePipeline;
+use App\Jobs\DeletePipeline\DeleteRemoteStatusPipeline;
use App\Jobs\StoryPipeline\StoryExpire;
use App\Jobs\StoryPipeline\StoryFetch;
@@ -191,7 +192,7 @@ class Inbox
if(!isset($activity['to'])) {
return;
}
- $to = $activity['to'];
+ $to = isset($activity['to']) ? $activity['to'] : [];
$cc = isset($activity['cc']) ? $activity['cc'] : [];
if($activity['type'] == 'Question') {
@@ -199,7 +200,9 @@ class Inbox
return;
}
- if(count($to) == 1 &&
+ if( is_array($to) &&
+ is_array($cc) &&
+ count($to) == 1 &&
count($cc) == 0 &&
parse_url($to[0], PHP_URL_HOST) == config('pixelfed.domain.app')
) {
@@ -622,7 +625,7 @@ class Inbox
if(!$profile || $profile->private_key != null) {
return;
}
- DeleteRemoteProfilePipeline::dispatchNow($profile);
+ DeleteRemoteProfilePipeline::dispatch($profile)->onQueue('delete');
return;
} else {
if(!isset($obj['id'], $this->payload['object'], $this->payload['object']['id'])) {
@@ -643,7 +646,7 @@ class Inbox
if(!$profile || $profile->private_key != null) {
return;
}
- DeleteRemoteProfilePipeline::dispatchNow($profile);
+ DeleteRemoteProfilePipeline::dispatch($profile)->onQueue('delete');
return;
break;
@@ -660,18 +663,7 @@ class Inbox
if(!$status) {
return;
}
- NetworkTimelineService::del($status->id);
- StatusService::del($status->id, true);
- Notification::whereActorId($profile->id)
- ->whereItemType('App\Status')
- ->whereItemId($status->id)
- ->forceDelete();
- $status->directMessage()->delete();
- $status->media()->delete();
- $status->likes()->delete();
- $status->shares()->delete();
- $status->delete();
- DecrementPostCount::dispatch($profile->id)->onQueue('low');
+ DeleteRemoteStatusPipeline::dispatch($status)->onQueue('delete');
return;
break;
@@ -737,6 +729,9 @@ class Inbox
$profile = self::actorFirstOrCreate($actor);
$obj = $this->payload['object'];
+ if(!$profile) {
+ return;
+ }
// TODO: Some implementations do not inline the object, skip for now
if(!$obj || !is_array($obj) || !isset($obj['type'])) {
return;
@@ -796,7 +791,7 @@ class Inbox
Like::whereProfileId($profile->id)
->whereStatusId($status->id)
->forceDelete();
- Notification::whereProfileId($status->profile->id)
+ Notification::whereProfileId($status->profile_id)
->whereActorId($profile->id)
->whereAction('like')
->whereItemId($status->id)
diff --git a/composer.json b/composer.json
index a4d5bca04..2ed6f796b 100644
--- a/composer.json
+++ b/composer.json
@@ -5,7 +5,7 @@
"license": "AGPL-3.0-only",
"type": "project",
"require": {
- "php": "^7.4|^8.0",
+ "php": "^8.0.2|^8.1",
"ext-bcmath": "*",
"ext-ctype": "*",
"ext-curl": "*",
@@ -18,37 +18,36 @@
"brick/math": "^0.9.3",
"buzz/laravel-h-captcha": "1.0.3",
"doctrine/dbal": "^2.7",
- "fideloper/proxy": "^4.0",
"fruitcake/laravel-cors": "^2.0",
"intervention/image": "^2.4",
"jenssegers/agent": "^2.6",
- "laravel/framework": "^8.0",
+ "laravel/framework": "^9.0",
"laravel/helpers": "^1.1",
"laravel/horizon": "^5.0",
"laravel/passport": "^10.0",
"laravel/tinker": "^2.0",
"laravel/ui": "^2.0|^3.4",
- "league/flysystem-aws-s3-v3": "~1.0",
- "league/flysystem-cached-adapter": "~1.0",
+ "league/flysystem-aws-s3-v3": "^3.0",
"league/iso3166": "^2.1|^4.0",
- "pbmedia/laravel-ffmpeg": "^7.0",
+ "pbmedia/laravel-ffmpeg": "^8.0",
"phpseclib/phpseclib": "~2.0",
"pixelfed/fractal": "^0.18.0",
"pixelfed/laravel-snowflake": "^2.0",
- "pixelfed/zttp": "^0.4",
+ "pixelfed/zttp": "^0.5",
"pragmarx/google2fa": "^8.0",
"predis/predis": "^1.1",
- "spatie/laravel-backup": "^6.0.0",
- "spatie/laravel-image-optimizer": "^1.1",
- "stevebauman/purify": "3.0.*",
- "symfony/http-kernel": "5.4.8"
+ "spatie/laravel-backup": "^8.0.0",
+ "spatie/laravel-image-optimizer": "^1.7",
+ "stevebauman/purify": "4.0.*",
+ "symfony/http-client": "^6.1",
+ "symfony/http-kernel": "^6.0.0",
+ "symfony/mailgun-mailer": "^6.1"
},
"require-dev": {
"brianium/paratest": "^6.1",
- "facade/ignition": "^2.3.6",
"laravel/telescope": "^4.9",
"mockery/mockery": "^1.0",
- "nunomaduro/collision": "^5.0",
+ "nunomaduro/collision": "^6.1",
"phpunit/phpunit": "^9.0"
},
"autoload": {
diff --git a/composer.lock b/composer.lock
index b6cfb4650..5a21cbd12 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,74 +4,8 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "ef3e91a0f0bf7bb70e15847abbdf72f8",
+ "content-hash": "b14c47abe1d75f3b98a57a6d718d933e",
"packages": [
- {
- "name": "alchemy/binary-driver",
- "version": "v5.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/alchemy-fr/BinaryDriver.git",
- "reference": "e0615cdff315e6b4b05ada67906df6262a020d22"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/alchemy-fr/BinaryDriver/zipball/e0615cdff315e6b4b05ada67906df6262a020d22",
- "reference": "e0615cdff315e6b4b05ada67906df6262a020d22",
- "shasum": ""
- },
- "require": {
- "evenement/evenement": "^3.0|^2.0|^1.0",
- "php": ">=5.5",
- "psr/log": "^1.0",
- "symfony/process": "^2.3|^3.0|^4.0|^5.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.0|^5.0"
- },
- "type": "library",
- "autoload": {
- "psr-0": {
- "Alchemy": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Le Goff",
- "email": "legoff.n@gmail.com"
- },
- {
- "name": "Romain Neutron",
- "email": "imprec@gmail.com",
- "homepage": "http://www.lickmychip.com/"
- },
- {
- "name": "Phraseanet Team",
- "email": "info@alchemy.fr",
- "homepage": "http://www.phraseanet.com/"
- },
- {
- "name": "Jens Hausdorf",
- "email": "mail@jens-hausdorf.de",
- "homepage": "https://jens-hausdorf.de",
- "role": "Maintainer"
- }
- ],
- "description": "A set of tools to build binary drivers",
- "keywords": [
- "binary",
- "driver"
- ],
- "support": {
- "issues": "https://github.com/alchemy-fr/BinaryDriver/issues",
- "source": "https://github.com/alchemy-fr/BinaryDriver/tree/master"
- },
- "time": "2020-02-12T19:35:11+00:00"
- },
{
"name": "asm89/stack-cors",
"version": "v2.1.1",
@@ -180,16 +114,16 @@
},
{
"name": "aws/aws-sdk-php",
- "version": "3.235.10",
+ "version": "3.240.11",
"source": {
"type": "git",
"url": "https://github.com/aws/aws-sdk-php.git",
- "reference": "943f96f50d19244584675c34fb3e4c8aa3eaddce"
+ "reference": "4ab7d004ca11298bf400f3291f144d820fb97cd6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/943f96f50d19244584675c34fb3e4c8aa3eaddce",
- "reference": "943f96f50d19244584675c34fb3e4c8aa3eaddce",
+ "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/4ab7d004ca11298bf400f3291f144d820fb97cd6",
+ "reference": "4ab7d004ca11298bf400f3291f144d820fb97cd6",
"shasum": ""
},
"require": {
@@ -268,9 +202,9 @@
"support": {
"forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80",
"issues": "https://github.com/aws/aws-sdk-php/issues",
- "source": "https://github.com/aws/aws-sdk-php/tree/3.235.10"
+ "source": "https://github.com/aws/aws-sdk-php/tree/3.240.11"
},
- "time": "2022-09-16T18:18:42+00:00"
+ "time": "2022-11-07T19:23:11+00:00"
},
{
"name": "bacon/bacon-qr-code",
@@ -717,16 +651,16 @@
},
{
"name": "dflydev/dot-access-data",
- "version": "v3.0.1",
+ "version": "v3.0.2",
"source": {
"type": "git",
"url": "https://github.com/dflydev/dflydev-dot-access-data.git",
- "reference": "0992cc19268b259a39e86f296da5f0677841f42c"
+ "reference": "f41715465d65213d644d3141a6a93081be5d3549"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c",
- "reference": "0992cc19268b259a39e86f296da5f0677841f42c",
+ "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/f41715465d65213d644d3141a6a93081be5d3549",
+ "reference": "f41715465d65213d644d3141a6a93081be5d3549",
"shasum": ""
},
"require": {
@@ -737,7 +671,7 @@
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.3",
"scrutinizer/ocular": "1.6.0",
"squizlabs/php_codesniffer": "^3.5",
- "vimeo/psalm": "^3.14"
+ "vimeo/psalm": "^4.0.0"
},
"type": "library",
"extra": {
@@ -786,9 +720,9 @@
],
"support": {
"issues": "https://github.com/dflydev/dflydev-dot-access-data/issues",
- "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.1"
+ "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.2"
},
- "time": "2021-08-13T13:06:58+00:00"
+ "time": "2022-10-27T11:44:00+00:00"
},
{
"name": "doctrine/cache",
@@ -1037,34 +971,35 @@
},
{
"name": "doctrine/event-manager",
- "version": "1.1.2",
+ "version": "1.2.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/event-manager.git",
- "reference": "eb2ecf80e3093e8f3c2769ac838e27d8ede8e683"
+ "reference": "95aa4cb529f1e96576f3fda9f5705ada4056a520"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/event-manager/zipball/eb2ecf80e3093e8f3c2769ac838e27d8ede8e683",
- "reference": "eb2ecf80e3093e8f3c2769ac838e27d8ede8e683",
+ "url": "https://api.github.com/repos/doctrine/event-manager/zipball/95aa4cb529f1e96576f3fda9f5705ada4056a520",
+ "reference": "95aa4cb529f1e96576f3fda9f5705ada4056a520",
"shasum": ""
},
"require": {
+ "doctrine/deprecations": "^0.5.3 || ^1",
"php": "^7.1 || ^8.0"
},
"conflict": {
"doctrine/common": "<2.9"
},
"require-dev": {
- "doctrine/coding-standard": "^9",
- "phpstan/phpstan": "~1.4.10 || ^1.5.4",
+ "doctrine/coding-standard": "^9 || ^10",
+ "phpstan/phpstan": "~1.4.10 || ^1.8.8",
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
- "vimeo/psalm": "^4.22"
+ "vimeo/psalm": "^4.24"
},
"type": "library",
"autoload": {
"psr-4": {
- "Doctrine\\Common\\": "lib/Doctrine/Common"
+ "Doctrine\\Common\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1108,7 +1043,7 @@
],
"support": {
"issues": "https://github.com/doctrine/event-manager/issues",
- "source": "https://github.com/doctrine/event-manager/tree/1.1.2"
+ "source": "https://github.com/doctrine/event-manager/tree/1.2.0"
},
"funding": [
{
@@ -1124,27 +1059,27 @@
"type": "tidelift"
}
],
- "time": "2022-07-27T22:18:11+00:00"
+ "time": "2022-10-12T20:51:15+00:00"
},
{
"name": "doctrine/inflector",
- "version": "2.0.5",
+ "version": "2.0.6",
"source": {
"type": "git",
"url": "https://github.com/doctrine/inflector.git",
- "reference": "ade2b3bbfb776f27f0558e26eed43b5d9fe1b392"
+ "reference": "d9d313a36c872fd6ee06d9a6cbcf713eaa40f024"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/inflector/zipball/ade2b3bbfb776f27f0558e26eed43b5d9fe1b392",
- "reference": "ade2b3bbfb776f27f0558e26eed43b5d9fe1b392",
+ "url": "https://api.github.com/repos/doctrine/inflector/zipball/d9d313a36c872fd6ee06d9a6cbcf713eaa40f024",
+ "reference": "d9d313a36c872fd6ee06d9a6cbcf713eaa40f024",
"shasum": ""
},
"require": {
"php": "^7.2 || ^8.0"
},
"require-dev": {
- "doctrine/coding-standard": "^9",
+ "doctrine/coding-standard": "^10",
"phpstan/phpstan": "^1.8",
"phpstan/phpstan-phpunit": "^1.1",
"phpstan/phpstan-strict-rules": "^1.3",
@@ -1199,7 +1134,7 @@
],
"support": {
"issues": "https://github.com/doctrine/inflector/issues",
- "source": "https://github.com/doctrine/inflector/tree/2.0.5"
+ "source": "https://github.com/doctrine/inflector/tree/2.0.6"
},
"funding": [
{
@@ -1215,7 +1150,7 @@
"type": "tidelift"
}
],
- "time": "2022-09-07T09:01:28+00:00"
+ "time": "2022-10-20T09:10:12+00:00"
},
{
"name": "doctrine/lexer",
@@ -1356,27 +1291,27 @@
},
{
"name": "egulias/email-validator",
- "version": "2.1.25",
+ "version": "3.2.1",
"source": {
"type": "git",
"url": "https://github.com/egulias/EmailValidator.git",
- "reference": "0dbf5d78455d4d6a41d186da50adc1122ec066f4"
+ "reference": "f88dcf4b14af14a98ad96b14b2b317969eab6715"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/0dbf5d78455d4d6a41d186da50adc1122ec066f4",
- "reference": "0dbf5d78455d4d6a41d186da50adc1122ec066f4",
+ "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/f88dcf4b14af14a98ad96b14b2b317969eab6715",
+ "reference": "f88dcf4b14af14a98ad96b14b2b317969eab6715",
"shasum": ""
},
"require": {
- "doctrine/lexer": "^1.0.1",
- "php": ">=5.5",
- "symfony/polyfill-intl-idn": "^1.10"
+ "doctrine/lexer": "^1.2",
+ "php": ">=7.2",
+ "symfony/polyfill-intl-idn": "^1.15"
},
"require-dev": {
- "dominicsayers/isemail": "^3.0.7",
- "phpunit/phpunit": "^4.8.36|^7.5.15",
- "satooshi/php-coveralls": "^1.0.1"
+ "php-coveralls/php-coveralls": "^2.2",
+ "phpunit/phpunit": "^8.5.8|^9.3.3",
+ "vimeo/psalm": "^4"
},
"suggest": {
"ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation"
@@ -1384,7 +1319,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.1.x-dev"
+ "dev-master": "3.0.x-dev"
}
},
"autoload": {
@@ -1412,7 +1347,7 @@
],
"support": {
"issues": "https://github.com/egulias/EmailValidator/issues",
- "source": "https://github.com/egulias/EmailValidator/tree/2.1.25"
+ "source": "https://github.com/egulias/EmailValidator/tree/3.2.1"
},
"funding": [
{
@@ -1420,7 +1355,7 @@
"type": "github"
}
],
- "time": "2020-12-29T14:50:06+00:00"
+ "time": "2022-06-18T20:57:19+00:00"
},
{
"name": "evenement/evenement",
@@ -1583,64 +1518,6 @@
},
"time": "2020-10-16T08:27:54+00:00"
},
- {
- "name": "fideloper/proxy",
- "version": "4.4.2",
- "source": {
- "type": "git",
- "url": "https://github.com/fideloper/TrustedProxy.git",
- "reference": "a751f2bc86dd8e6cfef12dc0cbdada82f5a18750"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/fideloper/TrustedProxy/zipball/a751f2bc86dd8e6cfef12dc0cbdada82f5a18750",
- "reference": "a751f2bc86dd8e6cfef12dc0cbdada82f5a18750",
- "shasum": ""
- },
- "require": {
- "illuminate/contracts": "^5.0|^6.0|^7.0|^8.0|^9.0",
- "php": ">=5.4.0"
- },
- "require-dev": {
- "illuminate/http": "^5.0|^6.0|^7.0|^8.0|^9.0",
- "mockery/mockery": "^1.0",
- "phpunit/phpunit": "^8.5.8|^9.3.3"
- },
- "type": "library",
- "extra": {
- "laravel": {
- "providers": [
- "Fideloper\\Proxy\\TrustedProxyServiceProvider"
- ]
- }
- },
- "autoload": {
- "psr-4": {
- "Fideloper\\Proxy\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Chris Fidao",
- "email": "fideloper@gmail.com"
- }
- ],
- "description": "Set trusted proxies for Laravel",
- "keywords": [
- "load balancing",
- "proxy",
- "trusted proxy"
- ],
- "support": {
- "issues": "https://github.com/fideloper/TrustedProxy/issues",
- "source": "https://github.com/fideloper/TrustedProxy/tree/4.4.2"
- },
- "time": "2022-02-09T13:33:34+00:00"
- },
{
"name": "fig/http-message-util",
"version": "1.1.5",
@@ -1699,16 +1576,16 @@
},
{
"name": "firebase/php-jwt",
- "version": "v6.3.0",
+ "version": "v6.3.1",
"source": {
"type": "git",
"url": "https://github.com/firebase/php-jwt.git",
- "reference": "018dfc4e1da92ad8a1b90adc4893f476a3b41cb8"
+ "reference": "ddfaddcb520488b42bca3a75e17e9dd53c3667da"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/firebase/php-jwt/zipball/018dfc4e1da92ad8a1b90adc4893f476a3b41cb8",
- "reference": "018dfc4e1da92ad8a1b90adc4893f476a3b41cb8",
+ "url": "https://api.github.com/repos/firebase/php-jwt/zipball/ddfaddcb520488b42bca3a75e17e9dd53c3667da",
+ "reference": "ddfaddcb520488b42bca3a75e17e9dd53c3667da",
"shasum": ""
},
"require": {
@@ -1755,9 +1632,9 @@
],
"support": {
"issues": "https://github.com/firebase/php-jwt/issues",
- "source": "https://github.com/firebase/php-jwt/tree/v6.3.0"
+ "source": "https://github.com/firebase/php-jwt/tree/v6.3.1"
},
- "time": "2022-07-15T16:48:45+00:00"
+ "time": "2022-11-01T21:20:08+00:00"
},
{
"name": "fruitcake/laravel-cors",
@@ -1838,6 +1715,77 @@
],
"time": "2022-02-23T14:25:13+00:00"
},
+ {
+ "name": "fruitcake/php-cors",
+ "version": "v1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/fruitcake/php-cors.git",
+ "reference": "58571acbaa5f9f462c9c77e911700ac66f446d4e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/58571acbaa5f9f462c9c77e911700ac66f446d4e",
+ "reference": "58571acbaa5f9f462c9c77e911700ac66f446d4e",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.4|^8.0",
+ "symfony/http-foundation": "^4.4|^5.4|^6"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^1.4",
+ "phpunit/phpunit": "^9",
+ "squizlabs/php_codesniffer": "^3.5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.1-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Fruitcake\\Cors\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fruitcake",
+ "homepage": "https://fruitcake.nl"
+ },
+ {
+ "name": "Barryvdh",
+ "email": "barryvdh@gmail.com"
+ }
+ ],
+ "description": "Cross-origin resource sharing library for the Symfony HttpFoundation",
+ "homepage": "https://github.com/fruitcake/php-cors",
+ "keywords": [
+ "cors",
+ "laravel",
+ "symfony"
+ ],
+ "support": {
+ "issues": "https://github.com/fruitcake/php-cors/issues",
+ "source": "https://github.com/fruitcake/php-cors/tree/v1.2.0"
+ },
+ "funding": [
+ {
+ "url": "https://fruitcake.nl",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/barryvdh",
+ "type": "github"
+ }
+ ],
+ "time": "2022-02-20T15:07:15+00:00"
+ },
{
"name": "graham-campbell/result-type",
"version": "v1.1.0",
@@ -1902,37 +1850,49 @@
},
{
"name": "guzzlehttp/guzzle",
- "version": "6.5.8",
+ "version": "7.5.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
- "reference": "a52f0440530b54fa079ce76e8c5d196a42cad981"
+ "reference": "b50a2a1251152e43f6a37f0fa053e730a67d25ba"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/guzzle/zipball/a52f0440530b54fa079ce76e8c5d196a42cad981",
- "reference": "a52f0440530b54fa079ce76e8c5d196a42cad981",
+ "url": "https://api.github.com/repos/guzzle/guzzle/zipball/b50a2a1251152e43f6a37f0fa053e730a67d25ba",
+ "reference": "b50a2a1251152e43f6a37f0fa053e730a67d25ba",
"shasum": ""
},
"require": {
"ext-json": "*",
- "guzzlehttp/promises": "^1.0",
- "guzzlehttp/psr7": "^1.9",
- "php": ">=5.5",
- "symfony/polyfill-intl-idn": "^1.17"
+ "guzzlehttp/promises": "^1.5",
+ "guzzlehttp/psr7": "^1.9 || ^2.4",
+ "php": "^7.2.5 || ^8.0",
+ "psr/http-client": "^1.0",
+ "symfony/deprecation-contracts": "^2.2 || ^3.0"
+ },
+ "provide": {
+ "psr/http-client-implementation": "1.0"
},
"require-dev": {
+ "bamarni/composer-bin-plugin": "^1.8.1",
"ext-curl": "*",
- "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
- "psr/log": "^1.1"
+ "php-http/client-integration-tests": "^3.0",
+ "phpunit/phpunit": "^8.5.29 || ^9.5.23",
+ "psr/log": "^1.1 || ^2.0 || ^3.0"
},
"suggest": {
+ "ext-curl": "Required for CURL handler support",
+ "ext-intl": "Required for Internationalized Domain Name (IDN) support",
"psr/log": "Required for using the Log middleware"
},
"type": "library",
"extra": {
+ "bamarni-bin": {
+ "bin-links": true,
+ "forward-command": false
+ },
"branch-alias": {
- "dev-master": "6.5-dev"
+ "dev-master": "7.5-dev"
}
},
"autoload": {
@@ -1985,19 +1945,20 @@
}
],
"description": "Guzzle is a PHP HTTP client library",
- "homepage": "http://guzzlephp.org/",
"keywords": [
"client",
"curl",
"framework",
"http",
"http client",
+ "psr-18",
+ "psr-7",
"rest",
"web service"
],
"support": {
"issues": "https://github.com/guzzle/guzzle/issues",
- "source": "https://github.com/guzzle/guzzle/tree/6.5.8"
+ "source": "https://github.com/guzzle/guzzle/tree/7.5.0"
},
"funding": [
{
@@ -2013,7 +1974,7 @@
"type": "tidelift"
}
],
- "time": "2022-06-20T22:16:07+00:00"
+ "time": "2022-08-28T15:39:27+00:00"
},
{
"name": "guzzlehttp/promises",
@@ -2101,43 +2062,47 @@
},
{
"name": "guzzlehttp/psr7",
- "version": "1.9.0",
+ "version": "2.4.3",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
- "reference": "e98e3e6d4f86621a9b75f623996e6bbdeb4b9318"
+ "reference": "67c26b443f348a51926030c83481b85718457d3d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/psr7/zipball/e98e3e6d4f86621a9b75f623996e6bbdeb4b9318",
- "reference": "e98e3e6d4f86621a9b75f623996e6bbdeb4b9318",
+ "url": "https://api.github.com/repos/guzzle/psr7/zipball/67c26b443f348a51926030c83481b85718457d3d",
+ "reference": "67c26b443f348a51926030c83481b85718457d3d",
"shasum": ""
},
"require": {
- "php": ">=5.4.0",
- "psr/http-message": "~1.0",
- "ralouphie/getallheaders": "^2.0.5 || ^3.0.0"
+ "php": "^7.2.5 || ^8.0",
+ "psr/http-factory": "^1.0",
+ "psr/http-message": "^1.0",
+ "ralouphie/getallheaders": "^3.0"
},
"provide": {
+ "psr/http-factory-implementation": "1.0",
"psr/http-message-implementation": "1.0"
},
"require-dev": {
- "ext-zlib": "*",
- "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10"
+ "bamarni/composer-bin-plugin": "^1.8.1",
+ "http-interop/http-factory-tests": "^0.9",
+ "phpunit/phpunit": "^8.5.29 || ^9.5.23"
},
"suggest": {
"laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
},
"type": "library",
"extra": {
+ "bamarni-bin": {
+ "bin-links": true,
+ "forward-command": false
+ },
"branch-alias": {
- "dev-master": "1.9-dev"
+ "dev-master": "2.4-dev"
}
},
"autoload": {
- "files": [
- "src/functions_include.php"
- ],
"psr-4": {
"GuzzleHttp\\Psr7\\": "src/"
}
@@ -2176,6 +2141,11 @@
"name": "Tobias Schultze",
"email": "webmaster@tubo-world.de",
"homepage": "https://github.com/Tobion"
+ },
+ {
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com",
+ "homepage": "https://sagikazarmark.hu"
}
],
"description": "PSR-7 message implementation that also provides common utility methods",
@@ -2191,7 +2161,7 @@
],
"support": {
"issues": "https://github.com/guzzle/psr7/issues",
- "source": "https://github.com/guzzle/psr7/tree/1.9.0"
+ "source": "https://github.com/guzzle/psr7/tree/2.4.3"
},
"funding": [
{
@@ -2207,7 +2177,7 @@
"type": "tidelift"
}
],
- "time": "2022-06-20T21:43:03+00:00"
+ "time": "2022-10-26T14:07:24+00:00"
},
{
"name": "intervention/image",
@@ -2295,16 +2265,16 @@
},
{
"name": "jaybizzle/crawler-detect",
- "version": "v1.2.111",
+ "version": "v1.2.112",
"source": {
"type": "git",
"url": "https://github.com/JayBizzle/Crawler-Detect.git",
- "reference": "d572ed4a65a70a2d2871dc5137c9c5b7e69745ab"
+ "reference": "2c555ce35a07a5c1c808cee7d5bb52c41a4c7b2f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/JayBizzle/Crawler-Detect/zipball/d572ed4a65a70a2d2871dc5137c9c5b7e69745ab",
- "reference": "d572ed4a65a70a2d2871dc5137c9c5b7e69745ab",
+ "url": "https://api.github.com/repos/JayBizzle/Crawler-Detect/zipball/2c555ce35a07a5c1c808cee7d5bb52c41a4c7b2f",
+ "reference": "2c555ce35a07a5c1c808cee7d5bb52c41a4c7b2f",
"shasum": ""
},
"require": {
@@ -2341,9 +2311,9 @@
],
"support": {
"issues": "https://github.com/JayBizzle/Crawler-Detect/issues",
- "source": "https://github.com/JayBizzle/Crawler-Detect/tree/v1.2.111"
+ "source": "https://github.com/JayBizzle/Crawler-Detect/tree/v1.2.112"
},
- "time": "2022-03-15T22:19:01+00:00"
+ "time": "2022-10-05T21:52:44+00:00"
},
{
"name": "jenssegers/agent",
@@ -2430,56 +2400,57 @@
},
{
"name": "laravel/framework",
- "version": "v8.83.23",
+ "version": "v9.38.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/framework.git",
- "reference": "bdc707f8b9bcad289b24cd182d98ec7480ac4491"
+ "reference": "abf198e443e06696af3f356b44de67c0fa516107"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/framework/zipball/bdc707f8b9bcad289b24cd182d98ec7480ac4491",
- "reference": "bdc707f8b9bcad289b24cd182d98ec7480ac4491",
+ "url": "https://api.github.com/repos/laravel/framework/zipball/abf198e443e06696af3f356b44de67c0fa516107",
+ "reference": "abf198e443e06696af3f356b44de67c0fa516107",
"shasum": ""
},
"require": {
- "doctrine/inflector": "^1.4|^2.0",
- "dragonmantank/cron-expression": "^3.0.2",
- "egulias/email-validator": "^2.1.10",
- "ext-json": "*",
+ "doctrine/inflector": "^2.0",
+ "dragonmantank/cron-expression": "^3.3.2",
+ "egulias/email-validator": "^3.2.1",
"ext-mbstring": "*",
"ext-openssl": "*",
- "laravel/serializable-closure": "^1.0",
- "league/commonmark": "^1.3|^2.0.2",
- "league/flysystem": "^1.1",
+ "fruitcake/php-cors": "^1.2",
+ "laravel/serializable-closure": "^1.2.2",
+ "league/commonmark": "^2.2",
+ "league/flysystem": "^3.8.0",
"monolog/monolog": "^2.0",
- "nesbot/carbon": "^2.53.1",
- "opis/closure": "^3.6",
- "php": "^7.3|^8.0",
- "psr/container": "^1.0",
- "psr/log": "^1.0|^2.0",
- "psr/simple-cache": "^1.0",
+ "nesbot/carbon": "^2.62.1",
+ "nunomaduro/termwind": "^1.13",
+ "php": "^8.0.2",
+ "psr/container": "^1.1.1|^2.0.1",
+ "psr/log": "^1.0|^2.0|^3.0",
+ "psr/simple-cache": "^1.0|^2.0|^3.0",
"ramsey/uuid": "^4.2.2",
- "swiftmailer/swiftmailer": "^6.3",
- "symfony/console": "^5.4",
- "symfony/error-handler": "^5.4",
- "symfony/finder": "^5.4",
- "symfony/http-foundation": "^5.4",
- "symfony/http-kernel": "^5.4",
- "symfony/mime": "^5.4",
- "symfony/process": "^5.4",
- "symfony/routing": "^5.4",
- "symfony/var-dumper": "^5.4",
- "tijsverkoyen/css-to-inline-styles": "^2.2.2",
+ "symfony/console": "^6.0.9",
+ "symfony/error-handler": "^6.0",
+ "symfony/finder": "^6.0",
+ "symfony/http-foundation": "^6.0",
+ "symfony/http-kernel": "^6.0",
+ "symfony/mailer": "^6.0",
+ "symfony/mime": "^6.0",
+ "symfony/process": "^6.0",
+ "symfony/routing": "^6.0",
+ "symfony/uid": "^6.0",
+ "symfony/var-dumper": "^6.0",
+ "tijsverkoyen/css-to-inline-styles": "^2.2.5",
"vlucas/phpdotenv": "^5.4.1",
- "voku/portable-ascii": "^1.6.1"
+ "voku/portable-ascii": "^2.0"
},
"conflict": {
"tightenco/collect": "<5.5.33"
},
"provide": {
- "psr/container-implementation": "1.0",
- "psr/simple-cache-implementation": "1.0"
+ "psr/container-implementation": "1.1|2.0",
+ "psr/simple-cache-implementation": "1.0|2.0|3.0"
},
"replace": {
"illuminate/auth": "self.version",
@@ -2487,6 +2458,7 @@
"illuminate/bus": "self.version",
"illuminate/cache": "self.version",
"illuminate/collections": "self.version",
+ "illuminate/conditionable": "self.version",
"illuminate/config": "self.version",
"illuminate/console": "self.version",
"illuminate/container": "self.version",
@@ -2515,21 +2487,27 @@
"illuminate/view": "self.version"
},
"require-dev": {
- "aws/aws-sdk-php": "^3.198.1",
+ "ably/ably-php": "^1.0",
+ "aws/aws-sdk-php": "^3.235.5",
"doctrine/dbal": "^2.13.3|^3.1.4",
- "filp/whoops": "^2.14.3",
- "guzzlehttp/guzzle": "^6.5.5|^7.0.1",
- "league/flysystem-cached-adapter": "^1.0",
- "mockery/mockery": "^1.4.4",
- "orchestra/testbench-core": "^6.27",
+ "fakerphp/faker": "^1.9.2",
+ "guzzlehttp/guzzle": "^7.5",
+ "league/flysystem-aws-s3-v3": "^3.0",
+ "league/flysystem-ftp": "^3.0",
+ "league/flysystem-path-prefixing": "^3.3",
+ "league/flysystem-read-only": "^3.3",
+ "league/flysystem-sftp-v3": "^3.0",
+ "mockery/mockery": "^1.5.1",
+ "orchestra/testbench-core": "^7.11",
"pda/pheanstalk": "^4.0",
- "phpunit/phpunit": "^8.5.19|^9.5.8",
- "predis/predis": "^1.1.9",
- "symfony/cache": "^5.4"
+ "phpstan/phpstan": "^1.4.7",
+ "phpunit/phpunit": "^9.5.8",
+ "predis/predis": "^1.1.9|^2.0.2",
+ "symfony/cache": "^6.0"
},
"suggest": {
"ably/ably-php": "Required to use the Ably broadcast driver (^1.0).",
- "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage and SES mail driver (^3.198.1).",
+ "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage, and SES mail driver (^3.235.5).",
"brianium/paratest": "Required to run tests in parallel (^6.0).",
"doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).",
"ext-bcmath": "Required to use the multiple_of validation rule.",
@@ -2541,27 +2519,31 @@
"ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0).",
"fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).",
"filp/whoops": "Required for friendly error pages in development (^2.14.3).",
- "guzzlehttp/guzzle": "Required to use the HTTP Client, Mailgun mail driver and the ping methods on schedules (^6.5.5|^7.0.1).",
+ "guzzlehttp/guzzle": "Required to use the HTTP Client and the ping methods on schedules (^7.5).",
"laravel/tinker": "Required to use the tinker console command (^2.0).",
- "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^1.0).",
- "league/flysystem-cached-adapter": "Required to use the Flysystem cache (^1.0).",
- "league/flysystem-sftp": "Required to use the Flysystem SFTP driver (^1.0).",
- "mockery/mockery": "Required to use mocking (^1.4.4).",
+ "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^3.0).",
+ "league/flysystem-ftp": "Required to use the Flysystem FTP driver (^3.0).",
+ "league/flysystem-path-prefixing": "Required to use the scoped driver (^3.3).",
+ "league/flysystem-read-only": "Required to use read-only disks (^3.3)",
+ "league/flysystem-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).",
+ "mockery/mockery": "Required to use mocking (^1.5.1).",
"nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).",
"pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).",
- "phpunit/phpunit": "Required to use assertions and run tests (^8.5.19|^9.5.8).",
- "predis/predis": "Required to use the predis connector (^1.1.9).",
+ "phpunit/phpunit": "Required to use assertions and run tests (^9.5.8).",
+ "predis/predis": "Required to use the predis connector (^1.1.9|^2.0.2).",
"psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).",
- "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^4.0|^5.0|^6.0|^7.0).",
- "symfony/cache": "Required to PSR-6 cache bridge (^5.4).",
- "symfony/filesystem": "Required to enable support for relative symbolic links (^5.4).",
- "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0).",
- "wildbit/swiftmailer-postmark": "Required to use Postmark mail driver (^3.0)."
+ "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^6.0|^7.0).",
+ "symfony/cache": "Required to PSR-6 cache bridge (^6.0).",
+ "symfony/filesystem": "Required to enable support for relative symbolic links (^6.0).",
+ "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.0).",
+ "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.0).",
+ "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.0).",
+ "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)."
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "8.x-dev"
+ "dev-master": "9.x-dev"
}
},
"autoload": {
@@ -2575,7 +2557,8 @@
"Illuminate\\": "src/Illuminate/",
"Illuminate\\Support\\": [
"src/Illuminate/Macroable/",
- "src/Illuminate/Collections/"
+ "src/Illuminate/Collections/",
+ "src/Illuminate/Conditionable/"
]
}
},
@@ -2599,7 +2582,7 @@
"issues": "https://github.com/laravel/framework/issues",
"source": "https://github.com/laravel/framework"
},
- "time": "2022-07-26T13:30:00+00:00"
+ "time": "2022-11-01T14:05:55+00:00"
},
{
"name": "laravel/helpers",
@@ -2659,16 +2642,16 @@
},
{
"name": "laravel/horizon",
- "version": "v5.10.1",
+ "version": "v5.10.3",
"source": {
"type": "git",
"url": "https://github.com/laravel/horizon.git",
- "reference": "1570c8a4612484a37392eca986f06d01b771cb96"
+ "reference": "22403726851d62c45051114c89106130c348decc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/horizon/zipball/1570c8a4612484a37392eca986f06d01b771cb96",
- "reference": "1570c8a4612484a37392eca986f06d01b771cb96",
+ "url": "https://api.github.com/repos/laravel/horizon/zipball/22403726851d62c45051114c89106130c348decc",
+ "reference": "22403726851d62c45051114c89106130c348decc",
"shasum": ""
},
"require": {
@@ -2730,9 +2713,9 @@
],
"support": {
"issues": "https://github.com/laravel/horizon/issues",
- "source": "https://github.com/laravel/horizon/tree/v5.10.1"
+ "source": "https://github.com/laravel/horizon/tree/v5.10.3"
},
- "time": "2022-09-05T16:33:43+00:00"
+ "time": "2022-10-14T13:33:44+00:00"
},
{
"name": "laravel/passport",
@@ -3002,31 +2985,31 @@
},
{
"name": "lcobucci/clock",
- "version": "2.0.0",
+ "version": "2.2.0",
"source": {
"type": "git",
"url": "https://github.com/lcobucci/clock.git",
- "reference": "353d83fe2e6ae95745b16b3d911813df6a05bfb3"
+ "reference": "fb533e093fd61321bfcbac08b131ce805fe183d3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/lcobucci/clock/zipball/353d83fe2e6ae95745b16b3d911813df6a05bfb3",
- "reference": "353d83fe2e6ae95745b16b3d911813df6a05bfb3",
+ "url": "https://api.github.com/repos/lcobucci/clock/zipball/fb533e093fd61321bfcbac08b131ce805fe183d3",
+ "reference": "fb533e093fd61321bfcbac08b131ce805fe183d3",
"shasum": ""
},
"require": {
- "php": "^7.4 || ^8.0"
+ "php": "^8.0",
+ "stella-maris/clock": "^0.1.4"
},
"require-dev": {
- "infection/infection": "^0.17",
- "lcobucci/coding-standard": "^6.0",
- "phpstan/extension-installer": "^1.0",
+ "infection/infection": "^0.26",
+ "lcobucci/coding-standard": "^8.0",
+ "phpstan/extension-installer": "^1.1",
"phpstan/phpstan": "^0.12",
"phpstan/phpstan-deprecation-rules": "^0.12",
"phpstan/phpstan-phpunit": "^0.12",
"phpstan/phpstan-strict-rules": "^0.12",
- "phpunit/php-code-coverage": "9.1.4",
- "phpunit/phpunit": "9.3.7"
+ "phpunit/phpunit": "^9.5"
},
"type": "library",
"autoload": {
@@ -3047,7 +3030,7 @@
"description": "Yet another clock abstraction",
"support": {
"issues": "https://github.com/lcobucci/clock/issues",
- "source": "https://github.com/lcobucci/clock/tree/2.0.x"
+ "source": "https://github.com/lcobucci/clock/tree/2.2.0"
},
"funding": [
{
@@ -3059,7 +3042,7 @@
"type": "patreon"
}
],
- "time": "2020-08-27T18:56:02+00:00"
+ "time": "2022-04-19T19:34:17+00:00"
},
{
"name": "lcobucci/jwt",
@@ -3137,16 +3120,16 @@
},
{
"name": "league/commonmark",
- "version": "2.3.5",
+ "version": "2.3.7",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/commonmark.git",
- "reference": "84d74485fdb7074f4f9dd6f02ab957b1de513257"
+ "reference": "a36bd2be4f5387c0f3a8792a0d76b7d68865abbf"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/84d74485fdb7074f4f9dd6f02ab957b1de513257",
- "reference": "84d74485fdb7074f4f9dd6f02ab957b1de513257",
+ "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/a36bd2be4f5387c0f3a8792a0d76b7d68865abbf",
+ "reference": "a36bd2be4f5387c0f3a8792a0d76b7d68865abbf",
"shasum": ""
},
"require": {
@@ -3166,7 +3149,7 @@
"erusev/parsedown": "^1.0",
"ext-json": "*",
"github/gfm": "0.29.0",
- "michelf/php-markdown": "^1.4",
+ "michelf/php-markdown": "^1.4 || ^2.0",
"nyholm/psr7": "^1.5",
"phpstan/phpstan": "^1.8.2",
"phpunit/phpunit": "^9.5.21",
@@ -3239,7 +3222,7 @@
"type": "tidelift"
}
],
- "time": "2022-07-29T10:59:45+00:00"
+ "time": "2022-11-03T17:29:46+00:00"
},
{
"name": "league/config",
@@ -3379,54 +3362,49 @@
},
{
"name": "league/flysystem",
- "version": "1.1.9",
+ "version": "3.10.2",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/flysystem.git",
- "reference": "094defdb4a7001845300334e7c1ee2335925ef99"
+ "reference": "b9bd194b016114d6ff6765c09d40c7d427e4e3f6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/094defdb4a7001845300334e7c1ee2335925ef99",
- "reference": "094defdb4a7001845300334e7c1ee2335925ef99",
+ "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/b9bd194b016114d6ff6765c09d40c7d427e4e3f6",
+ "reference": "b9bd194b016114d6ff6765c09d40c7d427e4e3f6",
"shasum": ""
},
"require": {
- "ext-fileinfo": "*",
- "league/mime-type-detection": "^1.3",
- "php": "^7.2.5 || ^8.0"
+ "league/mime-type-detection": "^1.0.0",
+ "php": "^8.0.2"
},
"conflict": {
- "league/flysystem-sftp": "<1.0.6"
+ "aws/aws-sdk-php": "3.209.31 || 3.210.0",
+ "guzzlehttp/guzzle": "<7.0",
+ "guzzlehttp/ringphp": "<1.1.1",
+ "phpseclib/phpseclib": "3.0.15",
+ "symfony/http-client": "<5.2"
},
"require-dev": {
- "phpspec/prophecy": "^1.11.1",
- "phpunit/phpunit": "^8.5.8"
- },
- "suggest": {
- "ext-ftp": "Allows you to use FTP server storage",
- "ext-openssl": "Allows you to use FTPS server storage",
- "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2",
- "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3",
- "league/flysystem-azure": "Allows you to use Windows Azure Blob storage",
- "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching",
- "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem",
- "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files",
- "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib",
- "league/flysystem-webdav": "Allows you to use WebDAV storage",
- "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter",
- "spatie/flysystem-dropbox": "Allows you to use Dropbox storage",
- "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications"
+ "async-aws/s3": "^1.5",
+ "async-aws/simple-s3": "^1.1",
+ "aws/aws-sdk-php": "^3.198.1",
+ "composer/semver": "^3.0",
+ "ext-fileinfo": "*",
+ "ext-ftp": "*",
+ "ext-zip": "*",
+ "friendsofphp/php-cs-fixer": "^3.5",
+ "google/cloud-storage": "^1.23",
+ "microsoft/azure-storage-blob": "^1.1",
+ "phpseclib/phpseclib": "^3.0.14",
+ "phpstan/phpstan": "^0.12.26",
+ "phpunit/phpunit": "^9.5.11",
+ "sabre/dav": "^4.3.1"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.1-dev"
- }
- },
"autoload": {
"psr-4": {
- "League\\Flysystem\\": "src/"
+ "League\\Flysystem\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -3436,93 +3414,30 @@
"authors": [
{
"name": "Frank de Jonge",
- "email": "info@frenky.net"
+ "email": "info@frankdejonge.nl"
}
],
- "description": "Filesystem abstraction: Many filesystems, one API.",
+ "description": "File storage abstraction for PHP",
"keywords": [
- "Cloud Files",
"WebDAV",
- "abstraction",
"aws",
"cloud",
- "copy.com",
- "dropbox",
- "file systems",
+ "file",
"files",
"filesystem",
"filesystems",
"ftp",
- "rackspace",
- "remote",
"s3",
"sftp",
"storage"
],
"support": {
"issues": "https://github.com/thephpleague/flysystem/issues",
- "source": "https://github.com/thephpleague/flysystem/tree/1.1.9"
+ "source": "https://github.com/thephpleague/flysystem/tree/3.10.2"
},
"funding": [
{
- "url": "https://offset.earth/frankdejonge",
- "type": "other"
- }
- ],
- "time": "2021-12-09T09:40:50+00:00"
- },
- {
- "name": "league/flysystem-aws-s3-v3",
- "version": "1.0.30",
- "source": {
- "type": "git",
- "url": "https://github.com/thephpleague/flysystem-aws-s3-v3.git",
- "reference": "af286f291ebab6877bac0c359c6c2cb017eb061d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/af286f291ebab6877bac0c359c6c2cb017eb061d",
- "reference": "af286f291ebab6877bac0c359c6c2cb017eb061d",
- "shasum": ""
- },
- "require": {
- "aws/aws-sdk-php": "^3.20.0",
- "league/flysystem": "^1.0.40",
- "php": ">=5.5.0"
- },
- "require-dev": {
- "henrikbjorn/phpspec-code-coverage": "~1.0.1",
- "phpspec/phpspec": "^2.0.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "League\\Flysystem\\AwsS3v3\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Frank de Jonge",
- "email": "info@frenky.net"
- }
- ],
- "description": "Flysystem adapter for the AWS S3 SDK v3.x",
- "support": {
- "issues": "https://github.com/thephpleague/flysystem-aws-s3-v3/issues",
- "source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/1.0.30"
- },
- "funding": [
- {
- "url": "https://offset.earth/frankdejonge",
+ "url": "https://ecologi.com/frankdejonge",
"type": "custom"
},
{
@@ -3534,40 +3449,36 @@
"type": "tidelift"
}
],
- "time": "2022-07-02T13:51:38+00:00"
+ "time": "2022-10-25T07:01:47+00:00"
},
{
- "name": "league/flysystem-cached-adapter",
- "version": "1.1.0",
+ "name": "league/flysystem-aws-s3-v3",
+ "version": "3.10.0",
"source": {
"type": "git",
- "url": "https://github.com/thephpleague/flysystem-cached-adapter.git",
- "reference": "d1925efb2207ac4be3ad0c40b8277175f99ffaff"
+ "url": "https://github.com/thephpleague/flysystem-aws-s3-v3.git",
+ "reference": "95825edc5463006853e64338a4d96a977e8a10ca"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/flysystem-cached-adapter/zipball/d1925efb2207ac4be3ad0c40b8277175f99ffaff",
- "reference": "d1925efb2207ac4be3ad0c40b8277175f99ffaff",
+ "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/95825edc5463006853e64338a4d96a977e8a10ca",
+ "reference": "95825edc5463006853e64338a4d96a977e8a10ca",
"shasum": ""
},
"require": {
- "league/flysystem": "~1.0",
- "psr/cache": "^1.0.0"
+ "aws/aws-sdk-php": "^3.132.4",
+ "league/flysystem": "^3.10.0",
+ "league/mime-type-detection": "^1.0.0",
+ "php": "^8.0.2"
},
- "require-dev": {
- "mockery/mockery": "~0.9",
- "phpspec/phpspec": "^3.4",
- "phpunit/phpunit": "^5.7",
- "predis/predis": "~1.0",
- "tedivm/stash": "~0.12"
- },
- "suggest": {
- "ext-phpredis": "Pure C implemented extension for PHP"
+ "conflict": {
+ "guzzlehttp/guzzle": "<7.0",
+ "guzzlehttp/ringphp": "<1.1.1"
},
"type": "library",
"autoload": {
"psr-4": {
- "League\\Flysystem\\Cached\\": "src/"
+ "League\\Flysystem\\AwsS3V3\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -3576,16 +3487,39 @@
],
"authors": [
{
- "name": "frankdejonge",
- "email": "info@frenky.net"
+ "name": "Frank de Jonge",
+ "email": "info@frankdejonge.nl"
}
],
- "description": "An adapter decorator to enable meta-data caching.",
+ "description": "AWS S3 filesystem adapter for Flysystem.",
+ "keywords": [
+ "Flysystem",
+ "aws",
+ "file",
+ "files",
+ "filesystem",
+ "s3",
+ "storage"
+ ],
"support": {
- "issues": "https://github.com/thephpleague/flysystem-cached-adapter/issues",
- "source": "https://github.com/thephpleague/flysystem-cached-adapter/tree/master"
+ "issues": "https://github.com/thephpleague/flysystem-aws-s3-v3/issues",
+ "source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/3.10.0"
},
- "time": "2020-07-25T15:56:04+00:00"
+ "funding": [
+ {
+ "url": "https://ecologi.com/frankdejonge",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/frankdejonge",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/league/flysystem",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-10-20T21:00:57+00:00"
},
{
"name": "league/iso3166",
@@ -3790,37 +3724,38 @@
},
{
"name": "league/uri",
- "version": "6.7.2",
+ "version": "6.8.0",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/uri.git",
- "reference": "d3b50812dd51f3fbf176344cc2981db03d10fe06"
+ "reference": "a700b4656e4c54371b799ac61e300ab25a2d1d39"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/uri/zipball/d3b50812dd51f3fbf176344cc2981db03d10fe06",
- "reference": "d3b50812dd51f3fbf176344cc2981db03d10fe06",
+ "url": "https://api.github.com/repos/thephpleague/uri/zipball/a700b4656e4c54371b799ac61e300ab25a2d1d39",
+ "reference": "a700b4656e4c54371b799ac61e300ab25a2d1d39",
"shasum": ""
},
"require": {
"ext-json": "*",
"league/uri-interfaces": "^2.3",
- "php": "^7.4 || ^8.0",
- "psr/http-message": "^1.0"
+ "php": "^8.1",
+ "psr/http-message": "^1.0.1"
},
"conflict": {
"league/uri-schemes": "^1.0"
},
"require-dev": {
- "friendsofphp/php-cs-fixer": "^v3.3.2",
- "nyholm/psr7": "^1.5",
- "php-http/psr7-integration-tests": "^1.1",
- "phpstan/phpstan": "^1.2.0",
+ "friendsofphp/php-cs-fixer": "^v3.9.5",
+ "nyholm/psr7": "^1.5.1",
+ "php-http/psr7-integration-tests": "^1.1.1",
+ "phpbench/phpbench": "^1.2.6",
+ "phpstan/phpstan": "^1.8.5",
"phpstan/phpstan-deprecation-rules": "^1.0",
- "phpstan/phpstan-phpunit": "^1.0.0",
- "phpstan/phpstan-strict-rules": "^1.1.0",
- "phpunit/phpunit": "^9.5.10",
- "psr/http-factory": "^1.0"
+ "phpstan/phpstan-phpunit": "^1.1.1",
+ "phpstan/phpstan-strict-rules": "^1.4.3",
+ "phpunit/phpunit": "^9.5.24",
+ "psr/http-factory": "^1.0.1"
},
"suggest": {
"ext-fileinfo": "Needed to create Data URI from a filepath",
@@ -3877,7 +3812,7 @@
"docs": "https://uri.thephpleague.com",
"forum": "https://thephpleague.slack.com",
"issues": "https://github.com/thephpleague/uri/issues",
- "source": "https://github.com/thephpleague/uri/tree/6.7.2"
+ "source": "https://github.com/thephpleague/uri/tree/6.8.0"
},
"funding": [
{
@@ -3885,7 +3820,7 @@
"type": "github"
}
],
- "time": "2022-09-13T19:50:42+00:00"
+ "time": "2022-09-13T19:58:47+00:00"
},
{
"name": "league/uri-interfaces",
@@ -4426,50 +4361,6 @@
},
"time": "2022-09-12T23:36:20+00:00"
},
- {
- "name": "neutron/temporary-filesystem",
- "version": "3.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/romainneutron/Temporary-Filesystem.git",
- "reference": "55f3d4896eff3bf070e491916e6c564db5e640b5"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/romainneutron/Temporary-Filesystem/zipball/55f3d4896eff3bf070e491916e6c564db5e640b5",
- "reference": "55f3d4896eff3bf070e491916e6c564db5e640b5",
- "shasum": ""
- },
- "require": {
- "php": ">=5.6",
- "symfony/filesystem": "^2.3 || ^3.0 || ^4.0 || ^5.0 || ^6.0"
- },
- "require-dev": {
- "symfony/phpunit-bridge": "^5.0.4 || ^6.0"
- },
- "type": "library",
- "autoload": {
- "psr-0": {
- "Neutron": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Romain Neutron",
- "email": "imprec@gmail.com"
- }
- ],
- "description": "Symfony filesystem extension to handle temporary files",
- "support": {
- "issues": "https://github.com/romainneutron/Temporary-Filesystem/issues",
- "source": "https://github.com/romainneutron/Temporary-Filesystem/tree/3.0.1"
- },
- "time": "2021-12-14T07:30:33+00:00"
- },
{
"name": "nikic/php-parser",
"version": "v4.15.1",
@@ -4526,6 +4417,92 @@
},
"time": "2022-09-04T07:30:47+00:00"
},
+ {
+ "name": "nunomaduro/termwind",
+ "version": "v1.14.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nunomaduro/termwind.git",
+ "reference": "9a8218511eb1a0965629ff820dda25985440aefc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/9a8218511eb1a0965629ff820dda25985440aefc",
+ "reference": "9a8218511eb1a0965629ff820dda25985440aefc",
+ "shasum": ""
+ },
+ "require": {
+ "ext-mbstring": "*",
+ "php": "^8.0",
+ "symfony/console": "^5.3.0|^6.0.0"
+ },
+ "require-dev": {
+ "ergebnis/phpstan-rules": "^1.0.",
+ "illuminate/console": "^8.0|^9.0",
+ "illuminate/support": "^8.0|^9.0",
+ "laravel/pint": "^1.0.0",
+ "pestphp/pest": "^1.21.0",
+ "pestphp/pest-plugin-mock": "^1.0",
+ "phpstan/phpstan": "^1.4.6",
+ "phpstan/phpstan-strict-rules": "^1.1.0",
+ "symfony/var-dumper": "^5.2.7|^6.0.0",
+ "thecodingmachine/phpstan-strict-rules": "^1.0.0"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Termwind\\Laravel\\TermwindServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/Functions.php"
+ ],
+ "psr-4": {
+ "Termwind\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nuno Maduro",
+ "email": "enunomaduro@gmail.com"
+ }
+ ],
+ "description": "Its like Tailwind CSS, but for the console.",
+ "keywords": [
+ "cli",
+ "console",
+ "css",
+ "package",
+ "php",
+ "style"
+ ],
+ "support": {
+ "issues": "https://github.com/nunomaduro/termwind/issues",
+ "source": "https://github.com/nunomaduro/termwind/tree/v1.14.2"
+ },
+ "funding": [
+ {
+ "url": "https://www.paypal.com/paypalme/enunomaduro",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/nunomaduro",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/xiCO2k",
+ "type": "github"
+ }
+ ],
+ "time": "2022-10-28T22:51:32+00:00"
+ },
{
"name": "nyholm/psr7",
"version": "1.5.1",
@@ -4603,71 +4580,6 @@
],
"time": "2022-06-22T07:13:36+00:00"
},
- {
- "name": "opis/closure",
- "version": "3.6.3",
- "source": {
- "type": "git",
- "url": "https://github.com/opis/closure.git",
- "reference": "3d81e4309d2a927abbe66df935f4bb60082805ad"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/opis/closure/zipball/3d81e4309d2a927abbe66df935f4bb60082805ad",
- "reference": "3d81e4309d2a927abbe66df935f4bb60082805ad",
- "shasum": ""
- },
- "require": {
- "php": "^5.4 || ^7.0 || ^8.0"
- },
- "require-dev": {
- "jeremeamia/superclosure": "^2.0",
- "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.6.x-dev"
- }
- },
- "autoload": {
- "files": [
- "functions.php"
- ],
- "psr-4": {
- "Opis\\Closure\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Marius Sarca",
- "email": "marius.sarca@gmail.com"
- },
- {
- "name": "Sorin Sarca",
- "email": "sarca_sorin@hotmail.com"
- }
- ],
- "description": "A library that can be used to serialize closures (anonymous functions) and arbitrary objects.",
- "homepage": "https://opis.io/closure",
- "keywords": [
- "anonymous functions",
- "closure",
- "function",
- "serializable",
- "serialization",
- "serialize"
- ],
- "support": {
- "issues": "https://github.com/opis/closure/issues",
- "source": "https://github.com/opis/closure/tree/3.6.3"
- },
- "time": "2022-01-27T09:35:39+00:00"
- },
{
"name": "paragonie/constant_time_encoding",
"version": "v2.6.3",
@@ -4787,16 +4699,16 @@
},
{
"name": "paragonie/sodium_compat",
- "version": "v1.18.0",
+ "version": "v1.19.0",
"source": {
"type": "git",
"url": "https://github.com/paragonie/sodium_compat.git",
- "reference": "906e0b925895d3a5941eda25f371fbafb3cbc22f"
+ "reference": "cb15e403ecbe6a6cc515f855c310eb6b1872a933"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/906e0b925895d3a5941eda25f371fbafb3cbc22f",
- "reference": "906e0b925895d3a5941eda25f371fbafb3cbc22f",
+ "url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/cb15e403ecbe6a6cc515f855c310eb6b1872a933",
+ "reference": "cb15e403ecbe6a6cc515f855c310eb6b1872a933",
"shasum": ""
},
"require": {
@@ -4867,43 +4779,36 @@
],
"support": {
"issues": "https://github.com/paragonie/sodium_compat/issues",
- "source": "https://github.com/paragonie/sodium_compat/tree/v1.18.0"
+ "source": "https://github.com/paragonie/sodium_compat/tree/v1.19.0"
},
- "time": "2022-09-13T20:54:27+00:00"
+ "time": "2022-09-26T03:40:35+00:00"
},
{
"name": "pbmedia/laravel-ffmpeg",
- "version": "7.8.1",
+ "version": "8.1.2",
"source": {
"type": "git",
"url": "https://github.com/protonemedia/laravel-ffmpeg.git",
- "reference": "8fd5667b8898b30531b335ef43c0938d92b60e87"
+ "reference": "e6f93d8e3b1a917d6991a1747e0e5f73531f1e08"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/protonemedia/laravel-ffmpeg/zipball/8fd5667b8898b30531b335ef43c0938d92b60e87",
- "reference": "8fd5667b8898b30531b335ef43c0938d92b60e87",
+ "url": "https://api.github.com/repos/protonemedia/laravel-ffmpeg/zipball/e6f93d8e3b1a917d6991a1747e0e5f73531f1e08",
+ "reference": "e6f93d8e3b1a917d6991a1747e0e5f73531f1e08",
"shasum": ""
},
"require": {
- "evenement/evenement": "^3.0",
- "illuminate/bus": "^8.67",
- "illuminate/config": "^8.67",
- "illuminate/filesystem": "^8.67",
- "illuminate/log": "^8.67",
- "illuminate/support": "^8.67",
- "league/flysystem": "^1.1.4",
- "php": "^7.4 || ^8.0 || ^8.1",
- "php-ffmpeg/php-ffmpeg": "^0.19 || ^1.0"
+ "illuminate/contracts": "^9.0",
+ "php": "^8.0|^8.1",
+ "php-ffmpeg/php-ffmpeg": "^1.0.1"
},
"require-dev": {
- "league/flysystem-memory": "^1.0",
+ "league/flysystem-memory": "^3.0",
"mockery/mockery": "^1.3.3",
- "orchestra/testbench": "^6.0",
- "phpunit/phpunit": "9.4.*",
- "spatie/image": "^1.7",
- "spatie/phpunit-snapshot-assertions": "^4.2",
- "twistor/flysystem-http": "^0.2.0"
+ "orchestra/testbench": "^7.0",
+ "phpunit/phpunit": "^9.5.10",
+ "spatie/image": "^2.0",
+ "spatie/phpunit-snapshot-assertions": "^4.2"
},
"type": "library",
"extra": {
@@ -4934,20 +4839,17 @@
}
],
"description": "FFMpeg for Laravel",
- "homepage": "https://github.com/pascalbaljetmedia/laravel-ffmpeg",
+ "homepage": "https://github.com/protonemedia/laravel-ffmpeg",
"keywords": [
"ffmpeg",
"laravel",
"laravel-ffmpeg",
- "pascal baljet media",
- "pascalbaljetmedia",
- "pbmedia",
"protone media",
"protonemedia"
],
"support": {
"issues": "https://github.com/protonemedia/laravel-ffmpeg/issues",
- "source": "https://github.com/protonemedia/laravel-ffmpeg/tree/7.8.1"
+ "source": "https://github.com/protonemedia/laravel-ffmpeg/tree/8.1.2"
},
"funding": [
{
@@ -4955,45 +4857,42 @@
"type": "github"
}
],
- "time": "2022-02-10T20:07:45+00:00"
+ "time": "2022-05-23T12:00:47+00:00"
},
{
"name": "php-ffmpeg/php-ffmpeg",
- "version": "v0.19.0",
+ "version": "v1.0.1",
"source": {
"type": "git",
"url": "https://github.com/PHP-FFMpeg/PHP-FFMpeg.git",
- "reference": "22b71931fd1a97207788636b283eee1c0067eff7"
+ "reference": "bda300b69acecf791d2934cd5ed43a8ba24febf6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/PHP-FFMpeg/PHP-FFMpeg/zipball/22b71931fd1a97207788636b283eee1c0067eff7",
- "reference": "22b71931fd1a97207788636b283eee1c0067eff7",
+ "url": "https://api.github.com/repos/PHP-FFMpeg/PHP-FFMpeg/zipball/bda300b69acecf791d2934cd5ed43a8ba24febf6",
+ "reference": "bda300b69acecf791d2934cd5ed43a8ba24febf6",
"shasum": ""
},
"require": {
- "alchemy/binary-driver": "^1.5 || ~2.0.0 || ^5.0",
- "evenement/evenement": "^3.0 || ^2.0 || ^1.0",
- "neutron/temporary-filesystem": "^2.1.1 || ^3.0",
- "php": ">=5.5.9",
- "symfony/cache": "^3.1 || ^4.0 || ^5.0 || ^6.0"
+ "evenement/evenement": "^3.0",
+ "php": "^8.0 || ^8.1",
+ "psr/log": "^1.0 || ^2.0 || ^3.0",
+ "spatie/temporary-directory": "^2.0",
+ "symfony/cache": "^5.4 || ^6.0",
+ "symfony/process": "^5.4 || ^6.0"
},
"require-dev": {
- "symfony/phpunit-bridge": "^5.0.4",
- "symfony/process": "2.8 || 3.3"
+ "mockery/mockery": "^1.5",
+ "phpunit/phpunit": "^9.5.10"
},
"suggest": {
"php-ffmpeg/extras": "A compilation of common audio & video drivers for PHP-FFMpeg"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "0.x-dev"
- }
- },
"autoload": {
- "psr-0": {
- "FFMpeg": "src"
+ "psr-4": {
+ "FFMpeg\\": "src/FFMpeg",
+ "Alchemy\\BinaryDriver\\": "src/Alchemy/BinaryDriver"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -5025,6 +4924,11 @@
"name": "Jens Hausdorf",
"email": "hello@jens-hausdorf.de",
"homepage": "https://jens-hausdorf.de"
+ },
+ {
+ "name": "Pascal Baljet",
+ "email": "pascal@protone.media",
+ "homepage": "https://protone.media"
}
],
"description": "FFMpeg PHP, an Object Oriented library to communicate with AVconv / ffmpeg",
@@ -5040,9 +4944,9 @@
],
"support": {
"issues": "https://github.com/PHP-FFMpeg/PHP-FFMpeg/issues",
- "source": "https://github.com/PHP-FFMpeg/PHP-FFMpeg/tree/v0.19.0"
+ "source": "https://github.com/PHP-FFMpeg/PHP-FFMpeg/tree/v1.0.1"
},
- "time": "2021-12-20T11:51:26+00:00"
+ "time": "2022-02-22T15:54:06+00:00"
},
{
"name": "php-http/message-factory",
@@ -5175,16 +5079,16 @@
},
{
"name": "phpseclib/phpseclib",
- "version": "2.0.38",
+ "version": "2.0.39",
"source": {
"type": "git",
"url": "https://github.com/phpseclib/phpseclib.git",
- "reference": "b03536539f43a4f9aa33c4f0b2f3a1c752088fcd"
+ "reference": "f3a0e2b715c40cf1fd270d444901b63311725d63"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/b03536539f43a4f9aa33c4f0b2f3a1c752088fcd",
- "reference": "b03536539f43a4f9aa33c4f0b2f3a1c752088fcd",
+ "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/f3a0e2b715c40cf1fd270d444901b63311725d63",
+ "reference": "f3a0e2b715c40cf1fd270d444901b63311725d63",
"shasum": ""
},
"require": {
@@ -5265,7 +5169,7 @@
],
"support": {
"issues": "https://github.com/phpseclib/phpseclib/issues",
- "source": "https://github.com/phpseclib/phpseclib/tree/2.0.38"
+ "source": "https://github.com/phpseclib/phpseclib/tree/2.0.39"
},
"funding": [
{
@@ -5281,7 +5185,7 @@
"type": "tidelift"
}
],
- "time": "2022-09-02T17:04:26+00:00"
+ "time": "2022-10-24T10:49:03+00:00"
},
{
"name": "pixelfed/fractal",
@@ -5411,20 +5315,20 @@
},
{
"name": "pixelfed/zttp",
- "version": "v0.4.1",
+ "version": "v0.5.0",
"source": {
"type": "git",
"url": "https://github.com/pixelfed/zttp.git",
- "reference": "9a95a42716eb3e71a0a88411805737965bb77c05"
+ "reference": "e78af39d75171f360ab4c32eed1c7a71b67b5e3b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/pixelfed/zttp/zipball/9a95a42716eb3e71a0a88411805737965bb77c05",
- "reference": "9a95a42716eb3e71a0a88411805737965bb77c05",
+ "url": "https://api.github.com/repos/pixelfed/zttp/zipball/e78af39d75171f360ab4c32eed1c7a71b67b5e3b",
+ "reference": "e78af39d75171f360ab4c32eed1c7a71b67b5e3b",
"shasum": ""
},
"require": {
- "guzzlehttp/guzzle": "^6.0",
+ "guzzlehttp/guzzle": "^6.0|^7.0",
"php": ">=7.0",
"tightenco/collect": "^5.4"
},
@@ -5454,9 +5358,9 @@
"http"
],
"support": {
- "source": "https://github.com/pixelfed/zttp/tree/v0.4.1"
+ "source": "https://github.com/pixelfed/zttp/tree/v0.5.0"
},
- "time": "2018-07-30T05:04:42+00:00"
+ "time": "2022-08-06T04:58:13+00:00"
},
{
"name": "pragmarx/google2fa",
@@ -5578,20 +5482,20 @@
},
{
"name": "psr/cache",
- "version": "1.0.1",
+ "version": "3.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/cache.git",
- "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8"
+ "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8",
- "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8",
+ "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf",
+ "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf",
"shasum": ""
},
"require": {
- "php": ">=5.3.0"
+ "php": ">=8.0.0"
},
"type": "library",
"extra": {
@@ -5611,7 +5515,7 @@
"authors": [
{
"name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
+ "homepage": "https://www.php-fig.org/"
}
],
"description": "Common interface for caching libraries",
@@ -5621,28 +5525,33 @@
"psr-6"
],
"support": {
- "source": "https://github.com/php-fig/cache/tree/master"
+ "source": "https://github.com/php-fig/cache/tree/3.0.0"
},
- "time": "2016-08-06T20:24:11+00:00"
+ "time": "2021-02-03T23:26:27+00:00"
},
{
"name": "psr/container",
- "version": "1.1.2",
+ "version": "2.0.2",
"source": {
"type": "git",
"url": "https://github.com/php-fig/container.git",
- "reference": "513e0666f7216c7459170d56df27dfcefe1689ea"
+ "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea",
- "reference": "513e0666f7216c7459170d56df27dfcefe1689ea",
+ "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963",
+ "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963",
"shasum": ""
},
"require": {
"php": ">=7.4.0"
},
"type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
"autoload": {
"psr-4": {
"Psr\\Container\\": "src/"
@@ -5669,9 +5578,9 @@
],
"support": {
"issues": "https://github.com/php-fig/container/issues",
- "source": "https://github.com/php-fig/container/tree/1.1.2"
+ "source": "https://github.com/php-fig/container/tree/2.0.2"
},
- "time": "2021-11-05T16:50:12+00:00"
+ "time": "2021-11-05T16:47:00+00:00"
},
{
"name": "psr/event-dispatcher",
@@ -5723,6 +5632,58 @@
},
"time": "2019-01-08T18:20:26+00:00"
},
+ {
+ "name": "psr/http-client",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-client.git",
+ "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621",
+ "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0 || ^8.0",
+ "psr/http-message": "^1.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Client\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for HTTP clients",
+ "homepage": "https://github.com/php-fig/http-client",
+ "keywords": [
+ "http",
+ "http-client",
+ "psr",
+ "psr-18"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/http-client/tree/master"
+ },
+ "time": "2020-06-29T06:28:15+00:00"
+ },
{
"name": "psr/http-factory",
"version": "1.0.1",
@@ -5833,30 +5794,30 @@
},
{
"name": "psr/log",
- "version": "1.1.4",
+ "version": "3.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
- "reference": "d49695b909c3b7628b6289db5479a1c204601f11"
+ "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11",
- "reference": "d49695b909c3b7628b6289db5479a1c204601f11",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001",
+ "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001",
"shasum": ""
},
"require": {
- "php": ">=5.3.0"
+ "php": ">=8.0.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.1.x-dev"
+ "dev-master": "3.x-dev"
}
},
"autoload": {
"psr-4": {
- "Psr\\Log\\": "Psr/Log/"
+ "Psr\\Log\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -5877,31 +5838,31 @@
"psr-3"
],
"support": {
- "source": "https://github.com/php-fig/log/tree/1.1.4"
+ "source": "https://github.com/php-fig/log/tree/3.0.0"
},
- "time": "2021-05-03T11:20:27+00:00"
+ "time": "2021-07-14T16:46:02+00:00"
},
{
"name": "psr/simple-cache",
- "version": "1.0.1",
+ "version": "3.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/simple-cache.git",
- "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b"
+ "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
- "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
+ "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865",
+ "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865",
"shasum": ""
},
"require": {
- "php": ">=5.3.0"
+ "php": ">=8.0.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.0.x-dev"
+ "dev-master": "3.0.x-dev"
}
},
"autoload": {
@@ -5916,7 +5877,7 @@
"authors": [
{
"name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
+ "homepage": "https://www.php-fig.org/"
}
],
"description": "Common interfaces for simple caching",
@@ -5928,22 +5889,22 @@
"simple-cache"
],
"support": {
- "source": "https://github.com/php-fig/simple-cache/tree/master"
+ "source": "https://github.com/php-fig/simple-cache/tree/3.0.0"
},
- "time": "2017-10-23T01:57:42+00:00"
+ "time": "2021-10-29T13:26:27+00:00"
},
{
"name": "psy/psysh",
- "version": "v0.11.8",
+ "version": "v0.11.9",
"source": {
"type": "git",
"url": "https://github.com/bobthecow/psysh.git",
- "reference": "f455acf3645262ae389b10e9beba0c358aa6994e"
+ "reference": "1acec99d6684a54ff92f8b548a4e41b566963778"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/bobthecow/psysh/zipball/f455acf3645262ae389b10e9beba0c358aa6994e",
- "reference": "f455acf3645262ae389b10e9beba0c358aa6994e",
+ "url": "https://api.github.com/repos/bobthecow/psysh/zipball/1acec99d6684a54ff92f8b548a4e41b566963778",
+ "reference": "1acec99d6684a54ff92f8b548a4e41b566963778",
"shasum": ""
},
"require": {
@@ -6004,33 +5965,35 @@
],
"support": {
"issues": "https://github.com/bobthecow/psysh/issues",
- "source": "https://github.com/bobthecow/psysh/tree/v0.11.8"
+ "source": "https://github.com/bobthecow/psysh/tree/v0.11.9"
},
- "time": "2022-07-28T14:25:11+00:00"
+ "time": "2022-11-06T15:29:46+00:00"
},
{
"name": "pusher/pusher-php-server",
- "version": "5.0.3",
+ "version": "7.2.1",
"source": {
"type": "git",
"url": "https://github.com/pusher/pusher-http-php.git",
- "reference": "1024077ff60beebaf5706b4e0208a1e648d20cf4"
+ "reference": "5d708d43d774218e1068037c56a887658a4930ac"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/pusher/pusher-http-php/zipball/1024077ff60beebaf5706b4e0208a1e648d20cf4",
- "reference": "1024077ff60beebaf5706b4e0208a1e648d20cf4",
+ "url": "https://api.github.com/repos/pusher/pusher-http-php/zipball/5d708d43d774218e1068037c56a887658a4930ac",
+ "reference": "5d708d43d774218e1068037c56a887658a4930ac",
"shasum": ""
},
"require": {
"ext-curl": "*",
+ "ext-json": "*",
+ "guzzlehttp/guzzle": "^7.2",
"paragonie/sodium_compat": "^1.6",
- "php": "^7.1|^8.0",
- "psr/log": "^1.0"
+ "php": "^7.3|^8.0",
+ "psr/log": "^1.0|^2.0|^3.0"
},
"require-dev": {
"overtrue/phplint": "^2.3",
- "phpunit/phpunit": "^7.2|^8.5|^9.3"
+ "phpunit/phpunit": "^9.3"
},
"type": "library",
"extra": {
@@ -6063,9 +6026,9 @@
],
"support": {
"issues": "https://github.com/pusher/pusher-http-php/issues",
- "source": "https://github.com/pusher/pusher-http-php/tree/5.0.3"
+ "source": "https://github.com/pusher/pusher-http-php/tree/7.2.1"
},
- "time": "2021-03-15T09:17:01+00:00"
+ "time": "2022-10-17T08:33:16+00:00"
},
{
"name": "ralouphie/getallheaders",
@@ -6192,25 +6155,23 @@
},
{
"name": "ramsey/uuid",
- "version": "4.2.3",
+ "version": "4.6.0",
"source": {
"type": "git",
"url": "https://github.com/ramsey/uuid.git",
- "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df"
+ "reference": "ad63bc700e7d021039e30ce464eba384c4a1d40f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df",
- "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df",
+ "url": "https://api.github.com/repos/ramsey/uuid/zipball/ad63bc700e7d021039e30ce464eba384c4a1d40f",
+ "reference": "ad63bc700e7d021039e30ce464eba384c4a1d40f",
"shasum": ""
},
"require": {
- "brick/math": "^0.8 || ^0.9",
+ "brick/math": "^0.8.8 || ^0.9 || ^0.10",
"ext-json": "*",
- "php": "^7.2 || ^8.0",
- "ramsey/collection": "^1.0",
- "symfony/polyfill-ctype": "^1.8",
- "symfony/polyfill-php80": "^1.14"
+ "php": "^8.0",
+ "ramsey/collection": "^1.0"
},
"replace": {
"rhumsaa/uuid": "self.version"
@@ -6222,24 +6183,23 @@
"doctrine/annotations": "^1.8",
"ergebnis/composer-normalize": "^2.15",
"mockery/mockery": "^1.3",
- "moontoast/math": "^1.1",
"paragonie/random-lib": "^2",
"php-mock/php-mock": "^2.2",
"php-mock/php-mock-mockery": "^1.3",
"php-parallel-lint/php-parallel-lint": "^1.1",
"phpbench/phpbench": "^1.0",
- "phpstan/extension-installer": "^1.0",
- "phpstan/phpstan": "^0.12",
- "phpstan/phpstan-mockery": "^0.12",
- "phpstan/phpstan-phpunit": "^0.12",
+ "phpstan/extension-installer": "^1.1",
+ "phpstan/phpstan": "^1.8",
+ "phpstan/phpstan-mockery": "^1.1",
+ "phpstan/phpstan-phpunit": "^1.1",
"phpunit/phpunit": "^8.5 || ^9",
- "slevomat/coding-standard": "^7.0",
+ "ramsey/composer-repl": "^1.4",
+ "slevomat/coding-standard": "^8.4",
"squizlabs/php_codesniffer": "^3.5",
"vimeo/psalm": "^4.9"
},
"suggest": {
"ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.",
- "ext-ctype": "Enables faster processing of character classification using ctype functions.",
"ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.",
"ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.",
"paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter",
@@ -6247,9 +6207,6 @@
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-main": "4.x-dev"
- },
"captainhook": {
"force-install": true
}
@@ -6274,7 +6231,7 @@
],
"support": {
"issues": "https://github.com/ramsey/uuid/issues",
- "source": "https://github.com/ramsey/uuid/tree/4.2.3"
+ "source": "https://github.com/ramsey/uuid/tree/4.6.0"
},
"funding": [
{
@@ -6286,7 +6243,7 @@
"type": "tidelift"
}
],
- "time": "2021-09-25T23:10:38+00:00"
+ "time": "2022-11-05T23:03:38+00:00"
},
{
"name": "ratchet/rfc6455",
@@ -6581,16 +6538,16 @@
},
{
"name": "react/http",
- "version": "v1.7.0",
+ "version": "v1.8.0",
"source": {
"type": "git",
"url": "https://github.com/reactphp/http.git",
- "reference": "4a1e85382e8c2a9e0fdb8ac04e94585da2083bfa"
+ "reference": "aa7512ee17258c88466de30f9cb44ec5f9df3ff3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/reactphp/http/zipball/4a1e85382e8c2a9e0fdb8ac04e94585da2083bfa",
- "reference": "4a1e85382e8c2a9e0fdb8ac04e94585da2083bfa",
+ "url": "https://api.github.com/repos/reactphp/http/zipball/aa7512ee17258c88466de30f9cb44ec5f9df3ff3",
+ "reference": "aa7512ee17258c88466de30f9cb44ec5f9df3ff3",
"shasum": ""
},
"require": {
@@ -6599,16 +6556,16 @@
"php": ">=5.3.0",
"psr/http-message": "^1.0",
"react/event-loop": "^1.2",
- "react/promise": "^2.3 || ^1.2.1",
- "react/promise-stream": "^1.1",
- "react/socket": "^1.9",
+ "react/promise": "^3 || ^2.3 || ^1.2.1",
+ "react/promise-stream": "^1.4",
+ "react/socket": "^1.12",
"react/stream": "^1.2",
"ringcentral/psr7": "^1.2"
},
"require-dev": {
- "clue/http-proxy-react": "^1.7",
- "clue/reactphp-ssh-proxy": "^1.3",
- "clue/socks-react": "^1.3",
+ "clue/http-proxy-react": "^1.8",
+ "clue/reactphp-ssh-proxy": "^1.4",
+ "clue/socks-react": "^1.4",
"phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35",
"react/async": "^4 || ^3 || ^2",
"react/promise-timer": "^1.9"
@@ -6661,7 +6618,7 @@
],
"support": {
"issues": "https://github.com/reactphp/http/issues",
- "source": "https://github.com/reactphp/http/tree/v1.7.0"
+ "source": "https://github.com/reactphp/http/tree/v1.8.0"
},
"funding": [
{
@@ -6673,7 +6630,7 @@
"type": "github"
}
],
- "time": "2022-08-23T12:31:28+00:00"
+ "time": "2022-09-29T12:55:52+00:00"
},
{
"name": "react/promise",
@@ -7146,24 +7103,24 @@
},
{
"name": "spatie/db-dumper",
- "version": "2.21.1",
+ "version": "3.3.0",
"source": {
"type": "git",
"url": "https://github.com/spatie/db-dumper.git",
- "reference": "05e5955fb882008a8947c5a45146d86cfafa10d1"
+ "reference": "129b8254b2c9f10881a754a692bd9507b09a1893"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/spatie/db-dumper/zipball/05e5955fb882008a8947c5a45146d86cfafa10d1",
- "reference": "05e5955fb882008a8947c5a45146d86cfafa10d1",
+ "url": "https://api.github.com/repos/spatie/db-dumper/zipball/129b8254b2c9f10881a754a692bd9507b09a1893",
+ "reference": "129b8254b2c9f10881a754a692bd9507b09a1893",
"shasum": ""
},
"require": {
- "php": "^7.2|^8.0",
- "symfony/process": "^4.2|^5.0"
+ "php": "^8.0",
+ "symfony/process": "^5.0|^6.0"
},
"require-dev": {
- "phpunit/phpunit": "^7.0|^8.0|^9.0"
+ "phpunit/phpunit": "^9.5"
},
"type": "library",
"autoload": {
@@ -7193,16 +7150,19 @@
"spatie"
],
"support": {
- "issues": "https://github.com/spatie/db-dumper/issues",
- "source": "https://github.com/spatie/db-dumper/tree/2.21.1"
+ "source": "https://github.com/spatie/db-dumper/tree/3.3.0"
},
"funding": [
+ {
+ "url": "https://spatie.be/open-source/support-us",
+ "type": "custom"
+ },
{
"url": "https://github.com/spatie",
"type": "github"
}
],
- "time": "2021-02-24T14:56:42+00:00"
+ "time": "2022-09-01T20:20:26+00:00"
},
{
"name": "spatie/image-optimizer",
@@ -7260,38 +7220,47 @@
},
{
"name": "spatie/laravel-backup",
- "version": "6.16.5",
+ "version": "8.1.5",
"source": {
"type": "git",
"url": "https://github.com/spatie/laravel-backup.git",
- "reference": "332fae80b12cacb9e4161824ba195d984b28c8fb"
+ "reference": "cf367fbe50ff3b1ae9a79638cc5ef66f3cc9c7fa"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/spatie/laravel-backup/zipball/332fae80b12cacb9e4161824ba195d984b28c8fb",
- "reference": "332fae80b12cacb9e4161824ba195d984b28c8fb",
+ "url": "https://api.github.com/repos/spatie/laravel-backup/zipball/cf367fbe50ff3b1ae9a79638cc5ef66f3cc9c7fa",
+ "reference": "cf367fbe50ff3b1ae9a79638cc5ef66f3cc9c7fa",
"shasum": ""
},
"require": {
"ext-zip": "^1.14.0",
- "illuminate/console": "^6.0|^7.0|^8.0",
- "illuminate/contracts": "^6.0|^7.0|^8.0",
- "illuminate/events": "^6.0|^7.0|^8.0",
- "illuminate/filesystem": "^6.0|^7.0|^8.0",
- "illuminate/notifications": "^6.0|^7.0|^8.0",
- "illuminate/support": "^6.0|^7.0|^8.0",
- "league/flysystem": "^1.0.49",
- "php": "^7.3|^8.0",
- "spatie/db-dumper": "^2.12",
- "spatie/temporary-directory": "^1.1",
- "symfony/finder": "^4.2|^5.0"
+ "illuminate/console": "^9.0",
+ "illuminate/contracts": "^9.0",
+ "illuminate/events": "^9.0",
+ "illuminate/filesystem": "^9.0",
+ "illuminate/notifications": "^9.0",
+ "illuminate/support": "^9.0",
+ "league/flysystem": "^3.0",
+ "php": "^8.0",
+ "spatie/db-dumper": "^3.0",
+ "spatie/laravel-package-tools": "^1.6.2",
+ "spatie/laravel-signal-aware-command": "^1.2",
+ "spatie/temporary-directory": "^2.0",
+ "symfony/console": "^6.0",
+ "symfony/finder": "^6.0"
},
"require-dev": {
- "laravel/slack-notification-channel": "^2.3",
- "league/flysystem-aws-s3-v3": "^1.0",
- "mockery/mockery": "^1.4.2",
- "orchestra/testbench": "4.*|5.*|6.*",
- "phpunit/phpunit": "^8.4|^9.0"
+ "composer-runtime-api": "^2.0",
+ "ext-pcntl": "*",
+ "laravel/slack-notification-channel": "^2.4",
+ "league/flysystem-aws-s3-v3": "^2.0|^3.0",
+ "mockery/mockery": "^1.4",
+ "nunomaduro/larastan": "^2.1",
+ "orchestra/testbench": "^7.0",
+ "pestphp/pest": "^1.20",
+ "phpstan/extension-installer": "^1.1",
+ "phpstan/phpstan-deprecation-rules": "^1.0",
+ "phpstan/phpstan-phpunit": "^1.1"
},
"suggest": {
"laravel/slack-notification-channel": "Required for sending notifications via Slack"
@@ -7334,7 +7303,7 @@
],
"support": {
"issues": "https://github.com/spatie/laravel-backup/issues",
- "source": "https://github.com/spatie/laravel-backup/tree/6.16.5"
+ "source": "https://github.com/spatie/laravel-backup/tree/8.1.5"
},
"funding": [
{
@@ -7346,30 +7315,30 @@
"type": "other"
}
],
- "time": "2021-09-12T10:04:18+00:00"
+ "time": "2022-10-19T13:01:58+00:00"
},
{
"name": "spatie/laravel-image-optimizer",
- "version": "1.6.4",
+ "version": "1.7.0",
"source": {
"type": "git",
"url": "https://github.com/spatie/laravel-image-optimizer.git",
- "reference": "c39e9ea77dee6b6eddfc26800adb1aa06a624294"
+ "reference": "6f9e8520485df7bfceb62824ef5ec7c8d25b3521"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/spatie/laravel-image-optimizer/zipball/c39e9ea77dee6b6eddfc26800adb1aa06a624294",
- "reference": "c39e9ea77dee6b6eddfc26800adb1aa06a624294",
+ "url": "https://api.github.com/repos/spatie/laravel-image-optimizer/zipball/6f9e8520485df7bfceb62824ef5ec7c8d25b3521",
+ "reference": "6f9e8520485df7bfceb62824ef5ec7c8d25b3521",
"shasum": ""
},
"require": {
- "laravel/framework": "^6.0|^7.0|^8.0",
- "php": "^7.2|^8.0",
+ "laravel/framework": "^8.0|^9.0",
+ "php": "^8.0",
"spatie/image-optimizer": "^1.2.0"
},
"require-dev": {
- "orchestra/testbench": "^4.0|^5.0|^6.0",
- "phpunit/phpunit": "^9.0"
+ "orchestra/testbench": "^6.23|^7.0",
+ "phpunit/phpunit": "^9.4"
},
"type": "library",
"extra": {
@@ -7407,7 +7376,7 @@
],
"support": {
"issues": "https://github.com/spatie/laravel-image-optimizer/issues",
- "source": "https://github.com/spatie/laravel-image-optimizer/tree/1.6.4"
+ "source": "https://github.com/spatie/laravel-image-optimizer/tree/1.7.0"
},
"funding": [
{
@@ -7415,27 +7384,159 @@
"type": "custom"
}
],
- "time": "2020-11-27T18:27:06+00:00"
+ "time": "2022-01-14T08:03:30+00:00"
},
{
- "name": "spatie/temporary-directory",
- "version": "1.3.0",
+ "name": "spatie/laravel-package-tools",
+ "version": "1.13.6",
"source": {
"type": "git",
- "url": "https://github.com/spatie/temporary-directory.git",
- "reference": "f517729b3793bca58f847c5fd383ec16f03ffec6"
+ "url": "https://github.com/spatie/laravel-package-tools.git",
+ "reference": "c377cc7223655c2278c148c1685b8b5a78af5c65"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/spatie/temporary-directory/zipball/f517729b3793bca58f847c5fd383ec16f03ffec6",
- "reference": "f517729b3793bca58f847c5fd383ec16f03ffec6",
+ "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/c377cc7223655c2278c148c1685b8b5a78af5c65",
+ "reference": "c377cc7223655c2278c148c1685b8b5a78af5c65",
"shasum": ""
},
"require": {
- "php": "^7.2|^8.0"
+ "illuminate/contracts": "^9.28",
+ "php": "^8.0"
},
"require-dev": {
- "phpunit/phpunit": "^8.0|^9.0"
+ "mockery/mockery": "^1.5",
+ "orchestra/testbench": "^7.7",
+ "phpunit/phpunit": "^9.5.24",
+ "spatie/test-time": "^1.3"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Spatie\\LaravelPackageTools\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Freek Van der Herten",
+ "email": "freek@spatie.be",
+ "role": "Developer"
+ }
+ ],
+ "description": "Tools for creating Laravel packages",
+ "homepage": "https://github.com/spatie/laravel-package-tools",
+ "keywords": [
+ "laravel-package-tools",
+ "spatie"
+ ],
+ "support": {
+ "issues": "https://github.com/spatie/laravel-package-tools/issues",
+ "source": "https://github.com/spatie/laravel-package-tools/tree/1.13.6"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/spatie",
+ "type": "github"
+ }
+ ],
+ "time": "2022-10-11T06:37:42+00:00"
+ },
+ {
+ "name": "spatie/laravel-signal-aware-command",
+ "version": "1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/spatie/laravel-signal-aware-command.git",
+ "reference": "d15a5b69bf715fc557b7034b4abd5a1472ae7ec8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/spatie/laravel-signal-aware-command/zipball/d15a5b69bf715fc557b7034b4abd5a1472ae7ec8",
+ "reference": "d15a5b69bf715fc557b7034b4abd5a1472ae7ec8",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/contracts": "^8.35|^9.0",
+ "php": "^8.0",
+ "spatie/laravel-package-tools": "^1.4.3"
+ },
+ "require-dev": {
+ "brianium/paratest": "^6.2",
+ "ext-pcntl": "*",
+ "nunomaduro/collision": "^5.3|^6.0",
+ "orchestra/testbench": "^6.16|^7.0",
+ "phpunit/phpunit": "^9.5",
+ "spatie/laravel-ray": "^1.17"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Spatie\\SignalAwareCommand\\SignalAwareCommandServiceProvider"
+ ],
+ "aliases": {
+ "Signal": "Spatie\\SignalAwareCommand\\Facades\\Signal"
+ }
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Spatie\\SignalAwareCommand\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Freek Van der Herten",
+ "email": "freek@spatie.be",
+ "role": "Developer"
+ }
+ ],
+ "description": "Handle signals in artisan commands",
+ "homepage": "https://github.com/spatie/laravel-signal-aware-command",
+ "keywords": [
+ "laravel",
+ "laravel-signal-aware-command",
+ "spatie"
+ ],
+ "support": {
+ "issues": "https://github.com/spatie/laravel-signal-aware-command/issues",
+ "source": "https://github.com/spatie/laravel-signal-aware-command/tree/1.2.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/spatie",
+ "type": "github"
+ }
+ ],
+ "time": "2022-01-12T19:42:44+00:00"
+ },
+ {
+ "name": "spatie/temporary-directory",
+ "version": "2.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/spatie/temporary-directory.git",
+ "reference": "e2818d871783d520b319c2d38dc37c10ecdcde20"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/spatie/temporary-directory/zipball/e2818d871783d520b319c2d38dc37c10ecdcde20",
+ "reference": "e2818d871783d520b319c2d38dc37c10ecdcde20",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^8.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.5"
},
"type": "library",
"autoload": {
@@ -7464,32 +7565,89 @@
],
"support": {
"issues": "https://github.com/spatie/temporary-directory/issues",
- "source": "https://github.com/spatie/temporary-directory/tree/1.3.0"
+ "source": "https://github.com/spatie/temporary-directory/tree/2.1.1"
},
- "time": "2020-11-09T15:54:21+00:00"
+ "funding": [
+ {
+ "url": "https://spatie.be/open-source/support-us",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/spatie",
+ "type": "github"
+ }
+ ],
+ "time": "2022-08-23T07:15:15+00:00"
},
{
- "name": "stevebauman/purify",
- "version": "v3.0.3",
+ "name": "stella-maris/clock",
+ "version": "0.1.6",
"source": {
"type": "git",
- "url": "https://github.com/stevebauman/purify.git",
- "reference": "08e8830f0ab9d302f8d76d4f5854910b24bacbb3"
+ "url": "https://github.com/stella-maris-solutions/clock.git",
+ "reference": "a94228dac03c9a8411198ce8c8dacbbe99c930c3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/stevebauman/purify/zipball/08e8830f0ab9d302f8d76d4f5854910b24bacbb3",
- "reference": "08e8830f0ab9d302f8d76d4f5854910b24bacbb3",
+ "url": "https://api.github.com/repos/stella-maris-solutions/clock/zipball/a94228dac03c9a8411198ce8c8dacbbe99c930c3",
+ "reference": "a94228dac03c9a8411198ce8c8dacbbe99c930c3",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0|^8.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "StellaMaris\\Clock\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Andreas Heigl",
+ "role": "Maintainer"
+ }
+ ],
+ "description": "A pre-release of the proposed PSR-20 Clock-Interface",
+ "homepage": "https://gitlab.com/stella-maris/clock",
+ "keywords": [
+ "clock",
+ "datetime",
+ "point in time",
+ "psr20"
+ ],
+ "support": {
+ "issues": "https://github.com/stella-maris-solutions/clock/issues",
+ "source": "https://github.com/stella-maris-solutions/clock/tree/0.1.6"
+ },
+ "time": "2022-09-27T15:03:11+00:00"
+ },
+ {
+ "name": "stevebauman/purify",
+ "version": "v4.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/stevebauman/purify.git",
+ "reference": "e56289062ed8a25c78c88f35e9106f00d01369c1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/stevebauman/purify/zipball/e56289062ed8a25c78c88f35e9106f00d01369c1",
+ "reference": "e56289062ed8a25c78c88f35e9106f00d01369c1",
"shasum": ""
},
"require": {
"ezyang/htmlpurifier": "^4.9.0",
- "illuminate/support": "~5.5|~6.0|~7.0|~8.0",
+ "illuminate/support": "~5.5|~6.0|~7.0|~8.0|~9.0",
"php": ">=7.1"
},
"require-dev": {
- "orchestra/testbench": "~3.7",
- "phpunit/phpunit": "~7.0"
+ "orchestra/testbench": "~3.7|~4.0|~5.0|~6.0|~7.0",
+ "phpunit/phpunit": "~7.0|~8.0|~9.0"
},
"type": "library",
"extra": {
@@ -7529,140 +7687,63 @@
],
"support": {
"issues": "https://github.com/stevebauman/purify/issues",
- "source": "https://github.com/stevebauman/purify/tree/v3.0.3"
+ "source": "https://github.com/stevebauman/purify/tree/v4.0.1"
},
- "time": "2020-09-08T20:33:16+00:00"
- },
- {
- "name": "swiftmailer/swiftmailer",
- "version": "v6.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/swiftmailer/swiftmailer.git",
- "reference": "8a5d5072dca8f48460fce2f4131fcc495eec654c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/8a5d5072dca8f48460fce2f4131fcc495eec654c",
- "reference": "8a5d5072dca8f48460fce2f4131fcc495eec654c",
- "shasum": ""
- },
- "require": {
- "egulias/email-validator": "^2.0|^3.1",
- "php": ">=7.0.0",
- "symfony/polyfill-iconv": "^1.0",
- "symfony/polyfill-intl-idn": "^1.10",
- "symfony/polyfill-mbstring": "^1.0"
- },
- "require-dev": {
- "mockery/mockery": "^1.0",
- "symfony/phpunit-bridge": "^4.4|^5.4"
- },
- "suggest": {
- "ext-intl": "Needed to support internationalized email addresses"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "6.2-dev"
- }
- },
- "autoload": {
- "files": [
- "lib/swift_required.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Chris Corbyn"
- },
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- }
- ],
- "description": "Swiftmailer, free feature-rich PHP mailer",
- "homepage": "https://swiftmailer.symfony.com",
- "keywords": [
- "email",
- "mail",
- "mailer"
- ],
- "support": {
- "issues": "https://github.com/swiftmailer/swiftmailer/issues",
- "source": "https://github.com/swiftmailer/swiftmailer/tree/v6.3.0"
- },
- "funding": [
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/swiftmailer/swiftmailer",
- "type": "tidelift"
- }
- ],
- "abandoned": "symfony/mailer",
- "time": "2021-10-18T15:26:12+00:00"
+ "time": "2022-01-21T21:41:41+00:00"
},
{
"name": "symfony/cache",
- "version": "v5.4.11",
+ "version": "v6.1.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/cache.git",
- "reference": "5a0fff46df349f0db3fe242263451fddf5277362"
+ "reference": "ee5d5b88162684a1377706f9c25125e97685ee61"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/cache/zipball/5a0fff46df349f0db3fe242263451fddf5277362",
- "reference": "5a0fff46df349f0db3fe242263451fddf5277362",
+ "url": "https://api.github.com/repos/symfony/cache/zipball/ee5d5b88162684a1377706f9c25125e97685ee61",
+ "reference": "ee5d5b88162684a1377706f9c25125e97685ee61",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "psr/cache": "^1.0|^2.0",
+ "php": ">=8.1",
+ "psr/cache": "^2.0|^3.0",
"psr/log": "^1.1|^2|^3",
- "symfony/cache-contracts": "^1.1.7|^2",
- "symfony/deprecation-contracts": "^2.1|^3",
- "symfony/polyfill-php73": "^1.9",
- "symfony/polyfill-php80": "^1.16",
+ "symfony/cache-contracts": "^1.1.7|^2|^3",
"symfony/service-contracts": "^1.1|^2|^3",
- "symfony/var-exporter": "^4.4|^5.0|^6.0"
+ "symfony/var-exporter": "^5.4|^6.0"
},
"conflict": {
"doctrine/dbal": "<2.13.1",
- "symfony/dependency-injection": "<4.4",
- "symfony/http-kernel": "<4.4",
- "symfony/var-dumper": "<4.4"
+ "symfony/dependency-injection": "<5.4",
+ "symfony/http-kernel": "<5.4",
+ "symfony/var-dumper": "<5.4"
},
"provide": {
- "psr/cache-implementation": "1.0|2.0",
- "psr/simple-cache-implementation": "1.0|2.0",
- "symfony/cache-implementation": "1.0|2.0"
+ "psr/cache-implementation": "2.0|3.0",
+ "psr/simple-cache-implementation": "1.0|2.0|3.0",
+ "symfony/cache-implementation": "1.1|2.0|3.0"
},
"require-dev": {
"cache/integration-tests": "dev-master",
- "doctrine/cache": "^1.6|^2.0",
"doctrine/dbal": "^2.13.1|^3.0",
"predis/predis": "^1.1",
- "psr/simple-cache": "^1.0|^2.0",
- "symfony/config": "^4.4|^5.0|^6.0",
- "symfony/dependency-injection": "^4.4|^5.0|^6.0",
- "symfony/filesystem": "^4.4|^5.0|^6.0",
- "symfony/http-kernel": "^4.4|^5.0|^6.0",
- "symfony/messenger": "^4.4|^5.0|^6.0",
- "symfony/var-dumper": "^4.4|^5.0|^6.0"
+ "psr/simple-cache": "^1.0|^2.0|^3.0",
+ "symfony/config": "^5.4|^6.0",
+ "symfony/dependency-injection": "^5.4|^6.0",
+ "symfony/filesystem": "^5.4|^6.0",
+ "symfony/http-kernel": "^5.4|^6.0",
+ "symfony/messenger": "^5.4|^6.0",
+ "symfony/var-dumper": "^5.4|^6.0"
},
"type": "library",
"autoload": {
"psr-4": {
"Symfony\\Component\\Cache\\": ""
},
+ "classmap": [
+ "Traits/ValueWrapper.php"
+ ],
"exclude-from-classmap": [
"/Tests/"
]
@@ -7681,14 +7762,14 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Provides an extended PSR-6, PSR-16 (and tags) implementation",
+ "description": "Provides extended PSR-6, PSR-16 (and tags) implementations",
"homepage": "https://symfony.com",
"keywords": [
"caching",
"psr6"
],
"support": {
- "source": "https://github.com/symfony/cache/tree/v5.4.11"
+ "source": "https://github.com/symfony/cache/tree/v6.1.7"
},
"funding": [
{
@@ -7704,25 +7785,25 @@
"type": "tidelift"
}
],
- "time": "2022-07-28T15:25:17+00:00"
+ "time": "2022-10-28T16:23:08+00:00"
},
{
"name": "symfony/cache-contracts",
- "version": "v2.5.2",
+ "version": "v3.1.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/cache-contracts.git",
- "reference": "64be4a7acb83b6f2bf6de9a02cee6dad41277ebc"
+ "reference": "2eab7fa459af6d75c6463e63e633b667a9b761d3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/64be4a7acb83b6f2bf6de9a02cee6dad41277ebc",
- "reference": "64be4a7acb83b6f2bf6de9a02cee6dad41277ebc",
+ "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/2eab7fa459af6d75c6463e63e633b667a9b761d3",
+ "reference": "2eab7fa459af6d75c6463e63e633b667a9b761d3",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "psr/cache": "^1.0|^2.0|^3.0"
+ "php": ">=8.1",
+ "psr/cache": "^3.0"
},
"suggest": {
"symfony/cache-implementation": ""
@@ -7730,7 +7811,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "2.5-dev"
+ "dev-main": "3.1-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -7767,7 +7848,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/cache-contracts/tree/v2.5.2"
+ "source": "https://github.com/symfony/cache-contracts/tree/v3.1.1"
},
"funding": [
{
@@ -7783,50 +7864,47 @@
"type": "tidelift"
}
],
- "time": "2022-01-02T09:53:40+00:00"
+ "time": "2022-02-25T11:15:52+00:00"
},
{
"name": "symfony/console",
- "version": "v5.4.12",
+ "version": "v6.1.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "c072aa8f724c3af64e2c7a96b796a4863d24dba1"
+ "reference": "a1282bd0c096e0bdb8800b104177e2ce404d8815"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/c072aa8f724c3af64e2c7a96b796a4863d24dba1",
- "reference": "c072aa8f724c3af64e2c7a96b796a4863d24dba1",
+ "url": "https://api.github.com/repos/symfony/console/zipball/a1282bd0c096e0bdb8800b104177e2ce404d8815",
+ "reference": "a1282bd0c096e0bdb8800b104177e2ce404d8815",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
+ "php": ">=8.1",
"symfony/deprecation-contracts": "^2.1|^3",
"symfony/polyfill-mbstring": "~1.0",
- "symfony/polyfill-php73": "^1.9",
- "symfony/polyfill-php80": "^1.16",
"symfony/service-contracts": "^1.1|^2|^3",
- "symfony/string": "^5.1|^6.0"
+ "symfony/string": "^5.4|^6.0"
},
"conflict": {
- "psr/log": ">=3",
- "symfony/dependency-injection": "<4.4",
- "symfony/dotenv": "<5.1",
- "symfony/event-dispatcher": "<4.4",
- "symfony/lock": "<4.4",
- "symfony/process": "<4.4"
+ "symfony/dependency-injection": "<5.4",
+ "symfony/dotenv": "<5.4",
+ "symfony/event-dispatcher": "<5.4",
+ "symfony/lock": "<5.4",
+ "symfony/process": "<5.4"
},
"provide": {
- "psr/log-implementation": "1.0|2.0"
+ "psr/log-implementation": "1.0|2.0|3.0"
},
"require-dev": {
- "psr/log": "^1|^2",
- "symfony/config": "^4.4|^5.0|^6.0",
- "symfony/dependency-injection": "^4.4|^5.0|^6.0",
- "symfony/event-dispatcher": "^4.4|^5.0|^6.0",
- "symfony/lock": "^4.4|^5.0|^6.0",
- "symfony/process": "^4.4|^5.0|^6.0",
- "symfony/var-dumper": "^4.4|^5.0|^6.0"
+ "psr/log": "^1|^2|^3",
+ "symfony/config": "^5.4|^6.0",
+ "symfony/dependency-injection": "^5.4|^6.0",
+ "symfony/event-dispatcher": "^5.4|^6.0",
+ "symfony/lock": "^5.4|^6.0",
+ "symfony/process": "^5.4|^6.0",
+ "symfony/var-dumper": "^5.4|^6.0"
},
"suggest": {
"psr/log": "For using the console logger",
@@ -7866,7 +7944,7 @@
"terminal"
],
"support": {
- "source": "https://github.com/symfony/console/tree/v5.4.12"
+ "source": "https://github.com/symfony/console/tree/v6.1.7"
},
"funding": [
{
@@ -7882,25 +7960,24 @@
"type": "tidelift"
}
],
- "time": "2022-08-17T13:18:05+00:00"
+ "time": "2022-10-26T21:42:49+00:00"
},
{
"name": "symfony/css-selector",
- "version": "v5.4.11",
+ "version": "v6.1.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/css-selector.git",
- "reference": "c1681789f059ab756001052164726ae88512ae3d"
+ "reference": "0dd5e36b80e1de97f8f74ed7023ac2b837a36443"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/css-selector/zipball/c1681789f059ab756001052164726ae88512ae3d",
- "reference": "c1681789f059ab756001052164726ae88512ae3d",
+ "url": "https://api.github.com/repos/symfony/css-selector/zipball/0dd5e36b80e1de97f8f74ed7023ac2b837a36443",
+ "reference": "0dd5e36b80e1de97f8f74ed7023ac2b837a36443",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/polyfill-php80": "^1.16"
+ "php": ">=8.1"
},
"type": "library",
"autoload": {
@@ -7932,7 +8009,7 @@
"description": "Converts CSS selectors to XPath expressions",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/css-selector/tree/v5.4.11"
+ "source": "https://github.com/symfony/css-selector/tree/v6.1.3"
},
"funding": [
{
@@ -7948,29 +8025,29 @@
"type": "tidelift"
}
],
- "time": "2022-06-27T16:58:25+00:00"
+ "time": "2022-06-27T17:24:16+00:00"
},
{
"name": "symfony/deprecation-contracts",
- "version": "v2.5.2",
+ "version": "v3.1.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/deprecation-contracts.git",
- "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66"
+ "reference": "07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66",
- "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918",
+ "reference": "07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": ">=8.1"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "2.5-dev"
+ "dev-main": "3.1-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -7999,7 +8076,7 @@
"description": "A generic function and convention to trigger deprecation notices",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.2"
+ "source": "https://github.com/symfony/deprecation-contracts/tree/v3.1.1"
},
"funding": [
{
@@ -8015,31 +8092,31 @@
"type": "tidelift"
}
],
- "time": "2022-01-02T09:53:40+00:00"
+ "time": "2022-02-25T11:15:52+00:00"
},
{
"name": "symfony/error-handler",
- "version": "v5.4.11",
+ "version": "v6.1.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/error-handler.git",
- "reference": "f75d17cb4769eb38cd5fccbda95cd80a054d35c8"
+ "reference": "699a26ce5ec656c198bf6e26398b0f0818c7e504"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/error-handler/zipball/f75d17cb4769eb38cd5fccbda95cd80a054d35c8",
- "reference": "f75d17cb4769eb38cd5fccbda95cd80a054d35c8",
+ "url": "https://api.github.com/repos/symfony/error-handler/zipball/699a26ce5ec656c198bf6e26398b0f0818c7e504",
+ "reference": "699a26ce5ec656c198bf6e26398b0f0818c7e504",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
+ "php": ">=8.1",
"psr/log": "^1|^2|^3",
- "symfony/var-dumper": "^4.4|^5.0|^6.0"
+ "symfony/var-dumper": "^5.4|^6.0"
},
"require-dev": {
"symfony/deprecation-contracts": "^2.1|^3",
- "symfony/http-kernel": "^4.4|^5.0|^6.0",
- "symfony/serializer": "^4.4|^5.0|^6.0"
+ "symfony/http-kernel": "^5.4|^6.0",
+ "symfony/serializer": "^5.4|^6.0"
},
"bin": [
"Resources/bin/patch-type-declarations"
@@ -8070,7 +8147,7 @@
"description": "Provides tools to manage errors and ease debugging PHP code",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/error-handler/tree/v5.4.11"
+ "source": "https://github.com/symfony/error-handler/tree/v6.1.7"
},
"funding": [
{
@@ -8086,44 +8163,42 @@
"type": "tidelift"
}
],
- "time": "2022-07-29T07:37:50+00:00"
+ "time": "2022-10-28T16:23:08+00:00"
},
{
"name": "symfony/event-dispatcher",
- "version": "v5.4.9",
+ "version": "v6.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "8e6ce1cc0279e3ff3c8ff0f43813bc88d21ca1bc"
+ "reference": "a0449a7ad7daa0f7c0acd508259f80544ab5a347"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/8e6ce1cc0279e3ff3c8ff0f43813bc88d21ca1bc",
- "reference": "8e6ce1cc0279e3ff3c8ff0f43813bc88d21ca1bc",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/a0449a7ad7daa0f7c0acd508259f80544ab5a347",
+ "reference": "a0449a7ad7daa0f7c0acd508259f80544ab5a347",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/deprecation-contracts": "^2.1|^3",
- "symfony/event-dispatcher-contracts": "^2|^3",
- "symfony/polyfill-php80": "^1.16"
+ "php": ">=8.1",
+ "symfony/event-dispatcher-contracts": "^2|^3"
},
"conflict": {
- "symfony/dependency-injection": "<4.4"
+ "symfony/dependency-injection": "<5.4"
},
"provide": {
"psr/event-dispatcher-implementation": "1.0",
- "symfony/event-dispatcher-implementation": "2.0"
+ "symfony/event-dispatcher-implementation": "2.0|3.0"
},
"require-dev": {
"psr/log": "^1|^2|^3",
- "symfony/config": "^4.4|^5.0|^6.0",
- "symfony/dependency-injection": "^4.4|^5.0|^6.0",
- "symfony/error-handler": "^4.4|^5.0|^6.0",
- "symfony/expression-language": "^4.4|^5.0|^6.0",
- "symfony/http-foundation": "^4.4|^5.0|^6.0",
+ "symfony/config": "^5.4|^6.0",
+ "symfony/dependency-injection": "^5.4|^6.0",
+ "symfony/error-handler": "^5.4|^6.0",
+ "symfony/expression-language": "^5.4|^6.0",
+ "symfony/http-foundation": "^5.4|^6.0",
"symfony/service-contracts": "^1.1|^2|^3",
- "symfony/stopwatch": "^4.4|^5.0|^6.0"
+ "symfony/stopwatch": "^5.4|^6.0"
},
"suggest": {
"symfony/dependency-injection": "",
@@ -8155,7 +8230,7 @@
"description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.9"
+ "source": "https://github.com/symfony/event-dispatcher/tree/v6.1.0"
},
"funding": [
{
@@ -8171,24 +8246,24 @@
"type": "tidelift"
}
],
- "time": "2022-05-05T16:45:39+00:00"
+ "time": "2022-05-05T16:51:07+00:00"
},
{
"name": "symfony/event-dispatcher-contracts",
- "version": "v2.5.2",
+ "version": "v3.1.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher-contracts.git",
- "reference": "f98b54df6ad059855739db6fcbc2d36995283fe1"
+ "reference": "02ff5eea2f453731cfbc6bc215e456b781480448"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/f98b54df6ad059855739db6fcbc2d36995283fe1",
- "reference": "f98b54df6ad059855739db6fcbc2d36995283fe1",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/02ff5eea2f453731cfbc6bc215e456b781480448",
+ "reference": "02ff5eea2f453731cfbc6bc215e456b781480448",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
+ "php": ">=8.1",
"psr/event-dispatcher": "^1"
},
"suggest": {
@@ -8197,7 +8272,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "2.5-dev"
+ "dev-main": "3.1-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -8234,7 +8309,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.5.2"
+ "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.1.1"
},
"funding": [
{
@@ -8250,90 +8325,27 @@
"type": "tidelift"
}
],
- "time": "2022-01-02T09:53:40+00:00"
- },
- {
- "name": "symfony/filesystem",
- "version": "v5.4.12",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/filesystem.git",
- "reference": "2d67c1f9a1937406a9be3171b4b22250c0a11447"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/filesystem/zipball/2d67c1f9a1937406a9be3171b4b22250c0a11447",
- "reference": "2d67c1f9a1937406a9be3171b4b22250c0a11447",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2.5",
- "symfony/polyfill-ctype": "~1.8",
- "symfony/polyfill-mbstring": "~1.8",
- "symfony/polyfill-php80": "^1.16"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Filesystem\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Provides basic utilities for the filesystem",
- "homepage": "https://symfony.com",
- "support": {
- "source": "https://github.com/symfony/filesystem/tree/v5.4.12"
- },
- "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": "2022-08-02T13:48:16+00:00"
+ "time": "2022-02-25T11:15:52+00:00"
},
{
"name": "symfony/finder",
- "version": "v5.4.11",
+ "version": "v6.1.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
- "reference": "7872a66f57caffa2916a584db1aa7f12adc76f8c"
+ "reference": "39696bff2c2970b3779a5cac7bf9f0b88fc2b709"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/finder/zipball/7872a66f57caffa2916a584db1aa7f12adc76f8c",
- "reference": "7872a66f57caffa2916a584db1aa7f12adc76f8c",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/39696bff2c2970b3779a5cac7bf9f0b88fc2b709",
+ "reference": "39696bff2c2970b3779a5cac7bf9f0b88fc2b709",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/deprecation-contracts": "^2.1|^3",
- "symfony/polyfill-php80": "^1.16"
+ "php": ">=8.1"
+ },
+ "require-dev": {
+ "symfony/filesystem": "^6.0"
},
"type": "library",
"autoload": {
@@ -8361,7 +8373,7 @@
"description": "Finds files and directories via an intuitive fluent interface",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/finder/tree/v5.4.11"
+ "source": "https://github.com/symfony/finder/tree/v6.1.3"
},
"funding": [
{
@@ -8377,35 +8389,199 @@
"type": "tidelift"
}
],
- "time": "2022-07-29T07:37:50+00:00"
+ "time": "2022-07-29T07:42:06+00:00"
},
{
- "name": "symfony/http-foundation",
- "version": "v5.4.12",
+ "name": "symfony/http-client",
+ "version": "v6.1.7",
"source": {
"type": "git",
- "url": "https://github.com/symfony/http-foundation.git",
- "reference": "f4bfe9611b113b15d98a43da68ec9b5a00d56791"
+ "url": "https://github.com/symfony/http-client.git",
+ "reference": "f515d066728774efb34347a87580621416ca8968"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-foundation/zipball/f4bfe9611b113b15d98a43da68ec9b5a00d56791",
- "reference": "f4bfe9611b113b15d98a43da68ec9b5a00d56791",
+ "url": "https://api.github.com/repos/symfony/http-client/zipball/f515d066728774efb34347a87580621416ca8968",
+ "reference": "f515d066728774efb34347a87580621416ca8968",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
+ "php": ">=8.1",
+ "psr/log": "^1|^2|^3",
+ "symfony/http-client-contracts": "^3",
+ "symfony/service-contracts": "^1.0|^2|^3"
+ },
+ "provide": {
+ "php-http/async-client-implementation": "*",
+ "php-http/client-implementation": "*",
+ "psr/http-client-implementation": "1.0",
+ "symfony/http-client-implementation": "3.0"
+ },
+ "require-dev": {
+ "amphp/amp": "^2.5",
+ "amphp/http-client": "^4.2.1",
+ "amphp/http-tunnel": "^1.0",
+ "amphp/socket": "^1.1",
+ "guzzlehttp/promises": "^1.4",
+ "nyholm/psr7": "^1.0",
+ "php-http/httplug": "^1.0|^2.0",
+ "psr/http-client": "^1.0",
+ "symfony/dependency-injection": "^5.4|^6.0",
+ "symfony/http-kernel": "^5.4|^6.0",
+ "symfony/process": "^5.4|^6.0",
+ "symfony/stopwatch": "^5.4|^6.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\HttpClient\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/http-client/tree/v6.1.7"
+ },
+ "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": "2022-10-28T16:23:08+00:00"
+ },
+ {
+ "name": "symfony/http-client-contracts",
+ "version": "v3.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/http-client-contracts.git",
+ "reference": "fd038f08c623ab5d22b26e9ba35afe8c79071800"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/fd038f08c623ab5d22b26e9ba35afe8c79071800",
+ "reference": "fd038f08c623ab5d22b26e9ba35afe8c79071800",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1"
+ },
+ "suggest": {
+ "symfony/http-client-implementation": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.1-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\HttpClient\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Test/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Generic abstractions related to HTTP clients",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/http-client-contracts/tree/v3.1.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": "2022-04-22T07:30:54+00:00"
+ },
+ {
+ "name": "symfony/http-foundation",
+ "version": "v6.1.7",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/http-foundation.git",
+ "reference": "792a1856d2b95273f0e1c3435785f1d01a60ecc6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/http-foundation/zipball/792a1856d2b95273f0e1c3435785f1d01a60ecc6",
+ "reference": "792a1856d2b95273f0e1c3435785f1d01a60ecc6",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1",
"symfony/deprecation-contracts": "^2.1|^3",
- "symfony/polyfill-mbstring": "~1.1",
- "symfony/polyfill-php80": "^1.16"
+ "symfony/polyfill-mbstring": "~1.1"
},
"require-dev": {
"predis/predis": "~1.0",
- "symfony/cache": "^4.4|^5.0|^6.0",
+ "symfony/cache": "^5.4|^6.0",
"symfony/dependency-injection": "^5.4|^6.0",
- "symfony/expression-language": "^4.4|^5.0|^6.0",
+ "symfony/expression-language": "^5.4|^6.0",
"symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4",
- "symfony/mime": "^4.4|^5.0|^6.0",
+ "symfony/mime": "^5.4|^6.0",
"symfony/rate-limiter": "^5.2|^6.0"
},
"suggest": {
@@ -8437,7 +8613,7 @@
"description": "Defines an object-oriented layer for the HTTP specification",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/http-foundation/tree/v5.4.12"
+ "source": "https://github.com/symfony/http-foundation/tree/v6.1.7"
},
"funding": [
{
@@ -8453,68 +8629,66 @@
"type": "tidelift"
}
],
- "time": "2022-08-19T07:33:17+00:00"
+ "time": "2022-10-12T09:44:59+00:00"
},
{
"name": "symfony/http-kernel",
- "version": "v5.4.8",
+ "version": "v6.1.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
- "reference": "cf7e61106abfc19b305ca0aedc41724ced89a02a"
+ "reference": "8fc1ffe753948c47a103a809cdd6a4a8458b3254"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-kernel/zipball/cf7e61106abfc19b305ca0aedc41724ced89a02a",
- "reference": "cf7e61106abfc19b305ca0aedc41724ced89a02a",
+ "url": "https://api.github.com/repos/symfony/http-kernel/zipball/8fc1ffe753948c47a103a809cdd6a4a8458b3254",
+ "reference": "8fc1ffe753948c47a103a809cdd6a4a8458b3254",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "psr/log": "^1|^2",
- "symfony/deprecation-contracts": "^2.1|^3",
- "symfony/error-handler": "^4.4|^5.0|^6.0",
- "symfony/event-dispatcher": "^5.0|^6.0",
- "symfony/http-foundation": "^5.3.7|^6.0",
- "symfony/polyfill-ctype": "^1.8",
- "symfony/polyfill-php73": "^1.9",
- "symfony/polyfill-php80": "^1.16"
+ "php": ">=8.1",
+ "psr/log": "^1|^2|^3",
+ "symfony/error-handler": "^6.1",
+ "symfony/event-dispatcher": "^5.4|^6.0",
+ "symfony/http-foundation": "^5.4|^6.0",
+ "symfony/polyfill-ctype": "^1.8"
},
"conflict": {
"symfony/browser-kit": "<5.4",
- "symfony/cache": "<5.0",
- "symfony/config": "<5.0",
- "symfony/console": "<4.4",
- "symfony/dependency-injection": "<5.3",
- "symfony/doctrine-bridge": "<5.0",
- "symfony/form": "<5.0",
- "symfony/http-client": "<5.0",
- "symfony/mailer": "<5.0",
- "symfony/messenger": "<5.0",
- "symfony/translation": "<5.0",
- "symfony/twig-bridge": "<5.0",
- "symfony/validator": "<5.0",
+ "symfony/cache": "<5.4",
+ "symfony/config": "<6.1",
+ "symfony/console": "<5.4",
+ "symfony/dependency-injection": "<6.1",
+ "symfony/doctrine-bridge": "<5.4",
+ "symfony/form": "<5.4",
+ "symfony/http-client": "<5.4",
+ "symfony/mailer": "<5.4",
+ "symfony/messenger": "<5.4",
+ "symfony/translation": "<5.4",
+ "symfony/twig-bridge": "<5.4",
+ "symfony/validator": "<5.4",
"twig/twig": "<2.13"
},
"provide": {
- "psr/log-implementation": "1.0|2.0"
+ "psr/log-implementation": "1.0|2.0|3.0"
},
"require-dev": {
"psr/cache": "^1.0|^2.0|^3.0",
"symfony/browser-kit": "^5.4|^6.0",
- "symfony/config": "^5.0|^6.0",
- "symfony/console": "^4.4|^5.0|^6.0",
- "symfony/css-selector": "^4.4|^5.0|^6.0",
- "symfony/dependency-injection": "^5.3|^6.0",
- "symfony/dom-crawler": "^4.4|^5.0|^6.0",
- "symfony/expression-language": "^4.4|^5.0|^6.0",
- "symfony/finder": "^4.4|^5.0|^6.0",
+ "symfony/config": "^6.1",
+ "symfony/console": "^5.4|^6.0",
+ "symfony/css-selector": "^5.4|^6.0",
+ "symfony/dependency-injection": "^6.1",
+ "symfony/dom-crawler": "^5.4|^6.0",
+ "symfony/expression-language": "^5.4|^6.0",
+ "symfony/finder": "^5.4|^6.0",
"symfony/http-client-contracts": "^1.1|^2|^3",
- "symfony/process": "^4.4|^5.0|^6.0",
- "symfony/routing": "^4.4|^5.0|^6.0",
- "symfony/stopwatch": "^4.4|^5.0|^6.0",
- "symfony/translation": "^4.4|^5.0|^6.0",
+ "symfony/process": "^5.4|^6.0",
+ "symfony/routing": "^5.4|^6.0",
+ "symfony/stopwatch": "^5.4|^6.0",
+ "symfony/translation": "^5.4|^6.0",
"symfony/translation-contracts": "^1.1|^2|^3",
+ "symfony/uid": "^5.4|^6.0",
"twig/twig": "^2.13|^3.0.4"
},
"suggest": {
@@ -8549,7 +8723,7 @@
"description": "Provides a structured process for converting a Request into a Response",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/http-kernel/tree/v5.4.8"
+ "source": "https://github.com/symfony/http-kernel/tree/v6.1.7"
},
"funding": [
{
@@ -8565,41 +8739,178 @@
"type": "tidelift"
}
],
- "time": "2022-04-27T17:22:21+00:00"
+ "time": "2022-10-28T18:06:36+00:00"
},
{
- "name": "symfony/mime",
- "version": "v5.4.12",
+ "name": "symfony/mailer",
+ "version": "v6.1.7",
"source": {
"type": "git",
- "url": "https://github.com/symfony/mime.git",
- "reference": "03876e9c5a36f5b45e7d9a381edda5421eff8a90"
+ "url": "https://github.com/symfony/mailer.git",
+ "reference": "7e19813c0b43387c55665780c4caea505cc48391"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/mime/zipball/03876e9c5a36f5b45e7d9a381edda5421eff8a90",
- "reference": "03876e9c5a36f5b45e7d9a381edda5421eff8a90",
+ "url": "https://api.github.com/repos/symfony/mailer/zipball/7e19813c0b43387c55665780c4caea505cc48391",
+ "reference": "7e19813c0b43387c55665780c4caea505cc48391",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/deprecation-contracts": "^2.1|^3",
+ "egulias/email-validator": "^2.1.10|^3",
+ "php": ">=8.1",
+ "psr/event-dispatcher": "^1",
+ "psr/log": "^1|^2|^3",
+ "symfony/event-dispatcher": "^5.4|^6.0",
+ "symfony/mime": "^5.4|^6.0",
+ "symfony/service-contracts": "^1.1|^2|^3"
+ },
+ "conflict": {
+ "symfony/http-kernel": "<5.4"
+ },
+ "require-dev": {
+ "symfony/http-client-contracts": "^1.1|^2|^3",
+ "symfony/messenger": "^5.4|^6.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Mailer\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Helps sending emails",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/mailer/tree/v6.1.7"
+ },
+ "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": "2022-10-28T16:23:08+00:00"
+ },
+ {
+ "name": "symfony/mailgun-mailer",
+ "version": "v6.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/mailgun-mailer.git",
+ "reference": "44d3c15049d84f5165917a6190f06adbe64d71dd"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/mailgun-mailer/zipball/44d3c15049d84f5165917a6190f06adbe64d71dd",
+ "reference": "44d3c15049d84f5165917a6190f06adbe64d71dd",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1",
+ "symfony/mailer": "^5.4|^6.0"
+ },
+ "require-dev": {
+ "symfony/http-client": "^5.4|^6.0"
+ },
+ "type": "symfony-mailer-bridge",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Mailer\\Bridge\\Mailgun\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Mailgun Mailer Bridge",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/mailgun-mailer/tree/v6.1.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": "2022-04-01T07:15:35+00:00"
+ },
+ {
+ "name": "symfony/mime",
+ "version": "v6.1.7",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/mime.git",
+ "reference": "f440f066d57691088d998d6e437ce98771144618"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/mime/zipball/f440f066d57691088d998d6e437ce98771144618",
+ "reference": "f440f066d57691088d998d6e437ce98771144618",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1",
"symfony/polyfill-intl-idn": "^1.10",
- "symfony/polyfill-mbstring": "^1.0",
- "symfony/polyfill-php80": "^1.16"
+ "symfony/polyfill-mbstring": "^1.0"
},
"conflict": {
"egulias/email-validator": "~3.0.0",
"phpdocumentor/reflection-docblock": "<3.2.2",
"phpdocumentor/type-resolver": "<1.4.0",
- "symfony/mailer": "<4.4"
+ "symfony/mailer": "<5.4"
},
"require-dev": {
"egulias/email-validator": "^2.1.10|^3.1",
"phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0",
- "symfony/dependency-injection": "^4.4|^5.0|^6.0",
- "symfony/property-access": "^4.4|^5.1|^6.0",
- "symfony/property-info": "^4.4|^5.1|^6.0",
+ "symfony/dependency-injection": "^5.4|^6.0",
+ "symfony/property-access": "^5.4|^6.0",
+ "symfony/property-info": "^5.4|^6.0",
"symfony/serializer": "^5.2|^6.0"
},
"type": "library",
@@ -8632,7 +8943,7 @@
"mime-type"
],
"support": {
- "source": "https://github.com/symfony/mime/tree/v5.4.12"
+ "source": "https://github.com/symfony/mime/tree/v6.1.7"
},
"funding": [
{
@@ -8648,7 +8959,7 @@
"type": "tidelift"
}
],
- "time": "2022-08-19T14:24:03+00:00"
+ "time": "2022-10-19T08:10:53+00:00"
},
{
"name": "symfony/polyfill-ctype",
@@ -8732,89 +9043,6 @@
],
"time": "2022-05-24T11:49:31+00:00"
},
- {
- "name": "symfony/polyfill-iconv",
- "version": "v1.26.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-iconv.git",
- "reference": "143f1881e655bebca1312722af8068de235ae5dc"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/143f1881e655bebca1312722af8068de235ae5dc",
- "reference": "143f1881e655bebca1312722af8068de235ae5dc",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1"
- },
- "provide": {
- "ext-iconv": "*"
- },
- "suggest": {
- "ext-iconv": "For best performance"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.26-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "autoload": {
- "files": [
- "bootstrap.php"
- ],
- "psr-4": {
- "Symfony\\Polyfill\\Iconv\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill for the Iconv extension",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "iconv",
- "polyfill",
- "portable",
- "shim"
- ],
- "support": {
- "source": "https://github.com/symfony/polyfill-iconv/tree/v1.26.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": "2022-05-24T11:49:31+00:00"
- },
{
"name": "symfony/polyfill-intl-grapheme",
"version": "v1.26.0",
@@ -9226,85 +9454,6 @@
],
"time": "2022-05-24T11:49:31+00:00"
},
- {
- "name": "symfony/polyfill-php73",
- "version": "v1.26.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-php73.git",
- "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/e440d35fa0286f77fb45b79a03fedbeda9307e85",
- "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.26-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "autoload": {
- "files": [
- "bootstrap.php"
- ],
- "psr-4": {
- "Symfony\\Polyfill\\Php73\\": ""
- },
- "classmap": [
- "Resources/stubs"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "polyfill",
- "portable",
- "shim"
- ],
- "support": {
- "source": "https://github.com/symfony/polyfill-php73/tree/v1.26.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": "2022-05-24T11:49:31+00:00"
- },
{
"name": "symfony/polyfill-php80",
"version": "v1.26.0",
@@ -9468,22 +9617,103 @@
"time": "2022-05-24T11:49:31+00:00"
},
{
- "name": "symfony/process",
- "version": "v5.4.11",
+ "name": "symfony/polyfill-uuid",
+ "version": "v1.26.0",
"source": {
"type": "git",
- "url": "https://github.com/symfony/process.git",
- "reference": "6e75fe6874cbc7e4773d049616ab450eff537bf1"
+ "url": "https://github.com/symfony/polyfill-uuid.git",
+ "reference": "a41886c1c81dc075a09c71fe6db5b9d68c79de23"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/process/zipball/6e75fe6874cbc7e4773d049616ab450eff537bf1",
- "reference": "6e75fe6874cbc7e4773d049616ab450eff537bf1",
+ "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/a41886c1c81dc075a09c71fe6db5b9d68c79de23",
+ "reference": "a41886c1c81dc075a09c71fe6db5b9d68c79de23",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/polyfill-php80": "^1.16"
+ "php": ">=7.1"
+ },
+ "provide": {
+ "ext-uuid": "*"
+ },
+ "suggest": {
+ "ext-uuid": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.26-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Uuid\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Grégoire Pineau",
+ "email": "lyrixx@lyrixx.info"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for uuid functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "uuid"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-uuid/tree/v1.26.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": "2022-05-24T11:49:31+00:00"
+ },
+ {
+ "name": "symfony/process",
+ "version": "v6.1.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/process.git",
+ "reference": "a6506e99cfad7059b1ab5cab395854a0a0c21292"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/process/zipball/a6506e99cfad7059b1ab5cab395854a0a0c21292",
+ "reference": "a6506e99cfad7059b1ab5cab395854a0a0c21292",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1"
},
"type": "library",
"autoload": {
@@ -9511,7 +9741,7 @@
"description": "Executes commands in sub-processes",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/process/tree/v5.4.11"
+ "source": "https://github.com/symfony/process/tree/v6.1.3"
},
"funding": [
{
@@ -9527,7 +9757,7 @@
"type": "tidelift"
}
],
- "time": "2022-06-27T16:58:25+00:00"
+ "time": "2022-06-27T17:24:16+00:00"
},
{
"name": "symfony/psr-http-message-bridge",
@@ -9619,37 +9849,35 @@
},
{
"name": "symfony/routing",
- "version": "v5.4.11",
+ "version": "v6.1.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/routing.git",
- "reference": "3e01ccd9b2a3a4167ba2b3c53612762300300226"
+ "reference": "95effeb9d6e2cec861cee06bf5bbf82d09aea7f5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/routing/zipball/3e01ccd9b2a3a4167ba2b3c53612762300300226",
- "reference": "3e01ccd9b2a3a4167ba2b3c53612762300300226",
+ "url": "https://api.github.com/repos/symfony/routing/zipball/95effeb9d6e2cec861cee06bf5bbf82d09aea7f5",
+ "reference": "95effeb9d6e2cec861cee06bf5bbf82d09aea7f5",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/deprecation-contracts": "^2.1|^3",
- "symfony/polyfill-php80": "^1.16"
+ "php": ">=8.1"
},
"conflict": {
"doctrine/annotations": "<1.12",
- "symfony/config": "<5.3",
- "symfony/dependency-injection": "<4.4",
- "symfony/yaml": "<4.4"
+ "symfony/config": "<5.4",
+ "symfony/dependency-injection": "<5.4",
+ "symfony/yaml": "<5.4"
},
"require-dev": {
"doctrine/annotations": "^1.12",
"psr/log": "^1|^2|^3",
- "symfony/config": "^5.3|^6.0",
- "symfony/dependency-injection": "^4.4|^5.0|^6.0",
- "symfony/expression-language": "^4.4|^5.0|^6.0",
- "symfony/http-foundation": "^4.4|^5.0|^6.0",
- "symfony/yaml": "^4.4|^5.0|^6.0"
+ "symfony/config": "^5.4|^6.0",
+ "symfony/dependency-injection": "^5.4|^6.0",
+ "symfony/expression-language": "^5.4|^6.0",
+ "symfony/http-foundation": "^5.4|^6.0",
+ "symfony/yaml": "^5.4|^6.0"
},
"suggest": {
"symfony/config": "For using the all-in-one router or any loader",
@@ -9689,7 +9917,7 @@
"url"
],
"support": {
- "source": "https://github.com/symfony/routing/tree/v5.4.11"
+ "source": "https://github.com/symfony/routing/tree/v6.1.7"
},
"funding": [
{
@@ -9705,26 +9933,25 @@
"type": "tidelift"
}
],
- "time": "2022-07-20T13:00:38+00:00"
+ "time": "2022-10-18T13:12:43+00:00"
},
{
"name": "symfony/service-contracts",
- "version": "v2.5.2",
+ "version": "v3.1.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/service-contracts.git",
- "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c"
+ "reference": "925e713fe8fcacf6bc05e936edd8dd5441a21239"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/service-contracts/zipball/4b426aac47d6427cc1a1d0f7e2ac724627f5966c",
- "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/925e713fe8fcacf6bc05e936edd8dd5441a21239",
+ "reference": "925e713fe8fcacf6bc05e936edd8dd5441a21239",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "psr/container": "^1.1",
- "symfony/deprecation-contracts": "^2.1|^3"
+ "php": ">=8.1",
+ "psr/container": "^2.0"
},
"conflict": {
"ext-psr": "<1.1|>=2"
@@ -9735,7 +9962,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "2.5-dev"
+ "dev-main": "3.1-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -9745,7 +9972,10 @@
"autoload": {
"psr-4": {
"Symfony\\Contracts\\Service\\": ""
- }
+ },
+ "exclude-from-classmap": [
+ "/Test/"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -9772,7 +10002,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/service-contracts/tree/v2.5.2"
+ "source": "https://github.com/symfony/service-contracts/tree/v3.1.1"
},
"funding": [
{
@@ -9788,38 +10018,37 @@
"type": "tidelift"
}
],
- "time": "2022-05-30T19:17:29+00:00"
+ "time": "2022-05-30T19:18:58+00:00"
},
{
"name": "symfony/string",
- "version": "v5.4.12",
+ "version": "v6.1.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
- "reference": "2fc515e512d721bf31ea76bd02fe23ada4640058"
+ "reference": "823f143370880efcbdfa2dbca946b3358c4707e5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/string/zipball/2fc515e512d721bf31ea76bd02fe23ada4640058",
- "reference": "2fc515e512d721bf31ea76bd02fe23ada4640058",
+ "url": "https://api.github.com/repos/symfony/string/zipball/823f143370880efcbdfa2dbca946b3358c4707e5",
+ "reference": "823f143370880efcbdfa2dbca946b3358c4707e5",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
+ "php": ">=8.1",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-intl-grapheme": "~1.0",
"symfony/polyfill-intl-normalizer": "~1.0",
- "symfony/polyfill-mbstring": "~1.0",
- "symfony/polyfill-php80": "~1.15"
+ "symfony/polyfill-mbstring": "~1.0"
},
"conflict": {
- "symfony/translation-contracts": ">=3.0"
+ "symfony/translation-contracts": "<2.0"
},
"require-dev": {
- "symfony/error-handler": "^4.4|^5.0|^6.0",
- "symfony/http-client": "^4.4|^5.0|^6.0",
- "symfony/translation-contracts": "^1.1|^2",
- "symfony/var-exporter": "^4.4|^5.0|^6.0"
+ "symfony/error-handler": "^5.4|^6.0",
+ "symfony/http-client": "^5.4|^6.0",
+ "symfony/translation-contracts": "^2.0|^3.0",
+ "symfony/var-exporter": "^5.4|^6.0"
},
"type": "library",
"autoload": {
@@ -9858,7 +10087,7 @@
"utf8"
],
"support": {
- "source": "https://github.com/symfony/string/tree/v5.4.12"
+ "source": "https://github.com/symfony/string/tree/v6.1.7"
},
"funding": [
{
@@ -9874,52 +10103,51 @@
"type": "tidelift"
}
],
- "time": "2022-08-12T17:03:11+00:00"
+ "time": "2022-10-10T09:34:31+00:00"
},
{
"name": "symfony/translation",
- "version": "v5.4.12",
+ "version": "v6.1.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation.git",
- "reference": "42ecc77eb4f229ce2df702a648ec93b8478d76ae"
+ "reference": "e6cd330e5a072518f88d65148f3f165541807494"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation/zipball/42ecc77eb4f229ce2df702a648ec93b8478d76ae",
- "reference": "42ecc77eb4f229ce2df702a648ec93b8478d76ae",
+ "url": "https://api.github.com/repos/symfony/translation/zipball/e6cd330e5a072518f88d65148f3f165541807494",
+ "reference": "e6cd330e5a072518f88d65148f3f165541807494",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/deprecation-contracts": "^2.1|^3",
+ "php": ">=8.1",
"symfony/polyfill-mbstring": "~1.0",
- "symfony/polyfill-php80": "^1.16",
- "symfony/translation-contracts": "^2.3"
+ "symfony/translation-contracts": "^2.3|^3.0"
},
"conflict": {
- "symfony/config": "<4.4",
- "symfony/console": "<5.3",
- "symfony/dependency-injection": "<5.0",
- "symfony/http-kernel": "<5.0",
- "symfony/twig-bundle": "<5.0",
- "symfony/yaml": "<4.4"
+ "symfony/config": "<5.4",
+ "symfony/console": "<5.4",
+ "symfony/dependency-injection": "<5.4",
+ "symfony/http-kernel": "<5.4",
+ "symfony/twig-bundle": "<5.4",
+ "symfony/yaml": "<5.4"
},
"provide": {
- "symfony/translation-implementation": "2.3"
+ "symfony/translation-implementation": "2.3|3.0"
},
"require-dev": {
"psr/log": "^1|^2|^3",
- "symfony/config": "^4.4|^5.0|^6.0",
+ "symfony/config": "^5.4|^6.0",
"symfony/console": "^5.4|^6.0",
- "symfony/dependency-injection": "^5.0|^6.0",
- "symfony/finder": "^4.4|^5.0|^6.0",
+ "symfony/dependency-injection": "^5.4|^6.0",
+ "symfony/finder": "^5.4|^6.0",
"symfony/http-client-contracts": "^1.1|^2.0|^3.0",
- "symfony/http-kernel": "^5.0|^6.0",
- "symfony/intl": "^4.4|^5.0|^6.0",
+ "symfony/http-kernel": "^5.4|^6.0",
+ "symfony/intl": "^5.4|^6.0",
"symfony/polyfill-intl-icu": "^1.21",
+ "symfony/routing": "^5.4|^6.0",
"symfony/service-contracts": "^1.1.2|^2|^3",
- "symfony/yaml": "^4.4|^5.0|^6.0"
+ "symfony/yaml": "^5.4|^6.0"
},
"suggest": {
"psr/log-implementation": "To use logging capability in translator",
@@ -9955,7 +10183,7 @@
"description": "Provides tools to internationalize your application",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/translation/tree/v5.4.12"
+ "source": "https://github.com/symfony/translation/tree/v6.1.6"
},
"funding": [
{
@@ -9971,24 +10199,24 @@
"type": "tidelift"
}
],
- "time": "2022-08-02T15:52:22+00:00"
+ "time": "2022-10-07T08:04:03+00:00"
},
{
"name": "symfony/translation-contracts",
- "version": "v2.5.2",
+ "version": "v3.1.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation-contracts.git",
- "reference": "136b19dd05cdf0709db6537d058bcab6dd6e2dbe"
+ "reference": "606be0f48e05116baef052f7f3abdb345c8e02cc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/136b19dd05cdf0709db6537d058bcab6dd6e2dbe",
- "reference": "136b19dd05cdf0709db6537d058bcab6dd6e2dbe",
+ "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/606be0f48e05116baef052f7f3abdb345c8e02cc",
+ "reference": "606be0f48e05116baef052f7f3abdb345c8e02cc",
"shasum": ""
},
"require": {
- "php": ">=7.2.5"
+ "php": ">=8.1"
},
"suggest": {
"symfony/translation-implementation": ""
@@ -9996,7 +10224,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "2.5-dev"
+ "dev-main": "3.1-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -10006,7 +10234,10 @@
"autoload": {
"psr-4": {
"Symfony\\Contracts\\Translation\\": ""
- }
+ },
+ "exclude-from-classmap": [
+ "/Test/"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -10033,7 +10264,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/translation-contracts/tree/v2.5.2"
+ "source": "https://github.com/symfony/translation-contracts/tree/v3.1.1"
},
"funding": [
{
@@ -10049,36 +10280,109 @@
"type": "tidelift"
}
],
- "time": "2022-06-27T16:58:25+00:00"
+ "time": "2022-06-27T17:24:16+00:00"
},
{
- "name": "symfony/var-dumper",
- "version": "v5.4.11",
+ "name": "symfony/uid",
+ "version": "v6.1.5",
"source": {
"type": "git",
- "url": "https://github.com/symfony/var-dumper.git",
- "reference": "b8f306d7b8ef34fb3db3305be97ba8e088fb4861"
+ "url": "https://github.com/symfony/uid.git",
+ "reference": "e03519f7b1ce1d3c0b74f751892bb41d549a2d98"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/var-dumper/zipball/b8f306d7b8ef34fb3db3305be97ba8e088fb4861",
- "reference": "b8f306d7b8ef34fb3db3305be97ba8e088fb4861",
+ "url": "https://api.github.com/repos/symfony/uid/zipball/e03519f7b1ce1d3c0b74f751892bb41d549a2d98",
+ "reference": "e03519f7b1ce1d3c0b74f751892bb41d549a2d98",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/polyfill-mbstring": "~1.0",
- "symfony/polyfill-php80": "^1.16"
+ "php": ">=8.1",
+ "symfony/polyfill-uuid": "^1.15"
+ },
+ "require-dev": {
+ "symfony/console": "^5.4|^6.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Uid\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Grégoire Pineau",
+ "email": "lyrixx@lyrixx.info"
+ },
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides an object-oriented API to generate and represent UIDs",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "UID",
+ "ulid",
+ "uuid"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/uid/tree/v6.1.5"
+ },
+ "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": "2022-09-09T09:34:27+00:00"
+ },
+ {
+ "name": "symfony/var-dumper",
+ "version": "v6.1.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/var-dumper.git",
+ "reference": "0f0adde127f24548e23cbde83bcaeadc491c551f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/var-dumper/zipball/0f0adde127f24548e23cbde83bcaeadc491c551f",
+ "reference": "0f0adde127f24548e23cbde83bcaeadc491c551f",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1",
+ "symfony/polyfill-mbstring": "~1.0"
},
"conflict": {
"phpunit/phpunit": "<5.4.3",
- "symfony/console": "<4.4"
+ "symfony/console": "<5.4"
},
"require-dev": {
"ext-iconv": "*",
- "symfony/console": "^4.4|^5.0|^6.0",
- "symfony/process": "^4.4|^5.0|^6.0",
- "symfony/uid": "^5.1|^6.0",
+ "symfony/console": "^5.4|^6.0",
+ "symfony/process": "^5.4|^6.0",
+ "symfony/uid": "^5.4|^6.0",
"twig/twig": "^2.13|^3.0.4"
},
"suggest": {
@@ -10122,7 +10426,7 @@
"dump"
],
"support": {
- "source": "https://github.com/symfony/var-dumper/tree/v5.4.11"
+ "source": "https://github.com/symfony/var-dumper/tree/v6.1.6"
},
"funding": [
{
@@ -10138,28 +10442,27 @@
"type": "tidelift"
}
],
- "time": "2022-07-20T13:00:38+00:00"
+ "time": "2022-10-07T08:04:03+00:00"
},
{
"name": "symfony/var-exporter",
- "version": "v5.4.10",
+ "version": "v6.1.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-exporter.git",
- "reference": "8fc03ee75eeece3d9be1ef47d26d79bea1afb340"
+ "reference": "b49350f45cebbba6e5286485264b912f2bcfc9ef"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/var-exporter/zipball/8fc03ee75eeece3d9be1ef47d26d79bea1afb340",
- "reference": "8fc03ee75eeece3d9be1ef47d26d79bea1afb340",
+ "url": "https://api.github.com/repos/symfony/var-exporter/zipball/b49350f45cebbba6e5286485264b912f2bcfc9ef",
+ "reference": "b49350f45cebbba6e5286485264b912f2bcfc9ef",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/polyfill-php80": "^1.16"
+ "php": ">=8.1"
},
"require-dev": {
- "symfony/var-dumper": "^4.4.9|^5.0.9|^6.0"
+ "symfony/var-dumper": "^5.4|^6.0"
},
"type": "library",
"autoload": {
@@ -10195,7 +10498,7 @@
"serialize"
],
"support": {
- "source": "https://github.com/symfony/var-exporter/tree/v5.4.10"
+ "source": "https://github.com/symfony/var-exporter/tree/v6.1.3"
},
"funding": [
{
@@ -10211,7 +10514,7 @@
"type": "tidelift"
}
],
- "time": "2022-05-27T12:56:18+00:00"
+ "time": "2022-07-04T16:01:56+00:00"
},
{
"name": "tightenco/collect",
@@ -10322,16 +10625,16 @@
},
{
"name": "vlucas/phpdotenv",
- "version": "v5.4.1",
+ "version": "v5.5.0",
"source": {
"type": "git",
"url": "https://github.com/vlucas/phpdotenv.git",
- "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f"
+ "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f",
- "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f",
+ "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7",
+ "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7",
"shasum": ""
},
"require": {
@@ -10346,15 +10649,19 @@
"require-dev": {
"bamarni/composer-bin-plugin": "^1.4.1",
"ext-filter": "*",
- "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10"
+ "phpunit/phpunit": "^7.5.20 || ^8.5.30 || ^9.5.25"
},
"suggest": {
"ext-filter": "Required to use the boolean validator."
},
"type": "library",
"extra": {
+ "bamarni-bin": {
+ "bin-links": true,
+ "forward-command": true
+ },
"branch-alias": {
- "dev-master": "5.4-dev"
+ "dev-master": "5.5-dev"
}
},
"autoload": {
@@ -10386,7 +10693,7 @@
],
"support": {
"issues": "https://github.com/vlucas/phpdotenv/issues",
- "source": "https://github.com/vlucas/phpdotenv/tree/v5.4.1"
+ "source": "https://github.com/vlucas/phpdotenv/tree/v5.5.0"
},
"funding": [
{
@@ -10398,20 +10705,20 @@
"type": "tidelift"
}
],
- "time": "2021-12-12T23:22:04+00:00"
+ "time": "2022-10-16T01:01:54+00:00"
},
{
"name": "voku/portable-ascii",
- "version": "1.6.1",
+ "version": "2.0.1",
"source": {
"type": "git",
"url": "https://github.com/voku/portable-ascii.git",
- "reference": "87337c91b9dfacee02452244ee14ab3c43bc485a"
+ "reference": "b56450eed252f6801410d810c8e1727224ae0743"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/voku/portable-ascii/zipball/87337c91b9dfacee02452244ee14ab3c43bc485a",
- "reference": "87337c91b9dfacee02452244ee14ab3c43bc485a",
+ "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b56450eed252f6801410d810c8e1727224ae0743",
+ "reference": "b56450eed252f6801410d810c8e1727224ae0743",
"shasum": ""
},
"require": {
@@ -10448,7 +10755,7 @@
],
"support": {
"issues": "https://github.com/voku/portable-ascii/issues",
- "source": "https://github.com/voku/portable-ascii/tree/1.6.1"
+ "source": "https://github.com/voku/portable-ascii/tree/2.0.1"
},
"funding": [
{
@@ -10472,7 +10779,7 @@
"type": "tidelift"
}
],
- "time": "2022-01-24T18:55:24+00:00"
+ "time": "2022-03-08T17:03:00+00:00"
},
{
"name": "webmozart/assert",
@@ -10536,16 +10843,16 @@
"packages-dev": [
{
"name": "brianium/paratest",
- "version": "v6.6.4",
+ "version": "v6.6.5",
"source": {
"type": "git",
"url": "https://github.com/paratestphp/paratest.git",
- "reference": "4ce800dc32fd0292a4f05c00f347142dce1ecdda"
+ "reference": "31fd5d69b41725f383c9a083831eefcc7ecd9061"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/paratestphp/paratest/zipball/4ce800dc32fd0292a4f05c00f347142dce1ecdda",
- "reference": "4ce800dc32fd0292a4f05c00f347142dce1ecdda",
+ "url": "https://api.github.com/repos/paratestphp/paratest/zipball/31fd5d69b41725f383c9a083831eefcc7ecd9061",
+ "reference": "31fd5d69b41725f383c9a083831eefcc7ecd9061",
"shasum": ""
},
"require": {
@@ -10612,7 +10919,7 @@
],
"support": {
"issues": "https://github.com/paratestphp/paratest/issues",
- "source": "https://github.com/paratestphp/paratest/tree/v6.6.4"
+ "source": "https://github.com/paratestphp/paratest/tree/v6.6.5"
},
"funding": [
{
@@ -10624,7 +10931,7 @@
"type": "paypal"
}
],
- "time": "2022-09-13T10:47:01+00:00"
+ "time": "2022-10-28T12:22:26+00:00"
},
{
"name": "doctrine/instantiator",
@@ -10696,161 +11003,18 @@
],
"time": "2022-03-03T08:28:38+00:00"
},
- {
- "name": "facade/flare-client-php",
- "version": "1.10.0",
- "source": {
- "type": "git",
- "url": "https://github.com/facade/flare-client-php.git",
- "reference": "213fa2c69e120bca4c51ba3e82ed1834ef3f41b8"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/facade/flare-client-php/zipball/213fa2c69e120bca4c51ba3e82ed1834ef3f41b8",
- "reference": "213fa2c69e120bca4c51ba3e82ed1834ef3f41b8",
- "shasum": ""
- },
- "require": {
- "facade/ignition-contracts": "~1.0",
- "illuminate/pipeline": "^5.5|^6.0|^7.0|^8.0",
- "php": "^7.1|^8.0",
- "symfony/http-foundation": "^3.3|^4.1|^5.0",
- "symfony/mime": "^3.4|^4.0|^5.1",
- "symfony/var-dumper": "^3.4|^4.0|^5.0"
- },
- "require-dev": {
- "friendsofphp/php-cs-fixer": "^2.14",
- "phpunit/phpunit": "^7.5",
- "spatie/phpunit-snapshot-assertions": "^2.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0-dev"
- }
- },
- "autoload": {
- "files": [
- "src/helpers.php"
- ],
- "psr-4": {
- "Facade\\FlareClient\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "Send PHP errors to Flare",
- "homepage": "https://github.com/facade/flare-client-php",
- "keywords": [
- "exception",
- "facade",
- "flare",
- "reporting"
- ],
- "support": {
- "issues": "https://github.com/facade/flare-client-php/issues",
- "source": "https://github.com/facade/flare-client-php/tree/1.10.0"
- },
- "funding": [
- {
- "url": "https://github.com/spatie",
- "type": "github"
- }
- ],
- "time": "2022-08-09T11:23:57+00:00"
- },
- {
- "name": "facade/ignition",
- "version": "2.17.6",
- "source": {
- "type": "git",
- "url": "https://github.com/facade/ignition.git",
- "reference": "6acd82e986a2ecee89e2e68adfc30a1936d1ab7c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/facade/ignition/zipball/6acd82e986a2ecee89e2e68adfc30a1936d1ab7c",
- "reference": "6acd82e986a2ecee89e2e68adfc30a1936d1ab7c",
- "shasum": ""
- },
- "require": {
- "ext-curl": "*",
- "ext-json": "*",
- "ext-mbstring": "*",
- "facade/flare-client-php": "^1.9.1",
- "facade/ignition-contracts": "^1.0.2",
- "illuminate/support": "^7.0|^8.0",
- "monolog/monolog": "^2.0",
- "php": "^7.2.5|^8.0",
- "symfony/console": "^5.0",
- "symfony/var-dumper": "^5.0"
- },
- "require-dev": {
- "friendsofphp/php-cs-fixer": "^2.14",
- "livewire/livewire": "^2.4",
- "mockery/mockery": "^1.3",
- "orchestra/testbench": "^5.0|^6.0",
- "psalm/plugin-laravel": "^1.2"
- },
- "suggest": {
- "laravel/telescope": "^3.1"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.x-dev"
- },
- "laravel": {
- "providers": [
- "Facade\\Ignition\\IgnitionServiceProvider"
- ],
- "aliases": {
- "Flare": "Facade\\Ignition\\Facades\\Flare"
- }
- }
- },
- "autoload": {
- "files": [
- "src/helpers.php"
- ],
- "psr-4": {
- "Facade\\Ignition\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "A beautiful error page for Laravel applications.",
- "homepage": "https://github.com/facade/ignition",
- "keywords": [
- "error",
- "flare",
- "laravel",
- "page"
- ],
- "support": {
- "docs": "https://flareapp.io/docs/ignition-for-laravel/introduction",
- "forum": "https://twitter.com/flareappio",
- "issues": "https://github.com/facade/ignition/issues",
- "source": "https://github.com/facade/ignition"
- },
- "time": "2022-06-30T18:26:59+00:00"
- },
{
"name": "filp/whoops",
- "version": "2.14.5",
+ "version": "2.14.6",
"source": {
"type": "git",
"url": "https://github.com/filp/whoops.git",
- "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc"
+ "reference": "f7948baaa0330277c729714910336383286305da"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc",
- "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc",
+ "url": "https://api.github.com/repos/filp/whoops/zipball/f7948baaa0330277c729714910336383286305da",
+ "reference": "f7948baaa0330277c729714910336383286305da",
"shasum": ""
},
"require": {
@@ -10900,7 +11064,7 @@
],
"support": {
"issues": "https://github.com/filp/whoops/issues",
- "source": "https://github.com/filp/whoops/tree/2.14.5"
+ "source": "https://github.com/filp/whoops/tree/2.14.6"
},
"funding": [
{
@@ -10908,7 +11072,7 @@
"type": "github"
}
],
- "time": "2022-01-07T12:00:00+00:00"
+ "time": "2022-11-02T16:23:29+00:00"
},
{
"name": "hamcrest/hamcrest-php",
@@ -11022,16 +11186,16 @@
},
{
"name": "laravel/telescope",
- "version": "v4.9.3",
+ "version": "v4.9.5",
"source": {
"type": "git",
"url": "https://github.com/laravel/telescope.git",
- "reference": "c41476272bc03e470d3be1d718885a947adb7c49"
+ "reference": "a316d6d15793b559c51ccb4b5dc59b223da500e5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/telescope/zipball/c41476272bc03e470d3be1d718885a947adb7c49",
- "reference": "c41476272bc03e470d3be1d718885a947adb7c49",
+ "url": "https://api.github.com/repos/laravel/telescope/zipball/a316d6d15793b559c51ccb4b5dc59b223da500e5",
+ "reference": "a316d6d15793b559c51ccb4b5dc59b223da500e5",
"shasum": ""
},
"require": {
@@ -11084,9 +11248,9 @@
],
"support": {
"issues": "https://github.com/laravel/telescope/issues",
- "source": "https://github.com/laravel/telescope/tree/v4.9.3"
+ "source": "https://github.com/laravel/telescope/tree/v4.9.5"
},
- "time": "2022-09-12T13:47:59+00:00"
+ "time": "2022-10-06T14:01:10+00:00"
},
{
"name": "mockery/mockery",
@@ -11221,37 +11385,38 @@
},
{
"name": "nunomaduro/collision",
- "version": "v5.11.0",
+ "version": "v6.3.1",
"source": {
"type": "git",
"url": "https://github.com/nunomaduro/collision.git",
- "reference": "8b610eef8582ccdc05d8f2ab23305e2d37049461"
+ "reference": "0f6349c3ed5dd28467087b08fb59384bb458a22b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nunomaduro/collision/zipball/8b610eef8582ccdc05d8f2ab23305e2d37049461",
- "reference": "8b610eef8582ccdc05d8f2ab23305e2d37049461",
+ "url": "https://api.github.com/repos/nunomaduro/collision/zipball/0f6349c3ed5dd28467087b08fb59384bb458a22b",
+ "reference": "0f6349c3ed5dd28467087b08fb59384bb458a22b",
"shasum": ""
},
"require": {
- "facade/ignition-contracts": "^1.0",
- "filp/whoops": "^2.14.3",
- "php": "^7.3 || ^8.0",
- "symfony/console": "^5.0"
+ "filp/whoops": "^2.14.5",
+ "php": "^8.0.0",
+ "symfony/console": "^6.0.2"
},
"require-dev": {
- "brianium/paratest": "^6.1",
- "fideloper/proxy": "^4.4.1",
- "fruitcake/laravel-cors": "^2.0.3",
- "laravel/framework": "8.x-dev",
- "nunomaduro/larastan": "^0.6.2",
- "nunomaduro/mock-final-classes": "^1.0",
- "orchestra/testbench": "^6.0",
- "phpstan/phpstan": "^0.12.64",
- "phpunit/phpunit": "^9.5.0"
+ "brianium/paratest": "^6.4.1",
+ "laravel/framework": "^9.26.1",
+ "laravel/pint": "^1.1.1",
+ "nunomaduro/larastan": "^1.0.3",
+ "nunomaduro/mock-final-classes": "^1.1.0",
+ "orchestra/testbench": "^7.7",
+ "phpunit/phpunit": "^9.5.23",
+ "spatie/ignition": "^1.4.1"
},
"type": "library",
"extra": {
+ "branch-alias": {
+ "dev-develop": "6.x-dev"
+ },
"laravel": {
"providers": [
"NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider"
@@ -11304,7 +11469,7 @@
"type": "patreon"
}
],
- "time": "2022-01-10T16:22:52+00:00"
+ "time": "2022-09-29T12:29:49+00:00"
},
{
"name": "phar-io/manifest",
@@ -11419,16 +11584,16 @@
},
{
"name": "phpunit/php-code-coverage",
- "version": "9.2.17",
+ "version": "9.2.18",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "aa94dc41e8661fe90c7316849907cba3007b10d8"
+ "reference": "12fddc491826940cf9b7e88ad9664cf51f0f6d0a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/aa94dc41e8661fe90c7316849907cba3007b10d8",
- "reference": "aa94dc41e8661fe90c7316849907cba3007b10d8",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/12fddc491826940cf9b7e88ad9664cf51f0f6d0a",
+ "reference": "12fddc491826940cf9b7e88ad9664cf51f0f6d0a",
"shasum": ""
},
"require": {
@@ -11484,7 +11649,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
- "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.17"
+ "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.18"
},
"funding": [
{
@@ -11492,7 +11657,7 @@
"type": "github"
}
],
- "time": "2022-08-30T12:24:04+00:00"
+ "time": "2022-10-27T13:35:33+00:00"
},
{
"name": "phpunit/php-file-iterator",
@@ -11737,16 +11902,16 @@
},
{
"name": "phpunit/phpunit",
- "version": "9.5.24",
+ "version": "9.5.26",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "d0aa6097bef9fd42458a9b3c49da32c6ce6129c5"
+ "reference": "851867efcbb6a1b992ec515c71cdcf20d895e9d2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/d0aa6097bef9fd42458a9b3c49da32c6ce6129c5",
- "reference": "d0aa6097bef9fd42458a9b3c49da32c6ce6129c5",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/851867efcbb6a1b992ec515c71cdcf20d895e9d2",
+ "reference": "851867efcbb6a1b992ec515c71cdcf20d895e9d2",
"shasum": ""
},
"require": {
@@ -11768,14 +11933,14 @@
"phpunit/php-timer": "^5.0.2",
"sebastian/cli-parser": "^1.0.1",
"sebastian/code-unit": "^1.0.6",
- "sebastian/comparator": "^4.0.5",
+ "sebastian/comparator": "^4.0.8",
"sebastian/diff": "^4.0.3",
"sebastian/environment": "^5.1.3",
- "sebastian/exporter": "^4.0.3",
+ "sebastian/exporter": "^4.0.5",
"sebastian/global-state": "^5.0.1",
"sebastian/object-enumerator": "^4.0.3",
"sebastian/resource-operations": "^3.0.3",
- "sebastian/type": "^3.1",
+ "sebastian/type": "^3.2",
"sebastian/version": "^3.0.2"
},
"suggest": {
@@ -11819,7 +11984,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
- "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.24"
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.26"
},
"funding": [
{
@@ -11829,9 +11994,13 @@
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit",
+ "type": "tidelift"
}
],
- "time": "2022-08-30T07:42:16+00:00"
+ "time": "2022-10-28T06:00:21+00:00"
},
{
"name": "sebastian/cli-parser",
@@ -12854,7 +13023,7 @@
"prefer-stable": true,
"prefer-lowest": false,
"platform": {
- "php": "^7.4|^8.0",
+ "php": "^8.0.2|^8.1",
"ext-bcmath": "*",
"ext-ctype": "*",
"ext-curl": "*",
diff --git a/config/federation.php b/config/federation.php
index 91575abd9..4b6795687 100644
--- a/config/federation.php
+++ b/config/federation.php
@@ -16,7 +16,7 @@ return [
'inbox' => env('AP_INBOX', true),
'sharedInbox' => env('AP_SHAREDINBOX', true),
- 'remoteFollow' => env('AP_REMOTE_FOLLOW', false),
+ 'remoteFollow' => env('AP_REMOTE_FOLLOW', true),
'delivery' => [
'timeout' => env('ACTIVITYPUB_DELIVERY_TIMEOUT', 30.0),
diff --git a/config/filesystems.php b/config/filesystems.php
index 592c237cd..cc0ce35a4 100644
--- a/config/filesystems.php
+++ b/config/filesystems.php
@@ -53,6 +53,7 @@ return [
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
+ 'throw' => true,
],
's3' => [
@@ -65,6 +66,7 @@ return [
'url' => env('AWS_URL'),
'endpoint' => env('AWS_ENDPOINT'),
'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false),
+ 'throw' => true,
],
'spaces' => [
@@ -79,6 +81,7 @@ return [
'CacheControl' => 'max-age=31536000'
],
'root' => env('DO_SPACES_ROOT','/'),
+ 'throw' => true,
],
'backup' => [
diff --git a/config/instance.php b/config/instance.php
index 3347e8f83..9a7c48e32 100644
--- a/config/instance.php
+++ b/config/instance.php
@@ -27,7 +27,7 @@ return [
],
'network' => [
- 'cached' => env('PF_NETWORK_TIMELINE') ? env('INSTANCE_NETWORK_TIMELINE_CACHED', false) : false,
+ 'cached' => env('PF_NETWORK_TIMELINE') ? env('INSTANCE_NETWORK_TIMELINE_CACHED', true) : false,
'cache_dropoff' => env('INSTANCE_NETWORK_TIMELINE_CACHE_DROPOFF', 100),
'max_hours_old' => env('INSTANCE_NETWORK_TIMELINE_CACHE_MAX_HOUR_INGEST', 6)
]
diff --git a/config/laravel-ffmpeg.php b/config/laravel-ffmpeg.php
index 21315f199..44cd1b6eb 100644
--- a/config/laravel-ffmpeg.php
+++ b/config/laravel-ffmpeg.php
@@ -13,9 +13,9 @@ return [
'timeout' => 3600,
- 'enable_logging' => env('FFMPEG_LOG', false),
-
- 'set_command_and_error_output_on_exception' => false,
+ 'log_channel' => env('FFMPEG_LOG_CHANNEL', false), // set to false to completely disable logging
'temporary_files_root' => env('FFMPEG_TEMPORARY_FILES_ROOT', sys_get_temp_dir()),
+
+ 'temporary_files_encrypted_hls' => env('FFMPEG_TEMPORARY_ENCRYPTED_HLS', env('FFMPEG_TEMPORARY_FILES_ROOT', sys_get_temp_dir())),
];
diff --git a/config/portfolio.php b/config/portfolio.php
new file mode 100644
index 000000000..9b4cd8f4b
--- /dev/null
+++ b/config/portfolio.php
@@ -0,0 +1,31 @@
+ env('PORTFOLIO_DOMAIN', config('pixelfed.domain.app')),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Portfolio Path
+ |--------------------------------------------------------------------------
+ |
+ | This value is the path used for the portfolio feature. Only change
+ | the default value if you have a subdomain configured. If you want
+ | to use the root path of the subdomain, leave this value empty.
+ |
+ | WARNING: SETTING THIS VALUE WITHOUT A SUBDOMAIN COULD BREAK YOUR
+ | INSTANCE, SO ONLY CHANGE THIS IF YOU KNOW WHAT YOU'RE DOING.
+ |
+ */
+ 'path' => env('PORTFOLIO_PATH', '/i/portfolio'),
+];
diff --git a/database/migrations/2022_01_16_060052_create_portfolios_table.php b/database/migrations/2022_01_16_060052_create_portfolios_table.php
new file mode 100644
index 000000000..73d639cc4
--- /dev/null
+++ b/database/migrations/2022_01_16_060052_create_portfolios_table.php
@@ -0,0 +1,45 @@
+id();
+ $table->unsignedInteger('user_id')->nullable()->unique()->index();
+ $table->bigInteger('profile_id')->unsigned()->unique()->index();
+ $table->boolean('active')->nullable()->index();
+ $table->boolean('show_captions')->default(true)->nullable();
+ $table->boolean('show_license')->default(true)->nullable();
+ $table->boolean('show_location')->default(true)->nullable();
+ $table->boolean('show_timestamp')->default(true)->nullable();
+ $table->boolean('show_link')->default(true)->nullable();
+ $table->string('profile_source')->default('recent')->nullable();
+ $table->boolean('show_avatar')->default(true)->nullable();
+ $table->boolean('show_bio')->default(true)->nullable();
+ $table->string('profile_layout')->default('grid')->nullable();
+ $table->string('profile_container')->default('fixed')->nullable();
+ $table->json('metadata')->nullable();
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::dropIfExists('portfolios');
+ }
+}
diff --git a/database/migrations/2022_10_07_045520_add_reblog_of_id_index_to_statuses_table.php b/database/migrations/2022_10_07_045520_add_reblog_of_id_index_to_statuses_table.php
new file mode 100644
index 000000000..b577063fb
--- /dev/null
+++ b/database/migrations/2022_10_07_045520_add_reblog_of_id_index_to_statuses_table.php
@@ -0,0 +1,34 @@
+index('in_reply_to_id');
+ $table->index('reblog_of_id');
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::table('statuses', function (Blueprint $table) {
+ $table->dropIndex('statuses_in_reply_to_id_index');
+ $table->dropIndex('statuses_reblog_of_id_index');
+ });
+ }
+}
diff --git a/database/migrations/2022_10_07_055133_remove_old_compound_index_from_statuses_table.php b/database/migrations/2022_10_07_055133_remove_old_compound_index_from_statuses_table.php
new file mode 100644
index 000000000..ae9b84bbc
--- /dev/null
+++ b/database/migrations/2022_10_07_055133_remove_old_compound_index_from_statuses_table.php
@@ -0,0 +1,35 @@
+getDoctrineSchemaManager();
+ if(array_key_exists('statuses_in_reply_to_id_reblog_of_id_index', $sc->listTableIndexes('statuses'))) {
+ $table->dropIndex('statuses_in_reply_to_id_reblog_of_id_index');
+ }
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::table('statuses', function (Blueprint $table) {
+ //
+ });
+ }
+}
diff --git a/database/migrations/2022_10_07_072311_add_status_id_index_to_bookmarks_table.php b/database/migrations/2022_10_07_072311_add_status_id_index_to_bookmarks_table.php
new file mode 100644
index 000000000..d04fd9333
--- /dev/null
+++ b/database/migrations/2022_10_07_072311_add_status_id_index_to_bookmarks_table.php
@@ -0,0 +1,31 @@
+index('status_id');
+ $table->index('profile_id');
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ //
+ }
+}
diff --git a/database/migrations/2022_10_07_072555_add_status_id_index_to_direct_messages_table.php b/database/migrations/2022_10_07_072555_add_status_id_index_to_direct_messages_table.php
new file mode 100644
index 000000000..cc66bb77f
--- /dev/null
+++ b/database/migrations/2022_10_07_072555_add_status_id_index_to_direct_messages_table.php
@@ -0,0 +1,31 @@
+index('status_id');
+ $table->index('group_message');
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ //
+ }
+}
diff --git a/database/migrations/2022_10_07_072859_add_status_id_index_to_mentions_table.php b/database/migrations/2022_10_07_072859_add_status_id_index_to_mentions_table.php
new file mode 100644
index 000000000..91ad7a594
--- /dev/null
+++ b/database/migrations/2022_10_07_072859_add_status_id_index_to_mentions_table.php
@@ -0,0 +1,31 @@
+index('status_id');
+ $table->index('profile_id');
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ //
+ }
+}
diff --git a/database/migrations/2022_10_07_073337_add_indexes_to_reports_table.php b/database/migrations/2022_10_07_073337_add_indexes_to_reports_table.php
new file mode 100644
index 000000000..cfe7d5a7e
--- /dev/null
+++ b/database/migrations/2022_10_07_073337_add_indexes_to_reports_table.php
@@ -0,0 +1,33 @@
+index('user_id');
+ $table->index('profile_id');
+ $table->index('object_id');
+ $table->index('object_type');
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ //
+ }
+}
diff --git a/database/migrations/2022_10_07_110644_add_item_id_and_item_type_indexes_to_notifications_table.php b/database/migrations/2022_10_07_110644_add_item_id_and_item_type_indexes_to_notifications_table.php
new file mode 100644
index 000000000..8eac8f2ad
--- /dev/null
+++ b/database/migrations/2022_10_07_110644_add_item_id_and_item_type_indexes_to_notifications_table.php
@@ -0,0 +1,33 @@
+index('item_id');
+ $table->index('item_type');
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::table('notifications', function (Blueprint $table) {
+ //
+ });
+ }
+}
diff --git a/database/migrations/2022_10_09_043758_fix_cdn_url_in_avatars_table.php b/database/migrations/2022_10_09_043758_fix_cdn_url_in_avatars_table.php
new file mode 100644
index 000000000..65b19496b
--- /dev/null
+++ b/database/migrations/2022_10_09_043758_fix_cdn_url_in_avatars_table.php
@@ -0,0 +1,41 @@
+chunk(50, function($avatars) use($baseUrl) {
+ foreach($avatars as $avatar) {
+ if(substr($avatar->cdn_url, 0, 23) === '/storage/cache/avatars/') {
+ $avatar->cdn_url = $baseUrl . $avatar->cdn_url;
+ $avatar->save();
+ }
+ Cache::forget('avatar:' . $avatar->profile_id);
+ AccountService::del($avatar->profile_id);
+ }
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ }
+}
diff --git a/database/migrations/2022_10_31_043257_add_actors_last_synced_at_to_instances_table.php b/database/migrations/2022_10_31_043257_add_actors_last_synced_at_to_instances_table.php
new file mode 100644
index 000000000..3a0c309c6
--- /dev/null
+++ b/database/migrations/2022_10_31_043257_add_actors_last_synced_at_to_instances_table.php
@@ -0,0 +1,32 @@
+timestamp('actors_last_synced_at')->nullable();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::table('instances', function (Blueprint $table) {
+ $table->dropColumn('actors_last_synced_at');
+ });
+ }
+};
diff --git a/public/css/admin.css b/public/css/admin.css
index d84571aad..2df11cc56 100644
Binary files a/public/css/admin.css and b/public/css/admin.css differ
diff --git a/public/css/app.css b/public/css/app.css
index 5fd41e309..73ede6144 100644
Binary files a/public/css/app.css and b/public/css/app.css differ
diff --git a/public/css/appdark.css b/public/css/appdark.css
index 8af92116e..c71ee30c2 100644
Binary files a/public/css/appdark.css and b/public/css/appdark.css differ
diff --git a/public/css/landing.css b/public/css/landing.css
index c72597a2f..0e0d64338 100644
Binary files a/public/css/landing.css and b/public/css/landing.css differ
diff --git a/public/css/portfolio.css b/public/css/portfolio.css
new file mode 100644
index 000000000..13ce29647
Binary files /dev/null and b/public/css/portfolio.css differ
diff --git a/public/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7W0Q5nw.woff2 b/public/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7W0Q5nw.woff2
new file mode 100644
index 000000000..980853fec
Binary files /dev/null and b/public/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7W0Q5nw.woff2 differ
diff --git a/public/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa25L7W0Q5n-wU.woff2 b/public/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa25L7W0Q5n-wU.woff2
new file mode 100644
index 000000000..edd834682
Binary files /dev/null and b/public/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa25L7W0Q5n-wU.woff2 differ
diff --git a/public/js/admin.js b/public/js/admin.js
index a9626e9fc..c84e6e2fe 100644
Binary files a/public/js/admin.js and b/public/js/admin.js differ
diff --git a/public/js/app.js b/public/js/app.js
index 7194d17ed..d0a7b5aec 100644
Binary files a/public/js/app.js and b/public/js/app.js differ
diff --git a/public/js/collections.js b/public/js/collections.js
index 5ccf259cd..464137348 100644
Binary files a/public/js/collections.js and b/public/js/collections.js differ
diff --git a/public/js/components.js b/public/js/components.js
index 992e5e7c0..8da4bedb2 100644
Binary files a/public/js/components.js and b/public/js/components.js differ
diff --git a/public/js/compose-17lx4qxke.js b/public/js/compose-17lx4qxke.js
deleted file mode 100644
index ad3d45a7b..000000000
Binary files a/public/js/compose-17lx4qxke.js and /dev/null differ
diff --git a/public/js/compose-classic.js b/public/js/compose-classic.js
index 409cfaa27..dd01392e2 100644
Binary files a/public/js/compose-classic.js and b/public/js/compose-classic.js differ
diff --git a/public/js/compose-llsjbikoc.js b/public/js/compose-llsjbikoc.js
new file mode 100644
index 000000000..340ac4452
Binary files /dev/null and b/public/js/compose-llsjbikoc.js differ
diff --git a/public/js/compose.js b/public/js/compose.js
index 4b9ec6322..b9047f035 100644
Binary files a/public/js/compose.js and b/public/js/compose.js differ
diff --git a/public/js/daci-17lx4qxke.js b/public/js/daci-17lx4qxke.js
deleted file mode 100644
index 3cc6c601c..000000000
Binary files a/public/js/daci-17lx4qxke.js and /dev/null differ
diff --git a/public/js/daci-llsjbikoc.js b/public/js/daci-llsjbikoc.js
new file mode 100644
index 000000000..74724865c
Binary files /dev/null and b/public/js/daci-llsjbikoc.js differ
diff --git a/public/js/developers.js b/public/js/developers.js
index aede36d98..1bf771c75 100644
Binary files a/public/js/developers.js and b/public/js/developers.js differ
diff --git a/public/js/dffc-17lx4qxke.js b/public/js/dffc-17lx4qxke.js
deleted file mode 100644
index d82b6e0f8..000000000
Binary files a/public/js/dffc-17lx4qxke.js and /dev/null differ
diff --git a/public/js/dffc-llsjbikoc.js b/public/js/dffc-llsjbikoc.js
new file mode 100644
index 000000000..8eef79771
Binary files /dev/null and b/public/js/dffc-llsjbikoc.js differ
diff --git a/public/js/direct.js b/public/js/direct.js
index 13dfac951..d2ca7a573 100644
Binary files a/public/js/direct.js and b/public/js/direct.js differ
diff --git a/public/js/discover-17lx4qxke.js b/public/js/discover-17lx4qxke.js
deleted file mode 100644
index fc4f353b4..000000000
Binary files a/public/js/discover-17lx4qxke.js and /dev/null differ
diff --git a/public/js/discover-llsjbikoc.js b/public/js/discover-llsjbikoc.js
new file mode 100644
index 000000000..14e6c186e
Binary files /dev/null and b/public/js/discover-llsjbikoc.js differ
diff --git a/public/js/dms-17lx4qxke.js b/public/js/dms-17lx4qxke.js
deleted file mode 100644
index 487a40d15..000000000
Binary files a/public/js/dms-17lx4qxke.js and /dev/null differ
diff --git a/public/js/dms-llsjbikoc.js b/public/js/dms-llsjbikoc.js
new file mode 100644
index 000000000..791c817a8
Binary files /dev/null and b/public/js/dms-llsjbikoc.js differ
diff --git a/public/js/dmsg-17lx4qxke.js b/public/js/dmsg-17lx4qxke.js
deleted file mode 100644
index 3fca6b739..000000000
Binary files a/public/js/dmsg-17lx4qxke.js and /dev/null differ
diff --git a/public/js/dmsg-llsjbikoc.js b/public/js/dmsg-llsjbikoc.js
new file mode 100644
index 000000000..77028f7ba
Binary files /dev/null and b/public/js/dmsg-llsjbikoc.js differ
diff --git a/public/js/dmyh-17lx4qxke.js b/public/js/dmyh-17lx4qxke.js
deleted file mode 100644
index 73e4fb432..000000000
Binary files a/public/js/dmyh-17lx4qxke.js and /dev/null differ
diff --git a/public/js/dmyh-llsjbikoc.js b/public/js/dmyh-llsjbikoc.js
new file mode 100644
index 000000000..8ca2e3876
Binary files /dev/null and b/public/js/dmyh-llsjbikoc.js differ
diff --git a/public/js/dmym-17lx4qxke.js b/public/js/dmym-17lx4qxke.js
deleted file mode 100644
index f1fc8fa12..000000000
Binary files a/public/js/dmym-17lx4qxke.js and /dev/null differ
diff --git a/public/js/dmym-llsjbikoc.js b/public/js/dmym-llsjbikoc.js
new file mode 100644
index 000000000..fbbe4759d
Binary files /dev/null and b/public/js/dmym-llsjbikoc.js differ
diff --git a/public/js/dsfc-17lx4qxke.js b/public/js/dsfc-17lx4qxke.js
deleted file mode 100644
index b70e5fd61..000000000
Binary files a/public/js/dsfc-17lx4qxke.js and /dev/null differ
diff --git a/public/js/dsfc-llsjbikoc.js b/public/js/dsfc-llsjbikoc.js
new file mode 100644
index 000000000..8e36c12c0
Binary files /dev/null and b/public/js/dsfc-llsjbikoc.js differ
diff --git a/public/js/dssc-17lx4qxke.js b/public/js/dssc-17lx4qxke.js
deleted file mode 100644
index 752f543f7..000000000
Binary files a/public/js/dssc-17lx4qxke.js and /dev/null differ
diff --git a/public/js/dssc-llsjbikoc.js b/public/js/dssc-llsjbikoc.js
new file mode 100644
index 000000000..a5a52e591
Binary files /dev/null and b/public/js/dssc-llsjbikoc.js differ
diff --git a/public/js/hashtag.js b/public/js/hashtag.js
index 7413a3970..c6d5bd12d 100644
Binary files a/public/js/hashtag.js and b/public/js/hashtag.js differ
diff --git a/public/js/home-17lx4qxke.js b/public/js/home-17lx4qxke.js
deleted file mode 100644
index db7155436..000000000
Binary files a/public/js/home-17lx4qxke.js and /dev/null differ
diff --git a/public/js/home-llsjbikoc.js b/public/js/home-llsjbikoc.js
new file mode 100644
index 000000000..b91e781c0
Binary files /dev/null and b/public/js/home-llsjbikoc.js differ
diff --git a/public/js/installer.js b/public/js/installer.js
index 1c0b4aa2f..b9e55e2c5 100644
Binary files a/public/js/installer.js and b/public/js/installer.js differ
diff --git a/public/js/live-player.js b/public/js/live-player.js
index 72ef56dc4..9603d0273 100644
Binary files a/public/js/live-player.js and b/public/js/live-player.js differ
diff --git a/public/js/manifest.js b/public/js/manifest.js
index 8cffe5206..1e85ce338 100644
Binary files a/public/js/manifest.js and b/public/js/manifest.js differ
diff --git a/public/js/notifications-17lx4qxke.js b/public/js/notifications-llsjbikoc.js
similarity index 98%
rename from public/js/notifications-17lx4qxke.js
rename to public/js/notifications-llsjbikoc.js
index 7976cdf3d..5c564bfe1 100644
Binary files a/public/js/notifications-17lx4qxke.js and b/public/js/notifications-llsjbikoc.js differ
diff --git a/public/js/portfolio.js b/public/js/portfolio.js
new file mode 100644
index 000000000..2d11cf4fa
Binary files /dev/null and b/public/js/portfolio.js differ
diff --git a/public/js/post-17lx4qxke.js b/public/js/post-17lx4qxke.js
deleted file mode 100644
index d85b20a8e..000000000
Binary files a/public/js/post-17lx4qxke.js and /dev/null differ
diff --git a/public/js/post-llsjbikoc.js b/public/js/post-llsjbikoc.js
new file mode 100644
index 000000000..0a8433033
Binary files /dev/null and b/public/js/post-llsjbikoc.js differ
diff --git a/public/js/profile-17lx4qxke.js b/public/js/profile-17lx4qxke.js
deleted file mode 100644
index 8468a210b..000000000
Binary files a/public/js/profile-17lx4qxke.js and /dev/null differ
diff --git a/public/js/profile-llsjbikoc.js b/public/js/profile-llsjbikoc.js
new file mode 100644
index 000000000..88529d464
Binary files /dev/null and b/public/js/profile-llsjbikoc.js differ
diff --git a/public/js/profile.js b/public/js/profile.js
index c4c2b3f6a..d85b83e08 100644
Binary files a/public/js/profile.js and b/public/js/profile.js differ
diff --git a/public/js/rempos.js b/public/js/rempos.js
index d7dbc5885..861c30a0e 100644
Binary files a/public/js/rempos.js and b/public/js/rempos.js differ
diff --git a/public/js/rempro.js b/public/js/rempro.js
index a9ad342fa..e0b20925b 100644
Binary files a/public/js/rempro.js and b/public/js/rempro.js differ
diff --git a/public/js/search.js b/public/js/search.js
index c61cb5942..e394074ea 100644
Binary files a/public/js/search.js and b/public/js/search.js differ
diff --git a/public/js/spa.js b/public/js/spa.js
index 88f3980b7..209c9b0b8 100644
Binary files a/public/js/spa.js and b/public/js/spa.js differ
diff --git a/public/js/status.js b/public/js/status.js
index 41c470a5b..8fe4ad5f5 100644
Binary files a/public/js/status.js and b/public/js/status.js differ
diff --git a/public/js/stories.js b/public/js/stories.js
index e2ce13c76..a4b51342c 100644
Binary files a/public/js/stories.js and b/public/js/stories.js differ
diff --git a/public/js/story-compose.js b/public/js/story-compose.js
index 4635ba604..56c943f18 100644
Binary files a/public/js/story-compose.js and b/public/js/story-compose.js differ
diff --git a/public/js/timeline.js b/public/js/timeline.js
index 5a100a919..5174adeb8 100644
Binary files a/public/js/timeline.js and b/public/js/timeline.js differ
diff --git a/public/js/vendor.js b/public/js/vendor.js
index 85c49a842..d74dcb017 100644
Binary files a/public/js/vendor.js and b/public/js/vendor.js differ
diff --git a/public/mix-manifest.json b/public/mix-manifest.json
index 35782727f..7cada2bac 100644
Binary files a/public/mix-manifest.json and b/public/mix-manifest.json differ
diff --git a/resources/assets/js/components/PortfolioPost.vue b/resources/assets/js/components/PortfolioPost.vue
new file mode 100644
index 000000000..595485e41
--- /dev/null
+++ b/resources/assets/js/components/PortfolioPost.vue
@@ -0,0 +1,122 @@
+
+ {{ post.content_text }} by @{{profile.username}} Licensed under {{ post.media_attachments[0].license.title }} {{ post.place.name }}, {{ post.place.country }}
+
+ {{ formatDate(post.created_at) }}
+
+
+ {{ formatDate(post.created_at) }}
+
+ You don't have any public posts, once you share public posts you can enable your portfolio. Portfolio Enabled You must enable your portfolio before you or anyone can view it. Portfolio Source Choose how you want to populate your portfolio, select Most Recent posts to automatically update your portfolio with recent posts or Curated Posts to select specific posts for your portfolio. Loading recent posts... Select up to 24 photos from your 100 most recent posts. You can only select public photo posts, videos are not supported at this time. Selected {{ selectedRecentPosts.length }}/24 {{ item.label }} {{ item.description }} Layout Portfolio URL
+
+