diff --git a/.gitattributes b/.gitattributes index fcb21d396..ada52797d 100644 --- a/.gitattributes +++ b/.gitattributes @@ -9,3 +9,10 @@ /.github export-ignore CHANGELOG.md export-ignore .styleci.yml export-ignore + +# Collapse diffs for generated files: +public/**/*.js text -diff +public/**/*.json text -diff +public/**/*.css text -diff +public/img/* binary -diff +public/fonts/* binary -diff diff --git a/CHANGELOG.md b/CHANGELOG.md index de5f73b61..f8b4fde43 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,46 @@ # Release Notes -## [Unreleased](https://github.com/pixelfed/pixelfed/compare/v0.11.11...dev) +## [Unreleased](https://github.com/pixelfed/pixelfed/compare/v0.11.12...dev) + +### Features + +- Curated Onboarding ([#4946](https://github.com/pixelfed/pixelfed/pull/4946)) ([8dac2caf](https://github.com/pixelfed/pixelfed/commit/8dac2caf)) +- Add Curated Onboarding Templates ([071163b4](https://github.com/pixelfed/pixelfed/commit/071163b4)) +- Add Remote Reports to Admin Dashboard Reports page ([ef0ff78e](https://github.com/pixelfed/pixelfed/commit/ef0ff78e)) + +### Updates + +- Update Inbox, cast live filters to lowercase ([d835e0ad](https://github.com/pixelfed/pixelfed/commit/d835e0ad)) +- Update federation config, increase default timeline days falloff to 90 days from 2 days. Fixes #4905 ([011834f4](https://github.com/pixelfed/pixelfed/commit/011834f4)) +- Update cache config, use predis as default redis driver client ([ea6b1623](https://github.com/pixelfed/pixelfed/commit/ea6b1623)) +- Update .gitattributes to collapse diffs on generated files ([ThisIsMissEm](https://github.com/pixelfed/pixelfed/commit/9978b2b9)) +- Update api v1/v2 instance endpoints, bump mastoapi version from 2.7.2 to 3.5.3 ([545f7d5e](https://github.com/pixelfed/pixelfed/commit/545f7d5e)) +- Update ApiV1Controller, implement better limit logic to gracefully handle requests with limits that exceed the max ([1f74a95d](https://github.com/pixelfed/pixelfed/commit/1f74a95d)) +- Update AdminCuratedRegisterController, show oldest applications first ([c4dde641](https://github.com/pixelfed/pixelfed/commit/c4dde641)) +- Update Directory logic, add curated onboarding support ([59c70239](https://github.com/pixelfed/pixelfed/commit/59c70239)) +- Update Inbox and StatusObserver, fix silently rejected direct messages due to saveQuietly which failed to generate a snowflake id ([089ba3c4](https://github.com/pixelfed/pixelfed/commit/089ba3c4)) +- Update Curated Onboarding dashboard, improve application filtering and make it easier to distinguish response state ([2b5d7235](https://github.com/pixelfed/pixelfed/commit/2b5d7235)) +- Update AdminReports, add story reports and fix cs ([767522a8](https://github.com/pixelfed/pixelfed/commit/767522a8)) +- Update AdminReportController, add story report support ([a16309ac](https://github.com/pixelfed/pixelfed/commit/a16309ac)) +- Update kb, add email confirmation issues page ([2f48df8c](https://github.com/pixelfed/pixelfed/commit/2f48df8c)) +- Update AdminCuratedRegisterController, filter confirmation activities from activitylog ([ab9ecb6e](https://github.com/pixelfed/pixelfed/commit/ab9ecb6e)) +- Update Inbox, fix flag validation condition, allow profile reports ([402a4607](https://github.com/pixelfed/pixelfed/commit/402a4607)) +- Update AccountTransformer, fix follower/following count visibility bug ([542d1106](https://github.com/pixelfed/pixelfed/commit/542d1106)) +- ([](https://github.com/pixelfed/pixelfed/commit/)) + +## [v0.11.12 (2024-02-16)](https://github.com/pixelfed/pixelfed/compare/v0.11.11...v0.11.12) + +### Features +- Autospam Live Filters - block remote activities based on comma separated keywords ([40b45b2a](https://github.com/pixelfed/pixelfed/commit/40b45b2a)) +- Added Software Update banner to admin home feeds ([b0fb1988](https://github.com/pixelfed/pixelfed/commit/b0fb1988)) + +### Updates + +- Update ApiV1Controller, fix network timeline ([0faf59e3](https://github.com/pixelfed/pixelfed/commit/0faf59e3)) +- Update public/network timelines, fix non-redis response and fix reblogs in home feed ([8b4ac5cc](https://github.com/pixelfed/pixelfed/commit/8b4ac5cc)) +- Update Federation, use proper Content-Type headers for following/follower collections ([fb0bb9a3](https://github.com/pixelfed/pixelfed/commit/fb0bb9a3)) +- Update ActivityPubFetchService, enforce stricter Content-Type validation ([1232cfc8](https://github.com/pixelfed/pixelfed/commit/1232cfc8)) +- Update status view, fix unlisted/private scope bug ([0f3ca194](https://github.com/pixelfed/pixelfed/commit/0f3ca194)) ## [v0.11.11 (2024-02-09)](https://github.com/pixelfed/pixelfed/compare/v0.11.10...v0.11.11) @@ -27,7 +67,6 @@ ### Federation - Update Privacy Settings, add support for Mastodon `indexable` search flag ([fc24630e](https://github.com/pixelfed/pixelfed/commit/fc24630e)) - Update AP Helpers, consume actor `indexable` attribute ([fbdcdd9d](https://github.com/pixelfed/pixelfed/commit/fbdcdd9d)) -- ([](https://github.com/pixelfed/pixelfed/commit/)) ### Updates - Update FollowerService, add forget method to RelationshipService call to reduce load when mass purging ([347e4f59](https://github.com/pixelfed/pixelfed/commit/347e4f59)) @@ -112,7 +151,6 @@ - Update PublicApiController, consume InstanceService blocked domains for account and statuses endpoints ([01b33fb3](https://github.com/pixelfed/pixelfed/commit/01b33fb3)) - Update ApiV1Controller, enforce blocked instance domain logic ([5b284cac](https://github.com/pixelfed/pixelfed/commit/5b284cac)) - Update ApiV2Controller, add vapid key to instance object. Thanks thisismissem! ([4d02d6f1](https://github.com/pixelfed/pixelfed/commit/4d02d6f1)) -- ([](https://github.com/pixelfed/pixelfed/commit/)) ## [v0.11.9 (2023-08-21)](https://github.com/pixelfed/pixelfed/compare/v0.11.8...v0.11.9) diff --git a/app/Http/Controllers/Admin/AdminDirectoryController.php b/app/Http/Controllers/Admin/AdminDirectoryController.php index 1e4db7d2d..8d3e4b7fc 100644 --- a/app/Http/Controllers/Admin/AdminDirectoryController.php +++ b/app/Http/Controllers/Admin/AdminDirectoryController.php @@ -75,6 +75,7 @@ trait AdminDirectoryController } $res['community_guidelines'] = config_cache('app.rules') ? json_decode(config_cache('app.rules'), true) : []; + $res['curated_onboarding'] = (bool) config_cache('instance.curated_registration.enabled'); $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')); @@ -124,7 +125,7 @@ trait AdminDirectoryController $res['requirements_validator'] = $validator->errors(); - $res['is_eligible'] = $res['open_registration'] && + $res['is_eligible'] = ($res['open_registration'] || $res['curated_onboarding']) && $res['oauth_enabled'] && $res['activitypub_enabled'] && count($res['requirements_validator']) === 0 && @@ -227,7 +228,7 @@ trait AdminDirectoryController ->each(function($name) { Storage::delete($name); }); - $path = $request->file('banner_image')->store('public/headers'); + $path = $request->file('banner_image')->storePublicly('public/headers'); $res['banner_image'] = $path; ConfigCacheService::put('app.banner_image', url(Storage::url($path))); @@ -249,7 +250,8 @@ trait AdminDirectoryController { $reqs = []; $reqs['feature_config'] = [ - 'open_registration' => config_cache('pixelfed.open_registration'), + 'open_registration' => (bool) config_cache('pixelfed.open_registration'), + 'curated_onboarding' => (bool) config_cache('instance.curated_registration.enabled'), 'activitypub_enabled' => config_cache('federation.activitypub.enabled'), 'oauth_enabled' => config_cache('pixelfed.oauth_enabled'), 'media_types' => Str::of(config_cache('pixelfed.media_types'))->explode(','), @@ -265,7 +267,8 @@ trait AdminDirectoryController ]; $validator = Validator::make($reqs['feature_config'], [ - 'open_registration' => 'required|accepted', + 'open_registration' => 'required_unless:curated_onboarding,true', + 'curated_onboarding' => 'required_unless:open_registration,true', 'activitypub_enabled' => 'required|accepted', 'oauth_enabled' => 'required|accepted', 'media_types' => [ diff --git a/app/Http/Controllers/Admin/AdminReportController.php b/app/Http/Controllers/Admin/AdminReportController.php index ac238f28c..8695a5003 100644 --- a/app/Http/Controllers/Admin/AdminReportController.php +++ b/app/Http/Controllers/Admin/AdminReportController.php @@ -2,461 +2,471 @@ namespace App\Http\Controllers\Admin; +use App\AccountInterstitial; +use App\Http\Resources\AdminReport; +use App\Http\Resources\AdminRemoteReport; +use App\Http\Resources\AdminSpamReport; +use App\Jobs\DeletePipeline\DeleteAccountPipeline; +use App\Jobs\DeletePipeline\DeleteRemoteProfilePipeline; +use App\Jobs\StatusPipeline\RemoteStatusDelete; +use App\Jobs\StatusPipeline\StatusDelete; +use App\Jobs\StoryPipeline\StoryDelete; +use App\Notification; +use App\Profile; +use App\Report; +use App\Models\RemoteReport; +use App\Services\AccountService; +use App\Services\ModLogService; +use App\Services\NetworkTimelineService; +use App\Services\NotificationService; +use App\Services\PublicTimelineService; +use App\Services\StatusService; +use App\Status; +use App\Story; +use App\User; use Cache; +use Storage; use Carbon\Carbon; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Redis; -use App\Services\AccountService; -use App\Services\StatusService; -use App\{ - AccountInterstitial, - Contact, - Hashtag, - Newsroom, - Notification, - OauthClient, - Profile, - Report, - Status, - Story, - User -}; -use Illuminate\Validation\Rule; -use App\Services\StoryService; -use App\Services\ModLogService; -use App\Jobs\DeletePipeline\DeleteAccountPipeline; -use App\Jobs\DeletePipeline\DeleteRemoteProfilePipeline; -use App\Jobs\StatusPipeline\StatusDelete; -use App\Jobs\StatusPipeline\RemoteStatusDelete; -use App\Http\Resources\AdminReport; -use App\Http\Resources\AdminSpamReport; -use App\Services\NotificationService; -use App\Services\PublicTimelineService; -use App\Services\NetworkTimelineService; trait AdminReportController { - public function reports(Request $request) - { - $filter = $request->input('filter') == 'closed' ? 'closed' : 'open'; - $page = $request->input('page') ?? 1; + public function reports(Request $request) + { + $filter = $request->input('filter') == 'closed' ? 'closed' : 'open'; + $page = $request->input('page') ?? 1; - $ai = Cache::remember('admin-dash:reports:ai-count', 3600, function() { - return AccountInterstitial::whereNotNull('appeal_requested_at')->whereNull('appeal_handled_at')->count(); - }); + $ai = Cache::remember('admin-dash:reports:ai-count', 3600, function () { + return AccountInterstitial::whereNotNull('appeal_requested_at')->whereNull('appeal_handled_at')->count(); + }); - $spam = Cache::remember('admin-dash:reports:spam-count', 3600, function() { - return AccountInterstitial::whereType('post.autospam')->whereNull('appeal_handled_at')->count(); - }); + $spam = Cache::remember('admin-dash:reports:spam-count', 3600, function () { + return AccountInterstitial::whereType('post.autospam')->whereNull('appeal_handled_at')->count(); + }); - $mailVerifications = Redis::scard('email:manual'); + $mailVerifications = Redis::scard('email:manual'); - if($filter == 'open' && $page == 1) { - $reports = Cache::remember('admin-dash:reports:list-cache', 300, function() use($page, $filter) { - return Report::whereHas('status') - ->whereHas('reportedUser') - ->whereHas('reporter') - ->orderBy('created_at','desc') - ->when($filter, function($q, $filter) { - return $filter == 'open' ? - $q->whereNull('admin_seen') : - $q->whereNotNull('admin_seen'); - }) - ->paginate(6); - }); - } else { - $reports = Report::whereHas('status') - ->whereHas('reportedUser') - ->whereHas('reporter') - ->orderBy('created_at','desc') - ->when($filter, function($q, $filter) { - return $filter == 'open' ? - $q->whereNull('admin_seen') : - $q->whereNotNull('admin_seen'); - }) - ->paginate(6); - } + if ($filter == 'open' && $page == 1) { + $reports = Cache::remember('admin-dash:reports:list-cache', 300, function () use ($filter) { + return Report::whereHas('status') + ->whereHas('reportedUser') + ->whereHas('reporter') + ->orderBy('created_at', 'desc') + ->when($filter, function ($q, $filter) { + return $filter == 'open' ? + $q->whereNull('admin_seen') : + $q->whereNotNull('admin_seen'); + }) + ->paginate(6); + }); + } else { + $reports = Report::whereHas('status') + ->whereHas('reportedUser') + ->whereHas('reporter') + ->orderBy('created_at', 'desc') + ->when($filter, function ($q, $filter) { + return $filter == 'open' ? + $q->whereNull('admin_seen') : + $q->whereNotNull('admin_seen'); + }) + ->paginate(6); + } - return view('admin.reports.home', compact('reports', 'ai', 'spam', 'mailVerifications')); - } + return view('admin.reports.home', compact('reports', 'ai', 'spam', 'mailVerifications')); + } - public function showReport(Request $request, $id) - { - $report = Report::with('status')->findOrFail($id); - if($request->has('ref') && $request->input('ref') == 'email') { - return redirect('/i/admin/reports?tab=report&id=' . $report->id); - } - return view('admin.reports.show', compact('report')); - } + public function showReport(Request $request, $id) + { + $report = Report::with('status')->findOrFail($id); + if ($request->has('ref') && $request->input('ref') == 'email') { + return redirect('/i/admin/reports?tab=report&id='.$report->id); + } - public function appeals(Request $request) - { - $appeals = AccountInterstitial::whereNotNull('appeal_requested_at') - ->whereNull('appeal_handled_at') - ->latest() - ->paginate(6); - return view('admin.reports.appeals', compact('appeals')); - } + return view('admin.reports.show', compact('report')); + } - public function showAppeal(Request $request, $id) - { - $appeal = AccountInterstitial::whereNotNull('appeal_requested_at') - ->whereNull('appeal_handled_at') - ->findOrFail($id); - $meta = json_decode($appeal->meta); - return view('admin.reports.show_appeal', compact('appeal', 'meta')); - } + public function appeals(Request $request) + { + $appeals = AccountInterstitial::whereNotNull('appeal_requested_at') + ->whereNull('appeal_handled_at') + ->latest() + ->paginate(6); - public function spam(Request $request) - { - $this->validate($request, [ - 'tab' => 'sometimes|in:home,not-spam,spam,settings,custom,exemptions' - ]); + return view('admin.reports.appeals', compact('appeals')); + } - $tab = $request->input('tab', 'home'); + public function showAppeal(Request $request, $id) + { + $appeal = AccountInterstitial::whereNotNull('appeal_requested_at') + ->whereNull('appeal_handled_at') + ->findOrFail($id); + $meta = json_decode($appeal->meta); - $openCount = Cache::remember('admin-dash:reports:spam-count', 3600, function() { - return AccountInterstitial::whereType('post.autospam') - ->whereNull('appeal_handled_at') - ->count(); - }); + return view('admin.reports.show_appeal', compact('appeal', 'meta')); + } - $monthlyCount = Cache::remember('admin-dash:reports:spam-count:30d', 43200, function() { - return AccountInterstitial::whereType('post.autospam') - ->where('created_at', '>', now()->subMonth()) - ->count(); - }); + public function spam(Request $request) + { + $this->validate($request, [ + 'tab' => 'sometimes|in:home,not-spam,spam,settings,custom,exemptions', + ]); - $totalCount = Cache::remember('admin-dash:reports:spam-count:total', 43200, function() { - return AccountInterstitial::whereType('post.autospam')->count(); - }); + $tab = $request->input('tab', 'home'); - $uncategorized = Cache::remember('admin-dash:reports:spam-sync', 3600, function() { - return AccountInterstitial::whereType('post.autospam') - ->whereIsSpam(null) - ->whereNotNull('appeal_handled_at') - ->exists(); - }); + $openCount = Cache::remember('admin-dash:reports:spam-count', 3600, function () { + return AccountInterstitial::whereType('post.autospam') + ->whereNull('appeal_handled_at') + ->count(); + }); - $avg = Cache::remember('admin-dash:reports:spam-count:avg', 43200, function() { - if(config('database.default') != 'mysql') { - return 0; - } - return AccountInterstitial::selectRaw('*, count(id) as counter') - ->whereType('post.autospam') - ->groupBy('user_id') - ->get() - ->avg('counter'); - }); + $monthlyCount = Cache::remember('admin-dash:reports:spam-count:30d', 43200, function () { + return AccountInterstitial::whereType('post.autospam') + ->where('created_at', '>', now()->subMonth()) + ->count(); + }); - $avgOpen = Cache::remember('admin-dash:reports:spam-count:avgopen', 43200, function() { - if(config('database.default') != 'mysql') { - return "0"; - } - $seconds = AccountInterstitial::selectRaw('DATE(created_at) AS start_date, AVG(TIME_TO_SEC(TIMEDIFF(appeal_handled_at, created_at))) AS timediff')->whereType('post.autospam')->whereNotNull('appeal_handled_at')->where('created_at', '>', now()->subMonth())->get(); - if(!$seconds) { - return "0"; - } - $mins = floor($seconds->avg('timediff') / 60); + $totalCount = Cache::remember('admin-dash:reports:spam-count:total', 43200, function () { + return AccountInterstitial::whereType('post.autospam')->count(); + }); - if($mins < 60) { - return $mins . ' min(s)'; - } + $uncategorized = Cache::remember('admin-dash:reports:spam-sync', 3600, function () { + return AccountInterstitial::whereType('post.autospam') + ->whereIsSpam(null) + ->whereNotNull('appeal_handled_at') + ->exists(); + }); - if($mins < 2880) { - return floor($mins / 60) . ' hour(s)'; - } + $avg = Cache::remember('admin-dash:reports:spam-count:avg', 43200, function () { + if (config('database.default') != 'mysql') { + return 0; + } - return floor($mins / 60 / 24) . ' day(s)'; - }); - $avgCount = $totalCount && $avg ? floor($totalCount / $avg) : "0"; + return AccountInterstitial::selectRaw('*, count(id) as counter') + ->whereType('post.autospam') + ->groupBy('user_id') + ->get() + ->avg('counter'); + }); - if(in_array($tab, ['home', 'spam', 'not-spam'])) { - $appeals = AccountInterstitial::whereType('post.autospam') - ->when($tab, function($q, $tab) { - switch($tab) { - case 'home': - return $q->whereNull('appeal_handled_at'); - break; - case 'spam': - return $q->whereIsSpam(true); - break; - case 'not-spam': - return $q->whereIsSpam(false); - break; - } - }) - ->latest() - ->paginate(6); + $avgOpen = Cache::remember('admin-dash:reports:spam-count:avgopen', 43200, function () { + if (config('database.default') != 'mysql') { + return '0'; + } + $seconds = AccountInterstitial::selectRaw('DATE(created_at) AS start_date, AVG(TIME_TO_SEC(TIMEDIFF(appeal_handled_at, created_at))) AS timediff')->whereType('post.autospam')->whereNotNull('appeal_handled_at')->where('created_at', '>', now()->subMonth())->get(); + if (! $seconds) { + return '0'; + } + $mins = floor($seconds->avg('timediff') / 60); - if($tab !== 'home') { - $appeals = $appeals->appends(['tab' => $tab]); - } - } else { - $appeals = new class { - public function count() { - return 0; - } + if ($mins < 60) { + return $mins.' min(s)'; + } - public function render() { - return; - } - }; - } + if ($mins < 2880) { + return floor($mins / 60).' hour(s)'; + } + return floor($mins / 60 / 24).' day(s)'; + }); + $avgCount = $totalCount && $avg ? floor($totalCount / $avg) : '0'; - return view('admin.reports.spam', compact('tab', 'appeals', 'openCount', 'monthlyCount', 'totalCount', 'avgCount', 'avgOpen', 'uncategorized')); - } + if (in_array($tab, ['home', 'spam', 'not-spam'])) { + $appeals = AccountInterstitial::whereType('post.autospam') + ->when($tab, function ($q, $tab) { + switch ($tab) { + case 'home': + return $q->whereNull('appeal_handled_at'); + break; + case 'spam': + return $q->whereIsSpam(true); + break; + case 'not-spam': + return $q->whereIsSpam(false); + break; + } + }) + ->latest() + ->paginate(6); - public function showSpam(Request $request, $id) - { - $appeal = AccountInterstitial::whereType('post.autospam') - ->findOrFail($id); - if($request->has('ref') && $request->input('ref') == 'email') { - return redirect('/i/admin/reports?tab=autospam&id=' . $appeal->id); - } - $meta = json_decode($appeal->meta); - return view('admin.reports.show_spam', compact('appeal', 'meta')); - } + if ($tab !== 'home') { + $appeals = $appeals->appends(['tab' => $tab]); + } + } else { + $appeals = new class + { + public function count() + { + return 0; + } - public function fixUncategorizedSpam(Request $request) - { - if(Cache::get('admin-dash:reports:spam-sync-active')) { - return redirect('/i/admin/reports/autospam'); - } + public function render() + { - Cache::put('admin-dash:reports:spam-sync-active', 1, 900); + } + }; + } - AccountInterstitial::chunk(500, function($reports) { - foreach($reports as $report) { - if($report->item_type != 'App\Status') { - continue; - } + return view('admin.reports.spam', compact('tab', 'appeals', 'openCount', 'monthlyCount', 'totalCount', 'avgCount', 'avgOpen', 'uncategorized')); + } - if($report->type != 'post.autospam') { - continue; - } + public function showSpam(Request $request, $id) + { + $appeal = AccountInterstitial::whereType('post.autospam') + ->findOrFail($id); + if ($request->has('ref') && $request->input('ref') == 'email') { + return redirect('/i/admin/reports?tab=autospam&id='.$appeal->id); + } + $meta = json_decode($appeal->meta); - if($report->is_spam != null) { - continue; - } + return view('admin.reports.show_spam', compact('appeal', 'meta')); + } - $status = StatusService::get($report->item_id, false); - if(!$status) { - return; - } - $scope = $status['visibility']; - $report->is_spam = $scope == 'unlisted'; - $report->in_violation = $report->is_spam; - $report->severity_index = 1; - $report->save(); - } - }); + public function fixUncategorizedSpam(Request $request) + { + if (Cache::get('admin-dash:reports:spam-sync-active')) { + return redirect('/i/admin/reports/autospam'); + } - Cache::forget('admin-dash:reports:spam-sync'); - return redirect('/i/admin/reports/autospam'); - } + Cache::put('admin-dash:reports:spam-sync-active', 1, 900); - public function updateSpam(Request $request, $id) - { - $this->validate($request, [ - 'action' => 'required|in:dismiss,approve,dismiss-all,approve-all,delete-account,mark-spammer' - ]); + AccountInterstitial::chunk(500, function ($reports) { + foreach ($reports as $report) { + if ($report->item_type != 'App\Status') { + continue; + } - $action = $request->input('action'); - $appeal = AccountInterstitial::whereType('post.autospam') - ->whereNull('appeal_handled_at') - ->findOrFail($id); + if ($report->type != 'post.autospam') { + continue; + } - $meta = json_decode($appeal->meta); - $res = ['status' => 'success']; - $now = now(); - Cache::forget('admin-dash:reports:spam-count:total'); - Cache::forget('admin-dash:reports:spam-count:30d'); + if ($report->is_spam != null) { + continue; + } - if($action == 'delete-account') { - if(config('pixelfed.account_deletion') == false) { - abort(404); - } + $status = StatusService::get($report->item_id, false); + if (! $status) { + return; + } + $scope = $status['visibility']; + $report->is_spam = $scope == 'unlisted'; + $report->in_violation = $report->is_spam; + $report->severity_index = 1; + $report->save(); + } + }); - $user = User::findOrFail($appeal->user_id); - $profile = $user->profile; + Cache::forget('admin-dash:reports:spam-sync'); - if($user->is_admin == true) { - $mid = $request->user()->id; - abort_if($user->id < $mid, 403); - } + return redirect('/i/admin/reports/autospam'); + } - $ts = now()->addMonth(); - $user->status = 'delete'; - $profile->status = 'delete'; - $user->delete_after = $ts; - $profile->delete_after = $ts; - $user->save(); - $profile->save(); + public function updateSpam(Request $request, $id) + { + $this->validate($request, [ + 'action' => 'required|in:dismiss,approve,dismiss-all,approve-all,delete-account,mark-spammer', + ]); - ModLogService::boot() - ->objectUid($user->id) - ->objectId($user->id) - ->objectType('App\User::class') - ->user($request->user()) - ->action('admin.user.delete') - ->accessLevel('admin') - ->save(); + $action = $request->input('action'); + $appeal = AccountInterstitial::whereType('post.autospam') + ->whereNull('appeal_handled_at') + ->findOrFail($id); - Cache::forget('profiles:private'); - DeleteAccountPipeline::dispatch($user); - return; - } + $meta = json_decode($appeal->meta); + $res = ['status' => 'success']; + $now = now(); + Cache::forget('admin-dash:reports:spam-count:total'); + Cache::forget('admin-dash:reports:spam-count:30d'); - if($action == 'dismiss') { - $appeal->is_spam = true; - $appeal->appeal_handled_at = $now; - $appeal->save(); + if ($action == 'delete-account') { + if (config('pixelfed.account_deletion') == false) { + abort(404); + } - Cache::forget('pf:bouncer_v0:exemption_by_pid:' . $appeal->user->profile_id); - Cache::forget('pf:bouncer_v0:recent_by_pid:' . $appeal->user->profile_id); - Cache::forget('admin-dash:reports:spam-count'); - return $res; - } + $user = User::findOrFail($appeal->user_id); + $profile = $user->profile; - if($action == 'dismiss-all') { - AccountInterstitial::whereType('post.autospam') - ->whereItemType('App\Status') - ->whereNull('appeal_handled_at') - ->whereUserId($appeal->user_id) - ->update(['appeal_handled_at' => $now, 'is_spam' => true]); - Cache::forget('pf:bouncer_v0:exemption_by_pid:' . $appeal->user->profile_id); - Cache::forget('pf:bouncer_v0:recent_by_pid:' . $appeal->user->profile_id); - Cache::forget('admin-dash:reports:spam-count'); - return $res; - } + if ($user->is_admin == true) { + $mid = $request->user()->id; + abort_if($user->id < $mid, 403); + } - if($action == 'approve-all') { - AccountInterstitial::whereType('post.autospam') - ->whereItemType('App\Status') - ->whereNull('appeal_handled_at') - ->whereUserId($appeal->user_id) - ->get() - ->each(function($report) use($meta) { - $report->is_spam = false; - $report->appeal_handled_at = now(); - $report->save(); - $status = Status::find($report->item_id); - if($status) { - $status->is_nsfw = $meta->is_nsfw; - $status->scope = 'public'; - $status->visibility = 'public'; - $status->save(); - StatusService::del($status->id, true); - } - }); - Cache::forget('pf:bouncer_v0:exemption_by_pid:' . $appeal->user->profile_id); - Cache::forget('pf:bouncer_v0:recent_by_pid:' . $appeal->user->profile_id); - Cache::forget('admin-dash:reports:spam-count'); - return $res; - } + $ts = now()->addMonth(); + $user->status = 'delete'; + $profile->status = 'delete'; + $user->delete_after = $ts; + $profile->delete_after = $ts; + $user->save(); + $profile->save(); - if($action == 'mark-spammer') { - AccountInterstitial::whereType('post.autospam') - ->whereItemType('App\Status') - ->whereNull('appeal_handled_at') - ->whereUserId($appeal->user_id) - ->update(['appeal_handled_at' => $now, 'is_spam' => true]); + ModLogService::boot() + ->objectUid($user->id) + ->objectId($user->id) + ->objectType('App\User::class') + ->user($request->user()) + ->action('admin.user.delete') + ->accessLevel('admin') + ->save(); - $pro = Profile::whereUserId($appeal->user_id)->firstOrFail(); + Cache::forget('profiles:private'); + DeleteAccountPipeline::dispatch($user); - $pro->update([ - 'unlisted' => true, - 'cw' => true, - 'no_autolink' => true - ]); + return; + } - Status::whereProfileId($pro->id) - ->get() - ->each(function($report) { - $status->is_nsfw = $meta->is_nsfw; - $status->scope = 'public'; - $status->visibility = 'public'; - $status->save(); - StatusService::del($status->id, true); - }); + if ($action == 'dismiss') { + $appeal->is_spam = true; + $appeal->appeal_handled_at = $now; + $appeal->save(); - Cache::forget('pf:bouncer_v0:exemption_by_pid:' . $appeal->user->profile_id); - Cache::forget('pf:bouncer_v0:recent_by_pid:' . $appeal->user->profile_id); - Cache::forget('admin-dash:reports:spam-count'); - return $res; - } + Cache::forget('pf:bouncer_v0:exemption_by_pid:'.$appeal->user->profile_id); + Cache::forget('pf:bouncer_v0:recent_by_pid:'.$appeal->user->profile_id); + Cache::forget('admin-dash:reports:spam-count'); - $status = $appeal->status; - $status->is_nsfw = $meta->is_nsfw; - $status->scope = 'public'; - $status->visibility = 'public'; - $status->save(); + return $res; + } - $appeal->is_spam = false; - $appeal->appeal_handled_at = now(); - $appeal->save(); + if ($action == 'dismiss-all') { + AccountInterstitial::whereType('post.autospam') + ->whereItemType('App\Status') + ->whereNull('appeal_handled_at') + ->whereUserId($appeal->user_id) + ->update(['appeal_handled_at' => $now, 'is_spam' => true]); + Cache::forget('pf:bouncer_v0:exemption_by_pid:'.$appeal->user->profile_id); + Cache::forget('pf:bouncer_v0:recent_by_pid:'.$appeal->user->profile_id); + Cache::forget('admin-dash:reports:spam-count'); - StatusService::del($status->id); + return $res; + } - Cache::forget('pf:bouncer_v0:exemption_by_pid:' . $appeal->user->profile_id); - Cache::forget('pf:bouncer_v0:recent_by_pid:' . $appeal->user->profile_id); - Cache::forget('admin-dash:reports:spam-count'); + if ($action == 'approve-all') { + AccountInterstitial::whereType('post.autospam') + ->whereItemType('App\Status') + ->whereNull('appeal_handled_at') + ->whereUserId($appeal->user_id) + ->get() + ->each(function ($report) use ($meta) { + $report->is_spam = false; + $report->appeal_handled_at = now(); + $report->save(); + $status = Status::find($report->item_id); + if ($status) { + $status->is_nsfw = $meta->is_nsfw; + $status->scope = 'public'; + $status->visibility = 'public'; + $status->save(); + StatusService::del($status->id, true); + } + }); + Cache::forget('pf:bouncer_v0:exemption_by_pid:'.$appeal->user->profile_id); + Cache::forget('pf:bouncer_v0:recent_by_pid:'.$appeal->user->profile_id); + Cache::forget('admin-dash:reports:spam-count'); - return $res; - } + return $res; + } - public function updateAppeal(Request $request, $id) - { - $this->validate($request, [ - 'action' => 'required|in:dismiss,approve' - ]); + if ($action == 'mark-spammer') { + AccountInterstitial::whereType('post.autospam') + ->whereItemType('App\Status') + ->whereNull('appeal_handled_at') + ->whereUserId($appeal->user_id) + ->update(['appeal_handled_at' => $now, 'is_spam' => true]); - $action = $request->input('action'); - $appeal = AccountInterstitial::whereNotNull('appeal_requested_at') - ->whereNull('appeal_handled_at') - ->findOrFail($id); + $pro = Profile::whereUserId($appeal->user_id)->firstOrFail(); - if($action == 'dismiss') { - $appeal->appeal_handled_at = now(); - $appeal->save(); - Cache::forget('admin-dash:reports:ai-count'); - return redirect('/i/admin/reports/appeals'); - } + $pro->update([ + 'unlisted' => true, + 'cw' => true, + 'no_autolink' => true, + ]); - switch ($appeal->type) { - case 'post.cw': - $status = $appeal->status; - $status->is_nsfw = false; - $status->save(); - break; + Status::whereProfileId($pro->id) + ->get() + ->each(function ($report) { + $status->is_nsfw = $meta->is_nsfw; + $status->scope = 'public'; + $status->visibility = 'public'; + $status->save(); + StatusService::del($status->id, true); + }); - case 'post.unlist': - $status = $appeal->status; - $status->scope = 'public'; - $status->visibility = 'public'; - $status->save(); - break; + Cache::forget('pf:bouncer_v0:exemption_by_pid:'.$appeal->user->profile_id); + Cache::forget('pf:bouncer_v0:recent_by_pid:'.$appeal->user->profile_id); + Cache::forget('admin-dash:reports:spam-count'); - default: - # code... - break; - } + return $res; + } - $appeal->appeal_handled_at = now(); - $appeal->save(); - StatusService::del($status->id, true); - Cache::forget('admin-dash:reports:ai-count'); + $status = $appeal->status; + $status->is_nsfw = $meta->is_nsfw; + $status->scope = 'public'; + $status->visibility = 'public'; + $status->save(); - return redirect('/i/admin/reports/appeals'); - } + $appeal->is_spam = false; + $appeal->appeal_handled_at = now(); + $appeal->save(); + + StatusService::del($status->id); + + Cache::forget('pf:bouncer_v0:exemption_by_pid:'.$appeal->user->profile_id); + Cache::forget('pf:bouncer_v0:recent_by_pid:'.$appeal->user->profile_id); + Cache::forget('admin-dash:reports:spam-count'); + + return $res; + } + + public function updateAppeal(Request $request, $id) + { + $this->validate($request, [ + 'action' => 'required|in:dismiss,approve', + ]); + + $action = $request->input('action'); + $appeal = AccountInterstitial::whereNotNull('appeal_requested_at') + ->whereNull('appeal_handled_at') + ->findOrFail($id); + + if ($action == 'dismiss') { + $appeal->appeal_handled_at = now(); + $appeal->save(); + Cache::forget('admin-dash:reports:ai-count'); + + return redirect('/i/admin/reports/appeals'); + } + + switch ($appeal->type) { + case 'post.cw': + $status = $appeal->status; + $status->is_nsfw = false; + $status->save(); + break; + + case 'post.unlist': + $status = $appeal->status; + $status->scope = 'public'; + $status->visibility = 'public'; + $status->save(); + break; + + default: + // code... + break; + } + + $appeal->appeal_handled_at = now(); + $appeal->save(); + StatusService::del($status->id, true); + Cache::forget('admin-dash:reports:ai-count'); + + return redirect('/i/admin/reports/appeals'); + } public function updateReport(Request $request, $id) { $this->validate($request, [ - 'action' => 'required|string', + 'action' => 'required|string', ]); $action = $request->input('action'); @@ -470,7 +480,7 @@ trait AdminReportController 'ban', ]; - if (!in_array($action, $actions)) { + if (! in_array($action, $actions)) { return abort(403); } @@ -479,7 +489,7 @@ trait AdminReportController $this->handleReportAction($report, $action); Cache::forget('admin-dash:reports:list-cache'); - return response()->json(['msg'=> 'Success']); + return response()->json(['msg' => 'Success']); } public function handleReportAction(Report $report, $action) @@ -541,7 +551,7 @@ trait AdminReportController '3' => 'unlist', '4' => 'delete', '5' => 'shadowban', - '6' => 'ban' + '6' => 'ban', ]; } @@ -549,675 +559,963 @@ trait AdminReportController { $this->validate($request, [ 'action' => 'required|integer|min:1|max:10', - 'ids' => 'required|array' + 'ids' => 'required|array', ]); $action = $this->actionMap()[$request->input('action')]; $ids = $request->input('ids'); $reports = Report::whereIn('id', $ids)->whereNull('admin_seen')->get(); - foreach($reports as $report) { + foreach ($reports as $report) { $this->handleReportAction($report, $action); } $res = [ 'message' => 'Success', - 'code' => 200 + 'code' => 200, ]; + return response()->json($res); } public function reportMailVerifications(Request $request) { - $ids = Redis::smembers('email:manual'); - $ignored = Redis::smembers('email:manual-ignored'); - $reports = []; - if($ids) { - $reports = collect($ids) - ->filter(function($id) use($ignored) { - return !in_array($id, $ignored); - }) - ->map(function($id) { - $user = User::whereProfileId($id)->first(); - if(!$user || $user->email_verified_at) { - return []; - } - $account = AccountService::get($id, true); - if(!$account) { - return []; - } - $account['email'] = $user->email; - return $account; - }) - ->filter(function($res) { - return $res && isset($res['id']); - }) - ->values(); - } - return view('admin.reports.mail_verification', compact('reports', 'ignored')); + $ids = Redis::smembers('email:manual'); + $ignored = Redis::smembers('email:manual-ignored'); + $reports = []; + if ($ids) { + $reports = collect($ids) + ->filter(function ($id) use ($ignored) { + return ! in_array($id, $ignored); + }) + ->map(function ($id) { + $user = User::whereProfileId($id)->first(); + if (! $user || $user->email_verified_at) { + return []; + } + $account = AccountService::get($id, true); + if (! $account) { + return []; + } + $account['email'] = $user->email; + + return $account; + }) + ->filter(function ($res) { + return $res && isset($res['id']); + }) + ->values(); + } + + return view('admin.reports.mail_verification', compact('reports', 'ignored')); } public function reportMailVerifyIgnore(Request $request) { - $id = $request->input('id'); - Redis::sadd('email:manual-ignored', $id); - return redirect('/i/admin/reports'); + $id = $request->input('id'); + Redis::sadd('email:manual-ignored', $id); + + return redirect('/i/admin/reports'); } public function reportMailVerifyApprove(Request $request) { - $id = $request->input('id'); - $user = User::whereProfileId($id)->firstOrFail(); - Redis::srem('email:manual', $id); - Redis::srem('email:manual-ignored', $id); - $user->email_verified_at = now(); - $user->save(); - return redirect('/i/admin/reports'); + $id = $request->input('id'); + $user = User::whereProfileId($id)->firstOrFail(); + Redis::srem('email:manual', $id); + Redis::srem('email:manual-ignored', $id); + $user->email_verified_at = now(); + $user->save(); + + return redirect('/i/admin/reports'); } public function reportMailVerifyClearIgnored(Request $request) { - Redis::del('email:manual-ignored'); - return [200]; + Redis::del('email:manual-ignored'); + + return [200]; } public function reportsStats(Request $request) { - $stats = [ - 'total' => Report::count(), - 'open' => Report::whereNull('admin_seen')->count(), - 'closed' => Report::whereNotNull('admin_seen')->count(), - 'autospam' => AccountInterstitial::whereType('post.autospam')->count(), - 'autospam_open' => AccountInterstitial::whereType('post.autospam')->whereNull(['appeal_handled_at'])->count(), - 'appeals' => AccountInterstitial::whereNotNull('appeal_requested_at')->whereNull('appeal_handled_at')->count(), - 'email_verification_requests' => Redis::scard('email:manual') - ]; - return $stats; + $stats = [ + 'total' => Report::count(), + 'open' => Report::whereNull('admin_seen')->count(), + 'closed' => Report::whereNotNull('admin_seen')->count(), + 'autospam' => AccountInterstitial::whereType('post.autospam')->count(), + 'autospam_open' => AccountInterstitial::whereType('post.autospam')->whereNull(['appeal_handled_at'])->count(), + 'appeals' => AccountInterstitial::whereNotNull('appeal_requested_at')->whereNull('appeal_handled_at')->count(), + 'remote_open' => RemoteReport::whereNull('action_taken_at')->count(), + 'email_verification_requests' => Redis::scard('email:manual'), + ]; + + return $stats; } public function reportsApiAll(Request $request) { - $filter = $request->input('filter') == 'closed' ? 'closed' : 'open'; + $filter = $request->input('filter') == 'closed' ? 'closed' : 'open'; - $reports = AdminReport::collection( - Report::orderBy('id','desc') - ->when($filter, function($q, $filter) { - return $filter == 'open' ? - $q->whereNull('admin_seen') : - $q->whereNotNull('admin_seen'); - }) - ->groupBy(['id', 'object_id', 'object_type', 'profile_id']) - ->cursorPaginate(6) - ->withQueryString() - ); + $reports = AdminReport::collection( + Report::orderBy('id', 'desc') + ->when($filter, function ($q, $filter) { + return $filter == 'open' ? + $q->whereNull('admin_seen') : + $q->whereNotNull('admin_seen'); + }) + ->groupBy(['id', 'object_id', 'object_type', 'profile_id']) + ->cursorPaginate(6) + ->withQueryString() + ); - return $reports; + return $reports; + } + + public function reportsApiRemote(Request $request) + { + $filter = $request->input('filter') == 'closed' ? 'closed' : 'open'; + + $reports = AdminRemoteReport::collection( + RemoteReport::orderBy('id', 'desc') + ->when($filter, function ($q, $filter) { + return $filter == 'open' ? + $q->whereNull('action_taken_at') : + $q->whereNotNull('action_taken_at'); + }) + ->cursorPaginate(6) + ->withQueryString() + ); + + return $reports; } public function reportsApiGet(Request $request, $id) { - $report = Report::findOrFail($id); - return new AdminReport($report); + $report = Report::findOrFail($id); + + return new AdminReport($report); } public function reportsApiHandle(Request $request) { - $this->validate($request, [ - 'object_id' => 'required', - 'object_type' => 'required', - 'id' => 'required', - 'action' => 'required|in:ignore,nsfw,unlist,private,delete', - 'action_type' => 'required|in:post,profile' - ]); + $this->validate($request, [ + 'object_id' => 'required', + 'object_type' => 'required', + 'id' => 'required', + 'action' => 'required|in:ignore,nsfw,unlist,private,delete,delete-all', + 'action_type' => 'required|in:post,profile,story', + ]); - $report = Report::whereObjectId($request->input('object_id'))->findOrFail($request->input('id')); + $report = Report::whereObjectId($request->input('object_id'))->findOrFail($request->input('id')); - if($request->input('action_type') === 'profile') { - return $this->reportsHandleProfileAction($report, $request->input('action')); - } else if($request->input('action_type') === 'post') { - return $this->reportsHandleStatusAction($report, $request->input('action')); - } + if ($request->input('action_type') === 'profile') { + return $this->reportsHandleProfileAction($report, $request->input('action')); + } elseif ($request->input('action_type') === 'post') { + return $this->reportsHandleStatusAction($report, $request->input('action')); + } elseif ($request->input('action_type') === 'story') { + return $this->reportsHandleStoryAction($report, $request->input('action')); + } - return $report; + return $report; + } + + protected function reportsHandleStoryAction($report, $action) + { + switch ($action) { + case 'ignore': + Report::whereObjectId($report->object_id) + ->whereObjectType($report->object_type) + ->update([ + 'admin_seen' => now(), + ]); + + return [200]; + break; + + case 'delete': + $profile = Profile::find($report->reported_profile_id); + $story = Story::whereProfileId($profile->id)->find($report->object_id); + + abort_if(! $story, 400, 'Invalid or missing story'); + + $story->active = false; + $story->save(); + + ModLogService::boot() + ->objectUid($profile->id) + ->objectId($report->object_id) + ->objectType('App\Story::class') + ->user(request()->user()) + ->action('admin.user.moderate') + ->metadata([ + 'action' => 'delete', + 'message' => 'Success!', + ]) + ->accessLevel('admin') + ->save(); + + Report::whereObjectId($report->object_id) + ->whereObjectType($report->object_type) + ->update([ + 'admin_seen' => now(), + ]); + StoryDelete::dispatch($story)->onQueue('story'); + + return [200]; + break; + + case 'delete-all': + $profile = Profile::find($report->reported_profile_id); + $stories = Story::whereProfileId($profile->id)->whereActive(true)->get(); + + abort_if(! $stories || ! $stories->count(), 400, 'Invalid or missing stories'); + + ModLogService::boot() + ->objectUid($profile->id) + ->objectId($report->object_id) + ->objectType('App\Story::class') + ->user(request()->user()) + ->action('admin.user.moderate') + ->metadata([ + 'action' => 'delete-all', + 'message' => 'Success!', + ]) + ->accessLevel('admin') + ->save(); + + Report::where('reported_profile_id', $profile->id) + ->whereObjectType('App\Story') + ->whereNull('admin_seen') + ->update([ + 'admin_seen' => now(), + ]); + $stories->each(function ($story) { + StoryDelete::dispatch($story)->onQueue('story'); + }); + + return [200]; + break; + } } protected function reportsHandleProfileAction($report, $action) { - switch($action) { - case 'ignore': - Report::whereObjectId($report->object_id) - ->whereObjectType($report->object_type) - ->update([ - 'admin_seen' => now() - ]); - return [200]; - break; + switch ($action) { + case 'ignore': + Report::whereObjectId($report->object_id) + ->whereObjectType($report->object_type) + ->update([ + 'admin_seen' => now(), + ]); - case 'nsfw': - if($report->object_type === 'App\Profile') { - $profile = Profile::find($report->object_id); - } else if($report->object_type === 'App\Status') { - $status = Status::find($report->object_id); - if(!$status) { - return [200]; - } - $profile = Profile::find($status->profile_id); - } + return [200]; + break; - if(!$profile) { - return; - } + case 'nsfw': + if ($report->object_type === 'App\Profile') { + $profile = Profile::find($report->object_id); + } elseif ($report->object_type === 'App\Status') { + $status = Status::find($report->object_id); + if (! $status) { + return [200]; + } + $profile = Profile::find($status->profile_id); + } - abort_if($profile->user && $profile->user->is_admin, 400, 'Cannot moderate an admin account.'); + if (! $profile) { + return; + } - $profile->cw = true; - $profile->save(); + abort_if($profile->user && $profile->user->is_admin, 400, 'Cannot moderate an admin account.'); - foreach(Status::whereProfileId($profile->id)->cursor() as $status) { - $status->is_nsfw = true; - $status->save(); - StatusService::del($status->id); - PublicTimelineService::rem($status->id); - } + $profile->cw = true; + $profile->save(); - ModLogService::boot() - ->objectUid($profile->id) - ->objectId($profile->id) - ->objectType('App\Profile::class') - ->user(request()->user()) - ->action('admin.user.moderate') - ->metadata([ - 'action' => 'cw', - 'message' => 'Success!' - ]) - ->accessLevel('admin') - ->save(); + foreach (Status::whereProfileId($profile->id)->cursor() as $status) { + $status->is_nsfw = true; + $status->save(); + StatusService::del($status->id); + PublicTimelineService::rem($status->id); + } - Report::whereObjectId($report->object_id) - ->whereObjectType($report->object_type) - ->update([ - 'nsfw' => true, - 'admin_seen' => now() - ]); - return [200]; - break; + ModLogService::boot() + ->objectUid($profile->id) + ->objectId($profile->id) + ->objectType('App\Profile::class') + ->user(request()->user()) + ->action('admin.user.moderate') + ->metadata([ + 'action' => 'cw', + 'message' => 'Success!', + ]) + ->accessLevel('admin') + ->save(); - case 'unlist': - if($report->object_type === 'App\Profile') { - $profile = Profile::find($report->object_id); - } else if($report->object_type === 'App\Status') { - $status = Status::find($report->object_id); - if(!$status) { - return [200]; - } - $profile = Profile::find($status->profile_id); - } + Report::whereObjectId($report->object_id) + ->whereObjectType($report->object_type) + ->update([ + 'nsfw' => true, + 'admin_seen' => now(), + ]); - if(!$profile) { - return; - } + return [200]; + break; - abort_if($profile->user && $profile->user->is_admin, 400, 'Cannot moderate an admin account.'); + case 'unlist': + if ($report->object_type === 'App\Profile') { + $profile = Profile::find($report->object_id); + } elseif ($report->object_type === 'App\Status') { + $status = Status::find($report->object_id); + if (! $status) { + return [200]; + } + $profile = Profile::find($status->profile_id); + } - $profile->unlisted = true; - $profile->save(); + if (! $profile) { + return; + } - foreach(Status::whereProfileId($profile->id)->whereScope('public')->cursor() as $status) { - $status->scope = 'unlisted'; - $status->visibility = 'unlisted'; - $status->save(); - StatusService::del($status->id); - PublicTimelineService::rem($status->id); - } + abort_if($profile->user && $profile->user->is_admin, 400, 'Cannot moderate an admin account.'); - ModLogService::boot() - ->objectUid($profile->id) - ->objectId($profile->id) - ->objectType('App\Profile::class') - ->user(request()->user()) - ->action('admin.user.moderate') - ->metadata([ - 'action' => 'unlisted', - 'message' => 'Success!' - ]) - ->accessLevel('admin') - ->save(); + $profile->unlisted = true; + $profile->save(); - Report::whereObjectId($report->object_id) - ->whereObjectType($report->object_type) - ->update([ - 'admin_seen' => now() - ]); - return [200]; - break; + foreach (Status::whereProfileId($profile->id)->whereScope('public')->cursor() as $status) { + $status->scope = 'unlisted'; + $status->visibility = 'unlisted'; + $status->save(); + StatusService::del($status->id); + PublicTimelineService::rem($status->id); + } - case 'private': - if($report->object_type === 'App\Profile') { - $profile = Profile::find($report->object_id); - } else if($report->object_type === 'App\Status') { - $status = Status::find($report->object_id); - if(!$status) { - return [200]; - } - $profile = Profile::find($status->profile_id); - } + ModLogService::boot() + ->objectUid($profile->id) + ->objectId($profile->id) + ->objectType('App\Profile::class') + ->user(request()->user()) + ->action('admin.user.moderate') + ->metadata([ + 'action' => 'unlisted', + 'message' => 'Success!', + ]) + ->accessLevel('admin') + ->save(); - if(!$profile) { - return; - } + Report::whereObjectId($report->object_id) + ->whereObjectType($report->object_type) + ->update([ + 'admin_seen' => now(), + ]); - abort_if($profile->user && $profile->user->is_admin, 400, 'Cannot moderate an admin account.'); + return [200]; + break; - $profile->unlisted = true; - $profile->save(); + case 'private': + if ($report->object_type === 'App\Profile') { + $profile = Profile::find($report->object_id); + } elseif ($report->object_type === 'App\Status') { + $status = Status::find($report->object_id); + if (! $status) { + return [200]; + } + $profile = Profile::find($status->profile_id); + } - foreach(Status::whereProfileId($profile->id)->cursor() as $status) { - $status->scope = 'private'; - $status->visibility = 'private'; - $status->save(); - StatusService::del($status->id); - PublicTimelineService::rem($status->id); - } + if (! $profile) { + return; + } - ModLogService::boot() - ->objectUid($profile->id) - ->objectId($profile->id) - ->objectType('App\Profile::class') - ->user(request()->user()) - ->action('admin.user.moderate') - ->metadata([ - 'action' => 'private', - 'message' => 'Success!' - ]) - ->accessLevel('admin') - ->save(); + abort_if($profile->user && $profile->user->is_admin, 400, 'Cannot moderate an admin account.'); - Report::whereObjectId($report->object_id) - ->whereObjectType($report->object_type) - ->update([ - 'admin_seen' => now() - ]); - return [200]; - break; + $profile->unlisted = true; + $profile->save(); - case 'delete': - if(config('pixelfed.account_deletion') == false) { - abort(404); - } + foreach (Status::whereProfileId($profile->id)->cursor() as $status) { + $status->scope = 'private'; + $status->visibility = 'private'; + $status->save(); + StatusService::del($status->id); + PublicTimelineService::rem($status->id); + } - if($report->object_type === 'App\Profile') { - $profile = Profile::find($report->object_id); - } else if($report->object_type === 'App\Status') { - $status = Status::find($report->object_id); - if(!$status) { - return [200]; - } - $profile = Profile::find($status->profile_id); - } + ModLogService::boot() + ->objectUid($profile->id) + ->objectId($profile->id) + ->objectType('App\Profile::class') + ->user(request()->user()) + ->action('admin.user.moderate') + ->metadata([ + 'action' => 'private', + 'message' => 'Success!', + ]) + ->accessLevel('admin') + ->save(); - if(!$profile) { - return; - } + Report::whereObjectId($report->object_id) + ->whereObjectType($report->object_type) + ->update([ + 'admin_seen' => now(), + ]); - abort_if($profile->user && $profile->user->is_admin, 400, 'Cannot delete an admin account.'); + return [200]; + break; - $ts = now()->addMonth(); + case 'delete': + if (config('pixelfed.account_deletion') == false) { + abort(404); + } - if($profile->user_id) { - $user = $profile->user; - abort_if($user->is_admin, 403, 'You cannot delete admin accounts.'); - $user->status = 'delete'; - $user->delete_after = $ts; - $user->save(); - } + if ($report->object_type === 'App\Profile') { + $profile = Profile::find($report->object_id); + } elseif ($report->object_type === 'App\Status') { + $status = Status::find($report->object_id); + if (! $status) { + return [200]; + } + $profile = Profile::find($status->profile_id); + } - $profile->status = 'delete'; - $profile->delete_after = $ts; - $profile->save(); + if (! $profile) { + return; + } - ModLogService::boot() - ->objectUid($profile->id) - ->objectId($profile->id) - ->objectType('App\Profile::class') - ->user(request()->user()) - ->action('admin.user.delete') - ->accessLevel('admin') - ->save(); + abort_if($profile->user && $profile->user->is_admin, 400, 'Cannot delete an admin account.'); - Report::whereObjectId($report->object_id) - ->whereObjectType($report->object_type) - ->update([ - 'admin_seen' => now() - ]); + $ts = now()->addMonth(); - if($profile->user_id) { - DB::table('oauth_access_tokens')->whereUserId($user->id)->delete(); - DB::table('oauth_auth_codes')->whereUserId($user->id)->delete(); - $user->email = $user->id; - $user->password = ''; - $user->status = 'delete'; - $user->save(); - $profile->status = 'delete'; - $profile->delete_after = now()->addMonth(); - $profile->save(); - AccountService::del($profile->id); - DeleteAccountPipeline::dispatch($user)->onQueue('high'); - } else { - $profile->status = 'delete'; - $profile->delete_after = now()->addMonth(); - $profile->save(); - AccountService::del($profile->id); - DeleteRemoteProfilePipeline::dispatch($profile)->onQueue('high'); - } - return [200]; - break; - } + if ($profile->user_id) { + $user = $profile->user; + abort_if($user->is_admin, 403, 'You cannot delete admin accounts.'); + $user->status = 'delete'; + $user->delete_after = $ts; + $user->save(); + } + + $profile->status = 'delete'; + $profile->delete_after = $ts; + $profile->save(); + + ModLogService::boot() + ->objectUid($profile->id) + ->objectId($profile->id) + ->objectType('App\Profile::class') + ->user(request()->user()) + ->action('admin.user.delete') + ->accessLevel('admin') + ->save(); + + Report::whereObjectId($report->object_id) + ->whereObjectType($report->object_type) + ->update([ + 'admin_seen' => now(), + ]); + + if ($profile->user_id) { + DB::table('oauth_access_tokens')->whereUserId($user->id)->delete(); + DB::table('oauth_auth_codes')->whereUserId($user->id)->delete(); + $user->email = $user->id; + $user->password = ''; + $user->status = 'delete'; + $user->save(); + $profile->status = 'delete'; + $profile->delete_after = now()->addMonth(); + $profile->save(); + AccountService::del($profile->id); + DeleteAccountPipeline::dispatch($user)->onQueue('high'); + } else { + $profile->status = 'delete'; + $profile->delete_after = now()->addMonth(); + $profile->save(); + AccountService::del($profile->id); + DeleteRemoteProfilePipeline::dispatch($profile)->onQueue('high'); + } + + return [200]; + break; + } } protected function reportsHandleStatusAction($report, $action) { - switch($action) { - case 'ignore': - Report::whereObjectId($report->object_id) - ->whereObjectType($report->object_type) - ->update([ - 'admin_seen' => now() - ]); - return [200]; - break; + switch ($action) { + case 'ignore': + Report::whereObjectId($report->object_id) + ->whereObjectType($report->object_type) + ->update([ + 'admin_seen' => now(), + ]); - case 'nsfw': - $status = Status::find($report->object_id); + return [200]; + break; - if(!$status) { - return [200]; - } + case 'nsfw': + $status = Status::find($report->object_id); - abort_if($status->profile->user && $status->profile->user->is_admin, 400, 'Cannot moderate an admin account post.'); - $status->is_nsfw = true; - $status->save(); - StatusService::del($status->id); + if (! $status) { + return [200]; + } - ModLogService::boot() - ->objectUid($status->profile_id) - ->objectId($status->profile_id) - ->objectType('App\Status::class') - ->user(request()->user()) - ->action('admin.status.moderate') - ->metadata([ - 'action' => 'cw', - 'message' => 'Success!' - ]) - ->accessLevel('admin') - ->save(); + abort_if($status->profile->user && $status->profile->user->is_admin, 400, 'Cannot moderate an admin account post.'); + $status->is_nsfw = true; + $status->save(); + StatusService::del($status->id); - Report::whereObjectId($report->object_id) - ->whereObjectType($report->object_type) - ->update([ - 'nsfw' => true, - 'admin_seen' => now() - ]); - return [200]; - break; + ModLogService::boot() + ->objectUid($status->profile_id) + ->objectId($status->profile_id) + ->objectType('App\Status::class') + ->user(request()->user()) + ->action('admin.status.moderate') + ->metadata([ + 'action' => 'cw', + 'message' => 'Success!', + ]) + ->accessLevel('admin') + ->save(); - case 'private': - $status = Status::find($report->object_id); + Report::whereObjectId($report->object_id) + ->whereObjectType($report->object_type) + ->update([ + 'nsfw' => true, + 'admin_seen' => now(), + ]); - if(!$status) { - return [200]; - } + return [200]; + break; - abort_if($status->profile->user && $status->profile->user->is_admin, 400, 'Cannot moderate an admin account post.'); + case 'private': + $status = Status::find($report->object_id); - $status->scope = 'private'; - $status->visibility = 'private'; - $status->save(); - StatusService::del($status->id); - PublicTimelineService::rem($status->id); + if (! $status) { + return [200]; + } - ModLogService::boot() - ->objectUid($status->profile_id) - ->objectId($status->profile_id) - ->objectType('App\Status::class') - ->user(request()->user()) - ->action('admin.status.moderate') - ->metadata([ - 'action' => 'private', - 'message' => 'Success!' - ]) - ->accessLevel('admin') - ->save(); + abort_if($status->profile->user && $status->profile->user->is_admin, 400, 'Cannot moderate an admin account post.'); - Report::whereObjectId($report->object_id) - ->whereObjectType($report->object_type) - ->update([ - 'admin_seen' => now() - ]); - return [200]; - break; + $status->scope = 'private'; + $status->visibility = 'private'; + $status->save(); + StatusService::del($status->id); + PublicTimelineService::rem($status->id); - case 'unlist': - $status = Status::find($report->object_id); + ModLogService::boot() + ->objectUid($status->profile_id) + ->objectId($status->profile_id) + ->objectType('App\Status::class') + ->user(request()->user()) + ->action('admin.status.moderate') + ->metadata([ + 'action' => 'private', + 'message' => 'Success!', + ]) + ->accessLevel('admin') + ->save(); - if(!$status) { - return [200]; - } + Report::whereObjectId($report->object_id) + ->whereObjectType($report->object_type) + ->update([ + 'admin_seen' => now(), + ]); - abort_if($status->profile->user && $status->profile->user->is_admin, 400, 'Cannot moderate an admin account post.'); + return [200]; + break; - if($status->scope === 'public') { - $status->scope = 'unlisted'; - $status->visibility = 'unlisted'; - $status->save(); - StatusService::del($status->id); - PublicTimelineService::rem($status->id); - } + case 'unlist': + $status = Status::find($report->object_id); - ModLogService::boot() - ->objectUid($status->profile_id) - ->objectId($status->profile_id) - ->objectType('App\Status::class') - ->user(request()->user()) - ->action('admin.status.moderate') - ->metadata([ - 'action' => 'unlist', - 'message' => 'Success!' - ]) - ->accessLevel('admin') - ->save(); + if (! $status) { + return [200]; + } - Report::whereObjectId($report->object_id) - ->whereObjectType($report->object_type) - ->update([ - 'admin_seen' => now() - ]); - return [200]; - break; + abort_if($status->profile->user && $status->profile->user->is_admin, 400, 'Cannot moderate an admin account post.'); - case 'delete': - $status = Status::find($report->object_id); + if ($status->scope === 'public') { + $status->scope = 'unlisted'; + $status->visibility = 'unlisted'; + $status->save(); + StatusService::del($status->id); + PublicTimelineService::rem($status->id); + } - if(!$status) { - return [200]; - } + ModLogService::boot() + ->objectUid($status->profile_id) + ->objectId($status->profile_id) + ->objectType('App\Status::class') + ->user(request()->user()) + ->action('admin.status.moderate') + ->metadata([ + 'action' => 'unlist', + 'message' => 'Success!', + ]) + ->accessLevel('admin') + ->save(); - $profile = $status->profile; + Report::whereObjectId($report->object_id) + ->whereObjectType($report->object_type) + ->update([ + 'admin_seen' => now(), + ]); - abort_if($profile->user && $profile->user->is_admin, 400, 'Cannot delete an admin account post.'); + return [200]; + break; - StatusService::del($status->id); + case 'delete': + $status = Status::find($report->object_id); - if($profile->user_id != null && $profile->domain == null) { - PublicTimelineService::del($status->id); - StatusDelete::dispatch($status)->onQueue('high'); - } else { - NetworkTimelineService::del($status->id); - RemoteStatusDelete::dispatch($status)->onQueue('high'); - } + if (! $status) { + return [200]; + } - Report::whereObjectId($report->object_id) - ->whereObjectType($report->object_type) - ->update([ - 'admin_seen' => now() - ]); + $profile = $status->profile; - return [200]; - break; - } + abort_if($profile->user && $profile->user->is_admin, 400, 'Cannot delete an admin account post.'); + + StatusService::del($status->id); + + if ($profile->user_id != null && $profile->domain == null) { + PublicTimelineService::del($status->id); + StatusDelete::dispatch($status)->onQueue('high'); + } else { + NetworkTimelineService::del($status->id); + RemoteStatusDelete::dispatch($status)->onQueue('high'); + } + + Report::whereObjectId($report->object_id) + ->whereObjectType($report->object_type) + ->update([ + 'admin_seen' => now(), + ]); + + return [200]; + break; + } } public function reportsApiSpamAll(Request $request) { - $tab = $request->input('tab', 'home'); + $tab = $request->input('tab', 'home'); - $appeals = AdminSpamReport::collection( - AccountInterstitial::orderBy('id', 'desc') - ->whereType('post.autospam') - ->whereNull('appeal_handled_at') - ->cursorPaginate(6) - ->withQueryString() - ); + $appeals = AdminSpamReport::collection( + AccountInterstitial::orderBy('id', 'desc') + ->whereType('post.autospam') + ->whereNull('appeal_handled_at') + ->cursorPaginate(6) + ->withQueryString() + ); - return $appeals; + return $appeals; } public function reportsApiSpamHandle(Request $request) { - $this->validate($request, [ - 'id' => 'required', - 'action' => 'required|in:mark-read,mark-not-spam,mark-all-read,mark-all-not-spam,delete-profile', - ]); + $this->validate($request, [ + 'id' => 'required', + 'action' => 'required|in:mark-read,mark-not-spam,mark-all-read,mark-all-not-spam,delete-profile', + ]); - $action = $request->input('action'); + $action = $request->input('action'); - abort_if( - $action === 'delete-profile' && - !config('pixelfed.account_deletion'), - 404, - "Cannot delete profile, account_deletion is disabled.\n\n Set `ACCOUNT_DELETION=true` in .env and re-cache config." - ); + abort_if( + $action === 'delete-profile' && + ! config('pixelfed.account_deletion'), + 404, + "Cannot delete profile, account_deletion is disabled.\n\n Set `ACCOUNT_DELETION=true` in .env and re-cache config." + ); - $report = AccountInterstitial::with('user') - ->whereType('post.autospam') - ->whereNull('appeal_handled_at') - ->findOrFail($request->input('id')); + $report = AccountInterstitial::with('user') + ->whereType('post.autospam') + ->whereNull('appeal_handled_at') + ->findOrFail($request->input('id')); - $this->reportsHandleSpamAction($report, $action); - Cache::forget('admin-dash:reports:spam-count'); - Cache::forget('pf:bouncer_v0:exemption_by_pid:' . $report->user->profile_id); - Cache::forget('pf:bouncer_v0:recent_by_pid:' . $report->user->profile_id); - return [$action, $report]; + $this->reportsHandleSpamAction($report, $action); + Cache::forget('admin-dash:reports:spam-count'); + Cache::forget('pf:bouncer_v0:exemption_by_pid:'.$report->user->profile_id); + Cache::forget('pf:bouncer_v0:recent_by_pid:'.$report->user->profile_id); + + return [$action, $report]; } public function reportsHandleSpamAction($appeal, $action) { - $meta = json_decode($appeal->meta); + $meta = json_decode($appeal->meta); - if($action == 'mark-read') { - $appeal->is_spam = true; - $appeal->appeal_handled_at = now(); - $appeal->save(); - PublicTimelineService::del($appeal->item_id); - } + if ($action == 'mark-read') { + $appeal->is_spam = true; + $appeal->appeal_handled_at = now(); + $appeal->save(); + PublicTimelineService::del($appeal->item_id); + } - if($action == 'mark-not-spam') { - $status = $appeal->status; - $status->is_nsfw = $meta->is_nsfw; - $status->scope = 'public'; - $status->visibility = 'public'; - $status->save(); + if ($action == 'mark-not-spam') { + $status = $appeal->status; + $status->is_nsfw = $meta->is_nsfw; + $status->scope = 'public'; + $status->visibility = 'public'; + $status->save(); - $appeal->is_spam = false; - $appeal->appeal_handled_at = now(); - $appeal->save(); + $appeal->is_spam = false; + $appeal->appeal_handled_at = now(); + $appeal->save(); - Notification::whereAction('autospam.warning') - ->whereProfileId($appeal->user->profile_id) - ->get() - ->each(function($n) use($appeal) { - NotificationService::del($appeal->user->profile_id, $n->id); - $n->forceDelete(); - }); + Notification::whereAction('autospam.warning') + ->whereProfileId($appeal->user->profile_id) + ->get() + ->each(function ($n) use ($appeal) { + NotificationService::del($appeal->user->profile_id, $n->id); + $n->forceDelete(); + }); - StatusService::del($status->id); - StatusService::get($status->id); - if($status->in_reply_to_id == null && $status->reblog_of_id == null) { - PublicTimelineService::add($status->id); - } - } + StatusService::del($status->id); + StatusService::get($status->id); + if ($status->in_reply_to_id == null && $status->reblog_of_id == null) { + PublicTimelineService::add($status->id); + } + } - if($action == 'mark-all-read') { - AccountInterstitial::whereType('post.autospam') - ->whereItemType('App\Status') - ->whereNull('appeal_handled_at') - ->whereUserId($appeal->user_id) - ->update([ - 'appeal_handled_at' => now(), - 'is_spam' => true - ]); - } + if ($action == 'mark-all-read') { + AccountInterstitial::whereType('post.autospam') + ->whereItemType('App\Status') + ->whereNull('appeal_handled_at') + ->whereUserId($appeal->user_id) + ->update([ + 'appeal_handled_at' => now(), + 'is_spam' => true, + ]); + } - if($action == 'mark-all-not-spam') { - AccountInterstitial::whereType('post.autospam') - ->whereItemType('App\Status') - ->whereUserId($appeal->user_id) - ->get() - ->each(function($report) use($meta) { - $report->is_spam = false; - $report->appeal_handled_at = now(); - $report->save(); - $status = Status::find($report->item_id); - if($status) { - $status->is_nsfw = $meta->is_nsfw; - $status->scope = 'public'; - $status->visibility = 'public'; - $status->save(); - StatusService::del($status->id); - } - Notification::whereAction('autospam.warning') - ->whereProfileId($report->user->profile_id) - ->get() - ->each(function($n) use($report) { - NotificationService::del($report->user->profile_id, $n->id); - $n->forceDelete(); - }); - }); - } + if ($action == 'mark-all-not-spam') { + AccountInterstitial::whereType('post.autospam') + ->whereItemType('App\Status') + ->whereUserId($appeal->user_id) + ->get() + ->each(function ($report) use ($meta) { + $report->is_spam = false; + $report->appeal_handled_at = now(); + $report->save(); + $status = Status::find($report->item_id); + if ($status) { + $status->is_nsfw = $meta->is_nsfw; + $status->scope = 'public'; + $status->visibility = 'public'; + $status->save(); + StatusService::del($status->id); + } + Notification::whereAction('autospam.warning') + ->whereProfileId($report->user->profile_id) + ->get() + ->each(function ($n) use ($report) { + NotificationService::del($report->user->profile_id, $n->id); + $n->forceDelete(); + }); + }); + } - if($action == 'delete-profile') { - $user = User::findOrFail($appeal->user_id); - $profile = $user->profile; + if ($action == 'delete-profile') { + $user = User::findOrFail($appeal->user_id); + $profile = $user->profile; - if($user->is_admin == true) { - $mid = request()->user()->id; - abort_if($user->id < $mid, 403, 'You cannot delete an admin account.'); - } + if ($user->is_admin == true) { + $mid = request()->user()->id; + abort_if($user->id < $mid, 403, 'You cannot delete an admin account.'); + } - $ts = now()->addMonth(); - $user->status = 'delete'; - $profile->status = 'delete'; - $user->delete_after = $ts; - $profile->delete_after = $ts; - $user->save(); - $profile->save(); + $ts = now()->addMonth(); + $user->status = 'delete'; + $profile->status = 'delete'; + $user->delete_after = $ts; + $profile->delete_after = $ts; + $user->save(); + $profile->save(); - $appeal->appeal_handled_at = now(); - $appeal->save(); + $appeal->appeal_handled_at = now(); + $appeal->save(); - ModLogService::boot() - ->objectUid($user->id) - ->objectId($user->id) - ->objectType('App\User::class') - ->user(request()->user()) - ->action('admin.user.delete') - ->accessLevel('admin') - ->save(); + ModLogService::boot() + ->objectUid($user->id) + ->objectId($user->id) + ->objectType('App\User::class') + ->user(request()->user()) + ->action('admin.user.delete') + ->accessLevel('admin') + ->save(); - Cache::forget('profiles:private'); - DeleteAccountPipeline::dispatch($user); - } + Cache::forget('profiles:private'); + DeleteAccountPipeline::dispatch($user); + } } public function reportsApiSpamGet(Request $request, $id) { - $report = AccountInterstitial::findOrFail($id); - return new AdminSpamReport($report); + $report = AccountInterstitial::findOrFail($id); + + return new AdminSpamReport($report); + } + + public function reportsApiRemoteHandle(Request $request) + { + $this->validate($request, [ + 'id' => 'required|exists:remote_reports,id', + 'action' => 'required|in:mark-read,cw-posts,unlist-posts,delete-posts,private-posts,mark-all-read-by-domain,mark-all-read-by-username,cw-all-posts,private-all-posts,unlist-all-posts' + ]); + + $report = RemoteReport::findOrFail($request->input('id')); + $user = User::whereProfileId($report->account_id)->first(); + $ogPublicStatuses = []; + $ogUnlistedStatuses = []; + $ogNonCwStatuses = []; + + switch ($request->input('action')) { + case 'mark-read': + $report->action_taken_at = now(); + $report->save(); + break; + case 'mark-all-read-by-domain': + RemoteReport::whereInstanceId($report->instance_id)->update(['action_taken_at' => now()]); + break; + case 'cw-posts': + $statuses = Status::find($report->status_ids); + foreach($statuses as $status) { + if($report->account_id != $status->profile_id) { + continue; + } + if(!$status->is_nsfw) { + $ogNonCwStatuses[] = $status->id; + } + $status->is_nsfw = true; + $status->saveQuietly(); + StatusService::del($status->id); + } + $report->action_taken_at = now(); + $report->save(); + break; + case 'cw-all-posts': + foreach(Status::whereProfileId($report->account_id)->lazyById(50, 'id') as $status) { + if($status->is_nsfw || $status->reblog_of_id) { + continue; + } + if(!$status->is_nsfw) { + $ogNonCwStatuses[] = $status->id; + } + $status->is_nsfw = true; + $status->saveQuietly(); + StatusService::del($status->id); + } + break; + case 'unlist-posts': + $statuses = Status::find($report->status_ids); + foreach($statuses as $status) { + if($report->account_id != $status->profile_id) { + continue; + } + if($status->scope === 'public') { + $ogPublicStatuses[] = $status->id; + $status->scope = 'unlisted'; + $status->visibility = 'unlisted'; + $status->saveQuietly(); + StatusService::del($status->id); + } + } + $report->action_taken_at = now(); + $report->save(); + break; + case 'unlist-all-posts': + foreach(Status::whereProfileId($report->account_id)->lazyById(50, 'id') as $status) { + if($status->visibility !== 'public' || $status->reblog_of_id) { + continue; + } + $ogPublicStatuses[] = $status->id; + $status->visibility = 'unlisted'; + $status->scope = 'unlisted'; + $status->saveQuietly(); + StatusService::del($status->id); + } + break; + case 'private-posts': + $statuses = Status::find($report->status_ids); + foreach($statuses as $status) { + if($report->account_id != $status->profile_id) { + continue; + } + if(in_array($status->scope, ['public', 'unlisted', 'private'])) { + if($status->scope === 'public') { + $ogPublicStatuses[] = $status->id; + } + $status->scope = 'private'; + $status->visibility = 'private'; + $status->saveQuietly(); + StatusService::del($status->id); + } + } + $report->action_taken_at = now(); + $report->save(); + break; + case 'private-all-posts': + foreach(Status::whereProfileId($report->account_id)->lazyById(50, 'id') as $status) { + if(!in_array($status->visibility, ['public', 'unlisted']) || $status->reblog_of_id) { + continue; + } + if($status->visibility === 'public') { + $ogPublicStatuses[] = $status->id; + } else if($status->visibility === 'unlisted') { + $ogUnlistedStatuses[] = $status->id; + } + $status->visibility = 'private'; + $status->scope = 'private'; + $status->saveQuietly(); + StatusService::del($status->id); + } + break; + case 'delete-posts': + $statuses = Status::find($report->status_ids); + foreach($statuses as $status) { + if($report->account_id != $status->profile_id) { + continue; + } + StatusDelete::dispatch($status); + } + $report->action_taken_at = now(); + $report->save(); + break; + case 'mark-all-read-by-username': + RemoteReport::whereNull('action_taken_at')->whereAccountId($report->account_id)->update(['action_taken_at' => now()]); + break; + + default: + abort(404); + break; + } + + if($ogPublicStatuses && count($ogPublicStatuses)) { + Storage::disk('local')->put('mod-log-cache/' . $report->account_id . '/' . now()->format('Y-m-d') . '-og-public-statuses.json', json_encode($ogPublicStatuses, JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES)); + } + + if($ogNonCwStatuses && count($ogNonCwStatuses)) { + Storage::disk('local')->put('mod-log-cache/' . $report->account_id . '/' . now()->format('Y-m-d') . '-og-noncw-statuses.json', json_encode($ogNonCwStatuses, JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES)); + } + + if($ogUnlistedStatuses && count($ogUnlistedStatuses)) { + Storage::disk('local')->put('mod-log-cache/' . $report->account_id . '/' . now()->format('Y-m-d') . '-og-unlisted-statuses.json', json_encode($ogUnlistedStatuses, JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES)); + } + + ModLogService::boot() + ->user(request()->user()) + ->objectUid($user ? $user->id : null) + ->objectId($report->id) + ->objectType('App\Report::class') + ->action('admin.report.moderate') + ->metadata([ + 'action' => $request->input('action'), + 'duration_active' => now()->parse($report->created_at)->diffForHumans() + ]) + ->accessLevel('admin') + ->save(); + + if($report->status_ids) { + foreach($report->status_ids as $sid) { + RemoteReport::whereNull('action_taken_at') + ->whereJsonContains('status_ids', [$sid]) + ->update(['action_taken_at' => now()]); + } + } + return [200]; } } diff --git a/app/Http/Controllers/Admin/AdminSettingsController.php b/app/Http/Controllers/Admin/AdminSettingsController.php index 9d9c3dfb6..8b5a26796 100644 --- a/app/Http/Controllers/Admin/AdminSettingsController.php +++ b/app/Http/Controllers/Admin/AdminSettingsController.php @@ -17,269 +17,288 @@ use Illuminate\Support\Str; trait AdminSettingsController { - public function settings(Request $request) - { - $cloud_storage = ConfigCacheService::get('pixelfed.cloud_storage'); - $cloud_disk = config('filesystems.cloud'); - $cloud_ready = !empty(config('filesystems.disks.' . $cloud_disk . '.key')) && !empty(config('filesystems.disks.' . $cloud_disk . '.secret')); - $types = explode(',', ConfigCacheService::get('pixelfed.media_types')); - $rules = ConfigCacheService::get('app.rules') ? json_decode(ConfigCacheService::get('app.rules'), true) : null; - $jpeg = in_array('image/jpg', $types) || in_array('image/jpeg', $types); - $png = in_array('image/png', $types); - $gif = in_array('image/gif', $types); - $mp4 = in_array('video/mp4', $types); - $webp = in_array('image/webp', $types); + public function settings(Request $request) + { + $cloud_storage = ConfigCacheService::get('pixelfed.cloud_storage'); + $cloud_disk = config('filesystems.cloud'); + $cloud_ready = !empty(config('filesystems.disks.' . $cloud_disk . '.key')) && !empty(config('filesystems.disks.' . $cloud_disk . '.secret')); + $types = explode(',', ConfigCacheService::get('pixelfed.media_types')); + $rules = ConfigCacheService::get('app.rules') ? json_decode(ConfigCacheService::get('app.rules'), true) : null; + $jpeg = in_array('image/jpg', $types) || in_array('image/jpeg', $types); + $png = in_array('image/png', $types); + $gif = in_array('image/gif', $types); + $mp4 = in_array('video/mp4', $types); + $webp = in_array('image/webp', $types); - $availableAdmins = User::whereIsAdmin(true)->get(); - $currentAdmin = config_cache('instance.admin.pid') ? AccountService::get(config_cache('instance.admin.pid'), true) : null; + $availableAdmins = User::whereIsAdmin(true)->get(); + $currentAdmin = config_cache('instance.admin.pid') ? AccountService::get(config_cache('instance.admin.pid'), true) : null; + $openReg = (bool) config_cache('pixelfed.open_registration'); + $curOnboarding = (bool) config_cache('instance.curated_registration.enabled'); + $regState = $openReg ? 'open' : ($curOnboarding ? 'filtered' : 'closed'); - // $system = [ - // 'permissions' => is_writable(base_path('storage')) && is_writable(base_path('bootstrap')), - // 'max_upload_size' => ini_get('post_max_size'), - // 'image_driver' => config('image.driver'), - // 'image_driver_loaded' => extension_loaded(config('image.driver')) - // ]; + return view('admin.settings.home', compact( + 'jpeg', + 'png', + 'gif', + 'mp4', + 'webp', + 'rules', + 'cloud_storage', + 'cloud_disk', + 'cloud_ready', + 'availableAdmins', + 'currentAdmin', + 'regState' + )); + } - return view('admin.settings.home', compact( - 'jpeg', - 'png', - 'gif', - 'mp4', - 'webp', - 'rules', - 'cloud_storage', - 'cloud_disk', - 'cloud_ready', - 'availableAdmins', - 'currentAdmin' - // 'system' - )); - } + public function settingsHomeStore(Request $request) + { + $this->validate($request, [ + 'name' => 'nullable|string', + 'short_description' => 'nullable', + 'long_description' => 'nullable', + 'max_photo_size' => 'nullable|integer|min:1', + 'max_album_length' => 'nullable|integer|min:1|max:100', + 'image_quality' => 'nullable|integer|min:1|max:100', + 'type_jpeg' => 'nullable', + 'type_png' => 'nullable', + 'type_gif' => 'nullable', + 'type_mp4' => 'nullable', + 'type_webp' => 'nullable', + 'admin_account_id' => 'nullable', + 'regs' => 'required|in:open,filtered,closed' + ]); - public function settingsHomeStore(Request $request) - { - $this->validate($request, [ - 'name' => 'nullable|string', - 'short_description' => 'nullable', - 'long_description' => 'nullable', - 'max_photo_size' => 'nullable|integer|min:1', - 'max_album_length' => 'nullable|integer|min:1|max:100', - 'image_quality' => 'nullable|integer|min:1|max:100', - 'type_jpeg' => 'nullable', - 'type_png' => 'nullable', - 'type_gif' => 'nullable', - 'type_mp4' => 'nullable', - 'type_webp' => 'nullable', - 'admin_account_id' => 'nullable', - ]); + $orb = false; + $cob = false; + switch($request->input('regs')) { + case 'open': + $orb = true; + $cob = false; + break; - if($request->filled('admin_account_id')) { - ConfigCacheService::put('instance.admin.pid', $request->admin_account_id); - Cache::forget('api:v1:instance-data:contact'); - Cache::forget('api:v1:instance-data-response-v1'); - } - if($request->filled('rule_delete')) { - $index = (int) $request->input('rule_delete'); - $rules = ConfigCacheService::get('app.rules'); - $json = json_decode($rules, true); - if(!$rules || empty($json)) { - return; - } - unset($json[$index]); - $json = json_encode(array_values($json)); - ConfigCacheService::put('app.rules', $json); - Cache::forget('api:v1:instance-data:rules'); - Cache::forget('api:v1:instance-data-response-v1'); - return 200; - } + case 'filtered': + $orb = false; + $cob = true; + break; - $media_types = explode(',', config_cache('pixelfed.media_types')); - $media_types_original = $media_types; + case 'closed': + $orb = false; + $cob = false; + break; + } - $mimes = [ - 'type_jpeg' => 'image/jpeg', - 'type_png' => 'image/png', - 'type_gif' => 'image/gif', - 'type_mp4' => 'video/mp4', - 'type_webp' => 'image/webp', - ]; + ConfigCacheService::put('pixelfed.open_registration', (bool) $orb); + ConfigCacheService::put('instance.curated_registration.enabled', (bool) $cob); - foreach ($mimes as $key => $value) { - if($request->input($key) == 'on') { - if(!in_array($value, $media_types)) { - array_push($media_types, $value); - } - } else { - $media_types = array_diff($media_types, [$value]); - } - } + if($request->filled('admin_account_id')) { + ConfigCacheService::put('instance.admin.pid', $request->admin_account_id); + Cache::forget('api:v1:instance-data:contact'); + Cache::forget('api:v1:instance-data-response-v1'); + } + if($request->filled('rule_delete')) { + $index = (int) $request->input('rule_delete'); + $rules = ConfigCacheService::get('app.rules'); + $json = json_decode($rules, true); + if(!$rules || empty($json)) { + return; + } + unset($json[$index]); + $json = json_encode(array_values($json)); + ConfigCacheService::put('app.rules', $json); + Cache::forget('api:v1:instance-data:rules'); + Cache::forget('api:v1:instance-data-response-v1'); + return 200; + } - if($media_types !== $media_types_original) { - ConfigCacheService::put('pixelfed.media_types', implode(',', array_unique($media_types))); - } + $media_types = explode(',', config_cache('pixelfed.media_types')); + $media_types_original = $media_types; - $keys = [ - 'name' => 'app.name', - 'short_description' => 'app.short_description', - 'long_description' => 'app.description', - 'max_photo_size' => 'pixelfed.max_photo_size', - 'max_album_length' => 'pixelfed.max_album_length', - 'image_quality' => 'pixelfed.image_quality', - 'account_limit' => 'pixelfed.max_account_size', - 'custom_css' => 'uikit.custom.css', - 'custom_js' => 'uikit.custom.js', - 'about_title' => 'about.title' - ]; + $mimes = [ + 'type_jpeg' => 'image/jpeg', + 'type_png' => 'image/png', + 'type_gif' => 'image/gif', + 'type_mp4' => 'video/mp4', + 'type_webp' => 'image/webp', + ]; - foreach ($keys as $key => $value) { - $cc = ConfigCache::whereK($value)->first(); - $val = $request->input($key); - if($cc && $cc->v != $val) { - ConfigCacheService::put($value, $val); - } else if(!empty($val)) { - ConfigCacheService::put($value, $val); - } - } + foreach ($mimes as $key => $value) { + if($request->input($key) == 'on') { + if(!in_array($value, $media_types)) { + array_push($media_types, $value); + } + } else { + $media_types = array_diff($media_types, [$value]); + } + } - $bools = [ - 'activitypub' => 'federation.activitypub.enabled', - 'open_registration' => 'pixelfed.open_registration', - 'mobile_apis' => 'pixelfed.oauth_enabled', - 'stories' => 'instance.stories.enabled', - 'ig_import' => 'pixelfed.import.instagram.enabled', - 'spam_detection' => 'pixelfed.bouncer.enabled', - 'require_email_verification' => 'pixelfed.enforce_email_verification', - 'enforce_account_limit' => 'pixelfed.enforce_account_limit', - 'show_custom_css' => 'uikit.show_custom.css', - 'show_custom_js' => 'uikit.show_custom.js', - 'cloud_storage' => 'pixelfed.cloud_storage', - 'account_autofollow' => 'account.autofollow', - 'show_directory' => 'instance.landing.show_directory', - 'show_explore_feed' => 'instance.landing.show_explore', - ]; + if($media_types !== $media_types_original) { + ConfigCacheService::put('pixelfed.media_types', implode(',', array_unique($media_types))); + } - foreach ($bools as $key => $value) { - $active = $request->input($key) == 'on'; + $keys = [ + 'name' => 'app.name', + 'short_description' => 'app.short_description', + 'long_description' => 'app.description', + 'max_photo_size' => 'pixelfed.max_photo_size', + 'max_album_length' => 'pixelfed.max_album_length', + 'image_quality' => 'pixelfed.image_quality', + 'account_limit' => 'pixelfed.max_account_size', + 'custom_css' => 'uikit.custom.css', + 'custom_js' => 'uikit.custom.js', + 'about_title' => 'about.title' + ]; - if($key == 'activitypub' && $active && !InstanceActor::exists()) { - Artisan::call('instance:actor'); - } + foreach ($keys as $key => $value) { + $cc = ConfigCache::whereK($value)->first(); + $val = $request->input($key); + if($cc && $cc->v != $val) { + ConfigCacheService::put($value, $val); + } else if(!empty($val)) { + ConfigCacheService::put($value, $val); + } + } - if( $key == 'mobile_apis' && - $active && - !file_exists(storage_path('oauth-public.key')) && - !file_exists(storage_path('oauth-private.key')) - ) { - Artisan::call('passport:keys'); - Artisan::call('route:cache'); - } + $bools = [ + 'activitypub' => 'federation.activitypub.enabled', + // 'open_registration' => 'pixelfed.open_registration', + 'mobile_apis' => 'pixelfed.oauth_enabled', + 'stories' => 'instance.stories.enabled', + 'ig_import' => 'pixelfed.import.instagram.enabled', + 'spam_detection' => 'pixelfed.bouncer.enabled', + 'require_email_verification' => 'pixelfed.enforce_email_verification', + 'enforce_account_limit' => 'pixelfed.enforce_account_limit', + 'show_custom_css' => 'uikit.show_custom.css', + 'show_custom_js' => 'uikit.show_custom.js', + 'cloud_storage' => 'pixelfed.cloud_storage', + 'account_autofollow' => 'account.autofollow', + 'show_directory' => 'instance.landing.show_directory', + 'show_explore_feed' => 'instance.landing.show_explore', + ]; - if(config_cache($value) !== $active) { - ConfigCacheService::put($value, (bool) $active); - } - } + foreach ($bools as $key => $value) { + $active = $request->input($key) == 'on'; - if($request->filled('new_rule')) { - $rules = ConfigCacheService::get('app.rules'); - $val = $request->input('new_rule'); - if(!$rules) { - ConfigCacheService::put('app.rules', json_encode([$val])); - } else { - $json = json_decode($rules, true); - $json[] = $val; - ConfigCacheService::put('app.rules', json_encode(array_values($json))); - } - Cache::forget('api:v1:instance-data:rules'); - Cache::forget('api:v1:instance-data-response-v1'); - } + if($key == 'activitypub' && $active && !InstanceActor::exists()) { + Artisan::call('instance:actor'); + } - if($request->filled('account_autofollow_usernames')) { - $usernames = explode(',', $request->input('account_autofollow_usernames')); - $names = []; + if( $key == 'mobile_apis' && + $active && + !file_exists(storage_path('oauth-public.key')) && + !file_exists(storage_path('oauth-private.key')) + ) { + Artisan::call('passport:keys'); + Artisan::call('route:cache'); + } - foreach($usernames as $n) { - $p = Profile::whereUsername($n)->first(); - if(!$p) { - continue; - } - array_push($names, $p->username); - } + if(config_cache($value) !== $active) { + ConfigCacheService::put($value, (bool) $active); + } + } - ConfigCacheService::put('account.autofollow_usernames', implode(',', $names)); - } + if($request->filled('new_rule')) { + $rules = ConfigCacheService::get('app.rules'); + $val = $request->input('new_rule'); + if(!$rules) { + ConfigCacheService::put('app.rules', json_encode([$val])); + } else { + $json = json_decode($rules, true); + $json[] = $val; + ConfigCacheService::put('app.rules', json_encode(array_values($json))); + } + Cache::forget('api:v1:instance-data:rules'); + Cache::forget('api:v1:instance-data-response-v1'); + } - Cache::forget(Config::CACHE_KEY); + if($request->filled('account_autofollow_usernames')) { + $usernames = explode(',', $request->input('account_autofollow_usernames')); + $names = []; - return redirect('/i/admin/settings')->with('status', 'Successfully updated settings!'); - } + foreach($usernames as $n) { + $p = Profile::whereUsername($n)->first(); + if(!$p) { + continue; + } + array_push($names, $p->username); + } - public function settingsBackups(Request $request) - { - $path = storage_path('app/'.config('app.name')); - $files = is_dir($path) ? new \DirectoryIterator($path) : []; - return view('admin.settings.backups', compact('files')); - } + ConfigCacheService::put('account.autofollow_usernames', implode(',', $names)); + } - public function settingsMaintenance(Request $request) - { - return view('admin.settings.maintenance'); - } + Cache::forget(Config::CACHE_KEY); - public function settingsStorage(Request $request) - { - $storage = []; - return view('admin.settings.storage', compact('storage')); - } + return redirect('/i/admin/settings')->with('status', 'Successfully updated settings!'); + } - public function settingsFeatures(Request $request) - { - return view('admin.settings.features'); - } + public function settingsBackups(Request $request) + { + $path = storage_path('app/'.config('app.name')); + $files = is_dir($path) ? new \DirectoryIterator($path) : []; + return view('admin.settings.backups', compact('files')); + } - public function settingsPages(Request $request) - { - $pages = Page::orderByDesc('updated_at')->paginate(10); - return view('admin.pages.home', compact('pages')); - } + public function settingsMaintenance(Request $request) + { + return view('admin.settings.maintenance'); + } - public function settingsPageEdit(Request $request) - { - return view('admin.pages.edit'); - } + public function settingsStorage(Request $request) + { + $storage = []; + return view('admin.settings.storage', compact('storage')); + } - public function settingsSystem(Request $request) - { - $sys = [ - 'pixelfed' => config('pixelfed.version'), - 'php' => phpversion(), - 'laravel' => app()->version(), - ]; - switch (config('database.default')) { - case 'pgsql': - $exp = DB::raw('select version();'); - $expQuery = $exp->getValue(DB::connection()->getQueryGrammar()); - $sys['database'] = [ - 'name' => 'Postgres', - 'version' => explode(' ', DB::select($expQuery)[0]->version)[1] - ]; - break; + public function settingsFeatures(Request $request) + { + return view('admin.settings.features'); + } - case 'mysql': - $exp = DB::raw('select version()'); - $expQuery = $exp->getValue(DB::connection()->getQueryGrammar()); - $sys['database'] = [ - 'name' => 'MySQL', - 'version' => DB::select($expQuery)[0]->{'version()'} - ]; - break; + public function settingsPages(Request $request) + { + $pages = Page::orderByDesc('updated_at')->paginate(10); + return view('admin.pages.home', compact('pages')); + } - default: - $sys['database'] = [ - 'name' => 'Unknown', - 'version' => '?' - ]; - break; - } - return view('admin.settings.system', compact('sys')); - } + public function settingsPageEdit(Request $request) + { + return view('admin.pages.edit'); + } + + public function settingsSystem(Request $request) + { + $sys = [ + 'pixelfed' => config('pixelfed.version'), + 'php' => phpversion(), + 'laravel' => app()->version(), + ]; + switch (config('database.default')) { + case 'pgsql': + $exp = DB::raw('select version();'); + $expQuery = $exp->getValue(DB::connection()->getQueryGrammar()); + $sys['database'] = [ + 'name' => 'Postgres', + 'version' => explode(' ', DB::select($expQuery)[0]->version)[1] + ]; + break; + + case 'mysql': + $exp = DB::raw('select version()'); + $expQuery = $exp->getValue(DB::connection()->getQueryGrammar()); + $sys['database'] = [ + 'name' => 'MySQL', + 'version' => DB::select($expQuery)[0]->{'version()'} + ]; + break; + + default: + $sys['database'] = [ + 'name' => 'Unknown', + 'version' => '?' + ]; + break; + } + return view('admin.settings.system', compact('sys')); + } } diff --git a/app/Http/Controllers/AdminCuratedRegisterController.php b/app/Http/Controllers/AdminCuratedRegisterController.php new file mode 100644 index 000000000..7b25ac369 --- /dev/null +++ b/app/Http/Controllers/AdminCuratedRegisterController.php @@ -0,0 +1,335 @@ +middleware(['auth', 'admin']); + } + + public function index(Request $request) + { + $this->validate($request, [ + 'filter' => 'sometimes|in:open,all,awaiting,approved,rejected,responses', + 'sort' => 'sometimes|in:asc,desc', + ]); + $filter = $request->input('filter', 'open'); + $sort = $request->input('sort', 'asc'); + $records = CuratedRegister::when($filter, function ($q, $filter) { + if ($filter === 'open') { + return $q->where('is_rejected', false) + ->where(function ($query) { + return $query->where('user_has_responded', true)->orWhere('is_awaiting_more_info', false); + }) + ->whereNotNull('email_verified_at') + ->whereIsClosed(false); + } elseif ($filter === 'all') { + return $q; + } elseif ($filter === 'responses') { + return $q->whereIsClosed(false) + ->whereNotNull('email_verified_at') + ->where('user_has_responded', true) + ->where('is_awaiting_more_info', true); + } elseif ($filter === 'awaiting') { + return $q->whereIsClosed(false) + ->where('is_rejected', false) + ->where('is_approved', false) + ->where('user_has_responded', false) + ->where('is_awaiting_more_info', true); + } elseif ($filter === 'approved') { + return $q->whereIsClosed(true)->whereIsApproved(true); + } elseif ($filter === 'rejected') { + return $q->whereIsClosed(true)->whereIsRejected(true); + } + }) + ->when($sort, function ($query, $sort) { + return $query->orderBy('id', $sort); + }) + ->paginate(10) + ->withQueryString(); + + return view('admin.curated-register.index', compact('records', 'filter')); + } + + public function show(Request $request, $id) + { + $record = CuratedRegister::findOrFail($id); + + return view('admin.curated-register.show', compact('record')); + } + + public function apiActivityLog(Request $request, $id) + { + $record = CuratedRegister::findOrFail($id); + + $res = collect([ + [ + 'id' => 1, + 'action' => 'created', + 'title' => 'Onboarding application created', + 'message' => null, + 'link' => null, + 'timestamp' => $record->created_at, + ], + ]); + + if ($record->email_verified_at) { + $res->push([ + 'id' => 3, + 'action' => 'email_verified_at', + 'title' => 'Applicant successfully verified email address', + 'message' => null, + 'link' => null, + 'timestamp' => $record->email_verified_at, + ]); + } + + $activities = CuratedRegisterActivity::whereRegisterId($record->id)->get(); + + $idx = 4; + $userResponses = collect([]); + + foreach ($activities as $activity) { + $idx++; + + if ($activity->type === 'user_resend_email_confirmation') { + continue; + } + if ($activity->from_user) { + $userResponses->push($activity); + + continue; + } + $res->push([ + 'id' => $idx, + 'aid' => $activity->id, + 'action' => $activity->type, + 'title' => $activity->from_admin ? 'Admin requested info' : 'User responded', + 'message' => $activity->message, + 'link' => $activity->adminReviewUrl(), + 'timestamp' => $activity->created_at, + ]); + } + + foreach ($userResponses as $ur) { + $res = $res->map(function ($r) use ($ur) { + if (! isset($r['aid'])) { + return $r; + } + if ($ur->reply_to_id === $r['aid']) { + $r['user_response'] = $ur; + + return $r; + } + + return $r; + }); + } + + if ($record->is_approved) { + $idx++; + $res->push([ + 'id' => $idx, + 'action' => 'approved', + 'title' => 'Application Approved', + 'message' => null, + 'link' => null, + 'timestamp' => $record->action_taken_at, + ]); + } elseif ($record->is_rejected) { + $idx++; + $res->push([ + 'id' => $idx, + 'action' => 'rejected', + 'title' => 'Application Rejected', + 'message' => null, + 'link' => null, + 'timestamp' => $record->action_taken_at, + ]); + } + + return $res->reverse()->values(); + } + + public function apiMessagePreviewStore(Request $request, $id) + { + $record = CuratedRegister::findOrFail($id); + + return $request->all(); + } + + public function apiMessageSendStore(Request $request, $id) + { + $this->validate($request, [ + 'message' => 'required|string|min:5|max:1000', + ]); + $record = CuratedRegister::findOrFail($id); + abort_if($record->email_verified_at === null, 400, 'Cannot message an unverified email'); + $activity = new CuratedRegisterActivity; + $activity->register_id = $record->id; + $activity->admin_id = $request->user()->id; + $activity->secret_code = Str::random(32); + $activity->type = 'request_details'; + $activity->from_admin = true; + $activity->message = $request->input('message'); + $activity->save(); + $record->is_awaiting_more_info = true; + $record->user_has_responded = false; + $record->save(); + Mail::to($record->email)->send(new CuratedRegisterRequestDetailsFromUser($record, $activity)); + + return $request->all(); + } + + public function previewDetailsMessageShow(Request $request, $id) + { + $record = CuratedRegister::findOrFail($id); + abort_if($record->email_verified_at === null, 400, 'Cannot message an unverified email'); + $activity = new CuratedRegisterActivity; + $activity->message = $request->input('message'); + + return new \App\Mail\CuratedRegisterRequestDetailsFromUser($record, $activity); + } + + public function previewMessageShow(Request $request, $id) + { + $record = CuratedRegister::findOrFail($id); + abort_if($record->email_verified_at === null, 400, 'Cannot message an unverified email'); + $record->message = $request->input('message'); + + return new \App\Mail\CuratedRegisterSendMessage($record); + } + + public function apiHandleReject(Request $request, $id) + { + $this->validate($request, [ + 'action' => 'required|in:reject-email,reject-silent', + ]); + $action = $request->input('action'); + $record = CuratedRegister::findOrFail($id); + abort_if($record->email_verified_at === null, 400, 'Cannot reject an unverified email'); + $record->is_rejected = true; + $record->is_closed = true; + $record->action_taken_at = now(); + $record->save(); + if ($action === 'reject-email') { + Mail::to($record->email)->send(new CuratedRegisterRejectUser($record)); + } + + return [200]; + } + + public function apiHandleApprove(Request $request, $id) + { + $record = CuratedRegister::findOrFail($id); + abort_if($record->email_verified_at === null, 400, 'Cannot reject an unverified email'); + $record->is_approved = true; + $record->is_closed = true; + $record->action_taken_at = now(); + $record->save(); + $user = User::create([ + 'name' => $record->username, + 'username' => $record->username, + 'email' => $record->email, + 'password' => $record->password, + 'app_register_ip' => $record->ip_address, + 'email_verified_at' => now(), + 'register_source' => 'cur_onboarding', + ]); + + Mail::to($record->email)->send(new CuratedRegisterAcceptUser($record)); + + return [200]; + } + + public function templates(Request $request) + { + $templates = CuratedRegisterTemplate::paginate(10); + + return view('admin.curated-register.templates', compact('templates')); + } + + public function templateCreate(Request $request) + { + return view('admin.curated-register.template-create'); + } + + public function templateEdit(Request $request, $id) + { + $template = CuratedRegisterTemplate::findOrFail($id); + + return view('admin.curated-register.template-edit', compact('template')); + } + + public function templateEditStore(Request $request, $id) + { + $this->validate($request, [ + 'name' => 'required|string|max:30', + 'content' => 'required|string|min:5|max:3000', + 'description' => 'nullable|sometimes|string|max:1000', + 'active' => 'sometimes', + ]); + $template = CuratedRegisterTemplate::findOrFail($id); + $template->name = $request->input('name'); + $template->content = $request->input('content'); + $template->description = $request->input('description'); + $template->is_active = $request->boolean('active'); + $template->save(); + + return redirect()->back()->with('status', 'Successfully updated template!'); + } + + public function templateDelete(Request $request, $id) + { + $template = CuratedRegisterTemplate::findOrFail($id); + $template->delete(); + + return redirect(route('admin.curated-onboarding.templates'))->with('status', 'Successfully deleted template!'); + } + + public function templateStore(Request $request) + { + $this->validate($request, [ + 'name' => 'required|string|max:30', + 'content' => 'required|string|min:5|max:3000', + 'description' => 'nullable|sometimes|string|max:1000', + 'active' => 'sometimes', + ]); + CuratedRegisterTemplate::create([ + 'name' => $request->input('name'), + 'content' => $request->input('content'), + 'description' => $request->input('description'), + 'is_active' => $request->boolean('active'), + ]); + + return redirect(route('admin.curated-onboarding.templates'))->with('status', 'Successfully created new template!'); + } + + public function getActiveTemplates(Request $request) + { + $templates = CuratedRegisterTemplate::whereIsActive(true) + ->orderBy('order') + ->get() + ->map(function ($tmp) { + return [ + 'name' => $tmp->name, + 'content' => $tmp->content, + ]; + }); + + return response()->json($templates); + } +} diff --git a/app/Http/Controllers/Api/ApiV1Controller.php b/app/Http/Controllers/Api/ApiV1Controller.php index d1bd9cac2..c8728bcf4 100644 --- a/app/Http/Controllers/Api/ApiV1Controller.php +++ b/app/Http/Controllers/Api/ApiV1Controller.php @@ -409,6 +409,7 @@ class ApiV1Controller extends Controller if($settings->show_profile_follower_count != $show_profile_follower_count) { $settings->show_profile_follower_count = $show_profile_follower_count; $changes = true; + Cache::forget('pf:acct-trans:hideFollowers:' . $profile->id); } } @@ -417,6 +418,7 @@ class ApiV1Controller extends Controller if($settings->show_profile_following_count != $show_profile_following_count) { $settings->show_profile_following_count = $show_profile_following_count; $changes = true; + Cache::forget('pf:acct-trans:hideFollowing:' . $profile->id); } } @@ -496,9 +498,12 @@ class ApiV1Controller extends Controller abort_if(!$account, 404); $pid = $request->user()->profile_id; $this->validate($request, [ - 'limit' => 'sometimes|integer|min:1|max:80' + 'limit' => 'sometimes|integer|min:1' ]); $limit = $request->input('limit', 10); + if($limit > 80) { + $limit = 80; + } $napi = $request->has(self::PF_API_ENTITY_KEY); if($account && strpos($account['acct'], '@') != -1) { @@ -594,9 +599,12 @@ class ApiV1Controller extends Controller abort_if(!$account, 404); $pid = $request->user()->profile_id; $this->validate($request, [ - 'limit' => 'sometimes|integer|min:1|max:80' + 'limit' => 'sometimes|integer|min:1' ]); $limit = $request->input('limit', 10); + if($limit > 80) { + $limit = 80; + } $napi = $request->has(self::PF_API_ENTITY_KEY); if($account && strpos($account['acct'], '@') != -1) { @@ -698,7 +706,7 @@ class ApiV1Controller extends Controller 'max_id' => 'nullable|integer|min:0|max:' . PHP_INT_MAX, 'since_id' => 'nullable|integer|min:0|max:' . PHP_INT_MAX, 'min_id' => 'nullable|integer|min:0|max:' . PHP_INT_MAX, - 'limit' => 'nullable|integer|min:1|max:100' + 'limit' => 'nullable|integer|min:1' ]); $napi = $request->has(self::PF_API_ENTITY_KEY); @@ -713,7 +721,10 @@ class ApiV1Controller extends Controller abort_if(in_array($domain, InstanceService::getBannedDomains()), 404); } - $limit = $request->limit ?? 20; + $limit = $request->input('limit') ?? 20; + if($limit > 40) { + $limit = 40; + } $max_id = $request->max_id; $min_id = $request->min_id; @@ -959,12 +970,16 @@ class ApiV1Controller extends Controller abort_if(!$request->user(), 403); $this->validate($request, [ - 'id' => 'required|array|min:1|max:20', + 'id' => 'required|array|min:1', 'id.*' => 'required|integer|min:1|max:' . PHP_INT_MAX ]); + $ids = $request->input('id'); + if(count($ids) > 20) { + $ids = collect($ids)->take(20)->toArray(); + } $napi = $request->has(self::PF_API_ENTITY_KEY); $pid = $request->user()->profile_id ?? $request->user()->profile->id; - $res = collect($request->input('id')) + $res = collect($ids) ->filter(function($id) use($pid) { return intval($id) !== intval($pid); }) @@ -989,8 +1004,8 @@ class ApiV1Controller extends Controller abort_unless($request->user()->tokenCan('read'), 403); $this->validate($request, [ - 'q' => 'required|string|min:1|max:255', - 'limit' => 'nullable|integer|min:1|max:40', + 'q' => 'required|string|min:1|max:30', + 'limit' => 'nullable|integer|min:1', 'resolve' => 'nullable' ]); @@ -1000,22 +1015,23 @@ class ApiV1Controller extends Controller AccountService::setLastActive($user->id); $query = $request->input('q'); $limit = $request->input('limit') ?? 20; - $resolve = (bool) $request->input('resolve', false); - $q = '%' . $query . '%'; + if($limit > 20) { + $limit = 20; + } + $resolve = $request->boolean('resolve', false); + $q = $query . '%'; - $profiles = Cache::remember('api:v1:accounts:search:' . sha1($query) . ':limit:' . $limit, 86400, function() use($q, $limit) { - return Profile::whereNull('status') - ->where('username', 'like', $q) - ->orWhere('name', 'like', $q) - ->limit($limit) - ->pluck('id') - ->map(function($id) { - return AccountService::getMastodon($id); - }) - ->filter(function($account) { - return $account && isset($account['id']); - }); - }); + $profiles = Profile::where('username', 'like', $q) + ->orderByDesc('followers_count') + ->limit($limit) + ->pluck('id') + ->map(function($id) { + return AccountService::getMastodon($id); + }) + ->filter(function($account) { + return $account && isset($account['id']); + }) + ->values(); return $this->json($profiles); } @@ -1033,20 +1049,25 @@ class ApiV1Controller extends Controller abort_unless($request->user()->tokenCan('read'), 403); $this->validate($request, [ - 'limit' => 'nullable|integer|min:1|max:40', - 'page' => 'nullable|integer|min:1|max:10' + 'limit' => 'sometimes|integer|min:1', + 'page' => 'sometimes|integer|min:1' ]); $user = $request->user(); $limit = $request->input('limit') ?? 40; + if($limit > 80) { + $limit = 80; + } - $blocked = UserFilter::select('filterable_id','filterable_type','filter_type','user_id') + $blocks = UserFilter::select('filterable_id','filterable_type','filter_type','user_id') ->whereUserId($user->profile_id) ->whereFilterableType('App\Profile') ->whereFilterType('block') ->orderByDesc('id') ->simplePaginate($limit) - ->pluck('filterable_id') + ->withQueryString(); + + $res = $blocks->pluck('filterable_id') ->map(function($id) { return AccountService::get($id, true); }) @@ -1055,7 +1076,23 @@ class ApiV1Controller extends Controller }) ->values(); - return $this->json($blocked); + $baseUrl = config('app.url') . '/api/v1/blocks?limit=' . $limit . '&'; + $next = $blocks->nextPageUrl(); + $prev = $blocks->previousPageUrl(); + + if($next && !$prev) { + $link = '<'.$next.'>; rel="next"'; + } + + if(!$next && $prev) { + $link = '<'.$prev.'>; rel="prev"'; + } + + if($next && $prev) { + $link = '<'.$next.'>; rel="next",<'.$prev.'>; rel="prev"'; + } + $headers = isset($link) ? ['Link' => $link] : []; + return $this->json($res, 200, $headers); } /** @@ -1247,13 +1284,16 @@ class ApiV1Controller extends Controller abort_unless($request->user()->tokenCan('read'), 403); $this->validate($request, [ - 'limit' => 'sometimes|integer|min:1|max:40' + 'limit' => 'sometimes|integer|min:1' ]); $user = $request->user(); $maxId = $request->input('max_id'); $minId = $request->input('min_id'); $limit = $request->input('limit') ?? 10; + if($limit > 40) { + $limit = 40; + } $res = Like::whereProfileId($user->profile_id) ->when($maxId, function($q, $maxId) { @@ -1612,15 +1652,15 @@ class ApiV1Controller extends Controller 'short_description' => config_cache('app.short_description'), 'description' => config_cache('app.description'), 'email' => config('instance.email'), - 'version' => '2.7.2 (compatible; Pixelfed ' . config('pixelfed.version') .')', + 'version' => '3.5.3 (compatible; Pixelfed ' . config('pixelfed.version') .')', 'urls' => [ - 'streaming_api' => 'wss://' . config('pixelfed.domain.app') + 'streaming_api' => null, ], 'stats' => $stats, '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, + 'approval_required' => (bool) config_cache('instance.curated_registration.enabled'), 'contact_account' => $contact, 'rules' => $rules, 'configuration' => [ @@ -2049,18 +2089,23 @@ class ApiV1Controller extends Controller abort_unless($request->user()->tokenCan('read'), 403); $this->validate($request, [ - 'limit' => 'nullable|integer|min:1|max:40' + 'limit' => 'sometimes|integer|min:1' ]); $user = $request->user(); $limit = $request->input('limit', 40); + if($limit > 80) { + $limit = 80; + } $mutes = UserFilter::whereUserId($user->profile_id) ->whereFilterableType('App\Profile') ->whereFilterType('mute') ->orderByDesc('id') ->simplePaginate($limit) - ->pluck('filterable_id') + ->withQueryString(); + + $res = $mutes->pluck('filterable_id') ->map(function($id) { return AccountService::get($id, true); }) @@ -2069,7 +2114,23 @@ class ApiV1Controller extends Controller }) ->values(); - return $this->json($mutes); + $baseUrl = config('app.url') . '/api/v1/mutes?limit=' . $limit . '&'; + $next = $mutes->nextPageUrl(); + $prev = $mutes->previousPageUrl(); + + if($next && !$prev) { + $link = '<'.$next.'>; rel="next"'; + } + + if(!$next && $prev) { + $link = '<'.$prev.'>; rel="prev"'; + } + + if($next && $prev) { + $link = '<'.$next.'>; rel="next",<'.$prev.'>; rel="prev"'; + } + $headers = isset($link) ? ['Link' => $link] : []; + return $this->json($res, 200, $headers); } /** @@ -2181,7 +2242,7 @@ class ApiV1Controller extends Controller abort_unless($request->user()->tokenCan('read'), 403); $this->validate($request, [ - 'limit' => 'nullable|integer|min:1|max:100', + 'limit' => 'sometimes|integer|min:1', 'min_id' => 'nullable|integer|min:1|max:'.PHP_INT_MAX, 'max_id' => 'nullable|integer|min:1|max:'.PHP_INT_MAX, 'since_id' => 'nullable|integer|min:1|max:'.PHP_INT_MAX, @@ -2191,6 +2252,9 @@ class ApiV1Controller extends Controller $pid = $request->user()->profile_id; $limit = $request->input('limit', 20); + if($limit > 40) { + $limit = 40; + } $since = $request->input('since_id'); $min = $request->input('min_id'); @@ -2200,6 +2264,10 @@ class ApiV1Controller extends Controller $min = 1; } + if($since) { + $min = $since + 1; + } + $types = $request->input('types'); $maxId = null; @@ -2261,7 +2329,7 @@ class ApiV1Controller extends Controller 'page' => 'sometimes|integer|max:40', 'min_id' => 'sometimes|integer|min:0|max:' . PHP_INT_MAX, 'max_id' => 'sometimes|integer|min:0|max:' . PHP_INT_MAX, - 'limit' => 'sometimes|integer|min:1|max:40', + 'limit' => 'sometimes|integer|min:1', 'include_reblogs' => 'sometimes', ]); @@ -2270,6 +2338,9 @@ class ApiV1Controller extends Controller $min = $request->input('min_id'); $max = $request->input('max_id'); $limit = $request->input('limit') ?? 20; + if($limit > 40) { + $limit = 40; + } $pid = $request->user()->profile_id; $includeReblogs = $request->filled('include_reblogs') ? $request->boolean('include_reblogs') : false; $nullFields = $includeReblogs ? @@ -2515,7 +2586,7 @@ class ApiV1Controller extends Controller $this->validate($request,[ 'min_id' => 'nullable|integer|min:0|max:' . PHP_INT_MAX, 'max_id' => 'nullable|integer|min:0|max:' . PHP_INT_MAX, - 'limit' => 'nullable|integer|max:100', + 'limit' => 'sometimes|integer|min:1', 'remote' => 'sometimes', 'local' => 'sometimes' ]); @@ -2523,7 +2594,11 @@ class ApiV1Controller extends Controller $napi = $request->has(self::PF_API_ENTITY_KEY); $min = $request->input('min_id'); $max = $request->input('max_id'); + $minOrMax = $request->anyFilled(['max_id', 'min_id']); $limit = $request->input('limit') ?? 20; + if($limit > 40) { + $limit = 40; + } $user = $request->user(); $remote = $request->has('remote'); @@ -2535,36 +2610,100 @@ class ApiV1Controller extends Controller $filtered = $user ? UserFilterService::filters($user->profile_id) : []; AccountService::setLastActive($user->id); $domainBlocks = UserFilterService::domainBlocks($user->profile_id); + $hideNsfw = config('instance.hide_nsfw_on_public_feeds'); + $amin = SnowflakeService::byDate(now()->subDays(config('federation.network_timeline_days_falloff'))); - if($remote && config('instance.timeline.network.cached')) { - Cache::remember('api:v1:timelines:network:cache_check', 10368000, function() { - if(NetworkTimelineService::count() == 0) { - NetworkTimelineService::warmCache(true, config('instance.timeline.network.cache_dropoff')); + if($remote) { + if(config('instance.timeline.network.cached')) { + Cache::remember('api:v1:timelines:network:cache_check', 10368000, function() { + if(NetworkTimelineService::count() == 0) { + NetworkTimelineService::warmCache(true, config('instance.timeline.network.cache_dropoff')); + } + }); + + if ($max) { + $feed = NetworkTimelineService::getRankedMaxId($max, $limit + 5); + } else if ($min) { + $feed = NetworkTimelineService::getRankedMinId($min, $limit + 5); + } else { + $feed = NetworkTimelineService::get(0, $limit + 5); } - }); - - if ($max) { - $feed = NetworkTimelineService::getRankedMaxId($max, $limit + 5); - } else if ($min) { - $feed = NetworkTimelineService::getRankedMinId($min, $limit + 5); } else { - $feed = NetworkTimelineService::get(0, $limit + 5); + $feed = Status::select( + 'id', + 'uri', + 'type', + 'scope', + 'local', + 'created_at', + 'profile_id', + 'in_reply_to_id', + 'reblog_of_id' + ) + ->when($minOrMax, function($q, $minOrMax) use($min, $max) { + $dir = $min ? '>' : '<'; + $id = $min ?? $max; + return $q->where('id', $dir, $id); + }) + ->whereNull(['in_reply_to_id', 'reblog_of_id']) + ->when($hideNsfw, function($q, $hideNsfw) { + return $q->where('is_nsfw', false); + }) + ->whereIn('type', ['photo', 'photo:album', 'video', 'video:album', 'photo:video:album']) + ->whereLocal(false) + ->whereScope('public') + ->where('id', '>', $amin) + ->orderByDesc('id') + ->limit(($limit * 2)) + ->pluck('id') + ->values() + ->toArray(); } - } + } else { + if(config('instance.timeline.local.cached')) { + Cache::remember('api:v1:timelines:public:cache_check', 10368000, function() { + if(PublicTimelineService::count() == 0) { + PublicTimelineService::warmCache(true, 400); + } + }); - if($local || !$remote && !$local) { - Cache::remember('api:v1:timelines:public:cache_check', 10368000, function() { - if(PublicTimelineService::count() == 0) { - PublicTimelineService::warmCache(true, 400); + if ($max) { + $feed = PublicTimelineService::getRankedMaxId($max, $limit + 5); + } else if ($min) { + $feed = PublicTimelineService::getRankedMinId($min, $limit + 5); + } else { + $feed = PublicTimelineService::get(0, $limit + 5); } - }); - - if ($max) { - $feed = PublicTimelineService::getRankedMaxId($max, $limit + 5); - } else if ($min) { - $feed = PublicTimelineService::getRankedMinId($min, $limit + 5); } else { - $feed = PublicTimelineService::get(0, $limit + 5); + $feed = Status::select( + 'id', + 'uri', + 'type', + 'scope', + 'local', + 'created_at', + 'profile_id', + 'in_reply_to_id', + 'reblog_of_id' + ) + ->when($minOrMax, function($q, $minOrMax) use($min, $max) { + $dir = $min ? '>' : '<'; + $id = $min ?? $max; + return $q->where('id', $dir, $id); + }) + ->whereNull(['in_reply_to_id', 'reblog_of_id']) + ->when($hideNsfw, function($q, $hideNsfw) { + return $q->where('is_nsfw', false); + }) + ->whereIn('type', ['photo', 'photo:album', 'video', 'video:album', 'photo:video:album']) + ->whereLocal(true) + ->whereScope('public') + ->where('id', '>', $amin) + ->orderByDesc('id') + ->limit(($limit * 2)) + ->pluck('id') + ->values() + ->toArray(); } } @@ -2978,10 +3117,13 @@ class ApiV1Controller extends Controller abort_unless($request->user()->tokenCan('read'), 403); $this->validate($request, [ - 'limit' => 'nullable|integer|min:1|max:80' + 'limit' => 'sometimes|integer|min:1' ]); - $limit = $request->input('limit', 10); + $limit = $request->input('limit', 40); + if($limit > 80) { + $limit = 80; + } $user = $request->user(); $pid = $user->profile_id; $status = Status::findOrFail($id); @@ -3420,7 +3562,7 @@ class ApiV1Controller extends Controller 'page' => 'nullable|integer|max:40', 'min_id' => 'nullable|integer|min:0|max:' . PHP_INT_MAX, 'max_id' => 'nullable|integer|min:0|max:' . PHP_INT_MAX, - 'limit' => 'nullable|integer|max:100', + 'limit' => 'sometimes|integer|min:1', 'only_media' => 'sometimes|boolean', '_pe' => 'sometimes' ]); @@ -3453,6 +3595,9 @@ class ApiV1Controller extends Controller $min = $request->input('min_id'); $max = $request->input('max_id'); $limit = $request->input('limit', 20); + if($limit > 40) { + $limit = 40; + } $onlyMedia = $request->input('only_media', true); $pe = $request->has(self::PF_API_ENTITY_KEY); $pid = $request->user()->profile_id; @@ -3482,7 +3627,7 @@ class ApiV1Controller extends Controller ->whereStatusVisibility('public') ->where('status_id', $dir, $id) ->orderBy('status_id', 'desc') - ->limit($limit) + ->limit(100) ->pluck('status_id') ->map(function ($i) use($pe) { return $pe ? StatusService::get($i) : StatusService::getMastodon($i); @@ -3500,6 +3645,7 @@ class ApiV1Controller extends Controller $domain = strtolower(parse_url($i['url'], PHP_URL_HOST)); return !in_array($i['account']['id'], $filters) && !in_array($domain, $domainBlocks); }) + ->take($limit) ->values() ->toArray(); @@ -3519,7 +3665,7 @@ class ApiV1Controller extends Controller abort_unless($request->user()->tokenCan('read'), 403); $this->validate($request, [ - 'limit' => 'nullable|integer|min:1|max:40', + 'limit' => 'sometimes|integer|min:1', 'max_id' => 'nullable|integer|min:0', 'since_id' => 'nullable|integer|min:0', 'min_id' => 'nullable|integer|min:0' @@ -3528,6 +3674,9 @@ class ApiV1Controller extends Controller $pe = $request->has('_pe'); $pid = $request->user()->profile_id; $limit = $request->input('limit') ?? 20; + if($limit > 40) { + $limit = 40; + } $max_id = $request->input('max_id'); $since_id = $request->input('since_id'); $min_id = $request->input('min_id'); @@ -3693,11 +3842,14 @@ class ApiV1Controller extends Controller abort_if(!$request->user(), 403); $this->validate($request, [ - 'limit' => 'int|min:1|max:10', + 'limit' => 'sometimes|integer|min:1', 'sort' => 'in:all,newest,popular' ]); $limit = $request->input('limit', 3); + if($limit > 10) { + $limit = 10; + } $pid = $request->user()->profile_id; $status = StatusService::getMastodon($id, false); diff --git a/app/Http/Controllers/Api/ApiV2Controller.php b/app/Http/Controllers/Api/ApiV2Controller.php index 2380588cf..c585b3b04 100644 --- a/app/Http/Controllers/Api/ApiV2Controller.php +++ b/app/Http/Controllers/Api/ApiV2Controller.php @@ -71,72 +71,77 @@ class ApiV2Controller extends Controller ->toArray() : []; }); - $res = [ - 'domain' => config('pixelfed.domain.app'), - 'title' => config_cache('app.name'), - 'version' => config('pixelfed.version'), - 'source_url' => 'https://github.com/pixelfed/pixelfed', - 'description' => config_cache('app.short_description'), - 'usage' => [ - 'users' => [ - 'active_month' => (int) Nodeinfo::activeUsersMonthly() - ] - ], - 'thumbnail' => [ - 'url' => config_cache('app.banner_image') ?? url(Storage::url('public/headers/default.jpg')), - 'blurhash' => InstanceService::headerBlurhash(), - 'versions' => [ - '@1x' => config_cache('app.banner_image') ?? url(Storage::url('public/headers/default.jpg')), - '@2x' => config_cache('app.banner_image') ?? url(Storage::url('public/headers/default.jpg')) - ] - ], - 'languages' => [config('app.locale')], - 'configuration' => [ - 'urls' => [ - 'streaming' => 'wss://' . config('pixelfed.domain.app'), - 'status' => null + $res = Cache::remember('api:v2:instance-data-response-v2', 1800, function () use($contact, $rules) { + return [ + 'domain' => config('pixelfed.domain.app'), + 'title' => config_cache('app.name'), + 'version' => '3.5.3 (compatible; Pixelfed ' . config('pixelfed.version') .')', + 'source_url' => 'https://github.com/pixelfed/pixelfed', + 'description' => config_cache('app.short_description'), + 'usage' => [ + 'users' => [ + 'active_month' => (int) Nodeinfo::activeUsersMonthly() + ] ], - 'vapid' => [ - 'public_key' => config('webpush.vapid.public_key'), + 'thumbnail' => [ + 'url' => config_cache('app.banner_image') ?? url(Storage::url('public/headers/default.jpg')), + 'blurhash' => InstanceService::headerBlurhash(), + 'versions' => [ + '@1x' => config_cache('app.banner_image') ?? url(Storage::url('public/headers/default.jpg')), + '@2x' => config_cache('app.banner_image') ?? url(Storage::url('public/headers/default.jpg')) + ] ], - 'accounts' => [ - 'max_featured_tags' => 0, + 'languages' => [config('app.locale')], + 'configuration' => [ + 'urls' => [ + 'streaming' => null, + 'status' => null + ], + 'vapid' => [ + 'public_key' => config('webpush.vapid.public_key'), + ], + 'accounts' => [ + 'max_featured_tags' => 0, + ], + 'statuses' => [ + 'max_characters' => (int) config('pixelfed.max_caption_length'), + 'max_media_attachments' => (int) config_cache('pixelfed.max_album_length'), + 'characters_reserved_per_url' => 23 + ], + 'media_attachments' => [ + 'supported_mime_types' => explode(',', config_cache('pixelfed.media_types')), + 'image_size_limit' => config_cache('pixelfed.max_photo_size') * 1024, + 'image_matrix_limit' => 3686400, + 'video_size_limit' => config_cache('pixelfed.max_photo_size') * 1024, + 'video_frame_rate_limit' => 240, + 'video_matrix_limit' => 3686400 + ], + 'polls' => [ + 'max_options' => 0, + 'max_characters_per_option' => 0, + 'min_expiration' => 0, + 'max_expiration' => 0, + ], + 'translation' => [ + 'enabled' => false, + ], ], - 'statuses' => [ - 'max_characters' => (int) config('pixelfed.max_caption_length'), - 'max_media_attachments' => (int) config_cache('pixelfed.max_album_length'), - 'characters_reserved_per_url' => 23 + 'registrations' => [ + 'enabled' => null, + 'approval_required' => false, + 'message' => null, + 'url' => null, ], - 'media_attachments' => [ - 'supported_mime_types' => explode(',', config_cache('pixelfed.media_types')), - 'image_size_limit' => config_cache('pixelfed.max_photo_size') * 1024, - 'image_matrix_limit' => 3686400, - 'video_size_limit' => config_cache('pixelfed.max_photo_size') * 1024, - 'video_frame_rate_limit' => 240, - 'video_matrix_limit' => 3686400 + 'contact' => [ + 'email' => config('instance.email'), + 'account' => $contact ], - 'polls' => [ - 'max_options' => 4, - 'max_characters_per_option' => 50, - 'min_expiration' => 300, - 'max_expiration' => 2629746, - ], - 'translation' => [ - 'enabled' => false, - ], - ], - 'registrations' => [ - 'enabled' => (bool) config_cache('pixelfed.open_registration'), - 'approval_required' => false, - 'message' => null - ], - 'contact' => [ - 'email' => config('instance.email'), - 'account' => $contact - ], - 'rules' => $rules - ]; + 'rules' => $rules + ]; + }); + $res['registrations']['enabled'] = (bool) config_cache('pixelfed.open_registration'); + $res['registrations']['approval_required'] = (bool) config_cache('instance.curated_registration.enabled'); return response()->json($res, 200, [], JSON_UNESCAPED_SLASHES); } diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php index 8c10e5d0c..8bdd57bf8 100644 --- a/app/Http/Controllers/Auth/RegisterController.php +++ b/app/Http/Controllers/Auth/RegisterController.php @@ -174,7 +174,7 @@ class RegisterController extends Controller */ public function showRegistrationForm() { - if(config_cache('pixelfed.open_registration')) { + if((bool) config_cache('pixelfed.open_registration')) { if(config('pixelfed.bouncer.cloud_ips.ban_signups')) { abort_if(BouncerService::checkIp(request()->ip()), 404); } @@ -191,7 +191,11 @@ class RegisterController extends Controller return view('auth.register'); } } else { - abort(404); + if((bool) config_cache('instance.curated_registration.enabled') && config('instance.curated_registration.state.fallback_on_closed_reg')) { + return redirect('/auth/sign_up'); + } else { + abort(404); + } } } diff --git a/app/Http/Controllers/CuratedRegisterController.php b/app/Http/Controllers/CuratedRegisterController.php new file mode 100644 index 000000000..58bddb498 --- /dev/null +++ b/app/Http/Controllers/CuratedRegisterController.php @@ -0,0 +1,399 @@ +user(), 404); + return view('auth.curated-register.index', ['step' => 1]); + } + + public function concierge(Request $request) + { + abort_if($request->user(), 404); + $emailConfirmed = $request->session()->has('cur-reg-con.email-confirmed') && + $request->has('next') && + $request->session()->has('cur-reg-con.cr-id'); + return view('auth.curated-register.concierge', compact('emailConfirmed')); + } + + public function conciergeResponseSent(Request $request) + { + return view('auth.curated-register.user_response_sent'); + } + + public function conciergeFormShow(Request $request) + { + abort_if($request->user(), 404); + abort_unless( + $request->session()->has('cur-reg-con.email-confirmed') && + $request->session()->has('cur-reg-con.cr-id') && + $request->session()->has('cur-reg-con.ac-id'), 404); + $crid = $request->session()->get('cur-reg-con.cr-id'); + $arid = $request->session()->get('cur-reg-con.ac-id'); + $showCaptcha = config('instance.curated_registration.captcha_enabled'); + if($attempts = $request->session()->get('cur-reg-con-attempt')) { + $showCaptcha = $attempts && $attempts >= 2; + } else { + $showCaptcha = false; + } + $activity = CuratedRegisterActivity::whereRegisterId($crid)->whereFromAdmin(true)->findOrFail($arid); + return view('auth.curated-register.concierge_form', compact('activity', 'showCaptcha')); + } + + public function conciergeFormStore(Request $request) + { + abort_if($request->user(), 404); + $request->session()->increment('cur-reg-con-attempt'); + abort_unless( + $request->session()->has('cur-reg-con.email-confirmed') && + $request->session()->has('cur-reg-con.cr-id') && + $request->session()->has('cur-reg-con.ac-id'), 404); + $attempts = $request->session()->get('cur-reg-con-attempt'); + $messages = []; + $rules = [ + 'response' => 'required|string|min:5|max:1000', + 'crid' => 'required|integer|min:1', + 'acid' => 'required|integer|min:1' + ]; + if(config('instance.curated_registration.captcha_enabled') && $attempts >= 3) { + $rules['h-captcha-response'] = 'required|captcha'; + $messages['h-captcha-response.required'] = 'The captcha must be filled'; + } + $this->validate($request, $rules, $messages); + $crid = $request->session()->get('cur-reg-con.cr-id'); + $acid = $request->session()->get('cur-reg-con.ac-id'); + abort_if((string) $crid !== $request->input('crid'), 404); + abort_if((string) $acid !== $request->input('acid'), 404); + + if(CuratedRegisterActivity::whereRegisterId($crid)->whereReplyToId($acid)->exists()) { + return redirect()->back()->withErrors(['code' => 'You already replied to this request.']); + } + + $act = CuratedRegisterActivity::create([ + 'register_id' => $crid, + 'reply_to_id' => $acid, + 'type' => 'user_response', + 'message' => $request->input('response'), + 'from_user' => true, + 'action_required' => true, + ]); + + CuratedRegister::findOrFail($crid)->update(['user_has_responded' => true]); + $request->session()->pull('cur-reg-con'); + $request->session()->pull('cur-reg-con-attempt'); + + return view('auth.curated-register.user_response_sent'); + } + + public function conciergeStore(Request $request) + { + abort_if($request->user(), 404); + $rules = [ + 'sid' => 'required_if:action,email|integer|min:1|max:20000000', + 'id' => 'required_if:action,email|integer|min:1|max:20000000', + 'code' => 'required_if:action,email', + 'action' => 'required|string|in:email,message', + 'email' => 'required_if:action,email|email', + 'response' => 'required_if:action,message|string|min:20|max:1000', + ]; + $messages = []; + if(config('instance.curated_registration.captcha_enabled')) { + $rules['h-captcha-response'] = 'required|captcha'; + $messages['h-captcha-response.required'] = 'The captcha must be filled'; + } + $this->validate($request, $rules, $messages); + + $action = $request->input('action'); + $sid = $request->input('sid'); + $id = $request->input('id'); + $code = $request->input('code'); + $email = $request->input('email'); + + $cr = CuratedRegister::whereIsClosed(false)->findOrFail($sid); + $ac = CuratedRegisterActivity::whereRegisterId($cr->id)->whereFromAdmin(true)->findOrFail($id); + + if(!hash_equals($ac->secret_code, $code)) { + return redirect()->back()->withErrors(['code' => 'Invalid code']); + } + + if(!hash_equals($cr->email, $email)) { + return redirect()->back()->withErrors(['email' => 'Invalid email']); + } + + $request->session()->put('cur-reg-con.email-confirmed', true); + $request->session()->put('cur-reg-con.cr-id', $cr->id); + $request->session()->put('cur-reg-con.ac-id', $ac->id); + $emailConfirmed = true; + return redirect('/auth/sign_up/concierge/form'); + } + + public function confirmEmail(Request $request) + { + if($request->user()) { + return redirect(route('help.email-confirmation-issues')); + } + return view('auth.curated-register.confirm_email'); + } + + public function emailConfirmed(Request $request) + { + if($request->user()) { + return redirect(route('help.email-confirmation-issues')); + } + return view('auth.curated-register.email_confirmed'); + } + + public function resendConfirmation(Request $request) + { + return view('auth.curated-register.resend-confirmation'); + } + + public function resendConfirmationProcess(Request $request) + { + $rules = [ + 'email' => [ + 'required', + 'string', + app()->environment() === 'production' ? 'email:rfc,dns,spoof' : 'email', + 'exists:curated_registers', + ] + ]; + + $messages = []; + + if(config('instance.curated_registration.captcha_enabled')) { + $rules['h-captcha-response'] = 'required|captcha'; + $messages['h-captcha-response.required'] = 'The captcha must be filled'; + } + + $this->validate($request, $rules, $messages); + + $cur = CuratedRegister::whereEmail($request->input('email'))->whereIsClosed(false)->first(); + if(!$cur) { + return redirect()->back()->withErrors(['email' => 'The selected email is invalid.']); + } + + $totalCount = CuratedRegisterActivity::whereRegisterId($cur->id) + ->whereType('user_resend_email_confirmation') + ->count(); + + if($totalCount && $totalCount >= config('instance.curated_registration.resend_confirmation_limit')) { + return redirect()->back()->withErrors(['email' => 'You have re-attempted too many times. To proceed with your application, please contact the admin team.']); + } + + $count = CuratedRegisterActivity::whereRegisterId($cur->id) + ->whereType('user_resend_email_confirmation') + ->where('created_at', '>', now()->subHours(12)) + ->count(); + + if($count) { + return redirect()->back()->withErrors(['email' => 'You can only re-send the confirmation email once per 12 hours. Try again later.']); + } + + CuratedRegisterActivity::create([ + 'register_id' => $cur->id, + 'type' => 'user_resend_email_confirmation', + 'admin_only_view' => true, + 'from_admin' => false, + 'from_user' => false, + 'action_required' => false, + ]); + + Mail::to($cur->email)->send(new CuratedRegisterConfirmEmail($cur)); + return view('auth.curated-register.resent-confirmation'); + return $request->all(); + } + + public function confirmEmailHandle(Request $request) + { + $rules = [ + 'sid' => 'required', + 'code' => 'required' + ]; + $messages = []; + if(config('instance.curated_registration.captcha_enabled')) { + $rules['h-captcha-response'] = 'required|captcha'; + $messages['h-captcha-response.required'] = 'The captcha must be filled'; + } + $this->validate($request, $rules, $messages); + + $cr = CuratedRegister::whereNull('email_verified_at') + ->where('created_at', '>', now()->subHours(24)) + ->find($request->input('sid')); + if(!$cr) { + return redirect(route('help.email-confirmation-issues')); + } + if(!hash_equals($cr->verify_code, $request->input('code'))) { + return redirect(route('help.email-confirmation-issues')); + } + $cr->email_verified_at = now(); + $cr->save(); + + if(config('instance.curated_registration.notify.admin.on_verify_email.enabled')) { + CuratedOnboardingNotifyAdminNewApplicationPipeline::dispatch($cr); + } + return view('auth.curated-register.email_confirmed'); + } + + public function proceed(Request $request) + { + $this->validate($request, [ + 'step' => 'required|integer|in:1,2,3,4' + ]); + $step = $request->input('step'); + + switch($step) { + case 1: + $step = 2; + $request->session()->put('cur-step', 1); + return view('auth.curated-register.index', compact('step')); + break; + + case 2: + $this->stepTwo($request); + $step = 3; + $request->session()->put('cur-step', 2); + return view('auth.curated-register.index', compact('step')); + break; + + case 3: + $this->stepThree($request); + $step = 3; + $request->session()->put('cur-step', 3); + $verifiedEmail = true; + $request->session()->pull('cur-reg'); + return view('auth.curated-register.index', compact('step', 'verifiedEmail')); + break; + } + } + + protected function stepTwo($request) + { + if($request->filled('reason')) { + $request->session()->put('cur-reg.form-reason', $request->input('reason')); + } + if($request->filled('username')) { + $request->session()->put('cur-reg.form-username', $request->input('username')); + } + if($request->filled('email')) { + $request->session()->put('cur-reg.form-email', $request->input('email')); + } + $this->validate($request, [ + 'username' => [ + 'required', + 'min:2', + 'max:15', + 'unique:curated_registers', + 'unique:users', + function ($attribute, $value, $fail) { + $dash = substr_count($value, '-'); + $underscore = substr_count($value, '_'); + $period = substr_count($value, '.'); + + if(ends_with($value, ['.php', '.js', '.css'])) { + return $fail('Username is invalid.'); + } + + if(($dash + $underscore + $period) > 1) { + return $fail('Username is invalid. Can only contain one dash (-), period (.) or underscore (_).'); + } + + if (!ctype_alnum($value[0])) { + return $fail('Username is invalid. Must start with a letter or number.'); + } + + if (!ctype_alnum($value[strlen($value) - 1])) { + return $fail('Username is invalid. Must end with a letter or number.'); + } + + $val = str_replace(['_', '.', '-'], '', $value); + if(!ctype_alnum($val)) { + return $fail('Username is invalid. Username must be alpha-numeric and may contain dashes (-), periods (.) and underscores (_).'); + } + + $restricted = RestrictedNames::get(); + if (in_array(strtolower($value), array_map('strtolower', $restricted))) { + return $fail('Username cannot be used.'); + } + }, + ], + 'email' => [ + 'required', + 'string', + app()->environment() === 'production' ? 'email:rfc,dns,spoof' : 'email', + 'max:255', + 'unique:users', + 'unique:curated_registers', + function ($attribute, $value, $fail) { + $banned = EmailService::isBanned($value); + if($banned) { + return $fail('Email is invalid.'); + } + }, + ], + 'password' => 'required|min:8', + 'password_confirmation' => 'required|same:password', + 'reason' => 'required|min:20|max:1000', + 'agree' => 'required|accepted' + ]); + $request->session()->put('cur-reg.form-email', $request->input('email')); + $request->session()->put('cur-reg.form-password', $request->input('password')); + } + + protected function stepThree($request) + { + $this->validate($request, [ + 'email' => [ + 'required', + 'string', + app()->environment() === 'production' ? 'email:rfc,dns,spoof' : 'email', + 'max:255', + 'unique:users', + 'unique:curated_registers', + function ($attribute, $value, $fail) { + $banned = EmailService::isBanned($value); + if($banned) { + return $fail('Email is invalid.'); + } + }, + ] + ]); + $cr = new CuratedRegister; + $cr->email = $request->email; + $cr->username = $request->session()->get('cur-reg.form-username'); + $cr->password = bcrypt($request->session()->get('cur-reg.form-password')); + $cr->ip_address = $request->ip(); + $cr->reason_to_join = $request->session()->get('cur-reg.form-reason'); + $cr->verify_code = Str::random(40); + $cr->save(); + + Mail::to($cr->email)->send(new CuratedRegisterConfirmEmail($cr)); + } +} diff --git a/app/Http/Controllers/FederationController.php b/app/Http/Controllers/FederationController.php index 6faea7050..55c7b4393 100644 --- a/app/Http/Controllers/FederationController.php +++ b/app/Http/Controllers/FederationController.php @@ -253,7 +253,7 @@ class FederationController extends Controller 'type' => 'OrderedCollection', 'totalItems' => $account['following_count'] ?? 0, ]; - return response()->json($obj); + return response()->json($obj)->header('Content-Type', 'application/activity+json'); } public function userFollowers(Request $request, $username) @@ -269,6 +269,6 @@ class FederationController extends Controller 'type' => 'OrderedCollection', 'totalItems' => $account['followers_count'] ?? 0, ]; - return response()->json($obj); + return response()->json($obj)->header('Content-Type', 'application/activity+json'); } } diff --git a/app/Http/Controllers/PixelfedDirectoryController.php b/app/Http/Controllers/PixelfedDirectoryController.php index 6290cd398..cfe3f690a 100644 --- a/app/Http/Controllers/PixelfedDirectoryController.php +++ b/app/Http/Controllers/PixelfedDirectoryController.php @@ -78,10 +78,11 @@ class PixelfedDirectoryController extends Controller $res['community_guidelines'] = json_decode($guidelines->v, true); } - $openRegistration = ConfigCache::whereK('pixelfed.open_registration')->first(); - if($openRegistration) { - $res['open_registration'] = (bool) $openRegistration; - } + $openRegistration = (bool) config_cache('pixelfed.open_registration'); + $res['open_registration'] = $openRegistration; + + $curatedOnboarding = (bool) config_cache('instance.curated_registration.enabled'); + $res['curated_onboarding'] = $curatedOnboarding; $oauthEnabled = ConfigCache::whereK('pixelfed.oauth_enabled')->first(); if($oauthEnabled) { diff --git a/app/Http/Controllers/ProfileAliasController.php b/app/Http/Controllers/ProfileAliasController.php index 024005a8e..559dcb9a6 100644 --- a/app/Http/Controllers/ProfileAliasController.php +++ b/app/Http/Controllers/ProfileAliasController.php @@ -2,11 +2,13 @@ namespace App\Http\Controllers; -use Illuminate\Http\Request; -use App\Util\Lexer\Nickname; -use App\Util\Webfinger\WebfingerUrl; use App\Models\ProfileAlias; +use App\Models\ProfileMigration; +use App\Services\AccountService; use App\Services\WebfingerService; +use App\Util\Lexer\Nickname; +use Cache; +use Illuminate\Http\Request; class ProfileAliasController extends Controller { @@ -18,31 +20,47 @@ class ProfileAliasController extends Controller public function index(Request $request) { $aliases = $request->user()->profile->aliases; + return view('settings.aliases.index', compact('aliases')); } public function store(Request $request) { $this->validate($request, [ - 'acct' => 'required' + 'acct' => 'required', ]); $acct = $request->input('acct'); - if($request->user()->profile->aliases->count() >= 3) { + $nn = Nickname::normalizeProfileUrl($acct); + if (! $nn) { + return back()->with('error', 'Invalid account alias.'); + } + + if ($nn['domain'] === config('pixelfed.domain.app')) { + if (strtolower($nn['username']) == ($request->user()->username)) { + return back()->with('error', 'You cannot add an alias to your own account.'); + } + } + + if ($request->user()->profile->aliases->count() >= 3) { return back()->with('error', 'You can only add 3 account aliases.'); } $webfingerService = WebfingerService::lookup($acct); - if(!$webfingerService || !isset($webfingerService['url'])) { + $webfingerUrl = WebfingerService::rawGet($acct); + + if (! $webfingerService || ! isset($webfingerService['url']) || ! $webfingerUrl || empty($webfingerUrl)) { return back()->with('error', 'Invalid account, cannot add alias at this time.'); } $alias = new ProfileAlias; $alias->profile_id = $request->user()->profile_id; $alias->acct = $acct; - $alias->uri = $webfingerService['url']; + $alias->uri = $webfingerUrl; $alias->save(); + Cache::forget('pf:activitypub:user-object:by-id:'.$request->user()->profile_id); + return back()->with('status', 'Successfully added alias!'); } @@ -50,14 +68,25 @@ class ProfileAliasController extends Controller { $this->validate($request, [ 'acct' => 'required', - 'id' => 'required|exists:profile_aliases' + 'id' => 'required|exists:profile_aliases', ]); - - $alias = ProfileAlias::where('profile_id', $request->user()->profile_id) - ->where('acct', $request->input('acct')) + $pid = $request->user()->profile_id; + $acct = $request->input('acct'); + $alias = ProfileAlias::where('profile_id', $pid) + ->where('acct', $acct) ->findOrFail($request->input('id')); + $migration = ProfileMigration::whereProfileId($pid) + ->whereAcct($acct) + ->first(); + if ($migration) { + $request->user()->profile->update([ + 'moved_to_profile_id' => null, + ]); + } $alias->delete(); + Cache::forget('pf:activitypub:user-object:by-id:'.$pid); + AccountService::del($pid); return back()->with('status', 'Successfully deleted alias!'); } diff --git a/app/Http/Controllers/ProfileMigrationController.php b/app/Http/Controllers/ProfileMigrationController.php new file mode 100644 index 000000000..d9158b9a3 --- /dev/null +++ b/app/Http/Controllers/ProfileMigrationController.php @@ -0,0 +1,62 @@ +middleware('auth'); + } + + public function index(Request $request) + { + $hasExistingMigration = ProfileMigration::whereProfileId($request->user()->profile_id) + ->where('created_at', '>', now()->subDays(30)) + ->exists(); + + return view('settings.migration.index', compact('hasExistingMigration')); + } + + public function store(ProfileMigrationStoreRequest $request) + { + $acct = WebfingerService::rawGet($request->safe()->acct); + if (! $acct) { + return redirect()->back()->withErrors(['acct' => 'The new account you provided is not responding to our requests.']); + } + $newAccount = Helpers::profileFetch($acct); + if (! $newAccount) { + return redirect()->back()->withErrors(['acct' => 'An error occured, please try again later. Code: res-failed-account-fetch']); + } + $user = $request->user(); + ProfileAlias::updateOrCreate([ + 'profile_id' => $user->profile_id, + 'acct' => $request->safe()->acct, + 'uri' => $acct, + ]); + ProfileMigration::create([ + 'profile_id' => $request->user()->profile_id, + 'acct' => $request->safe()->acct, + 'followers_count' => $request->user()->profile->followers_count, + 'target_profile_id' => $newAccount['id'], + ]); + $user->profile->update([ + 'moved_to_profile_id' => $newAccount->id, + 'indexable' => false, + ]); + AccountService::del($user->profile_id); + + ProfileMigrationMoveFollowersPipeline::dispatch($user->profile_id, $newAccount->id); + + return redirect()->back()->with(['status' => 'Succesfully migrated account!']); + } +} diff --git a/app/Http/Controllers/Settings/PrivacySettings.php b/app/Http/Controllers/Settings/PrivacySettings.php index bd2222d48..6697bf3c8 100644 --- a/app/Http/Controllers/Settings/PrivacySettings.php +++ b/app/Http/Controllers/Settings/PrivacySettings.php @@ -84,14 +84,17 @@ trait PrivacySettings } $settings->save(); } - Cache::forget('profile:settings:' . $profile->id); + $pid = $profile->id; + Cache::forget('profile:settings:' . $pid); Cache::forget('user:account:id:' . $profile->user_id); - Cache::forget('profile:follower_count:' . $profile->id); - Cache::forget('profile:following_count:' . $profile->id); - Cache::forget('profile:atom:enabled:' . $profile->id); - Cache::forget('profile:embed:' . $profile->id); - Cache::forget('pf:acct:settings:hidden-followers:' . $profile->id); - Cache::forget('pf:acct:settings:hidden-following:' . $profile->id); + Cache::forget('profile:follower_count:' . $pid); + Cache::forget('profile:following_count:' . $pid); + Cache::forget('profile:atom:enabled:' . $pid); + Cache::forget('profile:embed:' . $pid); + Cache::forget('pf:acct:settings:hidden-followers:' . $pid); + Cache::forget('pf:acct:settings:hidden-following:' . $pid); + Cache::forget('pf:acct-trans:hideFollowing:' . $pid); + Cache::forget('pf:acct-trans:hideFollowers:' . $pid); return redirect(route('settings.privacy'))->with('status', 'Settings successfully updated!'); } diff --git a/app/Http/Controllers/SoftwareUpdateController.php b/app/Http/Controllers/SoftwareUpdateController.php new file mode 100644 index 000000000..e29359830 --- /dev/null +++ b/app/Http/Controllers/SoftwareUpdateController.php @@ -0,0 +1,21 @@ +middleware('auth'); + $this->middleware('admin'); + } + + public function getSoftwareUpdateCheck(Request $request) + { + $res = SoftwareUpdateService::get(); + return $res; + } +} diff --git a/app/Http/Requests/ProfileMigrationStoreRequest.php b/app/Http/Requests/ProfileMigrationStoreRequest.php new file mode 100644 index 000000000..de9e31b8a --- /dev/null +++ b/app/Http/Requests/ProfileMigrationStoreRequest.php @@ -0,0 +1,76 @@ +user() || $this->user()->status) { + return false; + } + + return true; + } + + /** + * Get the validation rules that apply to the request. + * + * @return array|string> + */ + public function rules(): array + { + return [ + 'acct' => 'required|email', + 'password' => 'required|current_password', + ]; + } + + public function after(): array + { + return [ + function (Validator $validator) { + $err = $this->validateNewAccount(); + if ($err !== 'noerr') { + $validator->errors()->add( + 'acct', + $err + ); + } + }, + ]; + } + + protected function validateNewAccount() + { + if (ProfileMigration::whereProfileId($this->user()->profile_id)->where('created_at', '>', now()->subDays(30))->exists()) { + return 'Error - You have migrated your account in the past 30 days, you can only perform a migration once per 30 days.'; + } + $acct = WebfingerService::rawGet($this->acct); + if (! $acct) { + return 'The new account you provided is not responding to our requests.'; + } + $pr = FetchCacheService::getJson($acct); + if (! $pr || ! isset($pr['alsoKnownAs'])) { + return 'Invalid account lookup response.'; + } + if (! count($pr['alsoKnownAs']) || ! is_array($pr['alsoKnownAs'])) { + return 'The new account does not contain an alias to your current account.'; + } + $curAcctUrl = $this->user()->profile->permalink(); + if (! in_array($curAcctUrl, $pr['alsoKnownAs'])) { + return 'The new account does not contain an alias to your current account.'; + } + + return 'noerr'; + } +} diff --git a/app/Http/Resources/AdminRemoteReport.php b/app/Http/Resources/AdminRemoteReport.php new file mode 100644 index 000000000..a726e25cc --- /dev/null +++ b/app/Http/Resources/AdminRemoteReport.php @@ -0,0 +1,49 @@ + + */ + public function toArray(Request $request): array + { + $instance = parse_url($this->uri, PHP_URL_HOST); + $statuses = []; + if($this->status_ids && count($this->status_ids)) { + foreach($this->status_ids as $sid) { + $s = StatusService::get($sid, false); + if($s && $s['in_reply_to_id'] != null) { + $parent = StatusService::get($s['in_reply_to_id'], false); + if($parent) { + $s['parent'] = $parent; + } + } + if($s) { + $statuses[] = $s; + } + } + } + $res = [ + 'id' => $this->id, + 'instance' => $instance, + 'reported' => AccountService::get($this->account_id, true), + 'status_ids' => $this->status_ids, + 'statuses' => $statuses, + 'message' => $this->comment, + 'report_meta' => $this->report_meta, + 'created_at' => optional($this->created_at)->format('c'), + 'action_taken_at' => optional($this->action_taken_at)->format('c'), + ]; + return $res; + } +} diff --git a/app/Jobs/CuratedOnboarding/CuratedOnboardingNotifyAdminNewApplicationPipeline.php b/app/Jobs/CuratedOnboarding/CuratedOnboardingNotifyAdminNewApplicationPipeline.php new file mode 100644 index 000000000..a1b5f279a --- /dev/null +++ b/app/Jobs/CuratedOnboarding/CuratedOnboardingNotifyAdminNewApplicationPipeline.php @@ -0,0 +1,65 @@ +cr = $cr; + } + + /** + * Execute the job. + */ + public function handle(): void + { + if(!config('instance.curated_registration.notify.admin.on_verify_email.enabled')) { + return; + } + + config('instance.curated_registration.notify.admin.on_verify_email.bundle') ? + $this->handleBundled() : + $this->handleUnbundled(); + } + + protected function handleBundled() + { + $cr = $this->cr; + Storage::append('conanap.json', json_encode([ + 'id' => $cr->id, + 'email' => $cr->email, + 'created_at' => $cr->created_at, + 'updated_at' => $cr->updated_at, + ])); + } + + protected function handleUnbundled() + { + $cr = $this->cr; + if($aid = config_cache('instance.admin.pid')) { + $admin = User::whereProfileId($aid)->first(); + if($admin && $admin->email) { + Mail::to($admin->email)->send(new CuratedRegisterNotifyAdmin($cr)); + } + } + } +} diff --git a/app/Jobs/ProfilePipeline/ProfileMigrationMoveFollowersPipeline.php b/app/Jobs/ProfilePipeline/ProfileMigrationMoveFollowersPipeline.php new file mode 100644 index 000000000..f5c311888 --- /dev/null +++ b/app/Jobs/ProfilePipeline/ProfileMigrationMoveFollowersPipeline.php @@ -0,0 +1,55 @@ +oldPid = $oldPid; + $this->newPid = $newPid; + } + + /** + * Execute the job. + */ + public function handle(): void + { + $og = Profile::find($this->oldPid); + $ne = Profile::find($this->newPid); + if(!$og || !$ne || $og == $ne) { + return; + } + $ne->followers_count = $og->followers_count; + $ne->save(); + $og->followers_count = 0; + $og->save(); + foreach (Follower::whereFollowingId($this->oldPid)->lazyById(200, 'id') as $follower) { + try { + $follower->following_id = $this->newPid; + $follower->save(); + } catch (Exception $e) { + $follower->delete(); + } + } + AccountService::del($this->oldPid); + AccountService::del($this->newPid); + } +} diff --git a/app/Mail/CuratedRegisterAcceptUser.php b/app/Mail/CuratedRegisterAcceptUser.php new file mode 100644 index 000000000..a87278ace --- /dev/null +++ b/app/Mail/CuratedRegisterAcceptUser.php @@ -0,0 +1,55 @@ +verify = $verify; + } + + /** + * Get the message envelope. + */ + public function envelope(): Envelope + { + return new Envelope( + subject: 'Your ' . config('pixelfed.domain.app') . ' Registration Update', + ); + } + + /** + * Get the message content definition. + */ + public function content(): Content + { + return new Content( + markdown: 'emails.curated-register.request-accepted', + ); + } + + /** + * Get the attachments for the message. + * + * @return array + */ + public function attachments(): array + { + return []; + } +} diff --git a/app/Mail/CuratedRegisterConfirmEmail.php b/app/Mail/CuratedRegisterConfirmEmail.php new file mode 100644 index 000000000..bf06c4311 --- /dev/null +++ b/app/Mail/CuratedRegisterConfirmEmail.php @@ -0,0 +1,55 @@ +verify = $verify; + } + + /** + * Get the message envelope. + */ + public function envelope(): Envelope + { + return new Envelope( + subject: 'Welcome to Pixelfed! Please Confirm Your Email', + ); + } + + /** + * Get the message content definition. + */ + public function content(): Content + { + return new Content( + markdown: 'emails.curated-register.confirm_email', + ); + } + + /** + * Get the attachments for the message. + * + * @return array + */ + public function attachments(): array + { + return []; + } +} diff --git a/app/Mail/CuratedRegisterNotifyAdmin.php b/app/Mail/CuratedRegisterNotifyAdmin.php new file mode 100644 index 000000000..28bdad971 --- /dev/null +++ b/app/Mail/CuratedRegisterNotifyAdmin.php @@ -0,0 +1,55 @@ +verify = $verify; + } + + /** + * Get the message envelope. + */ + public function envelope(): Envelope + { + return new Envelope( + subject: '[Requires Action]: New Curated Onboarding Application', + ); + } + + /** + * Get the message content definition. + */ + public function content(): Content + { + return new Content( + markdown: 'emails.curated-register.admin_notify', + ); + } + + /** + * Get the attachments for the message. + * + * @return array + */ + public function attachments(): array + { + return []; + } +} diff --git a/app/Mail/CuratedRegisterNotifyAdminUserResponse.php b/app/Mail/CuratedRegisterNotifyAdminUserResponse.php new file mode 100644 index 000000000..bc54d5c3e --- /dev/null +++ b/app/Mail/CuratedRegisterNotifyAdminUserResponse.php @@ -0,0 +1,55 @@ +activity = $activity; + } + + /** + * Get the message envelope. + */ + public function envelope(): Envelope + { + return new Envelope( + subject: 'Curated Register Notify Admin User Response', + ); + } + + /** + * Get the message content definition. + */ + public function content(): Content + { + return new Content( + markdown: 'emails.curated-register.admin_notify_user_response', + ); + } + + /** + * Get the attachments for the message. + * + * @return array + */ + public function attachments(): array + { + return []; + } +} diff --git a/app/Mail/CuratedRegisterRejectUser.php b/app/Mail/CuratedRegisterRejectUser.php new file mode 100644 index 000000000..448ea8462 --- /dev/null +++ b/app/Mail/CuratedRegisterRejectUser.php @@ -0,0 +1,55 @@ +verify = $verify; + } + + /** + * Get the message envelope. + */ + public function envelope(): Envelope + { + return new Envelope( + subject: 'Your ' . config('pixelfed.domain.app') . ' Registration Update', + ); + } + + /** + * Get the message content definition. + */ + public function content(): Content + { + return new Content( + markdown: 'emails.curated-register.request-rejected', + ); + } + + /** + * Get the attachments for the message. + * + * @return array + */ + public function attachments(): array + { + return []; + } +} diff --git a/app/Mail/CuratedRegisterRequestDetailsFromUser.php b/app/Mail/CuratedRegisterRequestDetailsFromUser.php new file mode 100644 index 000000000..b0ff1bb4d --- /dev/null +++ b/app/Mail/CuratedRegisterRequestDetailsFromUser.php @@ -0,0 +1,58 @@ +verify = $verify; + $this->activity = $activity; + } + + /** + * Get the message envelope. + */ + public function envelope(): Envelope + { + return new Envelope( + subject: '[Action Needed]: Additional information requested', + ); + } + + /** + * Get the message content definition. + */ + public function content(): Content + { + return new Content( + markdown: 'emails.curated-register.request-details-from-user', + ); + } + + /** + * Get the attachments for the message. + * + * @return array + */ + public function attachments(): array + { + return []; + } +} diff --git a/app/Mail/CuratedRegisterSendMessage.php b/app/Mail/CuratedRegisterSendMessage.php new file mode 100644 index 000000000..20ffc2749 --- /dev/null +++ b/app/Mail/CuratedRegisterSendMessage.php @@ -0,0 +1,55 @@ +verify = $verify; + } + + /** + * Get the message envelope. + */ + public function envelope(): Envelope + { + return new Envelope( + subject: 'Your ' . config('pixelfed.domain.app') . ' Registration Update', + ); + } + + /** + * Get the message content definition. + */ + public function content(): Content + { + return new Content( + markdown: 'emails.curated-register.message-from-admin', + ); + } + + /** + * Get the attachments for the message. + * + * @return array + */ + public function attachments(): array + { + return []; + } +} diff --git a/app/Models/CuratedRegister.php b/app/Models/CuratedRegister.php new file mode 100644 index 000000000..eeeb82784 --- /dev/null +++ b/app/Models/CuratedRegister.php @@ -0,0 +1,67 @@ + 'array', + 'admin_notes' => 'array', + 'email_verified_at' => 'datetime', + 'admin_notified_at' => 'datetime', + 'action_taken_at' => 'datetime', + 'user_has_responded' => 'boolean', + 'is_awaiting_more_info' => 'boolean', + 'is_accepted' => 'boolean', + 'is_rejected' => 'boolean', + 'is_closed' => 'boolean', + ]; + + public function adminStatusLabel() + { + if($this->user_has_responded) { + return 'Awaiting Admin Response'; + } + if(!$this->email_verified_at) { + return 'Unverified email'; + } + if($this->is_approved) { + return 'Approved'; + } + if($this->is_rejected) { + return 'Rejected'; + } + if($this->is_awaiting_more_info ) { + return 'Awaiting User Response'; + } + if($this->is_closed ) { + return 'Closed'; + } + + return 'Open'; + } + + public function emailConfirmUrl() + { + return url('/auth/sign_up/confirm?sid=' . $this->id . '&code=' . $this->verify_code); + } + + public function emailReplyUrl() + { + return url('/auth/sign_up/concierge?sid=' . $this->id . '&code=' . $this->verify_code . '&sc=' . str_random(8)); + } + + public function adminReviewUrl() + { + return url('/i/admin/curated-onboarding/show/' . $this->id); + } +} diff --git a/app/Models/CuratedRegisterActivity.php b/app/Models/CuratedRegisterActivity.php new file mode 100644 index 000000000..5b5071e01 --- /dev/null +++ b/app/Models/CuratedRegisterActivity.php @@ -0,0 +1,38 @@ + 'array', + 'admin_notified_at' => 'datetime', + 'action_taken_at' => 'datetime', + ]; + + public function application() + { + return $this->belongsTo(CuratedRegister::class, 'register_id'); + } + + public function emailReplyUrl() + { + return url('/auth/sign_up/concierge?sid='.$this->register_id . '&id=' . $this->id . '&code=' . $this->secret_code); + } + + public function adminReviewUrl() + { + $url = '/i/admin/curated-onboarding/show/' . $this->register_id . '/?ah=' . $this->id; + if($this->reply_to_id) { + $url .= '&rtid=' . $this->reply_to_id; + } + return url($url); + } +} diff --git a/app/Models/CuratedRegisterTemplate.php b/app/Models/CuratedRegisterTemplate.php new file mode 100644 index 000000000..a5def0cef --- /dev/null +++ b/app/Models/CuratedRegisterTemplate.php @@ -0,0 +1,19 @@ + 'boolean', + ]; +} diff --git a/app/Models/ProfileAlias.php b/app/Models/ProfileAlias.php index b7a3bdc9c..aef91bebc 100644 --- a/app/Models/ProfileAlias.php +++ b/app/Models/ProfileAlias.php @@ -10,6 +10,8 @@ class ProfileAlias extends Model { use HasFactory; + protected $guarded = []; + public function profile() { return $this->belongsTo(Profile::class); diff --git a/app/Models/ProfileMigration.php b/app/Models/ProfileMigration.php new file mode 100644 index 000000000..a40d52c95 --- /dev/null +++ b/app/Models/ProfileMigration.php @@ -0,0 +1,19 @@ +belongsTo(Profile::class, 'profile_id'); + } +} diff --git a/app/Observers/StatusObserver.php b/app/Observers/StatusObserver.php index d78585175..6c2c4c36d 100644 --- a/app/Observers/StatusObserver.php +++ b/app/Observers/StatusObserver.php @@ -38,6 +38,10 @@ class StatusObserver */ public function updated(Status $status) { + if(!in_array($status->scope, ['public', 'unlisted', 'private'])) { + return; + } + if(config('instance.timeline.home.cached')) { Cache::forget('pf:timelines:home:' . $status->profile_id); } @@ -55,6 +59,10 @@ class StatusObserver */ public function deleted(Status $status) { + if(!in_array($status->scope, ['public', 'unlisted', 'private'])) { + return; + } + if(config('instance.timeline.home.cached')) { Cache::forget('pf:timelines:home:' . $status->profile_id); } diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index 37aac4ac3..2452eb2a8 100644 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -23,8 +23,6 @@ class RouteServiceProvider extends ServiceProvider */ public function boot() { - // - parent::boot(); } @@ -36,10 +34,7 @@ class RouteServiceProvider extends ServiceProvider public function map() { $this->mapApiRoutes(); - $this->mapWebRoutes(); - - // } /** @@ -51,6 +46,18 @@ class RouteServiceProvider extends ServiceProvider */ protected function mapWebRoutes() { + Route::middleware('web') + ->namespace($this->namespace) + ->group(base_path('routes/web-admin.php')); + + Route::middleware('web') + ->namespace($this->namespace) + ->group(base_path('routes/web-portfolio.php')); + + Route::middleware('web') + ->namespace($this->namespace) + ->group(base_path('routes/web-api.php')); + Route::middleware('web') ->namespace($this->namespace) ->group(base_path('routes/web.php')); diff --git a/app/Services/ActivityPubFetchService.php b/app/Services/ActivityPubFetchService.php index cbf153ecb..4b515859c 100644 --- a/app/Services/ActivityPubFetchService.php +++ b/app/Services/ActivityPubFetchService.php @@ -11,38 +11,61 @@ use Illuminate\Http\Client\RequestException; class ActivityPubFetchService { - public static function get($url, $validateUrl = true) - { + public static function get($url, $validateUrl = true) + { if($validateUrl === true) { - if(!Helpers::validateUrl($url)) { - return 0; - } + if(!Helpers::validateUrl($url)) { + return 0; + } } - $baseHeaders = [ - 'Accept' => 'application/activity+json, application/ld+json', - ]; + $baseHeaders = [ + 'Accept' => 'application/activity+json, application/ld+json', + ]; - $headers = HttpSignature::instanceActorSign($url, false, $baseHeaders, 'get'); - $headers['Accept'] = 'application/activity+json, application/ld+json'; - $headers['User-Agent'] = 'PixelFedBot/1.0.0 (Pixelfed/'.config('pixelfed.version').'; +'.config('app.url').')'; + $headers = HttpSignature::instanceActorSign($url, false, $baseHeaders, 'get'); + $headers['Accept'] = 'application/activity+json, application/ld+json'; + $headers['User-Agent'] = 'PixelFedBot/1.0.0 (Pixelfed/'.config('pixelfed.version').'; +'.config('app.url').')'; - try { - $res = Http::withOptions(['allow_redirects' => false])->withHeaders($headers) - ->timeout(30) - ->connectTimeout(5) - ->retry(3, 500) - ->get($url); - } catch (RequestException $e) { - return; - } catch (ConnectionException $e) { - return; - } catch (Exception $e) { - return; - } - if(!$res->ok()) { - return; - } - return $res->body(); - } + try { + $res = Http::withOptions(['allow_redirects' => false]) + ->withHeaders($headers) + ->timeout(30) + ->connectTimeout(5) + ->retry(3, 500) + ->get($url); + } catch (RequestException $e) { + return; + } catch (ConnectionException $e) { + return; + } catch (Exception $e) { + return; + } + + if(!$res->ok()) { + return; + } + + if(!$res->hasHeader('Content-Type')) { + return; + } + + $acceptedTypes = [ + 'application/activity+json; charset=utf-8', + 'application/activity+json', + 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"' + ]; + + $contentType = $res->getHeader('Content-Type')[0]; + + if(!$contentType) { + return; + } + + if(!in_array($contentType, $acceptedTypes)) { + return; + } + + return $res->body(); + } } diff --git a/app/Services/ConfigCacheService.php b/app/Services/ConfigCacheService.php index 9da5c8adc..65d9a8337 100644 --- a/app/Services/ConfigCacheService.php +++ b/app/Services/ConfigCacheService.php @@ -72,6 +72,8 @@ class ConfigCacheService 'instance.banner.blurhash', 'autospam.nlp.enabled', + + 'instance.curated_registration.enabled', // 'system.user_mode' ]; diff --git a/app/Services/FetchCacheService.php b/app/Services/FetchCacheService.php new file mode 100644 index 000000000..2e23fb009 --- /dev/null +++ b/app/Services/FetchCacheService.php @@ -0,0 +1,79 @@ + '(Pixelfed/'.config('pixelfed.version').'; +'.config('app.url').')', + ]; + + if ($allowRedirects) { + $options = [ + 'allow_redirects' => [ + 'max' => 2, + 'strict' => true, + ], + ]; + } else { + $options = [ + 'allow_redirects' => false, + ]; + } + try { + $res = Http::withOptions($options) + ->retry(3, function (int $attempt, $exception) { + return $attempt * 500; + }) + ->acceptJson() + ->withHeaders($headers) + ->timeout(40) + ->get($url); + } catch (RequestException $e) { + Cache::put($key, 1, $ttl); + + return false; + } catch (ConnectionException $e) { + Cache::put($key, 1, $ttl); + + return false; + } catch (Exception $e) { + Cache::put($key, 1, $ttl); + + return false; + } + + if (! $res->ok()) { + Cache::put($key, 1, $ttl); + + return false; + } + + return $res->json(); + } +} diff --git a/app/Services/Internal/SoftwareUpdateService.php b/app/Services/Internal/SoftwareUpdateService.php new file mode 100644 index 000000000..40aaf867e --- /dev/null +++ b/app/Services/Internal/SoftwareUpdateService.php @@ -0,0 +1,68 @@ + $curVersion, + 'latest' => [ + 'version' => null, + 'published_at' => null, + 'url' => null, + ], + 'running_latest' => $hideWarning ? true : null + ]; + } + + return [ + 'current' => $curVersion, + 'latest' => [ + 'version' => $versions['latest']['version'], + 'published_at' => $versions['latest']['published_at'], + 'url' => $versions['latest']['url'], + ], + 'running_latest' => strval($versions['latest']['version']) === strval($curVersion) + ]; + } + + public static function fetchLatest() + { + try { + $res = Http::withOptions(['allow_redirects' => false]) + ->timeout(5) + ->connectTimeout(5) + ->retry(2, 500) + ->get('https://versions.pixelfed.org/versions.json'); + } catch (RequestException $e) { + return; + } catch (ConnectionException $e) { + return; + } catch (Exception $e) { + return; + } + + if(!$res->ok()) { + return; + } + + return $res->json(); + } +} diff --git a/app/Services/LandingService.php b/app/Services/LandingService.php index ba16af5b6..199768b86 100644 --- a/app/Services/LandingService.php +++ b/app/Services/LandingService.php @@ -48,13 +48,16 @@ class LandingService ->toArray() : []; }); + $openReg = (bool) config_cache('pixelfed.open_registration'); + $res = [ 'name' => config_cache('app.name'), 'url' => config_cache('app.url'), 'domain' => config('pixelfed.domain.app'), 'show_directory' => config_cache('instance.landing.show_directory'), 'show_explore_feed' => config_cache('instance.landing.show_explore'), - 'open_registration' => config_cache('pixelfed.open_registration') == 1, + 'open_registration' => (bool) $openReg, + 'curated_onboarding' => (bool) config_cache('instance.curated_registration.enabled'), 'version' => config('pixelfed.version'), 'about' => [ 'banner_image' => config_cache('app.banner_image') ?? url('/storage/headers/default.jpg'), diff --git a/app/Services/WebfingerService.php b/app/Services/WebfingerService.php index 385bff023..7340109f5 100644 --- a/app/Services/WebfingerService.php +++ b/app/Services/WebfingerService.php @@ -2,69 +2,95 @@ namespace App\Services; -use Cache; use App\Profile; +use App\Util\ActivityPub\Helpers; use App\Util\Webfinger\WebfingerUrl; use Illuminate\Support\Facades\Http; -use App\Util\ActivityPub\Helpers; -use App\Services\AccountService; class WebfingerService { - public static function lookup($query, $mastodonMode = false) - { - return (new self)->run($query, $mastodonMode); - } + public static function rawGet($url) + { + $n = WebfingerUrl::get($url); + if (! $n) { + return false; + } + $webfinger = FetchCacheService::getJson($n); + if (! $webfinger) { + return false; + } - protected function run($query, $mastodonMode) - { - if($profile = Profile::whereUsername($query)->first()) { - return $mastodonMode ? - AccountService::getMastodon($profile->id, true) : - AccountService::get($profile->id); - } - $url = WebfingerUrl::generateWebfingerUrl($query); - if(!Helpers::validateUrl($url)) { - return []; - } + if (! isset($webfinger['links']) || ! is_array($webfinger['links']) || empty($webfinger['links'])) { + return false; + } + $link = collect($webfinger['links']) + ->filter(function ($link) { + return $link && + isset($link['rel'], $link['type'], $link['href']) && + $link['rel'] === 'self' && + in_array($link['type'], ['application/activity+json', 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"']); + }) + ->pluck('href') + ->first(); - try { - $res = Http::retry(3, 100) - ->acceptJson() - ->withHeaders([ - 'User-Agent' => '(Pixelfed/' . config('pixelfed.version') . '; +' . config('app.url') . ')' - ]) - ->timeout(20) - ->get($url); - } catch (\Illuminate\Http\Client\ConnectionException $e) { - return []; - } + return $link; + } - if(!$res->successful()) { - return []; - } + public static function lookup($query, $mastodonMode = false) + { + return (new self)->run($query, $mastodonMode); + } - $webfinger = $res->json(); - if(!isset($webfinger['links']) || !is_array($webfinger['links']) || empty($webfinger['links'])) { - return []; - } + protected function run($query, $mastodonMode) + { + if ($profile = Profile::whereUsername($query)->first()) { + return $mastodonMode ? + AccountService::getMastodon($profile->id, true) : + AccountService::get($profile->id); + } + $url = WebfingerUrl::generateWebfingerUrl($query); + if (! Helpers::validateUrl($url)) { + return []; + } - $link = collect($webfinger['links']) - ->filter(function($link) { - return $link && - isset($link['rel'], $link['type'], $link['href']) && - $link['rel'] === 'self' && - in_array($link['type'], ['application/activity+json','application/ld+json; profile="https://www.w3.org/ns/activitystreams"']); - }) - ->pluck('href') - ->first(); + try { + $res = Http::retry(3, 100) + ->acceptJson() + ->withHeaders([ + 'User-Agent' => '(Pixelfed/'.config('pixelfed.version').'; +'.config('app.url').')', + ]) + ->timeout(20) + ->get($url); + } catch (\Illuminate\Http\Client\ConnectionException $e) { + return []; + } - $profile = Helpers::profileFetch($link); - if(!$profile) { - return; - } - return $mastodonMode ? - AccountService::getMastodon($profile->id, true) : - AccountService::get($profile->id); - } + if (! $res->successful()) { + return []; + } + + $webfinger = $res->json(); + if (! isset($webfinger['links']) || ! is_array($webfinger['links']) || empty($webfinger['links'])) { + return []; + } + + $link = collect($webfinger['links']) + ->filter(function ($link) { + return $link && + isset($link['rel'], $link['type'], $link['href']) && + $link['rel'] === 'self' && + in_array($link['type'], ['application/activity+json', 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"']); + }) + ->pluck('href') + ->first(); + + $profile = Helpers::profileFetch($link); + if (! $profile) { + return; + } + + return $mastodonMode ? + AccountService::getMastodon($profile->id, true) : + AccountService::get($profile->id); + } } diff --git a/app/Transformer/Api/AccountTransformer.php b/app/Transformer/Api/AccountTransformer.php index 6c6fa17e4..9411d5a18 100644 --- a/app/Transformer/Api/AccountTransformer.php +++ b/app/Transformer/Api/AccountTransformer.php @@ -2,12 +2,13 @@ namespace App\Transformer\Api; -use Auth; -use Cache; use App\Profile; -use App\User; -use League\Fractal; +use App\Services\AccountService; use App\Services\PronounService; +use App\User; +use App\UserSetting; +use Cache; +use League\Fractal; class AccountTransformer extends Fractal\TransformerAbstract { @@ -15,47 +16,77 @@ class AccountTransformer extends Fractal\TransformerAbstract // 'relationship', ]; - public function transform(Profile $profile) - { - if(!$profile) { - return []; - } + public function transform(Profile $profile) + { + if (! $profile) { + return []; + } - $adminIds = Cache::remember('pf:admin-ids', 604800, function() { - return User::whereIsAdmin(true)->pluck('profile_id')->toArray(); - }); + $adminIds = Cache::remember('pf:admin-ids', 604800, function () { + return User::whereIsAdmin(true)->pluck('profile_id')->toArray(); + }); - $local = $profile->private_key != null; - $is_admin = !$local ? false : in_array($profile->id, $adminIds); - $acct = $local ? $profile->username : substr($profile->username, 1); - $username = $local ? $profile->username : explode('@', $acct)[0]; - return [ - 'id' => (string) $profile->id, - 'username' => $username, - 'acct' => $acct, - 'display_name' => $profile->name, - 'discoverable' => true, - 'locked' => (bool) $profile->is_private, - 'followers_count' => (int) $profile->followers_count, - 'following_count' => (int) $profile->following_count, - 'statuses_count' => (int) $profile->status_count, - 'note' => $profile->bio ?? '', - 'note_text' => $profile->bio ? strip_tags($profile->bio) : null, - 'url' => $profile->url(), - 'avatar' => $profile->avatarUrl(), - 'website' => $profile->website, - 'local' => (bool) $local, - 'is_admin' => (bool) $is_admin, - 'created_at' => $profile->created_at->toJSON(), - 'header_bg' => $profile->header_bg, - 'last_fetched_at' => optional($profile->last_fetched_at)->toJSON(), - 'pronouns' => PronounService::get($profile->id), - 'location' => $profile->location - ]; - } + $local = $profile->private_key != null; + $local = $profile->user_id && $profile->private_key != null; + $hideFollowing = false; + $hideFollowers = false; + if ($local) { + $hideFollowing = Cache::remember('pf:acct-trans:hideFollowing:'.$profile->id, 2592000, function () use ($profile) { + $settings = UserSetting::whereUserId($profile->user_id)->first(); + if (! $settings) { + return false; + } - protected function includeRelationship(Profile $profile) - { - return $this->item($profile, new RelationshipTransformer()); - } + return $settings->show_profile_following_count == false; + }); + $hideFollowers = Cache::remember('pf:acct-trans:hideFollowers:'.$profile->id, 2592000, function () use ($profile) { + $settings = UserSetting::whereUserId($profile->user_id)->first(); + if (! $settings) { + return false; + } + + return $settings->show_profile_follower_count == false; + }); + } + $is_admin = ! $local ? false : in_array($profile->id, $adminIds); + $acct = $local ? $profile->username : substr($profile->username, 1); + $username = $local ? $profile->username : explode('@', $acct)[0]; + $res = [ + 'id' => (string) $profile->id, + 'username' => $username, + 'acct' => $acct, + 'display_name' => $profile->name, + 'discoverable' => true, + 'locked' => (bool) $profile->is_private, + 'followers_count' => $hideFollowers ? 0 : (int) $profile->followers_count, + 'following_count' => $hideFollowing ? 0 : (int) $profile->following_count, + 'statuses_count' => (int) $profile->status_count, + 'note' => $profile->bio ?? '', + 'note_text' => $profile->bio ? strip_tags($profile->bio) : null, + 'url' => $profile->url(), + 'avatar' => $profile->avatarUrl(), + 'website' => $profile->website, + 'local' => (bool) $local, + 'is_admin' => (bool) $is_admin, + 'created_at' => $profile->created_at->toJSON(), + 'header_bg' => $profile->header_bg, + 'last_fetched_at' => optional($profile->last_fetched_at)->toJSON(), + 'pronouns' => PronounService::get($profile->id), + 'location' => $profile->location, + ]; + + if ($profile->moved_to_profile_id) { + $mt = AccountService::getMastodon($profile->moved_to_profile_id, true); + if ($mt) { + $res['moved'] = $mt; + } + } + + return $res; + } + + protected function includeRelationship(Profile $profile) + { + return $this->item($profile, new RelationshipTransformer()); + } } diff --git a/app/Util/ActivityPub/Helpers.php b/app/Util/ActivityPub/Helpers.php index 5819dc0bc..bcf4f359c 100644 --- a/app/Util/ActivityPub/Helpers.php +++ b/app/Util/ActivityPub/Helpers.php @@ -315,6 +315,23 @@ class Helpers { return; } + if(config('autospam.live_filters.enabled')) { + $filters = config('autospam.live_filters.filters'); + if(!empty($filters) && isset($res['content']) && !empty($res['content']) && strlen($filters) > 3) { + $filters = array_map('trim', explode(',', $filters)); + $content = $res['content']; + foreach($filters as $filter) { + $filter = trim(strtolower($filter)); + if(!$filter || !strlen($filter)) { + continue; + } + if(str_contains(strtolower($content), $filter)) { + return; + } + } + } + } + if(isset($res['object'])) { $activity = $res; } else { @@ -372,6 +389,10 @@ class Helpers { $idDomain = parse_url($id, PHP_URL_HOST); $urlDomain = parse_url($url, PHP_URL_HOST); + if($idDomain && $urlDomain && strtolower($idDomain) !== strtolower($urlDomain)) { + return; + } + if(!self::validateUrl($id)) { return; } @@ -455,14 +476,21 @@ class Helpers { public static function storeStatus($url, $profile, $activity) { + $originalUrl = $url; $id = isset($activity['id']) ? self::pluckval($activity['id']) : self::pluckval($activity['url']); $url = isset($activity['url']) && is_string($activity['url']) ? self::pluckval($activity['url']) : self::pluckval($id); $idDomain = parse_url($id, PHP_URL_HOST); $urlDomain = parse_url($url, PHP_URL_HOST); + $originalUrlDomain = parse_url($originalUrl, PHP_URL_HOST); if(!self::validateUrl($id) || !self::validateUrl($url)) { return; } + if( strtolower($originalUrlDomain) !== strtolower($idDomain) || + strtolower($originalUrlDomain) !== strtolower($urlDomain) ) { + return; + } + $reply_to = self::getReplyTo($activity); $ts = self::pluckval($activity['published']); @@ -763,7 +791,11 @@ class Helpers { if(!$res || isset($res['id']) == false) { return; } + $urlDomain = parse_url($url, PHP_URL_HOST); $domain = parse_url($res['id'], PHP_URL_HOST); + if(strtolower($urlDomain) !== strtolower($domain)) { + return; + } if(!isset($res['preferredUsername']) && !isset($res['nickname'])) { return; } @@ -831,6 +863,9 @@ class Helpers { public static function sendSignedObject($profile, $url, $body) { + if(app()->environment() !== 'production') { + return; + } ActivityPubDeliveryService::queue() ->from($profile) ->to($url) diff --git a/app/Util/ActivityPub/Inbox.php b/app/Util/ActivityPub/Inbox.php index 5c9959e17..4ab87f40b 100644 --- a/app/Util/ActivityPub/Inbox.php +++ b/app/Util/ActivityPub/Inbox.php @@ -197,6 +197,22 @@ class Inbox public function handleCreateActivity() { $activity = $this->payload['object']; + if(config('autospam.live_filters.enabled')) { + $filters = config('autospam.live_filters.filters'); + if(!empty($filters) && isset($activity['content']) && !empty($activity['content']) && strlen($filters) > 3) { + $filters = array_map('trim', explode(',', $filters)); + $content = $activity['content']; + foreach($filters as $filter) { + $filter = trim(strtolower($filter)); + if(!$filter || !strlen($filter)) { + continue; + } + if(str_contains(strtolower($content), $filter)) { + return; + } + } + } + } $actor = $this->actorFirstOrCreate($this->payload['actor']); if(!$actor || $actor->domain == null) { return; @@ -407,7 +423,7 @@ class Inbox $status->uri = $activity['id']; $status->object_url = $activity['id']; $status->in_reply_to_profile_id = $profile->id; - $status->saveQuietly(); + $status->save(); $dm = new DirectMessage; $dm->to_id = $profile->id; @@ -1227,7 +1243,14 @@ class Inbox return; } - $content = isset($this->payload['content']) ? Purify::clean($this->payload['content']) : null; + $content = null; + if(isset($this->payload['content'])) { + if(strlen($this->payload['content']) > 5000) { + $content = Purify::clean(substr($this->payload['content'], 0, 5000) . ' ... (truncated message due to exceeding max length)'); + } else { + $content = Purify::clean($this->payload['content']); + } + } $object = $this->payload['object']; if(empty($object) || (!is_array($object) && !is_string($object))) { @@ -1243,7 +1266,7 @@ class Inbox foreach($object as $objectUrl) { if(!Helpers::validateLocalUrl($objectUrl)) { - continue; + return; } if(str_contains($objectUrl, '/users/')) { @@ -1260,10 +1283,27 @@ class Inbox } } - if(!$accountId || !$objects->count()) { + if(!$accountId && !$objects->count()) { return; } + if($objects->count()) { + $obc = $objects->count(); + if($obc > 25) { + if($obc > 30) { + return; + } else { + $objLimit = $objects->take(20); + $objects = collect($objLimit->all()); + $obc = $objects->count(); + } + } + $count = Status::whereProfileId($accountId)->find($objects)->count(); + if($obc !== $count) { + return; + } + } + $instanceHost = parse_url($id, PHP_URL_HOST); $instance = Instance::updateOrCreate([ diff --git a/app/Util/Webfinger/WebfingerUrl.php b/app/Util/Webfinger/WebfingerUrl.php index 091d7ce14..b51d536d9 100644 --- a/app/Util/Webfinger/WebfingerUrl.php +++ b/app/Util/Webfinger/WebfingerUrl.php @@ -3,16 +3,28 @@ namespace App\Util\Webfinger; use App\Util\Lexer\Nickname; +use App\Services\InstanceService; class WebfingerUrl { + public static function get($url) + { + $n = Nickname::normalizeProfileUrl($url); + if(!$n || !isset($n['domain'], $n['username'])) { + return false; + } + if(in_array($n['domain'], InstanceService::getBannedDomains())) { + return false; + } + return 'https://' . $n['domain'] . '/.well-known/webfinger?resource=acct:' . $n['username'] . '@' . $n['domain']; + } + public static function generateWebfingerUrl($url) { $url = Nickname::normalizeProfileUrl($url); $domain = $url['domain']; $username = $url['username']; $path = "https://{$domain}/.well-known/webfinger?resource=acct:{$username}@{$domain}"; - return $path; } } diff --git a/composer.json b/composer.json index de5fb86c2..62c52cd33 100644 --- a/composer.json +++ b/composer.json @@ -5,7 +5,7 @@ "license": "AGPL-3.0-only", "type": "project", "require": { - "php": "^8.1|^8.2", + "php": "^8.1|^8.2|^8.3", "ext-bcmath": "*", "ext-ctype": "*", "ext-curl": "*", diff --git a/composer.lock b/composer.lock index 249abd751..0486bd88f 100644 --- a/composer.lock +++ b/composer.lock @@ -62,16 +62,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.293.2", + "version": "3.299.1", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "1d3e952ea2f45bb0d42d7f873d1b4957bb6362c4" + "reference": "a0f87b8e8bfb9afd0ffd702fcda556b465eee457" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/1d3e952ea2f45bb0d42d7f873d1b4957bb6362c4", - "reference": "1d3e952ea2f45bb0d42d7f873d1b4957bb6362c4", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/a0f87b8e8bfb9afd0ffd702fcda556b465eee457", + "reference": "a0f87b8e8bfb9afd0ffd702fcda556b465eee457", "shasum": "" }, "require": { @@ -151,9 +151,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.293.2" + "source": "https://github.com/aws/aws-sdk-php/tree/3.299.1" }, - "time": "2023-12-01T19:06:15+00:00" + "time": "2024-02-16T19:08:34+00:00" }, { "name": "bacon/bacon-qr-code", @@ -426,16 +426,16 @@ }, { "name": "carbonphp/carbon-doctrine-types", - "version": "2.0.0", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/CarbonPHP/carbon-doctrine-types.git", - "reference": "67a77972b9f398ae7068dabacc39c08aeee170d5" + "reference": "99f76ffa36cce3b70a4a6abce41dba15ca2e84cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/67a77972b9f398ae7068dabacc39c08aeee170d5", - "reference": "67a77972b9f398ae7068dabacc39c08aeee170d5", + "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/99f76ffa36cce3b70a4a6abce41dba15ca2e84cb", + "reference": "99f76ffa36cce3b70a4a6abce41dba15ca2e84cb", "shasum": "" }, "require": { @@ -475,7 +475,7 @@ ], "support": { "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues", - "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/2.0.0" + "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/2.1.0" }, "funding": [ { @@ -491,7 +491,7 @@ "type": "tidelift" } ], - "time": "2023-10-01T14:29:01+00:00" + "time": "2023-12-11T17:09:12+00:00" }, { "name": "cboden/ratchet", @@ -843,16 +843,16 @@ }, { "name": "doctrine/dbal", - "version": "3.7.2", + "version": "3.8.2", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "0ac3c270590e54910715e9a1a044cc368df282b2" + "reference": "a19a1d05ca211f41089dffcc387733a6875196cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/0ac3c270590e54910715e9a1a044cc368df282b2", - "reference": "0ac3c270590e54910715e9a1a044cc368df282b2", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/a19a1d05ca211f41089dffcc387733a6875196cb", + "reference": "a19a1d05ca211f41089dffcc387733a6875196cb", "shasum": "" }, "require": { @@ -868,14 +868,14 @@ "doctrine/coding-standard": "12.0.0", "fig/log-test": "^1", "jetbrains/phpstorm-stubs": "2023.1", - "phpstan/phpstan": "1.10.42", + "phpstan/phpstan": "1.10.57", "phpstan/phpstan-strict-rules": "^1.5", - "phpunit/phpunit": "9.6.13", + "phpunit/phpunit": "9.6.16", "psalm/plugin-phpunit": "0.18.4", "slevomat/coding-standard": "8.13.1", - "squizlabs/php_codesniffer": "3.7.2", - "symfony/cache": "^5.4|^6.0", - "symfony/console": "^4.4|^5.4|^6.0", + "squizlabs/php_codesniffer": "3.8.1", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/console": "^4.4|^5.4|^6.0|^7.0", "vimeo/psalm": "4.30.0" }, "suggest": { @@ -936,7 +936,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.7.2" + "source": "https://github.com/doctrine/dbal/tree/3.8.2" }, "funding": [ { @@ -952,20 +952,20 @@ "type": "tidelift" } ], - "time": "2023-11-19T08:06:58+00:00" + "time": "2024-02-12T18:36:36+00:00" }, { "name": "doctrine/deprecations", - "version": "1.1.2", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931" + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/4f2d4f2836e7ec4e7a8625e75c6aa916004db931", - "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", "shasum": "" }, "require": { @@ -997,9 +997,9 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/1.1.2" + "source": "https://github.com/doctrine/deprecations/tree/1.1.3" }, - "time": "2023-09-27T20:04:15+00:00" + "time": "2024-01-30T19:34:25+00:00" }, { "name": "doctrine/event-manager", @@ -1094,16 +1094,16 @@ }, { "name": "doctrine/inflector", - "version": "2.0.8", + "version": "2.0.10", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff" + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/f9301a5b2fb1216b2b08f02ba04dc45423db6bff", - "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc", + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc", "shasum": "" }, "require": { @@ -1165,7 +1165,7 @@ ], "support": { "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/2.0.8" + "source": "https://github.com/doctrine/inflector/tree/2.0.10" }, "funding": [ { @@ -1181,31 +1181,31 @@ "type": "tidelift" } ], - "time": "2023-06-16T13:40:37+00:00" + "time": "2024-02-18T20:23:39+00:00" }, { "name": "doctrine/lexer", - "version": "3.0.0", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "84a527db05647743d50373e0ec53a152f2cde568" + "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/84a527db05647743d50373e0ec53a152f2cde568", - "reference": "84a527db05647743d50373e0ec53a152f2cde568", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", + "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", "shasum": "" }, "require": { "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^10", - "phpstan/phpstan": "^1.9", - "phpunit/phpunit": "^9.5", + "doctrine/coding-standard": "^12", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^10.5", "psalm/plugin-phpunit": "^0.18.3", - "vimeo/psalm": "^5.0" + "vimeo/psalm": "^5.21" }, "type": "library", "autoload": { @@ -1242,7 +1242,7 @@ ], "support": { "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/3.0.0" + "source": "https://github.com/doctrine/lexer/tree/3.0.1" }, "funding": [ { @@ -1258,7 +1258,7 @@ "type": "tidelift" } ], - "time": "2022-12-15T16:57:16+00:00" + "time": "2024-02-05T11:56:58+00:00" }, { "name": "dragonmantank/cron-expression", @@ -2567,20 +2567,20 @@ }, { "name": "laravel/framework", - "version": "v10.34.2", + "version": "v10.44.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "c581caa233e380610b34cc491490bfa147a3b62b" + "reference": "1199dbe361787bbe9648131a79f53921b4148cf6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/c581caa233e380610b34cc491490bfa147a3b62b", - "reference": "c581caa233e380610b34cc491490bfa147a3b62b", + "url": "https://api.github.com/repos/laravel/framework/zipball/1199dbe361787bbe9648131a79f53921b4148cf6", + "reference": "1199dbe361787bbe9648131a79f53921b4148cf6", "shasum": "" }, "require": { - "brick/math": "^0.9.3|^0.10.2|^0.11", + "brick/math": "^0.9.3|^0.10.2|^0.11|^0.12", "composer-runtime-api": "^2.2", "doctrine/inflector": "^2.0.5", "dragonmantank/cron-expression": "^3.3.2", @@ -2609,7 +2609,7 @@ "symfony/console": "^6.2", "symfony/error-handler": "^6.2", "symfony/finder": "^6.2", - "symfony/http-foundation": "^6.3", + "symfony/http-foundation": "^6.4", "symfony/http-kernel": "^6.2", "symfony/mailer": "^6.2", "symfony/mime": "^6.2", @@ -2622,6 +2622,9 @@ "voku/portable-ascii": "^2.0" }, "conflict": { + "carbonphp/carbon-doctrine-types": ">=3.0", + "doctrine/dbal": ">=4.0", + "phpunit/phpunit": ">=11.0.0", "tightenco/collect": "<5.5.33" }, "provide": { @@ -2677,7 +2680,7 @@ "league/flysystem-sftp-v3": "^3.0", "mockery/mockery": "^1.5.1", "nyholm/psr7": "^1.2", - "orchestra/testbench-core": "^8.15.1", + "orchestra/testbench-core": "^8.18", "pda/pheanstalk": "^4.0", "phpstan/phpstan": "^1.4.7", "phpunit/phpunit": "^10.0.7", @@ -2733,6 +2736,7 @@ "files": [ "src/Illuminate/Collections/helpers.php", "src/Illuminate/Events/functions.php", + "src/Illuminate/Filesystem/functions.php", "src/Illuminate/Foundation/helpers.php", "src/Illuminate/Support/helpers.php" ], @@ -2765,28 +2769,29 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2023-11-28T19:06:27+00:00" + "time": "2024-02-13T16:01:16+00:00" }, { "name": "laravel/helpers", - "version": "v1.6.0", + "version": "v1.7.0", "source": { "type": "git", "url": "https://github.com/laravel/helpers.git", - "reference": "4dd0f9436d3911611622a6ced8329a1710576f60" + "reference": "6caaa242a23bc39b4e3cf57304b5409260a7a346" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/helpers/zipball/4dd0f9436d3911611622a6ced8329a1710576f60", - "reference": "4dd0f9436d3911611622a6ced8329a1710576f60", + "url": "https://api.github.com/repos/laravel/helpers/zipball/6caaa242a23bc39b4e3cf57304b5409260a7a346", + "reference": "6caaa242a23bc39b4e3cf57304b5409260a7a346", "shasum": "" }, "require": { - "illuminate/support": "~5.8.0|^6.0|^7.0|^8.0|^9.0|^10.0", - "php": "^7.1.3|^8.0" + "illuminate/support": "~5.8.0|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", + "php": "^7.2.0|^8.0" }, "require-dev": { - "phpunit/phpunit": "^7.0|^8.0|^9.0" + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^7.0|^8.0|^9.0|^10.0" }, "type": "library", "extra": { @@ -2819,42 +2824,42 @@ "laravel" ], "support": { - "source": "https://github.com/laravel/helpers/tree/v1.6.0" + "source": "https://github.com/laravel/helpers/tree/v1.7.0" }, - "time": "2023-01-09T14:48:11+00:00" + "time": "2023-11-30T14:09:05+00:00" }, { "name": "laravel/horizon", - "version": "v5.21.4", + "version": "v5.23.0", "source": { "type": "git", "url": "https://github.com/laravel/horizon.git", - "reference": "bdf58c84b592b83f62262cc6ca98b0debbbc308b" + "reference": "0b1bf46b21c397fdbe80b1ab54451fd227934508" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/horizon/zipball/bdf58c84b592b83f62262cc6ca98b0debbbc308b", - "reference": "bdf58c84b592b83f62262cc6ca98b0debbbc308b", + "url": "https://api.github.com/repos/laravel/horizon/zipball/0b1bf46b21c397fdbe80b1ab54451fd227934508", + "reference": "0b1bf46b21c397fdbe80b1ab54451fd227934508", "shasum": "" }, "require": { "ext-json": "*", "ext-pcntl": "*", "ext-posix": "*", - "illuminate/contracts": "^8.17|^9.0|^10.0", - "illuminate/queue": "^8.17|^9.0|^10.0", - "illuminate/support": "^8.17|^9.0|^10.0", - "nesbot/carbon": "^2.17", - "php": "^7.3|^8.0", + "illuminate/contracts": "^9.21|^10.0|^11.0", + "illuminate/queue": "^9.21|^10.0|^11.0", + "illuminate/support": "^9.21|^10.0|^11.0", + "nesbot/carbon": "^2.17|^3.0", + "php": "^8.0", "ramsey/uuid": "^4.0", - "symfony/error-handler": "^5.0|^6.0", - "symfony/process": "^5.0|^6.0" + "symfony/error-handler": "^6.0|^7.0", + "symfony/process": "^6.0|^7.0" }, "require-dev": { "mockery/mockery": "^1.0", - "orchestra/testbench": "^6.0|^7.0|^8.0", + "orchestra/testbench": "^7.0|^8.0|^9.0", "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^9.0", + "phpunit/phpunit": "^9.0|^10.4", "predis/predis": "^1.1|^2.0" }, "suggest": { @@ -2897,22 +2902,22 @@ ], "support": { "issues": "https://github.com/laravel/horizon/issues", - "source": "https://github.com/laravel/horizon/tree/v5.21.4" + "source": "https://github.com/laravel/horizon/tree/v5.23.0" }, - "time": "2023-11-23T15:47:58+00:00" + "time": "2024-02-12T18:36:34+00:00" }, { "name": "laravel/passport", - "version": "v11.10.0", + "version": "v11.10.5", "source": { "type": "git", "url": "https://github.com/laravel/passport.git", - "reference": "966bc8e477d08c86a11dc4c5a86f85fa0abdb89b" + "reference": "4d81207941d6efc198857847d9e4c17520f28d75" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/passport/zipball/966bc8e477d08c86a11dc4c5a86f85fa0abdb89b", - "reference": "966bc8e477d08c86a11dc4c5a86f85fa0abdb89b", + "url": "https://api.github.com/repos/laravel/passport/zipball/4d81207941d6efc198857847d9e4c17520f28d75", + "reference": "4d81207941d6efc198857847d9e4c17520f28d75", "shasum": "" }, "require": { @@ -2977,20 +2982,20 @@ "issues": "https://github.com/laravel/passport/issues", "source": "https://github.com/laravel/passport" }, - "time": "2023-11-02T17:16:12+00:00" + "time": "2024-02-09T16:27:49+00:00" }, { "name": "laravel/prompts", - "version": "v0.1.13", + "version": "v0.1.15", "source": { "type": "git", "url": "https://github.com/laravel/prompts.git", - "reference": "e1379d8ead15edd6cc4369c22274345982edc95a" + "reference": "d814a27514d99b03c85aa42b22cfd946568636c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/prompts/zipball/e1379d8ead15edd6cc4369c22274345982edc95a", - "reference": "e1379d8ead15edd6cc4369c22274345982edc95a", + "url": "https://api.github.com/repos/laravel/prompts/zipball/d814a27514d99b03c85aa42b22cfd946568636c1", + "reference": "d814a27514d99b03c85aa42b22cfd946568636c1", "shasum": "" }, "require": { @@ -3006,7 +3011,7 @@ "require-dev": { "mockery/mockery": "^1.5", "pestphp/pest": "^2.3", - "phpstan/phpstan": "^1.10", + "phpstan/phpstan": "^1.11", "phpstan/phpstan-mockery": "^1.1" }, "suggest": { @@ -3032,9 +3037,9 @@ ], "support": { "issues": "https://github.com/laravel/prompts/issues", - "source": "https://github.com/laravel/prompts/tree/v0.1.13" + "source": "https://github.com/laravel/prompts/tree/v0.1.15" }, - "time": "2023-10-27T13:53:59+00:00" + "time": "2023-12-29T22:37:42+00:00" }, { "name": "laravel/serializable-closure", @@ -3098,25 +3103,25 @@ }, { "name": "laravel/tinker", - "version": "v2.8.2", + "version": "v2.9.0", "source": { "type": "git", "url": "https://github.com/laravel/tinker.git", - "reference": "b936d415b252b499e8c3b1f795cd4fc20f57e1f3" + "reference": "502e0fe3f0415d06d5db1f83a472f0f3b754bafe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/b936d415b252b499e8c3b1f795cd4fc20f57e1f3", - "reference": "b936d415b252b499e8c3b1f795cd4fc20f57e1f3", + "url": "https://api.github.com/repos/laravel/tinker/zipball/502e0fe3f0415d06d5db1f83a472f0f3b754bafe", + "reference": "502e0fe3f0415d06d5db1f83a472f0f3b754bafe", "shasum": "" }, "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0|^10.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0", + "illuminate/console": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", + "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", "php": "^7.2.5|^8.0", - "psy/psysh": "^0.10.4|^0.11.1", - "symfony/var-dumper": "^4.3.4|^5.0|^6.0" + "psy/psysh": "^0.11.1|^0.12.0", + "symfony/var-dumper": "^4.3.4|^5.0|^6.0|^7.0" }, "require-dev": { "mockery/mockery": "~1.3.3|^1.4.2", @@ -3124,13 +3129,10 @@ "phpunit/phpunit": "^8.5.8|^9.3.3" }, "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0|^10.0)." + "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0|^10.0|^11.0)." }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - }, "laravel": { "providers": [ "Laravel\\Tinker\\TinkerServiceProvider" @@ -3161,34 +3163,34 @@ ], "support": { "issues": "https://github.com/laravel/tinker/issues", - "source": "https://github.com/laravel/tinker/tree/v2.8.2" + "source": "https://github.com/laravel/tinker/tree/v2.9.0" }, - "time": "2023-08-15T14:27:00+00:00" + "time": "2024-01-04T16:10:04+00:00" }, { "name": "laravel/ui", - "version": "v4.2.3", + "version": "v4.4.0", "source": { "type": "git", "url": "https://github.com/laravel/ui.git", - "reference": "eb532ea096ca1c0298c87c19233daf011fda743a" + "reference": "7335d7049b2cde345c029e9d2de839b80af62bc0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/ui/zipball/eb532ea096ca1c0298c87c19233daf011fda743a", - "reference": "eb532ea096ca1c0298c87c19233daf011fda743a", + "url": "https://api.github.com/repos/laravel/ui/zipball/7335d7049b2cde345c029e9d2de839b80af62bc0", + "reference": "7335d7049b2cde345c029e9d2de839b80af62bc0", "shasum": "" }, "require": { - "illuminate/console": "^9.21|^10.0", - "illuminate/filesystem": "^9.21|^10.0", - "illuminate/support": "^9.21|^10.0", - "illuminate/validation": "^9.21|^10.0", + "illuminate/console": "^9.21|^10.0|^11.0", + "illuminate/filesystem": "^9.21|^10.0|^11.0", + "illuminate/support": "^9.21|^10.0|^11.0", + "illuminate/validation": "^9.21|^10.0|^11.0", "php": "^8.0" }, "require-dev": { - "orchestra/testbench": "^7.0|^8.0", - "phpunit/phpunit": "^9.3" + "orchestra/testbench": "^7.0|^8.0|^9.0", + "phpunit/phpunit": "^9.3|^10.4" }, "type": "library", "extra": { @@ -3223,9 +3225,9 @@ "ui" ], "support": { - "source": "https://github.com/laravel/ui/tree/v4.2.3" + "source": "https://github.com/laravel/ui/tree/v4.4.0" }, - "time": "2023-11-23T14:44:22+00:00" + "time": "2024-01-12T15:56:45+00:00" }, { "name": "lcobucci/clock", @@ -3366,16 +3368,16 @@ }, { "name": "league/commonmark", - "version": "2.4.1", + "version": "2.4.2", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "3669d6d5f7a47a93c08ddff335e6d945481a1dd5" + "reference": "91c24291965bd6d7c46c46a12ba7492f83b1cadf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/3669d6d5f7a47a93c08ddff335e6d945481a1dd5", - "reference": "3669d6d5f7a47a93c08ddff335e6d945481a1dd5", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/91c24291965bd6d7c46c46a12ba7492f83b1cadf", + "reference": "91c24291965bd6d7c46c46a12ba7492f83b1cadf", "shasum": "" }, "require": { @@ -3388,7 +3390,7 @@ }, "require-dev": { "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", + "commonmark/cmark": "0.30.3", "commonmark/commonmark.js": "0.30.0", "composer/package-versions-deprecated": "^1.8", "embed/embed": "^4.4", @@ -3398,10 +3400,10 @@ "michelf/php-markdown": "^1.4 || ^2.0", "nyholm/psr7": "^1.5", "phpstan/phpstan": "^1.8.2", - "phpunit/phpunit": "^9.5.21", + "phpunit/phpunit": "^9.5.21 || ^10.5.9 || ^11.0.0", "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3 | ^6.0", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", + "symfony/finder": "^5.3 | ^6.0 || ^7.0", + "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 || ^7.0", "unleashedtech/php-coding-standard": "^3.1.1", "vimeo/psalm": "^4.24.0 || ^5.0.0" }, @@ -3468,7 +3470,7 @@ "type": "tidelift" } ], - "time": "2023-08-30T16:55:00+00:00" + "time": "2024-02-02T11:59:32+00:00" }, { "name": "league/config", @@ -3608,16 +3610,16 @@ }, { "name": "league/flysystem", - "version": "3.22.0", + "version": "3.24.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "d18526ee587f265f091f47bb83f1d9a001ef6f36" + "reference": "b25a361508c407563b34fac6f64a8a17a8819675" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/d18526ee587f265f091f47bb83f1d9a001ef6f36", - "reference": "d18526ee587f265f091f47bb83f1d9a001ef6f36", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/b25a361508c407563b34fac6f64a8a17a8819675", + "reference": "b25a361508c407563b34fac6f64a8a17a8819675", "shasum": "" }, "require": { @@ -3637,7 +3639,7 @@ "require-dev": { "async-aws/s3": "^1.5 || ^2.0", "async-aws/simple-s3": "^1.1 || ^2.0", - "aws/aws-sdk-php": "^3.220.0", + "aws/aws-sdk-php": "^3.295.10", "composer/semver": "^3.0", "ext-fileinfo": "*", "ext-ftp": "*", @@ -3648,7 +3650,7 @@ "phpseclib/phpseclib": "^3.0.34", "phpstan/phpstan": "^1.10", "phpunit/phpunit": "^9.5.11|^10.0", - "sabre/dav": "^4.3.1" + "sabre/dav": "^4.6.0" }, "type": "library", "autoload": { @@ -3682,7 +3684,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/3.22.0" + "source": "https://github.com/thephpleague/flysystem/tree/3.24.0" }, "funding": [ { @@ -3694,24 +3696,24 @@ "type": "github" } ], - "time": "2023-12-03T18:35:53+00:00" + "time": "2024-02-04T12:10:17+00:00" }, { "name": "league/flysystem-aws-s3-v3", - "version": "3.22.0", + "version": "3.24.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem-aws-s3-v3.git", - "reference": "9808919ee5d819730d9582d4e1673e8d195c38d8" + "reference": "809474e37b7fb1d1f8bcc0f8a98bc1cae99aa513" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/9808919ee5d819730d9582d4e1673e8d195c38d8", - "reference": "9808919ee5d819730d9582d4e1673e8d195c38d8", + "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/809474e37b7fb1d1f8bcc0f8a98bc1cae99aa513", + "reference": "809474e37b7fb1d1f8bcc0f8a98bc1cae99aa513", "shasum": "" }, "require": { - "aws/aws-sdk-php": "^3.220.0", + "aws/aws-sdk-php": "^3.295.10", "league/flysystem": "^3.10.0", "league/mime-type-detection": "^1.0.0", "php": "^8.0.2" @@ -3747,8 +3749,7 @@ "storage" ], "support": { - "issues": "https://github.com/thephpleague/flysystem-aws-s3-v3/issues", - "source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/3.22.0" + "source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/3.24.0" }, "funding": [ { @@ -3760,20 +3761,20 @@ "type": "github" } ], - "time": "2023-11-18T14:03:37+00:00" + "time": "2024-01-26T18:43:21+00:00" }, { "name": "league/flysystem-local", - "version": "3.22.0", + "version": "3.23.1", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem-local.git", - "reference": "42dfb4eaafc4accd248180f0dd66f17073b40c4c" + "reference": "b884d2bf9b53bb4804a56d2df4902bb51e253f00" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/42dfb4eaafc4accd248180f0dd66f17073b40c4c", - "reference": "42dfb4eaafc4accd248180f0dd66f17073b40c4c", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/b884d2bf9b53bb4804a56d2df4902bb51e253f00", + "reference": "b884d2bf9b53bb4804a56d2df4902bb51e253f00", "shasum": "" }, "require": { @@ -3808,7 +3809,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem-local/issues", - "source": "https://github.com/thephpleague/flysystem-local/tree/3.22.0" + "source": "https://github.com/thephpleague/flysystem-local/tree/3.23.1" }, "funding": [ { @@ -3820,7 +3821,7 @@ "type": "github" } ], - "time": "2023-11-18T20:52:53+00:00" + "time": "2024-01-26T18:25:23+00:00" }, { "name": "league/iso3166", @@ -3882,16 +3883,16 @@ }, { "name": "league/mime-type-detection", - "version": "1.14.0", + "version": "1.15.0", "source": { "type": "git", "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "b6a5854368533df0295c5761a0253656a2e52d9e" + "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/b6a5854368533df0295c5761a0253656a2e52d9e", - "reference": "b6a5854368533df0295c5761a0253656a2e52d9e", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301", + "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301", "shasum": "" }, "require": { @@ -3922,7 +3923,7 @@ "description": "Mime-type detection for Flysystem", "support": { "issues": "https://github.com/thephpleague/mime-type-detection/issues", - "source": "https://github.com/thephpleague/mime-type-detection/tree/1.14.0" + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.15.0" }, "funding": [ { @@ -3934,7 +3935,7 @@ "type": "tidelift" } ], - "time": "2023-10-17T14:13:20+00:00" + "time": "2024-01-28T23:22:08+00:00" }, { "name": "league/oauth2-server", @@ -4496,16 +4497,16 @@ }, { "name": "nesbot/carbon", - "version": "2.72.0", + "version": "2.72.3", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "a6885fcbad2ec4360b0e200ee0da7d9b7c90786b" + "reference": "0c6fd108360c562f6e4fd1dedb8233b423e91c83" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/a6885fcbad2ec4360b0e200ee0da7d9b7c90786b", - "reference": "a6885fcbad2ec4360b0e200ee0da7d9b7c90786b", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/0c6fd108360c562f6e4fd1dedb8233b423e91c83", + "reference": "0c6fd108360c562f6e4fd1dedb8233b423e91c83", "shasum": "" }, "require": { @@ -4599,35 +4600,35 @@ "type": "tidelift" } ], - "time": "2023-11-28T10:13:25+00:00" + "time": "2024-01-25T10:35:09+00:00" }, { "name": "nette/schema", - "version": "v1.2.5", + "version": "v1.3.0", "source": { "type": "git", "url": "https://github.com/nette/schema.git", - "reference": "0462f0166e823aad657c9224d0f849ecac1ba10a" + "reference": "a6d3a6d1f545f01ef38e60f375d1cf1f4de98188" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/0462f0166e823aad657c9224d0f849ecac1ba10a", - "reference": "0462f0166e823aad657c9224d0f849ecac1ba10a", + "url": "https://api.github.com/repos/nette/schema/zipball/a6d3a6d1f545f01ef38e60f375d1cf1f4de98188", + "reference": "a6d3a6d1f545f01ef38e60f375d1cf1f4de98188", "shasum": "" }, "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": "7.1 - 8.3" + "nette/utils": "^4.0", + "php": "8.1 - 8.3" }, "require-dev": { - "nette/tester": "^2.3 || ^2.4", + "nette/tester": "^2.4", "phpstan/phpstan-nette": "^1.0", - "tracy/tracy": "^2.7" + "tracy/tracy": "^2.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2-dev" + "dev-master": "1.3-dev" } }, "autoload": { @@ -4659,22 +4660,22 @@ ], "support": { "issues": "https://github.com/nette/schema/issues", - "source": "https://github.com/nette/schema/tree/v1.2.5" + "source": "https://github.com/nette/schema/tree/v1.3.0" }, - "time": "2023-10-05T20:37:59+00:00" + "time": "2023-12-11T11:54:22+00:00" }, { "name": "nette/utils", - "version": "v4.0.3", + "version": "v4.0.4", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "a9d127dd6a203ce6d255b2e2db49759f7506e015" + "reference": "d3ad0aa3b9f934602cb3e3902ebccf10be34d218" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/a9d127dd6a203ce6d255b2e2db49759f7506e015", - "reference": "a9d127dd6a203ce6d255b2e2db49759f7506e015", + "url": "https://api.github.com/repos/nette/utils/zipball/d3ad0aa3b9f934602cb3e3902ebccf10be34d218", + "reference": "d3ad0aa3b9f934602cb3e3902ebccf10be34d218", "shasum": "" }, "require": { @@ -4745,31 +4746,33 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.0.3" + "source": "https://github.com/nette/utils/tree/v4.0.4" }, - "time": "2023-10-29T21:02:13+00:00" + "time": "2024-01-17T16:50:36+00:00" }, { "name": "nikic/php-parser", - "version": "v4.17.1", + "version": "v5.0.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d" + "reference": "4a21235f7e56e713259a6f76bf4b5ea08502b9dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", - "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4a21235f7e56e713259a6f76bf4b5ea08502b9dc", + "reference": "4a21235f7e56e713259a6f76bf4b5ea08502b9dc", "shasum": "" }, "require": { + "ext-ctype": "*", + "ext-json": "*", "ext-tokenizer": "*", - "php": ">=7.0" + "php": ">=7.4" }, "require-dev": { "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" }, "bin": [ "bin/php-parse" @@ -4777,7 +4780,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.9-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -4801,9 +4804,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.0.0" }, - "time": "2023-08-13T19:53:39+00:00" + "time": "2024-01-07T17:17:35+00:00" }, { "name": "nunomaduro/termwind", @@ -5174,32 +5177,32 @@ }, { "name": "pbmedia/laravel-ffmpeg", - "version": "8.3.0", + "version": "8.4.0", "source": { "type": "git", "url": "https://github.com/protonemedia/laravel-ffmpeg.git", - "reference": "820e7f1290918233a59d85f25bc78796dc3f57bb" + "reference": "b16fd89fab3a37727711d3abc3e89229e3c4f14d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/protonemedia/laravel-ffmpeg/zipball/820e7f1290918233a59d85f25bc78796dc3f57bb", - "reference": "820e7f1290918233a59d85f25bc78796dc3f57bb", + "url": "https://api.github.com/repos/protonemedia/laravel-ffmpeg/zipball/b16fd89fab3a37727711d3abc3e89229e3c4f14d", + "reference": "b16fd89fab3a37727711d3abc3e89229e3c4f14d", "shasum": "" }, "require": { - "illuminate/contracts": "^9.0|^10.0", - "php": "^8.1|^8.2", - "php-ffmpeg/php-ffmpeg": "^1.1", - "ramsey/collection": "^1.0|^2.0" + "illuminate/contracts": "^10.0", + "php": "^8.1|^8.2|^8.3", + "php-ffmpeg/php-ffmpeg": "^1.2", + "ramsey/collection": "^2.0" }, "require-dev": { "league/flysystem-memory": "^3.10", "mockery/mockery": "^1.4.4", "nesbot/carbon": "^2.66", - "orchestra/testbench": "^7.0|^8.0", - "phpunit/phpunit": "^9.5.10", + "orchestra/testbench": "^8.0", + "phpunit/phpunit": "^10.4", "spatie/image": "^2.2", - "spatie/phpunit-snapshot-assertions": "^4.2" + "spatie/phpunit-snapshot-assertions": "^5.0" }, "type": "library", "extra": { @@ -5240,7 +5243,7 @@ ], "support": { "issues": "https://github.com/protonemedia/laravel-ffmpeg/issues", - "source": "https://github.com/protonemedia/laravel-ffmpeg/tree/8.3.0" + "source": "https://github.com/protonemedia/laravel-ffmpeg/tree/8.4.0" }, "funding": [ { @@ -5248,29 +5251,29 @@ "type": "github" } ], - "time": "2023-02-15T10:10:46+00:00" + "time": "2024-01-02T23:13:28+00:00" }, { "name": "php-ffmpeg/php-ffmpeg", - "version": "v1.1.0", + "version": "v1.2.0", "source": { "type": "git", "url": "https://github.com/PHP-FFMpeg/PHP-FFMpeg.git", - "reference": "eace6f174ff6d206ba648483ebe59760f7f6a0e1" + "reference": "785a5ba05dd88b3b8146f85f18476b259b23917c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-FFMpeg/PHP-FFMpeg/zipball/eace6f174ff6d206ba648483ebe59760f7f6a0e1", - "reference": "eace6f174ff6d206ba648483ebe59760f7f6a0e1", + "url": "https://api.github.com/repos/PHP-FFMpeg/PHP-FFMpeg/zipball/785a5ba05dd88b3b8146f85f18476b259b23917c", + "reference": "785a5ba05dd88b3b8146f85f18476b259b23917c", "shasum": "" }, "require": { "evenement/evenement": "^3.0", - "php": "^8.0 || ^8.1 || ^8.2", + "php": "^8.0 || ^8.1 || ^8.2 || ^8.3", "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" + "symfony/cache": "^5.4 || ^6.0 || ^7.0", + "symfony/process": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { "mockery/mockery": "^1.5", @@ -5335,9 +5338,9 @@ ], "support": { "issues": "https://github.com/PHP-FFMpeg/PHP-FFMpeg/issues", - "source": "https://github.com/PHP-FFMpeg/PHP-FFMpeg/tree/v1.1.0" + "source": "https://github.com/PHP-FFMpeg/PHP-FFMpeg/tree/v1.2.0" }, - "time": "2022-12-09T13:57:05+00:00" + "time": "2024-01-02T10:37:01+00:00" }, { "name": "phpoption/phpoption", @@ -5416,16 +5419,16 @@ }, { "name": "phpseclib/phpseclib", - "version": "2.0.45", + "version": "2.0.46", "source": { "type": "git", "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "28d8f438a0064c9de80857e3270d071495544640" + "reference": "498e67a0c82bd5791fda9b0dd0f4ec8e8aebb02d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/28d8f438a0064c9de80857e3270d071495544640", - "reference": "28d8f438a0064c9de80857e3270d071495544640", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/498e67a0c82bd5791fda9b0dd0f4ec8e8aebb02d", + "reference": "498e67a0c82bd5791fda9b0dd0f4ec8e8aebb02d", "shasum": "" }, "require": { @@ -5506,7 +5509,7 @@ ], "support": { "issues": "https://github.com/phpseclib/phpseclib/issues", - "source": "https://github.com/phpseclib/phpseclib/tree/2.0.45" + "source": "https://github.com/phpseclib/phpseclib/tree/2.0.46" }, "funding": [ { @@ -5522,7 +5525,7 @@ "type": "tidelift" } ], - "time": "2023-09-15T20:55:47+00:00" + "time": "2023-12-29T01:52:43+00:00" }, { "name": "pixelfed/fractal", @@ -6275,25 +6278,25 @@ }, { "name": "psy/psysh", - "version": "v0.11.22", + "version": "v0.12.0", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "128fa1b608be651999ed9789c95e6e2a31b5802b" + "reference": "750bf031a48fd07c673dbe3f11f72362ea306d0d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/128fa1b608be651999ed9789c95e6e2a31b5802b", - "reference": "128fa1b608be651999ed9789c95e6e2a31b5802b", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/750bf031a48fd07c673dbe3f11f72362ea306d0d", + "reference": "750bf031a48fd07c673dbe3f11f72362ea306d0d", "shasum": "" }, "require": { "ext-json": "*", "ext-tokenizer": "*", - "nikic/php-parser": "^4.0 || ^3.1", - "php": "^8.0 || ^7.0.8", - "symfony/console": "^6.0 || ^5.0 || ^4.0 || ^3.4", - "symfony/var-dumper": "^6.0 || ^5.0 || ^4.0 || ^3.4" + "nikic/php-parser": "^5.0 || ^4.0", + "php": "^8.0 || ^7.4", + "symfony/console": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4", + "symfony/var-dumper": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4" }, "conflict": { "symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4" @@ -6304,8 +6307,7 @@ "suggest": { "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", "ext-pdo-sqlite": "The doc command requires SQLite to work.", - "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.", - "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history." + "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well." }, "bin": [ "bin/psysh" @@ -6313,7 +6315,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-0.11": "0.11.x-dev" + "dev-main": "0.12.x-dev" }, "bamarni-bin": { "bin-links": false, @@ -6349,22 +6351,22 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.11.22" + "source": "https://github.com/bobthecow/psysh/tree/v0.12.0" }, - "time": "2023-10-14T21:56:36+00:00" + "time": "2023-12-20T15:28:09+00:00" }, { "name": "pusher/pusher-php-server", - "version": "7.2.3", + "version": "7.2.4", "source": { "type": "git", "url": "https://github.com/pusher/pusher-http-php.git", - "reference": "416e68dd5f640175ad5982131c42a7a666d1d8e9" + "reference": "de2f72296808f9cafa6a4462b15a768ff130cddb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pusher/pusher-http-php/zipball/416e68dd5f640175ad5982131c42a7a666d1d8e9", - "reference": "416e68dd5f640175ad5982131c42a7a666d1d8e9", + "url": "https://api.github.com/repos/pusher/pusher-http-php/zipball/de2f72296808f9cafa6a4462b15a768ff130cddb", + "reference": "de2f72296808f9cafa6a4462b15a768ff130cddb", "shasum": "" }, "require": { @@ -6410,9 +6412,9 @@ ], "support": { "issues": "https://github.com/pusher/pusher-http-php/issues", - "source": "https://github.com/pusher/pusher-http-php/tree/7.2.3" + "source": "https://github.com/pusher/pusher-http-php/tree/7.2.4" }, - "time": "2023-05-17T16:00:06+00:00" + "time": "2023-12-15T10:58:53+00:00" }, { "name": "ralouphie/getallheaders", @@ -7083,16 +7085,16 @@ }, { "name": "react/socket", - "version": "v1.14.0", + "version": "v1.15.0", "source": { "type": "git", "url": "https://github.com/reactphp/socket.git", - "reference": "21591111d3ea62e31f2254280ca0656bc2b1bda6" + "reference": "216d3aec0b87f04a40ca04f481e6af01bdd1d038" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/socket/zipball/21591111d3ea62e31f2254280ca0656bc2b1bda6", - "reference": "21591111d3ea62e31f2254280ca0656bc2b1bda6", + "url": "https://api.github.com/repos/reactphp/socket/zipball/216d3aec0b87f04a40ca04f481e6af01bdd1d038", + "reference": "216d3aec0b87f04a40ca04f481e6af01bdd1d038", "shasum": "" }, "require": { @@ -7104,7 +7106,7 @@ "react/stream": "^1.2" }, "require-dev": { - "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35", + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", "react/async": "^4 || ^3 || ^2", "react/promise-stream": "^1.4", "react/promise-timer": "^1.10" @@ -7112,7 +7114,7 @@ "type": "library", "autoload": { "psr-4": { - "React\\Socket\\": "src" + "React\\Socket\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -7151,7 +7153,7 @@ ], "support": { "issues": "https://github.com/reactphp/socket/issues", - "source": "https://github.com/reactphp/socket/tree/v1.14.0" + "source": "https://github.com/reactphp/socket/tree/v1.15.0" }, "funding": [ { @@ -7159,7 +7161,7 @@ "type": "open_collective" } ], - "time": "2023-08-25T13:48:09+00:00" + "time": "2023-12-15T11:02:10+00:00" }, { "name": "react/stream", @@ -7302,21 +7304,21 @@ }, { "name": "spatie/db-dumper", - "version": "3.4.0", + "version": "3.4.2", "source": { "type": "git", "url": "https://github.com/spatie/db-dumper.git", - "reference": "bbd5ae0f331d47e6534eb307e256c11a65c8e24a" + "reference": "59beef7ad612ca7463dfddb64de6e038eb59e0d7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/db-dumper/zipball/bbd5ae0f331d47e6534eb307e256c11a65c8e24a", - "reference": "bbd5ae0f331d47e6534eb307e256c11a65c8e24a", + "url": "https://api.github.com/repos/spatie/db-dumper/zipball/59beef7ad612ca7463dfddb64de6e038eb59e0d7", + "reference": "59beef7ad612ca7463dfddb64de6e038eb59e0d7", "shasum": "" }, "require": { "php": "^8.0", - "symfony/process": "^5.0|^6.0" + "symfony/process": "^5.0|^6.0|^7.0" }, "require-dev": { "pestphp/pest": "^1.22" @@ -7349,7 +7351,7 @@ "spatie" ], "support": { - "source": "https://github.com/spatie/db-dumper/tree/3.4.0" + "source": "https://github.com/spatie/db-dumper/tree/3.4.2" }, "funding": [ { @@ -7361,7 +7363,7 @@ "type": "github" } ], - "time": "2023-06-27T08:34:52+00:00" + "time": "2023-12-25T11:42:15+00:00" }, { "name": "spatie/image-optimizer", @@ -7420,44 +7422,44 @@ }, { "name": "spatie/laravel-backup", - "version": "8.4.1", + "version": "8.6.0", "source": { "type": "git", "url": "https://github.com/spatie/laravel-backup.git", - "reference": "b79f790cc856e67cce012abf34bf1c9035085dc1" + "reference": "c6a7607c0eea80efc2cf6628ffcd172f73a2088f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-backup/zipball/b79f790cc856e67cce012abf34bf1c9035085dc1", - "reference": "b79f790cc856e67cce012abf34bf1c9035085dc1", + "url": "https://api.github.com/repos/spatie/laravel-backup/zipball/c6a7607c0eea80efc2cf6628ffcd172f73a2088f", + "reference": "c6a7607c0eea80efc2cf6628ffcd172f73a2088f", "shasum": "" }, "require": { "ext-zip": "^1.14.0", - "illuminate/console": "^10.10.0", - "illuminate/contracts": "^10.10.0", - "illuminate/events": "^10.10.0", - "illuminate/filesystem": "^10.10.0", - "illuminate/notifications": "^10.10.0", - "illuminate/support": "^10.10.0", + "illuminate/console": "^10.10.0|^11.0", + "illuminate/contracts": "^10.10.0|^11.0", + "illuminate/events": "^10.10.0|^11.0", + "illuminate/filesystem": "^10.10.0|^11.0", + "illuminate/notifications": "^10.10.0|^11.0", + "illuminate/support": "^10.10.0|^11.0", "league/flysystem": "^3.0", "php": "^8.1", "spatie/db-dumper": "^3.0", "spatie/laravel-package-tools": "^1.6.2", - "spatie/laravel-signal-aware-command": "^1.2", + "spatie/laravel-signal-aware-command": "^1.2|^2.0", "spatie/temporary-directory": "^2.0", - "symfony/console": "^6.0", - "symfony/finder": "^6.0" + "symfony/console": "^6.0|^7.0", + "symfony/finder": "^6.0|^7.0" }, "require-dev": { "composer-runtime-api": "^2.0", "ext-pcntl": "*", - "laravel/slack-notification-channel": "^2.5", + "larastan/larastan": "^2.7.0", + "laravel/slack-notification-channel": "^2.5|^3.0", "league/flysystem-aws-s3-v3": "^2.0|^3.0", "mockery/mockery": "^1.4", - "nunomaduro/larastan": "^2.1", - "orchestra/testbench": "^8.0", - "pestphp/pest": "^1.20", + "orchestra/testbench": "^8.0|^9.0", + "pestphp/pest": "^1.20|^2.0", "phpstan/extension-installer": "^1.1", "phpstan/phpstan-deprecation-rules": "^1.0", "phpstan/phpstan-phpunit": "^1.1" @@ -7503,7 +7505,7 @@ ], "support": { "issues": "https://github.com/spatie/laravel-backup/issues", - "source": "https://github.com/spatie/laravel-backup/tree/8.4.1" + "source": "https://github.com/spatie/laravel-backup/tree/8.6.0" }, "funding": [ { @@ -7515,7 +7517,7 @@ "type": "other" } ], - "time": "2023-11-20T08:21:45+00:00" + "time": "2024-02-06T20:39:11+00:00" }, { "name": "spatie/laravel-image-optimizer", @@ -7587,20 +7589,20 @@ }, { "name": "spatie/laravel-package-tools", - "version": "1.16.1", + "version": "1.16.2", "source": { "type": "git", "url": "https://github.com/spatie/laravel-package-tools.git", - "reference": "cc7c991555a37f9fa6b814aa03af73f88026a83d" + "reference": "e62eeb1fe8a8a0b2e83227a6c279c8c59f7d3a15" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/cc7c991555a37f9fa6b814aa03af73f88026a83d", - "reference": "cc7c991555a37f9fa6b814aa03af73f88026a83d", + "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/e62eeb1fe8a8a0b2e83227a6c279c8c59f7d3a15", + "reference": "e62eeb1fe8a8a0b2e83227a6c279c8c59f7d3a15", "shasum": "" }, "require": { - "illuminate/contracts": "^9.28|^10.0", + "illuminate/contracts": "^9.28|^10.0|^11.0", "php": "^8.0" }, "require-dev": { @@ -7635,7 +7637,7 @@ ], "support": { "issues": "https://github.com/spatie/laravel-package-tools/issues", - "source": "https://github.com/spatie/laravel-package-tools/tree/1.16.1" + "source": "https://github.com/spatie/laravel-package-tools/tree/1.16.2" }, "funding": [ { @@ -7643,7 +7645,7 @@ "type": "github" } ], - "time": "2023-08-23T09:04:39+00:00" + "time": "2024-01-11T08:43:00+00:00" }, { "name": "spatie/laravel-signal-aware-command", @@ -7721,16 +7723,16 @@ }, { "name": "spatie/temporary-directory", - "version": "2.2.0", + "version": "2.2.1", "source": { "type": "git", "url": "https://github.com/spatie/temporary-directory.git", - "reference": "efc258c9f4da28f0c7661765b8393e4ccee3d19c" + "reference": "76949fa18f8e1a7f663fd2eaa1d00e0bcea0752a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/temporary-directory/zipball/efc258c9f4da28f0c7661765b8393e4ccee3d19c", - "reference": "efc258c9f4da28f0c7661765b8393e4ccee3d19c", + "url": "https://api.github.com/repos/spatie/temporary-directory/zipball/76949fa18f8e1a7f663fd2eaa1d00e0bcea0752a", + "reference": "76949fa18f8e1a7f663fd2eaa1d00e0bcea0752a", "shasum": "" }, "require": { @@ -7766,7 +7768,7 @@ ], "support": { "issues": "https://github.com/spatie/temporary-directory/issues", - "source": "https://github.com/spatie/temporary-directory/tree/2.2.0" + "source": "https://github.com/spatie/temporary-directory/tree/2.2.1" }, "funding": [ { @@ -7778,7 +7780,7 @@ "type": "github" } ], - "time": "2023-09-25T07:13:36+00:00" + "time": "2023-12-25T11:46:58+00:00" }, { "name": "spomky-labs/base64url", @@ -7913,16 +7915,16 @@ }, { "name": "symfony/cache", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "ac2d25f97b17eec6e19760b6b9962a4f7c44356a" + "reference": "49f8cdee544a621a621cd21b6cda32a38926d310" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/ac2d25f97b17eec6e19760b6b9962a4f7c44356a", - "reference": "ac2d25f97b17eec6e19760b6b9962a4f7c44356a", + "url": "https://api.github.com/repos/symfony/cache/zipball/49f8cdee544a621a621cd21b6cda32a38926d310", + "reference": "49f8cdee544a621a621cd21b6cda32a38926d310", "shasum": "" }, "require": { @@ -7989,7 +7991,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v6.4.0" + "source": "https://github.com/symfony/cache/tree/v6.4.3" }, "funding": [ { @@ -8005,7 +8007,7 @@ "type": "tidelift" } ], - "time": "2023-11-24T19:28:07+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/cache-contracts", @@ -8085,16 +8087,16 @@ }, { "name": "symfony/console", - "version": "v6.4.1", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "a550a7c99daeedef3f9d23fb82e3531525ff11fd" + "reference": "2aaf83b4de5b9d43b93e4aec6f2f8b676f7c567e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/a550a7c99daeedef3f9d23fb82e3531525ff11fd", - "reference": "a550a7c99daeedef3f9d23fb82e3531525ff11fd", + "url": "https://api.github.com/repos/symfony/console/zipball/2aaf83b4de5b9d43b93e4aec6f2f8b676f7c567e", + "reference": "2aaf83b4de5b9d43b93e4aec6f2f8b676f7c567e", "shasum": "" }, "require": { @@ -8159,7 +8161,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.1" + "source": "https://github.com/symfony/console/tree/v6.4.3" }, "funding": [ { @@ -8175,20 +8177,20 @@ "type": "tidelift" } ], - "time": "2023-11-30T10:54:28+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/css-selector", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "d036c6c0d0b09e24a14a35f8292146a658f986e4" + "reference": "ee0f7ed5cf298cc019431bb3b3977ebc52b86229" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/d036c6c0d0b09e24a14a35f8292146a658f986e4", - "reference": "d036c6c0d0b09e24a14a35f8292146a658f986e4", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/ee0f7ed5cf298cc019431bb3b3977ebc52b86229", + "reference": "ee0f7ed5cf298cc019431bb3b3977ebc52b86229", "shasum": "" }, "require": { @@ -8224,7 +8226,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v6.4.0" + "source": "https://github.com/symfony/css-selector/tree/v6.4.3" }, "funding": [ { @@ -8240,7 +8242,7 @@ "type": "tidelift" } ], - "time": "2023-10-31T08:40:20+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/deprecation-contracts", @@ -8311,16 +8313,16 @@ }, { "name": "symfony/error-handler", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "c873490a1c97b3a0a4838afc36ff36c112d02788" + "reference": "6dc3c76a278b77f01d864a6005d640822c6f26a6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/c873490a1c97b3a0a4838afc36ff36c112d02788", - "reference": "c873490a1c97b3a0a4838afc36ff36c112d02788", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/6dc3c76a278b77f01d864a6005d640822c6f26a6", + "reference": "6dc3c76a278b77f01d864a6005d640822c6f26a6", "shasum": "" }, "require": { @@ -8366,7 +8368,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/v6.4.0" + "source": "https://github.com/symfony/error-handler/tree/v6.4.3" }, "funding": [ { @@ -8382,20 +8384,20 @@ "type": "tidelift" } ], - "time": "2023-10-18T09:43:34+00:00" + "time": "2024-01-29T15:40:36+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "d76d2632cfc2206eecb5ad2b26cd5934082941b6" + "reference": "ae9d3a6f3003a6caf56acd7466d8d52378d44fef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d76d2632cfc2206eecb5ad2b26cd5934082941b6", - "reference": "d76d2632cfc2206eecb5ad2b26cd5934082941b6", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/ae9d3a6f3003a6caf56acd7466d8d52378d44fef", + "reference": "ae9d3a6f3003a6caf56acd7466d8d52378d44fef", "shasum": "" }, "require": { @@ -8446,7 +8448,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/v6.4.0" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.3" }, "funding": [ { @@ -8462,7 +8464,7 @@ "type": "tidelift" } ], - "time": "2023-07-27T06:52:43+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -8606,16 +8608,16 @@ }, { "name": "symfony/http-client", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "5c584530b77aa10ae216989ffc48b4bedc9c0b29" + "reference": "a9034bc119fab8238f76cf49c770f3135f3ead86" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/5c584530b77aa10ae216989ffc48b4bedc9c0b29", - "reference": "5c584530b77aa10ae216989ffc48b4bedc9c0b29", + "url": "https://api.github.com/repos/symfony/http-client/zipball/a9034bc119fab8238f76cf49c770f3135f3ead86", + "reference": "a9034bc119fab8238f76cf49c770f3135f3ead86", "shasum": "" }, "require": { @@ -8679,7 +8681,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v6.4.0" + "source": "https://github.com/symfony/http-client/tree/v6.4.3" }, "funding": [ { @@ -8695,7 +8697,7 @@ "type": "tidelift" } ], - "time": "2023-11-28T20:55:58+00:00" + "time": "2024-01-29T15:01:07+00:00" }, { "name": "symfony/http-client-contracts", @@ -8777,16 +8779,16 @@ }, { "name": "symfony/http-foundation", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "44a6d39a9cc11e154547d882d5aac1e014440771" + "reference": "5677bdf7cade4619cb17fc9e1e7b31ec392244a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/44a6d39a9cc11e154547d882d5aac1e014440771", - "reference": "44a6d39a9cc11e154547d882d5aac1e014440771", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/5677bdf7cade4619cb17fc9e1e7b31ec392244a9", + "reference": "5677bdf7cade4619cb17fc9e1e7b31ec392244a9", "shasum": "" }, "require": { @@ -8834,7 +8836,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.4.0" + "source": "https://github.com/symfony/http-foundation/tree/v6.4.3" }, "funding": [ { @@ -8850,20 +8852,20 @@ "type": "tidelift" } ], - "time": "2023-11-20T16:41:16+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.4.1", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "2953274c16a229b3933ef73a6898e18388e12e1b" + "reference": "9c6ec4e543044f7568a53a76ab1484ecd30637a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/2953274c16a229b3933ef73a6898e18388e12e1b", - "reference": "2953274c16a229b3933ef73a6898e18388e12e1b", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9c6ec4e543044f7568a53a76ab1484ecd30637a2", + "reference": "9c6ec4e543044f7568a53a76ab1484ecd30637a2", "shasum": "" }, "require": { @@ -8947,7 +8949,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/v6.4.1" + "source": "https://github.com/symfony/http-kernel/tree/v6.4.3" }, "funding": [ { @@ -8963,20 +8965,20 @@ "type": "tidelift" } ], - "time": "2023-12-01T17:02:02+00:00" + "time": "2024-01-31T07:21:29+00:00" }, { "name": "symfony/mailer", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "ca8dcf8892cdc5b4358ecf2528429bb5e706f7ba" + "reference": "74412c62f88a85a41b61f0b71ab0afcaad6f03ee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/ca8dcf8892cdc5b4358ecf2528429bb5e706f7ba", - "reference": "ca8dcf8892cdc5b4358ecf2528429bb5e706f7ba", + "url": "https://api.github.com/repos/symfony/mailer/zipball/74412c62f88a85a41b61f0b71ab0afcaad6f03ee", + "reference": "74412c62f88a85a41b61f0b71ab0afcaad6f03ee", "shasum": "" }, "require": { @@ -9027,7 +9029,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v6.4.0" + "source": "https://github.com/symfony/mailer/tree/v6.4.3" }, "funding": [ { @@ -9043,20 +9045,20 @@ "type": "tidelift" } ], - "time": "2023-11-12T18:02:22+00:00" + "time": "2024-01-29T15:01:07+00:00" }, { "name": "symfony/mailgun-mailer", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/mailgun-mailer.git", - "reference": "72d2f72f2016e559d0152188bef5a5dc9ebf5ec7" + "reference": "96d23bb0e773ecfc3fb8d21cdabfbb3f4d6abf04" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailgun-mailer/zipball/72d2f72f2016e559d0152188bef5a5dc9ebf5ec7", - "reference": "72d2f72f2016e559d0152188bef5a5dc9ebf5ec7", + "url": "https://api.github.com/repos/symfony/mailgun-mailer/zipball/96d23bb0e773ecfc3fb8d21cdabfbb3f4d6abf04", + "reference": "96d23bb0e773ecfc3fb8d21cdabfbb3f4d6abf04", "shasum": "" }, "require": { @@ -9096,7 +9098,7 @@ "description": "Symfony Mailgun Mailer Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailgun-mailer/tree/v6.4.0" + "source": "https://github.com/symfony/mailgun-mailer/tree/v6.4.3" }, "funding": [ { @@ -9112,20 +9114,20 @@ "type": "tidelift" } ], - "time": "2023-11-06T17:20:05+00:00" + "time": "2024-01-29T15:01:07+00:00" }, { "name": "symfony/mime", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "ca4f58b2ef4baa8f6cecbeca2573f88cd577d205" + "reference": "5017e0a9398c77090b7694be46f20eb796262a34" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/ca4f58b2ef4baa8f6cecbeca2573f88cd577d205", - "reference": "ca4f58b2ef4baa8f6cecbeca2573f88cd577d205", + "url": "https://api.github.com/repos/symfony/mime/zipball/5017e0a9398c77090b7694be46f20eb796262a34", + "reference": "5017e0a9398c77090b7694be46f20eb796262a34", "shasum": "" }, "require": { @@ -9180,7 +9182,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.4.0" + "source": "https://github.com/symfony/mime/tree/v6.4.3" }, "funding": [ { @@ -9196,20 +9198,20 @@ "type": "tidelift" } ], - "time": "2023-10-17T11:49:05+00:00" + "time": "2024-01-30T08:32:12+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" + "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", - "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4", + "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4", "shasum": "" }, "require": { @@ -9223,9 +9225,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -9262,7 +9261,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0" }, "funding": [ { @@ -9278,20 +9277,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "875e90aeea2777b6f135677f618529449334a612" + "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612", - "reference": "875e90aeea2777b6f135677f618529449334a612", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/32a9da87d7b3245e09ac426c83d334ae9f06f80f", + "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f", "shasum": "" }, "require": { @@ -9302,9 +9301,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -9343,7 +9339,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.29.0" }, "funding": [ { @@ -9359,20 +9355,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "ecaafce9f77234a6a449d29e49267ba10499116d" + "reference": "a287ed7475f85bf6f61890146edbc932c0fff919" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/ecaafce9f77234a6a449d29e49267ba10499116d", - "reference": "ecaafce9f77234a6a449d29e49267ba10499116d", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/a287ed7475f85bf6f61890146edbc932c0fff919", + "reference": "a287ed7475f85bf6f61890146edbc932c0fff919", "shasum": "" }, "require": { @@ -9385,9 +9381,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -9430,7 +9423,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.29.0" }, "funding": [ { @@ -9446,20 +9439,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:30:37+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92" + "reference": "bc45c394692b948b4d383a08d7753968bed9a83d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", - "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/bc45c394692b948b4d383a08d7753968bed9a83d", + "reference": "bc45c394692b948b4d383a08d7753968bed9a83d", "shasum": "" }, "require": { @@ -9470,9 +9463,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -9514,7 +9504,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.29.0" }, "funding": [ { @@ -9530,20 +9520,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "42292d99c55abe617799667f454222c54c60e229" + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", - "reference": "42292d99c55abe617799667f454222c54c60e229", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec", + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec", "shasum": "" }, "require": { @@ -9557,9 +9547,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -9597,7 +9584,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0" }, "funding": [ { @@ -9613,20 +9600,20 @@ "type": "tidelift" } ], - "time": "2023-07-28T09:04:16+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179" + "reference": "861391a8da9a04cbad2d232ddd9e4893220d6e25" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/70f4aebd92afca2f865444d30a4d2151c13c3179", - "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/861391a8da9a04cbad2d232ddd9e4893220d6e25", + "reference": "861391a8da9a04cbad2d232ddd9e4893220d6e25", "shasum": "" }, "require": { @@ -9634,9 +9621,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -9673,7 +9657,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-php72/tree/v1.29.0" }, "funding": [ { @@ -9689,20 +9673,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5" + "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5", - "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", + "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", "shasum": "" }, "require": { @@ -9710,9 +9694,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -9756,7 +9737,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0" }, "funding": [ { @@ -9772,20 +9753,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-php83", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php83.git", - "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11" + "reference": "86fcae159633351e5fd145d1c47de6c528f8caff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11", - "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/86fcae159633351e5fd145d1c47de6c528f8caff", + "reference": "86fcae159633351e5fd145d1c47de6c528f8caff", "shasum": "" }, "require": { @@ -9794,9 +9775,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -9836,7 +9814,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php83/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-php83/tree/v1.29.0" }, "funding": [ { @@ -9852,20 +9830,20 @@ "type": "tidelift" } ], - "time": "2023-08-16T06:22:46+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-uuid", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-uuid.git", - "reference": "9c44518a5aff8da565c8a55dbe85d2769e6f630e" + "reference": "3abdd21b0ceaa3000ee950097bc3cf9efc137853" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/9c44518a5aff8da565c8a55dbe85d2769e6f630e", - "reference": "9c44518a5aff8da565c8a55dbe85d2769e6f630e", + "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/3abdd21b0ceaa3000ee950097bc3cf9efc137853", + "reference": "3abdd21b0ceaa3000ee950097bc3cf9efc137853", "shasum": "" }, "require": { @@ -9879,9 +9857,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -9918,7 +9893,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/polyfill-uuid/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.29.0" }, "funding": [ { @@ -9934,20 +9909,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/process", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "191703b1566d97a5425dc969e4350d32b8ef17aa" + "reference": "31642b0818bfcff85930344ef93193f8c607e0a3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/191703b1566d97a5425dc969e4350d32b8ef17aa", - "reference": "191703b1566d97a5425dc969e4350d32b8ef17aa", + "url": "https://api.github.com/repos/symfony/process/zipball/31642b0818bfcff85930344ef93193f8c607e0a3", + "reference": "31642b0818bfcff85930344ef93193f8c607e0a3", "shasum": "" }, "require": { @@ -9979,7 +9954,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.4.0" + "source": "https://github.com/symfony/process/tree/v6.4.3" }, "funding": [ { @@ -9995,7 +9970,7 @@ "type": "tidelift" } ], - "time": "2023-11-17T21:06:49+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/psr-http-message-bridge", @@ -10088,16 +10063,16 @@ }, { "name": "symfony/routing", - "version": "v6.4.1", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "0c95c164fdba18b12523b75e64199ca3503e6d40" + "reference": "3b2957ad54902f0f544df83e3d58b38d7e8e5842" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/0c95c164fdba18b12523b75e64199ca3503e6d40", - "reference": "0c95c164fdba18b12523b75e64199ca3503e6d40", + "url": "https://api.github.com/repos/symfony/routing/zipball/3b2957ad54902f0f544df83e3d58b38d7e8e5842", + "reference": "3b2957ad54902f0f544df83e3d58b38d7e8e5842", "shasum": "" }, "require": { @@ -10151,7 +10126,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.4.1" + "source": "https://github.com/symfony/routing/tree/v6.4.3" }, "funding": [ { @@ -10167,25 +10142,25 @@ "type": "tidelift" } ], - "time": "2023-12-01T14:54:37+00:00" + "time": "2024-01-30T13:55:02+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.4.0", + "version": "v3.4.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "b3313c2dbffaf71c8de2934e2ea56ed2291a3838" + "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/b3313c2dbffaf71c8de2934e2ea56ed2291a3838", - "reference": "b3313c2dbffaf71c8de2934e2ea56ed2291a3838", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/fe07cbc8d837f60caf7018068e350cc5163681a0", + "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0", "shasum": "" }, "require": { "php": ">=8.1", - "psr/container": "^2.0" + "psr/container": "^1.1|^2.0" }, "conflict": { "ext-psr": "<1.1|>=2" @@ -10233,7 +10208,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.4.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.4.1" }, "funding": [ { @@ -10249,20 +10224,20 @@ "type": "tidelift" } ], - "time": "2023-07-30T20:28:31+00:00" + "time": "2023-12-26T14:02:43+00:00" }, { "name": "symfony/string", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "b45fcf399ea9c3af543a92edf7172ba21174d809" + "reference": "7a14736fb179876575464e4658fce0c304e8c15b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/b45fcf399ea9c3af543a92edf7172ba21174d809", - "reference": "b45fcf399ea9c3af543a92edf7172ba21174d809", + "url": "https://api.github.com/repos/symfony/string/zipball/7a14736fb179876575464e4658fce0c304e8c15b", + "reference": "7a14736fb179876575464e4658fce0c304e8c15b", "shasum": "" }, "require": { @@ -10319,7 +10294,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.4.0" + "source": "https://github.com/symfony/string/tree/v6.4.3" }, "funding": [ { @@ -10335,20 +10310,20 @@ "type": "tidelift" } ], - "time": "2023-11-28T20:41:49+00:00" + "time": "2024-01-25T09:26:29+00:00" }, { "name": "symfony/translation", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "b1035dbc2a344b21f8fa8ac451c7ecec4ea45f37" + "reference": "637c51191b6b184184bbf98937702bcf554f7d04" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/b1035dbc2a344b21f8fa8ac451c7ecec4ea45f37", - "reference": "b1035dbc2a344b21f8fa8ac451c7ecec4ea45f37", + "url": "https://api.github.com/repos/symfony/translation/zipball/637c51191b6b184184bbf98937702bcf554f7d04", + "reference": "637c51191b6b184184bbf98937702bcf554f7d04", "shasum": "" }, "require": { @@ -10371,7 +10346,7 @@ "symfony/translation-implementation": "2.3|3.0" }, "require-dev": { - "nikic/php-parser": "^4.13", + "nikic/php-parser": "^4.18|^5.0", "psr/log": "^1|^2|^3", "symfony/config": "^5.4|^6.0|^7.0", "symfony/console": "^5.4|^6.0|^7.0", @@ -10414,7 +10389,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.4.0" + "source": "https://github.com/symfony/translation/tree/v6.4.3" }, "funding": [ { @@ -10430,20 +10405,20 @@ "type": "tidelift" } ], - "time": "2023-11-29T08:14:36+00:00" + "time": "2024-01-29T13:11:52+00:00" }, { "name": "symfony/translation-contracts", - "version": "v3.4.0", + "version": "v3.4.1", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "dee0c6e5b4c07ce851b462530088e64b255ac9c5" + "reference": "06450585bf65e978026bda220cdebca3f867fde7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/dee0c6e5b4c07ce851b462530088e64b255ac9c5", - "reference": "dee0c6e5b4c07ce851b462530088e64b255ac9c5", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/06450585bf65e978026bda220cdebca3f867fde7", + "reference": "06450585bf65e978026bda220cdebca3f867fde7", "shasum": "" }, "require": { @@ -10492,7 +10467,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.4.0" + "source": "https://github.com/symfony/translation-contracts/tree/v3.4.1" }, "funding": [ { @@ -10508,20 +10483,20 @@ "type": "tidelift" } ], - "time": "2023-07-25T15:08:44+00:00" + "time": "2023-12-26T14:02:43+00:00" }, { "name": "symfony/uid", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/uid.git", - "reference": "8092dd1b1a41372110d06374f99ee62f7f0b9a92" + "reference": "1d31267211cc3a2fff32bcfc7c1818dac41b6fc0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/8092dd1b1a41372110d06374f99ee62f7f0b9a92", - "reference": "8092dd1b1a41372110d06374f99ee62f7f0b9a92", + "url": "https://api.github.com/repos/symfony/uid/zipball/1d31267211cc3a2fff32bcfc7c1818dac41b6fc0", + "reference": "1d31267211cc3a2fff32bcfc7c1818dac41b6fc0", "shasum": "" }, "require": { @@ -10566,7 +10541,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/uid/tree/v6.4.0" + "source": "https://github.com/symfony/uid/tree/v6.4.3" }, "funding": [ { @@ -10582,20 +10557,20 @@ "type": "tidelift" } ], - "time": "2023-10-31T08:18:17+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "c40f7d17e91d8b407582ed51a2bbf83c52c367f6" + "reference": "0435a08f69125535336177c29d56af3abc1f69da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/c40f7d17e91d8b407582ed51a2bbf83c52c367f6", - "reference": "c40f7d17e91d8b407582ed51a2bbf83c52c367f6", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/0435a08f69125535336177c29d56af3abc1f69da", + "reference": "0435a08f69125535336177c29d56af3abc1f69da", "shasum": "" }, "require": { @@ -10651,7 +10626,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.4.0" + "source": "https://github.com/symfony/var-dumper/tree/v6.4.3" }, "funding": [ { @@ -10667,20 +10642,20 @@ "type": "tidelift" } ], - "time": "2023-11-09T08:28:32+00:00" + "time": "2024-01-23T14:53:30+00:00" }, { "name": "symfony/var-exporter", - "version": "v6.4.1", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "2d08ca6b9cc704dce525615d1e6d1788734f36d9" + "reference": "a8c12b5448a5ac685347f5eeb2abf6a571ec16b8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/2d08ca6b9cc704dce525615d1e6d1788734f36d9", - "reference": "2d08ca6b9cc704dce525615d1e6d1788734f36d9", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/a8c12b5448a5ac685347f5eeb2abf6a571ec16b8", + "reference": "a8c12b5448a5ac685347f5eeb2abf6a571ec16b8", "shasum": "" }, "require": { @@ -10726,7 +10701,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v6.4.1" + "source": "https://github.com/symfony/var-exporter/tree/v6.4.3" }, "funding": [ { @@ -10742,7 +10717,7 @@ "type": "tidelift" } ], - "time": "2023-11-30T10:32:10+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "tightenco/collect", @@ -10800,23 +10775,23 @@ }, { "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.6", + "version": "v2.2.7", "source": { "type": "git", "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "c42125b83a4fa63b187fdf29f9c93cb7733da30c" + "reference": "83ee6f38df0a63106a9e4536e3060458b74ccedb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/c42125b83a4fa63b187fdf29f9c93cb7733da30c", - "reference": "c42125b83a4fa63b187fdf29f9c93cb7733da30c", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/83ee6f38df0a63106a9e4536e3060458b74ccedb", + "reference": "83ee6f38df0a63106a9e4536e3060458b74ccedb", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" + "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0" }, "require-dev": { "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" @@ -10847,9 +10822,9 @@ "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", "support": { "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.6" + "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.2.7" }, - "time": "2023-01-03T09:29:04+00:00" + "time": "2023-12-08T13:03:43+00:00" }, { "name": "vlucas/phpdotenv", @@ -11312,20 +11287,20 @@ }, { "name": "web-token/jwt-util-ecc", - "version": "3.2.8", + "version": "3.2.10", "source": { "type": "git", "url": "https://github.com/web-token/jwt-util-ecc.git", - "reference": "b2337052dbee724d710c1fdb0d3609835a5f8609" + "reference": "9edf9b76bccf2e1db58fcc49db1d916d929335c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/web-token/jwt-util-ecc/zipball/b2337052dbee724d710c1fdb0d3609835a5f8609", - "reference": "b2337052dbee724d710c1fdb0d3609835a5f8609", + "url": "https://api.github.com/repos/web-token/jwt-util-ecc/zipball/9edf9b76bccf2e1db58fcc49db1d916d929335c0", + "reference": "9edf9b76bccf2e1db58fcc49db1d916d929335c0", "shasum": "" }, "require": { - "brick/math": "^0.9|^0.10|^0.11", + "brick/math": "^0.9|^0.10|^0.11|^0.12", "php": ">=8.1" }, "suggest": { @@ -11373,7 +11348,7 @@ "symfony" ], "support": { - "source": "https://github.com/web-token/jwt-util-ecc/tree/3.2.8" + "source": "https://github.com/web-token/jwt-util-ecc/tree/3.2.10" }, "funding": [ { @@ -11381,7 +11356,7 @@ "type": "patreon" } ], - "time": "2023-02-02T13:35:41+00:00" + "time": "2024-01-02T17:55:33+00:00" }, { "name": "webmozart/assert", @@ -11607,16 +11582,16 @@ }, { "name": "fakerphp/faker", - "version": "v1.23.0", + "version": "v1.23.1", "source": { "type": "git", "url": "https://github.com/FakerPHP/Faker.git", - "reference": "e3daa170d00fde61ea7719ef47bb09bb8f1d9b01" + "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/e3daa170d00fde61ea7719ef47bb09bb8f1d9b01", - "reference": "e3daa170d00fde61ea7719ef47bb09bb8f1d9b01", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/bfb4fe148adbf78eff521199619b93a52ae3554b", + "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b", "shasum": "" }, "require": { @@ -11642,11 +11617,6 @@ "ext-mbstring": "Required for multibyte Unicode string functionality." }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.21-dev" - } - }, "autoload": { "psr-4": { "Faker\\": "src/Faker/" @@ -11669,22 +11639,22 @@ ], "support": { "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.23.0" + "source": "https://github.com/FakerPHP/Faker/tree/v1.23.1" }, - "time": "2023-06-12T08:44:38+00:00" + "time": "2024-01-02T13:46:09+00:00" }, { "name": "fidry/cpu-core-counter", - "version": "1.0.0", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/theofidry/cpu-core-counter.git", - "reference": "85193c0b0cb5c47894b5eaec906e946f054e7077" + "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/85193c0b0cb5c47894b5eaec906e946f054e7077", - "reference": "85193c0b0cb5c47894b5eaec906e946f054e7077", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/f92996c4d5c1a696a6a970e20f7c4216200fcc42", + "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42", "shasum": "" }, "require": { @@ -11724,7 +11694,7 @@ ], "support": { "issues": "https://github.com/theofidry/cpu-core-counter/issues", - "source": "https://github.com/theofidry/cpu-core-counter/tree/1.0.0" + "source": "https://github.com/theofidry/cpu-core-counter/tree/1.1.0" }, "funding": [ { @@ -11732,7 +11702,7 @@ "type": "github" } ], - "time": "2023-09-17T21:38:23+00:00" + "time": "2024-02-07T09:43:46+00:00" }, { "name": "filp/whoops", @@ -11917,16 +11887,16 @@ }, { "name": "laravel/telescope", - "version": "v4.17.2", + "version": "v4.17.6", "source": { "type": "git", "url": "https://github.com/laravel/telescope.git", - "reference": "64da53ee46b99ef328458eaed32202b51e325a11" + "reference": "2d453dc629b27e8cf39fb1217aba062f8c54e690" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/telescope/zipball/64da53ee46b99ef328458eaed32202b51e325a11", - "reference": "64da53ee46b99ef328458eaed32202b51e325a11", + "url": "https://api.github.com/repos/laravel/telescope/zipball/2d453dc629b27e8cf39fb1217aba062f8c54e690", + "reference": "2d453dc629b27e8cf39fb1217aba062f8c54e690", "shasum": "" }, "require": { @@ -11982,22 +11952,22 @@ ], "support": { "issues": "https://github.com/laravel/telescope/issues", - "source": "https://github.com/laravel/telescope/tree/v4.17.2" + "source": "https://github.com/laravel/telescope/tree/v4.17.6" }, - "time": "2023-11-01T14:01:06+00:00" + "time": "2024-02-08T15:04:38+00:00" }, { "name": "mockery/mockery", - "version": "1.6.6", + "version": "1.6.7", "source": { "type": "git", "url": "https://github.com/mockery/mockery.git", - "reference": "b8e0bb7d8c604046539c1115994632c74dcb361e" + "reference": "0cc058854b3195ba21dc6b1f7b1f60f4ef3a9c06" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/b8e0bb7d8c604046539c1115994632c74dcb361e", - "reference": "b8e0bb7d8c604046539c1115994632c74dcb361e", + "url": "https://api.github.com/repos/mockery/mockery/zipball/0cc058854b3195ba21dc6b1f7b1f60f4ef3a9c06", + "reference": "0cc058854b3195ba21dc6b1f7b1f60f4ef3a9c06", "shasum": "" }, "require": { @@ -12010,9 +11980,7 @@ }, "require-dev": { "phpunit/phpunit": "^8.5 || ^9.6.10", - "psalm/plugin-phpunit": "^0.18.4", - "symplify/easy-coding-standard": "^11.5.0", - "vimeo/psalm": "^4.30" + "symplify/easy-coding-standard": "^12.0.8" }, "type": "library", "autoload": { @@ -12069,7 +12037,7 @@ "security": "https://github.com/mockery/mockery/security/advisories", "source": "https://github.com/mockery/mockery" }, - "time": "2023-08-09T00:03:52+00:00" + "time": "2023-12-10T02:24:34+00:00" }, { "name": "myclabs/deep-copy", @@ -12331,23 +12299,23 @@ }, { "name": "phpunit/php-code-coverage", - "version": "9.2.29", + "version": "9.2.30", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76" + "reference": "ca2bd87d2f9215904682a9cb9bb37dda98e76089" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/6a3a87ac2bbe33b25042753df8195ba4aa534c76", - "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ca2bd87d2f9215904682a9cb9bb37dda98e76089", + "reference": "ca2bd87d2f9215904682a9cb9bb37dda98e76089", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.15", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=7.3", "phpunit/php-file-iterator": "^3.0.3", "phpunit/php-text-template": "^2.0.2", @@ -12397,7 +12365,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.29" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.30" }, "funding": [ { @@ -12405,7 +12373,7 @@ "type": "github" } ], - "time": "2023-09-19T04:57:46+00:00" + "time": "2023-12-22T06:47:57+00:00" }, { "name": "phpunit/php-file-iterator", @@ -12650,16 +12618,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.6.15", + "version": "9.6.16", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "05017b80304e0eb3f31d90194a563fd53a6021f1" + "reference": "3767b2c56ce02d01e3491046f33466a1ae60a37f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/05017b80304e0eb3f31d90194a563fd53a6021f1", - "reference": "05017b80304e0eb3f31d90194a563fd53a6021f1", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3767b2c56ce02d01e3491046f33466a1ae60a37f", + "reference": "3767b2c56ce02d01e3491046f33466a1ae60a37f", "shasum": "" }, "require": { @@ -12733,7 +12701,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.15" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.16" }, "funding": [ { @@ -12749,7 +12717,7 @@ "type": "tidelift" } ], - "time": "2023-12-01T16:55:19+00:00" + "time": "2024-01-19T07:03:14+00:00" }, { "name": "sebastian/cli-parser", @@ -12994,20 +12962,20 @@ }, { "name": "sebastian/complexity", - "version": "2.0.2", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/25f207c40d62b8b7aa32f5ab026c53561964053a", + "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a", "shasum": "" }, "require": { - "nikic/php-parser": "^4.7", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=7.3" }, "require-dev": { @@ -13039,7 +13007,7 @@ "homepage": "https://github.com/sebastianbergmann/complexity", "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.3" }, "funding": [ { @@ -13047,7 +13015,7 @@ "type": "github" } ], - "time": "2020-10-26T15:52:27+00:00" + "time": "2023-12-22T06:19:30+00:00" }, { "name": "sebastian/diff", @@ -13321,20 +13289,20 @@ }, { "name": "sebastian/lines-of-code", - "version": "1.0.3", + "version": "1.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/e1e4a170560925c26d424b6a03aed157e7dcc5c5", + "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5", "shasum": "" }, "require": { - "nikic/php-parser": "^4.6", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=7.3" }, "require-dev": { @@ -13366,7 +13334,7 @@ "homepage": "https://github.com/sebastianbergmann/lines-of-code", "support": { "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.4" }, "funding": [ { @@ -13374,7 +13342,7 @@ "type": "github" } ], - "time": "2020-11-28T06:42:11+00:00" + "time": "2023-12-22T06:20:34+00:00" }, { "name": "sebastian/object-enumerator", @@ -13772,7 +13740,7 @@ "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": "^8.1|^8.2", + "php": "^8.1|^8.2|^8.3", "ext-bcmath": "*", "ext-ctype": "*", "ext-curl": "*", diff --git a/config/autospam.php b/config/autospam.php index 39975ec9b..bc0ce4681 100644 --- a/config/autospam.php +++ b/config/autospam.php @@ -33,5 +33,10 @@ return [ 'nlp' => [ 'enabled' => false, 'spam_sample_limit' => env('PF_AUTOSPAM_NLP_SPAM_SAMPLE_LIMIT', 200), + ], + + 'live_filters' => [ + 'enabled' => env('PF_AUTOSPAM_LIVE_FILTERS_ENABLED', false), + 'filters' => env('PF_AUTOSPAM_LIVE_FILTERS_CSV', ''), ] ]; diff --git a/config/cache.php b/config/cache.php index 452e3dd4d..88129848e 100644 --- a/config/cache.php +++ b/config/cache.php @@ -74,7 +74,7 @@ return [ 'redis' => [ 'driver' => 'redis', 'lock_connection' => 'default', - 'client' => env('REDIS_CLIENT', 'phpredis'), + 'client' => env('REDIS_CLIENT', 'predis'), 'default' => [ 'scheme' => env('REDIS_SCHEME', 'tcp'), diff --git a/config/federation.php b/config/federation.php index 773d3d16b..21415dad3 100644 --- a/config/federation.php +++ b/config/federation.php @@ -49,7 +49,7 @@ return [ ], 'network_timeline' => env('PF_NETWORK_TIMELINE', true), - 'network_timeline_days_falloff' => env('PF_NETWORK_TIMELINE_DAYS_FALLOFF', 2), + 'network_timeline_days_falloff' => env('PF_NETWORK_TIMELINE_DAYS_FALLOFF', 90), 'custom_emoji' => [ 'enabled' => env('CUSTOM_EMOJI', false), diff --git a/config/instance.php b/config/instance.php index 03f666a79..cfc0468ab 100644 --- a/config/instance.php +++ b/config/instance.php @@ -29,11 +29,12 @@ return [ ], 'local' => [ + 'cached' => env('INSTANCE_PUBLIC_TIMELINE_CACHED', false), 'is_public' => env('INSTANCE_PUBLIC_LOCAL_TIMELINE', false) ], 'network' => [ - 'cached' => env('PF_NETWORK_TIMELINE') ? env('INSTANCE_NETWORK_TIMELINE_CACHED', true) : false, + 'cached' => env('PF_NETWORK_TIMELINE') ? env('INSTANCE_NETWORK_TIMELINE_CACHED', false) : false, 'cache_dropoff' => env('INSTANCE_NETWORK_TIMELINE_CACHE_DROPOFF', 100), 'max_hours_old' => env('INSTANCE_NETWORK_TIMELINE_CACHE_MAX_HOUR_INGEST', 6) ] @@ -139,5 +140,40 @@ return [ 'max_children' => env('INSTANCE_PARENTAL_CONTROLS_MAX_CHILDREN', 1), 'auto_verify_email' => true, ], - ] + ], + + 'software-update' => [ + 'disable_failed_warning' => env('INSTANCE_SOFTWARE_UPDATE_DISABLE_FAILED_WARNING', false) + ], + + 'notifications' => [ + 'gc' => [ + 'enabled' => env('INSTANCE_NOTIFY_AUTO_GC', false), + 'delete_after_days' => env('INSTANCE_NOTIFY_AUTO_GC_DEL_AFTER_DAYS', 365) + ] + ], + + 'curated_registration' => [ + 'enabled' => env('INSTANCE_CUR_REG', false), + + 'resend_confirmation_limit' => env('INSTANCE_CUR_REG_RESEND_LIMIT', 5), + + 'captcha_enabled' => env('INSTANCE_CUR_REG_CAPTCHA', env('CAPTCHA_ENABLED', false)), + + 'state' => [ + 'fallback_on_closed_reg' => true, + 'only_enabled_on_closed_reg' => env('INSTANCE_CUR_REG_STATE_ONLY_ON_CLOSED', true), + ], + + 'notify' => [ + 'admin' => [ + 'on_verify_email' => [ + 'enabled' => env('INSTANCE_CUR_REG_NOTIFY_ADMIN_ON_VERIFY', false), + 'bundle' => env('INSTANCE_CUR_REG_NOTIFY_ADMIN_ON_VERIFY_BUNDLE', false), + 'max_per_day' => env('INSTANCE_CUR_REG_NOTIFY_ADMIN_ON_VERIFY_MPD', 10), + ], + 'on_user_response' => env('INSTANCE_CUR_REG_NOTIFY_ADMIN_ON_USER_RESPONSE', false), + ] + ], + ], ]; diff --git a/config/pixelfed.php b/config/pixelfed.php index 9ed7fc616..50164218c 100644 --- a/config/pixelfed.php +++ b/config/pixelfed.php @@ -23,7 +23,7 @@ return [ | This value is the version of your Pixelfed instance. | */ - 'version' => '0.11.11', + 'version' => '0.11.12', /* |-------------------------------------------------------------------------- diff --git a/database/migrations/2024_01_16_073327_create_curated_registers_table.php b/database/migrations/2024_01_16_073327_create_curated_registers_table.php new file mode 100644 index 000000000..8f665cdc3 --- /dev/null +++ b/database/migrations/2024_01_16_073327_create_curated_registers_table.php @@ -0,0 +1,44 @@ +id(); + $table->string('email')->unique()->nullable()->index(); + $table->string('username')->unique()->nullable()->index(); + $table->string('password')->nullable(); + $table->string('ip_address')->nullable(); + $table->string('verify_code')->nullable(); + $table->text('reason_to_join')->nullable(); + $table->unsignedBigInteger('invited_by')->nullable()->index(); + $table->boolean('is_approved')->default(0)->index(); + $table->boolean('is_rejected')->default(0)->index(); + $table->boolean('is_awaiting_more_info')->default(0)->index(); + $table->boolean('is_closed')->default(0)->index(); + $table->json('autofollow_account_ids')->nullable(); + $table->json('admin_notes')->nullable(); + $table->unsignedInteger('approved_by_admin_id')->nullable(); + $table->timestamp('email_verified_at')->nullable(); + $table->timestamp('admin_notified_at')->nullable(); + $table->timestamp('action_taken_at')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('curated_registers'); + } +}; diff --git a/database/migrations/2024_01_20_091352_create_curated_register_activities_table.php b/database/migrations/2024_01_20_091352_create_curated_register_activities_table.php new file mode 100644 index 000000000..410804750 --- /dev/null +++ b/database/migrations/2024_01_20_091352_create_curated_register_activities_table.php @@ -0,0 +1,42 @@ +id(); + $table->unsignedInteger('register_id')->nullable()->index(); + $table->unsignedInteger('admin_id')->nullable(); + $table->unsignedInteger('reply_to_id')->nullable()->index(); + $table->string('secret_code')->nullable(); + $table->string('type')->nullable()->index(); + $table->string('title')->nullable(); + $table->string('link')->nullable(); + $table->text('message')->nullable(); + $table->json('metadata')->nullable(); + $table->boolean('from_admin')->default(false)->index(); + $table->boolean('from_user')->default(false)->index(); + $table->boolean('admin_only_view')->default(true); + $table->boolean('action_required')->default(false); + $table->timestamp('admin_notified_at')->nullable(); + $table->timestamp('action_taken_at')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('curated_register_activities'); + } +}; diff --git a/database/migrations/2024_02_24_093824_add_has_responded_to_curated_registers_table.php b/database/migrations/2024_02_24_093824_add_has_responded_to_curated_registers_table.php new file mode 100644 index 000000000..9453a73d7 --- /dev/null +++ b/database/migrations/2024_02_24_093824_add_has_responded_to_curated_registers_table.php @@ -0,0 +1,36 @@ +boolean('user_has_responded')->default(false)->index()->after('is_awaiting_more_info'); + }); + + CuratedRegisterActivity::whereFromUser(true)->get()->each(function($cra) { + $cr = CuratedRegister::find($cra->register_id); + $cr->user_has_responded = true; + $cr->save(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('curated_registers', function (Blueprint $table) { + $table->dropColumn('user_has_responded'); + }); + } +}; diff --git a/database/migrations/2024_02_24_105641_create_curated_register_templates_table.php b/database/migrations/2024_02_24_105641_create_curated_register_templates_table.php new file mode 100644 index 000000000..4829fefb2 --- /dev/null +++ b/database/migrations/2024_02_24_105641_create_curated_register_templates_table.php @@ -0,0 +1,32 @@ +id(); + $table->string('name')->nullable(); + $table->text('description')->nullable(); + $table->text('content')->nullable(); + $table->boolean('is_active')->default(false)->index(); + $table->tinyInteger('order')->default(10)->unsigned()->index(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('curated_register_templates'); + } +}; diff --git a/database/migrations/2024_03_02_094235_create_profile_migrations_table.php b/database/migrations/2024_03_02_094235_create_profile_migrations_table.php new file mode 100644 index 000000000..2eafaa43b --- /dev/null +++ b/database/migrations/2024_03_02_094235_create_profile_migrations_table.php @@ -0,0 +1,31 @@ +id(); + $table->unsignedBigInteger('profile_id'); + $table->string('acct')->nullable(); + $table->unsignedBigInteger('followers_count')->default(0); + $table->unsignedBigInteger('target_profile_id')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('profile_migrations'); + } +}; diff --git a/package-lock.json b/package-lock.json index 15443b198..0b34d7765 100644 --- a/package-lock.json +++ b/package-lock.json @@ -47,7 +47,7 @@ }, "devDependencies": { "acorn": "^8.7.1", - "axios": "^0.21.1", + "axios": ">=1.6.0", "bootstrap": "^4.5.2", "cross-env": "^5.2.1", "jquery": "^3.6.0", @@ -83,11 +83,11 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", "dependencies": { - "@babel/highlight": "^7.22.13", + "@babel/highlight": "^7.23.4", "chalk": "^2.4.2" }, "engines": { @@ -151,28 +151,28 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.2.tgz", - "integrity": "sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz", - "integrity": "sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz", + "integrity": "sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-module-transforms": "^7.23.0", - "@babel/helpers": "^7.23.2", - "@babel/parser": "^7.23.0", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.2", - "@babel/types": "^7.23.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.9", + "@babel/parser": "^7.23.9", + "@babel/template": "^7.23.9", + "@babel/traverse": "^7.23.9", + "@babel/types": "^7.23.9", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -196,11 +196,11 @@ } }, "node_modules/@babel/generator": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", - "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", "dependencies": { - "@babel/types": "^7.23.0", + "@babel/types": "^7.23.6", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -232,13 +232,13 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", - "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.15", - "browserslist": "^4.21.9", + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -255,16 +255,16 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", - "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", + "version": "7.23.10", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.10.tgz", + "integrity": "sha512-2XpP2XhkXzgxecPNEEK8Vz8Asj9aRxt08oKOqtiZoqV2UGZ5T+EkyP9sXQ9nwMxBIG34a7jmasVqoMop7VdPUw==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-member-expression-to-functions": "^7.23.0", "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-replace-supers": "^7.22.20", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", "semver": "^6.3.1" @@ -309,9 +309,9 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz", - "integrity": "sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", + "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-plugin-utils": "^7.22.5", @@ -377,9 +377,9 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", - "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-module-imports": "^7.22.15", @@ -479,9 +479,9 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", "engines": { "node": ">=6.9.0" } @@ -495,9 +495,9 @@ } }, "node_modules/@babel/helper-validator-option": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", - "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", "engines": { "node": ">=6.9.0" } @@ -516,22 +516,22 @@ } }, "node_modules/@babel/helpers": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz", - "integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.9.tgz", + "integrity": "sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==", "dependencies": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.2", - "@babel/types": "^7.23.0" + "@babel/template": "^7.23.9", + "@babel/traverse": "^7.23.9", + "@babel/types": "^7.23.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", "dependencies": { "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", @@ -598,9 +598,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", - "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz", + "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==", "bin": { "parser": "bin/babel-parser.js" }, @@ -609,9 +609,9 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz", - "integrity": "sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz", + "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -623,13 +623,13 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz", - "integrity": "sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", + "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.22.15" + "@babel/plugin-transform-optional-chaining": "^7.23.3" }, "engines": { "node": ">=6.9.0" @@ -638,6 +638,21 @@ "@babel/core": "^7.13.0" } }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz", + "integrity": "sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-proposal-object-rest-spread": { "version": "7.20.7", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", @@ -727,9 +742,9 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz", - "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", + "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -741,9 +756,9 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz", - "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", + "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -886,9 +901,9 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz", - "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", + "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -900,9 +915,9 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.2.tgz", - "integrity": "sha512-BBYVGxbDVHfoeXbOwcagAkOQAm9NxoTdMGfTqghu1GrvadSaw6iW3Je6IcL5PNOw8VwjxqBECXy50/iCQSY/lQ==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz", + "integrity": "sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==", "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-plugin-utils": "^7.22.5", @@ -917,13 +932,13 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz", - "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", + "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", "dependencies": { - "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.5" + "@babel/helper-remap-async-to-generator": "^7.22.20" }, "engines": { "node": ">=6.9.0" @@ -933,9 +948,9 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz", - "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", + "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -947,9 +962,9 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz", - "integrity": "sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", + "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -961,11 +976,11 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz", - "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", + "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -976,11 +991,11 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz", - "integrity": "sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", + "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, @@ -992,17 +1007,16 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz", - "integrity": "sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==", + "version": "7.23.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.8.tgz", + "integrity": "sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-replace-supers": "^7.22.20", "@babel/helper-split-export-declaration": "^7.22.6", "globals": "^11.1.0" }, @@ -1014,12 +1028,12 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz", - "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", + "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", - "@babel/template": "^7.22.5" + "@babel/template": "^7.22.15" }, "engines": { "node": ">=6.9.0" @@ -1029,9 +1043,9 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz", - "integrity": "sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", + "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1043,11 +1057,11 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz", - "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", + "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -1058,9 +1072,9 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz", - "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", + "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1072,9 +1086,9 @@ } }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz", - "integrity": "sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", + "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3" @@ -1087,11 +1101,11 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz", - "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", + "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -1102,9 +1116,9 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz", - "integrity": "sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", + "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" @@ -1117,11 +1131,12 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz", - "integrity": "sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz", + "integrity": "sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1131,12 +1146,12 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz", - "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", + "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", "dependencies": { - "@babel/helper-compilation-targets": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-function-name": "^7.23.0", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -1147,9 +1162,9 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz", - "integrity": "sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", + "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-json-strings": "^7.8.3" @@ -1162,9 +1177,9 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz", - "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", + "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1176,9 +1191,9 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz", - "integrity": "sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", + "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" @@ -1191,9 +1206,9 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz", - "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", + "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1205,11 +1220,11 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz", - "integrity": "sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", + "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", "dependencies": { - "@babel/helper-module-transforms": "^7.23.0", + "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -1220,11 +1235,11 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz", - "integrity": "sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", + "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", "dependencies": { - "@babel/helper-module-transforms": "^7.23.0", + "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-simple-access": "^7.22.5" }, @@ -1236,12 +1251,12 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz", - "integrity": "sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.9.tgz", + "integrity": "sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw==", "dependencies": { "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.23.0", + "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-validator-identifier": "^7.22.20" }, @@ -1253,11 +1268,11 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz", - "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", + "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", "dependencies": { - "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -1283,9 +1298,9 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz", - "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", + "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1297,9 +1312,9 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz", - "integrity": "sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", + "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" @@ -1312,9 +1327,9 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz", - "integrity": "sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", + "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" @@ -1327,15 +1342,15 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz", - "integrity": "sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz", + "integrity": "sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==", "dependencies": { - "@babel/compat-data": "^7.22.9", + "@babel/compat-data": "^7.23.3", "@babel/helper-compilation-targets": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.22.15" + "@babel/plugin-transform-parameters": "^7.23.3" }, "engines": { "node": ">=6.9.0" @@ -1345,12 +1360,12 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz", - "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", + "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.5" + "@babel/helper-replace-supers": "^7.22.20" }, "engines": { "node": ">=6.9.0" @@ -1360,9 +1375,9 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz", - "integrity": "sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", + "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" @@ -1375,9 +1390,9 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz", - "integrity": "sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", + "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", @@ -1391,9 +1406,9 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz", - "integrity": "sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", + "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1405,11 +1420,11 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz", - "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", + "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -1420,12 +1435,12 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz", - "integrity": "sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", + "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.11", + "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, @@ -1437,9 +1452,9 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz", - "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", + "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1451,9 +1466,9 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz", - "integrity": "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", + "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "regenerator-transform": "^0.15.2" @@ -1466,9 +1481,9 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz", - "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", + "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1480,15 +1495,15 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.2.tgz", - "integrity": "sha512-XOntj6icgzMS58jPVtQpiuF6ZFWxQiJavISGx5KGjRj+3gqZr8+N6Kx+N9BApWzgS+DOjIZfXXj0ZesenOWDyA==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.9.tgz", + "integrity": "sha512-A7clW3a0aSjm3ONU9o2HAILSegJCYlEZmOhmBRReVtIpY/Z/p7yIZ+wR41Z+UipwdGuqwtID/V/dOdZXjwi9gQ==", "dependencies": { "@babel/helper-module-imports": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", - "babel-plugin-polyfill-corejs2": "^0.4.6", - "babel-plugin-polyfill-corejs3": "^0.8.5", - "babel-plugin-polyfill-regenerator": "^0.5.3", + "babel-plugin-polyfill-corejs2": "^0.4.8", + "babel-plugin-polyfill-corejs3": "^0.9.0", + "babel-plugin-polyfill-regenerator": "^0.5.5", "semver": "^6.3.1" }, "engines": { @@ -1507,9 +1522,9 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz", - "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", + "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1521,9 +1536,9 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz", - "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", + "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" @@ -1536,9 +1551,9 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz", - "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", + "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1550,9 +1565,9 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz", - "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", + "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1564,9 +1579,9 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz", - "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", + "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1578,9 +1593,9 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz", - "integrity": "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", + "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -1592,11 +1607,11 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz", - "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", + "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -1607,11 +1622,11 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz", - "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", + "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -1622,11 +1637,11 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz", - "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", + "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -1637,24 +1652,25 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.2.tgz", - "integrity": "sha512-BW3gsuDD+rvHL2VO2SjAUNTBe5YrjsTiDyqamPDWY723na3/yPQ65X5oQkFVJZ0o50/2d+svm1rkPoJeR1KxVQ==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.9.tgz", + "integrity": "sha512-3kBGTNBBk9DQiPoXYS0g0BYlwTQYUTifqgKTjxUwEUkduRT2QOa0FPGBJ+NROQhGyYO5BuTJwGvBnqKDykac6A==", "dependencies": { - "@babel/compat-data": "^7.23.2", - "@babel/helper-compilation-targets": "^7.22.15", + "@babel/compat-data": "^7.23.5", + "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.15", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.15", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.15", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.7", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.22.5", - "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@babel/plugin-syntax-import-assertions": "^7.23.3", + "@babel/plugin-syntax-import-attributes": "^7.23.3", "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", @@ -1666,59 +1682,58 @@ "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.22.5", - "@babel/plugin-transform-async-generator-functions": "^7.23.2", - "@babel/plugin-transform-async-to-generator": "^7.22.5", - "@babel/plugin-transform-block-scoped-functions": "^7.22.5", - "@babel/plugin-transform-block-scoping": "^7.23.0", - "@babel/plugin-transform-class-properties": "^7.22.5", - "@babel/plugin-transform-class-static-block": "^7.22.11", - "@babel/plugin-transform-classes": "^7.22.15", - "@babel/plugin-transform-computed-properties": "^7.22.5", - "@babel/plugin-transform-destructuring": "^7.23.0", - "@babel/plugin-transform-dotall-regex": "^7.22.5", - "@babel/plugin-transform-duplicate-keys": "^7.22.5", - "@babel/plugin-transform-dynamic-import": "^7.22.11", - "@babel/plugin-transform-exponentiation-operator": "^7.22.5", - "@babel/plugin-transform-export-namespace-from": "^7.22.11", - "@babel/plugin-transform-for-of": "^7.22.15", - "@babel/plugin-transform-function-name": "^7.22.5", - "@babel/plugin-transform-json-strings": "^7.22.11", - "@babel/plugin-transform-literals": "^7.22.5", - "@babel/plugin-transform-logical-assignment-operators": "^7.22.11", - "@babel/plugin-transform-member-expression-literals": "^7.22.5", - "@babel/plugin-transform-modules-amd": "^7.23.0", - "@babel/plugin-transform-modules-commonjs": "^7.23.0", - "@babel/plugin-transform-modules-systemjs": "^7.23.0", - "@babel/plugin-transform-modules-umd": "^7.22.5", + "@babel/plugin-transform-arrow-functions": "^7.23.3", + "@babel/plugin-transform-async-generator-functions": "^7.23.9", + "@babel/plugin-transform-async-to-generator": "^7.23.3", + "@babel/plugin-transform-block-scoped-functions": "^7.23.3", + "@babel/plugin-transform-block-scoping": "^7.23.4", + "@babel/plugin-transform-class-properties": "^7.23.3", + "@babel/plugin-transform-class-static-block": "^7.23.4", + "@babel/plugin-transform-classes": "^7.23.8", + "@babel/plugin-transform-computed-properties": "^7.23.3", + "@babel/plugin-transform-destructuring": "^7.23.3", + "@babel/plugin-transform-dotall-regex": "^7.23.3", + "@babel/plugin-transform-duplicate-keys": "^7.23.3", + "@babel/plugin-transform-dynamic-import": "^7.23.4", + "@babel/plugin-transform-exponentiation-operator": "^7.23.3", + "@babel/plugin-transform-export-namespace-from": "^7.23.4", + "@babel/plugin-transform-for-of": "^7.23.6", + "@babel/plugin-transform-function-name": "^7.23.3", + "@babel/plugin-transform-json-strings": "^7.23.4", + "@babel/plugin-transform-literals": "^7.23.3", + "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", + "@babel/plugin-transform-member-expression-literals": "^7.23.3", + "@babel/plugin-transform-modules-amd": "^7.23.3", + "@babel/plugin-transform-modules-commonjs": "^7.23.3", + "@babel/plugin-transform-modules-systemjs": "^7.23.9", + "@babel/plugin-transform-modules-umd": "^7.23.3", "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.22.5", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", - "@babel/plugin-transform-numeric-separator": "^7.22.11", - "@babel/plugin-transform-object-rest-spread": "^7.22.15", - "@babel/plugin-transform-object-super": "^7.22.5", - "@babel/plugin-transform-optional-catch-binding": "^7.22.11", - "@babel/plugin-transform-optional-chaining": "^7.23.0", - "@babel/plugin-transform-parameters": "^7.22.15", - "@babel/plugin-transform-private-methods": "^7.22.5", - "@babel/plugin-transform-private-property-in-object": "^7.22.11", - "@babel/plugin-transform-property-literals": "^7.22.5", - "@babel/plugin-transform-regenerator": "^7.22.10", - "@babel/plugin-transform-reserved-words": "^7.22.5", - "@babel/plugin-transform-shorthand-properties": "^7.22.5", - "@babel/plugin-transform-spread": "^7.22.5", - "@babel/plugin-transform-sticky-regex": "^7.22.5", - "@babel/plugin-transform-template-literals": "^7.22.5", - "@babel/plugin-transform-typeof-symbol": "^7.22.5", - "@babel/plugin-transform-unicode-escapes": "^7.22.10", - "@babel/plugin-transform-unicode-property-regex": "^7.22.5", - "@babel/plugin-transform-unicode-regex": "^7.22.5", - "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.23.3", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", + "@babel/plugin-transform-numeric-separator": "^7.23.4", + "@babel/plugin-transform-object-rest-spread": "^7.23.4", + "@babel/plugin-transform-object-super": "^7.23.3", + "@babel/plugin-transform-optional-catch-binding": "^7.23.4", + "@babel/plugin-transform-optional-chaining": "^7.23.4", + "@babel/plugin-transform-parameters": "^7.23.3", + "@babel/plugin-transform-private-methods": "^7.23.3", + "@babel/plugin-transform-private-property-in-object": "^7.23.4", + "@babel/plugin-transform-property-literals": "^7.23.3", + "@babel/plugin-transform-regenerator": "^7.23.3", + "@babel/plugin-transform-reserved-words": "^7.23.3", + "@babel/plugin-transform-shorthand-properties": "^7.23.3", + "@babel/plugin-transform-spread": "^7.23.3", + "@babel/plugin-transform-sticky-regex": "^7.23.3", + "@babel/plugin-transform-template-literals": "^7.23.3", + "@babel/plugin-transform-typeof-symbol": "^7.23.3", + "@babel/plugin-transform-unicode-escapes": "^7.23.3", + "@babel/plugin-transform-unicode-property-regex": "^7.23.3", + "@babel/plugin-transform-unicode-regex": "^7.23.3", + "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", "@babel/preset-modules": "0.1.6-no-external-plugins", - "@babel/types": "^7.23.0", - "babel-plugin-polyfill-corejs2": "^0.4.6", - "babel-plugin-polyfill-corejs3": "^0.8.5", - "babel-plugin-polyfill-regenerator": "^0.5.3", + "babel-plugin-polyfill-corejs2": "^0.4.8", + "babel-plugin-polyfill-corejs3": "^0.9.0", + "babel-plugin-polyfill-regenerator": "^0.5.5", "core-js-compat": "^3.31.0", "semver": "^6.3.1" }, @@ -1756,9 +1771,9 @@ "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" }, "node_modules/@babel/runtime": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz", - "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.9.tgz", + "integrity": "sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -1767,32 +1782,32 @@ } }, "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.23.9.tgz", + "integrity": "sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==", "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.23.9", + "@babel/types": "^7.23.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", - "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.9.tgz", + "integrity": "sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==", "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.0", - "@babel/types": "^7.23.0", - "debug": "^4.1.0", + "@babel/parser": "^7.23.9", + "@babel/types": "^7.23.9", + "debug": "^4.3.1", "globals": "^11.1.0" }, "engines": { @@ -1800,11 +1815,11 @@ } }, "node_modules/@babel/types": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", - "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz", + "integrity": "sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==", "dependencies": { - "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-string-parser": "^7.23.4", "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, @@ -1859,9 +1874,9 @@ } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "engines": { "node": ">=6.0.0" } @@ -1889,9 +1904,9 @@ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz", + "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -1952,9 +1967,9 @@ } }, "node_modules/@peertube/p2p-media-loader-core": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/@peertube/p2p-media-loader-core/-/p2p-media-loader-core-1.0.14.tgz", - "integrity": "sha512-tjQv1CNziNY+zYzcL1h4q6AA2WuBUZnBIeVyjWR/EsO1EEC1VMdvPsL02cqYLz9yvIxgycjeTsWCm6XDqNgXRw==", + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/@peertube/p2p-media-loader-core/-/p2p-media-loader-core-1.0.15.tgz", + "integrity": "sha512-RgUi3v4jT1+/8TEHj9NWCXVJW+p/m8fFJtcvh6FQxXZpz4u24pYbMFuM60gfboItuEA7xqo5C3XN8Y4kmOyXmw==", "dependencies": { "bittorrent-tracker": "^9.19.0", "debug": "^4.3.4", @@ -1964,11 +1979,11 @@ } }, "node_modules/@peertube/p2p-media-loader-hlsjs": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/@peertube/p2p-media-loader-hlsjs/-/p2p-media-loader-hlsjs-1.0.14.tgz", - "integrity": "sha512-ySUVgUvAFXCE5E94xxjfywQ8xzk3jy9UGVkgi5Oqq+QeY7uG+o7CZ+LsQ/RjXgWBD70tEnyyfADHtL+9FCnwyQ==", + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/@peertube/p2p-media-loader-hlsjs/-/p2p-media-loader-hlsjs-1.0.15.tgz", + "integrity": "sha512-A2GkuSHqXTjVMglx5rXwsEYgopE/yCyc7lrESdOhtpSx41tWYF7Oad37jyITfb2rTYqh2Mr2/b5iFOo4EgyAbg==", "dependencies": { - "@peertube/p2p-media-loader-core": "^1.0.14", + "@peertube/p2p-media-loader-core": "^1.0.15", "debug": "^4.3.4", "events": "^3.3.0", "m3u8-parser": "^4.7.1" @@ -1988,9 +2003,9 @@ } }, "node_modules/@types/babel__core": { - "version": "7.20.3", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.3.tgz", - "integrity": "sha512-54fjTSeSHwfan8AyHWrKbfBWiEUrNTZsUwPTDSNaaP1QDQIZbeNUg3a59E9D+375MzUw/x1vx2/0F5LBz+AeYA==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dependencies": { "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7", @@ -2000,100 +2015,100 @@ } }, "node_modules/@types/babel__generator": { - "version": "7.6.6", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.6.tgz", - "integrity": "sha512-66BXMKb/sUWbMdBNdMvajU7i/44RkrA3z/Yt1c7R5xejt8qh84iU54yUWCtm0QwGJlDcf/gg4zd/x4mpLAlb/w==", + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", "dependencies": { "@babel/types": "^7.0.0" } }, "node_modules/@types/babel__template": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.3.tgz", - "integrity": "sha512-ciwyCLeuRfxboZ4isgdNZi/tkt06m8Tw6uGbBSBgWrnnZGNXiEyM27xc/PjXGQLqlZ6ylbgHMnm7ccF9tCkOeQ==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" } }, "node_modules/@types/babel__traverse": { - "version": "7.20.3", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.3.tgz", - "integrity": "sha512-Lsh766rGEFbaxMIDH7Qa+Yha8cMVI3qAK6CHt3OR0YfxOIn5Z54iHiyDRycHrBqeIiqGa20Kpsv1cavfBKkRSw==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz", + "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==", "dependencies": { "@babel/types": "^7.20.7" } }, "node_modules/@types/body-parser": { - "version": "1.19.4", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.4.tgz", - "integrity": "sha512-N7UDG0/xiPQa2D/XrVJXjkWbpqHCd2sBaB32ggRF2l83RhPfamgKGF8gwwqyksS95qUS5ZYF9aF+lLPRlwI2UA==", + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", "dependencies": { "@types/connect": "*", "@types/node": "*" } }, "node_modules/@types/bonjour": { - "version": "3.5.12", - "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.12.tgz", - "integrity": "sha512-ky0kWSqXVxSqgqJvPIkgFkcn4C8MnRog308Ou8xBBIVo39OmUFy+jqNe0nPwLCDFxUpmT9EvT91YzOJgkDRcFg==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", "dependencies": { "@types/node": "*" } }, "node_modules/@types/clean-css": { - "version": "4.2.9", - "resolved": "https://registry.npmjs.org/@types/clean-css/-/clean-css-4.2.9.tgz", - "integrity": "sha512-pjzJ4n5eAXAz/L5Zur4ZymuJUvyo0Uh0iRnRI/1kADFLs76skDky0K0dX1rlv4iXXrJXNk3sxRWVJR7CMDroWA==", + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/@types/clean-css/-/clean-css-4.2.11.tgz", + "integrity": "sha512-Y8n81lQVTAfP2TOdtJJEsCoYl1AnOkqDqMvXb9/7pfgZZ7r8YrEyurrAvAoAjHOGXKRybay+5CsExqIH6liccw==", "dependencies": { "@types/node": "*", "source-map": "^0.6.0" } }, "node_modules/@types/connect": { - "version": "3.4.37", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.37.tgz", - "integrity": "sha512-zBUSRqkfZ59OcwXon4HVxhx5oWCJmc0OtBTK05M+p0dYjgN6iTwIL2T/WbsQZrEsdnwaF9cWQ+azOnpPvIqY3Q==", + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "dependencies": { "@types/node": "*" } }, "node_modules/@types/connect-history-api-fallback": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.2.tgz", - "integrity": "sha512-gX2j9x+NzSh4zOhnRPSdPPmTepS4DfxES0AvIFv3jGv5QyeAJf6u6dY5/BAoAJU9Qq1uTvwOku8SSC2GnCRl6Q==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", "dependencies": { "@types/express-serve-static-core": "*", "@types/node": "*" } }, "node_modules/@types/eslint": { - "version": "8.44.6", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.6.tgz", - "integrity": "sha512-P6bY56TVmX8y9J87jHNgQh43h6VVU+6H7oN7hgvivV81K2XY8qJZ5vqPy/HdUoVIelii2kChYVzQanlswPWVFw==", + "version": "8.56.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.2.tgz", + "integrity": "sha512-uQDwm1wFHmbBbCZCqAlq6Do9LYwByNZHWzXppSnay9SuwJ+VRbjkbLABer54kcPnMSlG6Fdiy2yaFXm/z9Z5gw==", "dependencies": { "@types/estree": "*", "@types/json-schema": "*" } }, "node_modules/@types/eslint-scope": { - "version": "3.7.6", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.6.tgz", - "integrity": "sha512-zfM4ipmxVKWdxtDaJ3MP3pBurDXOCoyjvlpE3u6Qzrmw4BPbfm4/ambIeTk/r/J0iq/+2/xp0Fmt+gFvXJY2PQ==", + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", "dependencies": { "@types/eslint": "*", "@types/estree": "*" } }, "node_modules/@types/estree": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.3.tgz", - "integrity": "sha512-CS2rOaoQ/eAgAfcTfq6amKG7bsN+EMcgGY4FAFQdvSj2y1ixvOZTUA9mOtCai7E1SYu283XNw7urKK30nP3wkQ==" + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" }, "node_modules/@types/express": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.20.tgz", - "integrity": "sha512-rOaqlkgEvOW495xErXMsmyX3WKBInbhG5eqojXYi3cGUaLoRDlXa5d52fkfWZT963AZ3v2eZ4MbKE6WpDAGVsw==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", @@ -2112,9 +2127,9 @@ } }, "node_modules/@types/express/node_modules/@types/express-serve-static-core": { - "version": "4.17.39", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.39.tgz", - "integrity": "sha512-BiEUfAiGCOllomsRAZOiMFP7LAnrifHpt56pc4Z7l9K6ACyN06Ns1JLMBxwkfLOjJRlSf06NwWsT7yzfpaVpyQ==", + "version": "4.17.43", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.43.tgz", + "integrity": "sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==", "dependencies": { "@types/node": "*", "@types/qs": "*", @@ -2132,46 +2147,46 @@ } }, "node_modules/@types/http-errors": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.3.tgz", - "integrity": "sha512-pP0P/9BnCj1OVvQR2lF41EkDG/lWWnDyA203b/4Fmi2eTyORnBtcDoKDwjWQthELrBvWkMOrvSOnZ8OVlW6tXA==" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==" }, "node_modules/@types/http-proxy": { - "version": "1.17.13", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.13.tgz", - "integrity": "sha512-GkhdWcMNiR5QSQRYnJ+/oXzu0+7JJEPC8vkWXK351BkhjraZF+1W13CUYARUvX9+NqIU2n6YHA4iwywsc/M6Sw==", + "version": "1.17.14", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", + "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", "dependencies": { "@types/node": "*" } }, "node_modules/@types/imagemin": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/@types/imagemin/-/imagemin-8.0.3.tgz", - "integrity": "sha512-se/hpaYxu5DyvPqmUEwbupmbQSx6JNislk0dkoIgWSmArkj+Ow9pGG9pGz8MRmbQDfGNYNzqwPQKHCUy+K+jpQ==", + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/@types/imagemin/-/imagemin-8.0.5.tgz", + "integrity": "sha512-tah3dm+5sG+fEDAz6CrQ5evuEaPX9K6DF3E5a01MPOKhA2oGBoC+oA5EJzSugB905sN4DE19EDzldT2Cld2g6Q==", "dependencies": { "@types/node": "*" } }, "node_modules/@types/imagemin-gifsicle": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/@types/imagemin-gifsicle/-/imagemin-gifsicle-7.0.3.tgz", - "integrity": "sha512-GQBKOk9doOd0Xp7OvO4QDl7U0Vkwk2Ps7J0rxafdAa7wG9lu7idvZTm8TtSZiRtHENdkW88Kz8OjmjMlgeeC5w==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@types/imagemin-gifsicle/-/imagemin-gifsicle-7.0.4.tgz", + "integrity": "sha512-ZghMBd/Jgqg5utTJNPmvf6DkuHzMhscJ8vgf/7MUGCpO+G+cLrhYltL+5d+h3A1B4W73S2SrmJZ1jS5LACpX+A==", "dependencies": { "@types/imagemin": "*" } }, "node_modules/@types/imagemin-mozjpeg": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/@types/imagemin-mozjpeg/-/imagemin-mozjpeg-8.0.3.tgz", - "integrity": "sha512-+U/ibETP2/oRqeuaaXa67dEpKHfzmfK0OBVC09AR4c1CIFAKjQ5xY+dxH+fjoMQRlwdcRQLkn/ALtnxSl3Xsqw==", + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/@types/imagemin-mozjpeg/-/imagemin-mozjpeg-8.0.4.tgz", + "integrity": "sha512-ZCAxV8SYJB8ehwHpnbRpHjg5Wc4HcyuAMiDhXbkgC7gujDoOTyHO3dhDkUtZ1oK1DLBRZapqG9etdLVhUml7yQ==", "dependencies": { "@types/imagemin": "*" } }, "node_modules/@types/imagemin-optipng": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@types/imagemin-optipng/-/imagemin-optipng-5.2.3.tgz", - "integrity": "sha512-Q80ANbJYn+WgKkWVfx9f7/q4LR6qun4NIiuV1eRWCg8KCAmNrU7ZH16a2hGs9kfkFqyJlhBv6oV9SDXe1vL3aQ==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@types/imagemin-optipng/-/imagemin-optipng-5.2.4.tgz", + "integrity": "sha512-mvKnDMC8eCYZetAQudjs1DbgpR84WhsTx1wgvdiXnpuUEti3oJ+MaMYBRWPY0JlQ4+y4TXKOfa7+LOuT8daegQ==", "dependencies": { "@types/imagemin": "*" } @@ -2186,14 +2201,14 @@ } }, "node_modules/@types/json-schema": { - "version": "7.0.14", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz", - "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==" + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" }, "node_modules/@types/mime": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.3.tgz", - "integrity": "sha512-i8MBln35l856k5iOhKk2XJ4SeAWg75mLIpZB4v6imOagKL6twsukBZGDMNhdOVk7yRFTMPpfILocMos59Q1otQ==" + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.4.tgz", + "integrity": "sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw==" }, "node_modules/@types/minimatch": { "version": "5.1.2", @@ -2201,27 +2216,35 @@ "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==" }, "node_modules/@types/node": { - "version": "20.8.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.7.tgz", - "integrity": "sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ==", + "version": "20.11.19", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.19.tgz", + "integrity": "sha512-7xMnVEcZFu0DikYjWOlRq7NTPETrm7teqUT2WkQjrTIkEgUyyGdWsj/Zg8bEJt5TNklzbPD1X3fqfsHw3SpapQ==", "dependencies": { - "undici-types": "~5.25.1" + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/node-forge": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "dependencies": { + "@types/node": "*" } }, "node_modules/@types/parse-json": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.1.tgz", - "integrity": "sha512-3YmXzzPAdOTVljVMkTMBdBEvlOLg2cDQaDhnnhT3nT9uDbnJzjWhKlzb+desT12Y7tGqaN6d+AbozcKzyL36Ng==" + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==" }, "node_modules/@types/qs": { - "version": "6.9.9", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.9.tgz", - "integrity": "sha512-wYLxw35euwqGvTDx6zfY1vokBFnsK0HNrzc6xNHchxfO2hpuRg74GbkEW7e3sSmPvj0TjCDT1VCa6OtHXnubsg==" + "version": "6.9.11", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.11.tgz", + "integrity": "sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==" }, "node_modules/@types/range-parser": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.6.tgz", - "integrity": "sha512-+0autS93xyXizIYiyL02FCY8N+KkKPhILhcUSA276HxzreZ16kl+cmwvV2qAM/PuCCwPXzOXOWhiPcw20uSFcA==" + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==" }, "node_modules/@types/retry": { "version": "0.12.0", @@ -2229,31 +2252,31 @@ "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" }, "node_modules/@types/send": { - "version": "0.17.3", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.3.tgz", - "integrity": "sha512-/7fKxvKUoETxjFUsuFlPB9YndePpxxRAOfGC/yJdc9kTjTeP5kRCTzfnE8kPUKCeyiyIZu0YQ76s50hCedI1ug==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", "dependencies": { "@types/mime": "^1", "@types/node": "*" } }, "node_modules/@types/send/node_modules/@types/mime": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.4.tgz", - "integrity": "sha512-1Gjee59G25MrQGk8bsNvC6fxNiRgUlGn2wlhGf95a59DrprnnHk80FIMMFG9XHMdrfsuA119ht06QPDXA1Z7tw==" + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" }, "node_modules/@types/serve-index": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.3.tgz", - "integrity": "sha512-4KG+yMEuvDPRrYq5fyVm/I2uqAJSAwZK9VSa+Zf+zUq9/oxSSvy3kkIqyL+jjStv6UCVi8/Aho0NHtB1Fwosrg==", + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", "dependencies": { "@types/express": "*" } }, "node_modules/@types/serve-static": { - "version": "1.15.4", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.4.tgz", - "integrity": "sha512-aqqNfs1XTF0HDrFdlY//+SGUxmdSUbjeRXb5iaZc3x0/vMbYmdw9qvOgHWOyyLFxSSRnUuP5+724zBgfw8/WAw==", + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz", + "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==", "dependencies": { "@types/http-errors": "*", "@types/mime": "*", @@ -2261,9 +2284,9 @@ } }, "node_modules/@types/sockjs": { - "version": "0.3.35", - "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.35.tgz", - "integrity": "sha512-tIF57KB+ZvOBpAQwSaACfEu7htponHXaFzP7RfKYgsOS0NoYnn+9+jzp7bbq4fWerizI3dTB4NfAZoyeQKWJLw==", + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", "dependencies": { "@types/node": "*" } @@ -2274,9 +2297,9 @@ "integrity": "sha512-AZU7vQcy/4WFEuwnwsNsJnFwupIpbllH1++LXScN6uxT1Z4zPzdrWG97w4/I7eFKFTvfy/bHFStWjdBAg2Vjug==" }, "node_modules/@types/ws": { - "version": "8.5.8", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.8.tgz", - "integrity": "sha512-flUksGIQCnJd6sZ1l5dqCEG/ksaoAg/eUwiLAGTJQcfgvZJKF++Ta4bJA6A5aPSJmsr+xlseHn4KLgVlNnvPTg==", + "version": "8.5.10", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", + "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", "dependencies": { "@types/node": "*" } @@ -2296,13 +2319,16 @@ } }, "node_modules/@vue/compiler-sfc": { - "version": "2.7.14", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.14.tgz", - "integrity": "sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA==", + "version": "2.7.16", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.16.tgz", + "integrity": "sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg==", "dependencies": { - "@babel/parser": "^7.18.4", + "@babel/parser": "^7.23.5", "postcss": "^8.4.14", "source-map": "^0.6.1" + }, + "optionalDependencies": { + "prettier": "^1.18.2 || ^2.0.0" } }, "node_modules/@vue/component-compiler-utils": { @@ -2543,9 +2569,9 @@ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" }, "node_modules/@zip.js/zip.js": { - "version": "2.7.30", - "resolved": "https://registry.npmjs.org/@zip.js/zip.js/-/zip.js-2.7.30.tgz", - "integrity": "sha512-nhMvQCj+TF1ATBqYzFds7v+yxPBhdDYHh8J341KtC1D2UrVBUIYcYK4Jy1/GiTsxOXEiKOXSUxvPG/XR+7jMqw==", + "version": "2.7.34", + "resolved": "https://registry.npmjs.org/@zip.js/zip.js/-/zip.js-2.7.34.tgz", + "integrity": "sha512-SWAK+hLYKRHswhakNUirPYrdsflSFOxykUckfbWDcPvP8tjLuV5EWyd3GHV0hVaJLDps40jJnv8yQVDbWnQDfg==", "engines": { "bun": ">=0.7.0", "deno": ">=1.0.0", @@ -2565,9 +2591,9 @@ } }, "node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "bin": { "acorn": "bin/acorn" }, @@ -2724,9 +2750,9 @@ } }, "node_modules/array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, "node_modules/array-union": { "version": "2.1.0", @@ -2774,10 +2800,16 @@ "inherits": "2.0.3" } }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, "node_modules/autoprefixer": { - "version": "10.4.16", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz", - "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==", + "version": "10.4.17", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.17.tgz", + "integrity": "sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==", "funding": [ { "type": "opencollective", @@ -2793,9 +2825,9 @@ } ], "dependencies": { - "browserslist": "^4.21.10", - "caniuse-lite": "^1.0.30001538", - "fraction.js": "^4.3.6", + "browserslist": "^4.22.2", + "caniuse-lite": "^1.0.30001578", + "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", "picocolors": "^1.0.0", "postcss-value-parser": "^4.2.0" @@ -2811,12 +2843,14 @@ } }, "node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", + "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", "dev": true, "dependencies": { - "follow-redirects": "^1.14.0" + "follow-redirects": "^1.15.4", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, "node_modules/babel-helper-vue-jsx-merge-props": { @@ -2843,12 +2877,12 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz", - "integrity": "sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==", + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.8.tgz", + "integrity": "sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg==", "dependencies": { "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.4.3", + "@babel/helper-define-polyfill-provider": "^0.5.0", "semver": "^6.3.1" }, "peerDependencies": { @@ -2864,23 +2898,23 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.5.tgz", - "integrity": "sha512-Q6CdATeAvbScWPNLB8lzSO7fgUVBkQt6zLgNlfyeCr/EQaEQR+bWiBYYPYAFyE528BMjRhL+1QBMOI4jc/c5TA==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz", + "integrity": "sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.3", - "core-js-compat": "^3.32.2" + "@babel/helper-define-polyfill-provider": "^0.5.0", + "core-js-compat": "^3.34.0" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz", - "integrity": "sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz", + "integrity": "sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.3" + "@babel/helper-define-polyfill-provider": "^0.5.0" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -3089,12 +3123,10 @@ } }, "node_modules/bonjour-service": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.1.tgz", - "integrity": "sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", + "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", "dependencies": { - "array-flatten": "^2.1.2", - "dns-equal": "^1.0.0", "fast-deep-equal": "^3.1.3", "multicast-dns": "^7.2.5" } @@ -3205,19 +3237,22 @@ } }, "node_modules/browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz", + "integrity": "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==", "dependencies": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", + "bn.js": "^5.2.1", + "browserify-rsa": "^4.1.0", "create-hash": "^1.2.0", "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", + "elliptic": "^6.5.4", "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" + "parse-asn1": "^5.1.6", + "readable-stream": "^3.6.2", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 4" } }, "node_modules/browserify-sign/node_modules/readable-stream": { @@ -3242,9 +3277,9 @@ } }, "node_modules/browserslist": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", - "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", "funding": [ { "type": "opencollective", @@ -3260,9 +3295,9 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001541", - "electron-to-chromium": "^1.4.535", - "node-releases": "^2.0.13", + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", "update-browserslist-db": "^1.0.13" }, "bin": { @@ -3319,13 +3354,18 @@ } }, "node_modules/call-bind": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", - "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.1", - "set-function-length": "^1.1.1" + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3360,9 +3400,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001553", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001553.tgz", - "integrity": "sha512-N0ttd6TrFfuqKNi+pMgWJTb9qrdJu4JSpgPFLe/lrD19ugC6fZgF0pUewRowDwzdDnb9V41mFcdlYgl/PyKf4A==", + "version": "1.0.30001588", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001588.tgz", + "integrity": "sha512-+hVY9jE44uKLkH0SrUTqxjxqNTOWHsbnQDIKjwkZ3lNTzUUVdBLBGXtj/q5Mp5u98r3droaZAewQuEDzjQdZlQ==", "funding": [ { "type": "opencollective", @@ -3441,15 +3481,9 @@ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -3462,6 +3496,9 @@ "engines": { "node": ">= 8.10.0" }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, "optionalDependencies": { "fsevents": "~2.3.2" } @@ -3507,9 +3544,9 @@ } }, "node_modules/clean-css": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz", - "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", "dependencies": { "source-map": "~0.6.0" }, @@ -3605,6 +3642,18 @@ "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/commander": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", @@ -3770,9 +3819,9 @@ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" }, "node_modules/core-js": { - "version": "3.33.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.33.1.tgz", - "integrity": "sha512-qVSq3s+d4+GsqN0teRCJtM6tdEEXyWxjzbhVrCHmBS5ZTM0FS2MOS0D13dUXAWDUN6a+lHI/N1hF9Ytz6iLl9Q==", + "version": "3.36.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.36.0.tgz", + "integrity": "sha512-mt7+TUBbTFg5+GngsAxeKBTl5/VS0guFeJacYge9OmHb+m058UwwIm41SE9T4Den7ClatV57B6TYTuJ0CX1MAw==", "hasInstallScript": true, "funding": { "type": "opencollective", @@ -3780,11 +3829,11 @@ } }, "node_modules/core-js-compat": { - "version": "3.33.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.1.tgz", - "integrity": "sha512-6pYKNOgD/j/bkC5xS5IIg6bncid3rfrI42oBH1SQJbsmYPKF7rhzcFzYCcxYMmNQQ0rCEB8WqpW7QHndOggaeQ==", + "version": "3.36.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.0.tgz", + "integrity": "sha512-iV9Pd/PsgjNWBXeq8XRtWVSgz2tKAfhfvBs7qxYty+RlRd+OCksaWmOnc4JKrTc1cToXL1N0s3l/vwlxPtdElw==", "dependencies": { - "browserslist": "^4.22.1" + "browserslist": "^4.22.3" }, "funding": { "type": "opencollective", @@ -3928,20 +3977,20 @@ } }, "node_modules/css-loader": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz", - "integrity": "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==", + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.10.0.tgz", + "integrity": "sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw==", "dev": true, "peer": true, "dependencies": { "icss-utils": "^5.1.0", - "postcss": "^8.4.21", + "postcss": "^8.4.33", "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.3", - "postcss-modules-scope": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.4", + "postcss-modules-scope": "^3.1.1", "postcss-modules-values": "^4.0.0", "postcss-value-parser": "^4.2.0", - "semver": "^7.3.8" + "semver": "^7.5.4" }, "engines": { "node": ">= 12.13.0" @@ -3951,7 +4000,16 @@ "url": "https://opencollective.com/webpack" }, "peerDependencies": { + "@rspack/core": "0.x || 1.x", "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } } }, "node_modules/css-loader/node_modules/lru-cache": { @@ -3968,9 +4026,9 @@ } }, "node_modules/css-loader/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "peer": true, "dependencies": { @@ -4138,9 +4196,9 @@ } }, "node_modules/csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, "node_modules/custom-event-polyfill": { "version": "1.0.7", @@ -4200,16 +4258,19 @@ } }, "node_modules/define-data-property": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", - "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/define-lazy-prop": { @@ -4255,6 +4316,15 @@ "node": ">=8" } }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -4317,11 +4387,6 @@ "node": ">=8" } }, - "node_modules/dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==" - }, "node_modules/dns-packet": { "version": "5.6.1", "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", @@ -4454,9 +4519,9 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/electron-to-chromium": { - "version": "1.4.563", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.563.tgz", - "integrity": "sha512-dg5gj5qOgfZNkPNeyKBZQAQitIQ/xwfIDmEQJHCbXaD9ebTZxwJXUsDYcBlAvZGZLi+/354l35J1wkmP6CqYaw==" + "version": "1.4.673", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.673.tgz", + "integrity": "sha512-zjqzx4N7xGdl5468G+vcgzDhaHkaYgVcf9MqgexcTqsl2UHSCmOj/Bi3HAprg4BZCpC7HyD8a6nZl6QAZf72gw==" }, "node_modules/elliptic": { "version": "6.5.4", @@ -4519,9 +4584,9 @@ } }, "node_modules/envinfo": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.10.0.tgz", - "integrity": "sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.1.tgz", + "integrity": "sha512-8PiZgZNIB4q/Lw4AhOvAfB/ityHAd2bli3lESSWmWSzSsl5dKpy5N1d1Rfkd2teq/g9xN90lc6o98DOjMeYHpg==", "bin": { "envinfo": "dist/cli.js" }, @@ -4542,10 +4607,29 @@ "is-arrayish": "^0.2.1" } }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-module-lexer": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.1.tgz", - "integrity": "sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==" + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", + "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==" }, "node_modules/es6-object-assign": { "version": "1.1.0", @@ -4553,9 +4637,9 @@ "integrity": "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==" }, "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "engines": { "node": ">=6" } @@ -4772,11 +4856,6 @@ "node": ">= 0.10.0" } }, - "node_modules/express/node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - }, "node_modules/express/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -4810,9 +4889,9 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "node_modules/fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -4838,9 +4917,9 @@ } }, "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dependencies": { "reusify": "^1.0.4" } @@ -4994,9 +5073,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.3", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", - "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", + "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", "funding": [ { "type": "individual", @@ -5012,6 +5091,20 @@ } } }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -5106,15 +5199,19 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", - "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dependencies": { + "es-errors": "^1.3.0", "function-bind": "^1.1.2", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", "hasown": "^2.0.0" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -5235,11 +5332,11 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", - "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dependencies": { - "get-intrinsic": "^1.2.2" + "es-define-property": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -5308,9 +5405,9 @@ } }, "node_modules/hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz", + "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==", "dependencies": { "function-bind": "^1.1.2" }, @@ -5327,9 +5424,9 @@ } }, "node_modules/hls.js": { - "version": "1.4.12", - "resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.4.12.tgz", - "integrity": "sha512-1RBpx2VihibzE3WE9kGoVCtrhhDWTzydzElk/kyRbEOLnb1WIE+3ZabM/L8BqKFTCL3pUy4QzhXgD1Q6Igr1JA==" + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.5.6.tgz", + "integrity": "sha512-rmlaIEfLuSwqRtYLeTk30ebYli5qNK2urdkEcqYoBezRpV+MFHhZnMX77lHWW+EMjNlwr2sx2apfqq54E3yXnA==" }, "node_modules/hmac-drbg": { "version": "1.0.1", @@ -5597,9 +5694,9 @@ ] }, "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "engines": { "node": ">= 4" } @@ -5660,9 +5757,9 @@ } }, "node_modules/immutable": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", - "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz", + "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==", "dev": true }, "node_modules/import-fresh": { @@ -5739,9 +5836,21 @@ } }, "node_modules/ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.9.tgz", + "integrity": "sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ==" + }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } }, "node_modules/ipaddr.js": { "version": "2.1.0", @@ -5964,6 +6073,11 @@ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==" + }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -6180,9 +6294,9 @@ } }, "node_modules/laravel-mix/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -6568,9 +6682,9 @@ } }, "node_modules/moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", "engines": { "node": "*" } @@ -6593,9 +6707,9 @@ } }, "node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "funding": [ { "type": "github", @@ -6665,9 +6779,9 @@ } }, "node_modules/node-gyp-build": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.1.tgz", - "integrity": "sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.0.tgz", + "integrity": "sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==", "optional": true, "bin": { "node-gyp-build": "bin.js", @@ -6730,9 +6844,9 @@ } }, "node_modules/node-notifier/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -6763,9 +6877,9 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" }, "node_modules/normalize-path": { "version": "3.0.0", @@ -6841,12 +6955,12 @@ } }, "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", "has-symbols": "^1.0.3", "object-keys": "^1.1.1" }, @@ -7184,9 +7298,9 @@ } }, "node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "version": "8.4.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", + "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", "funding": [ { "type": "opencollective", @@ -7202,7 +7316,7 @@ } ], "dependencies": { - "nanoid": "^3.3.6", + "nanoid": "^3.3.7", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" }, @@ -7359,9 +7473,9 @@ } }, "node_modules/postcss-loader/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -7481,9 +7595,9 @@ } }, "node_modules/postcss-modules-local-by-default": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz", - "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.4.tgz", + "integrity": "sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q==", "dependencies": { "icss-utils": "^5.0.0", "postcss-selector-parser": "^6.0.2", @@ -7497,9 +7611,9 @@ } }, "node_modules/postcss-modules-scope": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", - "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.1.1.tgz", + "integrity": "sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA==", "dependencies": { "postcss-selector-parser": "^6.0.4" }, @@ -7694,9 +7808,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", - "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "version": "6.0.15", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz", + "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -7743,7 +7857,6 @@ "version": "2.8.8", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", - "dev": true, "optional": true, "bin": { "prettier": "bin-prettier.js" @@ -7801,6 +7914,12 @@ "node": ">= 0.10" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, "node_modules/pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", @@ -8019,9 +8138,9 @@ } }, "node_modules/regenerator-runtime": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", - "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" }, "node_modules/regenerator-transform": { "version": "0.15.2", @@ -8032,9 +8151,9 @@ } }, "node_modules/regex-parser": { - "version": "2.2.11", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", - "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.3.0.tgz", + "integrity": "sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg==", "dev": true }, "node_modules/regexpu-core": { @@ -8280,9 +8399,9 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/sass": { - "version": "1.69.4", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.4.tgz", - "integrity": "sha512-+qEreVhqAy8o++aQfCJwp0sklr2xyEzkm9Pp/Igu9wNPoe7EZEQ8X/MBvvXggI2ql607cxKg/RKOwDj6pp2XDA==", + "version": "1.71.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.71.0.tgz", + "integrity": "sha512-HKKIKf49Vkxlrav3F/w6qRuPcmImGVbIXJ2I3Kg0VMA+3Bav+8yE9G5XmP5lMj6nl4OlqbPftGAscNaNu28b8w==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", @@ -8357,10 +8476,11 @@ "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==" }, "node_modules/selfsigned": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", - "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", "dependencies": { + "@types/node-forge": "^1.3.0", "node-forge": "^1" }, "engines": { @@ -8418,9 +8538,9 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/serialize-javascript": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", - "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dependencies": { "randombytes": "^2.1.0" } @@ -8510,14 +8630,16 @@ } }, "node_modules/set-function-length": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", - "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz", + "integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==", "dependencies": { - "define-data-property": "^1.1.1", - "get-intrinsic": "^1.2.1", + "define-data-property": "^1.1.2", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.3", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" + "has-property-descriptors": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -8591,13 +8713,17 @@ "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==" }, "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.5.tgz", + "integrity": "sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==", "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8782,23 +8908,18 @@ } }, "node_modules/socks": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", - "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.3.tgz", + "integrity": "sha512-vfuYK48HXCTFD03G/1/zkIls3Ebr2YNa4qU9gHDZdblHLiqhJrJGkY3+0Nx0JpN9qBhJbVObc1CNciT1bIZJxw==", "dependencies": { - "ip": "^2.0.0", + "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" }, "engines": { - "node": ">= 10.13.0", + "node": ">= 10.0.0", "npm": ">= 3.0.0" } }, - "node_modules/socks/node_modules/ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" - }, "node_modules/source-list-map": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", @@ -8870,6 +8991,11 @@ "node": ">= 6" } }, + "node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" + }, "node_modules/stable": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", @@ -8885,9 +9011,9 @@ } }, "node_modules/std-env": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.4.3.tgz", - "integrity": "sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q==" + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz", + "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==" }, "node_modules/stream-browserify": { "version": "2.0.2", @@ -9075,9 +9201,9 @@ } }, "node_modules/terser": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.22.0.tgz", - "integrity": "sha512-hHZVLgRA2z4NWcN6aS5rQDc+7Dcy58HOf2zbYwmFcQ+ua3h6eEFf5lIDKTzbWwlazPyOZsFQO8V80/IjVNExEw==", + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.27.1.tgz", + "integrity": "sha512-29wAr6UU/oQpnTw5HoadwjUZnFQXGdOfj0LjZ4sVxzqwHh/QVkvr7m8y9WoR4iN3FRitVduTc6KdjcW38Npsug==", "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -9092,15 +9218,15 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.9", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", - "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.17", + "@jridgewell/trace-mapping": "^0.3.20", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.1", - "terser": "^5.16.8" + "terser": "^5.26.0" }, "engines": { "node": ">= 10.13.0" @@ -9241,9 +9367,9 @@ } }, "node_modules/undici-types": { - "version": "5.25.3", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz", - "integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==" + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", @@ -9282,9 +9408,9 @@ } }, "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "engines": { "node": ">= 10.0.0" } @@ -9340,9 +9466,9 @@ } }, "node_modules/uri-js/node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "engines": { "node": ">=6" } @@ -9427,11 +9553,12 @@ "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" }, "node_modules/vue": { - "version": "2.7.14", - "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.14.tgz", - "integrity": "sha512-b2qkFyOM0kwqWFuQmgd4o+uHGU7T+2z3T+WQp8UBjADfEv2n4FEMffzBmCKNP0IGzOEEfYjvtcC62xaSKeQDrQ==", + "version": "2.7.16", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.16.tgz", + "integrity": "sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw==", + "deprecated": "Vue 2 has reached EOL and is no longer actively maintained. See https://v2.vuejs.org/eol/ for more details.", "dependencies": { - "@vue/compiler-sfc": "2.7.14", + "@vue/compiler-sfc": "2.7.16", "csstype": "^3.1.0" } }, @@ -9617,9 +9744,9 @@ } }, "node_modules/vue-template-compiler": { - "version": "2.7.14", - "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz", - "integrity": "sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==", + "version": "2.7.16", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz", + "integrity": "sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==", "dev": true, "dependencies": { "de-indent": "^1.0.2", @@ -9693,18 +9820,18 @@ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "node_modules/webpack": { - "version": "5.89.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.89.0.tgz", - "integrity": "sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==", + "version": "5.90.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.2.tgz", + "integrity": "sha512-ziXu8ABGr0InCMEYFnHrYweinHK2PWrMqnwdHk2oK3rRhv/1B+2FnfwYv5oD+RrknK/Pp/Hmyvu+eAsaMYhzCw==", "dependencies": { "@types/eslint-scope": "^3.7.3", - "@types/estree": "^1.0.0", + "@types/estree": "^1.0.5", "@webassemblyjs/ast": "^1.11.5", "@webassemblyjs/wasm-edit": "^1.11.5", "@webassemblyjs/wasm-parser": "^1.11.5", "acorn": "^8.7.1", "acorn-import-assertions": "^1.9.0", - "browserslist": "^4.14.5", + "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", "enhanced-resolve": "^5.15.0", "es-module-lexer": "^1.2.1", @@ -9718,7 +9845,7 @@ "neo-async": "^2.6.2", "schema-utils": "^3.2.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.7", + "terser-webpack-plugin": "^5.3.10", "watchpack": "^2.4.0", "webpack-sources": "^3.2.3" }, @@ -10017,9 +10144,9 @@ } }, "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.14.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", - "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", "engines": { "node": ">=10.0.0" }, diff --git a/package.json b/package.json index 6598175d9..8ecb08ae7 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ }, "devDependencies": { "acorn": "^8.7.1", - "axios": "^0.21.1", + "axios": ">=1.6.0", "bootstrap": "^4.5.2", "cross-env": "^5.2.1", "jquery": "^3.6.0", diff --git a/public/js/account-import.js b/public/js/account-import.js index b68bfb495..1acfa8245 100644 --- a/public/js/account-import.js +++ b/public/js/account-import.js @@ -1,2 +1,2 @@ /*! For license information please see account-import.js.LICENSE.txt */ -(self.webpackChunkpixelfed=self.webpackChunkpixelfed||[]).push([[4825],{55185:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>u});var i=n(22093);function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function a(t){return function(t){if(Array.isArray(t))return o(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(!t)return;if("string"==typeof t)return o(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return o(t,e)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function o(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n=0;--a){var o=this.tryEntries[a],s=o.completion;if("root"===o.tryLoc)return r("end");if(o.tryLoc<=this.prev){var l=i.call(o,"catchLoc"),c=i.call(o,"finallyLoc");if(l&&c){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&i.call(r,"finallyLoc")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),E(n),b}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;E(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(e,n,i){return this.delegate={iterator:A(e),resultName:n,nextLoc:i},"next"===this.method&&(this.arg=t),b}},e}function l(t,e,n,i,r,a,o){try{var s=t[a](o),l=s.value}catch(t){return void n(t)}s.done?e(l):Promise.resolve(l).then(i,r)}function c(t){return function(){var e=this,n=arguments;return new Promise((function(i,r){var a=t.apply(e,n);function o(t){l(a,i,r,o,s,"next",t)}function s(t){l(a,i,r,o,s,"throw",t)}o(void 0)}))}}const u={data:function(){return{page:1,step:1,toggleLimit:100,config:{},showDisabledWarning:!1,showNotAllowedWarning:!1,invalidArchive:!1,loaded:!1,existing:[],zipName:void 0,zipFiles:[],postMeta:[],imageCache:[],includeArchives:!1,selectedMedia:[],selectedPostsCounter:0,detailsModalShow:!1,modalData:{},importedPosts:[],finishedCount:void 0,processingCount:void 0,showUploadLoader:!1,importButtonLoading:!1}},mounted:function(){this.fetchConfig()},methods:{fetchConfig:function(){var t=this;axios.get("/api/local/import/ig/config").then((function(e){t.config=e.data,0==e.data.enabled?(t.showDisabledWarning=!0,t.loaded=!0):0==e.data.allowed?(t.showNotAllowedWarning=!0,t.loaded=!0):t.fetchExisting()}))},fetchExisting:function(){var t=this;axios.post("/api/local/import/ig/existing").then((function(e){t.existing=e.data})).finally((function(){t.fetchProcessing()}))},fetchProcessing:function(){var t=this;axios.post("/api/local/import/ig/processing").then((function(e){t.processingCount=e.data.processing_count,t.finishedCount=e.data.finished_count})).finally((function(){t.loaded=!0}))},selectArchive:function(){var t=this;event.currentTarget.blur(),swal({title:"Upload Archive",icon:"success",text:"The .zip archive is probably named something like username_20230606.zip, and was downloaded from the Instagram.com website.",buttons:{cancel:"Cancel",danger:{text:"Upload zip archive",value:"upload"}}}).then((function(e){t.$refs.zipInput.click()}))},zipInputChanged:function(t){var e=this;this.step=2,this.zipName=t.target.files[0].name,this.showUploadLoader=!0,setTimeout((function(){e.reviewImports()}),1e3),setTimeout((function(){e.showUploadLoader=!1}),3e3)},reviewImports:function(){this.invalidArchive=!1,this.checkZip()},model:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new i.ZipReader(new i.BlobReader(t)).getEntries(e)},formatDate:function(t){return(!(arguments.length>1&&void 0!==arguments[1])||arguments[1]?new Date(1e3*t):new Date(t)).toLocaleDateString()},getFileNameUrl:function(t){return this.imageCache.filter((function(e){return e.filename===t})).map((function(t){return t.blob}))},showDetailsModal:function(t){this.modalData=t,this.detailsModalShow=!0,setTimeout((function(){pixelfed.readmore()}),500)},fixFacebookEncoding:function(t){return c(s().mark((function e(){var n,i;return s().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.replace(/\\u00([a-f0-9]{2})/g,(function(t){return String.fromCharCode(parseInt(t.slice(2),16))})),i=Array.from(n,(function(t){return t.charCodeAt(0)})),e.abrupt("return",(new TextDecoder).decode(new Uint8Array(i)));case 3:case"end":return e.stop()}}),e)})))()},filterPostMeta:function(t){var e=this;return c(s().mark((function n(){var i,r,a;return s().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,e.fixFacebookEncoding(t);case 2:return i=n.sent,r=JSON.parse(i),a=r.filter((function(t){return t.media.map((function(t){return t.uri})).filter((function(t){return 1==e.config.allow_video_posts?t.endsWith(".png")||t.endsWith(".jpg")||t.endsWith(".mp4"):t.endsWith(".png")||t.endsWith(".jpg")})).length})).filter((function(t){var n=t.media.map((function(t){return t.uri}));return!e.existing.includes(n[0])})),e.postMeta=a,n.abrupt("return",a);case 7:case"end":return n.stop()}}),n)})))()},checkZip:function(){var t=this;return c(s().mark((function e(){var n,i,r;return s().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.$refs.zipInput.files[0],e.next=3,t.model(n);case 3:if(!(i=e.sent)||!i.length){e.next=15;break}return e.next=7,i.filter((function(t){return"content/posts_1.json"===t.filename||"your_instagram_activity/content/posts_1.json"===t.filename}));case 7:if((r=e.sent)&&r.length){e.next=14;break}return t.contactModal("Invalid import archive","The .zip archive you uploaded is corrupted, or is invalid. We cannot process your import at this time.\n\nIf this issue persists, please contact an administrator.","error"),t.invalidArchive=!0,e.abrupt("return");case 14:t.readZip();case 15:case"end":return e.stop()}}),e)})))()},readZip:function(){var t=this;return c(s().mark((function e(){var n,r,a,o;return s().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.$refs.zipInput.files[0],e.next=3,t.model(n);case 3:if(!(r=e.sent)||!r.length){e.next=14;break}return t.zipFiles=r,e.next=8,r.filter((function(t){return"content/posts_1.json"===t.filename||"your_instagram_activity/content/posts_1.json"===t.filename}))[0].getData(new i.TextWriter);case 8:return a=e.sent,t.filterPostMeta(a),e.next=12,Promise.all(r.filter((function(t){return(t.filename.startsWith("media/posts/")||t.filename.startsWith("media/other/"))&&(t.filename.endsWith(".png")||t.filename.endsWith(".jpg")||t.filename.endsWith(".mp4"))})).map(function(){var t=c(s().mark((function t(e){var n,r,a;return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!e.filename.startsWith("media/posts/")&&!e.filename.startsWith("media/other/")||!(e.filename.endsWith(".png")||e.filename.endsWith(".jpg")||e.filename.endsWith(".mp4"))){t.next=10;break}return n={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",mp4:"video/mp4"}[e.filename.split("/").pop().split(".").pop()],t.next=5,e.getData(new i.BlobWriter(n));case 5:return r=t.sent,a=URL.createObjectURL(r),t.abrupt("return",{filename:e.filename,blob:a,file:r});case 10:return t.abrupt("return");case 11:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}()));case 12:o=e.sent,t.imageCache=o.flat(2);case 14:setTimeout((function(){t.page=2}),500);case 15:case"end":return e.stop()}}),e)})))()},toggleLimitReached:function(){this.contactModal("Limit reached","You can only import "+this.toggleLimit+" posts at a time.\nYou can import more posts after you finish importing these posts.","error")},toggleSelectedPost:function(t){var e,n=this;if(1===t.media.length)if(e=t.media[0].uri,-1==this.selectedMedia.indexOf(e)){if(this.selectedPostsCounter>=this.toggleLimit)return void this.toggleLimitReached();this.selectedMedia.push(e),this.selectedPostsCounter++}else{var i=this.selectedMedia.indexOf(e);this.selectedMedia.splice(i,1),this.selectedPostsCounter--}else{if(e=t.media[0].uri,-1==this.selectedMedia.indexOf(e)){if(this.selectedPostsCounter>=this.toggleLimit)return void this.toggleLimitReached();this.selectedPostsCounter++}else this.selectedPostsCounter--;t.media.forEach((function(t){if(e=t.uri,-1==n.selectedMedia.indexOf(e))n.selectedMedia.push(e);else{var i=n.selectedMedia.indexOf(e);n.selectedMedia.splice(i,1)}}))}},sliceIntoChunks:function(t,e){for(var n=[],i=0;i0&&void 0!==arguments[0]?arguments[0]:"Error",text:arguments.length>1?arguments[1]:void 0,icon:arguments.length>2?arguments[2]:void 0,dangerMode:!0,buttons:{ok:arguments.length>3&&void 0!==arguments[3]?arguments[3]:"Close",danger:{text:"Contact Support",value:"contact"}}}).then((function(t){"contact"===t&&(window.location.href="/site/contact")}))},handleSelectAll:function(){for(var t=this.postMeta.slice(0,100),e=t.length-1;e>=0;e--){var n=t[e];this.toggleSelectedPost(n)}},handleClearAll:function(){this.selectedMedia=[],this.selectedPostsCounter=0}}}},12713:(t,e,n)=>{"use strict";n.r(e),n.d(e,{render:()=>i,staticRenderFns:()=>r});var i=function(){var t=this,e=t._self._c;return e("div",{staticClass:"h-100 pf-import"},[t.loaded?[e("input",{ref:"zipInput",staticClass:"d-none",attrs:{type:"file",name:"file"},on:{change:t.zipInputChanged}}),t._v(" "),1===t.page?[t._m(0),t._v(" "),e("hr"),t._v(" "),t._m(1),t._v(" "),e("section",{staticClass:"mt-4"},[e("ul",{staticClass:"list-group"},[e("li",{staticClass:"list-group-item d-flex justify-content-between flex-column",staticStyle:{gap:"1rem"}},[e("div",{staticClass:"d-flex justify-content-between align-items-center",staticStyle:{gap:"1rem"}},[e("div",[e("p",{staticClass:"font-weight-bold mb-1"},[t._v("Import from Instagram")]),t._v(" "),t.showDisabledWarning?e("p",{staticClass:"small mb-0"},[t._v("This feature has been disabled by the administrators.")]):t.showNotAllowedWarning?e("p",{staticClass:"small mb-0"},[t._v("You have not been permitted to use this feature, or have reached the maximum limits. For more info, view the "),e("a",{staticClass:"font-weight-bold",attrs:{href:"/site/kb/import"}},[t._v("Import Help Center")]),t._v(" page.")]):e("p",{staticClass:"small mb-0"},[t._v("Upload the JSON export from Instagram in .zip format."),e("br"),t._v("For more information click "),e("a",{attrs:{href:"/site/kb/import"}},[t._v("here")]),t._v(".")])]),t._v(" "),t.showDisabledWarning||t.showNotAllowedWarning?t._e():e("div",[1===t.step||t.invalidArchive?e("button",{staticClass:"font-weight-bold btn btn-primary rounded-pill px-4 btn-lg",attrs:{type:"button",disabled:t.showDisabledWarning},on:{click:function(e){return t.selectArchive()}}},[t._v("\n Import\n ")]):2===t.step?[e("div",{staticClass:"d-flex justify-content-center align-items-center flex-column"},[t.showUploadLoader?e("b-spinner",{attrs:{small:""}}):e("button",{staticClass:"font-weight-bold btn btn-outline-primary btn-sm btn-block",attrs:{type:"button"},on:{click:function(e){return t.reviewImports()}}},[t._v("Review Imports")]),t._v(" "),t.zipName?e("p",{staticClass:"small font-weight-bold mt-2 mb-0"},[t._v(t._s(t.zipName))]):t._e()],1)]:t._e()],2)])])]),t._v(" "),e("ul",{staticClass:"list-group mt-3"},[t.processingCount?e("li",{staticClass:"list-group-item d-flex justify-content-between flex-column",staticStyle:{gap:"1rem"}},[e("div",{staticClass:"d-flex justify-content-between align-items-center"},[t._m(2),t._v(" "),e("div",[e("span",{staticClass:"btn btn-danger rounded-pill py-0 font-weight-bold",attrs:{disabled:""}},[t._v(t._s(t.processingCount))])])])]):t._e(),t._v(" "),t.finishedCount?e("li",{staticClass:"list-group-item d-flex justify-content-between flex-column",staticStyle:{gap:"1rem"}},[e("div",{staticClass:"d-flex justify-content-between align-items-center"},[t._m(3),t._v(" "),e("div",[e("button",{staticClass:"font-weight-bold btn btn-primary btn-sm rounded-pill px-4 btn-block",attrs:{type:"button",disabled:!t.finishedCount},on:{click:function(e){return t.handleReviewPosts()}}},[t._v("\n Review "+t._s(t.finishedCount)+" Posts\n ")])])])]):t._e()])])]:2===t.page?[e("div",{staticClass:"d-flex justify-content-between align-items-center"},[t._m(4),t._v(" "),e("button",{staticClass:"btn btn-primary font-weight-bold rounded-pill px-4",class:{disabled:!t.selectedMedia||!t.selectedMedia.length},attrs:{disabled:!t.selectedMedia||!t.selectedMedia.length||t.importButtonLoading},on:{click:function(e){return t.handleImport()}}},[t.importButtonLoading?e("b-spinner",{attrs:{small:""}}):e("span",[t._v("Import")])],1)]),t._v(" "),e("hr"),t._v(" "),e("section",[e("div",{staticClass:"d-flex justify-content-between align-items-center mb-3"},[t.selectedMedia&&t.selectedMedia.length?e("p",{staticClass:"lead mb-0"},[e("span",{staticClass:"font-weight-bold"},[t._v(t._s(t.selectedPostsCounter))]),t._v(" posts selected for import")]):e("div",[e("p",{staticClass:"lead mb-0"},[t._v("Review posts you'd like to import.")]),t._v(" "),e("p",{staticClass:"small text-muted mb-0"},[t._v("Tap on posts to include them in your import.")])]),t._v(" "),t.selectedMedia.length?e("button",{staticClass:"btn btn-outline-danger font-weight-bold rounded-pill btn-sm my-1",on:{click:function(e){return t.handleClearAll()}}},[t._v("Clear all selected")]):e("button",{staticClass:"btn btn-outline-primary font-weight-bold rounded-pill",on:{click:function(e){return t.handleSelectAll()}}},[t._v("Select first 100 posts")])])]),t._v(" "),e("section",{staticClass:"row mb-n5 media-selector",staticStyle:{"max-height":"600px","overflow-y":"auto"}},t._l(t.postMeta,(function(n){return e("div",{staticClass:"col-12 col-md-4"},[e("div",{staticClass:"square cursor-pointer",on:{click:function(e){return t.toggleSelectedPost(n)}}},[n.media[0].uri.endsWith(".mp4")?e("div",{staticClass:"info-overlay-text-label rounded",class:{selected:-1!=t.selectedMedia.indexOf(n.media[0].uri)}},[t._m(5,!0)]):e("div",{staticClass:"square-content",class:{selected:-1!=t.selectedMedia.indexOf(n.media[0].uri)},style:{borderRadius:"5px",backgroundImage:"url("+t.getFileNameUrl(n.media[0].uri)+")"}})]),t._v(" "),e("div",{staticClass:"d-flex mt-1 justify-content-between align-items-center"},[e("p",{staticClass:"small"},[e("i",{staticClass:"far fa-clock"}),t._v(" "+t._s(t.formatDate(n.media[0].creation_timestamp)))]),t._v(" "),e("p",{staticClass:"small font-weight-bold"},[e("a",{attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.showDetailsModal(n)}}},[e("i",{staticClass:"far fa-info-circle"}),t._v(" Details")])])])])})),0)]:"reviewImports"===t.page?[t._m(6),t._v(" "),e("hr"),t._v(" "),e("section",{staticClass:"row mb-n5 media-selector",staticStyle:{"max-height":"600px","overflow-y":"auto"}},[t._l(t.importedPosts.data,(function(n){return e("div",{staticClass:"col-12 col-md-4"},[e("div",{staticClass:"square cursor-pointer"},[n.media_attachments[0].url.endsWith(".mp4")?e("div",{staticClass:"info-overlay-text-label rounded"},[t._m(7,!0)]):e("div",{staticClass:"square-content",style:{borderRadius:"5px",backgroundImage:"url("+n.media_attachments[0].url+")"}})]),t._v(" "),e("div",{staticClass:"d-flex mt-1 justify-content-between align-items-center"},[e("p",{staticClass:"small"},[e("i",{staticClass:"far fa-clock"}),t._v(" "+t._s(t.formatDate(n.created_at,!1)))]),t._v(" "),e("p",{staticClass:"small font-weight-bold"},[e("a",{attrs:{href:n.url}},[e("i",{staticClass:"far fa-info-circle"}),t._v(" View")])])])])})),t._v(" "),e("div",{staticClass:"col-12 my-3"},[t.importedPosts.meta&&t.importedPosts.meta.next_cursor?e("button",{staticClass:"btn btn-primary btn-block font-weight-bold",on:{click:function(e){return t.loadMorePosts()}}},[t._v("\n Load more\n ")]):t._e()])],2)]:t._e()]:e("div",{staticClass:"d-flex justify-content-center align-items-center h-100"},[e("b-spinner")],1),t._v(" "),e("b-modal",{attrs:{id:"detailsModal",title:"Post Details","ok-only":!0,"ok-title":"Close",centered:""},model:{value:t.detailsModalShow,callback:function(e){t.detailsModalShow=e},expression:"detailsModalShow"}},[e("div",{},t._l(t.modalData.media,(function(n,i){return e("div",{staticClass:"mb-3"},[e("div",{staticClass:"list-group"},[e("div",{staticClass:"list-group-item d-flex justify-content-between align-items-center"},[e("p",{staticClass:"text-center font-weight-bold mb-0"},[t._v("Media #"+t._s(i+1))]),t._v(" "),e("img",{staticStyle:{"object-fit":"cover","border-radius":"5px"},attrs:{src:t.getFileNameUrl(n.uri),width:"30",height:"30"}})]),t._v(" "),e("div",{staticClass:"list-group-item"},[e("p",{staticClass:"small text-muted"},[t._v("Caption")]),t._v(" "),e("p",{staticClass:"mb-0 small read-more",staticStyle:{"font-size":"12px","overflow-y":"hidden"}},[t._v(t._s(n.title?n.title:t.modalData.title))])]),t._v(" "),e("div",{staticClass:"list-group-item"},[e("div",{staticClass:"d-flex justify-content-between align-items-center"},[e("p",{staticClass:"small mb-0 text-muted"},[t._v("Timestamp")]),t._v(" "),e("p",{staticClass:"font-weight-bold mb-0"},[t._v(t._s(t.formatDate(n.creation_timestamp)))])])])])])})),0)])],2)},r=[function(){var t=this._self._c;return t("div",{staticClass:"title"},[t("h3",{staticClass:"font-weight-bold"},[this._v("Import")])])},function(){var t=this._self._c;return t("section",[t("p",{staticClass:"lead"},[this._v("Account Import allows you to import your data from a supported service.")])])},function(){var t=this,e=t._self._c;return e("div",[e("p",{staticClass:"font-weight-bold mb-1"},[t._v("Processing Imported Posts")]),t._v(" "),e("p",{staticClass:"small mb-0"},[t._v("These are posts that are in the process of being imported.")])])},function(){var t=this,e=t._self._c;return e("div",[e("p",{staticClass:"font-weight-bold mb-1"},[t._v("Imported Posts")]),t._v(" "),e("p",{staticClass:"small mb-0"},[t._v("These are posts that have been successfully imported.")])])},function(){var t=this._self._c;return t("div",{staticClass:"title"},[t("h3",{staticClass:"font-weight-bold"},[this._v("Import from Instagram")])])},function(){var t=this._self._c;return t("h5",{staticClass:"text-white m-auto font-weight-bold"},[t("span",[t("span",{staticClass:"far fa-video fa-2x p-2 d-flex-inline"})])])},function(){var t=this._self._c;return t("div",{staticClass:"d-flex justify-content-between align-items-center"},[t("div",{staticClass:"title"},[t("h3",{staticClass:"font-weight-bold"},[this._v("Posts Imported from Instagram")])])])},function(){var t=this._self._c;return t("h5",{staticClass:"text-white m-auto font-weight-bold"},[t("span",[t("span",{staticClass:"far fa-video fa-2x p-2 d-flex-inline"})])])}]},75876:(t,e,n)=>{Vue.component("account-import",n(92508).default)},1185:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>a});var i=n(1519),r=n.n(i)()((function(t){return t[1]}));r.push([t.id,".pf-import .media-selector .selected[data-v-27040728]{border:5px solid red}",""]);const a=r},17239:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>s});var i=n(93379),r=n.n(i),a=n(1185),o={insert:"head",singleton:!1};r()(a.default,o);const s=a.default.locals||{}},92508:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>o});var i=n(38137),r=n(99562),a={};for(const t in r)"default"!==t&&(a[t]=()=>r[t]);n.d(e,a);n(74369);const o=(0,n(51900).default)(r.default,i.render,i.staticRenderFns,!1,null,"27040728",null).exports},99562:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>a});var i=n(55185),r={};for(const t in i)"default"!==t&&(r[t]=()=>i[t]);n.d(e,r);const a=i.default},38137:(t,e,n)=>{"use strict";n.r(e);var i=n(12713),r={};for(const t in i)"default"!==t&&(r[t]=()=>i[t]);n.d(e,r)},74369:(t,e,n)=>{"use strict";n.r(e);var i=n(17239),r={};for(const t in i)"default"!==t&&(r[t]=()=>i[t]);n.d(e,r)}},t=>{t.O(0,[8898],(()=>{return e=75876,t(t.s=e);var e}));t.O()}]); \ No newline at end of file +(self.webpackChunkpixelfed=self.webpackChunkpixelfed||[]).push([[9139],{11887:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>u});var i=n(58285);function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function a(t){return function(t){if(Array.isArray(t))return o(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(!t)return;if("string"==typeof t)return o(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return o(t,e)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function o(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n=0;--a){var o=this.tryEntries[a],s=o.completion;if("root"===o.tryLoc)return r("end");if(o.tryLoc<=this.prev){var l=i.call(o,"catchLoc"),c=i.call(o,"finallyLoc");if(l&&c){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&i.call(r,"finallyLoc")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),E(n),b}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;E(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(e,n,i){return this.delegate={iterator:O(e),resultName:n,nextLoc:i},"next"===this.method&&(this.arg=t),b}},e}function l(t,e,n,i,r,a,o){try{var s=t[a](o),l=s.value}catch(t){return void n(t)}s.done?e(l):Promise.resolve(l).then(i,r)}function c(t){return function(){var e=this,n=arguments;return new Promise((function(i,r){var a=t.apply(e,n);function o(t){l(a,i,r,o,s,"next",t)}function s(t){l(a,i,r,o,s,"throw",t)}o(void 0)}))}}const u={data:function(){return{page:1,step:1,toggleLimit:100,config:{},showDisabledWarning:!1,showNotAllowedWarning:!1,invalidArchive:!1,loaded:!1,existing:[],zipName:void 0,zipFiles:[],postMeta:[],imageCache:[],includeArchives:!1,selectedMedia:[],selectedPostsCounter:0,detailsModalShow:!1,modalData:{},importedPosts:[],finishedCount:void 0,processingCount:void 0,showUploadLoader:!1,importButtonLoading:!1}},mounted:function(){this.fetchConfig()},methods:{fetchConfig:function(){var t=this;axios.get("/api/local/import/ig/config").then((function(e){t.config=e.data,0==e.data.enabled?(t.showDisabledWarning=!0,t.loaded=!0):0==e.data.allowed?(t.showNotAllowedWarning=!0,t.loaded=!0):t.fetchExisting()}))},fetchExisting:function(){var t=this;axios.post("/api/local/import/ig/existing").then((function(e){t.existing=e.data})).finally((function(){t.fetchProcessing()}))},fetchProcessing:function(){var t=this;axios.post("/api/local/import/ig/processing").then((function(e){t.processingCount=e.data.processing_count,t.finishedCount=e.data.finished_count})).finally((function(){t.loaded=!0}))},selectArchive:function(){var t=this;event.currentTarget.blur(),swal({title:"Upload Archive",icon:"success",text:"The .zip archive is probably named something like username_20230606.zip, and was downloaded from the Instagram.com website.",buttons:{cancel:"Cancel",danger:{text:"Upload zip archive",value:"upload"}}}).then((function(e){t.$refs.zipInput.click()}))},zipInputChanged:function(t){var e=this;this.step=2,this.zipName=t.target.files[0].name,this.showUploadLoader=!0,setTimeout((function(){e.reviewImports()}),1e3),setTimeout((function(){e.showUploadLoader=!1}),3e3)},reviewImports:function(){this.invalidArchive=!1,this.checkZip()},model:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new i.ZipReader(new i.BlobReader(t)).getEntries(e)},formatDate:function(t){return(!(arguments.length>1&&void 0!==arguments[1])||arguments[1]?new Date(1e3*t):new Date(t)).toLocaleDateString()},getFileNameUrl:function(t){return this.imageCache.filter((function(e){return e.filename===t})).map((function(t){return t.blob}))},showDetailsModal:function(t){this.modalData=t,this.detailsModalShow=!0,setTimeout((function(){pixelfed.readmore()}),500)},fixFacebookEncoding:function(t){return c(s().mark((function e(){var n,i;return s().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.replace(/\\u00([a-f0-9]{2})/g,(function(t){return String.fromCharCode(parseInt(t.slice(2),16))})),i=Array.from(n,(function(t){return t.charCodeAt(0)})),e.abrupt("return",(new TextDecoder).decode(new Uint8Array(i)));case 3:case"end":return e.stop()}}),e)})))()},filterPostMeta:function(t){var e=this;return c(s().mark((function n(){var i,r,a;return s().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,e.fixFacebookEncoding(t);case 2:return i=n.sent,r=JSON.parse(i),a=r.filter((function(t){return t.media.map((function(t){return t.uri})).filter((function(t){return 1==e.config.allow_video_posts?t.endsWith(".png")||t.endsWith(".jpg")||t.endsWith(".mp4"):t.endsWith(".png")||t.endsWith(".jpg")})).length})).filter((function(t){var n=t.media.map((function(t){return t.uri}));return!e.existing.includes(n[0])})),e.postMeta=a,n.abrupt("return",a);case 7:case"end":return n.stop()}}),n)})))()},checkZip:function(){var t=this;return c(s().mark((function e(){var n,i,r;return s().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.$refs.zipInput.files[0],e.next=3,t.model(n);case 3:if(!(i=e.sent)||!i.length){e.next=15;break}return e.next=7,i.filter((function(t){return"content/posts_1.json"===t.filename||"your_instagram_activity/content/posts_1.json"===t.filename}));case 7:if((r=e.sent)&&r.length){e.next=14;break}return t.contactModal("Invalid import archive","The .zip archive you uploaded is corrupted, or is invalid. We cannot process your import at this time.\n\nIf this issue persists, please contact an administrator.","error"),t.invalidArchive=!0,e.abrupt("return");case 14:t.readZip();case 15:case"end":return e.stop()}}),e)})))()},readZip:function(){var t=this;return c(s().mark((function e(){var n,r,a,o;return s().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.$refs.zipInput.files[0],e.next=3,t.model(n);case 3:if(!(r=e.sent)||!r.length){e.next=14;break}return t.zipFiles=r,e.next=8,r.filter((function(t){return"content/posts_1.json"===t.filename||"your_instagram_activity/content/posts_1.json"===t.filename}))[0].getData(new i.TextWriter);case 8:return a=e.sent,t.filterPostMeta(a),e.next=12,Promise.all(r.filter((function(t){return(t.filename.startsWith("media/posts/")||t.filename.startsWith("media/other/"))&&(t.filename.endsWith(".png")||t.filename.endsWith(".jpg")||t.filename.endsWith(".mp4"))})).map(function(){var t=c(s().mark((function t(e){var n,r,a;return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!e.filename.startsWith("media/posts/")&&!e.filename.startsWith("media/other/")||!(e.filename.endsWith(".png")||e.filename.endsWith(".jpg")||e.filename.endsWith(".mp4"))){t.next=10;break}return n={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",mp4:"video/mp4"}[e.filename.split("/").pop().split(".").pop()],t.next=5,e.getData(new i.BlobWriter(n));case 5:return r=t.sent,a=URL.createObjectURL(r),t.abrupt("return",{filename:e.filename,blob:a,file:r});case 10:return t.abrupt("return");case 11:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}()));case 12:o=e.sent,t.imageCache=o.flat(2);case 14:setTimeout((function(){t.page=2}),500);case 15:case"end":return e.stop()}}),e)})))()},toggleLimitReached:function(){this.contactModal("Limit reached","You can only import "+this.toggleLimit+" posts at a time.\nYou can import more posts after you finish importing these posts.","error")},toggleSelectedPost:function(t){var e,n=this;if(1===t.media.length)if(e=t.media[0].uri,-1==this.selectedMedia.indexOf(e)){if(this.selectedPostsCounter>=this.toggleLimit)return void this.toggleLimitReached();this.selectedMedia.push(e),this.selectedPostsCounter++}else{var i=this.selectedMedia.indexOf(e);this.selectedMedia.splice(i,1),this.selectedPostsCounter--}else{if(e=t.media[0].uri,-1==this.selectedMedia.indexOf(e)){if(this.selectedPostsCounter>=this.toggleLimit)return void this.toggleLimitReached();this.selectedPostsCounter++}else this.selectedPostsCounter--;t.media.forEach((function(t){if(e=t.uri,-1==n.selectedMedia.indexOf(e))n.selectedMedia.push(e);else{var i=n.selectedMedia.indexOf(e);n.selectedMedia.splice(i,1)}}))}},sliceIntoChunks:function(t,e){for(var n=[],i=0;i0&&void 0!==arguments[0]?arguments[0]:"Error",text:arguments.length>1?arguments[1]:void 0,icon:arguments.length>2?arguments[2]:void 0,dangerMode:!0,buttons:{ok:arguments.length>3&&void 0!==arguments[3]?arguments[3]:"Close",danger:{text:"Contact Support",value:"contact"}}}).then((function(t){"contact"===t&&(window.location.href="/site/contact")}))},handleSelectAll:function(){for(var t=this.postMeta.slice(0,100),e=t.length-1;e>=0;e--){var n=t[e];this.toggleSelectedPost(n)}},handleClearAll:function(){this.selectedMedia=[],this.selectedPostsCounter=0}}}},98863:(t,e,n)=>{"use strict";n.r(e),n.d(e,{render:()=>i,staticRenderFns:()=>r});var i=function(){var t=this,e=t._self._c;return e("div",{staticClass:"h-100 pf-import"},[t.loaded?[e("input",{ref:"zipInput",staticClass:"d-none",attrs:{type:"file",name:"file"},on:{change:t.zipInputChanged}}),t._v(" "),1===t.page?[t._m(0),t._v(" "),e("hr"),t._v(" "),t._m(1),t._v(" "),e("section",{staticClass:"mt-4"},[e("ul",{staticClass:"list-group"},[e("li",{staticClass:"list-group-item d-flex justify-content-between flex-column",staticStyle:{gap:"1rem"}},[e("div",{staticClass:"d-flex justify-content-between align-items-center",staticStyle:{gap:"1rem"}},[e("div",[e("p",{staticClass:"font-weight-bold mb-1"},[t._v("Import from Instagram")]),t._v(" "),t.showDisabledWarning?e("p",{staticClass:"small mb-0"},[t._v("This feature has been disabled by the administrators.")]):t.showNotAllowedWarning?e("p",{staticClass:"small mb-0"},[t._v("You have not been permitted to use this feature, or have reached the maximum limits. For more info, view the "),e("a",{staticClass:"font-weight-bold",attrs:{href:"/site/kb/import"}},[t._v("Import Help Center")]),t._v(" page.")]):e("p",{staticClass:"small mb-0"},[t._v("Upload the JSON export from Instagram in .zip format."),e("br"),t._v("For more information click "),e("a",{attrs:{href:"/site/kb/import"}},[t._v("here")]),t._v(".")])]),t._v(" "),t.showDisabledWarning||t.showNotAllowedWarning?t._e():e("div",[1===t.step||t.invalidArchive?e("button",{staticClass:"font-weight-bold btn btn-primary rounded-pill px-4 btn-lg",attrs:{type:"button",disabled:t.showDisabledWarning},on:{click:function(e){return t.selectArchive()}}},[t._v("\n Import\n ")]):2===t.step?[e("div",{staticClass:"d-flex justify-content-center align-items-center flex-column"},[t.showUploadLoader?e("b-spinner",{attrs:{small:""}}):e("button",{staticClass:"font-weight-bold btn btn-outline-primary btn-sm btn-block",attrs:{type:"button"},on:{click:function(e){return t.reviewImports()}}},[t._v("Review Imports")]),t._v(" "),t.zipName?e("p",{staticClass:"small font-weight-bold mt-2 mb-0"},[t._v(t._s(t.zipName))]):t._e()],1)]:t._e()],2)])])]),t._v(" "),e("ul",{staticClass:"list-group mt-3"},[t.processingCount?e("li",{staticClass:"list-group-item d-flex justify-content-between flex-column",staticStyle:{gap:"1rem"}},[e("div",{staticClass:"d-flex justify-content-between align-items-center"},[t._m(2),t._v(" "),e("div",[e("span",{staticClass:"btn btn-danger rounded-pill py-0 font-weight-bold",attrs:{disabled:""}},[t._v(t._s(t.processingCount))])])])]):t._e(),t._v(" "),t.finishedCount?e("li",{staticClass:"list-group-item d-flex justify-content-between flex-column",staticStyle:{gap:"1rem"}},[e("div",{staticClass:"d-flex justify-content-between align-items-center"},[t._m(3),t._v(" "),e("div",[e("button",{staticClass:"font-weight-bold btn btn-primary btn-sm rounded-pill px-4 btn-block",attrs:{type:"button",disabled:!t.finishedCount},on:{click:function(e){return t.handleReviewPosts()}}},[t._v("\n Review "+t._s(t.finishedCount)+" Posts\n ")])])])]):t._e()])])]:2===t.page?[e("div",{staticClass:"d-flex justify-content-between align-items-center"},[t._m(4),t._v(" "),e("button",{staticClass:"btn btn-primary font-weight-bold rounded-pill px-4",class:{disabled:!t.selectedMedia||!t.selectedMedia.length},attrs:{disabled:!t.selectedMedia||!t.selectedMedia.length||t.importButtonLoading},on:{click:function(e){return t.handleImport()}}},[t.importButtonLoading?e("b-spinner",{attrs:{small:""}}):e("span",[t._v("Import")])],1)]),t._v(" "),e("hr"),t._v(" "),e("section",[e("div",{staticClass:"d-flex justify-content-between align-items-center mb-3"},[t.selectedMedia&&t.selectedMedia.length?e("p",{staticClass:"lead mb-0"},[e("span",{staticClass:"font-weight-bold"},[t._v(t._s(t.selectedPostsCounter))]),t._v(" posts selected for import")]):e("div",[e("p",{staticClass:"lead mb-0"},[t._v("Review posts you'd like to import.")]),t._v(" "),e("p",{staticClass:"small text-muted mb-0"},[t._v("Tap on posts to include them in your import.")])]),t._v(" "),t.selectedMedia.length?e("button",{staticClass:"btn btn-outline-danger font-weight-bold rounded-pill btn-sm my-1",on:{click:function(e){return t.handleClearAll()}}},[t._v("Clear all selected")]):e("button",{staticClass:"btn btn-outline-primary font-weight-bold rounded-pill",on:{click:function(e){return t.handleSelectAll()}}},[t._v("Select first 100 posts")])])]),t._v(" "),e("section",{staticClass:"row mb-n5 media-selector",staticStyle:{"max-height":"600px","overflow-y":"auto"}},t._l(t.postMeta,(function(n){return e("div",{staticClass:"col-12 col-md-4"},[e("div",{staticClass:"square cursor-pointer",on:{click:function(e){return t.toggleSelectedPost(n)}}},[n.media[0].uri.endsWith(".mp4")?e("div",{staticClass:"info-overlay-text-label rounded",class:{selected:-1!=t.selectedMedia.indexOf(n.media[0].uri)}},[t._m(5,!0)]):e("div",{staticClass:"square-content",class:{selected:-1!=t.selectedMedia.indexOf(n.media[0].uri)},style:{borderRadius:"5px",backgroundImage:"url("+t.getFileNameUrl(n.media[0].uri)+")"}})]),t._v(" "),e("div",{staticClass:"d-flex mt-1 justify-content-between align-items-center"},[e("p",{staticClass:"small"},[e("i",{staticClass:"far fa-clock"}),t._v(" "+t._s(t.formatDate(n.media[0].creation_timestamp)))]),t._v(" "),e("p",{staticClass:"small font-weight-bold"},[e("a",{attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.showDetailsModal(n)}}},[e("i",{staticClass:"far fa-info-circle"}),t._v(" Details")])])])])})),0)]:"reviewImports"===t.page?[t._m(6),t._v(" "),e("hr"),t._v(" "),e("section",{staticClass:"row mb-n5 media-selector",staticStyle:{"max-height":"600px","overflow-y":"auto"}},[t._l(t.importedPosts.data,(function(n){return e("div",{staticClass:"col-12 col-md-4"},[e("div",{staticClass:"square cursor-pointer"},[n.media_attachments[0].url.endsWith(".mp4")?e("div",{staticClass:"info-overlay-text-label rounded"},[t._m(7,!0)]):e("div",{staticClass:"square-content",style:{borderRadius:"5px",backgroundImage:"url("+n.media_attachments[0].url+")"}})]),t._v(" "),e("div",{staticClass:"d-flex mt-1 justify-content-between align-items-center"},[e("p",{staticClass:"small"},[e("i",{staticClass:"far fa-clock"}),t._v(" "+t._s(t.formatDate(n.created_at,!1)))]),t._v(" "),e("p",{staticClass:"small font-weight-bold"},[e("a",{attrs:{href:n.url}},[e("i",{staticClass:"far fa-info-circle"}),t._v(" View")])])])])})),t._v(" "),e("div",{staticClass:"col-12 my-3"},[t.importedPosts.meta&&t.importedPosts.meta.next_cursor?e("button",{staticClass:"btn btn-primary btn-block font-weight-bold",on:{click:function(e){return t.loadMorePosts()}}},[t._v("\n Load more\n ")]):t._e()])],2)]:t._e()]:e("div",{staticClass:"d-flex justify-content-center align-items-center h-100"},[e("b-spinner")],1),t._v(" "),e("b-modal",{attrs:{id:"detailsModal",title:"Post Details","ok-only":!0,"ok-title":"Close",centered:""},model:{value:t.detailsModalShow,callback:function(e){t.detailsModalShow=e},expression:"detailsModalShow"}},[e("div",{},t._l(t.modalData.media,(function(n,i){return e("div",{staticClass:"mb-3"},[e("div",{staticClass:"list-group"},[e("div",{staticClass:"list-group-item d-flex justify-content-between align-items-center"},[e("p",{staticClass:"text-center font-weight-bold mb-0"},[t._v("Media #"+t._s(i+1))]),t._v(" "),n.uri.endsWith(".jpg")||n.uri.endsWith(".png")?[e("img",{staticStyle:{"object-fit":"cover","border-radius":"5px"},attrs:{src:t.getFileNameUrl(n.uri),width:"30",height:"30"}})]:t._e()],2),t._v(" "),n.uri.endsWith(".mp4")?[e("div",{staticClass:"list-group-item"},[e("div",{staticClass:"embed-responsive embed-responsive-4by3"},[e("video",{attrs:{src:t.getFileNameUrl(n.uri),controls:""}})])])]:t._e(),t._v(" "),e("div",{staticClass:"list-group-item"},[e("p",{staticClass:"small text-muted"},[t._v("Caption")]),t._v(" "),e("p",{staticClass:"mb-0 small read-more",staticStyle:{"font-size":"12px","overflow-y":"hidden"}},[t._v(t._s(n.title?n.title:t.modalData.title))])]),t._v(" "),e("div",{staticClass:"list-group-item"},[e("div",{staticClass:"d-flex justify-content-between align-items-center"},[e("p",{staticClass:"small mb-0 text-muted"},[t._v("Timestamp")]),t._v(" "),e("p",{staticClass:"font-weight-bold mb-0"},[t._v(t._s(t.formatDate(n.creation_timestamp)))])])])],2)])})),0)])],2)},r=[function(){var t=this._self._c;return t("div",{staticClass:"title"},[t("h3",{staticClass:"font-weight-bold"},[this._v("Import")])])},function(){var t=this._self._c;return t("section",[t("p",{staticClass:"lead"},[this._v("Account Import allows you to import your data from a supported service.")])])},function(){var t=this,e=t._self._c;return e("div",[e("p",{staticClass:"font-weight-bold mb-1"},[t._v("Processing Imported Posts")]),t._v(" "),e("p",{staticClass:"small mb-0"},[t._v("These are posts that are in the process of being imported.")])])},function(){var t=this,e=t._self._c;return e("div",[e("p",{staticClass:"font-weight-bold mb-1"},[t._v("Imported Posts")]),t._v(" "),e("p",{staticClass:"small mb-0"},[t._v("These are posts that have been successfully imported.")])])},function(){var t=this._self._c;return t("div",{staticClass:"title"},[t("h3",{staticClass:"font-weight-bold"},[this._v("Import from Instagram")])])},function(){var t=this._self._c;return t("h5",{staticClass:"text-white m-auto font-weight-bold"},[t("span",[t("span",{staticClass:"far fa-video fa-2x p-2 d-flex-inline"})])])},function(){var t=this._self._c;return t("div",{staticClass:"d-flex justify-content-between align-items-center"},[t("div",{staticClass:"title"},[t("h3",{staticClass:"font-weight-bold"},[this._v("Posts Imported from Instagram")])])])},function(){var t=this._self._c;return t("h5",{staticClass:"text-white m-auto font-weight-bold"},[t("span",[t("span",{staticClass:"far fa-video fa-2x p-2 d-flex-inline"})])])}]},97697:(t,e,n)=>{Vue.component("account-import",n(70627).default)},2444:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>a});var i=n(76798),r=n.n(i)()((function(t){return t[1]}));r.push([t.id,".pf-import .media-selector .selected[data-v-36154edc]{border:5px solid red}",""]);const a=r},63705:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>s});var i=n(85072),r=n.n(i),a=n(2444),o={insert:"head",singleton:!1};r()(a.default,o);const s=a.default.locals||{}},70627:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>o});var i=n(13170),r=n(5316),a={};for(const t in r)"default"!==t&&(a[t]=()=>r[t]);n.d(e,a);n(73082);const o=(0,n(14486).default)(r.default,i.render,i.staticRenderFns,!1,null,"36154edc",null).exports},5316:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>a});var i=n(11887),r={};for(const t in i)"default"!==t&&(r[t]=()=>i[t]);n.d(e,r);const a=i.default},13170:(t,e,n)=>{"use strict";n.r(e);var i=n(98863),r={};for(const t in i)"default"!==t&&(r[t]=()=>i[t]);n.d(e,r)},73082:(t,e,n)=>{"use strict";n.r(e);var i=n(63705),r={};for(const t in i)"default"!==t&&(r[t]=()=>i[t]);n.d(e,r)}},t=>{t.O(0,[3660],(()=>{return e=97697,t(t.s=e);var e}));t.O()}]); \ No newline at end of file diff --git a/public/js/activity.js b/public/js/activity.js index 6d643b050..c2ebeecbb 100644 --- a/public/js/activity.js +++ b/public/js/activity.js @@ -1 +1 @@ -(self.webpackChunkpixelfed=self.webpackChunkpixelfed||[]).push([[1768],{65667:(t,a,e)=>{"use strict";e.r(a),e.d(a,{default:()=>r});var o=e(19755);function s(t){return function(t){if(Array.isArray(t))return n(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,a){if(!t)return;if("string"==typeof t)return n(t,a);var e=Object.prototype.toString.call(t).slice(8,-1);"Object"===e&&t.constructor&&(e=t.constructor.name);if("Map"===e||"Set"===e)return Array.from(t);if("Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e))return n(t,a)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function n(t,a){(null==a||a>t.length)&&(a=t.length);for(var e=0,o=new Array(a);e10?t.complete():axios.get("/api/pixelfed/v1/notifications",{params:{max_id:this.notificationMaxId}}).then((function(e){if(e.data.length){var o,n=e.data.filter((function(t){return!("share"==t.type&&!t.status)&&(!("comment"==t.type&&!t.status)&&(!("mention"==t.type&&!t.status)&&(!("favourite"==t.type&&!t.status)&&(!("follow"==t.type&&!t.account)&&!_.find(a.notifications,{id:t.id})))))})),r=n.map((function(t){return t.id}));a.notificationMaxId=Math.max.apply(Math,s(r)),(o=a.notifications).push.apply(o,s(n)),a.notificationCursor++,t.loaded()}else t.complete()}))},truncate:function(t){return t.length<=15?t:t.slice(0,15)+"..."},timeAgo:function(t){var a=Date.parse(t),e=Math.floor((new Date-a)/1e3),o=Math.floor(e/31536e3);return o>=1?o+"y":(o=Math.floor(e/604800))>=1?o+"w":(o=Math.floor(e/86400))>=1?o+"d":(o=Math.floor(e/3600))>=1?o+"h":(o=Math.floor(e/60))>=1?o+"m":Math.floor(e)+"s"},mentionUrl:function(t){return"/p/"+t.account.username+"/"+t.id},viewContext:function(t){switch(t.type){case"follow":return t.account.url;case"mention":case"like":case"favourite":case"comment":return t.status.url;case"tagged":return t.tagged.post_url;case"direct":return"/account/direct/t/"+t.account.id}return"/"},getProfileUrl:function(t){return 1==t.local?t.url:"/i/web/profile/_/"+t.id},getPostUrl:function(t){return 1==t.local?t.url:"/i/web/post/_/"+t.account.id+"/"+t.id}}}},29796:(t,a,e)=>{"use strict";e.r(a),e.d(a,{render:()=>o,staticRenderFns:()=>s});var o=function(){var t=this,a=t._self._c;return a("div",[a("div",{staticClass:"container"},[a("div",{staticClass:"row my-5"},[a("div",{staticClass:"col-12 col-md-8 offset-md-2"},[t._l(t.notifications,(function(e,o){return t.notifications.length>0?a("div",{staticClass:"media mb-3 align-items-center px-3 border-bottom pb-3"},[a("img",{staticClass:"mr-2 rounded-circle",staticStyle:{border:"1px solid #ccc"},attrs:{src:e.account.avatar,alt:"",width:"32px",height:"32px"}}),t._v(" "),a("div",{staticClass:"media-body font-weight-light"},["favourite"==e.type?a("div",[a("p",{staticClass:"my-0"},[a("a",{staticClass:"font-weight-bold text-dark word-break",attrs:{href:t.getProfileUrl(e.account),"data-placement":"bottom","data-toggle":"tooltip",title:e.account.username}},[t._v(t._s(0==e.account.local?"@":"")+t._s(t.truncate(e.account.username)))]),t._v(" liked your "),a("a",{staticClass:"font-weight-bold",attrs:{href:t.getPostUrl(e.status)}},[t._v("post")]),t._v(".\n\t\t\t\t\t\t\t")])]):"comment"==e.type?a("div",[a("p",{staticClass:"my-0"},[a("a",{staticClass:"font-weight-bold text-dark word-break",attrs:{href:t.getProfileUrl(e.account),"data-placement":"bottom","data-toggle":"tooltip",title:e.account.username}},[t._v(t._s(0==e.account.local?"@":"")+t._s(t.truncate(e.account.username)))]),t._v(" commented on your "),a("a",{staticClass:"font-weight-bold",attrs:{href:t.getPostUrl(e.status)}},[t._v("post")]),t._v(".\n\t\t\t\t\t\t\t")])]):"group:comment"==e.type?a("div",[a("p",{staticClass:"my-0"},[a("a",{staticClass:"font-weight-bold text-dark word-break",attrs:{href:t.getProfileUrl(e.account),title:e.account.username}},[t._v(t._s(0==e.account.local?"@":"")+t._s(t.truncate(e.account.username)))]),t._v(" commented on your "),a("a",{staticClass:"font-weight-bold",attrs:{href:e.group_post_url}},[t._v("group post")]),t._v(".\n\t\t\t\t\t\t\t")])]):"story:react"==e.type?a("div",[a("p",{staticClass:"my-0"},[a("a",{staticClass:"font-weight-bold text-dark word-break",attrs:{href:t.getProfileUrl(e.account),title:e.account.username}},[t._v(t._s(0==e.account.local?"@":"")+t._s(t.truncate(e.account.username)))]),t._v(" reacted to your "),a("a",{staticClass:"font-weight-bold",attrs:{href:"/account/direct/t/"+e.account.id}},[t._v("story")]),t._v(".\n\t\t\t\t\t\t\t")])]):"story:comment"==e.type?a("div",[a("p",{staticClass:"my-0"},[a("a",{staticClass:"font-weight-bold text-dark word-break",attrs:{href:t.getProfileUrl(e.account),title:e.account.username}},[t._v(t._s(0==e.account.local?"@":"")+t._s(t.truncate(e.account.username)))]),t._v(" commented on your "),a("a",{staticClass:"font-weight-bold",attrs:{href:"/account/direct/t/"+e.account.id}},[t._v("story")]),t._v(".\n\t\t\t\t\t\t\t")])]):"mention"==e.type?a("div",[a("p",{staticClass:"my-0"},[a("a",{staticClass:"font-weight-bold text-dark word-break",attrs:{href:t.getProfileUrl(e.account),"data-placement":"bottom","data-toggle":"tooltip",title:e.account.username}},[t._v(t._s(0==e.account.local?"@":"")+t._s(t.truncate(e.account.username)))]),t._v(" "),a("a",{staticClass:"font-weight-bold",attrs:{href:t.mentionUrl(e.status)}},[t._v("mentioned")]),t._v(" you.\n\t\t\t\t\t\t\t")])]):"follow"==e.type?a("div",[a("p",{staticClass:"my-0"},[a("a",{staticClass:"font-weight-bold text-dark word-break",attrs:{href:t.getProfileUrl(e.account),"data-placement":"bottom","data-toggle":"tooltip",title:e.account.username}},[t._v(t._s(0==e.account.local?"@":"")+t._s(t.truncate(e.account.username)))]),t._v(" followed you.\n\t\t\t\t\t\t\t")])]):"share"==e.type?a("div",[a("p",{staticClass:"my-0"},[a("a",{staticClass:"font-weight-bold text-dark word-break",attrs:{href:t.getProfileUrl(e.account),"data-placement":"bottom","data-toggle":"tooltip",title:e.account.username}},[t._v(t._s(0==e.account.local?"@":"")+t._s(t.truncate(e.account.username)))]),t._v(" shared your "),a("a",{staticClass:"font-weight-bold",attrs:{href:t.getPostUrl(e.status)}},[t._v("post")]),t._v(".\n\t\t\t\t\t\t\t")])]):"modlog"==e.type?a("div",[a("p",{staticClass:"my-0"},[a("a",{staticClass:"font-weight-bold text-dark word-break",attrs:{href:t.getProfileUrl(e.account),title:e.account.username}},[t._v(t._s(t.truncate(e.account.username)))]),t._v(" updated a "),a("a",{staticClass:"font-weight-bold",attrs:{href:e.modlog.url}},[t._v("modlog")]),t._v(".\n\t\t\t\t\t\t\t")])]):"tagged"==e.type?a("div",[a("p",{staticClass:"my-0"},[a("a",{staticClass:"font-weight-bold text-dark word-break",attrs:{href:t.getProfileUrl(e.account),title:e.account.username}},[t._v(t._s(0==e.account.local?"@":"")+t._s(t.truncate(e.account.username)))]),t._v(" tagged you in a "),a("a",{staticClass:"font-weight-bold",attrs:{href:e.tagged.post_url}},[t._v("post")]),t._v(".\n\t\t\t\t\t\t\t")])]):"direct"==e.type||"direct"==e.type?a("div",[a("p",{staticClass:"my-0"},[a("a",{staticClass:"font-weight-bold text-dark word-break",attrs:{href:t.getProfileUrl(e.account),title:e.account.username}},[t._v(t._s(0==e.account.local?"@":"")+t._s(t.truncate(e.account.username)))]),t._v(" sent a "),a("a",{staticClass:"font-weight-bold",attrs:{href:"/account/direct/t/"+e.account.id}},[t._v("dm")]),t._v(".\n\t\t\t\t\t\t\t")])]):"group.join.approved"==e.type?a("div",[a("p",{staticClass:"my-0"},[t._v("\n\t\t\t\t\t\t\t\tYour application to join "),a("a",{staticClass:"font-weight-bold text-dark word-break",attrs:{href:e.group.url,title:e.group.name}},[t._v(t._s(t.truncate(e.group.name)))]),t._v(" was approved!\n\t\t\t\t\t\t\t")])]):"group.join.rejected"==e.type?a("div",[a("p",{staticClass:"my-0"},[t._v("\n\t\t\t\t\t\t\t\tYour application to join "),a("a",{staticClass:"font-weight-bold text-dark word-break",attrs:{href:e.group.url,title:e.group.name}},[t._v(t._s(t.truncate(e.group.name)))]),t._v(" was rejected. You can re-apply to join in 6 months.\n\t\t\t\t\t\t\t")])]):t._e(),t._v(" "),a("div",{staticClass:"align-items-center"},[a("span",{staticClass:"small text-muted",attrs:{"data-toggle":"tooltip","data-placement":"bottom",title:e.created_at}},[t._v(t._s(t.timeAgo(e.created_at)))])])]),t._v(" "),a("div",[e.status&&e.status&&e.status.media_attachments&&e.status.media_attachments.length?a("div",[a("a",{attrs:{href:t.getPostUrl(e.status)}},[a("img",{attrs:{src:e.status.media_attachments[0].preview_url,width:"32px",height:"32px"}})])]):e.status&&e.status.parent&&e.status.parent.media_attachments&&e.status.parent.media_attachments.length?a("div",[a("a",{attrs:{href:e.status.parent.url}},[a("img",{attrs:{src:e.status.parent.media_attachments[0].preview_url,width:"32px",height:"32px"}})])]):a("div",["/"!=t.viewContext(e)?a("a",{staticClass:"btn btn-outline-primary py-0 font-weight-bold",attrs:{href:t.viewContext(e)}},[t._v("View")]):t._e()])])]):t._e()})),t._v(" "),t.notifications.length?a("div",[a("infinite-loading",{on:{infinite:t.infiniteNotifications}},[a("div",{staticClass:"font-weight-bold",attrs:{slot:"no-results"},slot:"no-results"}),t._v(" "),a("div",{staticClass:"font-weight-bold",attrs:{slot:"no-more"},slot:"no-more"})])],1):t._e(),t._v(" "),0==t.notifications.length?a("div",{staticClass:"text-lighter text-center py-3"},[t._m(0),t._v(" "),a("p",{staticClass:"mb-0 small font-weight-bold"},[t._v("0 Notifications!")])]):t._e()],2)])])])},s=[function(){var t=this._self._c;return t("p",{staticClass:"mb-0"},[t("i",{staticClass:"fas fa-inbox fa-3x"})])}]},78324:(t,a,e)=>{Vue.component("activity-component",e(567).default)},567:(t,a,e)=>{"use strict";e.r(a),e.d(a,{default:()=>r});var o=e(57217),s=e(27846),n={};for(const t in s)"default"!==t&&(n[t]=()=>s[t]);e.d(a,n);const r=(0,e(51900).default)(s.default,o.render,o.staticRenderFns,!1,null,null,null).exports},27846:(t,a,e)=>{"use strict";e.r(a),e.d(a,{default:()=>n});var o=e(65667),s={};for(const t in o)"default"!==t&&(s[t]=()=>o[t]);e.d(a,s);const n=o.default},57217:(t,a,e)=>{"use strict";e.r(a);var o=e(29796),s={};for(const t in o)"default"!==t&&(s[t]=()=>o[t]);e.d(a,s)}},t=>{t.O(0,[8898],(()=>{return a=78324,t(t.s=a);var a}));t.O()}]); \ No newline at end of file +(self.webpackChunkpixelfed=self.webpackChunkpixelfed||[]).push([[7809],{87640:(t,a,e)=>{"use strict";e.r(a),e.d(a,{default:()=>r});var o=e(74692);function s(t){return function(t){if(Array.isArray(t))return n(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,a){if(!t)return;if("string"==typeof t)return n(t,a);var e=Object.prototype.toString.call(t).slice(8,-1);"Object"===e&&t.constructor&&(e=t.constructor.name);if("Map"===e||"Set"===e)return Array.from(t);if("Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e))return n(t,a)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function n(t,a){(null==a||a>t.length)&&(a=t.length);for(var e=0,o=new Array(a);e10?t.complete():axios.get("/api/pixelfed/v1/notifications",{params:{max_id:this.notificationMaxId}}).then((function(e){if(e.data.length){var o,n=e.data.filter((function(t){return!("share"==t.type&&!t.status)&&(!("comment"==t.type&&!t.status)&&(!("mention"==t.type&&!t.status)&&(!("favourite"==t.type&&!t.status)&&(!("follow"==t.type&&!t.account)&&!_.find(a.notifications,{id:t.id})))))})),r=n.map((function(t){return t.id}));a.notificationMaxId=Math.max.apply(Math,s(r)),(o=a.notifications).push.apply(o,s(n)),a.notificationCursor++,t.loaded()}else t.complete()}))},truncate:function(t){return t.length<=15?t:t.slice(0,15)+"..."},timeAgo:function(t){var a=Date.parse(t),e=Math.floor((new Date-a)/1e3),o=Math.floor(e/31536e3);return o>=1?o+"y":(o=Math.floor(e/604800))>=1?o+"w":(o=Math.floor(e/86400))>=1?o+"d":(o=Math.floor(e/3600))>=1?o+"h":(o=Math.floor(e/60))>=1?o+"m":Math.floor(e)+"s"},mentionUrl:function(t){return"/p/"+t.account.username+"/"+t.id},viewContext:function(t){switch(t.type){case"follow":return t.account.url;case"mention":case"like":case"favourite":case"comment":return t.status.url;case"tagged":return t.tagged.post_url;case"direct":return"/account/direct/t/"+t.account.id}return"/"},getProfileUrl:function(t){return 1==t.local?t.url:"/i/web/profile/_/"+t.id},getPostUrl:function(t){return 1==t.local?t.url:"/i/web/post/_/"+t.account.id+"/"+t.id}}}},67370:(t,a,e)=>{"use strict";e.r(a),e.d(a,{render:()=>o,staticRenderFns:()=>s});var o=function(){var t=this,a=t._self._c;return a("div",[a("div",{staticClass:"container"},[a("div",{staticClass:"row my-5"},[a("div",{staticClass:"col-12 col-md-8 offset-md-2"},[t._l(t.notifications,(function(e,o){return t.notifications.length>0?a("div",{staticClass:"media mb-3 align-items-center px-3 border-bottom pb-3"},[a("img",{staticClass:"mr-2 rounded-circle",staticStyle:{border:"1px solid #ccc"},attrs:{src:e.account.avatar,alt:"",width:"32px",height:"32px"}}),t._v(" "),a("div",{staticClass:"media-body font-weight-light"},["favourite"==e.type?a("div",[a("p",{staticClass:"my-0"},[a("a",{staticClass:"font-weight-bold text-dark word-break",attrs:{href:t.getProfileUrl(e.account),"data-placement":"bottom","data-toggle":"tooltip",title:e.account.username}},[t._v(t._s(0==e.account.local?"@":"")+t._s(t.truncate(e.account.username)))]),t._v(" liked your "),a("a",{staticClass:"font-weight-bold",attrs:{href:t.getPostUrl(e.status)}},[t._v("post")]),t._v(".\n\t\t\t\t\t\t\t")])]):"comment"==e.type?a("div",[a("p",{staticClass:"my-0"},[a("a",{staticClass:"font-weight-bold text-dark word-break",attrs:{href:t.getProfileUrl(e.account),"data-placement":"bottom","data-toggle":"tooltip",title:e.account.username}},[t._v(t._s(0==e.account.local?"@":"")+t._s(t.truncate(e.account.username)))]),t._v(" commented on your "),a("a",{staticClass:"font-weight-bold",attrs:{href:t.getPostUrl(e.status)}},[t._v("post")]),t._v(".\n\t\t\t\t\t\t\t")])]):"group:comment"==e.type?a("div",[a("p",{staticClass:"my-0"},[a("a",{staticClass:"font-weight-bold text-dark word-break",attrs:{href:t.getProfileUrl(e.account),title:e.account.username}},[t._v(t._s(0==e.account.local?"@":"")+t._s(t.truncate(e.account.username)))]),t._v(" commented on your "),a("a",{staticClass:"font-weight-bold",attrs:{href:e.group_post_url}},[t._v("group post")]),t._v(".\n\t\t\t\t\t\t\t")])]):"story:react"==e.type?a("div",[a("p",{staticClass:"my-0"},[a("a",{staticClass:"font-weight-bold text-dark word-break",attrs:{href:t.getProfileUrl(e.account),title:e.account.username}},[t._v(t._s(0==e.account.local?"@":"")+t._s(t.truncate(e.account.username)))]),t._v(" reacted to your "),a("a",{staticClass:"font-weight-bold",attrs:{href:"/account/direct/t/"+e.account.id}},[t._v("story")]),t._v(".\n\t\t\t\t\t\t\t")])]):"story:comment"==e.type?a("div",[a("p",{staticClass:"my-0"},[a("a",{staticClass:"font-weight-bold text-dark word-break",attrs:{href:t.getProfileUrl(e.account),title:e.account.username}},[t._v(t._s(0==e.account.local?"@":"")+t._s(t.truncate(e.account.username)))]),t._v(" commented on your "),a("a",{staticClass:"font-weight-bold",attrs:{href:"/account/direct/t/"+e.account.id}},[t._v("story")]),t._v(".\n\t\t\t\t\t\t\t")])]):"mention"==e.type?a("div",[a("p",{staticClass:"my-0"},[a("a",{staticClass:"font-weight-bold text-dark word-break",attrs:{href:t.getProfileUrl(e.account),"data-placement":"bottom","data-toggle":"tooltip",title:e.account.username}},[t._v(t._s(0==e.account.local?"@":"")+t._s(t.truncate(e.account.username)))]),t._v(" "),a("a",{staticClass:"font-weight-bold",attrs:{href:t.mentionUrl(e.status)}},[t._v("mentioned")]),t._v(" you.\n\t\t\t\t\t\t\t")])]):"follow"==e.type?a("div",[a("p",{staticClass:"my-0"},[a("a",{staticClass:"font-weight-bold text-dark word-break",attrs:{href:t.getProfileUrl(e.account),"data-placement":"bottom","data-toggle":"tooltip",title:e.account.username}},[t._v(t._s(0==e.account.local?"@":"")+t._s(t.truncate(e.account.username)))]),t._v(" followed you.\n\t\t\t\t\t\t\t")])]):"share"==e.type?a("div",[a("p",{staticClass:"my-0"},[a("a",{staticClass:"font-weight-bold text-dark word-break",attrs:{href:t.getProfileUrl(e.account),"data-placement":"bottom","data-toggle":"tooltip",title:e.account.username}},[t._v(t._s(0==e.account.local?"@":"")+t._s(t.truncate(e.account.username)))]),t._v(" shared your "),a("a",{staticClass:"font-weight-bold",attrs:{href:t.getPostUrl(e.status)}},[t._v("post")]),t._v(".\n\t\t\t\t\t\t\t")])]):"modlog"==e.type?a("div",[a("p",{staticClass:"my-0"},[a("a",{staticClass:"font-weight-bold text-dark word-break",attrs:{href:t.getProfileUrl(e.account),title:e.account.username}},[t._v(t._s(t.truncate(e.account.username)))]),t._v(" updated a "),a("a",{staticClass:"font-weight-bold",attrs:{href:e.modlog.url}},[t._v("modlog")]),t._v(".\n\t\t\t\t\t\t\t")])]):"tagged"==e.type?a("div",[a("p",{staticClass:"my-0"},[a("a",{staticClass:"font-weight-bold text-dark word-break",attrs:{href:t.getProfileUrl(e.account),title:e.account.username}},[t._v(t._s(0==e.account.local?"@":"")+t._s(t.truncate(e.account.username)))]),t._v(" tagged you in a "),a("a",{staticClass:"font-weight-bold",attrs:{href:e.tagged.post_url}},[t._v("post")]),t._v(".\n\t\t\t\t\t\t\t")])]):"direct"==e.type||"direct"==e.type?a("div",[a("p",{staticClass:"my-0"},[a("a",{staticClass:"font-weight-bold text-dark word-break",attrs:{href:t.getProfileUrl(e.account),title:e.account.username}},[t._v(t._s(0==e.account.local?"@":"")+t._s(t.truncate(e.account.username)))]),t._v(" sent a "),a("a",{staticClass:"font-weight-bold",attrs:{href:"/account/direct/t/"+e.account.id}},[t._v("dm")]),t._v(".\n\t\t\t\t\t\t\t")])]):"group.join.approved"==e.type?a("div",[a("p",{staticClass:"my-0"},[t._v("\n\t\t\t\t\t\t\t\tYour application to join "),a("a",{staticClass:"font-weight-bold text-dark word-break",attrs:{href:e.group.url,title:e.group.name}},[t._v(t._s(t.truncate(e.group.name)))]),t._v(" was approved!\n\t\t\t\t\t\t\t")])]):"group.join.rejected"==e.type?a("div",[a("p",{staticClass:"my-0"},[t._v("\n\t\t\t\t\t\t\t\tYour application to join "),a("a",{staticClass:"font-weight-bold text-dark word-break",attrs:{href:e.group.url,title:e.group.name}},[t._v(t._s(t.truncate(e.group.name)))]),t._v(" was rejected. You can re-apply to join in 6 months.\n\t\t\t\t\t\t\t")])]):t._e(),t._v(" "),a("div",{staticClass:"align-items-center"},[a("span",{staticClass:"small text-muted",attrs:{"data-toggle":"tooltip","data-placement":"bottom",title:e.created_at}},[t._v(t._s(t.timeAgo(e.created_at)))])])]),t._v(" "),a("div",[e.status&&e.status&&e.status.media_attachments&&e.status.media_attachments.length?a("div",[a("a",{attrs:{href:t.getPostUrl(e.status)}},[a("img",{attrs:{src:e.status.media_attachments[0].preview_url,width:"32px",height:"32px"}})])]):e.status&&e.status.parent&&e.status.parent.media_attachments&&e.status.parent.media_attachments.length?a("div",[a("a",{attrs:{href:e.status.parent.url}},[a("img",{attrs:{src:e.status.parent.media_attachments[0].preview_url,width:"32px",height:"32px"}})])]):a("div",["/"!=t.viewContext(e)?a("a",{staticClass:"btn btn-outline-primary py-0 font-weight-bold",attrs:{href:t.viewContext(e)}},[t._v("View")]):t._e()])])]):t._e()})),t._v(" "),t.notifications.length?a("div",[a("infinite-loading",{on:{infinite:t.infiniteNotifications}},[a("div",{staticClass:"font-weight-bold",attrs:{slot:"no-results"},slot:"no-results"}),t._v(" "),a("div",{staticClass:"font-weight-bold",attrs:{slot:"no-more"},slot:"no-more"})])],1):t._e(),t._v(" "),0==t.notifications.length?a("div",{staticClass:"text-lighter text-center py-3"},[t._m(0),t._v(" "),a("p",{staticClass:"mb-0 small font-weight-bold"},[t._v("0 Notifications!")])]):t._e()],2)])])])},s=[function(){var t=this._self._c;return t("p",{staticClass:"mb-0"},[t("i",{staticClass:"fas fa-inbox fa-3x"})])}]},96711:(t,a,e)=>{Vue.component("activity-component",e(31040).default)},31040:(t,a,e)=>{"use strict";e.r(a),e.d(a,{default:()=>r});var o=e(77411),s=e(96363),n={};for(const t in s)"default"!==t&&(n[t]=()=>s[t]);e.d(a,n);const r=(0,e(14486).default)(s.default,o.render,o.staticRenderFns,!1,null,null,null).exports},96363:(t,a,e)=>{"use strict";e.r(a),e.d(a,{default:()=>n});var o=e(87640),s={};for(const t in o)"default"!==t&&(s[t]=()=>o[t]);e.d(a,s);const n=o.default},77411:(t,a,e)=>{"use strict";e.r(a);var o=e(67370),s={};for(const t in o)"default"!==t&&(s[t]=()=>o[t]);e.d(a,s)}},t=>{t.O(0,[3660],(()=>{return a=96711,t(t.s=a);var a}));t.O()}]); \ No newline at end of file diff --git a/public/js/admin.js b/public/js/admin.js index a216de097..4c442370f 100644 --- a/public/js/admin.js +++ b/public/js/admin.js @@ -1,2 +1,2 @@ /*! For license information please see admin.js.LICENSE.txt */ -(self.webpackChunkpixelfed=self.webpackChunkpixelfed||[]).push([[467],{88118:(t,e,a)=>{"use strict";a.r(e),a.d(e,{default:()=>r});var s=a(29655);a(67964);function i(t){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(){n=function(){return e};var t,e={},a=Object.prototype,s=a.hasOwnProperty,o=Object.defineProperty||function(t,e,a){t[e]=a.value},r="function"==typeof Symbol?Symbol:{},l=r.iterator||"@@iterator",c=r.asyncIterator||"@@asyncIterator",d=r.toStringTag||"@@toStringTag";function u(t,e,a){return Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(t){u=function(t,e,a){return t[e]=a}}function p(t,e,a,s){var i=e&&e.prototype instanceof _?e:_,n=Object.create(i.prototype),r=new L(s||[]);return o(n,"_invoke",{value:A(t,a,r)}),n}function m(t,e,a){try{return{type:"normal",arg:t.call(e,a)}}catch(t){return{type:"throw",arg:t}}}e.wrap=p;var v="suspendedStart",f="suspendedYield",h="executing",g="completed",b={};function _(){}function y(){}function C(){}var w={};u(w,l,(function(){return this}));var x=Object.getPrototypeOf,k=x&&x(x(D([])));k&&k!==a&&s.call(k,l)&&(w=k);var S=C.prototype=_.prototype=Object.create(w);function T(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function R(t,e){function a(n,o,r,l){var c=m(t[n],t,o);if("throw"!==c.type){var d=c.arg,u=d.value;return u&&"object"==i(u)&&s.call(u,"__await")?e.resolve(u.__await).then((function(t){a("next",t,r,l)}),(function(t){a("throw",t,r,l)})):e.resolve(u).then((function(t){d.value=t,r(d)}),(function(t){return a("throw",t,r,l)}))}l(c.arg)}var n;o(this,"_invoke",{value:function(t,s){function i(){return new e((function(e,i){a(t,s,e,i)}))}return n=n?n.then(i,i):i()}})}function A(e,a,s){var i=v;return function(n,o){if(i===h)throw new Error("Generator is already running");if(i===g){if("throw"===n)throw o;return{value:t,done:!0}}for(s.method=n,s.arg=o;;){var r=s.delegate;if(r){var l=I(r,s);if(l){if(l===b)continue;return l}}if("next"===s.method)s.sent=s._sent=s.arg;else if("throw"===s.method){if(i===v)throw i=g,s.arg;s.dispatchException(s.arg)}else"return"===s.method&&s.abrupt("return",s.arg);i=h;var c=m(e,a,s);if("normal"===c.type){if(i=s.done?g:f,c.arg===b)continue;return{value:c.arg,done:s.done}}"throw"===c.type&&(i=g,s.method="throw",s.arg=c.arg)}}}function I(e,a){var s=a.method,i=e.iterator[s];if(i===t)return a.delegate=null,"throw"===s&&e.iterator.return&&(a.method="return",a.arg=t,I(e,a),"throw"===a.method)||"return"!==s&&(a.method="throw",a.arg=new TypeError("The iterator does not provide a '"+s+"' method")),b;var n=m(i,e.iterator,a.arg);if("throw"===n.type)return a.method="throw",a.arg=n.arg,a.delegate=null,b;var o=n.arg;return o?o.done?(a[e.resultName]=o.value,a.next=e.nextLoc,"return"!==a.method&&(a.method="next",a.arg=t),a.delegate=null,b):o:(a.method="throw",a.arg=new TypeError("iterator result is not an object"),a.delegate=null,b)}function j(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function L(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(j,this),this.reset(!0)}function D(e){if(e||""===e){var a=e[l];if(a)return a.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,o=function a(){for(;++n=0;--n){var o=this.tryEntries[n],r=o.completion;if("root"===o.tryLoc)return i("end");if(o.tryLoc<=this.prev){var l=s.call(o,"catchLoc"),c=s.call(o,"finallyLoc");if(l&&c){if(this.prev=0;--a){var i=this.tryEntries[a];if(i.tryLoc<=this.prev&&s.call(i,"finallyLoc")&&this.prev=0;--e){var a=this.tryEntries[e];if(a.finallyLoc===t)return this.complete(a.completion,a.afterLoc),P(a),b}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var a=this.tryEntries[e];if(a.tryLoc===t){var s=a.completion;if("throw"===s.type){var i=s.arg;P(a)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,a,s){return this.delegate={iterator:D(e),resultName:a,nextLoc:s},"next"===this.method&&(this.arg=t),b}},e}function o(t,e,a,s,i,n,o){try{var r=t[n](o),l=r.value}catch(t){return void a(t)}r.done?e(l):Promise.resolve(l).then(s,i)}const r={components:{Autocomplete:s.default},data:function(){return{loaded:!1,tabIndex:0,config:{autospam_enabled:null,open:0,closed:0},closedReports:[],closedReportsFetched:!1,closedReportsCursor:null,closedReportsCanLoadMore:!1,showSpamReportModal:!1,showSpamReportModalLoading:!0,viewingSpamReport:void 0,viewingSpamReportLoading:!1,showNonSpamModal:!1,nonSpamAccounts:[],searchLoading:!1,customTokens:[],customTokensFetched:!1,customTokensCanLoadMore:!1,showCreateTokenModal:!1,customTokenForm:{token:void 0,weight:1,category:"spam",note:void 0,active:!0},showEditTokenModal:!1,editCustomToken:{},editCustomTokenForm:{token:void 0,weight:1,category:"spam",note:void 0,active:!0}}},mounted:function(){var t=this;setTimeout((function(){t.loaded=!0,t.fetchConfig()}),1e3)},methods:{toggleTab:function(t){var e=this;this.tabIndex=t,0==t&&setTimeout((function(){e.initChart()}),500),"closed_reports"!==t||this.closedReportsFetched||this.fetchClosedReports(),"manage_tokens"!==t||this.customTokensFetched||this.fetchCustomTokens()},formatCount:function(t){return App.util.format.count(t)},timeAgo:function(t){return t?App.util.format.timeAgo(t):t},fetchConfig:function(){var t=this;axios.post("/i/admin/api/autospam/config").then((function(e){t.config=e.data,t.loaded=!0})).finally((function(){setTimeout((function(){t.initChart()}),100)}))},initChart:function(){new Chart(document.querySelector("#c1-dark"),{type:"line",options:{scales:{yAxes:[{gridLines:{lineWidth:1,color:"#212529",zeroLineColor:"#212529"}}]}},data:{datasets:[{data:this.config.graph}],labels:this.config.graphLabels}})},fetchClosedReports:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"/i/admin/api/autospam/reports/closed";axios.post(e).then((function(e){t.closedReports=e.data})).finally((function(){t.closedReportsFetched=!0}))},viewSpamReport:function(t){this.viewingSpamReportLoading=!1,this.viewingSpamReport=t,this.showSpamReportModal=!0,setTimeout((function(){pixelfed.readmore()}),500)},autospamPaginate:function(t){event.currentTarget.blur();var e="next"==t?this.closedReports.links.next:this.closedReports.links.prev;this.fetchClosedReports(e)},autospamTrainSpam:function(){event.currentTarget.blur(),axios.post("/i/admin/api/autospam/train").then((function(t){swal("Training Autospam!","A background job has been dispatched to train Autospam!","success"),setTimeout((function(){window.location.reload()}),1e4)})).catch((function(t){422===t.response.status?swal("Error",t.response.data.error,"error"):swal("Error","Oops, an error occured, please try again later","error")}))},autospamTrainNonSpam:function(){this.showNonSpamModal=!0},composeSearch:function(t){var e=this;return t.length<1?[]:axios.post("/i/admin/api/autospam/search/non-spam",{q:t}).then((function(t){return t.data.filter((function(t){return!e.nonSpamAccounts||!e.nonSpamAccounts.length||e.nonSpamAccounts&&-1==e.nonSpamAccounts.map((function(t){return t.id})).indexOf(t.id)}))}))},getTagResultValue:function(t){return t.username},onSearchResultClick:function(t){-1==this.nonSpamAccounts.map((function(t){return t.id})).indexOf(t.id)&&this.nonSpamAccounts.push(t)},autospamTrainNonSpamRemove:function(t){this.nonSpamAccounts.splice(t,1)},autospamTrainNonSpamSubmit:function(){this.showNonSpamModal=!1,axios.post("/i/admin/api/autospam/train/non-spam",{accounts:this.nonSpamAccounts}).then((function(t){swal("Training Autospam!","A background job has been dispatched to train Autospam!","success"),setTimeout((function(){window.location.reload()}),1e4)})).catch((function(t){422===t.response.status?swal("Error",t.response.data.error,"error"):swal("Error","Oops, an error occured, please try again later","error")}))},fetchCustomTokens:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"/i/admin/api/autospam/tokens/custom";axios.post(e).then((function(e){t.customTokens=e.data})).finally((function(){t.customTokensFetched=!0}))},handleSaveToken:function(){var t=this;axios.post("/i/admin/api/autospam/tokens/store",this.customTokenForm).then((function(t){console.log(t.data)})).catch((function(t){swal("Oops! An Error Occured",t.response.data.message,"error")})).finally((function(){t.customTokenForm={token:void 0,weight:1,category:"spam",note:void 0,active:!0},t.fetchCustomTokens()}))},openEditTokenModal:function(t){event.currentTarget.blur(),this.editCustomToken=t,this.editCustomTokenForm=t,this.showEditTokenModal=!0},handleUpdateToken:function(){axios.post("/i/admin/api/autospam/tokens/update",this.editCustomTokenForm).then((function(t){console.log(t.data)}))},autospamTokenPaginate:function(t){event.currentTarget.blur();var e="next"==t?this.customTokens.next_page_url:this.customTokens.prev_page_url;this.fetchCustomTokens(e)},downloadExport:function(){event.currentTarget.blur(),axios.post("/i/admin/api/autospam/tokens/export",{},{responseType:"blob"}).then((function(t){var e=document.createElement("a");e.setAttribute("download","pixelfed-autospam-export.json");var a=URL.createObjectURL(t.data);e.href=a,e.setAttribute("target","_blank"),e.click(),URL.revokeObjectURL(a)})).catch(function(){var t,e=(t=n().mark((function t(e){var a;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(a=e.response.data,!("blob"===e.request.responseType&&e.response.data instanceof Blob&&e.response.data.type&&-1!=e.response.data.type.toLowerCase().indexOf("json"))){t.next=8;break}return t.t0=JSON,t.next=5,e.response.data.text();case 5:t.t1=t.sent,a=t.t0.parse.call(t.t0,t.t1),swal("Export Error",a.error,"error");case 8:case 9:case"end":return t.stop()}}),t)})),function(){var e=this,a=arguments;return new Promise((function(s,i){var n=t.apply(e,a);function r(t){o(n,s,i,r,l,"next",t)}function l(t){o(n,s,i,r,l,"throw",t)}r(void 0)}))});return function(t){return e.apply(this,arguments)}}())},enableAdvanced:function(){event.currentTarget.blur(),!this.config.files.spam.exists||!this.config.files.ham.exists||!this.config.files.combined.exists||this.config.files.spam.size<1e3||this.config.files.ham.size<1e3||this.config.files.combined.size<1e3?swal("Training Required",'Before you can enable Advanced Detection, you need to train the models.\n\n Click on the "Train Autospam" tab and train both categories before proceeding',"error"):swal({title:"Confirm",text:"Are you sure you want to enable Advanced Detection?",icon:"warning",dangerMode:!0,buttons:{cancel:"Cancel",confirm:{text:"Enable",value:"enable"}}}).then((function(t){"enable"===t&&axios.post("/i/admin/api/autospam/config/enable").then((function(t){swal("Success! Advanced Detection is now enabled!\n\n This page will reload in a few seconds!",{icon:"success"}),setTimeout((function(){window.location.reload()}),5e3)})).catch((function(t){swal("Oops!","An error occured, please try again later","error")}))}))},disableAdvanced:function(){event.currentTarget.blur(),swal({title:"Confirm",text:"Are you sure you want to disable Advanced Detection?",icon:"warning",dangerMode:!0,buttons:{cancel:"Cancel",confirm:{text:"Disable",value:"disable"}}}).then((function(t){"disable"===t&&axios.post("/i/admin/api/autospam/config/disable").then((function(t){swal("Success! Advanced Detection is now disabled!\n\n This page will reload in a few seconds!",{icon:"success"}),setTimeout((function(){window.location.reload()}),5e3)})).catch((function(t){swal("Oops!","An error occured, please try again later","error")}))}))},handleImport:function(){event.currentTarget.blur(),swal("Error","You do not have enough data to support importing.","error")}}}},21047:(t,e,a)=>{"use strict";a.r(e),a.d(e,{default:()=>i});var s=a(19755);const i={data:function(){return{loaded:!1,initialData:{},tabIndex:1,tabs:[{id:1,title:"Overview",icon:"far fa-home"},{id:3,title:"Server Details",icon:"far fa-info-circle"},{id:4,title:"Admin Contact",icon:"far fa-user-crown"},{id:5,title:"Favourite Posts",icon:"far fa-heart"},{id:6,title:"Privacy Pledge",icon:"far fa-eye-slash"},{id:7,title:"Community Guidelines",icon:"far fa-smile-beam"},{id:8,title:"Feature Requirements",icon:"far fa-bolt"},{id:9,title:"User Testimonials",icon:"far fa-comment-smile"}],form:{summary:"",location:0,contact_account:0,contact_email:"",privacy_pledge:void 0,banner_image:void 0,locale:0},requirements:{activitypub_enabled:void 0,open_registration:void 0,oauth_enabled:void 0},feature_config:[],requirements_validator:[],popularPostsLoaded:!1,popularPosts:[],selectedPopularPosts:[],selectedPosts:[],favouritePostByIdInput:"",favouritePostByIdFetching:!1,communityGuidelines:[],isUploadingBanner:!1,state:{is_eligible:!1,submission_exists:!1,awaiting_approval:!1,is_active:!1,submission_timestamp:void 0},isSubmitting:!1,testimonial:{username:void 0,body:void 0},testimonials:[],isEditingTestimonial:!1,editingTestimonial:void 0}},mounted:function(){this.fetchInitialData()},methods:{toggleTab:function(t){this.tabIndex=t},fetchInitialData:function(){var t=this;axios.get("/i/admin/api/directory/initial-data").then((function(e){t.initialData=e.data,e.data.activitypub_enabled&&(t.requirements.activitypub_enabled=e.data.activitypub_enabled),e.data.open_registration&&(t.requirements.open_registration=e.data.open_registration),e.data.oauth_enabled&&(t.requirements.oauth_enabled=e.data.oauth_enabled),e.data.summary&&(t.form.summary=e.data.summary),e.data.location&&(t.form.location=e.data.location),e.data.favourite_posts&&(t.selectedPosts=e.data.favourite_posts),e.data.admin&&(t.form.contact_account=e.data.admin),e.data.contact_email&&(t.form.contact_email=e.data.contact_email),e.data.community_guidelines&&(t.communityGuidelines=e.data.community_guidelines),e.data.privacy_pledge&&(t.form.privacy_pledge=e.data.privacy_pledge),e.data.feature_config&&(t.feature_config=e.data.feature_config),e.data.requirements_validator&&(t.requirements_validator=e.data.requirements_validator),e.data.banner_image&&(t.form.banner_image=e.data.banner_image),e.data.primary_locale&&(t.form.primary_locale=e.data.primary_locale),e.data.is_eligible&&(t.state.is_eligible=e.data.is_eligible),e.data.testimonials&&(t.testimonials=e.data.testimonials),e.data.submission_state&&(t.state.is_active=e.data.submission_state.active_submission,t.state.submission_exists=e.data.submission_state.pending_submission,t.state.awaiting_approval=e.data.submission_state.pending_submission)})).then((function(){t.loaded=!0}))},initPopularPosts:function(){var t=this;this.popularPostsLoaded||axios.get("/i/admin/api/directory/popular-posts").then((function(e){t.popularPosts=e.data.filter((function(e){return!t.selectedPosts.map((function(t){return t.id})).includes(e.id)}))})).then((function(){t.popularPostsLoaded=!0}))},formatCount:function(t){return window.App.util.format.count(t)},formatDateTime:function(t){var e=new Date(t);return new Intl.DateTimeFormat("en-US",{dateStyle:"medium",timeStyle:"short"}).format(e)},formatDate:function(t){var e=new Date(t);return new Intl.DateTimeFormat("en-US",{month:"short",year:"numeric"}).format(e)},formatTimestamp:function(t){return window.App.util.format.timeAgo(t)},togglePopularPost:function(t,e){if(this.selectedPosts.length)if(this.selectedPosts.map((function(t){return t.id})).includes(t))this.selectedPosts=this.selectedPosts.filter((function(e){return e.id!=t}));else{if(this.selectedPosts.length>=12)return swal("Oops!","You can only select 12 popular posts","error"),void(event.currentTarget.checked=!1);this.selectedPosts.push(e)}else this.selectedPosts.push(e)},toggleSelectedPost:function(t){this.selectedPosts=this.selectedPosts.filter((function(e){return e.id!==t.id}))},handlePostByIdSearch:function(){var t=this;event.currentTarget.blur(),this.selectedPosts.length>=12?swal("Oops","You can only select 12 posts","error"):(this.favouritePostByIdFetching=!0,axios.post("/i/admin/api/directory/add-by-id",{q:this.favouritePostByIdInput}).then((function(e){t.selectedPosts.map((function(t){return t.id})).includes(e.data.id)?swal("Oops!","You already selected this post!","error"):(t.selectedPosts.push(e.data),t.favouritePostByIdInput="",t.popularPosts=t.popularPosts.filter((function(t){return t.id!=e.data.id})))})).then((function(){t.favouritePostByIdFetching=!1,s("#favposts-1-tab").tab("show")})).catch((function(e){swal("Invalid Post","The post id you added is not valid","error"),t.favouritePostByIdFetching=!1})))},save:function(){axios.post("/i/admin/api/directory/save",{location:this.form.location,summary:this.form.summary,admin_uid:this.form.contact_account,contact_email:this.form.contact_email,favourite_posts:this.selectedPosts.map((function(t){return t.id})),privacy_pledge:this.form.privacy_pledge}).then((function(t){swal("Success!","Successfully saved directory settings","success")})).catch((function(t){swal("Oops!",t.response.data.message,"error")}))},uploadBannerImage:function(){var t=this;if(this.isUploadingBanner=!0,window.confirm("Are you sure you want to update your server banner image?")){var e=new FormData;e.append("banner_image",this.$refs.bannerImageRef.files[0]),axios.post("/i/admin/api/directory/save",e,{headers:{"Content-Type":"multipart/form-data"}}).then((function(e){t.form.banner_image=e.data.banner_image,t.isUploadingBanner=!1})).catch((function(e){swal("Error",e.response.data.message,"error"),t.isUploadingBanner=!1}))}else this.isUploadingBanner=!1},deleteBannerImage:function(){var t=this;window.confirm("Are you sure you want to delete your server banner image?")&&axios.delete("/i/admin/api/directory/banner-image").then((function(e){t.form.banner_image=e.data})).catch((function(t){console.log(t)}))},handleSubmit:function(){var t=this;window.confirm("Are you sure you want to submit your server?")&&(this.isSubmitting=!0,axios.post("/i/admin/api/directory/submit").then((function(e){setTimeout((function(){t.isSubmitting=!1,t.state.is_active=!0,console.log(e.data)}),3e3)})).catch((function(t){swal("Error",t.response.data.message,"error")})))},deleteTestimonial:function(t){var e=this;window.confirm("Are you sure you want to delete the testimonial by "+t.profile.username+"?")&&axios.post("/i/admin/api/directory/testimonial/delete",{profile_id:t.profile.id}).then((function(a){e.testimonials=e.testimonials.filter((function(e){return e.profile.id!=t.profile.id}))}))},editTestimonial:function(t){this.isEditingTestimonial=!0,this.editingTestimonial=t},saveTestimonial:function(){var t,e=this;null===(t=event.currentTarget)||void 0===t||t.blur(),axios.post("/i/admin/api/directory/testimonial/save",{username:this.testimonial.username,body:this.testimonial.body}).then((function(t){e.testimonials.push(t.data),e.testimonial={username:void 0,body:void 0}})).catch((function(t){var e=t.response.data.hasOwnProperty("error")?t.response.data.error:t.response.data.message;swal("Oops!",e,"error")}))},cancelEditTestimonial:function(){var t;null===(t=event.currentTarget)||void 0===t||t.blur(),this.isEditingTestimonial=!1,this.editingTestimonial={}},saveEditTestimonial:function(){var t,e=this;null===(t=event.currentTarget)||void 0===t||t.blur(),axios.post("/i/admin/api/directory/testimonial/update",{profile_id:this.editingTestimonial.profile.id,body:this.editingTestimonial.body}).then((function(t){e.isEditingTestimonial=!1,e.editingTestimonial={}}))}},watch:{selectedPosts:function(t){var e=t.map((function(t){return t.id}));this.popularPosts=this.popularPosts.filter((function(t){return!e.includes(t.id)}))}}}},57143:(t,e,a)=>{"use strict";a.r(e),a.d(e,{default:()=>i});var s=a(29655);a(67964);const i={components:{Autocomplete:s.default},data:function(){return{loaded:!1,tabIndex:0,stats:{total_unique:0,total_posts:0,added_14_days:0,total_banned:0,total_nsfw:0},hashtags:[],pagination:[],sortCol:void 0,sortDir:void 0,trendingTags:[],bannedTags:[],showEditModal:!1,editingHashtag:void 0,editSaved:!1,editSavedTimeout:void 0,searchLoading:!1}},mounted:function(){var t=this;this.fetchStats(),this.fetchHashtags(),this.$root.$on("bv::modal::hidden",(function(e,a){t.editSaved=!1,clearTimeout(t.editSavedTimeout),t.editingHashtag=void 0}))},watch:{editingHashtag:{deep:!0,immediate:!0,handler:function(t,e){null!=t&&null!=e&&this.storeHashtagEdit(t)}}},methods:{fetchStats:function(){var t=this;axios.get("/i/admin/api/hashtags/stats").then((function(e){t.stats=e.data}))},fetchHashtags:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"/i/admin/api/hashtags/query";axios.get(e).then((function(e){t.hashtags=e.data.data,t.pagination={next:e.data.links.next,prev:e.data.links.prev},t.loaded=!0}))},prettyCount:function(t){return t?t.toLocaleString("en-CA",{compactDisplay:"short",notation:"compact"}):t},timeAgo:function(t){return t?App.util.format.timeAgo(t):t},boolIcon:function(t){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"text-muted";return t?''):'')},paginate:function(t){event.currentTarget.blur();var e="next"==t?this.pagination.next:this.pagination.prev;this.fetchHashtags(e)},toggleCol:function(t){this.sortCol=t,this.sortDir?this.sortDir="asc"==this.sortDir?"desc":"asc":this.sortDir="desc";var e="/i/admin/api/hashtags/query?sort="+t+"&dir="+this.sortDir;this.fetchHashtags(e)},buildColumn:function(t,e){var a='';return e==this.sortCol&&(a="desc"==this.sortDir?'':''),"".concat(t," ").concat(a)},toggleTab:function(t){var e=this;if(this.loaded=!1,this.tabIndex=t,0===t)this.fetchHashtags();else if(1===t)axios.get("/api/v1.1/discover/posts/hashtags").then((function(t){e.trendingTags=t.data,e.loaded=!0}));else if(2===t){this.fetchHashtags("/i/admin/api/hashtags/query?action=banned")}else if(3===t){this.fetchHashtags("/i/admin/api/hashtags/query?action=nsfw")}},openEditHashtagModal:function(t){var e=this;this.editSaved=!1,clearTimeout(this.editSavedTimeout),this.$nextTick((function(){axios.get("/i/admin/api/hashtags/get",{params:{id:t.id}}).then((function(t){e.editingHashtag=t.data.data,e.showEditModal=!0}))}))},storeHashtagEdit:function(t,e){var a=this;this.editSaved=!1,t.is_banned&&(t.can_trend||t.can_search)&&swal("Banned Hashtag Limits","Banned hashtags cannot trend or be searchable, to allow those you need to unban the hashtag","error"),axios.post("/i/admin/api/hashtags/update",t).then((function(e){a.editSaved=!0,1!==a.tabIndex&&(a.hashtags=a.hashtags.map((function(a){return a.id==t.id&&(a=e.data.data),a}))),a.editSavedTimeout=setTimeout((function(){a.editSaved=!1}),5e3)})).catch((function(t){swal("Oops!","An error occured, please try again.","error"),console.log(t)}))},composeSearch:function(t){return t.length<1?[]:axios.get("/i/admin/api/hashtags/query",{params:{q:t,sort:"cached_count",dir:"desc"}}).then((function(t){return t.data.data}))},getTagResultValue:function(t){return t.name},onSearchResultClick:function(t){this.openEditHashtagModal(t)},clearTrendingCache:function(){event.currentTarget.blur(),window.confirm("Are you sure you want to clear the trending hashtags cache?")&&axios.post("/i/admin/api/hashtags/clear-trending-cache").then((function(t){swal("Cache Cleared!","Successfully cleared the trending hashtag cache!","success")}))}}}},84147:(t,e,a)=>{"use strict";a.r(e),a.d(e,{default:()=>u});var s=a(29655);a(67964);function i(t){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(){n=function(){return e};var t,e={},a=Object.prototype,s=a.hasOwnProperty,o=Object.defineProperty||function(t,e,a){t[e]=a.value},r="function"==typeof Symbol?Symbol:{},l=r.iterator||"@@iterator",c=r.asyncIterator||"@@asyncIterator",d=r.toStringTag||"@@toStringTag";function u(t,e,a){return Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(t){u=function(t,e,a){return t[e]=a}}function p(t,e,a,s){var i=e&&e.prototype instanceof _?e:_,n=Object.create(i.prototype),r=new L(s||[]);return o(n,"_invoke",{value:A(t,a,r)}),n}function m(t,e,a){try{return{type:"normal",arg:t.call(e,a)}}catch(t){return{type:"throw",arg:t}}}e.wrap=p;var v="suspendedStart",f="suspendedYield",h="executing",g="completed",b={};function _(){}function y(){}function C(){}var w={};u(w,l,(function(){return this}));var x=Object.getPrototypeOf,k=x&&x(x(D([])));k&&k!==a&&s.call(k,l)&&(w=k);var S=C.prototype=_.prototype=Object.create(w);function T(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function R(t,e){function a(n,o,r,l){var c=m(t[n],t,o);if("throw"!==c.type){var d=c.arg,u=d.value;return u&&"object"==i(u)&&s.call(u,"__await")?e.resolve(u.__await).then((function(t){a("next",t,r,l)}),(function(t){a("throw",t,r,l)})):e.resolve(u).then((function(t){d.value=t,r(d)}),(function(t){return a("throw",t,r,l)}))}l(c.arg)}var n;o(this,"_invoke",{value:function(t,s){function i(){return new e((function(e,i){a(t,s,e,i)}))}return n=n?n.then(i,i):i()}})}function A(e,a,s){var i=v;return function(n,o){if(i===h)throw new Error("Generator is already running");if(i===g){if("throw"===n)throw o;return{value:t,done:!0}}for(s.method=n,s.arg=o;;){var r=s.delegate;if(r){var l=I(r,s);if(l){if(l===b)continue;return l}}if("next"===s.method)s.sent=s._sent=s.arg;else if("throw"===s.method){if(i===v)throw i=g,s.arg;s.dispatchException(s.arg)}else"return"===s.method&&s.abrupt("return",s.arg);i=h;var c=m(e,a,s);if("normal"===c.type){if(i=s.done?g:f,c.arg===b)continue;return{value:c.arg,done:s.done}}"throw"===c.type&&(i=g,s.method="throw",s.arg=c.arg)}}}function I(e,a){var s=a.method,i=e.iterator[s];if(i===t)return a.delegate=null,"throw"===s&&e.iterator.return&&(a.method="return",a.arg=t,I(e,a),"throw"===a.method)||"return"!==s&&(a.method="throw",a.arg=new TypeError("The iterator does not provide a '"+s+"' method")),b;var n=m(i,e.iterator,a.arg);if("throw"===n.type)return a.method="throw",a.arg=n.arg,a.delegate=null,b;var o=n.arg;return o?o.done?(a[e.resultName]=o.value,a.next=e.nextLoc,"return"!==a.method&&(a.method="next",a.arg=t),a.delegate=null,b):o:(a.method="throw",a.arg=new TypeError("iterator result is not an object"),a.delegate=null,b)}function j(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function L(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(j,this),this.reset(!0)}function D(e){if(e||""===e){var a=e[l];if(a)return a.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,o=function a(){for(;++n=0;--n){var o=this.tryEntries[n],r=o.completion;if("root"===o.tryLoc)return i("end");if(o.tryLoc<=this.prev){var l=s.call(o,"catchLoc"),c=s.call(o,"finallyLoc");if(l&&c){if(this.prev=0;--a){var i=this.tryEntries[a];if(i.tryLoc<=this.prev&&s.call(i,"finallyLoc")&&this.prev=0;--e){var a=this.tryEntries[e];if(a.finallyLoc===t)return this.complete(a.completion,a.afterLoc),P(a),b}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var a=this.tryEntries[e];if(a.tryLoc===t){var s=a.completion;if("throw"===s.type){var i=s.arg;P(a)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,a,s){return this.delegate={iterator:D(e),resultName:a,nextLoc:s},"next"===this.method&&(this.arg=t),b}},e}function o(t,e,a,s,i,n,o){try{var r=t[n](o),l=r.value}catch(t){return void a(t)}r.done?e(l):Promise.resolve(l).then(s,i)}function r(t){return function(){var e=this,a=arguments;return new Promise((function(s,i){var n=t.apply(e,a);function r(t){o(n,s,i,r,l,"next",t)}function l(t){o(n,s,i,r,l,"throw",t)}r(void 0)}))}}function l(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,s)}return a}function c(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:"/i/admin/api/instances/get";axios.get(e).then((function(e){t.instances=e.data.data,t.pagination=c(c({},e.data.links),e.data.meta)})).then((function(){t.$nextTick((function(){t.loaded=!0}))}))},toggleTab:function(t){this.loaded=!1,this.tabIndex=t,this.searchQuery=void 0;var e="/i/admin/api/instances/get?filter="+this.filterMap[t];history.pushState(null,"","/i/admin/instances?filter="+this.filterMap[t]),this.fetchInstances(e)},prettyCount:function(t){return t?t.toLocaleString("en-CA",{compactDisplay:"short",notation:"compact"}):0},formatCount:function(t){return t?t.toLocaleString("en-CA"):0},timeAgo:function(t){return t?App.util.format.timeAgo(t):t},boolIcon:function(t){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"text-muted";return t?''):'')},toggleCol:function(t){if(this.filterMap[this.tabIndex]!=t&&!this.searchQuery){this.sortCol=t,this.sortDir?this.sortDir="asc"==this.sortDir?"desc":"asc":this.sortDir="desc";var e=new URL(window.location.origin+"/i/admin/instances");e.searchParams.set("sort",t),e.searchParams.set("dir",this.sortDir),0!=this.tabIndex&&e.searchParams.set("filter",this.filterMap[this.tabIndex]),history.pushState(null,"",e);var a=new URL(window.location.origin+"/i/admin/api/instances/get");a.searchParams.set("sort",t),a.searchParams.set("dir",this.sortDir),0!=this.tabIndex&&a.searchParams.set("filter",this.filterMap[this.tabIndex]),this.fetchInstances(a.toString())}},buildColumn:function(t,e){if(-1!=[1,5,6].indexOf(this.tabIndex)||this.searchQuery&&this.searchQuery.length)return t;if(2===this.tabIndex&&"banned"===e)return t;if(3===this.tabIndex&&"auto_cw"===e)return t;if(4===this.tabIndex&&"unlisted"===e)return t;var a='';return e==this.sortCol&&(a="desc"==this.sortDir?'':''),"".concat(t," ").concat(a)},paginate:function(t){event.currentTarget.blur();var e="next"==t?this.pagination.next:this.pagination.prev,a="next"==t?this.pagination.next_cursor:this.pagination.prev_cursor,s=new URL(window.location.origin+"/i/admin/instances");a&&s.searchParams.set("cursor",a),this.searchQuery&&s.searchParams.set("q",this.searchQuery),this.sortCol&&s.searchParams.set("sort",this.sortCol),this.sortDir&&s.searchParams.set("dir",this.sortDir),history.pushState(null,"",s.toString()),this.fetchInstances(e)},composeSearch:function(t){var e=this;return t.length<1?[]:(this.searchQuery=t,history.pushState(null,"","/i/admin/instances?q="+t),axios.get("/i/admin/api/instances/query",{params:{q:t}}).then((function(t){return t&&t.data?(e.tabIndex=-1,e.instances=t.data.data,e.pagination=c(c({},t.data.links),t.data.meta)):e.fetchInstances(),t.data.data})))},getTagResultValue:function(t){return t.name},onSearchResultClick:function(t){this.openInstanceModal(t.id)},openInstanceModal:function(t){var e=this,a=this.instances.filter((function(e){return e.id===t}))[0];this.refreshedModalStats=!1,this.editingInstanceChanges=!1,this.instanceModalNotes=!1,this.canEditInstance=!1,this.instanceModal=a,this.$nextTick((function(){e.editingInstance=a,e.showInstanceModal=!0,e.canEditInstance=!0}))},showModalNotes:function(){this.instanceModalNotes=!0},saveInstanceModalChanges:function(){var t=this;axios.post("/i/admin/api/instances/update",this.editingInstance).then((function(e){t.showInstanceModal=!1,t.$bvToast.toast("Successfully updated ".concat(e.data.data.domain),{title:"Instance Updated",autoHideDelay:5e3,appendToast:!0,variant:"success"})}))},saveNewInstance:function(){var t=this;axios.post("/i/admin/api/instances/create",this.addNewInstance).then((function(e){t.showInstanceModal=!1,t.instances.unshift(e.data.data)})).catch((function(e){swal("Oops!","An error occured, please try again later.","error"),t.addNewInstance={domain:"",banned:!1,auto_cw:!1,unlisted:!1,notes:void 0}}))},refreshModalStats:function(){var t=this;axios.post("/i/admin/api/instances/refresh-stats",{id:this.instanceModal.id}).then((function(e){t.refreshedModalStats=!0,t.instanceModal=e.data.data,t.editingInstance=e.data.data,t.instances=t.instances.map((function(t){return t.id===e.data.data.id?e.data.data:t}))}))},deleteInstanceModal:function(){var t=this;window.confirm("Are you sure you want to delete this instance? This will not delete posts or profiles from this instance.")&&axios.post("/i/admin/api/instances/delete",{id:this.instanceModal.id}).then((function(e){t.showInstanceModal=!1,t.instances=t.instances.filter((function(e){return e.id!=t.instanceModal.id}))})).then((function(){setTimeout((function(){return t.fetchStats()}),1e3)}))},openImportForm:function(){var t=document.createElement("p");t.classList.add("text-left"),t.classList.add("mb-0"),t.innerHTML='

Import your instance moderation backup.


Import Instructions:

  1. Press OK
  2. Press "Choose File" on Import form input
  3. Select your pixelfed-instances-mod.json file
  4. Review instance moderation actions. Tap on an instance to remove it
  5. Press "Import" button to finish importing
';var e=document.createElement("div");e.appendChild(t),swal({title:"Import Backup",content:e,icon:"info"}),this.showImportForm=!0},downloadBackup:function(t){axios.get("/i/admin/api/instances/download-backup",{responseType:"blob"}).then((function(t){var e=document.createElement("a");e.setAttribute("download","pixelfed-instances-mod.json");var a=URL.createObjectURL(t.data);e.href=a,e.setAttribute("target","_blank"),e.click(),swal("Instance Backup Downloading","Your instance moderation backup is downloading. Use this to import auto_cw, banned and unlisted instances to supported Pixelfed instances.","success")}))},onImportUpload:function(t){var e=this;return r(n().mark((function a(){var s;return n().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.next=2,e.getParsedImport(t.target.files[0]);case 2:if((s=a.sent).hasOwnProperty("version")&&1===s.version){a.next=8;break}return swal("Invalid Backup","We cannot validate this backup. Please try again later.","error"),e.showImportForm=!1,e.$refs.importInput.reset(),a.abrupt("return");case 8:e.importData=s,e.showImportModal=!0;case 10:case"end":return a.stop()}}),a)})))()},getParsedImport:function(t){var e=this;return r(n().mark((function a(){var s,i;return n().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,e.parseJsonFile(t);case 3:return a.abrupt("return",a.sent);case 6:return a.prev=6,a.t0=a.catch(0),(s=document.createElement("p")).classList.add("text-left"),s.classList.add("mb-0"),s.innerHTML='

An error occured when attempting to parse the import file. Please try again later.


Error message:

'+a.t0.message+"
",(i=document.createElement("div")).appendChild(s),swal({title:"Import Error",content:i,icon:"error"}),a.abrupt("return");case 16:case"end":return a.stop()}}),a,null,[[0,6]])})))()},promisedParseJSON:function(t){return r(n().mark((function e(){return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,a){try{e(JSON.parse(t))}catch(t){a(t)}})));case 1:case"end":return e.stop()}}),e)})))()},parseJsonFile:function(t){var e=this;return r(n().mark((function a(){return n().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.abrupt("return",new Promise((function(a,s){var i=new FileReader;i.onload=function(t){return a(e.promisedParseJSON(t.target.result))},i.onerror=function(t){return s(t)},i.readAsText(t)})));case 1:case"end":return a.stop()}}),a)})))()},filterImportData:function(t,e){switch(t){case"auto_cw":this.importData.auto_cw.splice(e,1);break;case"unlisted":this.importData.unlisted.splice(e,1);break;case"banned":this.importData.banned.splice(e,1)}},completeImport:function(){var t=this;this.showImportForm=!1,axios.post("/i/admin/api/instances/import-data",{banned:this.importData.banned,auto_cw:this.importData.auto_cw,unlisted:this.importData.unlisted}).then((function(t){swal("Import Uploaded","Import successfully uploaded, please allow a few minutes to process.","success")})).then((function(){setTimeout((function(){return t.fetchStats()}),1e3)}))},cancelImport:function(t){if(this.importData.banned.length||this.importData.auto_cw.length||this.importData.unlisted.length){if(!window.confirm("Are you sure you want to cancel importing?"))return void t.preventDefault();this.showImportForm=!1,this.$refs.importInput.value="",this.importData={banned:[],auto_cw:[],unlisted:[]}}},onViewMoreInstance:function(){this.showInstanceModal=!1,window.location.href="/i/admin/instances/show/"+this.instanceModal.id}}}},60143:(t,e,a)=>{"use strict";a.r(e),a.d(e,{default:()=>i});var s=a(19755);const i={data:function(){return{loaded:!1,stats:{total:0,open:0,closed:0,autospam:0,autospam_open:0},tabIndex:0,reports:[],pagination:{},showReportModal:!1,viewingReport:void 0,viewingReportLoading:!1,autospam:[],autospamPagination:{},autospamLoaded:!1,showSpamReportModal:!1,viewingSpamReport:void 0,viewingSpamReportLoading:!1}},mounted:function(){var t=new URLSearchParams(window.location.search);t.has("tab")&&t.has("id")&&"autospam"===t.get("tab")?(this.fetchStats(null,"/i/admin/api/reports/spam/all"),this.fetchSpamReport(t.get("id"))):t.has("tab")&&t.has("id")&&"report"===t.get("tab")?(this.fetchStats(),this.fetchReport(t.get("id"))):(window.history.pushState(null,null,"/i/admin/reports"),this.fetchStats()),this.$root.$on("bv::modal::hide",(function(t,e){window.history.pushState(null,null,"/i/admin/reports")}))},methods:{toggleTab:function(t){switch(t){case 0:this.fetchStats("/i/admin/api/reports/all");break;case 1:this.fetchStats("/i/admin/api/reports/all?filter=closed");break;case 2:this.fetchStats(null,"/i/admin/api/reports/spam/all")}window.history.pushState(null,null,"/i/admin/reports"),this.tabIndex=t},prettyCount:function(t){return t?t.toLocaleString("en-CA",{compactDisplay:"short",notation:"compact"}):t},timeAgo:function(t){return t?App.util.format.timeAgo(t):t},formatDate:function(t){var e=new Date(t);return new Intl.DateTimeFormat("default",{month:"long",day:"numeric",year:"numeric",hour:"numeric",minute:"numeric"}).format(e)},reportLabel:function(t){switch(t.object_type){case"App\\Profile":return"".concat(t.type," Profile");case"App\\Status":return"".concat(t.type," Post");case"App\\Story":return"".concat(t.type," Story")}},fetchStats:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"/i/admin/api/reports/all",a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;axios.get("/i/admin/api/reports/stats").then((function(e){t.stats=e.data})).finally((function(){e?t.fetchReports(e):a&&t.fetchAutospam(a),s('[data-toggle="tooltip"]').tooltip()}))},fetchReports:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"/i/admin/api/reports/all";axios.get(e).then((function(e){t.reports=e.data.data,t.pagination={next:e.data.links.next,prev:e.data.links.prev}})).finally((function(){t.loaded=!0}))},paginate:function(t){event.currentTarget.blur();var e="next"==t?this.pagination.next:this.pagination.prev;this.fetchReports(e)},viewReport:function(t){this.viewingReportLoading=!1,this.viewingReport=t,this.showReportModal=!0,window.history.pushState(null,null,"/i/admin/reports?tab=report&id="+t.id),setTimeout((function(){pixelfed.readmore()}),1e3)},handleAction:function(t,e){var a=this;event.currentTarget.blur(),this.viewingReportLoading=!0,"ignore"===e||window.confirm(this.getActionLabel(t,e))?(this.loaded=!1,axios.post("/i/admin/api/reports/handle",{id:this.viewingReport.id,object_id:this.viewingReport.object_id,object_type:this.viewingReport.object_type,action:e,action_type:t}).catch((function(t){swal("Error",t.response.data.error,"error")})).finally((function(){a.viewingReportLoading=!0,a.viewingReport=!1,a.showReportModal=!1,setTimeout((function(){a.fetchStats()}),1e3)}))):this.viewingReportLoading=!1},getActionLabel:function(t,e){if("profile"===t)switch(e){case"ignore":return"Are you sure you want to ignore this profile report?";case"nsfw":return"Are you sure you want to mark this profile as NSFW?";case"unlist":return"Are you sure you want to mark all posts by this profile as unlisted?";case"private":return"Are you sure you want to mark all posts by this profile as private?";case"delete":return"Are you sure you want to delete this profile?"}else if("post"===t)switch(e){case"ignore":return"Are you sure you want to ignore this post report?";case"nsfw":return"Are you sure you want to mark this post as NSFW?";case"unlist":return"Are you sure you want to mark this post as unlisted?";case"private":return"Are you sure you want to mark this post as private?";case"delete":return"Are you sure you want to delete this post?"}else if("story"===t)switch(e){case"ignore":return"Are you sure you want to ignore this story report?";case"delete":return"Are you sure you want to delete this story?";case"delete-all":return"Are you sure you want to delete all stories by this account?"}},fetchAutospam:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"/i/admin/api/reports/spam/all";axios.get(e).then((function(e){t.autospam=e.data.data,t.autospamPagination={next:e.data.links.next,prev:e.data.links.prev}})).finally((function(){t.autospamLoaded=!0,t.loaded=!0}))},autospamPaginate:function(t){event.currentTarget.blur();var e="next"==t?this.autospamPagination.next:this.autospamPagination.prev;this.fetchAutospam(e)},viewSpamReport:function(t){this.viewingSpamReportLoading=!1,this.viewingSpamReport=t,this.showSpamReportModal=!0,window.history.pushState(null,null,"/i/admin/reports?tab=autospam&id="+t.id),setTimeout((function(){pixelfed.readmore()}),1e3)},getSpamActionLabel:function(t){switch(t){case"mark-all-read":return"Are you sure you want to mark all spam reports by this account as read?";case"mark-all-not-spam":return"Are you sure you want to mark all spam reports by this account as not spam?";case"delete-profile":return"Are you sure you want to delete this profile?"}},handleSpamAction:function(t){var e=this;event.currentTarget.blur(),this.viewingSpamReportLoading=!0,"mark-not-spam"===t||"mark-read"===t||window.confirm(this.getSpamActionLabel(t))?(this.loaded=!1,axios.post("/i/admin/api/reports/spam/handle",{id:this.viewingSpamReport.id,action:t}).catch((function(t){swal("Error",t.response.data.error,"error")})).finally((function(){e.viewingSpamReportLoading=!0,e.viewingSpamReport=!1,e.showSpamReportModal=!1,setTimeout((function(){e.fetchStats(null,"/i/admin/api/reports/spam/all")}),500)}))):this.viewingSpamReportLoading=!1},fetchReport:function(t){var e=this;axios.get("/i/admin/api/reports/get/"+t).then((function(t){e.tabIndex=0,e.viewReport(t.data.data)})).catch((function(t){e.fetchStats(),window.history.pushState(null,null,"/i/admin/reports")}))},fetchSpamReport:function(t){var e=this;axios.get("/i/admin/api/reports/spam/get/"+t).then((function(t){e.tabIndex=2,e.viewSpamReport(t.data.data)})).catch((function(t){e.fetchStats(),window.history.pushState(null,null,"/i/admin/reports")}))}}}},82264:(t,e,a)=>{"use strict";a.r(e),a.d(e,{render:()=>s,staticRenderFns:()=>i});var s=function(){var t=this,e=t._self._c;return e("div",[e("div",{staticClass:"header bg-primary pb-3 mt-n4"},[e("div",{staticClass:"container-fluid"},[e("div",{staticClass:"header-body"},[e("div",{staticClass:"row align-items-center py-4"},[t._m(0),t._v(" "),e("div",{staticClass:"col-xl-4 col-lg-3 col-md-4"},[e("div",{staticClass:"card card-stats mb-lg-0"},[e("div",{staticClass:"card-body"},[e("div",{staticClass:"row"},[e("div",{staticClass:"col"},[e("h5",{staticClass:"card-title text-uppercase text-muted mb-0"},[t._v("Active Autospam")]),t._v(" "),e("span",{staticClass:"h2 font-weight-bold mb-0"},[t._v(t._s(t.formatCount(t.config.open)))])]),t._v(" "),t._m(1)])])])]),t._v(" "),e("div",{staticClass:"col-xl-4 col-lg-3 col-md-4"},[e("div",{staticClass:"card card-stats bg-dark mb-lg-0"},[e("div",{staticClass:"card-body"},[e("div",{staticClass:"row"},[e("div",{staticClass:"col"},[e("h5",{staticClass:"card-title text-uppercase text-muted mb-0"},[t._v("Closed Autospam")]),t._v(" "),e("span",{staticClass:"h2 font-weight-bold text-muted mb-0"},[t._v(t._s(t.formatCount(t.config.closed)))])]),t._v(" "),t._m(2)])])])])])])])]),t._v(" "),t.loaded?e("div",{staticClass:"m-n2 m-lg-4"},[e("div",{staticClass:"container-fluid mt-4"},[e("div",{staticClass:"row mb-3 justify-content-between"},[e("div",{staticClass:"col-12"},[e("ul",{staticClass:"nav nav-pills"},[e("li",{staticClass:"nav-item"},[e("button",{class:["nav-link",{active:0==t.tabIndex}],on:{click:function(e){return e.preventDefault(),t.toggleTab(0)}}},[t._v("Dashboard")])]),t._v(" "),e("li",{staticClass:"nav-item"},[e("button",{class:["nav-link",{active:"about"==t.tabIndex}],on:{click:function(e){return e.preventDefault(),t.toggleTab("about")}}},[t._v("About / How to Use Autospam")])]),t._v(" "),e("li",{staticClass:"nav-item"},[e("button",{class:["nav-link",{active:"train"==t.tabIndex}],on:{click:function(e){return e.preventDefault(),t.toggleTab("train")}}},[t._v("Train Autospam")])]),t._v(" "),e("li",{staticClass:"nav-item"},[e("button",{class:["nav-link",{active:"closed_reports"==t.tabIndex}],on:{click:function(e){return e.preventDefault(),t.toggleTab("closed_reports")}}},[t._v("Closed Reports")])]),t._v(" "),e("li",{staticClass:"nav-item"},[e("button",{class:["nav-link",{active:"manage_tokens"==t.tabIndex}],on:{click:function(e){return e.preventDefault(),t.toggleTab("manage_tokens")}}},[t._v("Manage Tokens")])]),t._v(" "),e("li",{staticClass:"nav-item"},[e("button",{class:["nav-link",{active:"import_export"==t.tabIndex}],on:{click:function(e){return e.preventDefault(),t.toggleTab("import_export")}}},[t._v("Import/Export")])])])])]),t._v(" "),0===this.tabIndex?e("div",{staticClass:"row"},[e("div",{staticClass:"col-12 col-md-4"},[null===t.config.autospam_enabled?e("div"):t.config.autospam_enabled?e("div",{staticClass:"card bg-dark",staticStyle:{"min-height":"209px"}},[t._m(3)]):e("div",{staticClass:"card bg-dark",staticStyle:{"min-height":"209px"}},[t._m(4)]),t._v(" "),null===t.config.nlp_enabled?e("div"):t.config.nlp_enabled?e("div",{staticClass:"card bg-dark",staticStyle:{"min-height":"209px"}},[e("div",{staticClass:"card-body text-center"},[t._m(5),t._v(" "),e("p",{staticClass:"lead text-light"},[t._v("Advanced (NLP) Detection Active")]),t._v(" "),e("a",{staticClass:"btn btn-outline-danger btn-block font-weight-bold",class:{disabled:1!=t.config.autospam_enabled},attrs:{href:"#",disabled:1!=t.config.autospam_enabled},on:{click:function(e){return e.preventDefault(),t.disableAdvanced.apply(null,arguments)}}},[t._v("Disable Advanced Detection")])])]):e("div",{staticClass:"card bg-dark",staticStyle:{"min-height":"209px"}},[e("div",{staticClass:"card-body text-center"},[t._m(6),t._v(" "),e("p",{staticClass:"lead text-danger font-weight-bold"},[t._v("Advanced (NLP) Detection Inactive")]),t._v(" "),e("a",{staticClass:"btn btn-primary btn-block font-weight-bold",class:{disabled:1!=t.config.autospam_enabled},attrs:{href:"#",disabled:1!=t.config.autospam_enabled},on:{click:function(e){return e.preventDefault(),t.enableAdvanced.apply(null,arguments)}}},[t._v("Enable Advanced Detection")])])])]),t._v(" "),t._m(7)]):"about"===this.tabIndex?e("div",[t._m(8)]):"train"===this.tabIndex?e("div",[t._m(9),t._v(" "),e("div",{staticClass:"row"},[e("div",{staticClass:"col-12 col-md-6"},[e("div",{staticClass:"card bg-dark"},[e("div",{staticClass:"card-header bg-gradient-primary text-white font-weight-bold"},[t._v("Train Spam Posts")]),t._v(" "),e("div",{staticClass:"card-body"},[e("div",{staticClass:"d-flex flex-column align-items-center justify-content-center py-4",staticStyle:{gap:"1rem"}},[t._m(10),t._v(" "),e("p",{staticClass:"lead text-lighter"},[t._v("Use existing posts marked as spam to train Autospam")]),t._v(" "),e("button",{staticClass:"btn btn-primary btn-lg font-weight-bold btn-block",class:{disabled:t.config.files.spam.exists},attrs:{disabled:t.config.files.spam.exists},on:{click:function(e){return e.preventDefault(),t.autospamTrainSpam.apply(null,arguments)}}},[t._v("\n\t \t\t\t\t\t\t"+t._s(t.config.files.spam.exists?"Already trained":"Train Spam")+"\n\t \t\t\t\t\t")])])])])]),t._v(" "),e("div",{staticClass:"col-12 col-md-6"},[e("div",{staticClass:"card bg-dark"},[e("div",{staticClass:"card-header bg-gradient-primary text-white font-weight-bold"},[t._v("Train Non-Spam Posts")]),t._v(" "),e("div",{staticClass:"card-body"},[e("div",{staticClass:"d-flex flex-column align-items-center justify-content-center py-4",staticStyle:{gap:"1rem"}},[t._m(11),t._v(" "),e("p",{staticClass:"lead text-lighter"},[t._v("Use posts from trusted users to train non-spam posts")]),t._v(" "),e("button",{staticClass:"btn btn-primary btn-lg font-weight-bold btn-block",class:{disabled:t.config.files.ham.exists},attrs:{disabled:t.config.files.ham.exists},on:{click:function(e){return e.preventDefault(),t.autospamTrainNonSpam.apply(null,arguments)}}},[t._v("\n\t \t\t\t\t\t\t"+t._s(t.config.files.ham.exists?"Already trained":"Train Non-Spam")+"\n\t \t\t\t\t\t")])])])])])])]):"closed_reports"===this.tabIndex?e("div",[t.closedReportsFetched?[e("div",{staticClass:"table-responsive rounded"},[e("table",{staticClass:"table table-dark"},[t._m(12),t._v(" "),e("tbody",t._l(t.closedReports.data,(function(a,s){return e("tr",{key:"closed_reports"+a.id+s},[e("td",{staticClass:"font-weight-bold text-monospace text-muted align-middle"},[t._v("\n\t\t \t"+t._s(a.id)+"\n\t\t ")]),t._v(" "),t._m(13,!0),t._v(" "),e("td",{staticClass:"align-middle"},[a.status&&a.status.account?e("a",{staticClass:"text-white",attrs:{href:"/i/web/profile/".concat(a.status.account.id),target:"_blank"}},[e("div",{staticClass:"d-flex align-items-center",staticStyle:{gap:"0.61rem"}},[e("img",{staticStyle:{"object-fit":"cover","border-radius":"30px"},attrs:{src:a.status.account.avatar,width:"30",height:"30",onerror:"this.src='/storage/avatars/default.png';this.error=null;"}}),t._v(" "),e("div",{staticClass:"d-flex flex-column"},[e("p",{staticClass:"font-weight-bold mb-0",staticStyle:{"font-size":"14px"}},[t._v("@"+t._s(a.status.account.username))]),t._v(" "),e("div",{staticClass:"d-flex small text-muted mb-0",staticStyle:{gap:"0.5rem"}},[e("span",[t._v(t._s(a.status.account.followers_count)+" Followers")]),t._v(" "),e("span",[t._v("·")]),t._v(" "),e("span",[t._v("Joined "+t._s(t.timeAgo(a.status.account.created_at)))])])])])]):t._e()]),t._v(" "),e("td",{staticClass:"font-weight-bold align-middle"},[t._v(t._s(t.timeAgo(a.created_at)))]),t._v(" "),e("td",{staticClass:"align-middle"},[e("a",{staticClass:"btn btn-primary btn-sm",attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.viewSpamReport(a)}}},[t._v("View")])])])})),0)])]),t._v(" "),t.closedReportsFetched&&t.closedReports&&t.closedReports.data.length?e("div",{staticClass:"d-flex align-items-center justify-content-center"},[e("button",{staticClass:"btn btn-primary rounded-pill",attrs:{disabled:!t.closedReports.links.prev},on:{click:function(e){return t.autospamPaginate("prev")}}},[t._v("\n\t\t Prev\n\t\t ")]),t._v(" "),e("button",{staticClass:"btn btn-primary rounded-pill",attrs:{disabled:!t.closedReports.links.next},on:{click:function(e){return t.autospamPaginate("next")}}},[t._v("\n\t\t Next\n\t\t ")])]):t._e()]:[e("div",{staticClass:"d-flex justify-content-center align-items-center py-5"},[e("b-spinner")],1)]],2):"manage_tokens"===this.tabIndex?e("div",[e("div",{staticClass:"row align-items-center mb-3"},[t._m(14),t._v(" "),e("div",{staticClass:"col-12 col-md-3"},[e("a",{staticClass:"btn btn-primary btn-lg btn-block",attrs:{href:"#"},on:{click:function(e){e.preventDefault(),t.showCreateTokenModal=!0}}},[e("i",{staticClass:"far fa-plus fa-lg mr-1"}),t._v("\n \t\t\t\tCreate New Token\n \t\t\t")])])]),t._v(" "),t.customTokensFetched?[t.customTokens&&t.customTokens.data&&t.customTokens.data.length?[e("div",{staticClass:"table-responsive rounded"},[e("table",{staticClass:"table table-dark"},[t._m(15),t._v(" "),e("tbody",t._l(t.customTokens.data,(function(a,s){return e("tr",{key:"ct"+a.id+s},[e("td",{staticClass:"font-weight-bold text-monospace text-muted align-middle"},[t._v("\n\t\t\t \t"+t._s(a.id)+"\n\t\t\t ")]),t._v(" "),e("td",{staticClass:"align-middle"},[e("p",{staticClass:"font-weight-bold mb-0"},[t._v(t._s(a.token))])]),t._v(" "),e("td",{staticClass:"align-middle"},[e("p",{staticClass:"text-capitalize mb-0"},[t._v(t._s(a.category))])]),t._v(" "),e("td",{staticClass:"align-middle"},[e("p",{staticClass:"text-capitalize mb-0"},[t._v(t._s(a.weight))])]),t._v(" "),e("td",{staticClass:"font-weight-bold align-middle"},[t._v(t._s(t.timeAgo(a.created_at)))]),t._v(" "),e("td",{staticClass:"font-weight-bold align-middle"},[e("a",{staticClass:"btn btn-primary btn-sm font-weight-bold",attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.openEditTokenModal(a)}}},[t._v("Edit")])])])})),0)])]),t._v(" "),t.customTokensFetched&&t.customTokens&&t.customTokens.data.length?e("div",{staticClass:"d-flex align-items-center justify-content-center"},[e("button",{staticClass:"btn btn-primary rounded-pill",attrs:{disabled:!t.customTokens.prev_page_url},on:{click:function(e){return t.autospamTokenPaginate("prev")}}},[t._v("\n\t\t\t Prev\n\t\t\t ")]),t._v(" "),e("button",{staticClass:"btn btn-primary rounded-pill",attrs:{disabled:!t.customTokens.next_page_url},on:{click:function(e){return t.autospamTokenPaginate("next")}}},[t._v("\n\t\t\t Next\n\t\t\t ")])]):t._e()]:e("div",[t._m(16)])]:[e("div",{staticClass:"d-flex justify-content-center align-items-center py-5"},[e("b-spinner")],1)]],2):"import_export"===this.tabIndex?e("div",[t._m(17),t._v(" "),e("div",{staticClass:"row"},[e("div",{staticClass:"col-12 col-md-6"},[e("div",{staticClass:"card bg-dark"},[e("div",{staticClass:"card-header font-weight-bold"},[t._v("Import Training Data")]),t._v(" "),e("div",{staticClass:"card-body"},[e("div",{staticClass:"d-flex flex-column align-items-center justify-content-center py-4",staticStyle:{gap:"1rem"}},[t._m(18),t._v(" "),e("p",{staticClass:"lead text-lighter"},[t._v("Make sure the file you are importing is a valid training data export!")]),t._v(" "),e("button",{staticClass:"btn btn-primary btn-lg font-weight-bold btn-block",on:{click:function(e){return e.preventDefault(),t.handleImport.apply(null,arguments)}}},[t._v("Upload Import")])])])])]),t._v(" "),e("div",{staticClass:"col-12 col-md-6"},[e("div",{staticClass:"card bg-dark"},[e("div",{staticClass:"card-header font-weight-bold"},[t._v("Export Training Data")]),t._v(" "),e("div",{staticClass:"card-body"},[e("div",{staticClass:"d-flex flex-column align-items-center justify-content-center py-4",staticStyle:{gap:"1rem"}},[t._m(19),t._v(" "),e("p",{staticClass:"lead text-lighter"},[t._v("Only share training data with people you trust. It can be used by spammers to bypass detection!")]),t._v(" "),e("button",{staticClass:"btn btn-primary btn-lg font-weight-bold btn-block",on:{click:function(e){return e.preventDefault(),t.downloadExport.apply(null,arguments)}}},[t._v("Download Export")])])])])])])]):t._e()])]):e("div",{staticClass:"my-5 text-center"},[e("b-spinner")],1),t._v(" "),e("b-modal",{attrs:{title:"Autospam Post","ok-only":!0,"ok-title":"Close","ok-variant":"outline-primary"},model:{value:t.showSpamReportModal,callback:function(e){t.showSpamReportModal=e},expression:"showSpamReportModal"}},[t.viewingSpamReportLoading?e("div",{staticClass:"d-flex align-items-center justify-content-center"},[e("b-spinner")],1):[e("div",{staticClass:"list-group list-group-horizontal mt-3"},[t.viewingSpamReport&&t.viewingSpamReport.status&&t.viewingSpamReport.status.account?e("div",{staticClass:"list-group-item d-flex align-items-center justify-content-between flex-column flex-grow-1",staticStyle:{gap:"0.4rem"}},[e("div",{staticClass:"text-muted small font-weight-bold mt-n1"},[t._v("Reported Account")]),t._v(" "),t.viewingSpamReport.status.account&&t.viewingSpamReport.status.account.id?e("a",{staticClass:"text-primary",attrs:{href:"/i/web/profile/".concat(t.viewingSpamReport.status.account.id),target:"_blank"}},[e("div",{staticClass:"d-flex align-items-center",staticStyle:{gap:"0.61rem"}},[e("img",{staticStyle:{"object-fit":"cover","border-radius":"30px"},attrs:{src:t.viewingSpamReport.status.account.avatar,width:"30",height:"30",onerror:"this.src='/storage/avatars/default.png';this.error=null;"}}),t._v(" "),e("div",{staticClass:"d-flex flex-column"},[e("p",{staticClass:"font-weight-bold mb-0 text-break",class:[t.viewingSpamReport.status.account.is_admin?"text-danger":""],staticStyle:{"font-size":"12px","max-width":"140px","line-height":"16px"}},[t._v("@"+t._s(t.viewingSpamReport.status.account.acct))]),t._v(" "),e("div",{staticClass:"d-flex text-muted mb-0",staticStyle:{"font-size":"10px",gap:"0.5rem"}},[e("span",[t._v(t._s(t.viewingSpamReport.status.account.followers_count)+" Followers")]),t._v(" "),e("span",[t._v("·")]),t._v(" "),e("span",[t._v("Joined "+t._s(t.timeAgo(t.viewingSpamReport.status.account.created_at)))])])])])]):t._e()]):t._e()]),t._v(" "),t.viewingSpamReport&&t.viewingSpamReport.status?e("div",{staticClass:"list-group mt-3"},[t.viewingSpamReport&&t.viewingSpamReport.status&&t.viewingSpamReport.status.media_attachments.length?e("div",{staticClass:"list-group-item d-flex flex-column flex-grow-1",staticStyle:{gap:"0.4rem"}},[e("div",{staticClass:"d-flex justify-content-between mt-n1 text-muted small font-weight-bold"},[e("div",[t._v("Reported Post")]),t._v(" "),e("a",{staticClass:"font-weight-bold",attrs:{href:t.viewingSpamReport.status.url,target:"_blank"}},[t._v("View")])]),t._v(" "),"image"===t.viewingSpamReport.status.media_attachments[0].type?e("img",{staticClass:"rounded",staticStyle:{"object-fit":"cover"},attrs:{src:t.viewingSpamReport.status.media_attachments[0].url,height:"140",onerror:"this.src='/storage/no-preview.png';this.error=null;"}}):"video"===t.viewingSpamReport.status.media_attachments[0].type?e("video",{attrs:{height:"140",controls:"",src:t.viewingSpamReport.status.media_attachments[0].url,onerror:"this.src='/storage/no-preview.png';this.onerror=null;"}}):t._e()]):t._e(),t._v(" "),t.viewingSpamReport&&t.viewingSpamReport.status&&t.viewingSpamReport.status.content_text&&t.viewingSpamReport.status.content_text.length?e("div",{staticClass:"list-group-item d-flex flex-column flex-grow-1",staticStyle:{gap:"0.4rem"}},[e("div",{staticClass:"d-flex justify-content-between mt-n1 text-muted small font-weight-bold"},[e("div",[t._v("Reported Post Caption")]),t._v(" "),e("a",{staticClass:"font-weight-bold",attrs:{href:t.viewingSpamReport.status.url,target:"_blank"}},[t._v("View")])]),t._v(" "),e("p",{staticClass:"mb-0 read-more",staticStyle:{"font-size":"12px","overflow-y":"hidden"}},[t._v(t._s(t.viewingSpamReport.status.content_text))])]):t._e()]):t._e()]],2),t._v(" "),e("b-modal",{attrs:{title:"Train Non-Spam","ok-only":!0,"ok-title":"Close","ok-variant":"outline-primary"},model:{value:t.showNonSpamModal,callback:function(e){t.showNonSpamModal=e},expression:"showNonSpamModal"}},[e("p",{staticClass:"small font-weight-bold"},[t._v("Select trusted accounts to train non-spam posts against!")]),t._v(" "),!t.nonSpamAccounts||t.nonSpamAccounts.length<10?e("autocomplete",{ref:"autocomplete",attrs:{search:t.composeSearch,disabled:t.searchLoading,placeholder:"Search by username","aria-label":"Search by username","get-result-value":t.getTagResultValue},on:{submit:t.onSearchResultClick},scopedSlots:t._u([{key:"result",fn:function(a){var s=a.result,i=a.props;return[e("li",t._b({staticClass:"autocomplete-result d-flex align-items-center",staticStyle:{gap:"0.5rem"}},"li",i,!1),[e("img",{staticClass:"rounded-circle",attrs:{src:s.avatar,width:"32",height:"32",onerror:"this.src='/storage/avatars/default.png';this.error=null;"}}),t._v(" "),e("div",{staticClass:"font-weight-bold"},[t._v("\n "+t._s(s.username)+"\n ")])])]}}],null,!1,565605044)}):t._e(),t._v(" "),e("div",{staticClass:"list-group mt-3"},t._l(t.nonSpamAccounts,(function(a,s){return e("div",{staticClass:"list-group-item"},[e("div",{staticClass:"d-flex align-items-center justify-content-between"},[e("div",{staticClass:"d-flex flex-row align-items-center",staticStyle:{gap:"0.5rem"}},[e("img",{staticClass:"rounded-circle",attrs:{src:a.avatar,width:"32",height:"32",onerror:"this.src='/storage/avatars/default.png';this.error=null;"}}),t._v(" "),e("div",{staticClass:"font-weight-bold"},[t._v("\n\t "+t._s(a.username)+"\n\t ")])]),t._v(" "),e("a",{staticClass:"text-danger",attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.autospamTrainNonSpamRemove(s)}}},[e("i",{staticClass:"fas fa-trash"})])])])})),0),t._v(" "),t.nonSpamAccounts&&t.nonSpamAccounts.length?e("div",{staticClass:"mt-3"},[e("a",{staticClass:"btn btn-primary btn-lg font-weight-bold btn-block",attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.autospamTrainNonSpamSubmit.apply(null,arguments)}}},[t._v("Train non-spam posts on trusted accounts")])]):t._e()],1),t._v(" "),e("b-modal",{attrs:{title:"Create New Token","cancel-title":"Close","cancel-variant":"outline-primary","ok-title":"Save","ok-variant":"primary"},on:{ok:t.handleSaveToken},model:{value:t.showCreateTokenModal,callback:function(e){t.showCreateTokenModal=e},expression:"showCreateTokenModal"}},[e("div",{staticClass:"list-group mt-3"},[e("div",{staticClass:"list-group-item"},[e("div",{staticClass:"row align-items-center"},[e("div",{staticClass:"col-4"},[e("p",{staticClass:"mb-0 font-weight-bold small"},[t._v("Token")])]),t._v(" "),e("div",{staticClass:"col-8"},[e("input",{directives:[{name:"model",rawName:"v-model",value:t.customTokenForm.token,expression:"customTokenForm.token"}],staticClass:"form-control",domProps:{value:t.customTokenForm.token},on:{input:function(e){e.target.composing||t.$set(t.customTokenForm,"token",e.target.value)}}})])])]),t._v(" "),e("div",{staticClass:"list-group-item"},[e("div",{staticClass:"row align-items-center"},[e("div",{staticClass:"col-4"},[e("p",{staticClass:"mb-0 font-weight-bold small"},[t._v("Weight")])]),t._v(" "),e("div",{staticClass:"col-8"},[e("input",{directives:[{name:"model",rawName:"v-model",value:t.customTokenForm.weight,expression:"customTokenForm.weight"}],staticClass:"form-control",attrs:{type:"number",min:"-128",max:"128",step:"1"},domProps:{value:t.customTokenForm.weight},on:{input:function(e){e.target.composing||t.$set(t.customTokenForm,"weight",e.target.value)}}})])])]),t._v(" "),e("div",{staticClass:"list-group-item"},[e("div",{staticClass:"row align-items-center"},[e("div",{staticClass:"col-4"},[e("p",{staticClass:"mb-0 font-weight-bold small"},[t._v("Category")])]),t._v(" "),e("div",{staticClass:"col-8"},[e("select",{directives:[{name:"model",rawName:"v-model",value:t.customTokenForm.category,expression:"customTokenForm.category"}],staticClass:"form-control",on:{change:function(e){var a=Array.prototype.filter.call(e.target.options,(function(t){return t.selected})).map((function(t){return"_value"in t?t._value:t.value}));t.$set(t.customTokenForm,"category",e.target.multiple?a:a[0])}}},[e("option",{attrs:{value:"spam"}},[t._v("Is Spam")]),t._v(" "),e("option",{attrs:{value:"ham"}},[t._v("Is NOT Spam")])])])])]),t._v(" "),e("div",{staticClass:"list-group-item"},[e("div",{staticClass:"row align-items-center"},[e("div",{staticClass:"col-4"},[e("p",{staticClass:"mb-0 font-weight-bold small"},[t._v("Note")])]),t._v(" "),e("div",{staticClass:"col-8"},[e("textarea",{directives:[{name:"model",rawName:"v-model",value:t.customTokenForm.note,expression:"customTokenForm.note"}],staticClass:"form-control",domProps:{value:t.customTokenForm.note},on:{input:function(e){e.target.composing||t.$set(t.customTokenForm,"note",e.target.value)}}})])])]),t._v(" "),e("div",{staticClass:"list-group-item"},[e("div",{staticClass:"row align-items-center"},[e("div",{staticClass:"col-4"},[e("p",{staticClass:"mb-0 font-weight-bold small"},[t._v("Active")])]),t._v(" "),e("div",{staticClass:"col-8 text-right"},[e("div",{staticClass:"custom-control custom-checkbox"},[e("input",{directives:[{name:"model",rawName:"v-model",value:t.customTokenForm.active,expression:"customTokenForm.active"}],staticClass:"custom-control-input",attrs:{type:"checkbox",id:"customCheck1"},domProps:{checked:Array.isArray(t.customTokenForm.active)?t._i(t.customTokenForm.active,null)>-1:t.customTokenForm.active},on:{change:function(e){var a=t.customTokenForm.active,s=e.target,i=!!s.checked;if(Array.isArray(a)){var n=t._i(a,null);s.checked?n<0&&t.$set(t.customTokenForm,"active",a.concat([null])):n>-1&&t.$set(t.customTokenForm,"active",a.slice(0,n).concat(a.slice(n+1)))}else t.$set(t.customTokenForm,"active",i)}}}),t._v(" "),e("label",{staticClass:"custom-control-label",attrs:{for:"customCheck1"}})])])])])])]),t._v(" "),e("b-modal",{attrs:{title:"Edit Token","cancel-title":"Close","cancel-variant":"outline-primary","ok-title":"Update","ok-variant":"primary"},on:{ok:t.handleUpdateToken},model:{value:t.showEditTokenModal,callback:function(e){t.showEditTokenModal=e},expression:"showEditTokenModal"}},[e("div",{staticClass:"list-group mt-3"},[e("div",{staticClass:"list-group-item"},[e("div",{staticClass:"row align-items-center"},[e("div",{staticClass:"col-4"},[e("p",{staticClass:"mb-0 font-weight-bold small"},[t._v("Token")])]),t._v(" "),e("div",{staticClass:"col-8"},[e("input",{staticClass:"form-control",attrs:{disabled:""},domProps:{value:t.editCustomTokenForm.token}})])])]),t._v(" "),e("div",{staticClass:"list-group-item"},[e("div",{staticClass:"row align-items-center"},[e("div",{staticClass:"col-4"},[e("p",{staticClass:"mb-0 font-weight-bold small"},[t._v("Weight")])]),t._v(" "),e("div",{staticClass:"col-8"},[e("input",{directives:[{name:"model",rawName:"v-model",value:t.editCustomTokenForm.weight,expression:"editCustomTokenForm.weight"}],staticClass:"form-control",attrs:{type:"number",min:"-128",max:"128",step:"1"},domProps:{value:t.editCustomTokenForm.weight},on:{input:function(e){e.target.composing||t.$set(t.editCustomTokenForm,"weight",e.target.value)}}})])])]),t._v(" "),e("div",{staticClass:"list-group-item"},[e("div",{staticClass:"row align-items-center"},[e("div",{staticClass:"col-4"},[e("p",{staticClass:"mb-0 font-weight-bold small"},[t._v("Category")])]),t._v(" "),e("div",{staticClass:"col-8"},[e("select",{directives:[{name:"model",rawName:"v-model",value:t.editCustomTokenForm.category,expression:"editCustomTokenForm.category"}],staticClass:"form-control",on:{change:function(e){var a=Array.prototype.filter.call(e.target.options,(function(t){return t.selected})).map((function(t){return"_value"in t?t._value:t.value}));t.$set(t.editCustomTokenForm,"category",e.target.multiple?a:a[0])}}},[e("option",{attrs:{value:"spam"}},[t._v("Is Spam")]),t._v(" "),e("option",{attrs:{value:"ham"}},[t._v("Is NOT Spam")])])])])]),t._v(" "),e("div",{staticClass:"list-group-item"},[e("div",{staticClass:"row align-items-center"},[e("div",{staticClass:"col-4"},[e("p",{staticClass:"mb-0 font-weight-bold small"},[t._v("Note")])]),t._v(" "),e("div",{staticClass:"col-8"},[e("textarea",{directives:[{name:"model",rawName:"v-model",value:t.editCustomTokenForm.note,expression:"editCustomTokenForm.note"}],staticClass:"form-control",domProps:{value:t.editCustomTokenForm.note},on:{input:function(e){e.target.composing||t.$set(t.editCustomTokenForm,"note",e.target.value)}}})])])]),t._v(" "),e("div",{staticClass:"list-group-item"},[e("div",{staticClass:"row align-items-center"},[e("div",{staticClass:"col-4"},[e("p",{staticClass:"mb-0 font-weight-bold small"},[t._v("Active")])]),t._v(" "),e("div",{staticClass:"col-8 text-right"},[e("div",{staticClass:"custom-control custom-checkbox"},[e("input",{directives:[{name:"model",rawName:"v-model",value:t.editCustomTokenForm.active,expression:"editCustomTokenForm.active"}],staticClass:"custom-control-input",attrs:{type:"checkbox",id:"customCheck1"},domProps:{checked:Array.isArray(t.editCustomTokenForm.active)?t._i(t.editCustomTokenForm.active,null)>-1:t.editCustomTokenForm.active},on:{change:function(e){var a=t.editCustomTokenForm.active,s=e.target,i=!!s.checked;if(Array.isArray(a)){var n=t._i(a,null);s.checked?n<0&&t.$set(t.editCustomTokenForm,"active",a.concat([null])):n>-1&&t.$set(t.editCustomTokenForm,"active",a.slice(0,n).concat(a.slice(n+1)))}else t.$set(t.editCustomTokenForm,"active",i)}}}),t._v(" "),e("label",{staticClass:"custom-control-label",attrs:{for:"customCheck1"}})])])])])])])],1)},i=[function(){var t=this,e=t._self._c;return e("div",{staticClass:"col-xl-4 col-lg-6 col-md-4"},[e("p",{staticClass:"display-1 text-white d-inline-block mb-0"},[t._v("Autospam")]),t._v(" "),e("p",{staticClass:"text-lighter"},[t._v("The automated spam detection system")])])},function(){var t=this._self._c;return t("div",{staticClass:"col-auto"},[t("div",{staticClass:"icon icon-shape bg-gradient-primary text-white rounded-circle shadow"},[t("i",{staticClass:"far fa-sensor-alert"})])])},function(){var t=this._self._c;return t("div",{staticClass:"col-auto"},[t("div",{staticClass:"icon icon-shape bg-gradient-primary text-white rounded-circle shadow"},[t("i",{staticClass:"far fa-shield-alt"})])])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"card-body text-center"},[e("p",[e("i",{staticClass:"far fa-check-circle fa-5x text-success"})]),t._v(" "),e("p",{staticClass:"lead text-light mb-0"},[t._v("Autospam Service Operational")])])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"card-body text-center"},[e("p",[e("i",{staticClass:"far fa-exclamation-circle fa-5x text-danger"})]),t._v(" "),e("p",{staticClass:"lead text-danger font-weight-bold mb-0"},[t._v("Autospam Service Inactive")]),t._v(" "),e("p",{staticClass:"small text-light mb-0"},[t._v("To activate, "),e("a",{attrs:{href:"/i/admin/settings"}},[t._v("click here")]),t._v(" and enable "),e("span",{staticClass:"font-weight-bold"},[t._v("Spam detection")])])])},function(){var t=this._self._c;return t("p",[t("i",{staticClass:"far fa-check-circle fa-5x text-success"})])},function(){var t=this._self._c;return t("p",[t("i",{staticClass:"far fa-exclamation-circle fa-5x text-danger"})])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"col-12 col-md-8"},[e("div",{staticClass:"card bg-default"},[e("div",{staticClass:"card-header bg-transparent"},[e("div",{staticClass:"row align-items-center"},[e("div",{staticClass:"col"},[e("h6",{staticClass:"text-light text-uppercase ls-1 mb-1"},[t._v("Stats")]),t._v(" "),e("h5",{staticClass:"h3 text-white mb-0"},[t._v("Autospam Detections")])])])]),t._v(" "),e("div",{staticClass:"card-body"},[e("div",{staticClass:"chart"},[e("canvas",{staticClass:"chart-canvas",attrs:{id:"c1-dark"}})])])])])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"row"},[e("div",{staticClass:"col-12"},[e("div",{staticClass:"card card-body"},[e("h1",[t._v("About Autospam")]),t._v(" "),e("p",{staticClass:"mb-0"},[t._v("To detect and mitigate spam, we built Autospam, an internal tool that uses NLP and other behavioural metrics to classify potential spam posts.")]),t._v(" "),e("hr"),t._v(" "),e("h2",[t._v("Standard Detection")]),t._v(" "),e("p",[t._v('Standard or "Classic" detection works by evaluating several "signals" from the post and it\'s associated account.')]),t._v(" "),e("p",[t._v('Some of the following "signals" may trigger a positive detection from public posts:')]),t._v(" "),e("ul",[e("li",[t._v("Account is less than 6 months old")]),t._v(" "),e("li",[t._v("Account has less than 100 followers")]),t._v(" "),e("li",[t._v("Post contains one or more of: "),e("span",{staticClass:"badge badge-primary"},[t._v("https://")]),t._v(" "),e("span",{staticClass:"badge badge-primary"},[t._v("http://")]),t._v(" "),e("span",{staticClass:"badge badge-primary"},[t._v("hxxps://")]),t._v(" "),e("span",{staticClass:"badge badge-primary"},[t._v("hxxp://")]),t._v(" "),e("span",{staticClass:"badge badge-primary"},[t._v("www.")]),t._v(" "),e("span",{staticClass:"badge badge-primary"},[t._v(".com")]),t._v(" "),e("span",{staticClass:"badge badge-primary"},[t._v(".net")]),t._v(" "),e("span",{staticClass:"badge badge-primary"},[t._v(".org")])])]),t._v(" "),e("p",[t._v("If you've marked atleast one positive detection from an account as "),e("span",{staticClass:"font-weight-bold"},[t._v("Not spam")]),t._v(", any future posts they create will skip detection.")]),t._v(" "),e("hr"),t._v(" "),e("h2",[t._v("Advanced Detection")]),t._v(" "),e("p",[t._v("Advanced Detection works by using a statistical method that combines prior knowledge and observed data to estimate an average value. It assigns weights to both the prior knowledge and the observed data, allowing for a more informed and reliable estimation that adapts to new information.")]),t._v(" "),e("p",[t._v("When you train Spam or Not Spam data, the caption is broken up into words (tokens) and are counted (weights) and then stored in the appropriate category (Spam or Not Spam).")]),t._v(" "),e("p",[t._v("The training data is then used to classify spam on future posts (captions) by calculating each token and associated weights and comparing it to known categories (Spam or Not Spam).")])])])])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"row"},[e("div",{staticClass:"col-12"},[e("div",{staticClass:"card card-body"},[e("p",{staticClass:"mb-0"},[t._v("\n\t \t\t\t\tIn order for Autospam to be effective, you need to train it by classifying data as spam or not-spam.\n\t \t\t\t")]),t._v(" "),e("p",{staticClass:"mb-0 small"},[t._v("\n\t \t\t\t\tWe recommend atleast 200 classifications for both spam and not-spam, it is important to train Autospam on both so you get more accurate results.\n\t \t\t\t")])])])])},function(){var t=this._self._c;return t("p",{staticClass:"mb-0"},[t("i",{staticClass:"far fa-sensor-alert fa-5x text-danger"})])},function(){var t=this._self._c;return t("p",{staticClass:"mb-0"},[t("i",{staticClass:"far fa-check-circle fa-5x text-success"})])},function(){var t=this,e=t._self._c;return e("thead",{staticClass:"thead-dark"},[e("tr",[e("th",{attrs:{scope:"col"}},[t._v("ID")]),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("Type")]),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("Reported Account")]),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("Created")]),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("View Report")])])])},function(){var t=this._self._c;return t("td",{staticClass:"align-middle"},[t("p",{staticClass:"text-capitalize font-weight-bold mb-0"},[this._v("Autospam Post")])])},function(){var t=this._self._c;return t("div",{staticClass:"col-12 col-md-9"},[t("div",{staticClass:"card card-body mb-0"},[t("p",{staticClass:"mb-0"},[this._v("\n\t \t\t\t\tTokens are used to split paragraphs and sentences into smaller units that can be more easily assigned meaning.\n\t \t\t\t")])])])},function(){var t=this,e=t._self._c;return e("thead",{staticClass:"thead-dark"},[e("tr",[e("th",{attrs:{scope:"col"}},[t._v("ID")]),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("Token")]),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("Category")]),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("Weight")]),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("Created")]),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("Edit")])])])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"card"},[e("div",{staticClass:"card-body text-center py-5"},[e("p",{staticClass:"pt-5"},[e("i",{staticClass:"far fa-inbox fa-4x text-light"})]),t._v(" "),e("p",{staticClass:"lead mb-5"},[t._v("No custom tokens found!")])])])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"row"},[e("div",{staticClass:"col-12"},[e("div",{staticClass:"card card-body"},[e("p",{staticClass:"mb-0"},[t._v("\n\t \t\t\t\tYou can import and export Spam training data\n\t \t\t\t")]),t._v(" "),e("p",{staticClass:"mb-0 small"},[t._v("\n\t \t\t\t\tWe recommend exercising caution when importing training data from untrusted parties!\n\t \t\t\t")])])])])},function(){var t=this._self._c;return t("p",{staticClass:"mb-0"},[t("i",{staticClass:"far fa-plus-circle fa-5x text-light"})])},function(){var t=this._self._c;return t("p",{staticClass:"mb-0"},[t("i",{staticClass:"far fa-download fa-5x text-light"})])}]},48650:(t,e,a)=>{"use strict";a.r(e),a.d(e,{render:()=>s,staticRenderFns:()=>i});var s=function(){var t=this,e=t._self._c;return t.loaded?e("div",[e("div",{staticClass:"header bg-primary pb-2 mt-n4"},[e("div",{staticClass:"container-fluid"},[e("div",{staticClass:"header-body"},[e("div",{staticClass:"row align-items-center py-4"},[t._m(0),t._v(" "),e("div",{staticClass:"col-lg-6 col-5"},[e("p",{staticClass:"text-right"},[e("button",{staticClass:"btn btn-outline-white btn-lg px-5 py-2",on:{click:t.save}},[t._v("Save changes")])])])])])])]),t._v(" "),e("div",{staticClass:"container"},[e("div",{staticClass:"row"},[e("div",{staticClass:"col-12 col-md-3"},[e("div",{staticClass:"nav-wrapper"},[e("div",{staticClass:"nav flex-column nav-pills",attrs:{id:"tabs-icons-text",role:"tablist","aria-orientation":"vertical"}},t._l(t.tabs,(function(a){return e("div",{staticClass:"nav-item"},[e("a",{staticClass:"nav-link mb-sm-3",class:{active:t.tabIndex===a.id},attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.toggleTab(a.id)}}},[e("i",{class:a.icon}),t._v(" "),e("span",{staticClass:"ml-2"},[t._v(t._s(a.title))])])])})),0)])]),t._v(" "),e("div",{staticClass:"col-12 col-md-9"},[e("div",{staticClass:"card shadow mt-3"},[e("div",{staticClass:"card-body"},[e("div",{staticClass:"tab-content"},[1===t.tabIndex?e("div",{staticClass:"tab-pane fade show active"},[t.isSubmitting||t.state.awaiting_approval||t.state.is_active?t.isSubmitting||!t.state.awaiting_approval||t.state.is_active?!t.isSubmitting&&t.state.awaiting_approval&&t.state.is_active?e("div",[t._m(3)]):t.isSubmitting||t.state.awaiting_approval||!t.state.is_active?t.isSubmitting?e("div",[e("div",{staticClass:"card card-body shadow-none border d-flex align-items-center justify-content-center py-5"},[e("b-spinner",{attrs:{variant:"primary"}}),t._v(" "),e("p",{staticClass:"lead my-0 text-primary"},[t._v("Sending submission...")])],1)]):e("div",[t._m(6)]):e("div",[e("div",{staticClass:"card card-body shadow-none border d-flex align-items-center justify-content-center py-5"},[e("h2",{staticClass:"font-weight-bold"},[t._v("Active Listing")]),t._v(" "),t._m(4),t._v(" "),t._m(5),t._v(" "),e("button",{staticClass:"btn btn-primary btn-sm mt-3 font-weight-bold px-5 text-uppercase",on:{click:t.handleSubmit}},[t._v("\n Update my listing on pixelfed.org\n ")])])]):e("div",[t._m(2)]):e("div",{staticClass:"d-flex align-items-center justify-content-center"},[e("div",{staticClass:"text-center mb-4"},[t._m(1),t._v(" "),e("p",{staticClass:"display-3 mb-1"},[t._v("Awaiting Submission")]),t._v(" "),t.state.is_eligible||t.state.submission_exists?t.state.is_eligible&&!t.state.submission_exists?e("div",{staticClass:"mb-4"},[e("p",{staticClass:"lead mt-0 text-muted"},[t._v("Your directory listing is ready for submission!")]),t._v(" "),e("button",{staticClass:"btn btn-primary btn-lg font-weight-bold px-5 text-uppercase",on:{click:t.handleSubmit}},[t._v("\n Submit my Server to pixelfed.org\n ")])]):t._e():e("p",{staticClass:"lead mt-0 text-muted"},[t._v("Your directory listing isn't completed yet")])])]),t._v(" "),e("div",{staticClass:"row"},[e("div",{staticClass:"col-12 col-md-6"},[e("div",{staticClass:"card text-left"},[e("div",{staticClass:"list-group list-group-flush"},[e("div",{staticClass:"list-group-item"},[e("i",{staticClass:"far",class:[t.requirements.open_registration?"fa-check-circle text-success":"fa-exclamation-circle text-danger"]}),t._v(" "),e("span",{staticClass:"ml-2 font-weight-bold"},[t._v("\n "+t._s(t.requirements.open_registration?"Open":"Closed")+" account registration\n ")])]),t._v(" "),e("div",{staticClass:"list-group-item"},[e("i",{staticClass:"far",class:[t.requirements.oauth_enabled?"fa-check-circle text-success":"fa-exclamation-circle text-danger"]}),t._v(" "),e("span",{staticClass:"ml-2 font-weight-bold"},[t._v("\n "+t._s(t.requirements.oauth_enabled?"Enabled":"Disabled")+" mobile apis/oauth\n ")])]),t._v(" "),e("div",{staticClass:"list-group-item"},[e("i",{staticClass:"far",class:[t.requirements.activitypub_enabled?"fa-check-circle text-success":"fa-exclamation-circle text-danger"]}),t._v(" "),e("span",{staticClass:"ml-2 font-weight-bold"},[t._v("\n "+t._s(t.requirements.activitypub_enabled?"Enabled":"Disabled")+" activitypub federation\n ")])]),t._v(" "),e("div",{staticClass:"list-group-item"},[e("i",{staticClass:"far",class:[t.form.summary&&t.form.summary.length&&t.form.location&&t.form.location.length?"fa-check-circle text-success":"fa-exclamation-circle text-danger"]}),t._v(" "),e("span",{staticClass:"ml-2 font-weight-bold"},[t._v("\n "+t._s(t.form.summary&&t.form.summary.length&&t.form.location&&t.form.location.length?"Configured":"Missing")+" server details\n ")])]),t._v(" "),e("div",{staticClass:"list-group-item"},[e("i",{staticClass:"far",class:[t.requirements_validator&&0==t.requirements_validator.length?"fa-check-circle text-success":"fa-exclamation-circle text-danger"]}),t._v(" "),e("span",{staticClass:"ml-2 font-weight-bold"},[t._v("\n "+t._s(t.requirements_validator&&0==t.requirements_validator.length?"Valid":"Invalid")+" feature requirements\n ")])])])])]),t._v(" "),e("div",{staticClass:"col-12 col-md-6"},[e("div",{staticClass:"card text-left"},[e("div",{staticClass:"list-group list-group-flush"},[e("div",{staticClass:"list-group-item"},[e("i",{staticClass:"far",class:[t.form.contact_account?"fa-check-circle text-success":"fa-exclamation-circle text-danger"]}),t._v(" "),e("span",{staticClass:"ml-2 font-weight-bold"},[t._v("\n "+t._s(t.form.contact_account?"Configured":"Missing")+" admin account\n ")])]),t._v(" "),e("div",{staticClass:"list-group-item"},[e("i",{staticClass:"far",class:[t.form.contact_email?"fa-check-circle text-success":"fa-exclamation-circle text-danger"]}),t._v(" "),e("span",{staticClass:"ml-2 font-weight-bold"},[t._v("\n "+t._s(t.form.contact_email?"Configured":"Missing")+" contact email\n ")])]),t._v(" "),e("div",{staticClass:"list-group-item"},[e("i",{staticClass:"far",class:[t.selectedPosts&&t.selectedPosts.length?"fa-check-circle text-success":"fa-exclamation-circle text-danger"]}),t._v(" "),e("span",{staticClass:"ml-2 font-weight-bold"},[t._v("\n "+t._s(t.selectedPosts&&t.selectedPosts.length?"Configured":"Missing")+" favourite posts\n ")])]),t._v(" "),e("div",{staticClass:"list-group-item"},[e("i",{staticClass:"far",class:[t.form.privacy_pledge?"fa-check-circle text-success":"fa-exclamation-circle text-danger"]}),t._v(" "),e("span",{staticClass:"ml-2 font-weight-bold"},[t._v("\n "+t._s(t.form.privacy_pledge?"Configured":"Missing")+" privacy pledge\n ")])]),t._v(" "),e("div",{staticClass:"list-group-item"},[e("i",{staticClass:"far",class:[t.communityGuidelines&&t.communityGuidelines.length?"fa-check-circle text-success":"fa-exclamation-circle text-danger"]}),t._v(" "),e("span",{staticClass:"ml-2 font-weight-bold"},[t._v("\n "+t._s(t.communityGuidelines&&t.communityGuidelines.length?"Configured":"Missing")+" community guidelines\n ")])])])])])])]):2===t.tabIndex?e("div",{staticClass:"tab-pane fade show active"},[e("p",{staticClass:"description"},[t._v("Cosby sweater eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american apparel, butcher voluptate nisi qui.")])]):3===t.tabIndex?e("div",{staticClass:"tab-pane fade show active",attrs:{role:"tabpanel"}},[e("h2",{staticClass:"display-4 mb-0"},[t._v("Server Details")]),t._v(" "),e("p",{staticClass:"small text-muted"},[t._v("Edit your server details to better describe it")]),t._v(" "),e("hr",{staticClass:"mt-0"}),t._v(" "),e("div",{staticClass:"row"},[e("div",{staticClass:"col-12 col-md-6"},[e("div",{staticClass:"card shadow-none border card-body"},[e("div",{staticClass:"form-group mb-0"},[e("label",{staticClass:"font-weight-bold",attrs:{for:"form-summary"}},[t._v("Summary")]),t._v(" "),e("textarea",{directives:[{name:"model",rawName:"v-model",value:t.form.summary,expression:"form.summary"}],staticClass:"form-control form-control-muted",attrs:{id:"form-summary",rows:"3",placeholder:"A descriptive summary of your instance up to 140 characters long. HTML is not allowed."},domProps:{value:t.form.summary},on:{input:function(e){e.target.composing||t.$set(t.form,"summary",e.target.value)}}}),t._v(" "),e("p",{staticClass:"help-text small text-muted text-right"},[t._v("\n "+t._s(t.form.summary&&t.form.summary.length?t.form.summary.length:0)+"/140\n ")])])])]),t._v(" "),e("div",{staticClass:"col-12 col-md-6"},[e("div",{staticClass:"card shadow-none border card-body"},[e("div",{staticClass:"form-group mb-0"},[e("label",{staticClass:"font-weight-bold",attrs:{for:"form-summary"}},[t._v("Location")]),t._v(" "),e("select",{directives:[{name:"model",rawName:"v-model",value:t.form.location,expression:"form.location"}],staticClass:"form-control form-control-muted",on:{change:function(e){var a=Array.prototype.filter.call(e.target.options,(function(t){return t.selected})).map((function(t){return"_value"in t?t._value:t.value}));t.$set(t.form,"location",e.target.multiple?a:a[0])}}},[e("option",{attrs:{selected:"",disabled:"",value:"0"}},[t._v("Select the country your server is in")]),t._v(" "),t._l(t.initialData.countries,(function(a){return e("option",{domProps:{value:a}},[t._v(t._s(a))])}))],2),t._v(" "),e("p",{staticClass:"form-text small text-muted"},[t._v("Select the country your server is hosted in, even if you are in a different country")])])])])]),t._v(" "),e("div",{staticClass:"list-group mb-4"},[e("div",{staticClass:"list-group-item"},[e("label",{staticClass:"font-weight-bold mb-0"},[t._v("Server Banner")]),t._v(" "),e("p",{staticClass:"small"},[t._v("Add an optional banner image to your directory listing")]),t._v(" "),e("div",{staticClass:"row"},[e("div",{staticClass:"col-12 col-md-6"},[e("div",{staticClass:"card mb-0 shadow-none border"},[t.form.banner_image?e("div",[e("a",{attrs:{href:t.form.banner_image,target:"_blank"}},[e("img",{staticClass:"card-img-top",attrs:{src:t.form.banner_image}})])]):e("div",{staticClass:"card-body bg-primary text-white"},[t._m(7),t._v(" "),e("p",{staticClass:"text-center mb-0"},[t._v("No banner image")])])])]),t._v(" "),e("div",{staticClass:"col-12 col-md-6"},[t.isUploadingBanner?e("div",{staticClass:"text-center"},[e("b-spinner",{attrs:{variant:"primary"}})],1):e("div",{staticClass:"custom-file"},[e("input",{ref:"bannerImageRef",staticClass:"custom-file-input",attrs:{type:"file",id:"banner_image"},on:{change:t.uploadBannerImage}}),t._v(" "),e("label",{staticClass:"custom-file-label",attrs:{for:"banner_image"}},[t._v("Choose file")]),t._v(" "),e("p",{staticClass:"form-text text-muted small mb-0"},[t._v("Must be 1920 by 1080 pixels")]),t._v(" "),t._m(8),t._v(" "),t.form.banner_image&&!t.form.banner_image.endsWith("default.jpg")?e("div",[e("button",{staticClass:"btn btn-danger font-weight-bold btn-block mt-5",on:{click:t.deleteBannerImage}},[t._v("Delete banner image")])]):t._e()])])])])]),t._v(" "),e("div",{staticClass:"row"},[e("div",{staticClass:"col-12 col-md-6"},[e("div",{staticClass:"card shadow-none border card-body"},[e("div",{staticClass:"form-group mb-0"},[e("label",{staticClass:"font-weight-bold",attrs:{for:"form-summary"}},[t._v("Primary Language")]),t._v(" "),e("select",{directives:[{name:"model",rawName:"v-model",value:t.form.primary_locale,expression:"form.primary_locale"}],staticClass:"form-control form-control-muted",attrs:{disabled:""},on:{change:function(e){var a=Array.prototype.filter.call(e.target.options,(function(t){return t.selected})).map((function(t){return"_value"in t?t._value:t.value}));t.$set(t.form,"primary_locale",e.target.multiple?a:a[0])}}},t._l(t.initialData.available_languages,(function(a){return e("option",{domProps:{value:a.code}},[t._v(t._s(a.name))])})),0),t._v(" "),t._m(9)])])])])]):4===t.tabIndex?e("div",{staticClass:"tab-pane fade show active",attrs:{role:"tabpanel"}},[e("h2",{staticClass:"display-4 mb-0"},[t._v("Admin Contact")]),t._v(" "),e("p",{staticClass:"small text-muted"},[t._v("Set a designated admin account and public email address")]),t._v(" "),e("hr",{staticClass:"mt-0"}),t._v(" "),e("div",{staticClass:"row"},[e("div",{staticClass:"col-12 col-md-6"},[t.initialData.admins.length?e("div",{staticClass:"form-group"},[e("label",{staticClass:"font-weight-bold",attrs:{for:"form-summary"}},[t._v("Designated Admin")]),t._v(" "),e("select",{directives:[{name:"model",rawName:"v-model",value:t.form.contact_account,expression:"form.contact_account"}],staticClass:"form-control form-control-muted",on:{change:function(e){var a=Array.prototype.filter.call(e.target.options,(function(t){return t.selected})).map((function(t){return"_value"in t?t._value:t.value}));t.$set(t.form,"contact_account",e.target.multiple?a:a[0])}}},[e("option",{attrs:{disabled:"",value:"0"}},[t._v("Select a designated admin")]),t._v(" "),t._l(t.initialData.admins,(function(a,s){return e("option",{key:"pfc-"+a+s,domProps:{value:a.pid}},[t._v(t._s(a.username))])}))],2)]):e("div",{staticClass:"px-3 pb-2 pt-0 border border-danger rounded"},[e("p",{staticClass:"lead font-weight-bold text-danger"},[t._v("No admin(s) found")]),t._v(" "),t._m(10)])]),t._v(" "),e("div",{staticClass:"col-12 col-md-6"},[e("div",{staticClass:"form-group"},[e("label",{staticClass:"font-weight-bold",attrs:{for:"form-summary"}},[t._v("Public Email")]),t._v(" "),e("input",{directives:[{name:"model",rawName:"v-model",value:t.form.contact_email,expression:"form.contact_email"}],staticClass:"form-control form-control-muted",attrs:{placeholder:"info@example.org"},domProps:{value:t.form.contact_email},on:{input:function(e){e.target.composing||t.$set(t.form,"contact_email",e.target.value)}}}),t._v(" "),e("p",{staticClass:"help-text small text-muted"},[t._v("\n Must be a valid email address\n ")])])])])]):5===t.tabIndex?e("div",{staticClass:"tab-pane fade show active",attrs:{role:"tabpanel"}},[e("h2",{staticClass:"display-4 mb-0"},[t._v("Favourite Posts")]),t._v(" "),e("p",{staticClass:"small text-muted"},[t._v("Show off a few favourite posts from your server")]),t._v(" "),e("hr",{staticClass:"mt-0 mb-1"}),t._v(" "),e("div",{directives:[{name:"show",rawName:"v-show",value:t.selectedPosts&&12!==t.selectedPosts.length,expression:"selectedPosts && selectedPosts.length !== 12"}],staticClass:"nav-wrapper"},[e("ul",{staticClass:"nav nav-pills nav-fill flex-column flex-md-row",attrs:{role:"tablist"}},[e("li",{staticClass:"nav-item"},[e("a",{staticClass:"nav-link mb-sm-3 mb-md-0 active",attrs:{id:"favposts-1-tab","data-toggle":"tab",href:"#favposts-1",role:"tab","aria-controls":"favposts-1","aria-selected":"true"}},[t._v(t._s(this.selectedPosts.length?this.selectedPosts.length:"")+" Selected Posts")])]),t._v(" "),t.selectedPosts&&t.selectedPosts.length<12?e("li",{staticClass:"nav-item"},[e("a",{staticClass:"nav-link mb-sm-3 mb-md-0",attrs:{id:"favposts-2-tab","data-toggle":"tab",href:"#favposts-2",role:"tab","aria-controls":"favposts-2","aria-selected":"false"}},[t._v("Add by post id")])]):t._e(),t._v(" "),t.selectedPosts&&t.selectedPosts.length<12?e("li",{staticClass:"nav-item"},[e("a",{staticClass:"nav-link mb-sm-3 mb-md-0",attrs:{id:"favposts-3-tab","data-toggle":"tab",href:"#favposts-3",role:"tab","aria-controls":"favposts-3","aria-selected":"false"},on:{click:t.initPopularPosts}},[t._v("Add by popularity")])]):t._e()])]),t._v(" "),e("div",{staticClass:"tab-content mt-3"},[e("div",{staticClass:"tab-pane fade list-fade-bottom show active",attrs:{id:"favposts-1",role:"tabpanel","aria-labelledby":"favposts-1-tab"}},[t.selectedPosts&&t.selectedPosts.length?e("div",{staticStyle:{"max-height":"520px","overflow-y":"auto"}},[t._l(t.selectedPosts,(function(a){return e("div",{key:"sp-"+a.id,staticClass:"list-group-item border-primary form-control-muted"},[e("div",{staticClass:"media align-items-center"},[e("div",{staticClass:"custom-control custom-checkbox mr-2"},[e("input",{staticClass:"custom-control-input",attrs:{type:"checkbox",checked:"",id:"checkbox-sp-".concat(a.id)},on:{change:function(e){return t.toggleSelectedPost(a)}}}),t._v(" "),e("label",{staticClass:"custom-control-label",attrs:{for:"checkbox-sp-".concat(a.id)}})]),t._v(" "),e("img",{staticClass:"border rounded-sm mr-3",staticStyle:{"object-fit":"cover"},attrs:{src:a.media_attachments[0].url,width:"100",height:"100",loading:"lazy"}}),t._v(" "),e("div",{staticClass:"media-body"},[e("p",{staticClass:"lead mt-0 mb-0 font-weight-bold"},[t._v("@"+t._s(a.account.username))]),t._v(" "),e("p",{staticClass:"text-muted mb-0",staticStyle:{"font-size":"14px"}},[e("span",[e("span",{staticClass:"font-weight-bold"},[t._v(t._s(t.formatCount(a.favourites_count)))]),t._v(" Likes")]),t._v(" "),e("span",{staticClass:"mx-2"},[t._v("·")]),t._v(" "),e("span",[e("span",{staticClass:"font-weight-bold"},[t._v(t._s(t.formatCount(a.account.followers_count)))]),t._v(" Followers")]),t._v(" "),e("span",{staticClass:"mx-2"},[t._v("·")]),t._v(" "),e("span",[t._v("Created "),e("span",{staticClass:"font-weight-bold"},[t._v(t._s(t.formatDateTime(a.created_at)))])])])]),t._v(" "),e("a",{staticClass:"btn btn-outline-primary btn-sm rounded-pill",attrs:{href:a.url,target:"_blank"}},[t._v("View")])])])})),t._v(" "),e("div",{staticClass:"mt-5 mb-5 pt-3"})],2):e("div",[t._m(11)])]),t._v(" "),e("div",{staticClass:"tab-pane fade",attrs:{id:"favposts-2",role:"tabpanel","aria-labelledby":"favposts-2-tab"}},[e("div",{staticClass:"row"},[e("div",{staticClass:"col-12 col-md-6"},[e("div",{staticClass:"form-group"},[e("label",{staticClass:"font-weight-bold"},[t._v("Find and add by post id")]),t._v(" "),e("div",{staticClass:"input-group mb-3"},[e("input",{directives:[{name:"model",rawName:"v-model",value:t.favouritePostByIdInput,expression:"favouritePostByIdInput"}],staticClass:"form-control form-control-muted border",attrs:{type:"number",placeholder:"Post id",min:"1",max:"99999999999999999999",disabled:t.favouritePostByIdFetching},domProps:{value:t.favouritePostByIdInput},on:{input:function(e){e.target.composing||(t.favouritePostByIdInput=e.target.value)}}}),t._v(" "),e("div",{staticClass:"input-group-append"},[t.favouritePostByIdFetching?e("button",{staticClass:"btn btn-outline-primary",attrs:{disabled:""}},[t._m(12)]):e("button",{staticClass:"btn btn-outline-primary",attrs:{type:"button"},on:{click:t.handlePostByIdSearch}},[t._v("\n Search\n ")])])])])]),t._v(" "),t._m(13)])]),t._v(" "),e("div",{staticClass:"tab-pane fade list-fade-bottom mb-0",attrs:{id:"favposts-3",role:"tabpanel","aria-labelledby":"favposts-3-tab"}},[t.popularPostsLoaded?e("div",{staticClass:"list-group",staticStyle:{"max-height":"520px","overflow-y":"auto"}},[t._l(t.popularPosts,(function(a){return e("div",{key:"pp-"+a.id,staticClass:"list-group-item",class:[t.selectedPosts.includes(a)?"border-primary form-control-muted":""]},[e("div",{staticClass:"media align-items-center"},[e("div",{staticClass:"custom-control custom-checkbox mr-2"},[e("input",{staticClass:"custom-control-input",attrs:{type:"checkbox",id:"checkbox-pp-".concat(a.id)},domProps:{checked:t.selectedPosts.includes(a)},on:{change:function(e){return t.togglePopularPost(a.id,a)}}}),t._v(" "),e("label",{staticClass:"custom-control-label",attrs:{for:"checkbox-pp-".concat(a.id)}})]),t._v(" "),e("img",{staticClass:"border rounded-sm mr-3",staticStyle:{"object-fit":"cover"},attrs:{src:a.media_attachments[0].url,width:"100",height:"100",loading:"lazy"}}),t._v(" "),e("div",{staticClass:"media-body"},[e("p",{staticClass:"lead mt-0 mb-0 font-weight-bold"},[t._v("@"+t._s(a.account.username))]),t._v(" "),e("p",{staticClass:"text-muted mb-0",staticStyle:{"font-size":"14px"}},[e("span",[e("span",{staticClass:"font-weight-bold"},[t._v(t._s(t.formatCount(a.favourites_count)))]),t._v(" Likes")]),t._v(" "),e("span",{staticClass:"mx-2"},[t._v("·")]),t._v(" "),e("span",[e("span",{staticClass:"font-weight-bold"},[t._v(t._s(t.formatCount(a.account.followers_count)))]),t._v(" Followers")]),t._v(" "),e("span",{staticClass:"mx-2"},[t._v("·")]),t._v(" "),e("span",[t._v("Created "),e("span",{staticClass:"font-weight-bold"},[t._v(t._s(t.formatDateTime(a.created_at)))])])])]),t._v(" "),e("a",{staticClass:"btn btn-outline-primary btn-sm rounded-pill",attrs:{href:a.url,target:"_blank"}},[t._v("View")])])])})),t._v(" "),e("div",{staticClass:"mt-5 mb-3"})],2):e("div",{staticClass:"text-center py-5"},[t._m(14)])])])]):6===t.tabIndex?e("div",{staticClass:"tab-pane fade show active",attrs:{role:"tabpanel"}},[e("h2",{staticClass:"display-4 mb-0"},[t._v("Privacy Pledge")]),t._v(" "),e("p",{staticClass:"small text-muted"},[t._v("Pledge to keep you and your data private and securely stored")]),t._v(" "),e("hr",{staticClass:"mt-0"}),t._v(" "),e("p",[t._v("To qualify for the Privacy Pledge, you must abide by the following rules:")]),t._v(" "),t._m(15),t._v(" "),e("p",{staticClass:"small text-muted mb-0"},[t._v("You may use 3rd party services like captchas on specific pages, so long as they are clearly defined in your privacy policy")]),t._v(" "),e("hr"),t._v(" "),e("p"),e("div",{staticClass:"custom-control custom-checkbox mr-2"},[e("input",{directives:[{name:"model",rawName:"v-model",value:t.form.privacy_pledge,expression:"form.privacy_pledge"}],staticClass:"custom-control-input",attrs:{type:"checkbox",id:"privacy-pledge"},domProps:{checked:Array.isArray(t.form.privacy_pledge)?t._i(t.form.privacy_pledge,null)>-1:t.form.privacy_pledge},on:{change:function(e){var a=t.form.privacy_pledge,s=e.target,i=!!s.checked;if(Array.isArray(a)){var n=t._i(a,null);s.checked?n<0&&t.$set(t.form,"privacy_pledge",a.concat([null])):n>-1&&t.$set(t.form,"privacy_pledge",a.slice(0,n).concat(a.slice(n+1)))}else t.$set(t.form,"privacy_pledge",i)}}}),t._v(" "),e("label",{staticClass:"custom-control-label font-weight-bold",attrs:{for:"privacy-pledge"}},[t._v("I agree to the uphold the Privacy Pledge")])]),t._v(" "),e("p")]):7===t.tabIndex?e("div",{staticClass:"tab-pane fade show active",attrs:{role:"tabpanel"}},[e("h2",{staticClass:"display-4 mb-0"},[t._v("Community Guidelines")]),t._v(" "),e("p",{staticClass:"small text-muted"},[t._v("A few ground rules to keep your community healthy and safe.")]),t._v(" "),e("hr",{staticClass:"mt-0"}),t._v(" "),t.communityGuidelines&&t.communityGuidelines.length?e("ol",{staticClass:"font-weight-bold"},t._l(t.communityGuidelines,(function(a){return e("li",{staticClass:"text-primary"},[e("span",{staticClass:"lead ml-1 text-dark"},[t._v(t._s(a))])])})),0):e("div",{staticClass:"card bg-primary text-white"},[t._m(16)]),t._v(" "),e("hr"),t._v(" "),t._m(17)]):8===t.tabIndex?e("div",{staticClass:"tab-pane fade show active",attrs:{role:"tabpanel"}},[e("h2",{staticClass:"display-4 mb-0"},[t._v("Feature Requirements")]),t._v(" "),e("p",{staticClass:"small text-muted"},[t._v("The minimum requirements for Directory inclusion.")]),t._v(" "),e("hr",{staticClass:"mt-0"}),t._v(" "),e("div",{staticClass:"row"},[e("div",{staticClass:"col-12 col-md-6"},[e("div",{staticClass:"list-group"},[e("div",{staticClass:"list-group-item d-flex align-items-center"},[e("div",[e("i",{staticClass:"far fa-2x mr-4",class:[t.requirements_validator.hasOwnProperty("media_types")?"fa-exclamation-circle text-danger":"fa-check-circle text-success"]})]),t._v(" "),e("div",[e("p",{staticClass:"font-weight-bold text-dark my-0"},[t._v("Media Types")]),t._v(" "),e("p",{staticClass:"mb-0 small text-muted"},[t._v("Allowed MIME types. image/jpeg and image/png by default")]),t._v(" "),t.requirements_validator.hasOwnProperty("media_types")?e("p",{staticClass:"mb-0 text-danger font-weight-bold"},[t._v(t._s(t.requirements_validator.media_types[0]))]):t._e()])]),t._v(" "),t.feature_config.optimize_image?e("div",{staticClass:"list-group-item d-flex align-items-center"},[e("div",[e("i",{staticClass:"far fa-2x mr-4",class:[t.requirements_validator.hasOwnProperty("image_quality")?"fa-exclamation-circle text-danger":"fa-check-circle text-success"]})]),t._v(" "),e("div",[e("p",{staticClass:"font-weight-bold text-dark my-0"},[t._v("Image Quality")]),t._v(" "),e("p",{staticClass:"mb-0 small text-muted"},[t._v("Image optimization is enabled, the image quality must be a value between 1-100.")]),t._v(" "),t.requirements_validator.hasOwnProperty("image_quality")?e("p",{staticClass:"mb-0 text-danger font-weight-bold"},[t._v(t._s(t.requirements_validator.image_quality[0]))]):t._e()])]):t._e(),t._v(" "),e("div",{staticClass:"list-group-item d-flex align-items-center"},[e("div",[e("i",{staticClass:"far fa-2x mr-4",class:[t.requirements_validator.hasOwnProperty("max_photo_size")?"fa-exclamation-circle text-danger":"fa-check-circle text-success"]})]),t._v(" "),e("div",[e("p",{staticClass:"font-weight-bold text-dark my-0"},[t._v("Max Photo Size")]),t._v(" "),e("p",{staticClass:"mb-0 small text-muted"},[t._v("Max photo upload size in kb. Must be between 15-100 MB.")]),t._v(" "),t.requirements_validator.hasOwnProperty("max_photo_size")?e("p",{staticClass:"mb-0 text-danger font-weight-bold"},[t._v(t._s(t.requirements_validator.max_photo_size[0]))]):t._e()])]),t._v(" "),e("div",{staticClass:"list-group-item d-flex align-items-center"},[e("div",[e("i",{staticClass:"far fa-2x mr-4",class:[t.requirements_validator.hasOwnProperty("max_caption_length")?"fa-exclamation-circle text-danger":"fa-check-circle text-success"]})]),t._v(" "),e("div",[e("p",{staticClass:"font-weight-bold text-dark my-0"},[t._v("Max Caption Length")]),t._v(" "),e("p",{staticClass:"mb-0 small text-muted"},[t._v("The max caption length limit. Must be between 500-10000.")]),t._v(" "),t.requirements_validator.hasOwnProperty("max_caption_length")?e("p",{staticClass:"mb-0 text-danger font-weight-bold"},[t._v(t._s(t.requirements_validator.max_caption_length[0]))]):t._e()])])])]),t._v(" "),e("div",{staticClass:"col-12 col-md-6"},[e("div",{staticClass:"list-group"},[e("div",{staticClass:"list-group-item d-flex align-items-center"},[e("div",[e("i",{staticClass:"far fa-2x mr-4",class:[t.requirements_validator.hasOwnProperty("max_altext_length")?"fa-exclamation-circle text-danger":"fa-check-circle text-success"]})]),t._v(" "),e("div",[e("p",{staticClass:"font-weight-bold text-dark my-0"},[t._v("Max Alt-text length")]),t._v(" "),e("p",{staticClass:"mb-0 small text-muted"},[t._v("The alt-text length limit. Must be between 1000-5000.")]),t._v(" "),t.requirements_validator.hasOwnProperty("max_altext_length")?e("p",{staticClass:"mb-0 text-danger font-weight-bold"},[t._v(t._s(t.requirements_validator.max_altext_length[0]))]):t._e()])]),t._v(" "),t.feature_config.enforce_account_limit?e("div",{staticClass:"list-group-item d-flex align-items-center"},[e("div",[e("i",{staticClass:"far fa-2x mr-4",class:[t.requirements_validator.hasOwnProperty("max_account_size")?"fa-exclamation-circle text-danger":"fa-check-circle text-success"]})]),t._v(" "),e("div",[e("p",{staticClass:"font-weight-bold text-dark my-0"},[t._v("Max Account Size")]),t._v(" "),e("p",{staticClass:"mb-0 small text-muted"},[t._v("The account storage limit. Must be 1GB at minimum.")]),t._v(" "),t.requirements_validator.hasOwnProperty("max_account_size")?e("p",{staticClass:"mb-0 text-danger font-weight-bold"},[t._v(t._s(t.requirements_validator.max_account_size[0]))]):t._e()])]):t._e(),t._v(" "),e("div",{staticClass:"list-group-item d-flex align-items-center"},[e("div",[e("i",{staticClass:"far fa-2x mr-4",class:[t.requirements_validator.hasOwnProperty("max_album_length")?"fa-exclamation-circle text-danger":"fa-check-circle text-success"]})]),t._v(" "),e("div",[e("p",{staticClass:"font-weight-bold text-dark my-0"},[t._v("Max Album Length")]),t._v(" "),e("p",{staticClass:"mb-0 small text-muted"},[t._v("Max photos per album post. Must be between 4-20.")]),t._v(" "),t.requirements_validator.hasOwnProperty("max_album_length")?e("p",{staticClass:"mb-0 text-danger font-weight-bold"},[t._v(t._s(t.requirements_validator.max_album_length[0]))]):t._e()])]),t._v(" "),e("div",{staticClass:"list-group-item d-flex align-items-center"},[e("div",[e("i",{staticClass:"far fa-2x mr-4",class:[t.requirements_validator.hasOwnProperty("account_deletion")?"fa-exclamation-circle text-danger":"fa-check-circle text-success"]})]),t._v(" "),e("div",[e("p",{staticClass:"font-weight-bold text-dark my-0"},[t._v("Account Deletion")]),t._v(" "),e("p",{staticClass:"mb-0 small text-muted"},[t._v("Allow users to delete their own account.")]),t._v(" "),t.requirements_validator.hasOwnProperty("account_deletion")?e("p",{staticClass:"mb-0 text-danger font-weight-bold"},[t._v(t._s(t.requirements_validator.account_deletion[0]))]):t._e()])])])])])]):9===t.tabIndex?e("div",{staticClass:"tab-pane fade show active",attrs:{role:"tabpanel"}},[e("h2",{staticClass:"display-4 mb-0"},[t._v("User Testimonials")]),t._v(" "),e("p",{staticClass:"small text-muted"},[t._v("Add testimonials from your users.")]),t._v(" "),e("hr",{staticClass:"mt-0"}),t._v(" "),e("div",{staticClass:"row"},[e("div",{staticClass:"col-12 col-md-6 list-fade-bottom"},[e("div",{staticClass:"list-group pb-5",staticStyle:{"max-height":"520px","overflow-y":"auto"}},t._l(t.testimonials,(function(a,s){return e("div",{staticClass:"list-group-item",class:[s==t.testimonials.length-1?"mb-5":""]},[e("div",{staticClass:"d-flex justify-content-between align-items-center"},[e("div",{staticClass:"media"},[e("img",{staticClass:"mr-3 rounded-circle",attrs:{src:a.profile.avatar,width:"40",h:"40"}}),t._v(" "),e("div",{staticClass:"media-body"},[e("p",{staticClass:"font-weight-bold mb-0"},[t._v("\n "+t._s(a.profile.username)+"\n ")]),t._v(" "),e("p",{staticClass:"small text-muted mt-n1 mb-0"},[t._v("\n Member Since "+t._s(t.formatDate(a.profile.created_at))+"\n ")])])]),t._v(" "),e("div",[e("p",{staticClass:"mb-0 small"},[e("a",{attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.editTestimonial(a)}}},[t._v("\n Edit\n ")])]),t._v(" "),e("p",{staticClass:"mb-0 small"},[e("a",{staticClass:"text-danger",attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.deleteTestimonial(a)}}},[t._v("\n Delete\n ")])])])]),t._v(" "),e("hr",{staticClass:"my-1"}),t._v(" "),e("p",{staticClass:"small font-weight-bold text-muted mb-0 text-center"},[t._v("Testimonial")]),t._v(" "),e("div",{staticClass:"border rounded px-3"},[e("p",{staticClass:"my-2 small",staticStyle:{"white-space":"pre-wrap"},domProps:{innerHTML:t._s(a.body)}})])])})),0)]),t._v(" "),e("div",{staticClass:"col-12 col-md-6"},[t.isEditingTestimonial?e("div",{staticClass:"card"},[e("div",{staticClass:"card-header font-weight-bold"},[t._v("\n Edit Testimonial\n ")]),t._v(" "),e("div",{staticClass:"card-body"},[e("div",{staticClass:"form-group"},[e("label",{staticClass:"font-weight-bold",attrs:{for:"form-summary"}},[t._v("Username")]),t._v(" "),e("input",{directives:[{name:"model",rawName:"v-model",value:t.editingTestimonial.profile.username,expression:"editingTestimonial.profile.username"}],staticClass:"form-control form-control-muted",attrs:{placeholder:"test",disabled:""},domProps:{value:t.editingTestimonial.profile.username},on:{input:function(e){e.target.composing||t.$set(t.editingTestimonial.profile,"username",e.target.value)}}})]),t._v(" "),e("div",{staticClass:"form-group"},[e("label",{staticClass:"font-weight-bold",attrs:{for:"form-summary"}},[t._v("Testimonial")]),t._v(" "),e("textarea",{directives:[{name:"model",rawName:"v-model",value:t.editingTestimonial.body,expression:"editingTestimonial.body"}],staticClass:"form-control form-control-muted",attrs:{rows:"5"},domProps:{value:t.editingTestimonial.body},on:{input:function(e){e.target.composing||t.$set(t.editingTestimonial,"body",e.target.value)}}}),t._v(" "),e("div",{staticClass:"d-flex justify-content-between"},[e("p",{staticClass:"help-text small text-muted mb-0"},[t._v("\n Text only, up to 500 characters\n ")]),t._v(" "),e("p",{staticClass:"help-text small text-muted mb-0"},[t._v("\n "+t._s(t.editingTestimonial.body?t.editingTestimonial.body.length:0)+"/500\n ")])])])]),t._v(" "),e("div",{staticClass:"card-footer"},[e("button",{staticClass:"btn btn-primary btn-block",attrs:{type:"button"},on:{click:t.saveEditTestimonial}},[t._v("\n Save\n ")]),t._v(" "),e("button",{staticClass:"btn btn-secondary btn-block",attrs:{type:"button"},on:{click:t.cancelEditTestimonial}},[t._v("\n Cancel\n ")])])]):e("div",{staticClass:"card"},[t.testimonials.length<10?[e("div",{staticClass:"card-header font-weight-bold"},[t._v("\n Add New Testimonial\n ")]),t._v(" "),e("div",{staticClass:"card-body"},[e("div",{staticClass:"form-group"},[e("label",{staticClass:"font-weight-bold",attrs:{for:"form-summary"}},[t._v("Username")]),t._v(" "),e("input",{directives:[{name:"model",rawName:"v-model",value:t.testimonial.username,expression:"testimonial.username"}],staticClass:"form-control form-control-muted",attrs:{placeholder:"test"},domProps:{value:t.testimonial.username},on:{input:function(e){e.target.composing||t.$set(t.testimonial,"username",e.target.value)}}}),t._v(" "),e("p",{staticClass:"help-text small text-muted"},[t._v("\n Must be a valid user account\n ")])]),t._v(" "),e("div",{staticClass:"form-group"},[e("label",{staticClass:"font-weight-bold",attrs:{for:"form-summary"}},[t._v("Testimonial")]),t._v(" "),e("textarea",{directives:[{name:"model",rawName:"v-model",value:t.testimonial.body,expression:"testimonial.body"}],staticClass:"form-control form-control-muted",attrs:{rows:"5"},domProps:{value:t.testimonial.body},on:{input:function(e){e.target.composing||t.$set(t.testimonial,"body",e.target.value)}}}),t._v(" "),e("div",{staticClass:"d-flex justify-content-between"},[e("p",{staticClass:"help-text small text-muted mb-0"},[t._v("\n Text only, up to 500 characters\n ")]),t._v(" "),e("p",{staticClass:"help-text small text-muted mb-0"},[t._v("\n "+t._s(t.testimonial.body?t.testimonial.body.length:0)+"/500\n ")])])])]),t._v(" "),e("div",{staticClass:"card-footer"},[e("button",{staticClass:"btn btn-primary btn-block",attrs:{type:"button"},on:{click:t.saveTestimonial}},[t._v("Save Testimonial")])])]:[t._m(18)]],2)])])]):t._e()])])])])])])]):e("div",[t._m(19)])},i=[function(){var t=this,e=t._self._c;return e("div",{staticClass:"col-lg-6 col-7"},[e("p",{staticClass:"display-1 text-white d-inline-block mb-0"},[t._v("Directory")]),t._v(" "),e("p",{staticClass:"h3 text-white font-weight-light"},[t._v("Manage your server listing on pixelfed.org")])])},function(){var t=this._self._c;return t("p",[t("i",{staticClass:"far fa-exclamation-triangle fa-5x text-lighter"})])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"card card-body shadow-none border d-flex align-items-center justify-content-center py-5"},[e("p",{staticClass:"display-3 mb-1"},[t._v("Awaiting Approval")]),t._v(" "),e("p",{staticClass:"text-primary mb-1"},[t._v("Awaiting submission approval from pixelfed.org, please check back later!")]),t._v(" "),e("p",{staticClass:"small text-muted mb-0"},[t._v("If you are still waiting for approval after 24 hours please contact the Pixelfed team.")])])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"card card-body shadow-none border d-flex align-items-center justify-content-center py-5"},[e("p",{staticClass:"display-3 mb-1"},[t._v("Awaiting Update Approval")]),t._v(" "),e("p",{staticClass:"text-primary mb-1"},[t._v("Awaiting updated submission approval from pixelfed.org, please check back later!")]),t._v(" "),e("p",{staticClass:"small text-muted mb-0"},[t._v("If you are still waiting for approval after 24 hours please contact the Pixelfed team.")])])},function(){var t=this._self._c;return t("p",{staticClass:"my-3"},[t("i",{staticClass:"far fa-check-circle fa-4x text-success"})])},function(){var t=this,e=t._self._c;return e("p",{staticClass:"mt-2 mb-0"},[t._v("Your server directory listing on "),e("a",{staticClass:"font-weight-bold",attrs:{href:"#"}},[t._v("pixelfed.org")]),t._v(" is active")])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"card card-body shadow-none border d-flex align-items-center justify-content-center py-5"},[e("p",{staticClass:"display-3 mb-1"},[t._v("Oops! An unexpected error occured")]),t._v(" "),e("p",{staticClass:"text-primary mb-1"},[t._v("Ask the Pixelfed team for assistance.")])])},function(){var t=this._self._c;return t("p",{staticClass:"text-center mb-2"},[t("i",{staticClass:"far fa-exclamation-circle fa-2x"})])},function(){var t=this,e=t._self._c;return e("p",{staticClass:"form-text text-muted small mb-0"},[t._v("Must be a "),e("kbd",[t._v("JPEG")]),t._v(" or "),e("kbd",[t._v("PNG")]),t._v(" image no larger than 5MB.")])},function(){var t=this,e=t._self._c;return e("p",{staticClass:"form-text text-muted small mb-0"},[t._v("The primary language of your server, to edit this value you need to set the "),e("kbd",[t._v("APP_LOCALE")]),t._v(" .env value")])},function(){var t=this,e=t._self._c;return e("ul",{staticClass:"text-danger"},[e("li",[t._v("Admins must be active")]),t._v(" "),e("li",[t._v("Admins must have 2FA setup and enabled")])])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"card card-body bg-lighter text-center py-5"},[e("p",{staticClass:"text-light mb-1"},[e("i",{staticClass:"far fa-info-circle fa-3x"})]),t._v(" "),e("p",{staticClass:"h2 mb-0"},[t._v("0 posts selected")]),t._v(" "),e("p",{staticClass:"small mb-0"},[t._v("You can select up to 12 favourite posts by id or popularity")])])},function(){var t=this._self._c;return t("div",{staticClass:"spinner-border spinner-border-sm",attrs:{role:"status"}},[t("span",{staticClass:"sr-only"},[this._v("Loading...")])])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"col-12 col-md-6"},[e("div",{staticClass:"card card-body bg-primary"},[e("div",{staticClass:"d-flex align-items-center text-white"},[e("i",{staticClass:"far fa-info-circle mr-2"}),t._v(" "),e("p",{staticClass:"small mb-0 font-weight-bold"},[t._v("A post id is the numerical id found in post urls")])])])])},function(){var t=this._self._c;return t("div",{staticClass:"spinner-border text-primary",attrs:{role:"status"}},[t("span",{staticClass:"sr-only"},[this._v("Loading...")])])},function(){var t=this,e=t._self._c;return e("ul",{staticClass:"font-weight-bold"},[e("li",[t._v("No analytics or 3rd party trackers*")]),t._v(" "),e("li",[t._v("User data is not sold to any 3rd parties")]),t._v(" "),e("li",[t._v("Data is stored securely in accordance with industry standards")]),t._v(" "),e("li",[t._v("Admin accounts are protected with 2FA")]),t._v(" "),e("li",[t._v("Follow strict support procedures to keep your accounts safe")]),t._v(" "),e("li",[t._v("Give at least 6 months warning in the event we shut down")])])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"card-body text-center py-5"},[e("p",{staticClass:"mb-n3"},[e("i",{staticClass:"far fa-exclamation-circle fa-3x"})]),t._v(" "),e("p",{staticClass:"lead mb-0"},[t._v("No Community Guidelines have been set")])])},function(){var t=this,e=t._self._c;return e("p",{staticClass:"mb-0"},[t._v("You can manage Community Guidelines on the "),e("a",{attrs:{href:"/i/admin/settings"}},[t._v("Settings page")])])},function(){var t=this._self._c;return t("div",{staticClass:"card-body text-center"},[t("p",{staticClass:"lead"},[this._v("You can't add any more testimonials")])])},function(){var t=this._self._c;return t("div",{staticClass:"container my-5 py-5 text-center"},[t("div",{staticClass:"spinner-border text-primary",attrs:{role:"status"}},[t("span",{staticClass:"sr-only"},[this._v("Loading...")])])])}]},4448:(t,e,a)=>{"use strict";a.r(e),a.d(e,{render:()=>s,staticRenderFns:()=>i});var s=function(){var t=this,e=t._self._c;return e("div",[e("div",{staticClass:"header bg-primary pb-3 mt-n4"},[e("div",{staticClass:"container-fluid"},[e("div",{staticClass:"header-body"},[t._m(0),t._v(" "),e("div",{staticClass:"row"},[e("div",{staticClass:"col-xl-2 col-md-6"},[e("div",{staticClass:"mb-3"},[e("h5",{staticClass:"text-light text-uppercase mb-0"},[t._v("Unique Hashtags")]),t._v(" "),e("span",{staticClass:"text-white h2 font-weight-bold mb-0 human-size"},[t._v(t._s(t.prettyCount(t.stats.total_unique)))])])]),t._v(" "),e("div",{staticClass:"col-xl-2 col-md-6"},[e("div",{staticClass:"mb-3"},[e("h5",{staticClass:"text-light text-uppercase mb-0"},[t._v("Total Hashtags")]),t._v(" "),e("span",{staticClass:"text-white h2 font-weight-bold mb-0 human-size"},[t._v(t._s(t.prettyCount(t.stats.total_posts)))])])]),t._v(" "),e("div",{staticClass:"col-xl-2 col-md-6"},[e("div",{staticClass:"mb-3"},[e("h5",{staticClass:"text-light text-uppercase mb-0"},[t._v("New (past 14 days)")]),t._v(" "),e("span",{staticClass:"text-white h2 font-weight-bold mb-0 human-size"},[t._v(t._s(t.prettyCount(t.stats.added_14_days)))])])]),t._v(" "),e("div",{staticClass:"col-xl-2 col-md-6"},[e("div",{staticClass:"mb-3"},[e("h5",{staticClass:"text-light text-uppercase mb-0"},[t._v("Banned Hashtags")]),t._v(" "),e("span",{staticClass:"text-white h2 font-weight-bold mb-0 human-size"},[t._v(t._s(t.prettyCount(t.stats.total_banned)))])])]),t._v(" "),e("div",{staticClass:"col-xl-2 col-md-6"},[e("div",{staticClass:"mb-3"},[e("h5",{staticClass:"text-light text-uppercase mb-0"},[t._v("NSFW Hashtags")]),t._v(" "),e("span",{staticClass:"text-white h2 font-weight-bold mb-0 human-size"},[t._v(t._s(t.prettyCount(t.stats.total_nsfw)))])])]),t._v(" "),e("div",{staticClass:"col-xl-2 col-md-6"},[e("div",{staticClass:"mb-3"},[e("h5",{staticClass:"text-light text-uppercase mb-0"},[t._v("Clear Trending Cache")]),t._v(" "),e("button",{staticClass:"btn btn-outline-white btn-block btn-sm py-0 mt-1",on:{click:t.clearTrendingCache}},[t._v("Clear Cache")])])])])])])]),t._v(" "),t.loaded?e("div",{staticClass:"m-n2 m-lg-4"},[e("div",{staticClass:"container-fluid mt-4"},[e("div",{staticClass:"row mb-3 justify-content-between"},[e("div",{staticClass:"col-12 col-md-8"},[e("ul",{staticClass:"nav nav-pills"},[e("li",{staticClass:"nav-item"},[e("button",{class:["nav-link",{active:0==t.tabIndex}],on:{click:function(e){return t.toggleTab(0)}}},[t._v("All")])]),t._v(" "),e("li",{staticClass:"nav-item"},[e("button",{class:["nav-link",{active:1==t.tabIndex}],on:{click:function(e){return t.toggleTab(1)}}},[t._v("Trending")])]),t._v(" "),e("li",{staticClass:"nav-item"},[e("button",{class:["nav-link",{active:2==t.tabIndex}],on:{click:function(e){return t.toggleTab(2)}}},[t._v("Banned")])]),t._v(" "),e("li",{staticClass:"nav-item"},[e("button",{class:["nav-link",{active:3==t.tabIndex}],on:{click:function(e){return t.toggleTab(3)}}},[t._v("NSFW")])])])]),t._v(" "),e("div",{staticClass:"col-12 col-md-4"},[e("autocomplete",{ref:"autocomplete",attrs:{search:t.composeSearch,disabled:t.searchLoading,placeholder:"Search hashtags","aria-label":"Search hashtags","get-result-value":t.getTagResultValue},on:{submit:t.onSearchResultClick},scopedSlots:t._u([{key:"result",fn:function(a){var s=a.result,i=a.props;return[e("li",t._b({staticClass:"autocomplete-result d-flex justify-content-between align-items-center"},"li",i,!1),[e("div",{staticClass:"font-weight-bold",class:{"text-danger":s.is_banned}},[t._v("\n #"+t._s(s.name)+"\n ")]),t._v(" "),e("div",{staticClass:"small text-muted"},[t._v("\n "+t._s(t.prettyCount(s.cached_count))+" posts\n ")])])]}}])})],1)]),t._v(" "),[0,2,3].includes(this.tabIndex)?e("div",{staticClass:"table-responsive"},[e("table",{staticClass:"table table-dark"},[e("thead",{staticClass:"thead-dark"},[e("tr",[e("th",{staticClass:"cursor-pointer",attrs:{scope:"col"},domProps:{innerHTML:t._s(t.buildColumn("ID","id"))},on:{click:function(e){return t.toggleCol("id")}}}),t._v(" "),e("th",{staticClass:"cursor-pointer",attrs:{scope:"col"},domProps:{innerHTML:t._s(t.buildColumn("Hashtag","name"))},on:{click:function(e){return t.toggleCol("name")}}}),t._v(" "),e("th",{staticClass:"cursor-pointer",attrs:{scope:"col"},domProps:{innerHTML:t._s(t.buildColumn("Count","cached_count"))},on:{click:function(e){return t.toggleCol("cached_count")}}}),t._v(" "),e("th",{staticClass:"cursor-pointer",attrs:{scope:"col"},domProps:{innerHTML:t._s(t.buildColumn("Can Search","can_search"))},on:{click:function(e){return t.toggleCol("can_search")}}}),t._v(" "),e("th",{staticClass:"cursor-pointer",attrs:{scope:"col"},domProps:{innerHTML:t._s(t.buildColumn("Can Trend","can_trend"))},on:{click:function(e){return t.toggleCol("can_trend")}}}),t._v(" "),e("th",{staticClass:"cursor-pointer",attrs:{scope:"col"},domProps:{innerHTML:t._s(t.buildColumn("NSFW","is_nsfw"))},on:{click:function(e){return t.toggleCol("is_nsfw")}}}),t._v(" "),e("th",{staticClass:"cursor-pointer",attrs:{scope:"col"},domProps:{innerHTML:t._s(t.buildColumn("Banned","is_banned"))},on:{click:function(e){return t.toggleCol("is_banned")}}}),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("Created")])])]),t._v(" "),e("tbody",t._l(t.hashtags,(function(a,s){var i;return e("tr",[e("td",{staticClass:"font-weight-bold text-monospace text-muted"},[e("a",{attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.openEditHashtagModal(a,s)}}},[t._v("\n "+t._s(a.id)+"\n ")])]),t._v(" "),e("td",{staticClass:"font-weight-bold"},[t._v(t._s(a.name))]),t._v(" "),e("td",{staticClass:"font-weight-bold"},[e("a",{attrs:{href:"/i/web/hashtag/".concat(a.slug)}},[t._v("\n "+t._s(null!==(i=a.cached_count)&&void 0!==i?i:0)+"\n ")])]),t._v(" "),e("td",{staticClass:"font-weight-bold",domProps:{innerHTML:t._s(t.boolIcon(a.can_search,"text-success","text-danger"))}}),t._v(" "),e("td",{staticClass:"font-weight-bold",domProps:{innerHTML:t._s(t.boolIcon(a.can_trend,"text-success","text-danger"))}}),t._v(" "),e("td",{staticClass:"font-weight-bold",domProps:{innerHTML:t._s(t.boolIcon(a.is_nsfw,"text-danger"))}}),t._v(" "),e("td",{staticClass:"font-weight-bold",domProps:{innerHTML:t._s(t.boolIcon(a.is_banned,"text-danger"))}}),t._v(" "),e("td",{staticClass:"font-weight-bold"},[t._v(t._s(t.timeAgo(a.created_at)))])])})),0)])]):t._e(),t._v(" "),[0,2,3].includes(this.tabIndex)?e("div",{staticClass:"d-flex align-items-center justify-content-center"},[e("button",{staticClass:"btn btn-primary rounded-pill",attrs:{disabled:!t.pagination.prev},on:{click:function(e){return t.paginate("prev")}}},[t._v("\n Prev\n ")]),t._v(" "),e("button",{staticClass:"btn btn-primary rounded-pill",attrs:{disabled:!t.pagination.next},on:{click:function(e){return t.paginate("next")}}},[t._v("\n Next\n ")])]):t._e(),t._v(" "),1==this.tabIndex?e("div",{staticClass:"table-responsive"},[e("table",{staticClass:"table table-dark"},[t._m(1),t._v(" "),e("tbody",t._l(t.trendingTags,(function(a,s){var i;return e("tr",[e("td",{staticClass:"font-weight-bold text-monospace text-muted"},[e("a",{attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.openEditHashtagModal(a,s)}}},[t._v("\n "+t._s(a.id)+"\n ")])]),t._v(" "),e("td",{staticClass:"font-weight-bold"},[t._v(t._s(a.hashtag))]),t._v(" "),e("td",{staticClass:"font-weight-bold"},[e("a",{attrs:{href:"/i/web/hashtag/".concat(a.hashtag)}},[t._v("\n "+t._s(null!==(i=a.total)&&void 0!==i?i:0)+"\n ")])])])})),0)])]):t._e()])]):e("div",{staticClass:"my-5 text-center"},[e("b-spinner")],1),t._v(" "),e("b-modal",{attrs:{title:"Edit Hashtag","ok-only":!0,lazy:!0,static:!0},model:{value:t.showEditModal,callback:function(e){t.showEditModal=e},expression:"showEditModal"}},[t.editingHashtag&&t.editingHashtag.name?e("div",{staticClass:"list-group"},[e("div",{staticClass:"list-group-item d-flex align-items-center justify-content-between"},[e("div",{staticClass:"text-muted small"},[t._v("Name")]),t._v(" "),e("div",{staticClass:"font-weight-bold"},[t._v(t._s(t.editingHashtag.name))])]),t._v(" "),e("div",{staticClass:"list-group-item d-flex align-items-center justify-content-between"},[e("div",{staticClass:"text-muted small"},[t._v("Total Uses")]),t._v(" "),e("div",{staticClass:"font-weight-bold"},[t._v(t._s(t.editingHashtag.cached_count.toLocaleString("en-CA",{compactDisplay:"short"})))])]),t._v(" "),e("div",{staticClass:"list-group-item d-flex align-items-center justify-content-between"},[e("div",{staticClass:"text-muted small"},[t._v("Can Trend")]),t._v(" "),e("div",{staticClass:"mr-n2 mb-1"},[e("b-form-checkbox",{attrs:{switch:"",size:"lg"},model:{value:t.editingHashtag.can_trend,callback:function(e){t.$set(t.editingHashtag,"can_trend",e)},expression:"editingHashtag.can_trend"}})],1)]),t._v(" "),e("div",{staticClass:"list-group-item d-flex align-items-center justify-content-between"},[e("div",{staticClass:"text-muted small"},[t._v("Can Search")]),t._v(" "),e("div",{staticClass:"mr-n2 mb-1"},[e("b-form-checkbox",{attrs:{switch:"",size:"lg"},model:{value:t.editingHashtag.can_search,callback:function(e){t.$set(t.editingHashtag,"can_search",e)},expression:"editingHashtag.can_search"}})],1)]),t._v(" "),e("div",{staticClass:"list-group-item d-flex align-items-center justify-content-between"},[e("div",{staticClass:"text-muted small"},[t._v("Banned")]),t._v(" "),e("div",{staticClass:"mr-n2 mb-1"},[e("b-form-checkbox",{attrs:{switch:"",size:"lg"},model:{value:t.editingHashtag.is_banned,callback:function(e){t.$set(t.editingHashtag,"is_banned",e)},expression:"editingHashtag.is_banned"}})],1)]),t._v(" "),e("div",{staticClass:"list-group-item d-flex align-items-center justify-content-between"},[e("div",{staticClass:"text-muted small"},[t._v("NSFW")]),t._v(" "),e("div",{staticClass:"mr-n2 mb-1"},[e("b-form-checkbox",{attrs:{switch:"",size:"lg"},model:{value:t.editingHashtag.is_nsfw,callback:function(e){t.$set(t.editingHashtag,"is_nsfw",e)},expression:"editingHashtag.is_nsfw"}})],1)])]):t._e(),t._v(" "),e("transition",{attrs:{name:"fade"}},[t.editingHashtag&&t.editingHashtag.name&&t.editSaved?e("div",[e("p",{staticClass:"text-primary small font-weight-bold text-center mt-1 mb-0"},[t._v("Hashtag changes successfully saved!")])]):t._e()])],1)],1)},i=[function(){var t=this._self._c;return t("div",{staticClass:"row align-items-center py-4"},[t("div",{staticClass:"col-lg-6 col-7"},[t("p",{staticClass:"display-1 text-white d-inline-block mb-0"},[this._v("Hashtags")])])])},function(){var t=this,e=t._self._c;return e("thead",{staticClass:"thead-dark"},[e("tr",[e("th",{attrs:{scope:"col"}},[t._v("ID")]),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("Hashtag")]),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("Trending Count")])])])}]},38197:(t,e,a)=>{"use strict";a.r(e),a.d(e,{render:()=>s,staticRenderFns:()=>i});var s=function(){var t,e,a,s=this,i=s._self._c;return i("div",[i("div",{staticClass:"header bg-primary pb-3 mt-n4"},[i("div",{staticClass:"container-fluid"},[i("div",{staticClass:"header-body"},[s._m(0),s._v(" "),i("div",{staticClass:"row"},[i("div",{staticClass:"col-xl-2 col-md-6"},[i("div",{staticClass:"mb-3"},[i("h5",{staticClass:"text-light text-uppercase mb-0"},[s._v("Total Instances")]),s._v(" "),i("span",{staticClass:"text-white h2 font-weight-bold mb-0 human-size"},[s._v(s._s(s.prettyCount(s.stats.total_count)))])])]),s._v(" "),i("div",{staticClass:"col-xl-2 col-md-6"},[i("div",{staticClass:"mb-3"},[i("h5",{staticClass:"text-light text-uppercase mb-0"},[s._v("New (past 14 days)")]),s._v(" "),i("span",{staticClass:"text-white h2 font-weight-bold mb-0 human-size"},[s._v(s._s(s.prettyCount(s.stats.new_count)))])])]),s._v(" "),i("div",{staticClass:"col-xl-2 col-md-6"},[i("div",{staticClass:"mb-3"},[i("h5",{staticClass:"text-light text-uppercase mb-0"},[s._v("Banned Instances")]),s._v(" "),i("span",{staticClass:"text-white h2 font-weight-bold mb-0 human-size"},[s._v(s._s(s.prettyCount(s.stats.banned_count)))])])]),s._v(" "),i("div",{staticClass:"col-xl-2 col-md-6"},[i("div",{staticClass:"mb-3"},[i("h5",{staticClass:"text-light text-uppercase mb-0"},[s._v("NSFW Instances")]),s._v(" "),i("span",{staticClass:"text-white h2 font-weight-bold mb-0 human-size"},[s._v(s._s(s.prettyCount(s.stats.nsfw_count)))])])]),s._v(" "),i("div",{staticClass:"col-xl-2 col-md-6"},[i("div",{staticClass:"mb-3"},[i("button",{staticClass:"btn btn-outline-white btn-block btn-sm mt-1",on:{click:function(t){t.preventDefault(),s.showAddModal=!0}}},[s._v("Create New Instance")]),s._v(" "),s.showImportForm?i("div",[i("div",{staticClass:"form-group mt-3"},[i("div",{staticClass:"custom-file"},[i("input",{ref:"importInput",staticClass:"custom-file-input",attrs:{type:"file",id:"customFile"},on:{change:s.onImportUpload}}),s._v(" "),i("label",{staticClass:"custom-file-label",attrs:{for:"customFile"}},[s._v("Choose file")])])]),s._v(" "),i("p",{staticClass:"mb-0 mt-n3"},[i("a",{staticClass:"text-white font-weight-bold small",attrs:{href:"#"},on:{click:function(t){t.preventDefault(),s.showImportForm=!1}}},[s._v("Cancel")])])]):i("div",{staticClass:"d-flex mt-1"},[i("button",{staticClass:"btn btn-outline-white btn-sm mt-1",on:{click:s.openImportForm}},[s._v("Import")]),s._v(" "),i("button",{staticClass:"btn btn-outline-white btn-block btn-sm mt-1",on:{click:function(t){return s.downloadBackup()}}},[s._v("Download Backup")])])])])])])])]),s._v(" "),s.loaded?i("div",{staticClass:"m-n2 m-lg-4"},[i("div",{staticClass:"container-fluid mt-4"},[i("div",{staticClass:"row mb-3 justify-content-between"},[i("div",{staticClass:"col-12 col-md-8"},[i("ul",{staticClass:"nav nav-pills"},[i("li",{staticClass:"nav-item"},[i("button",{class:["nav-link",{active:0==s.tabIndex}],on:{click:function(t){return s.toggleTab(0)}}},[s._v("All")])]),s._v(" "),i("li",{staticClass:"nav-item"},[i("button",{class:["nav-link",{active:1==s.tabIndex}],on:{click:function(t){return s.toggleTab(1)}}},[s._v("New")])]),s._v(" "),i("li",{staticClass:"nav-item"},[i("button",{class:["nav-link",{active:2==s.tabIndex}],on:{click:function(t){return s.toggleTab(2)}}},[s._v("Banned")])]),s._v(" "),i("li",{staticClass:"nav-item"},[i("button",{class:["nav-link",{active:3==s.tabIndex}],on:{click:function(t){return s.toggleTab(3)}}},[s._v("NSFW")])]),s._v(" "),i("li",{staticClass:"nav-item"},[i("button",{class:["nav-link",{active:4==s.tabIndex}],on:{click:function(t){return s.toggleTab(4)}}},[s._v("Unlisted")])]),s._v(" "),i("li",{staticClass:"nav-item"},[i("button",{class:["nav-link",{active:5==s.tabIndex}],on:{click:function(t){return s.toggleTab(5)}}},[s._v("Most Users")])]),s._v(" "),i("li",{staticClass:"nav-item"},[i("button",{class:["nav-link",{active:6==s.tabIndex}],on:{click:function(t){return s.toggleTab(6)}}},[s._v("Most Statuses")])])])]),s._v(" "),i("div",{staticClass:"col-12 col-md-4"},[i("autocomplete",{ref:"autocomplete",attrs:{search:s.composeSearch,disabled:s.searchLoading,defaultValue:s.searchQuery,placeholder:"Search instances by domain","aria-label":"Search instances by domain","get-result-value":s.getTagResultValue},on:{submit:s.onSearchResultClick},scopedSlots:s._u([{key:"result",fn:function(t){var e=t.result,a=t.props;return[i("li",s._b({staticClass:"autocomplete-result d-flex justify-content-between align-items-center"},"li",a,!1),[i("div",{staticClass:"font-weight-bold",class:{"text-danger":e.banned}},[s._v("\n\t\t\t\t\t\t\t\t\t"+s._s(e.domain)+"\n\t\t\t\t\t\t\t\t")]),s._v(" "),i("div",{staticClass:"small text-muted"},[s._v("\n\t\t\t\t\t\t\t\t\t"+s._s(s.prettyCount(e.user_count))+" users\n\t\t\t\t\t\t\t\t")])])]}}])})],1)]),s._v(" "),i("div",{staticClass:"table-responsive"},[i("table",{staticClass:"table table-dark"},[i("thead",{staticClass:"thead-dark"},[i("tr",[i("th",{staticClass:"cursor-pointer",attrs:{scope:"col"},domProps:{innerHTML:s._s(s.buildColumn("ID","id"))},on:{click:function(t){return s.toggleCol("id")}}}),s._v(" "),i("th",{staticClass:"cursor-pointer",attrs:{scope:"col"},domProps:{innerHTML:s._s(s.buildColumn("Domain","domain"))},on:{click:function(t){return s.toggleCol("domain")}}}),s._v(" "),i("th",{staticClass:"cursor-pointer",attrs:{scope:"col"},domProps:{innerHTML:s._s(s.buildColumn("Software","software"))},on:{click:function(t){return s.toggleCol("software")}}}),s._v(" "),i("th",{staticClass:"cursor-pointer",attrs:{scope:"col"},domProps:{innerHTML:s._s(s.buildColumn("User Count","user_count"))},on:{click:function(t){return s.toggleCol("user_count")}}}),s._v(" "),i("th",{staticClass:"cursor-pointer",attrs:{scope:"col"},domProps:{innerHTML:s._s(s.buildColumn("Status Count","status_count"))},on:{click:function(t){return s.toggleCol("status_count")}}}),s._v(" "),i("th",{staticClass:"cursor-pointer",attrs:{scope:"col"},domProps:{innerHTML:s._s(s.buildColumn("Banned","banned"))},on:{click:function(t){return s.toggleCol("banned")}}}),s._v(" "),i("th",{staticClass:"cursor-pointer",attrs:{scope:"col"},domProps:{innerHTML:s._s(s.buildColumn("NSFW","auto_cw"))},on:{click:function(t){return s.toggleCol("auto_cw")}}}),s._v(" "),i("th",{staticClass:"cursor-pointer",attrs:{scope:"col"},domProps:{innerHTML:s._s(s.buildColumn("Unlisted","unlisted"))},on:{click:function(t){return s.toggleCol("unlisted")}}}),s._v(" "),i("th",{attrs:{scope:"col"}},[s._v("Created")])])]),s._v(" "),i("tbody",s._l(s.instances,(function(t,e){return i("tr",[i("td",{staticClass:"font-weight-bold text-monospace text-muted"},[i("a",{attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),s.openInstanceModal(t.id)}}},[s._v("\n\t\t\t\t\t\t\t\t\t"+s._s(t.id)+"\n\t\t\t\t\t\t\t\t")])]),s._v(" "),i("td",{staticClass:"font-weight-bold"},[s._v(s._s(t.domain))]),s._v(" "),i("td",{staticClass:"font-weight-bold"},[s._v(s._s(t.software))]),s._v(" "),i("td",{staticClass:"font-weight-bold"},[s._v(s._s(s.prettyCount(t.user_count)))]),s._v(" "),i("td",{staticClass:"font-weight-bold"},[s._v(s._s(s.prettyCount(t.status_count)))]),s._v(" "),i("td",{staticClass:"font-weight-bold",domProps:{innerHTML:s._s(s.boolIcon(t.banned,"text-danger"))}}),s._v(" "),i("td",{staticClass:"font-weight-bold",domProps:{innerHTML:s._s(s.boolIcon(t.auto_cw,"text-danger"))}}),s._v(" "),i("td",{staticClass:"font-weight-bold",domProps:{innerHTML:s._s(s.boolIcon(t.unlisted,"text-danger"))}}),s._v(" "),i("td",{staticClass:"font-weight-bold"},[s._v(s._s(s.timeAgo(t.created_at)))])])})),0)])]),s._v(" "),i("div",{staticClass:"d-flex align-items-center justify-content-center"},[i("button",{staticClass:"btn btn-primary rounded-pill",attrs:{disabled:!s.pagination.prev},on:{click:function(t){return s.paginate("prev")}}},[s._v("\n\t\t\t\t\tPrev\n\t\t\t\t")]),s._v(" "),i("button",{staticClass:"btn btn-primary rounded-pill",attrs:{disabled:!s.pagination.next},on:{click:function(t){return s.paginate("next")}}},[s._v("\n\t\t\t\t\tNext\n\t\t\t\t")])])])]):i("div",{staticClass:"my-5 text-center"},[i("b-spinner")],1),s._v(" "),i("b-modal",{attrs:{title:"View Instance","header-class":"d-flex align-items-center justify-content-center mb-0 pb-0","ok-title":"Save","ok-disabled":!s.editingInstanceChanges},on:{ok:s.saveInstanceModalChanges},scopedSlots:s._u([{key:"modal-footer",fn:function(){return[i("div",{staticClass:"w-100 d-flex justify-content-between align-items-center"},[i("div",[i("b-button",{attrs:{variant:"outline-danger",size:"sm"},on:{click:s.deleteInstanceModal}},[s._v("\n\t\t\t\t\tDelete\n\t\t\t\t")]),s._v(" "),s.refreshedModalStats?s._e():i("b-button",{attrs:{variant:"outline-primary",size:"sm"},on:{click:s.refreshModalStats}},[s._v("\n\t\t\t\t\tRefresh Stats\n\t\t\t\t")])],1),s._v(" "),i("div",[i("b-button",{attrs:{variant:"link-dark",size:"sm"},on:{click:s.onViewMoreInstance}},[s._v("\n\t\t\t\tView More\n\t\t\t ")]),s._v(" "),i("b-button",{attrs:{variant:"primary"},on:{click:s.saveInstanceModalChanges}},[s._v("\n\t\t\t\tSave\n\t\t\t ")])],1)])]},proxy:!0}]),model:{value:s.showInstanceModal,callback:function(t){s.showInstanceModal=t},expression:"showInstanceModal"}},[s.editingInstance&&s.canEditInstance?i("div",{staticClass:"list-group"},[i("div",{staticClass:"list-group-item d-flex align-items-center justify-content-between"},[i("div",{staticClass:"text-muted small"},[s._v("Domain")]),s._v(" "),i("div",{staticClass:"font-weight-bold"},[s._v(s._s(s.editingInstance.domain))])]),s._v(" "),i("div",{staticClass:"list-group-item d-flex align-items-center justify-content-between"},[s.editingInstance.software?i("div",[i("div",{staticClass:"text-muted small"},[s._v("Software")]),s._v(" "),i("div",{staticClass:"font-weight-bold"},[s._v(s._s(null!==(t=s.editingInstance.software)&&void 0!==t?t:"Unknown"))])]):s._e(),s._v(" "),i("div",[i("div",{staticClass:"text-muted small"},[s._v("Total Users")]),s._v(" "),i("div",{staticClass:"font-weight-bold"},[s._v(s._s(s.formatCount(null!==(e=s.editingInstance.user_count)&&void 0!==e?e:0)))])]),s._v(" "),i("div",[i("div",{staticClass:"text-muted small"},[s._v("Total Statuses")]),s._v(" "),i("div",{staticClass:"font-weight-bold"},[s._v(s._s(s.formatCount(null!==(a=s.editingInstance.status_count)&&void 0!==a?a:0)))])])]),s._v(" "),i("div",{staticClass:"list-group-item d-flex align-items-center justify-content-between"},[i("div",{staticClass:"text-muted small"},[s._v("Banned")]),s._v(" "),i("div",{staticClass:"mr-n2 mb-1"},[i("b-form-checkbox",{attrs:{switch:"",size:"lg"},model:{value:s.editingInstance.banned,callback:function(t){s.$set(s.editingInstance,"banned",t)},expression:"editingInstance.banned"}})],1)]),s._v(" "),i("div",{staticClass:"list-group-item d-flex align-items-center justify-content-between"},[i("div",{staticClass:"text-muted small"},[s._v("Apply CW to Media")]),s._v(" "),i("div",{staticClass:"mr-n2 mb-1"},[i("b-form-checkbox",{attrs:{switch:"",size:"lg"},model:{value:s.editingInstance.auto_cw,callback:function(t){s.$set(s.editingInstance,"auto_cw",t)},expression:"editingInstance.auto_cw"}})],1)]),s._v(" "),i("div",{staticClass:"list-group-item d-flex align-items-center justify-content-between"},[i("div",{staticClass:"text-muted small"},[s._v("Unlisted")]),s._v(" "),i("div",{staticClass:"mr-n2 mb-1"},[i("b-form-checkbox",{attrs:{switch:"",size:"lg"},model:{value:s.editingInstance.unlisted,callback:function(t){s.$set(s.editingInstance,"unlisted",t)},expression:"editingInstance.unlisted"}})],1)]),s._v(" "),i("div",{staticClass:"list-group-item d-flex justify-content-between",class:[s.instanceModalNotes?"flex-column gap-2":"align-items-center"]},[i("div",{staticClass:"text-muted small"},[s._v("Notes")]),s._v(" "),i("transition",{attrs:{name:"fade"}},[s.instanceModalNotes?i("div",{staticClass:"w-100"},[i("b-form-textarea",{attrs:{rows:"3","max-rows":"5",maxlength:"500"},model:{value:s.editingInstance.notes,callback:function(t){s.$set(s.editingInstance,"notes",t)},expression:"editingInstance.notes"}}),s._v(" "),i("p",{staticClass:"small text-muted"},[s._v(s._s(s.editingInstance.notes?s.editingInstance.notes.length:0)+"/500")])],1):i("div",{staticClass:"mb-1"},[i("a",{staticClass:"font-weight-bold small",attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),s.showModalNotes()}}},[s._v(s._s(s.editingInstance.notes?"View":"Add"))])])])],1)]):s._e()]),s._v(" "),i("b-modal",{attrs:{title:"Add Instance","ok-title":"Save","ok-disabled":s.addNewInstance.domain.length<2},on:{ok:s.saveNewInstance},model:{value:s.showAddModal,callback:function(t){s.showAddModal=t},expression:"showAddModal"}},[i("div",{staticClass:"list-group"},[i("div",{staticClass:"list-group-item d-flex align-items-center justify-content-between"},[i("div",{staticClass:"text-muted small"},[s._v("Domain")]),s._v(" "),i("div",[i("b-form-input",{attrs:{placeholder:"Add domain here"},model:{value:s.addNewInstance.domain,callback:function(t){s.$set(s.addNewInstance,"domain",t)},expression:"addNewInstance.domain"}}),s._v(" "),i("p",{staticClass:"small text-light mb-0"},[s._v("Enter a valid domain without https://")])],1)]),s._v(" "),i("div",{staticClass:"list-group-item d-flex align-items-center justify-content-between"},[i("div",{staticClass:"text-muted small"},[s._v("Banned")]),s._v(" "),i("div",{staticClass:"mr-n2 mb-1"},[i("b-form-checkbox",{attrs:{switch:"",size:"lg"},model:{value:s.addNewInstance.banned,callback:function(t){s.$set(s.addNewInstance,"banned",t)},expression:"addNewInstance.banned"}})],1)]),s._v(" "),i("div",{staticClass:"list-group-item d-flex align-items-center justify-content-between"},[i("div",{staticClass:"text-muted small"},[s._v("Apply CW to Media")]),s._v(" "),i("div",{staticClass:"mr-n2 mb-1"},[i("b-form-checkbox",{attrs:{switch:"",size:"lg"},model:{value:s.addNewInstance.auto_cw,callback:function(t){s.$set(s.addNewInstance,"auto_cw",t)},expression:"addNewInstance.auto_cw"}})],1)]),s._v(" "),i("div",{staticClass:"list-group-item d-flex align-items-center justify-content-between"},[i("div",{staticClass:"text-muted small"},[s._v("Unlisted")]),s._v(" "),i("div",{staticClass:"mr-n2 mb-1"},[i("b-form-checkbox",{attrs:{switch:"",size:"lg"},model:{value:s.addNewInstance.unlisted,callback:function(t){s.$set(s.addNewInstance,"unlisted",t)},expression:"addNewInstance.unlisted"}})],1)]),s._v(" "),i("div",{staticClass:"list-group-item d-flex flex-column gap-2 justify-content-between"},[i("div",{staticClass:"text-muted small"},[s._v("Notes")]),s._v(" "),i("div",{staticClass:"w-100"},[i("b-form-textarea",{attrs:{rows:"3","max-rows":"5",maxlength:"500",placeholder:"Add optional notes here"},model:{value:s.addNewInstance.notes,callback:function(t){s.$set(s.addNewInstance,"notes",t)},expression:"addNewInstance.notes"}}),s._v(" "),i("p",{staticClass:"small text-muted"},[s._v(s._s(s.addNewInstance.notes?s.addNewInstance.notes.length:0)+"/500")])],1)])])]),s._v(" "),i("b-modal",{attrs:{title:"Import Instance Backup","ok-title":"Import",scrollable:"","ok-disabled":!s.importData||!s.importData.banned.length&&!s.importData.unlisted.length&&!s.importData.auto_cw.length},on:{ok:s.completeImport,cancel:s.cancelImport},model:{value:s.showImportModal,callback:function(t){s.showImportModal=t},expression:"showImportModal"}},[s.showImportModal&&s.importData?i("div",[s.importData.auto_cw&&s.importData.auto_cw.length?i("div",{staticClass:"mb-5"},[i("p",{staticClass:"font-weight-bold text-center my-0"},[s._v("NSFW Instances ("+s._s(s.importData.auto_cw.length)+")")]),s._v(" "),i("p",{staticClass:"small text-center text-muted mb-1"},[s._v("Tap on an instance to remove it.")]),s._v(" "),i("div",{staticClass:"list-group"},s._l(s.importData.auto_cw,(function(t,e){return i("a",{staticClass:"list-group-item d-flex align-items-center justify-content-between",attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),s.filterImportData("auto_cw",e)}}},[s._v("\n\t\t\t\t\t\t"+s._s(t)+"\n\n\t\t\t\t\t\t"),i("span",{staticClass:"badge badge-warning"},[s._v("Auto CW")])])})),0)]):s._e(),s._v(" "),s.importData.unlisted&&s.importData.unlisted.length?i("div",{staticClass:"mb-5"},[i("p",{staticClass:"font-weight-bold text-center my-0"},[s._v("Unlisted Instances ("+s._s(s.importData.unlisted.length)+")")]),s._v(" "),i("p",{staticClass:"small text-center text-muted mb-1"},[s._v("Tap on an instance to remove it.")]),s._v(" "),i("div",{staticClass:"list-group"},s._l(s.importData.unlisted,(function(t,e){return i("a",{staticClass:"list-group-item d-flex align-items-center justify-content-between",attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),s.filterImportData("unlisted",e)}}},[s._v("\n\t\t\t\t\t\t"+s._s(t)+"\n\n\t\t\t\t\t\t"),i("span",{staticClass:"badge badge-primary"},[s._v("Unlisted")])])})),0)]):s._e(),s._v(" "),s.importData.banned&&s.importData.banned.length?i("div",{staticClass:"mb-5"},[i("p",{staticClass:"font-weight-bold text-center my-0"},[s._v("Banned Instances ("+s._s(s.importData.banned.length)+")")]),s._v(" "),i("p",{staticClass:"small text-center text-muted mb-1"},[s._v("Review instances, tap on an instance to remove it.")]),s._v(" "),i("div",{staticClass:"list-group"},s._l(s.importData.banned,(function(t,e){return i("a",{staticClass:"list-group-item d-flex align-items-center justify-content-between",attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),s.filterImportData("banned",e)}}},[s._v("\n\t\t\t\t\t\t"+s._s(t)+"\n\n\t\t\t\t\t\t"),i("span",{staticClass:"badge badge-danger"},[s._v("Banned")])])})),0)]):s._e(),s._v(" "),s.importData.banned.length||s.importData.unlisted.length||s.importData.auto_cw.length?s._e():i("div",[i("div",{staticClass:"text-center"},[i("p",[i("i",{staticClass:"far fa-check-circle fa-4x text-success"})]),s._v(" "),i("p",{staticClass:"lead"},[s._v("Nothing to import!")])])])]):s._e()])],1)},i=[function(){var t=this._self._c;return t("div",{staticClass:"row align-items-center py-4"},[t("div",{staticClass:"col-lg-6 col-7"},[t("p",{staticClass:"display-1 text-white d-inline-block mb-0"},[this._v("Instances")])])])}]},90823:(t,e,a)=>{"use strict";a.r(e),a.d(e,{render:()=>s,staticRenderFns:()=>i});var s=function(){var t=this,e=t._self._c;return e("div",[e("div",{staticClass:"header bg-primary pb-3 mt-n4"},[e("div",{staticClass:"container-fluid"},[e("div",{staticClass:"header-body"},[t._m(0),t._v(" "),e("div",{staticClass:"row"},[e("div",{staticClass:"col-12 col-sm-6 col-lg-3"},[e("div",{staticClass:"mb-3"},[e("h5",{staticClass:"text-light text-uppercase mb-0"},[t._v("Active Reports")]),t._v(" "),e("span",{staticClass:"text-white h2 font-weight-bold mb-0 human-size",attrs:{"data-toggle":"tooltip","data-placement":"bottom",title:t.stats.open+" open reports"}},[t._v("\n \t"+t._s(t.prettyCount(t.stats.open))+"\n ")])])]),t._v(" "),e("div",{staticClass:"col-12 col-sm-6 col-lg-3"},[e("div",{staticClass:"mb-3"},[e("h5",{staticClass:"text-light text-uppercase mb-0"},[t._v("Active Spam Detections")]),t._v(" "),e("span",{staticClass:"text-white h2 font-weight-bold mb-0 human-size",attrs:{"data-toggle":"tooltip","data-placement":"bottom",title:t.stats.autospam_open+" open spam detections"}},[t._v(t._s(t.prettyCount(t.stats.autospam_open)))])])]),t._v(" "),e("div",{staticClass:"col-12 col-sm-6 col-lg-3"},[e("div",{staticClass:"mb-3"},[e("h5",{staticClass:"text-light text-uppercase mb-0"},[t._v("Total Reports")]),t._v(" "),e("span",{staticClass:"text-white h2 font-weight-bold mb-0 human-size",attrs:{"data-toggle":"tooltip","data-placement":"bottom",title:t.stats.total+" total reports"}},[t._v(t._s(t.prettyCount(t.stats.total))+"\n ")])])]),t._v(" "),e("div",{staticClass:"col-12 col-sm-6 col-lg-3"},[e("div",{staticClass:"mb-3"},[e("h5",{staticClass:"text-light text-uppercase mb-0"},[t._v("Total Spam Detections")]),t._v(" "),e("span",{staticClass:"text-white h2 font-weight-bold mb-0 human-size",attrs:{"data-toggle":"tooltip","data-placement":"bottom",title:t.stats.autospam+" total spam detections"}},[t._v("\n \t"+t._s(t.prettyCount(t.stats.autospam))+"\n ")])])])])])])]),t._v(" "),t.loaded?e("div",{staticClass:"m-n2 m-lg-4"},[e("div",{staticClass:"container-fluid mt-4"},[e("div",{staticClass:"row mb-3 justify-content-between"},[e("div",{staticClass:"col-12"},[e("ul",{staticClass:"nav nav-pills"},[e("li",{staticClass:"nav-item"},[e("a",{class:["nav-link d-flex align-items-center",{active:0==t.tabIndex}],attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.toggleTab(0)}}},[e("span",[t._v("Open Reports")]),t._v(" "),t.stats.open?e("span",{staticClass:"badge badge-sm badge-floating badge-danger border-white ml-2",staticStyle:{"background-color":"red",color:"white","font-size":"11px"}},[t._v("\n \t\t"+t._s(t.prettyCount(t.stats.open))+"\n \t")]):t._e()])]),t._v(" "),e("li",{staticClass:"nav-item"},[e("a",{class:["nav-link d-flex align-items-center",{active:2==t.tabIndex}],attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.toggleTab(2)}}},[e("span",[t._v("Spam Detections")]),t._v(" "),t.stats.autospam_open?e("span",{staticClass:"badge badge-sm badge-floating badge-danger border-white ml-2",staticStyle:{"background-color":"red",color:"white","font-size":"11px"}},[t._v("\n \t\t"+t._s(t.prettyCount(t.stats.autospam_open))+"\n \t")]):t._e()])]),t._v(" "),e("li",{staticClass:"d-none d-md-block nav-item"},[e("a",{class:["nav-link d-flex align-items-center",{active:1==t.tabIndex}],attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.toggleTab(1)}}},[e("span",[t._v("Closed Reports")]),t._v(" "),t.stats.autospam_open?e("span",{staticClass:"badge badge-sm badge-floating badge-secondary border-white ml-2",staticStyle:{"font-size":"11px"}},[t._v("\n\t \t"+t._s(t.prettyCount(t.stats.closed))+"\n\t ")]):t._e()])]),t._v(" "),e("li",{staticClass:"d-none d-md-block nav-item"},[e("a",{staticClass:"nav-link d-flex align-items-center",attrs:{href:"/i/admin/reports/email-verifications"}},[e("span",[t._v("Email Verification Requests")]),t._v(" "),t.stats.email_verification_requests?e("span",{staticClass:"badge badge-sm badge-floating badge-secondary border-white ml-2",staticStyle:{"font-size":"11px"}},[t._v("\n\t \t"+t._s(t.prettyCount(t.stats.email_verification_requests))+"\n\t ")]):t._e()])]),t._v(" "),e("li",{staticClass:"d-none d-md-block nav-item"},[e("a",{staticClass:"nav-link d-flex align-items-center",attrs:{href:"/i/admin/reports/appeals"}},[e("span",[t._v("Appeal Requests")]),t._v(" "),t.stats.appeals?e("span",{staticClass:"badge badge-sm badge-floating badge-secondary border-white ml-2",staticStyle:{"font-size":"11px"}},[t._v("\n \t\t\t"+t._s(t.prettyCount(t.stats.appeals))+"\n \t")]):t._e()])])])])]),t._v(" "),[0,1].includes(this.tabIndex)?e("div",{staticClass:"table-responsive rounded"},[t.reports&&t.reports.length?e("table",{staticClass:"table table-dark"},[t._m(1),t._v(" "),e("tbody",t._l(t.reports,(function(a,s){return e("tr",[e("td",{staticClass:"font-weight-bold text-monospace text-muted align-middle"},[e("a",{attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.viewReport(a)}}},[t._v("\n "+t._s(a.id)+"\n ")])]),t._v(" "),e("td",{staticClass:"align-middle"},[e("p",{staticClass:"text-capitalize font-weight-bold mb-0",domProps:{innerHTML:t._s(t.reportLabel(a))}})]),t._v(" "),e("td",{staticClass:"align-middle"},[a.reported&&a.reported.id?e("a",{staticClass:"text-white",attrs:{href:"/i/web/profile/".concat(a.reported.id),target:"_blank"}},[e("div",{staticClass:"d-flex align-items-center",staticStyle:{gap:"0.61rem"}},[e("img",{staticStyle:{"object-fit":"cover","border-radius":"30px"},attrs:{src:a.reported.avatar,width:"30",height:"30",onerror:"this.src='/storage/avatars/default.png';this.error=null;"}}),t._v(" "),e("div",{staticClass:"d-flex flex-column"},[e("p",{staticClass:"font-weight-bold mb-0",staticStyle:{"font-size":"14px"}},[t._v("@"+t._s(a.reported.username))]),t._v(" "),e("div",{staticClass:"d-flex small text-muted mb-0",staticStyle:{gap:"0.5rem"}},[e("span",[t._v(t._s(a.reported.followers_count)+" Followers")]),t._v(" "),e("span",[t._v("·")]),t._v(" "),e("span",[t._v("Joined "+t._s(t.timeAgo(a.reported.created_at)))])])])])]):t._e()]),t._v(" "),e("td",{staticClass:"align-middle"},[e("a",{staticClass:"text-white",attrs:{href:"/i/web/profile/".concat(a.reporter.id),target:"_blank"}},[e("div",{staticClass:"d-flex align-items-center",staticStyle:{gap:"0.61rem"}},[e("img",{staticStyle:{"object-fit":"cover","border-radius":"30px"},attrs:{src:a.reporter.avatar,width:"30",height:"30",onerror:"this.src='/storage/avatars/default.png';this.error=null;"}}),t._v(" "),e("div",{staticClass:"d-flex flex-column"},[e("p",{staticClass:"font-weight-bold mb-0",staticStyle:{"font-size":"14px"}},[t._v("@"+t._s(a.reporter.username))]),t._v(" "),e("div",{staticClass:"d-flex small text-muted mb-0",staticStyle:{gap:"0.5rem"}},[e("span",[t._v(t._s(a.reporter.followers_count)+" Followers")]),t._v(" "),e("span",[t._v("·")]),t._v(" "),e("span",[t._v("Joined "+t._s(t.timeAgo(a.reporter.created_at)))])])])])])]),t._v(" "),e("td",{staticClass:"font-weight-bold align-middle"},[t._v(t._s(t.timeAgo(a.created_at)))]),t._v(" "),e("td",{staticClass:"align-middle"},[e("a",{staticClass:"btn btn-primary btn-sm",attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.viewReport(a)}}},[t._v("View")])])])})),0)]):e("div",[e("div",{staticClass:"card card-body p-5"},[e("div",{staticClass:"d-flex justify-content-between align-items-center flex-column"},[t._m(2),t._v(" "),e("p",{staticClass:"lead"},[t._v(t._s(0===t.tabIndex?"No Active Reports Found!":"No Closed Reports Found!"))])])])])]):t._e(),t._v(" "),[0,1].includes(this.tabIndex)&&t.reports.length&&(t.pagination.prev||t.pagination.next)?e("div",{staticClass:"d-flex align-items-center justify-content-center"},[e("button",{staticClass:"btn btn-primary rounded-pill",attrs:{disabled:!t.pagination.prev},on:{click:function(e){return t.paginate("prev")}}},[t._v("\n Prev\n ")]),t._v(" "),e("button",{staticClass:"btn btn-primary rounded-pill",attrs:{disabled:!t.pagination.next},on:{click:function(e){return t.paginate("next")}}},[t._v("\n Next\n ")])]):t._e(),t._v(" "),2===this.tabIndex?e("div",{staticClass:"table-responsive rounded"},[t.autospamLoaded?[t.autospam&&t.autospam.length?e("table",{staticClass:"table table-dark"},[t._m(3),t._v(" "),e("tbody",t._l(t.autospam,(function(a,s){return e("tr",[e("td",{staticClass:"font-weight-bold text-monospace text-muted align-middle"},[e("a",{attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.viewSpamReport(a)}}},[t._v("\n\t "+t._s(a.id)+"\n\t ")])]),t._v(" "),t._m(4,!0),t._v(" "),e("td",{staticClass:"align-middle"},[a.status&&a.status.account?e("a",{staticClass:"text-white",attrs:{href:"/i/web/profile/".concat(a.status.account.id),target:"_blank"}},[e("div",{staticClass:"d-flex align-items-center",staticStyle:{gap:"0.61rem"}},[e("img",{staticStyle:{"object-fit":"cover","border-radius":"30px"},attrs:{src:a.status.account.avatar,width:"30",height:"30",onerror:"this.src='/storage/avatars/default.png';this.error=null;"}}),t._v(" "),e("div",{staticClass:"d-flex flex-column"},[e("p",{staticClass:"font-weight-bold mb-0",staticStyle:{"font-size":"14px"}},[t._v("@"+t._s(a.status.account.username))]),t._v(" "),e("div",{staticClass:"d-flex small text-muted mb-0",staticStyle:{gap:"0.5rem"}},[e("span",[t._v(t._s(a.status.account.followers_count)+" Followers")]),t._v(" "),e("span",[t._v("·")]),t._v(" "),e("span",[t._v("Joined "+t._s(t.timeAgo(a.status.account.created_at)))])])])])]):t._e()]),t._v(" "),e("td",{staticClass:"font-weight-bold align-middle"},[t._v(t._s(t.timeAgo(a.created_at)))]),t._v(" "),e("td",{staticClass:"align-middle"},[e("a",{staticClass:"btn btn-primary btn-sm",attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.viewSpamReport(a)}}},[t._v("View")])])])})),0)]):e("div",[t._m(5)])]:e("div",{staticClass:"d-flex align-items-center justify-content-center",staticStyle:{"min-height":"300px"}},[e("b-spinner")],1)],2):t._e(),t._v(" "),2===this.tabIndex&&t.autospamLoaded&&t.autospam&&t.autospam.length?e("div",{staticClass:"d-flex align-items-center justify-content-center"},[e("button",{staticClass:"btn btn-primary rounded-pill",attrs:{disabled:!t.autospamPagination.prev},on:{click:function(e){return t.autospamPaginate("prev")}}},[t._v("\n Prev\n ")]),t._v(" "),e("button",{staticClass:"btn btn-primary rounded-pill",attrs:{disabled:!t.autospamPagination.next},on:{click:function(e){return t.autospamPaginate("next")}}},[t._v("\n Next\n ")])]):t._e()])]):e("div",{staticClass:"my-5 text-center"},[e("b-spinner")],1),t._v(" "),e("b-modal",{attrs:{title:0===t.tabIndex?"View Report":"Viewing Closed Report","ok-only":!0,"ok-title":"Close","ok-variant":"outline-primary"},model:{value:t.showReportModal,callback:function(e){t.showReportModal=e},expression:"showReportModal"}},[t.viewingReportLoading?e("div",{staticClass:"d-flex align-items-center justify-content-center"},[e("b-spinner")],1):[t.viewingReport?e("div",{staticClass:"list-group"},[e("div",{staticClass:"list-group-item d-flex align-items-center justify-content-between"},[e("div",{staticClass:"text-muted small"},[t._v("Type")]),t._v(" "),e("div",{staticClass:"font-weight-bold text-capitalize",domProps:{innerHTML:t._s(t.reportLabel(t.viewingReport))}})]),t._v(" "),t.viewingReport.admin_seen_at?e("div",{staticClass:"list-group-item d-flex align-items-center justify-content-between"},[e("div",{staticClass:"text-muted small"},[t._v("Report Closed")]),t._v(" "),e("div",{staticClass:"font-weight-bold text-capitalize"},[t._v(t._s(t.formatDate(t.viewingReport.admin_seen_at)))])]):t._e(),t._v(" "),t.viewingReport.reporter_message?e("div",{staticClass:"list-group-item d-flex flex-column",staticStyle:{gap:"10px"}},[e("div",{staticClass:"text-muted small"},[t._v("Message")]),t._v(" "),e("p",{staticClass:"mb-0 read-more",staticStyle:{"font-size":"12px","overflow-y":"hidden"}},[t._v(t._s(t.viewingReport.reporter_message))])]):t._e()]):t._e(),t._v(" "),e("div",{staticClass:"list-group list-group-horizontal mt-3"},[t.viewingReport&&t.viewingReport.reported?e("div",{staticClass:"list-group-item d-flex align-items-center justify-content-between flex-column flex-grow-1",staticStyle:{gap:"0.4rem"}},[e("div",{staticClass:"text-muted small font-weight-bold mt-n1"},[t._v("Reported Account")]),t._v(" "),t.viewingReport.reported&&t.viewingReport.reported.id?e("a",{staticClass:"text-primary",attrs:{href:"/i/web/profile/".concat(t.viewingReport.reported.id),target:"_blank"}},[e("div",{staticClass:"d-flex align-items-center",staticStyle:{gap:"0.61rem"}},[e("img",{staticStyle:{"object-fit":"cover","border-radius":"30px"},attrs:{src:t.viewingReport.reported.avatar,width:"30",height:"30",onerror:"this.src='/storage/avatars/default.png';this.error=null;"}}),t._v(" "),e("div",{staticClass:"d-flex flex-column"},[e("p",{staticClass:"font-weight-bold mb-0 text-break",class:[t.viewingReport.reported.is_admin?"text-danger":""],staticStyle:{"font-size":"12px","max-width":"140px","line-height":"16px"}},[t._v("@"+t._s(t.viewingReport.reported.acct))]),t._v(" "),e("div",{staticClass:"d-flex text-muted mb-0",staticStyle:{"font-size":"10px",gap:"0.5rem"}},[e("span",[t._v(t._s(t.viewingReport.reported.followers_count)+" Followers")]),t._v(" "),e("span",[t._v("·")]),t._v(" "),e("span",[t._v("Joined "+t._s(t.timeAgo(t.viewingReport.reported.created_at)))])])])])]):t._e()]):t._e(),t._v(" "),t.viewingReport&&t.viewingReport.reporter?e("div",{staticClass:"list-group-item d-flex align-items-center justify-content-between flex-column flex-grow-1",staticStyle:{gap:"0.4rem"}},[e("div",{staticClass:"text-muted small font-weight-bold mt-n1"},[t._v("Reporter Account")]),t._v(" "),t.viewingReport.reporter&&t.viewingReport.reporter.id?e("a",{staticClass:"text-primary",attrs:{href:"/i/web/profile/".concat(t.viewingReport.reporter.id),target:"_blank"}},[e("div",{staticClass:"d-flex align-items-center",staticStyle:{gap:"0.61rem"}},[e("img",{staticStyle:{"object-fit":"cover","border-radius":"30px"},attrs:{src:t.viewingReport.reporter.avatar,width:"30",height:"30",onerror:"this.src='/storage/avatars/default.png';this.error=null;"}}),t._v(" "),e("div",{staticClass:"d-flex flex-column"},[e("p",{staticClass:"font-weight-bold mb-0 text-break",staticStyle:{"font-size":"12px","max-width":"140px","line-height":"16px"}},[t._v("@"+t._s(t.viewingReport.reporter.acct))]),t._v(" "),e("div",{staticClass:"d-flex text-muted mb-0",staticStyle:{"font-size":"10px",gap:"0.5rem"}},[e("span",[t._v(t._s(t.viewingReport.reporter.followers_count)+" Followers")]),t._v(" "),e("span",[t._v("·")]),t._v(" "),e("span",[t._v("Joined "+t._s(t.timeAgo(t.viewingReport.reporter.created_at)))])])])])]):t._e()]):t._e()]),t._v(" "),t.viewingReport&&"App\\Status"===t.viewingReport.object_type&&t.viewingReport.status?e("div",{staticClass:"list-group mt-3"},[t.viewingReport&&t.viewingReport.status&&t.viewingReport.status.media_attachments.length?e("div",{staticClass:"list-group-item d-flex flex-column flex-grow-1",staticStyle:{gap:"0.4rem"}},[e("div",{staticClass:"d-flex justify-content-between mt-n1 text-muted small font-weight-bold"},[e("div",[t._v("Reported Post")]),t._v(" "),e("a",{staticClass:"font-weight-bold",attrs:{href:t.viewingReport.status.url,target:"_blank"}},[t._v("View")])]),t._v(" "),"image"===t.viewingReport.status.media_attachments[0].type?e("img",{staticClass:"rounded",staticStyle:{"object-fit":"cover"},attrs:{src:t.viewingReport.status.media_attachments[0].url,height:"140",onerror:"this.src='/storage/no-preview.png';this.error=null;"}}):"video"===t.viewingReport.status.media_attachments[0].type?e("video",{attrs:{height:"140",controls:"",src:t.viewingReport.status.media_attachments[0].url,onerror:"this.src='/storage/no-preview.png';this.onerror=null;"}}):t._e()]):t._e(),t._v(" "),t.viewingReport&&t.viewingReport.status?e("div",{staticClass:"list-group-item d-flex flex-column flex-grow-1",staticStyle:{gap:"0.4rem"}},[e("div",{staticClass:"d-flex justify-content-between mt-n1 text-muted small font-weight-bold"},[e("div",[t._v("Reported Post Caption")]),t._v(" "),e("a",{staticClass:"font-weight-bold",attrs:{href:t.viewingReport.status.url,target:"_blank"}},[t._v("View")])]),t._v(" "),e("p",{staticClass:"mb-0 read-more",staticStyle:{"font-size":"12px","overflow-y":"hidden"}},[t._v(t._s(t.viewingReport.status.content_text))])]):t._e()]):t.viewingReport&&"App\\Story"===t.viewingReport.object_type&&t.viewingReport.story?e("div",{staticClass:"list-group mt-3"},[t.viewingReport&&t.viewingReport.story?e("div",{staticClass:"list-group-item d-flex flex-column flex-grow-1",staticStyle:{gap:"0.4rem"}},[e("div",{staticClass:"d-flex justify-content-between mt-n1 text-muted small font-weight-bold"},[e("div",[t._v("Reported Story")]),t._v(" "),e("a",{staticClass:"font-weight-bold",attrs:{href:t.viewingReport.story.url,target:"_blank"}},[t._v("View")])]),t._v(" "),"photo"===t.viewingReport.story.type?e("img",{staticClass:"rounded",staticStyle:{"object-fit":"cover"},attrs:{src:t.viewingReport.story.media_src,height:"140",onerror:"this.src='/storage/no-preview.png';this.error=null;"}}):"video"===t.viewingReport.story.type?e("video",{attrs:{height:"140",controls:"",src:t.viewingReport.story.media_src,onerror:"this.src='/storage/no-preview.png';this.onerror=null;"}}):t._e()]):t._e()]):t._e(),t._v(" "),t.viewingReport&&null===t.viewingReport.admin_seen_at?e("div",{staticClass:"mt-4"},[t.viewingReport&&"App\\Profile"===t.viewingReport.object_type?e("div",[e("button",{staticClass:"btn btn-dark btn-block rounded-pill",on:{click:function(e){return t.handleAction("profile","ignore")}}},[t._v("Ignore Report")]),t._v(" "),t.viewingReport.reported&&t.viewingReport.reported.id&&!t.viewingReport.reported.is_admin?e("hr",{staticClass:"mt-3 mb-1"}):t._e(),t._v(" "),t.viewingReport.reported&&t.viewingReport.reported.id&&!t.viewingReport.reported.is_admin?e("div",{staticClass:"d-flex flex-row mt-2",staticStyle:{gap:"0.3rem"}},[e("button",{staticClass:"btn btn-outline-danger btn-block btn-sm rounded-pill mt-0",on:{click:function(e){return t.handleAction("profile","nsfw")}}},[t._v("\n\t\t \t\t\t\tMark all Posts NSFW\n\t\t \t\t\t")]),t._v(" "),e("button",{staticClass:"btn btn-outline-danger btn-block btn-sm rounded-pill mt-0",on:{click:function(e){return t.handleAction("profile","unlist")}}},[t._v("\n\t\t \t\t\t\tUnlist all Posts\n\t\t \t\t\t")])]):t._e(),t._v(" "),t.viewingReport.reported&&t.viewingReport.reported.id&&!t.viewingReport.reported.is_admin?e("button",{staticClass:"btn btn-outline-danger btn-block btn-sm rounded-pill mt-2",on:{click:function(e){return t.handleAction("profile","delete")}}},[t._v("\n\t\t \t\t\tDelete Profile\n\t\t \t\t")]):t._e()]):t.viewingReport&&"App\\Status"===t.viewingReport.object_type?e("div",[e("button",{staticClass:"btn btn-dark btn-block rounded-pill",on:{click:function(e){return t.handleAction("post","ignore")}}},[t._v("Ignore Report")]),t._v(" "),t.viewingReport&&t.viewingReport.reported&&!t.viewingReport.reported.is_admin?e("hr",{staticClass:"mt-3 mb-1"}):t._e(),t._v(" "),t.viewingReport&&t.viewingReport.reported&&!t.viewingReport.reported.is_admin?e("div",{staticClass:"d-flex flex-row mt-2",staticStyle:{gap:"0.3rem"}},[e("button",{staticClass:"btn btn-outline-danger btn-block btn-sm rounded-pill mt-0",on:{click:function(e){return t.handleAction("post","nsfw")}}},[t._v("Mark Post NSFW")]),t._v(" "),"public"===t.viewingReport.status.visibility?e("button",{staticClass:"btn btn-outline-danger btn-block btn-sm rounded-pill mt-0",on:{click:function(e){return t.handleAction("post","unlist")}}},[t._v("Unlist Post")]):"unlisted"===t.viewingReport.status.visibility?e("button",{staticClass:"btn btn-outline-danger btn-block btn-sm rounded-pill mt-0",on:{click:function(e){return t.handleAction("post","private")}}},[t._v("Make Post Private")]):t._e()]):t._e(),t._v(" "),t.viewingReport&&t.viewingReport.reported&&!t.viewingReport.reported.is_admin?e("div",{staticClass:"d-flex flex-row mt-2",staticStyle:{gap:"0.3rem"}},[e("button",{staticClass:"btn btn-outline-danger btn-block btn-sm rounded-pill mt-0",on:{click:function(e){return t.handleAction("profile","nsfw")}}},[t._v("Make all NSFW")]),t._v(" "),e("button",{staticClass:"btn btn-outline-danger btn-block btn-sm rounded-pill mt-0",on:{click:function(e){return t.handleAction("profile","unlist")}}},[t._v("Make all Unlisted")]),t._v(" "),e("button",{staticClass:"btn btn-outline-danger btn-block btn-sm rounded-pill mt-0",on:{click:function(e){return t.handleAction("profile","private")}}},[t._v("Make all Private")])]):t._e(),t._v(" "),t.viewingReport&&t.viewingReport.reported&&!t.viewingReport.reported.is_admin?e("div",[e("hr",{staticClass:"my-2"}),t._v(" "),e("div",{staticClass:"d-flex flex-row mt-2",staticStyle:{gap:"0.3rem"}},[e("button",{staticClass:"btn btn-outline-danger btn-block btn-sm rounded-pill mt-0",on:{click:function(e){return t.handleAction("post","delete")}}},[t._v("Delete Post")]),t._v(" "),e("button",{staticClass:"btn btn-outline-danger btn-block btn-sm rounded-pill mt-0",on:{click:function(e){return t.handleAction("profile","delete")}}},[t._v("Delete Account")])])]):t._e()]):t.viewingReport&&"App\\Story"===t.viewingReport.object_type?e("div",[e("button",{staticClass:"btn btn-dark btn-block rounded-pill",on:{click:function(e){return t.handleAction("story","ignore")}}},[t._v("Ignore Report")]),t._v(" "),t.viewingReport&&t.viewingReport.reported&&!t.viewingReport.reported.is_admin?e("hr",{staticClass:"mt-3 mb-1"}):t._e(),t._v(" "),t.viewingReport&&t.viewingReport.reported&&!t.viewingReport.reported.is_admin?e("div",[e("div",{staticClass:"d-flex flex-row mt-2",staticStyle:{gap:"0.3rem"}},[e("button",{staticClass:"btn btn-danger btn-block rounded-pill mt-0",on:{click:function(e){return t.handleAction("story","delete")}}},[t._v("Delete Story")]),t._v(" "),e("button",{staticClass:"btn btn-outline-danger btn-block rounded-pill mt-0",on:{click:function(e){return t.handleAction("story","delete-all")}}},[t._v("Delete All Stories")])])]):t._e(),t._v(" "),t.viewingReport&&t.viewingReport.reported&&!t.viewingReport.reported.is_admin?e("div",[e("hr",{staticClass:"my-2"}),t._v(" "),e("div",{staticClass:"d-flex flex-row mt-2",staticStyle:{gap:"0.3rem"}},[e("button",{staticClass:"btn btn-outline-danger btn-sm btn-block rounded-pill mt-0",on:{click:function(e){return t.handleAction("profile","delete")}}},[t._v("Delete Account")])])]):t._e()]):t._e()]):t._e()]],2),t._v(" "),e("b-modal",{attrs:{title:"Potential Spam Post Detected","ok-only":!0,"ok-title":"Close","ok-variant":"outline-primary"},model:{value:t.showSpamReportModal,callback:function(e){t.showSpamReportModal=e},expression:"showSpamReportModal"}},[t.viewingSpamReportLoading?e("div",{staticClass:"d-flex align-items-center justify-content-center"},[e("b-spinner")],1):[e("div",{staticClass:"list-group list-group-horizontal mt-3"},[t.viewingSpamReport&&t.viewingSpamReport.status&&t.viewingSpamReport.status.account?e("div",{staticClass:"list-group-item d-flex align-items-center justify-content-between flex-column flex-grow-1",staticStyle:{gap:"0.4rem"}},[e("div",{staticClass:"text-muted small font-weight-bold mt-n1"},[t._v("Reported Account")]),t._v(" "),t.viewingSpamReport.status.account&&t.viewingSpamReport.status.account.id?e("a",{staticClass:"text-primary",attrs:{href:"/i/web/profile/".concat(t.viewingSpamReport.status.account.id),target:"_blank"}},[e("div",{staticClass:"d-flex align-items-center",staticStyle:{gap:"0.61rem"}},[e("img",{staticStyle:{"object-fit":"cover","border-radius":"30px"},attrs:{src:t.viewingSpamReport.status.account.avatar,width:"30",height:"30",onerror:"this.src='/storage/avatars/default.png';this.error=null;"}}),t._v(" "),e("div",{staticClass:"d-flex flex-column"},[e("p",{staticClass:"font-weight-bold mb-0 text-break",class:[t.viewingSpamReport.status.account.is_admin?"text-danger":""],staticStyle:{"font-size":"12px","max-width":"140px","line-height":"16px"}},[t._v("@"+t._s(t.viewingSpamReport.status.account.acct))]),t._v(" "),e("div",{staticClass:"d-flex text-muted mb-0",staticStyle:{"font-size":"10px",gap:"0.5rem"}},[e("span",[t._v(t._s(t.viewingSpamReport.status.account.followers_count)+" Followers")]),t._v(" "),e("span",[t._v("·")]),t._v(" "),e("span",[t._v("Joined "+t._s(t.timeAgo(t.viewingSpamReport.status.account.created_at)))])])])])]):t._e()]):t._e()]),t._v(" "),t.viewingSpamReport&&t.viewingSpamReport.status?e("div",{staticClass:"list-group mt-3"},[t.viewingSpamReport&&t.viewingSpamReport.status&&t.viewingSpamReport.status.media_attachments.length?e("div",{staticClass:"list-group-item d-flex flex-column flex-grow-1",staticStyle:{gap:"0.4rem"}},[e("div",{staticClass:"d-flex justify-content-between mt-n1 text-muted small font-weight-bold"},[e("div",[t._v("Reported Post")]),t._v(" "),e("a",{staticClass:"font-weight-bold",attrs:{href:t.viewingSpamReport.status.url,target:"_blank"}},[t._v("View")])]),t._v(" "),"image"===t.viewingSpamReport.status.media_attachments[0].type?e("img",{staticClass:"rounded",staticStyle:{"object-fit":"cover"},attrs:{src:t.viewingSpamReport.status.media_attachments[0].url,height:"140",onerror:"this.src='/storage/no-preview.png';this.error=null;"}}):"video"===t.viewingSpamReport.status.media_attachments[0].type?e("video",{attrs:{height:"140",controls:"",src:t.viewingSpamReport.status.media_attachments[0].url,onerror:"this.src='/storage/no-preview.png';this.onerror=null;"}}):t._e()]):t._e(),t._v(" "),t.viewingSpamReport&&t.viewingSpamReport.status&&t.viewingSpamReport.status.content_text&&t.viewingSpamReport.status.content_text.length?e("div",{staticClass:"list-group-item d-flex flex-column flex-grow-1",staticStyle:{gap:"0.4rem"}},[e("div",{staticClass:"d-flex justify-content-between mt-n1 text-muted small font-weight-bold"},[e("div",[t._v("Reported Post Caption")]),t._v(" "),e("a",{staticClass:"font-weight-bold",attrs:{href:t.viewingSpamReport.status.url,target:"_blank"}},[t._v("View")])]),t._v(" "),e("p",{staticClass:"mb-0 read-more",staticStyle:{"font-size":"12px","overflow-y":"hidden"}},[t._v(t._s(t.viewingSpamReport.status.content_text))])]):t._e()]):t._e(),t._v(" "),e("div",{staticClass:"mt-4"},[e("div",[e("button",{staticClass:"btn btn-dark btn-block rounded-pill",attrs:{type:"button"},on:{click:function(e){return t.handleSpamAction("mark-read")}}},[t._v("\n\t\t \t\t\tMark as Read\n\t\t \t\t")]),t._v(" "),e("button",{staticClass:"btn btn-danger btn-block rounded-pill",attrs:{type:"button"},on:{click:function(e){return t.handleSpamAction("mark-not-spam")}}},[t._v("\n\t\t \t\t\tMark As Not Spam\n\t\t \t\t")]),t._v(" "),e("hr",{staticClass:"mt-3 mb-1"}),t._v(" "),e("div",{staticClass:"d-flex flex-row mt-2",staticStyle:{gap:"0.3rem"}},[e("button",{staticClass:"btn btn-dark btn-block btn-sm rounded-pill mt-0",attrs:{type:"button"},on:{click:function(e){return t.handleSpamAction("mark-all-read")}}},[t._v("\n\t\t \t\t\t\tMark All As Read\n\t\t \t\t\t")]),t._v(" "),e("button",{staticClass:"btn btn-dark btn-block btn-sm rounded-pill mt-0",attrs:{type:"button"},on:{click:function(e){return t.handleSpamAction("mark-all-not-spam")}}},[t._v("\n\t\t \t\t\t\tMark All As Not Spam\n\t\t \t\t\t")])]),t._v(" "),e("div",[e("hr",{staticClass:"my-2"}),t._v(" "),e("div",{staticClass:"d-flex flex-row mt-2",staticStyle:{gap:"0.3rem"}},[e("button",{staticClass:"btn btn-outline-danger btn-block btn-sm rounded-pill mt-0",attrs:{type:"button"},on:{click:function(e){return t.handleSpamAction("delete-profile")}}},[t._v("\n\t\t\t\t\t\t\t\tDelete Account\n\t\t\t\t\t\t\t")])])])])])]],2)],1)},i=[function(){var t=this._self._c;return t("div",{staticClass:"row align-items-center py-4"},[t("div",{staticClass:"col-lg-6 col-7"},[t("p",{staticClass:"display-1 text-white d-inline-block mb-0"},[this._v("Moderation")])])])},function(){var t=this,e=t._self._c;return e("thead",{staticClass:"thead-dark"},[e("tr",[e("th",{attrs:{scope:"col"}},[t._v("ID")]),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("Report")]),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("Reported Account")]),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("Reported By")]),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("Created")]),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("View Report")])])])},function(){var t=this._self._c;return t("p",{staticClass:"mt-3 mb-0"},[t("i",{staticClass:"far fa-check-circle fa-5x text-success"})])},function(){var t=this,e=t._self._c;return e("thead",{staticClass:"thead-dark"},[e("tr",[e("th",{attrs:{scope:"col"}},[t._v("ID")]),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("Report")]),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("Reported Account")]),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("Created")]),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("View Report")])])])},function(){var t=this._self._c;return t("td",{staticClass:"align-middle"},[t("p",{staticClass:"text-capitalize font-weight-bold mb-0"},[this._v("Spam Post")])])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"card card-body p-5"},[e("div",{staticClass:"d-flex justify-content-between align-items-center flex-column"},[e("p",{staticClass:"mt-3 mb-0"},[e("i",{staticClass:"far fa-check-circle fa-5x text-success"})]),t._v(" "),e("p",{staticClass:"lead"},[t._v("No Spam Reports Found!")])])])}]},64721:(t,e,a)=>{a(19755);a(99751),window._=a(96486),window.Popper=a(28981).default,window.pixelfed=window.pixelfed||{},window.$=a(19755),a(43734),window.axios=a(9669),window.axios.defaults.headers.common["X-Requested-With"]="XMLHttpRequest",a(90717),window.filesize=a(42317),window.Cookies=a(36808),a(20154),a(80981),window.Chart=a(17757),a(11984),Chart.defaults.global.defaultFontFamily="-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif",Array.from(document.querySelectorAll(".pagination .page-link")).filter((function(t){return"« Previous"===t.textContent||"Next »"===t.textContent})).forEach((function(t){return t.textContent="Next »"===t.textContent?"›":"‹"})),Vue.component("admin-autospam",a(52199).default),Vue.component("admin-directory",a(78877).default),Vue.component("admin-reports",a(28515).default),Vue.component("instances-component",a(10670).default),Vue.component("hashtag-component",a(90882).default)},11984:(t,e,a)=>{"use strict";var s=a(19755);function i(t){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}!function(){function t(){s(".sidenav-toggler").addClass("active"),s(".sidenav-toggler").data("action","sidenav-unpin"),s("body").removeClass("g-sidenav-hidden").addClass("g-sidenav-show g-sidenav-pinned"),s("body").append('
1&&(o+=''+i+""),o+=''+a+n+s+""}}}(t,a),a.update()}return window.Chart&&r(Chart,(t={defaults:{global:{responsive:!0,maintainAspectRatio:!1,defaultColor:o.gray[600],defaultFontColor:o.gray[600],defaultFontFamily:n.base,defaultFontSize:13,layout:{padding:0},legend:{display:!1,position:"bottom",labels:{usePointStyle:!0,padding:16}},elements:{point:{radius:0,backgroundColor:o.theme.primary},line:{tension:.4,borderWidth:4,borderColor:o.theme.primary,backgroundColor:o.transparent,borderCapStyle:"rounded"},rectangle:{backgroundColor:o.theme.warning},arc:{backgroundColor:o.theme.primary,borderColor:o.white,borderWidth:4}},tooltips:{enabled:!0,mode:"index",intersect:!1}},doughnut:{cutoutPercentage:83,legendCallback:function(t){var e=t.data,a="";return e.labels.forEach((function(t,s){var i=e.datasets[0].backgroundColor[s];a+='',a+='',a+=t,a+=""})),a}}}},Chart.scaleService.updateScaleDefaults("linear",{gridLines:{borderDash:[2],borderDashOffset:[2],color:o.gray[300],drawBorder:!1,drawTicks:!1,drawOnChartArea:!0,zeroLineWidth:0,zeroLineColor:"rgba(0,0,0,0)",zeroLineBorderDash:[2],zeroLineBorderDashOffset:[2]},ticks:{beginAtZero:!0,padding:10,callback:function(t){if(!(t%10))return t}}}),Chart.scaleService.updateScaleDefaults("category",{gridLines:{drawBorder:!1,drawOnChartArea:!1,drawTicks:!1},ticks:{padding:20},maxBarThickness:10}),t)),e.on({change:function(){var t=s(this);t.is("[data-add]")&&d(t)},click:function(){var t=s(this);t.is("[data-update]")&&u(t)}}),{colors:o,fonts:n,mode:a}}(),_=((r=s(o=".btn-icon-clipboard")).length&&((n=r).tooltip().on("mouseleave",(function(){n.tooltip("hide")})),new ClipboardJS(o).on("success",(function(t){s(t.trigger).attr("title","Copied!").tooltip("_fixTitle").tooltip("show").attr("title","Copy to clipboard").tooltip("_fixTitle"),t.clearSelection()}))),l=s(".navbar-nav, .navbar-nav .nav"),c=s(".navbar .collapse"),d=s(".navbar .dropdown"),c.on({"show.bs.collapse":function(){!function(t){t.closest(l).find(c).not(t).collapse("hide")}(s(this))}}),d.on({"hide.bs.dropdown":function(){!function(t){var e=t.find(".dropdown-menu");e.addClass("close"),setTimeout((function(){e.removeClass("close")}),200)}(s(this))}}),function(){s(".navbar-nav");var t=s(".navbar .navbar-custom-collapse");t.length&&(t.on({"hide.bs.collapse":function(){!function(t){t.addClass("collapsing-out")}(t)}}),t.on({"hidden.bs.collapse":function(){!function(t){t.removeClass("collapsing-out")}(t)}}));var e=0;s(".sidenav-toggler").click((function(){if(1==e)s("body").removeClass("nav-open"),e=0,s(".bodyClick").remove();else{s('
').appendTo("body").click((function(){s("body").removeClass("nav-open"),e=0,s(".bodyClick").remove()})),s("body").addClass("nav-open"),e=1}}))}(),u=s('[data-toggle="popover"]'),p="",u.length&&u.each((function(){!function(t){t.data("color")&&(p="popover-"+t.data("color"));var e={trigger:"focus",template:''};t.popover(e)}(s(this))})),function(){var t=s(".scroll-me, [data-scroll-to], .toc-entry a");function e(t){var e=t.attr("href"),a=t.data("scroll-to-offset")?t.data("scroll-to-offset"):0,i={scrollTop:s(e).offset().top-a};s("html, body").stop(!0,!0).animate(i,600),event.preventDefault()}t.length&&t.on("click",(function(t){e(s(this))}))}(),(m=s('[data-toggle="tooltip"]')).length&&m.tooltip(),(v=s(".form-control")).length&&function(t){t.on("focus blur",(function(t){s(this).parents(".form-group").toggleClass("focused","focus"===t.type)})).trigger("blur")}(v),(f=s("#chart-bars")).length&&function(t){var e=new Chart(t,{type:"bar",data:{labels:["Jul","Aug","Sep","Oct","Nov","Dec"],datasets:[{label:"Sales",data:[25,20,30,22,17,29]}]}});t.data("chart",e)}(f),function(){var t=s("#c1-dark");t.length&&function(t){var e=new Chart(t,{type:"line",options:{scales:{yAxes:[{gridLines:{lineWidth:1,color:b.colors.gray[900],zeroLineColor:b.colors.gray[900]},ticks:{callback:function(t){if(!(t%10))return t}}}]},tooltips:{callbacks:{label:function(t,e){var a=e.datasets[t.datasetIndex].label||"",s=t.yLabel,i="";return e.datasets.length>1&&(i+=a),i+(s+" posts")}}}},data:{labels:["7","6","5","4","3","2","1"],datasets:[{label:"",data:s(".posts-this-week").data("update").data.datasets[0].data}]}});t.data("chart",e)}(t)}(),(h=s(".datepicker")).length&&h.each((function(){!function(t){t.datepicker({disableTouchKeyboard:!0,autoclose:!1})}(s(this))})),function(){if(s(".input-slider-container")[0]&&s(".input-slider-container").each((function(){var t=s(this).find(".input-slider"),e=t.attr("id"),a=t.data("range-value-min"),i=t.data("range-value-max"),n=s(this).find(".range-slider-value"),o=n.attr("id"),r=n.data("range-value-low"),l=document.getElementById(e),c=document.getElementById(o);_.create(l,{start:[parseInt(r)],connect:[!0,!1],range:{min:[parseInt(a)],max:[parseInt(i)]}}),l.noUiSlider.on("update",(function(t,e){c.textContent=t[e]}))})),s("#input-slider-range")[0]){var t=document.getElementById("input-slider-range"),e=document.getElementById("input-slider-range-value-low"),a=document.getElementById("input-slider-range-value-high"),i=[e,a];_.create(t,{start:[parseInt(e.getAttribute("data-range-value-low")),parseInt(a.getAttribute("data-range-value-high"))],connect:!0,range:{min:parseInt(t.getAttribute("data-range-value-min")),max:parseInt(t.getAttribute("data-range-value-max"))}}),t.noUiSlider.on("update",(function(t,e){i[e].textContent=t[e]}))}}());(g=s(".scrollbar-inner")).length&&g.scrollbar().scrollLock()},99751:function(){function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}!function(){var e="object"===("undefined"==typeof window?"undefined":t(window))?window:"object"===("undefined"==typeof self?"undefined":t(self))?self:this,a=e.BlobBuilder||e.WebKitBlobBuilder||e.MSBlobBuilder||e.MozBlobBuilder;e.URL=e.URL||e.webkitURL||function(t,e){return(e=document.createElement("a")).href=t,e};var s=e.Blob,i=URL.createObjectURL,n=URL.revokeObjectURL,o=e.Symbol&&e.Symbol.toStringTag,r=!1,c=!1,d=!!e.ArrayBuffer,u=a&&a.prototype.append&&a.prototype.getBlob;try{r=2===new Blob(["ä"]).size,c=2===new Blob([new Uint8Array([1,2])]).size}catch(t){}function p(t){return t.map((function(t){if(t.buffer instanceof ArrayBuffer){var e=t.buffer;if(t.byteLength!==e.byteLength){var a=new Uint8Array(t.byteLength);a.set(new Uint8Array(e,t.byteOffset,t.byteLength)),e=a.buffer}return e}return t}))}function m(t,e){e=e||{};var s=new a;return p(t).forEach((function(t){s.append(t)})),e.type?s.getBlob(e.type):s.getBlob()}function v(t,e){return new s(p(t),e||{})}e.Blob&&(m.prototype=Blob.prototype,v.prototype=Blob.prototype);var f="function"==typeof TextEncoder?TextEncoder.prototype.encode.bind(new TextEncoder):function(t){for(var a=0,s=t.length,i=e.Uint8Array||Array,n=0,o=Math.max(32,s+(s>>1)+7),r=new i(o>>3<<3);a=55296&&l<=56319){if(a=55296&&l<=56319)continue}if(n+4>r.length){o+=8,o=(o*=1+a/t.length*2)>>3<<3;var d=new Uint8Array(o);d.set(r),r=d}if(0!=(4294967168&l)){if(0==(4294965248&l))r[n++]=l>>6&31|192;else if(0==(4294901760&l))r[n++]=l>>12&15|224,r[n++]=l>>6&63|128;else{if(0!=(4292870144&l))continue;r[n++]=l>>18&7|240,r[n++]=l>>12&63|128,r[n++]=l>>6&63|128}r[n++]=63&l|128}else r[n++]=l}return r.slice(0,n)},h="function"==typeof TextDecoder?TextDecoder.prototype.decode.bind(new TextDecoder):function(t){for(var e=t.length,a=[],s=0;s239?4:l>223?3:l>191?2:1;if(s+d<=e)switch(d){case 1:l<128&&(c=l);break;case 2:128==(192&(i=t[s+1]))&&(r=(31&l)<<6|63&i)>127&&(c=r);break;case 3:i=t[s+1],n=t[s+2],128==(192&i)&&128==(192&n)&&(r=(15&l)<<12|(63&i)<<6|63&n)>2047&&(r<55296||r>57343)&&(c=r);break;case 4:i=t[s+1],n=t[s+2],o=t[s+3],128==(192&i)&&128==(192&n)&&128==(192&o)&&(r=(15&l)<<18|(63&i)<<12|(63&n)<<6|63&o)>65535&&r<1114112&&(c=r)}null===c?(c=65533,d=1):c>65535&&(c-=65536,a.push(c>>>10&1023|55296),c=56320|1023&c),a.push(c),s+=d}var u=a.length,p="";for(s=0;s>2,d=(3&i)<<4|o>>4,u=(15&o)<<2|l>>6,p=63&l;r||(p=64,n||(u=64)),a.push(e[c],e[d],e[u],e[p])}return a.join("")}var s=Object.create||function(t){function e(){}return e.prototype=t,new e};if(d)var o=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],r=ArrayBuffer.isView||function(t){return t&&o.indexOf(Object.prototype.toString.call(t))>-1};function c(a,s){s=null==s?{}:s;for(var i=0,n=(a=a||[]).length;i=e.size&&a.close()}))}})}}catch(t){try{new ReadableStream({}),b=function(t){var e=0;t=this;return new ReadableStream({pull:function(a){return t.slice(e,e+524288).arrayBuffer().then((function(s){e+=s.byteLength;var i=new Uint8Array(s);a.enqueue(i),e==t.size&&a.close()}))}})}}catch(t){try{new Response("").body.getReader().read(),b=function(){return new Response(this).body}}catch(t){b=function(){throw new Error("Include https://github.com/MattiasBuelens/web-streams-polyfill")}}}}_.arrayBuffer||(_.arrayBuffer=function(){var t=new FileReader;return t.readAsArrayBuffer(this),y(t)}),_.text||(_.text=function(){var t=new FileReader;return t.readAsText(this),y(t)}),_.stream||(_.stream=b)}(),function(t){"use strict";var e,a=t.Uint8Array,s=t.HTMLCanvasElement,i=s&&s.prototype,n=/\s*;\s*base64\s*(?:;|$)/i,o="toDataURL",r=function(t){for(var s,i,n=t.length,o=new a(n/4*3|0),r=0,l=0,c=[0,0],d=0,u=0;n--;)i=t.charCodeAt(r++),255!==(s=e[i-43])&&undefined!==s&&(c[1]=c[0],c[0]=i,u=u<<6|s,4===++d&&(o[l++]=u>>>16,61!==c[1]&&(o[l++]=u>>>8),61!==c[0]&&(o[l++]=u),d=0));return o};a&&(e=new a([62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,0,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51])),!s||i.toBlob&&i.toBlobHD||(i.toBlob||(i.toBlob=function(t,e){if(e||(e="image/png"),this.mozGetAsFile)t(this.mozGetAsFile("canvas",e));else if(this.msToBlob&&/^\s*image\/png\s*(?:$|;)/i.test(e))t(this.msToBlob());else{var s,i=Array.prototype.slice.call(arguments,1),l=this[o].apply(this,i),c=l.indexOf(","),d=l.substring(c+1),u=n.test(l.substring(0,c));Blob.fake?((s=new Blob).encoding=u?"base64":"URI",s.data=d,s.size=d.length):a&&(s=u?new Blob([r(d)],{type:e}):new Blob([decodeURIComponent(d)],{type:e})),t(s)}}),!i.toBlobHD&&i.toDataURLHD?i.toBlobHD=function(){o="toDataURLHD";var t=this.toBlob();return o="toDataURL",t}:i.toBlobHD=i.toBlob)}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||this.content||this)},25187:(t,e,a)=>{"use strict";a.r(e),a.d(e,{default:()=>n});var s=a(1519),i=a.n(s)()((function(t){return t[1]}));i.push([t.id,".gap-2[data-v-e104c6c0]{gap:1rem}",""]);const n=i},46700:(t,e,a)=>{var s={"./af":42786,"./af.js":42786,"./ar":30867,"./ar-dz":14130,"./ar-dz.js":14130,"./ar-kw":96135,"./ar-kw.js":96135,"./ar-ly":56440,"./ar-ly.js":56440,"./ar-ma":47702,"./ar-ma.js":47702,"./ar-sa":16040,"./ar-sa.js":16040,"./ar-tn":37100,"./ar-tn.js":37100,"./ar.js":30867,"./az":31083,"./az.js":31083,"./be":9808,"./be.js":9808,"./bg":68338,"./bg.js":68338,"./bm":67438,"./bm.js":67438,"./bn":8905,"./bn-bd":76225,"./bn-bd.js":76225,"./bn.js":8905,"./bo":11560,"./bo.js":11560,"./br":1278,"./br.js":1278,"./bs":80622,"./bs.js":80622,"./ca":2468,"./ca.js":2468,"./cs":5822,"./cs.js":5822,"./cv":50877,"./cv.js":50877,"./cy":47373,"./cy.js":47373,"./da":24780,"./da.js":24780,"./de":59740,"./de-at":60217,"./de-at.js":60217,"./de-ch":60894,"./de-ch.js":60894,"./de.js":59740,"./dv":5300,"./dv.js":5300,"./el":50837,"./el.js":50837,"./en-au":78348,"./en-au.js":78348,"./en-ca":77925,"./en-ca.js":77925,"./en-gb":22243,"./en-gb.js":22243,"./en-ie":46436,"./en-ie.js":46436,"./en-il":47207,"./en-il.js":47207,"./en-in":44175,"./en-in.js":44175,"./en-nz":76319,"./en-nz.js":76319,"./en-sg":31662,"./en-sg.js":31662,"./eo":92915,"./eo.js":92915,"./es":55655,"./es-do":55251,"./es-do.js":55251,"./es-mx":96112,"./es-mx.js":96112,"./es-us":71146,"./es-us.js":71146,"./es.js":55655,"./et":5603,"./et.js":5603,"./eu":77763,"./eu.js":77763,"./fa":76959,"./fa.js":76959,"./fi":11897,"./fi.js":11897,"./fil":42549,"./fil.js":42549,"./fo":94694,"./fo.js":94694,"./fr":94470,"./fr-ca":63049,"./fr-ca.js":63049,"./fr-ch":52330,"./fr-ch.js":52330,"./fr.js":94470,"./fy":5044,"./fy.js":5044,"./ga":29295,"./ga.js":29295,"./gd":2101,"./gd.js":2101,"./gl":38794,"./gl.js":38794,"./gom-deva":27884,"./gom-deva.js":27884,"./gom-latn":23168,"./gom-latn.js":23168,"./gu":95349,"./gu.js":95349,"./he":24206,"./he.js":24206,"./hi":30094,"./hi.js":30094,"./hr":30316,"./hr.js":30316,"./hu":22138,"./hu.js":22138,"./hy-am":11423,"./hy-am.js":11423,"./id":29218,"./id.js":29218,"./is":90135,"./is.js":90135,"./it":90626,"./it-ch":10150,"./it-ch.js":10150,"./it.js":90626,"./ja":39183,"./ja.js":39183,"./jv":24286,"./jv.js":24286,"./ka":12105,"./ka.js":12105,"./kk":47772,"./kk.js":47772,"./km":18758,"./km.js":18758,"./kn":79282,"./kn.js":79282,"./ko":33730,"./ko.js":33730,"./ku":1408,"./ku.js":1408,"./ky":33291,"./ky.js":33291,"./lb":36841,"./lb.js":36841,"./lo":55466,"./lo.js":55466,"./lt":57010,"./lt.js":57010,"./lv":37595,"./lv.js":37595,"./me":39861,"./me.js":39861,"./mi":35493,"./mi.js":35493,"./mk":95966,"./mk.js":95966,"./ml":87341,"./ml.js":87341,"./mn":5115,"./mn.js":5115,"./mr":10370,"./mr.js":10370,"./ms":9847,"./ms-my":41237,"./ms-my.js":41237,"./ms.js":9847,"./mt":72126,"./mt.js":72126,"./my":56165,"./my.js":56165,"./nb":64924,"./nb.js":64924,"./ne":16744,"./ne.js":16744,"./nl":93901,"./nl-be":59814,"./nl-be.js":59814,"./nl.js":93901,"./nn":83877,"./nn.js":83877,"./oc-lnc":92135,"./oc-lnc.js":92135,"./pa-in":15858,"./pa-in.js":15858,"./pl":64495,"./pl.js":64495,"./pt":89520,"./pt-br":57971,"./pt-br.js":57971,"./pt.js":89520,"./ro":96459,"./ro.js":96459,"./ru":21793,"./ru.js":21793,"./sd":40950,"./sd.js":40950,"./se":10490,"./se.js":10490,"./si":90124,"./si.js":90124,"./sk":64249,"./sk.js":64249,"./sl":14985,"./sl.js":14985,"./sq":51104,"./sq.js":51104,"./sr":49131,"./sr-cyrl":79915,"./sr-cyrl.js":79915,"./sr.js":49131,"./ss":85893,"./ss.js":85893,"./sv":98760,"./sv.js":98760,"./sw":91172,"./sw.js":91172,"./ta":27333,"./ta.js":27333,"./te":23110,"./te.js":23110,"./tet":52095,"./tet.js":52095,"./tg":27321,"./tg.js":27321,"./th":9041,"./th.js":9041,"./tk":19005,"./tk.js":19005,"./tl-ph":75768,"./tl-ph.js":75768,"./tlh":89444,"./tlh.js":89444,"./tr":72397,"./tr.js":72397,"./tzl":28254,"./tzl.js":28254,"./tzm":51106,"./tzm-latn":30699,"./tzm-latn.js":30699,"./tzm.js":51106,"./ug-cn":9288,"./ug-cn.js":9288,"./uk":67691,"./uk.js":67691,"./ur":13795,"./ur.js":13795,"./uz":6791,"./uz-latn":60588,"./uz-latn.js":60588,"./uz.js":6791,"./vi":65666,"./vi.js":65666,"./x-pseudo":14378,"./x-pseudo.js":14378,"./yo":75805,"./yo.js":75805,"./zh-cn":83839,"./zh-cn.js":83839,"./zh-hk":55726,"./zh-hk.js":55726,"./zh-mo":99807,"./zh-mo.js":99807,"./zh-tw":74152,"./zh-tw.js":74152};function i(t){var e=n(t);return a(e)}function n(t){if(!a.o(s,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return s[t]}i.keys=function(){return Object.keys(s)},i.resolve=n,t.exports=i,i.id=46700},1640:(t,e,a)=>{"use strict";a.r(e),a.d(e,{default:()=>r});var s=a(93379),i=a.n(s),n=a(25187),o={insert:"head",singleton:!1};i()(n.default,o);const r=n.default.locals||{}},52199:(t,e,a)=>{"use strict";a.r(e),a.d(e,{default:()=>o});var s=a(57258),i=a(60428),n={};for(const t in i)"default"!==t&&(n[t]=()=>i[t]);a.d(e,n);const o=(0,a(51900).default)(i.default,s.render,s.staticRenderFns,!1,null,null,null).exports},78877:(t,e,a)=>{"use strict";a.r(e),a.d(e,{default:()=>o});var s=a(45449),i=a(42043),n={};for(const t in i)"default"!==t&&(n[t]=()=>i[t]);a.d(e,n);const o=(0,a(51900).default)(i.default,s.render,s.staticRenderFns,!1,null,null,null).exports},90882:(t,e,a)=>{"use strict";a.r(e),a.d(e,{default:()=>o});var s=a(41145),i=a(37274),n={};for(const t in i)"default"!==t&&(n[t]=()=>i[t]);a.d(e,n);const o=(0,a(51900).default)(i.default,s.render,s.staticRenderFns,!1,null,null,null).exports},10670:(t,e,a)=>{"use strict";a.r(e),a.d(e,{default:()=>o});var s=a(39524),i=a(82182),n={};for(const t in i)"default"!==t&&(n[t]=()=>i[t]);a.d(e,n);a(9721);const o=(0,a(51900).default)(i.default,s.render,s.staticRenderFns,!1,null,"e104c6c0",null).exports},28515:(t,e,a)=>{"use strict";a.r(e),a.d(e,{default:()=>o});var s=a(18311),i=a(91737),n={};for(const t in i)"default"!==t&&(n[t]=()=>i[t]);a.d(e,n);const o=(0,a(51900).default)(i.default,s.render,s.staticRenderFns,!1,null,null,null).exports},60428:(t,e,a)=>{"use strict";a.r(e),a.d(e,{default:()=>n});var s=a(88118),i={};for(const t in s)"default"!==t&&(i[t]=()=>s[t]);a.d(e,i);const n=s.default},42043:(t,e,a)=>{"use strict";a.r(e),a.d(e,{default:()=>n});var s=a(21047),i={};for(const t in s)"default"!==t&&(i[t]=()=>s[t]);a.d(e,i);const n=s.default},37274:(t,e,a)=>{"use strict";a.r(e),a.d(e,{default:()=>n});var s=a(57143),i={};for(const t in s)"default"!==t&&(i[t]=()=>s[t]);a.d(e,i);const n=s.default},82182:(t,e,a)=>{"use strict";a.r(e),a.d(e,{default:()=>n});var s=a(84147),i={};for(const t in s)"default"!==t&&(i[t]=()=>s[t]);a.d(e,i);const n=s.default},91737:(t,e,a)=>{"use strict";a.r(e),a.d(e,{default:()=>n});var s=a(60143),i={};for(const t in s)"default"!==t&&(i[t]=()=>s[t]);a.d(e,i);const n=s.default},57258:(t,e,a)=>{"use strict";a.r(e);var s=a(82264),i={};for(const t in s)"default"!==t&&(i[t]=()=>s[t]);a.d(e,i)},45449:(t,e,a)=>{"use strict";a.r(e);var s=a(48650),i={};for(const t in s)"default"!==t&&(i[t]=()=>s[t]);a.d(e,i)},41145:(t,e,a)=>{"use strict";a.r(e);var s=a(4448),i={};for(const t in s)"default"!==t&&(i[t]=()=>s[t]);a.d(e,i)},39524:(t,e,a)=>{"use strict";a.r(e);var s=a(38197),i={};for(const t in s)"default"!==t&&(i[t]=()=>s[t]);a.d(e,i)},18311:(t,e,a)=>{"use strict";a.r(e);var s=a(90823),i={};for(const t in s)"default"!==t&&(i[t]=()=>s[t]);a.d(e,i)},9721:(t,e,a)=>{"use strict";a.r(e);var s=a(1640),i={};for(const t in s)"default"!==t&&(i[t]=()=>s[t]);a.d(e,i)}},t=>{t.O(0,[8898],(()=>{return e=64721,t(t.s=e);var e}));t.O()}]); \ No newline at end of file +(self.webpackChunkpixelfed=self.webpackChunkpixelfed||[]).push([[9567],{95366:(t,e,a)=>{"use strict";a.r(e),a.d(e,{default:()=>r});var s=a(2e4);a(87980);function i(t){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(){n=function(){return e};var t,e={},a=Object.prototype,s=a.hasOwnProperty,o=Object.defineProperty||function(t,e,a){t[e]=a.value},r="function"==typeof Symbol?Symbol:{},l=r.iterator||"@@iterator",c=r.asyncIterator||"@@asyncIterator",d=r.toStringTag||"@@toStringTag";function u(t,e,a){return Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(t){u=function(t,e,a){return t[e]=a}}function p(t,e,a,s){var i=e&&e.prototype instanceof _?e:_,n=Object.create(i.prototype),r=new L(s||[]);return o(n,"_invoke",{value:A(t,a,r)}),n}function m(t,e,a){try{return{type:"normal",arg:t.call(e,a)}}catch(t){return{type:"throw",arg:t}}}e.wrap=p;var v="suspendedStart",f="suspendedYield",h="executing",g="completed",b={};function _(){}function C(){}function y(){}var w={};u(w,l,(function(){return this}));var x=Object.getPrototypeOf,k=x&&x(x(M([])));k&&k!==a&&s.call(k,l)&&(w=k);var S=y.prototype=_.prototype=Object.create(w);function R(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function T(t,e){function a(n,o,r,l){var c=m(t[n],t,o);if("throw"!==c.type){var d=c.arg,u=d.value;return u&&"object"==i(u)&&s.call(u,"__await")?e.resolve(u.__await).then((function(t){a("next",t,r,l)}),(function(t){a("throw",t,r,l)})):e.resolve(u).then((function(t){d.value=t,r(d)}),(function(t){return a("throw",t,r,l)}))}l(c.arg)}var n;o(this,"_invoke",{value:function(t,s){function i(){return new e((function(e,i){a(t,s,e,i)}))}return n=n?n.then(i,i):i()}})}function A(e,a,s){var i=v;return function(n,o){if(i===h)throw new Error("Generator is already running");if(i===g){if("throw"===n)throw o;return{value:t,done:!0}}for(s.method=n,s.arg=o;;){var r=s.delegate;if(r){var l=I(r,s);if(l){if(l===b)continue;return l}}if("next"===s.method)s.sent=s._sent=s.arg;else if("throw"===s.method){if(i===v)throw i=g,s.arg;s.dispatchException(s.arg)}else"return"===s.method&&s.abrupt("return",s.arg);i=h;var c=m(e,a,s);if("normal"===c.type){if(i=s.done?g:f,c.arg===b)continue;return{value:c.arg,done:s.done}}"throw"===c.type&&(i=g,s.method="throw",s.arg=c.arg)}}}function I(e,a){var s=a.method,i=e.iterator[s];if(i===t)return a.delegate=null,"throw"===s&&e.iterator.return&&(a.method="return",a.arg=t,I(e,a),"throw"===a.method)||"return"!==s&&(a.method="throw",a.arg=new TypeError("The iterator does not provide a '"+s+"' method")),b;var n=m(i,e.iterator,a.arg);if("throw"===n.type)return a.method="throw",a.arg=n.arg,a.delegate=null,b;var o=n.arg;return o?o.done?(a[e.resultName]=o.value,a.next=e.nextLoc,"return"!==a.method&&(a.method="next",a.arg=t),a.delegate=null,b):o:(a.method="throw",a.arg=new TypeError("iterator result is not an object"),a.delegate=null,b)}function j(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function L(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(j,this),this.reset(!0)}function M(e){if(e||""===e){var a=e[l];if(a)return a.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,o=function a(){for(;++n=0;--n){var o=this.tryEntries[n],r=o.completion;if("root"===o.tryLoc)return i("end");if(o.tryLoc<=this.prev){var l=s.call(o,"catchLoc"),c=s.call(o,"finallyLoc");if(l&&c){if(this.prev=0;--a){var i=this.tryEntries[a];if(i.tryLoc<=this.prev&&s.call(i,"finallyLoc")&&this.prev=0;--e){var a=this.tryEntries[e];if(a.finallyLoc===t)return this.complete(a.completion,a.afterLoc),P(a),b}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var a=this.tryEntries[e];if(a.tryLoc===t){var s=a.completion;if("throw"===s.type){var i=s.arg;P(a)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,a,s){return this.delegate={iterator:M(e),resultName:a,nextLoc:s},"next"===this.method&&(this.arg=t),b}},e}function o(t,e,a,s,i,n,o){try{var r=t[n](o),l=r.value}catch(t){return void a(t)}r.done?e(l):Promise.resolve(l).then(s,i)}const r={components:{Autocomplete:s.default},data:function(){return{loaded:!1,tabIndex:0,config:{autospam_enabled:null,open:0,closed:0},closedReports:[],closedReportsFetched:!1,closedReportsCursor:null,closedReportsCanLoadMore:!1,showSpamReportModal:!1,showSpamReportModalLoading:!0,viewingSpamReport:void 0,viewingSpamReportLoading:!1,showNonSpamModal:!1,nonSpamAccounts:[],searchLoading:!1,customTokens:[],customTokensFetched:!1,customTokensCanLoadMore:!1,showCreateTokenModal:!1,customTokenForm:{token:void 0,weight:1,category:"spam",note:void 0,active:!0},showEditTokenModal:!1,editCustomToken:{},editCustomTokenForm:{token:void 0,weight:1,category:"spam",note:void 0,active:!0}}},mounted:function(){var t=this;setTimeout((function(){t.loaded=!0,t.fetchConfig()}),1e3)},methods:{toggleTab:function(t){var e=this;this.tabIndex=t,0==t&&setTimeout((function(){e.initChart()}),500),"closed_reports"!==t||this.closedReportsFetched||this.fetchClosedReports(),"manage_tokens"!==t||this.customTokensFetched||this.fetchCustomTokens()},formatCount:function(t){return App.util.format.count(t)},timeAgo:function(t){return t?App.util.format.timeAgo(t):t},fetchConfig:function(){var t=this;axios.post("/i/admin/api/autospam/config").then((function(e){t.config=e.data,t.loaded=!0})).finally((function(){setTimeout((function(){t.initChart()}),100)}))},initChart:function(){new Chart(document.querySelector("#c1-dark"),{type:"line",options:{scales:{yAxes:[{gridLines:{lineWidth:1,color:"#212529",zeroLineColor:"#212529"}}]}},data:{datasets:[{data:this.config.graph}],labels:this.config.graphLabels}})},fetchClosedReports:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"/i/admin/api/autospam/reports/closed";axios.post(e).then((function(e){t.closedReports=e.data})).finally((function(){t.closedReportsFetched=!0}))},viewSpamReport:function(t){this.viewingSpamReportLoading=!1,this.viewingSpamReport=t,this.showSpamReportModal=!0,setTimeout((function(){pixelfed.readmore()}),500)},autospamPaginate:function(t){event.currentTarget.blur();var e="next"==t?this.closedReports.links.next:this.closedReports.links.prev;this.fetchClosedReports(e)},autospamTrainSpam:function(){event.currentTarget.blur(),axios.post("/i/admin/api/autospam/train").then((function(t){swal("Training Autospam!","A background job has been dispatched to train Autospam!","success"),setTimeout((function(){window.location.reload()}),1e4)})).catch((function(t){422===t.response.status?swal("Error",t.response.data.error,"error"):swal("Error","Oops, an error occured, please try again later","error")}))},autospamTrainNonSpam:function(){this.showNonSpamModal=!0},composeSearch:function(t){var e=this;return t.length<1?[]:axios.post("/i/admin/api/autospam/search/non-spam",{q:t}).then((function(t){return t.data.filter((function(t){return!e.nonSpamAccounts||!e.nonSpamAccounts.length||e.nonSpamAccounts&&-1==e.nonSpamAccounts.map((function(t){return t.id})).indexOf(t.id)}))}))},getTagResultValue:function(t){return t.username},onSearchResultClick:function(t){-1==this.nonSpamAccounts.map((function(t){return t.id})).indexOf(t.id)&&this.nonSpamAccounts.push(t)},autospamTrainNonSpamRemove:function(t){this.nonSpamAccounts.splice(t,1)},autospamTrainNonSpamSubmit:function(){this.showNonSpamModal=!1,axios.post("/i/admin/api/autospam/train/non-spam",{accounts:this.nonSpamAccounts}).then((function(t){swal("Training Autospam!","A background job has been dispatched to train Autospam!","success"),setTimeout((function(){window.location.reload()}),1e4)})).catch((function(t){422===t.response.status?swal("Error",t.response.data.error,"error"):swal("Error","Oops, an error occured, please try again later","error")}))},fetchCustomTokens:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"/i/admin/api/autospam/tokens/custom";axios.post(e).then((function(e){t.customTokens=e.data})).finally((function(){t.customTokensFetched=!0}))},handleSaveToken:function(){var t=this;axios.post("/i/admin/api/autospam/tokens/store",this.customTokenForm).then((function(t){console.log(t.data)})).catch((function(t){swal("Oops! An Error Occured",t.response.data.message,"error")})).finally((function(){t.customTokenForm={token:void 0,weight:1,category:"spam",note:void 0,active:!0},t.fetchCustomTokens()}))},openEditTokenModal:function(t){event.currentTarget.blur(),this.editCustomToken=t,this.editCustomTokenForm=t,this.showEditTokenModal=!0},handleUpdateToken:function(){axios.post("/i/admin/api/autospam/tokens/update",this.editCustomTokenForm).then((function(t){console.log(t.data)}))},autospamTokenPaginate:function(t){event.currentTarget.blur();var e="next"==t?this.customTokens.next_page_url:this.customTokens.prev_page_url;this.fetchCustomTokens(e)},downloadExport:function(){event.currentTarget.blur(),axios.post("/i/admin/api/autospam/tokens/export",{},{responseType:"blob"}).then((function(t){var e=document.createElement("a");e.setAttribute("download","pixelfed-autospam-export.json");var a=URL.createObjectURL(t.data);e.href=a,e.setAttribute("target","_blank"),e.click(),URL.revokeObjectURL(a)})).catch(function(){var t,e=(t=n().mark((function t(e){var a;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(a=e.response.data,!("blob"===e.request.responseType&&e.response.data instanceof Blob&&e.response.data.type&&-1!=e.response.data.type.toLowerCase().indexOf("json"))){t.next=8;break}return t.t0=JSON,t.next=5,e.response.data.text();case 5:t.t1=t.sent,a=t.t0.parse.call(t.t0,t.t1),swal("Export Error",a.error,"error");case 8:case 9:case"end":return t.stop()}}),t)})),function(){var e=this,a=arguments;return new Promise((function(s,i){var n=t.apply(e,a);function r(t){o(n,s,i,r,l,"next",t)}function l(t){o(n,s,i,r,l,"throw",t)}r(void 0)}))});return function(t){return e.apply(this,arguments)}}())},enableAdvanced:function(){event.currentTarget.blur(),!this.config.files.spam.exists||!this.config.files.ham.exists||!this.config.files.combined.exists||this.config.files.spam.size<1e3||this.config.files.ham.size<1e3||this.config.files.combined.size<1e3?swal("Training Required",'Before you can enable Advanced Detection, you need to train the models.\n\n Click on the "Train Autospam" tab and train both categories before proceeding',"error"):swal({title:"Confirm",text:"Are you sure you want to enable Advanced Detection?",icon:"warning",dangerMode:!0,buttons:{cancel:"Cancel",confirm:{text:"Enable",value:"enable"}}}).then((function(t){"enable"===t&&axios.post("/i/admin/api/autospam/config/enable").then((function(t){swal("Success! Advanced Detection is now enabled!\n\n This page will reload in a few seconds!",{icon:"success"}),setTimeout((function(){window.location.reload()}),5e3)})).catch((function(t){swal("Oops!","An error occured, please try again later","error")}))}))},disableAdvanced:function(){event.currentTarget.blur(),swal({title:"Confirm",text:"Are you sure you want to disable Advanced Detection?",icon:"warning",dangerMode:!0,buttons:{cancel:"Cancel",confirm:{text:"Disable",value:"disable"}}}).then((function(t){"disable"===t&&axios.post("/i/admin/api/autospam/config/disable").then((function(t){swal("Success! Advanced Detection is now disabled!\n\n This page will reload in a few seconds!",{icon:"success"}),setTimeout((function(){window.location.reload()}),5e3)})).catch((function(t){swal("Oops!","An error occured, please try again later","error")}))}))},handleImport:function(){event.currentTarget.blur(),swal("Error","You do not have enough data to support importing.","error")}}}},71847:(t,e,a)=>{"use strict";a.r(e),a.d(e,{default:()=>i});var s=a(74692);const i={data:function(){return{loaded:!1,initialData:{},tabIndex:1,tabs:[{id:1,title:"Overview",icon:"far fa-home"},{id:3,title:"Server Details",icon:"far fa-info-circle"},{id:4,title:"Admin Contact",icon:"far fa-user-crown"},{id:5,title:"Favourite Posts",icon:"far fa-heart"},{id:6,title:"Privacy Pledge",icon:"far fa-eye-slash"},{id:7,title:"Community Guidelines",icon:"far fa-smile-beam"},{id:8,title:"Feature Requirements",icon:"far fa-bolt"},{id:9,title:"User Testimonials",icon:"far fa-comment-smile"}],form:{summary:"",location:0,contact_account:0,contact_email:"",privacy_pledge:void 0,banner_image:void 0,locale:0},requirements:{activitypub_enabled:void 0,open_registration:void 0,oauth_enabled:void 0,curated_onboarding:void 0},feature_config:[],requirements_validator:[],popularPostsLoaded:!1,popularPosts:[],selectedPopularPosts:[],selectedPosts:[],favouritePostByIdInput:"",favouritePostByIdFetching:!1,communityGuidelines:[],isUploadingBanner:!1,state:{is_eligible:!1,submission_exists:!1,awaiting_approval:!1,is_active:!1,submission_timestamp:void 0},isSubmitting:!1,testimonial:{username:void 0,body:void 0},testimonials:[],isEditingTestimonial:!1,editingTestimonial:void 0}},mounted:function(){this.fetchInitialData()},methods:{toggleTab:function(t){this.tabIndex=t},fetchInitialData:function(){var t=this;axios.get("/i/admin/api/directory/initial-data").then((function(e){t.initialData=e.data,e.data.activitypub_enabled&&(t.requirements.activitypub_enabled=e.data.activitypub_enabled),e.data.open_registration&&(t.requirements.open_registration=e.data.open_registration),e.data.curated_onboarding&&(t.requirements.curated_onboarding=e.data.curated_onboarding),e.data.oauth_enabled&&(t.requirements.oauth_enabled=e.data.oauth_enabled),e.data.summary&&(t.form.summary=e.data.summary),e.data.location&&(t.form.location=e.data.location),e.data.favourite_posts&&(t.selectedPosts=e.data.favourite_posts),e.data.admin&&(t.form.contact_account=e.data.admin),e.data.contact_email&&(t.form.contact_email=e.data.contact_email),e.data.community_guidelines&&(t.communityGuidelines=e.data.community_guidelines),e.data.privacy_pledge&&(t.form.privacy_pledge=e.data.privacy_pledge),e.data.feature_config&&(t.feature_config=e.data.feature_config),e.data.requirements_validator&&(t.requirements_validator=e.data.requirements_validator),e.data.banner_image&&(t.form.banner_image=e.data.banner_image),e.data.primary_locale&&(t.form.primary_locale=e.data.primary_locale),e.data.is_eligible&&(t.state.is_eligible=e.data.is_eligible),e.data.testimonials&&(t.testimonials=e.data.testimonials),e.data.submission_state&&(t.state.is_active=e.data.submission_state.active_submission,t.state.submission_exists=e.data.submission_state.pending_submission,t.state.awaiting_approval=e.data.submission_state.pending_submission)})).then((function(){t.loaded=!0}))},initPopularPosts:function(){var t=this;this.popularPostsLoaded||axios.get("/i/admin/api/directory/popular-posts").then((function(e){t.popularPosts=e.data.filter((function(e){return!t.selectedPosts.map((function(t){return t.id})).includes(e.id)}))})).then((function(){t.popularPostsLoaded=!0}))},formatCount:function(t){return window.App.util.format.count(t)},formatDateTime:function(t){var e=new Date(t);return new Intl.DateTimeFormat("en-US",{dateStyle:"medium",timeStyle:"short"}).format(e)},formatDate:function(t){var e=new Date(t);return new Intl.DateTimeFormat("en-US",{month:"short",year:"numeric"}).format(e)},formatTimestamp:function(t){return window.App.util.format.timeAgo(t)},togglePopularPost:function(t,e){if(this.selectedPosts.length)if(this.selectedPosts.map((function(t){return t.id})).includes(t))this.selectedPosts=this.selectedPosts.filter((function(e){return e.id!=t}));else{if(this.selectedPosts.length>=12)return swal("Oops!","You can only select 12 popular posts","error"),void(event.currentTarget.checked=!1);this.selectedPosts.push(e)}else this.selectedPosts.push(e)},toggleSelectedPost:function(t){this.selectedPosts=this.selectedPosts.filter((function(e){return e.id!==t.id}))},handlePostByIdSearch:function(){var t=this;event.currentTarget.blur(),this.selectedPosts.length>=12?swal("Oops","You can only select 12 posts","error"):(this.favouritePostByIdFetching=!0,axios.post("/i/admin/api/directory/add-by-id",{q:this.favouritePostByIdInput}).then((function(e){t.selectedPosts.map((function(t){return t.id})).includes(e.data.id)?swal("Oops!","You already selected this post!","error"):(t.selectedPosts.push(e.data),t.favouritePostByIdInput="",t.popularPosts=t.popularPosts.filter((function(t){return t.id!=e.data.id})))})).then((function(){t.favouritePostByIdFetching=!1,s("#favposts-1-tab").tab("show")})).catch((function(e){swal("Invalid Post","The post id you added is not valid","error"),t.favouritePostByIdFetching=!1})))},save:function(){axios.post("/i/admin/api/directory/save",{location:this.form.location,summary:this.form.summary,admin_uid:this.form.contact_account,contact_email:this.form.contact_email,favourite_posts:this.selectedPosts.map((function(t){return t.id})),privacy_pledge:this.form.privacy_pledge}).then((function(t){swal("Success!","Successfully saved directory settings","success")})).catch((function(t){swal("Oops!",t.response.data.message,"error")}))},uploadBannerImage:function(){var t=this;if(this.isUploadingBanner=!0,window.confirm("Are you sure you want to update your server banner image?")){var e=new FormData;e.append("banner_image",this.$refs.bannerImageRef.files[0]),axios.post("/i/admin/api/directory/save",e,{headers:{"Content-Type":"multipart/form-data"}}).then((function(e){t.form.banner_image=e.data.banner_image,t.isUploadingBanner=!1})).catch((function(e){swal("Error",e.response.data.message,"error"),t.isUploadingBanner=!1}))}else this.isUploadingBanner=!1},deleteBannerImage:function(){var t=this;window.confirm("Are you sure you want to delete your server banner image?")&&axios.delete("/i/admin/api/directory/banner-image").then((function(e){t.form.banner_image=e.data})).catch((function(t){console.log(t)}))},handleSubmit:function(){var t=this;window.confirm("Are you sure you want to submit your server?")&&(this.isSubmitting=!0,axios.post("/i/admin/api/directory/submit").then((function(e){setTimeout((function(){t.isSubmitting=!1,t.state.is_active=!0,console.log(e.data)}),3e3)})).catch((function(t){swal("Error",t.response.data.message,"error")})))},deleteTestimonial:function(t){var e=this;window.confirm("Are you sure you want to delete the testimonial by "+t.profile.username+"?")&&axios.post("/i/admin/api/directory/testimonial/delete",{profile_id:t.profile.id}).then((function(a){e.testimonials=e.testimonials.filter((function(e){return e.profile.id!=t.profile.id}))}))},editTestimonial:function(t){this.isEditingTestimonial=!0,this.editingTestimonial=t},saveTestimonial:function(){var t,e=this;null===(t=event.currentTarget)||void 0===t||t.blur(),axios.post("/i/admin/api/directory/testimonial/save",{username:this.testimonial.username,body:this.testimonial.body}).then((function(t){e.testimonials.push(t.data),e.testimonial={username:void 0,body:void 0}})).catch((function(t){var e=t.response.data.hasOwnProperty("error")?t.response.data.error:t.response.data.message;swal("Oops!",e,"error")}))},cancelEditTestimonial:function(){var t;null===(t=event.currentTarget)||void 0===t||t.blur(),this.isEditingTestimonial=!1,this.editingTestimonial={}},saveEditTestimonial:function(){var t,e=this;null===(t=event.currentTarget)||void 0===t||t.blur(),axios.post("/i/admin/api/directory/testimonial/update",{profile_id:this.editingTestimonial.profile.id,body:this.editingTestimonial.body}).then((function(t){e.isEditingTestimonial=!1,e.editingTestimonial={}}))}},watch:{selectedPosts:function(t){var e=t.map((function(t){return t.id}));this.popularPosts=this.popularPosts.filter((function(t){return!e.includes(t.id)}))}}}},44107:(t,e,a)=>{"use strict";a.r(e),a.d(e,{default:()=>i});var s=a(2e4);a(87980);const i={components:{Autocomplete:s.default},data:function(){return{loaded:!1,tabIndex:0,stats:{total_unique:0,total_posts:0,added_14_days:0,total_banned:0,total_nsfw:0},hashtags:[],pagination:[],sortCol:void 0,sortDir:void 0,trendingTags:[],bannedTags:[],showEditModal:!1,editingHashtag:void 0,editSaved:!1,editSavedTimeout:void 0,searchLoading:!1}},mounted:function(){var t=this;this.fetchStats(),this.fetchHashtags(),this.$root.$on("bv::modal::hidden",(function(e,a){t.editSaved=!1,clearTimeout(t.editSavedTimeout),t.editingHashtag=void 0}))},watch:{editingHashtag:{deep:!0,immediate:!0,handler:function(t,e){null!=t&&null!=e&&this.storeHashtagEdit(t)}}},methods:{fetchStats:function(){var t=this;axios.get("/i/admin/api/hashtags/stats").then((function(e){t.stats=e.data}))},fetchHashtags:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"/i/admin/api/hashtags/query";axios.get(e).then((function(e){t.hashtags=e.data.data,t.pagination={next:e.data.links.next,prev:e.data.links.prev},t.loaded=!0}))},prettyCount:function(t){return t?t.toLocaleString("en-CA",{compactDisplay:"short",notation:"compact"}):t},timeAgo:function(t){return t?App.util.format.timeAgo(t):t},boolIcon:function(t){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"text-muted";return t?''):'')},paginate:function(t){event.currentTarget.blur();var e="next"==t?this.pagination.next:this.pagination.prev;this.fetchHashtags(e)},toggleCol:function(t){this.sortCol=t,this.sortDir?this.sortDir="asc"==this.sortDir?"desc":"asc":this.sortDir="desc";var e="/i/admin/api/hashtags/query?sort="+t+"&dir="+this.sortDir;this.fetchHashtags(e)},buildColumn:function(t,e){var a='';return e==this.sortCol&&(a="desc"==this.sortDir?'':''),"".concat(t," ").concat(a)},toggleTab:function(t){var e=this;if(this.loaded=!1,this.tabIndex=t,0===t)this.fetchHashtags();else if(1===t)axios.get("/api/v1.1/discover/posts/hashtags").then((function(t){e.trendingTags=t.data,e.loaded=!0}));else if(2===t){this.fetchHashtags("/i/admin/api/hashtags/query?action=banned")}else if(3===t){this.fetchHashtags("/i/admin/api/hashtags/query?action=nsfw")}},openEditHashtagModal:function(t){var e=this;this.editSaved=!1,clearTimeout(this.editSavedTimeout),this.$nextTick((function(){axios.get("/i/admin/api/hashtags/get",{params:{id:t.id}}).then((function(t){e.editingHashtag=t.data.data,e.showEditModal=!0}))}))},storeHashtagEdit:function(t,e){var a=this;this.editSaved=!1,t.is_banned&&(t.can_trend||t.can_search)&&swal("Banned Hashtag Limits","Banned hashtags cannot trend or be searchable, to allow those you need to unban the hashtag","error"),axios.post("/i/admin/api/hashtags/update",t).then((function(e){a.editSaved=!0,1!==a.tabIndex&&(a.hashtags=a.hashtags.map((function(a){return a.id==t.id&&(a=e.data.data),a}))),a.editSavedTimeout=setTimeout((function(){a.editSaved=!1}),5e3)})).catch((function(t){swal("Oops!","An error occured, please try again.","error"),console.log(t)}))},composeSearch:function(t){return t.length<1?[]:axios.get("/i/admin/api/hashtags/query",{params:{q:t,sort:"cached_count",dir:"desc"}}).then((function(t){return t.data.data}))},getTagResultValue:function(t){return t.name},onSearchResultClick:function(t){this.openEditHashtagModal(t)},clearTrendingCache:function(){event.currentTarget.blur(),window.confirm("Are you sure you want to clear the trending hashtags cache?")&&axios.post("/i/admin/api/hashtags/clear-trending-cache").then((function(t){swal("Cache Cleared!","Successfully cleared the trending hashtag cache!","success")}))}}}},56310:(t,e,a)=>{"use strict";a.r(e),a.d(e,{default:()=>u});var s=a(2e4);a(87980);function i(t){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(){n=function(){return e};var t,e={},a=Object.prototype,s=a.hasOwnProperty,o=Object.defineProperty||function(t,e,a){t[e]=a.value},r="function"==typeof Symbol?Symbol:{},l=r.iterator||"@@iterator",c=r.asyncIterator||"@@asyncIterator",d=r.toStringTag||"@@toStringTag";function u(t,e,a){return Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(t){u=function(t,e,a){return t[e]=a}}function p(t,e,a,s){var i=e&&e.prototype instanceof _?e:_,n=Object.create(i.prototype),r=new L(s||[]);return o(n,"_invoke",{value:A(t,a,r)}),n}function m(t,e,a){try{return{type:"normal",arg:t.call(e,a)}}catch(t){return{type:"throw",arg:t}}}e.wrap=p;var v="suspendedStart",f="suspendedYield",h="executing",g="completed",b={};function _(){}function C(){}function y(){}var w={};u(w,l,(function(){return this}));var x=Object.getPrototypeOf,k=x&&x(x(M([])));k&&k!==a&&s.call(k,l)&&(w=k);var S=y.prototype=_.prototype=Object.create(w);function R(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function T(t,e){function a(n,o,r,l){var c=m(t[n],t,o);if("throw"!==c.type){var d=c.arg,u=d.value;return u&&"object"==i(u)&&s.call(u,"__await")?e.resolve(u.__await).then((function(t){a("next",t,r,l)}),(function(t){a("throw",t,r,l)})):e.resolve(u).then((function(t){d.value=t,r(d)}),(function(t){return a("throw",t,r,l)}))}l(c.arg)}var n;o(this,"_invoke",{value:function(t,s){function i(){return new e((function(e,i){a(t,s,e,i)}))}return n=n?n.then(i,i):i()}})}function A(e,a,s){var i=v;return function(n,o){if(i===h)throw new Error("Generator is already running");if(i===g){if("throw"===n)throw o;return{value:t,done:!0}}for(s.method=n,s.arg=o;;){var r=s.delegate;if(r){var l=I(r,s);if(l){if(l===b)continue;return l}}if("next"===s.method)s.sent=s._sent=s.arg;else if("throw"===s.method){if(i===v)throw i=g,s.arg;s.dispatchException(s.arg)}else"return"===s.method&&s.abrupt("return",s.arg);i=h;var c=m(e,a,s);if("normal"===c.type){if(i=s.done?g:f,c.arg===b)continue;return{value:c.arg,done:s.done}}"throw"===c.type&&(i=g,s.method="throw",s.arg=c.arg)}}}function I(e,a){var s=a.method,i=e.iterator[s];if(i===t)return a.delegate=null,"throw"===s&&e.iterator.return&&(a.method="return",a.arg=t,I(e,a),"throw"===a.method)||"return"!==s&&(a.method="throw",a.arg=new TypeError("The iterator does not provide a '"+s+"' method")),b;var n=m(i,e.iterator,a.arg);if("throw"===n.type)return a.method="throw",a.arg=n.arg,a.delegate=null,b;var o=n.arg;return o?o.done?(a[e.resultName]=o.value,a.next=e.nextLoc,"return"!==a.method&&(a.method="next",a.arg=t),a.delegate=null,b):o:(a.method="throw",a.arg=new TypeError("iterator result is not an object"),a.delegate=null,b)}function j(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function L(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(j,this),this.reset(!0)}function M(e){if(e||""===e){var a=e[l];if(a)return a.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,o=function a(){for(;++n=0;--n){var o=this.tryEntries[n],r=o.completion;if("root"===o.tryLoc)return i("end");if(o.tryLoc<=this.prev){var l=s.call(o,"catchLoc"),c=s.call(o,"finallyLoc");if(l&&c){if(this.prev=0;--a){var i=this.tryEntries[a];if(i.tryLoc<=this.prev&&s.call(i,"finallyLoc")&&this.prev=0;--e){var a=this.tryEntries[e];if(a.finallyLoc===t)return this.complete(a.completion,a.afterLoc),P(a),b}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var a=this.tryEntries[e];if(a.tryLoc===t){var s=a.completion;if("throw"===s.type){var i=s.arg;P(a)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,a,s){return this.delegate={iterator:M(e),resultName:a,nextLoc:s},"next"===this.method&&(this.arg=t),b}},e}function o(t,e,a,s,i,n,o){try{var r=t[n](o),l=r.value}catch(t){return void a(t)}r.done?e(l):Promise.resolve(l).then(s,i)}function r(t){return function(){var e=this,a=arguments;return new Promise((function(s,i){var n=t.apply(e,a);function r(t){o(n,s,i,r,l,"next",t)}function l(t){o(n,s,i,r,l,"throw",t)}r(void 0)}))}}function l(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,s)}return a}function c(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:"/i/admin/api/instances/get";axios.get(e).then((function(e){t.instances=e.data.data,t.pagination=c(c({},e.data.links),e.data.meta)})).then((function(){t.$nextTick((function(){t.loaded=!0}))}))},toggleTab:function(t){this.loaded=!1,this.tabIndex=t,this.searchQuery=void 0;var e="/i/admin/api/instances/get?filter="+this.filterMap[t];history.pushState(null,"","/i/admin/instances?filter="+this.filterMap[t]),this.fetchInstances(e)},prettyCount:function(t){return t?t.toLocaleString("en-CA",{compactDisplay:"short",notation:"compact"}):0},formatCount:function(t){return t?t.toLocaleString("en-CA"):0},timeAgo:function(t){return t?App.util.format.timeAgo(t):t},boolIcon:function(t){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"text-muted";return t?''):'')},toggleCol:function(t){if(this.filterMap[this.tabIndex]!=t&&!this.searchQuery){this.sortCol=t,this.sortDir?this.sortDir="asc"==this.sortDir?"desc":"asc":this.sortDir="desc";var e=new URL(window.location.origin+"/i/admin/instances");e.searchParams.set("sort",t),e.searchParams.set("dir",this.sortDir),0!=this.tabIndex&&e.searchParams.set("filter",this.filterMap[this.tabIndex]),history.pushState(null,"",e);var a=new URL(window.location.origin+"/i/admin/api/instances/get");a.searchParams.set("sort",t),a.searchParams.set("dir",this.sortDir),0!=this.tabIndex&&a.searchParams.set("filter",this.filterMap[this.tabIndex]),this.fetchInstances(a.toString())}},buildColumn:function(t,e){if(-1!=[1,5,6].indexOf(this.tabIndex)||this.searchQuery&&this.searchQuery.length)return t;if(2===this.tabIndex&&"banned"===e)return t;if(3===this.tabIndex&&"auto_cw"===e)return t;if(4===this.tabIndex&&"unlisted"===e)return t;var a='';return e==this.sortCol&&(a="desc"==this.sortDir?'':''),"".concat(t," ").concat(a)},paginate:function(t){event.currentTarget.blur();var e="next"==t?this.pagination.next:this.pagination.prev,a="next"==t?this.pagination.next_cursor:this.pagination.prev_cursor,s=new URL(window.location.origin+"/i/admin/instances");a&&s.searchParams.set("cursor",a),this.searchQuery&&s.searchParams.set("q",this.searchQuery),this.sortCol&&s.searchParams.set("sort",this.sortCol),this.sortDir&&s.searchParams.set("dir",this.sortDir),history.pushState(null,"",s.toString()),this.fetchInstances(e)},composeSearch:function(t){var e=this;return t.length<1?[]:(this.searchQuery=t,history.pushState(null,"","/i/admin/instances?q="+t),axios.get("/i/admin/api/instances/query",{params:{q:t}}).then((function(t){return t&&t.data?(e.tabIndex=-1,e.instances=t.data.data,e.pagination=c(c({},t.data.links),t.data.meta)):e.fetchInstances(),t.data.data})))},getTagResultValue:function(t){return t.name},onSearchResultClick:function(t){this.openInstanceModal(t.id)},openInstanceModal:function(t){var e=this,a=this.instances.filter((function(e){return e.id===t}))[0];this.refreshedModalStats=!1,this.editingInstanceChanges=!1,this.instanceModalNotes=!1,this.canEditInstance=!1,this.instanceModal=a,this.$nextTick((function(){e.editingInstance=a,e.showInstanceModal=!0,e.canEditInstance=!0}))},showModalNotes:function(){this.instanceModalNotes=!0},saveInstanceModalChanges:function(){var t=this;axios.post("/i/admin/api/instances/update",this.editingInstance).then((function(e){t.showInstanceModal=!1,t.$bvToast.toast("Successfully updated ".concat(e.data.data.domain),{title:"Instance Updated",autoHideDelay:5e3,appendToast:!0,variant:"success"})}))},saveNewInstance:function(){var t=this;axios.post("/i/admin/api/instances/create",this.addNewInstance).then((function(e){t.showInstanceModal=!1,t.instances.unshift(e.data.data)})).catch((function(e){swal("Oops!","An error occured, please try again later.","error"),t.addNewInstance={domain:"",banned:!1,auto_cw:!1,unlisted:!1,notes:void 0}}))},refreshModalStats:function(){var t=this;axios.post("/i/admin/api/instances/refresh-stats",{id:this.instanceModal.id}).then((function(e){t.refreshedModalStats=!0,t.instanceModal=e.data.data,t.editingInstance=e.data.data,t.instances=t.instances.map((function(t){return t.id===e.data.data.id?e.data.data:t}))}))},deleteInstanceModal:function(){var t=this;window.confirm("Are you sure you want to delete this instance? This will not delete posts or profiles from this instance.")&&axios.post("/i/admin/api/instances/delete",{id:this.instanceModal.id}).then((function(e){t.showInstanceModal=!1,t.instances=t.instances.filter((function(e){return e.id!=t.instanceModal.id}))})).then((function(){setTimeout((function(){return t.fetchStats()}),1e3)}))},openImportForm:function(){var t=document.createElement("p");t.classList.add("text-left"),t.classList.add("mb-0"),t.innerHTML='

Import your instance moderation backup.


Import Instructions:

  1. Press OK
  2. Press "Choose File" on Import form input
  3. Select your pixelfed-instances-mod.json file
  4. Review instance moderation actions. Tap on an instance to remove it
  5. Press "Import" button to finish importing
';var e=document.createElement("div");e.appendChild(t),swal({title:"Import Backup",content:e,icon:"info"}),this.showImportForm=!0},downloadBackup:function(t){axios.get("/i/admin/api/instances/download-backup",{responseType:"blob"}).then((function(t){var e=document.createElement("a");e.setAttribute("download","pixelfed-instances-mod.json");var a=URL.createObjectURL(t.data);e.href=a,e.setAttribute("target","_blank"),e.click(),swal("Instance Backup Downloading","Your instance moderation backup is downloading. Use this to import auto_cw, banned and unlisted instances to supported Pixelfed instances.","success")}))},onImportUpload:function(t){var e=this;return r(n().mark((function a(){var s;return n().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.next=2,e.getParsedImport(t.target.files[0]);case 2:if((s=a.sent).hasOwnProperty("version")&&1===s.version){a.next=8;break}return swal("Invalid Backup","We cannot validate this backup. Please try again later.","error"),e.showImportForm=!1,e.$refs.importInput.reset(),a.abrupt("return");case 8:e.importData=s,e.showImportModal=!0;case 10:case"end":return a.stop()}}),a)})))()},getParsedImport:function(t){var e=this;return r(n().mark((function a(){var s,i;return n().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,e.parseJsonFile(t);case 3:return a.abrupt("return",a.sent);case 6:return a.prev=6,a.t0=a.catch(0),(s=document.createElement("p")).classList.add("text-left"),s.classList.add("mb-0"),s.innerHTML='

An error occured when attempting to parse the import file. Please try again later.


Error message:

'+a.t0.message+"
",(i=document.createElement("div")).appendChild(s),swal({title:"Import Error",content:i,icon:"error"}),a.abrupt("return");case 16:case"end":return a.stop()}}),a,null,[[0,6]])})))()},promisedParseJSON:function(t){return r(n().mark((function e(){return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,a){try{e(JSON.parse(t))}catch(t){a(t)}})));case 1:case"end":return e.stop()}}),e)})))()},parseJsonFile:function(t){var e=this;return r(n().mark((function a(){return n().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.abrupt("return",new Promise((function(a,s){var i=new FileReader;i.onload=function(t){return a(e.promisedParseJSON(t.target.result))},i.onerror=function(t){return s(t)},i.readAsText(t)})));case 1:case"end":return a.stop()}}),a)})))()},filterImportData:function(t,e){switch(t){case"auto_cw":this.importData.auto_cw.splice(e,1);break;case"unlisted":this.importData.unlisted.splice(e,1);break;case"banned":this.importData.banned.splice(e,1)}},completeImport:function(){var t=this;this.showImportForm=!1,axios.post("/i/admin/api/instances/import-data",{banned:this.importData.banned,auto_cw:this.importData.auto_cw,unlisted:this.importData.unlisted}).then((function(t){swal("Import Uploaded","Import successfully uploaded, please allow a few minutes to process.","success")})).then((function(){setTimeout((function(){return t.fetchStats()}),1e3)}))},cancelImport:function(t){if(this.importData.banned.length||this.importData.auto_cw.length||this.importData.unlisted.length){if(!window.confirm("Are you sure you want to cancel importing?"))return void t.preventDefault();this.showImportForm=!1,this.$refs.importInput.value="",this.importData={banned:[],auto_cw:[],unlisted:[]}}},onViewMoreInstance:function(){this.showInstanceModal=!1,window.location.href="/i/admin/instances/show/"+this.instanceModal.id}}}},51839:(t,e,a)=>{"use strict";a.r(e),a.d(e,{default:()=>n});var s=a(98385),i=a(74692);const n={components:{"admin-report-modal":s.default},data:function(){return{loaded:!1,stats:{total:0,open:0,closed:0,autospam:0,autospam_open:0,remote_open:0},tabIndex:0,reports:[],pagination:{},showReportModal:!1,viewingReport:void 0,viewingReportLoading:!1,autospam:[],autospamPagination:{},autospamLoaded:!1,showSpamReportModal:!1,viewingSpamReport:void 0,viewingSpamReportLoading:!1,remoteReportsLoaded:!1,showRemoteReportModal:void 0,remoteReportModalModel:{}}},mounted:function(){var t=new URLSearchParams(window.location.search);t.has("tab")&&t.has("id")&&"autospam"===t.get("tab")?(this.fetchStats(null,"/i/admin/api/reports/spam/all"),this.fetchSpamReport(t.get("id"))):t.has("tab")&&t.has("id")&&"report"===t.get("tab")?(this.fetchStats(),this.fetchReport(t.get("id"))):(window.history.pushState(null,null,"/i/admin/reports"),this.fetchStats()),this.$root.$on("bv::modal::hide",(function(t,e){window.history.pushState(null,null,"/i/admin/reports")}))},methods:{toggleTab:function(t){switch(t){case 0:this.fetchStats("/i/admin/api/reports/all");break;case 1:this.fetchStats("/i/admin/api/reports/all?filter=closed");break;case 2:this.fetchStats(null,"/i/admin/api/reports/spam/all");break;case 3:this.fetchRemoteReports()}window.history.pushState(null,null,"/i/admin/reports"),this.tabIndex=t},prettyCount:function(t){return t?t.toLocaleString("en-CA",{compactDisplay:"short",notation:"compact"}):t},timeAgo:function(t){return t?App.util.format.timeAgo(t):t},formatDate:function(t){var e=new Date(t);return new Intl.DateTimeFormat("default",{month:"long",day:"numeric",year:"numeric",hour:"numeric",minute:"numeric"}).format(e)},reportLabel:function(t){switch(t.object_type){case"App\\Profile":return"".concat(t.type," Profile");case"App\\Status":return"".concat(t.type," Post");case"App\\Story":return"".concat(t.type," Story")}},fetchStats:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"/i/admin/api/reports/all",a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;axios.get("/i/admin/api/reports/stats").then((function(e){t.stats=e.data})).finally((function(){e?t.fetchReports(e):a&&t.fetchAutospam(a),i('[data-toggle="tooltip"]').tooltip()}))},fetchReports:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"/i/admin/api/reports/all";axios.get(e).then((function(e){t.reports=e.data.data,t.pagination={next:e.data.links.next,prev:e.data.links.prev}})).finally((function(){t.loaded=!0}))},fetchRemoteReports:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"/i/admin/api/reports/remote";axios.get(e).then((function(e){t.reports=e.data.data,t.pagination={next:e.data.links.next,prev:e.data.links.prev}})).finally((function(){t.loaded=!0,t.remoteReportsLoaded=!0}))},remoteReportPaginate:function(t){event.currentTarget.blur();var e="next"==t?this.pagination.next:this.pagination.prev;this.fetchRemoteReports(e)},handleCloseRemoteReportModal:function(){this.showRemoteReportModal=!1},showRemoteReport:function(t){this.remoteReportModalModel=t,this.showRemoteReportModal=!0},refreshRemoteReports:function(){var t=this;this.fetchStats(""),this.$nextTick((function(){t.toggleTab(3)}))},paginate:function(t){event.currentTarget.blur();var e="next"==t?this.pagination.next:this.pagination.prev;this.fetchReports(e)},viewReport:function(t){this.viewingReportLoading=!1,this.viewingReport=t,this.showReportModal=!0,window.history.pushState(null,null,"/i/admin/reports?tab=report&id="+t.id),setTimeout((function(){pixelfed.readmore()}),1e3)},handleAction:function(t,e){var a=this;event.currentTarget.blur(),this.viewingReportLoading=!0,"ignore"===e||window.confirm(this.getActionLabel(t,e))?(this.loaded=!1,axios.post("/i/admin/api/reports/handle",{id:this.viewingReport.id,object_id:this.viewingReport.object_id,object_type:this.viewingReport.object_type,action:e,action_type:t}).catch((function(t){swal("Error",t.response.data.error,"error")})).finally((function(){a.viewingReportLoading=!0,a.viewingReport=!1,a.showReportModal=!1,setTimeout((function(){a.fetchStats()}),1e3)}))):this.viewingReportLoading=!1},getActionLabel:function(t,e){if("profile"===t)switch(e){case"ignore":return"Are you sure you want to ignore this profile report?";case"nsfw":return"Are you sure you want to mark this profile as NSFW?";case"unlist":return"Are you sure you want to mark all posts by this profile as unlisted?";case"private":return"Are you sure you want to mark all posts by this profile as private?";case"delete":return"Are you sure you want to delete this profile?"}else if("post"===t)switch(e){case"ignore":return"Are you sure you want to ignore this post report?";case"nsfw":return"Are you sure you want to mark this post as NSFW?";case"unlist":return"Are you sure you want to mark this post as unlisted?";case"private":return"Are you sure you want to mark this post as private?";case"delete":return"Are you sure you want to delete this post?"}else if("story"===t)switch(e){case"ignore":return"Are you sure you want to ignore this story report?";case"delete":return"Are you sure you want to delete this story?";case"delete-all":return"Are you sure you want to delete all stories by this account?"}},fetchAutospam:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"/i/admin/api/reports/spam/all";axios.get(e).then((function(e){t.autospam=e.data.data,t.autospamPagination={next:e.data.links.next,prev:e.data.links.prev}})).finally((function(){t.autospamLoaded=!0,t.loaded=!0}))},autospamPaginate:function(t){event.currentTarget.blur();var e="next"==t?this.autospamPagination.next:this.autospamPagination.prev;this.fetchAutospam(e)},viewSpamReport:function(t){this.viewingSpamReportLoading=!1,this.viewingSpamReport=t,this.showSpamReportModal=!0,window.history.pushState(null,null,"/i/admin/reports?tab=autospam&id="+t.id),setTimeout((function(){pixelfed.readmore()}),1e3)},getSpamActionLabel:function(t){switch(t){case"mark-all-read":return"Are you sure you want to mark all spam reports by this account as read?";case"mark-all-not-spam":return"Are you sure you want to mark all spam reports by this account as not spam?";case"delete-profile":return"Are you sure you want to delete this profile?"}},handleSpamAction:function(t){var e=this;event.currentTarget.blur(),this.viewingSpamReportLoading=!0,"mark-not-spam"===t||"mark-read"===t||window.confirm(this.getSpamActionLabel(t))?(this.loaded=!1,axios.post("/i/admin/api/reports/spam/handle",{id:this.viewingSpamReport.id,action:t}).catch((function(t){swal("Error",t.response.data.error,"error")})).finally((function(){e.viewingSpamReportLoading=!0,e.viewingSpamReport=!1,e.showSpamReportModal=!1,setTimeout((function(){e.fetchStats(null,"/i/admin/api/reports/spam/all")}),500)}))):this.viewingSpamReportLoading=!1},fetchReport:function(t){var e=this;axios.get("/i/admin/api/reports/get/"+t).then((function(t){e.tabIndex=0,e.viewReport(t.data.data)})).catch((function(t){e.fetchStats(),window.history.pushState(null,null,"/i/admin/reports")}))},fetchSpamReport:function(t){var e=this;axios.get("/i/admin/api/reports/spam/get/"+t).then((function(t){e.tabIndex=2,e.viewSpamReport(t.data.data)})).catch((function(t){e.fetchStats(),window.history.pushState(null,null,"/i/admin/reports")}))}}}},99697:(t,e,a)=>{"use strict";a.r(e),a.d(e,{default:()=>n});var s=a(18634),i=a(8889);const n={props:{status:{type:Object}},data:function(){return{showInReplyTo:!1}},components:{"admin-read-more":i.default},methods:{toggleLightbox:function(t){(0,s.default)({el:t.target})},toggleVideoLightbox:function(t,e){(0,s.default)({el:event.target,vidSrc:e})},formatDate:function(t){var e=new Date(t);return new Intl.DateTimeFormat("default",{month:"long",day:"numeric",year:"numeric",hour:"numeric",minute:"numeric"}).format(e)}}}},72173:(t,e,a)=>{"use strict";a.r(e),a.d(e,{default:()=>s});const s={props:{content:{type:String},maxLength:{type:Number,default:140},fontSize:{type:String,default:"13"},step:{type:Boolean,default:!1},stepLimit:{type:Number,default:140},initialLimit:{type:Number,default:10}},computed:{contentText:{get:function(){if(this.step){var t=this.content.length/this.stepLimit;return(1==this.stepIndex||tthis.maxLength&&(this.canExpand=!0),this.expanded?this.content:this.truncate()}}},data:function(){return{expanded:!1,canExpand:!1,canStepExpand:!1,stepIndex:1}},methods:{expand:function(){this.step?(this.stepIndex++,this.canStepExpand=!0):this.expanded=!0},truncate:function(){if(this.content&&this.content.length)return this.content&&this.content.lengththis.stepLimit,this.content.slice(0,this.initialLimit)):this.canStepExpand&&this.stepIndex{"use strict";a.r(e),a.d(e,{default:()=>n});var s=a(27707),i=a(8889);const n={props:{open:{type:Boolean,default:!1},model:{type:Object}},components:{"admin-modal-post":s.default,"admin-read-more":i.default},watch:{open:{handler:function(){this.isOpen=this.open},immediate:!0,deep:!0}},data:function(){return{isLoading:!0,isOpen:!1,actions:["mark-read","cw-posts","unlist-posts","private-posts","delete-posts","mark-all-read-by-domain","mark-all-read-by-username","cw-all-posts","unlist-all-posts","private-all-posts"],actionMap:{"cw-posts":"apply content warnings to all post(s) in this report?","unlist-posts":"unlist all post(s) in this report?","delete-posts":"delete all post(s) in this report?","private-posts":"make all post(s) in this report private/followers-only?","mark-all-read-by-domain":"mark all reports by this instance as closed?","mark-all-read-by-username":"mark all reports against this user as closed?","cw-all-posts":"apply content warnings to all post(s) belonging to this account?","unlist-all-posts":"make all post(s) belonging to this account as unlisted?","private-all-posts":"make all post(s) belonging to this account as private?"}}},mounted:function(){var t=this;setTimeout((function(){t.isLoading=!1}),300)},methods:{prettyCount:function(t){return t?t.toLocaleString("en-CA",{compactDisplay:"short",notation:"compact"}):t},timeAgo:function(t){return t?App.util.format.timeAgo(t):t},formatDate:function(t){var e=new Date(t);return new Intl.DateTimeFormat("default",{month:"long",day:"numeric",year:"numeric",hour:"numeric",minute:"numeric"}).format(e)},handleAction:function(t){var e=this;"mark-read"!==t?swal({title:"Confirm",text:"Are you sure you want to "+this.actionMap[t],icon:"warning",buttons:!0,dangerMode:!0}).then((function(a){!0===a&&axios.post("/i/admin/api/reports/remote/handle",{id:e.model.id,action:t}).finally((function(){e.$emit("refresh"),e.$emit("close")}))})):axios.post("/i/admin/api/reports/remote/handle",{id:this.model.id,action:t}).then((function(t){console.log(t.data)})).finally((function(){e.$emit("refresh"),e.$emit("close")}))}}}},69385:(t,e,a)=>{"use strict";a.r(e),a.d(e,{render:()=>s,staticRenderFns:()=>i});var s=function(){var t=this,e=t._self._c;return e("div",[e("div",{staticClass:"header bg-primary pb-3 mt-n4"},[e("div",{staticClass:"container-fluid"},[e("div",{staticClass:"header-body"},[e("div",{staticClass:"row align-items-center py-4"},[t._m(0),t._v(" "),e("div",{staticClass:"col-xl-4 col-lg-3 col-md-4"},[e("div",{staticClass:"card card-stats mb-lg-0"},[e("div",{staticClass:"card-body"},[e("div",{staticClass:"row"},[e("div",{staticClass:"col"},[e("h5",{staticClass:"card-title text-uppercase text-muted mb-0"},[t._v("Active Autospam")]),t._v(" "),e("span",{staticClass:"h2 font-weight-bold mb-0"},[t._v(t._s(t.formatCount(t.config.open)))])]),t._v(" "),t._m(1)])])])]),t._v(" "),e("div",{staticClass:"col-xl-4 col-lg-3 col-md-4"},[e("div",{staticClass:"card card-stats bg-dark mb-lg-0"},[e("div",{staticClass:"card-body"},[e("div",{staticClass:"row"},[e("div",{staticClass:"col"},[e("h5",{staticClass:"card-title text-uppercase text-muted mb-0"},[t._v("Closed Autospam")]),t._v(" "),e("span",{staticClass:"h2 font-weight-bold text-muted mb-0"},[t._v(t._s(t.formatCount(t.config.closed)))])]),t._v(" "),t._m(2)])])])])])])])]),t._v(" "),t.loaded?e("div",{staticClass:"m-n2 m-lg-4"},[e("div",{staticClass:"container-fluid mt-4"},[e("div",{staticClass:"row mb-3 justify-content-between"},[e("div",{staticClass:"col-12"},[e("ul",{staticClass:"nav nav-pills"},[e("li",{staticClass:"nav-item"},[e("button",{class:["nav-link",{active:0==t.tabIndex}],on:{click:function(e){return e.preventDefault(),t.toggleTab(0)}}},[t._v("Dashboard")])]),t._v(" "),e("li",{staticClass:"nav-item"},[e("button",{class:["nav-link",{active:"about"==t.tabIndex}],on:{click:function(e){return e.preventDefault(),t.toggleTab("about")}}},[t._v("About / How to Use Autospam")])]),t._v(" "),e("li",{staticClass:"nav-item"},[e("button",{class:["nav-link",{active:"train"==t.tabIndex}],on:{click:function(e){return e.preventDefault(),t.toggleTab("train")}}},[t._v("Train Autospam")])]),t._v(" "),e("li",{staticClass:"nav-item"},[e("button",{class:["nav-link",{active:"closed_reports"==t.tabIndex}],on:{click:function(e){return e.preventDefault(),t.toggleTab("closed_reports")}}},[t._v("Closed Reports")])]),t._v(" "),e("li",{staticClass:"nav-item"},[e("button",{class:["nav-link",{active:"manage_tokens"==t.tabIndex}],on:{click:function(e){return e.preventDefault(),t.toggleTab("manage_tokens")}}},[t._v("Manage Tokens")])]),t._v(" "),e("li",{staticClass:"nav-item"},[e("button",{class:["nav-link",{active:"import_export"==t.tabIndex}],on:{click:function(e){return e.preventDefault(),t.toggleTab("import_export")}}},[t._v("Import/Export")])])])])]),t._v(" "),0===this.tabIndex?e("div",{staticClass:"row"},[e("div",{staticClass:"col-12 col-md-4"},[null===t.config.autospam_enabled?e("div"):t.config.autospam_enabled?e("div",{staticClass:"card bg-dark",staticStyle:{"min-height":"209px"}},[t._m(3)]):e("div",{staticClass:"card bg-dark",staticStyle:{"min-height":"209px"}},[t._m(4)]),t._v(" "),null===t.config.nlp_enabled?e("div"):t.config.nlp_enabled?e("div",{staticClass:"card bg-dark",staticStyle:{"min-height":"209px"}},[e("div",{staticClass:"card-body text-center"},[t._m(5),t._v(" "),e("p",{staticClass:"lead text-light"},[t._v("Advanced (NLP) Detection Active")]),t._v(" "),e("a",{staticClass:"btn btn-outline-danger btn-block font-weight-bold",class:{disabled:1!=t.config.autospam_enabled},attrs:{href:"#",disabled:1!=t.config.autospam_enabled},on:{click:function(e){return e.preventDefault(),t.disableAdvanced.apply(null,arguments)}}},[t._v("Disable Advanced Detection")])])]):e("div",{staticClass:"card bg-dark",staticStyle:{"min-height":"209px"}},[e("div",{staticClass:"card-body text-center"},[t._m(6),t._v(" "),e("p",{staticClass:"lead text-danger font-weight-bold"},[t._v("Advanced (NLP) Detection Inactive")]),t._v(" "),e("a",{staticClass:"btn btn-primary btn-block font-weight-bold",class:{disabled:1!=t.config.autospam_enabled},attrs:{href:"#",disabled:1!=t.config.autospam_enabled},on:{click:function(e){return e.preventDefault(),t.enableAdvanced.apply(null,arguments)}}},[t._v("Enable Advanced Detection")])])])]),t._v(" "),t._m(7)]):"about"===this.tabIndex?e("div",[t._m(8)]):"train"===this.tabIndex?e("div",[t._m(9),t._v(" "),e("div",{staticClass:"row"},[e("div",{staticClass:"col-12 col-md-6"},[e("div",{staticClass:"card bg-dark"},[e("div",{staticClass:"card-header bg-gradient-primary text-white font-weight-bold"},[t._v("Train Spam Posts")]),t._v(" "),e("div",{staticClass:"card-body"},[e("div",{staticClass:"d-flex flex-column align-items-center justify-content-center py-4",staticStyle:{gap:"1rem"}},[t._m(10),t._v(" "),e("p",{staticClass:"lead text-lighter"},[t._v("Use existing posts marked as spam to train Autospam")]),t._v(" "),e("button",{staticClass:"btn btn-primary btn-lg font-weight-bold btn-block",class:{disabled:t.config.files.spam.exists},attrs:{disabled:t.config.files.spam.exists},on:{click:function(e){return e.preventDefault(),t.autospamTrainSpam.apply(null,arguments)}}},[t._v("\n\t \t\t\t\t\t\t"+t._s(t.config.files.spam.exists?"Already trained":"Train Spam")+"\n\t \t\t\t\t\t")])])])])]),t._v(" "),e("div",{staticClass:"col-12 col-md-6"},[e("div",{staticClass:"card bg-dark"},[e("div",{staticClass:"card-header bg-gradient-primary text-white font-weight-bold"},[t._v("Train Non-Spam Posts")]),t._v(" "),e("div",{staticClass:"card-body"},[e("div",{staticClass:"d-flex flex-column align-items-center justify-content-center py-4",staticStyle:{gap:"1rem"}},[t._m(11),t._v(" "),e("p",{staticClass:"lead text-lighter"},[t._v("Use posts from trusted users to train non-spam posts")]),t._v(" "),e("button",{staticClass:"btn btn-primary btn-lg font-weight-bold btn-block",class:{disabled:t.config.files.ham.exists},attrs:{disabled:t.config.files.ham.exists},on:{click:function(e){return e.preventDefault(),t.autospamTrainNonSpam.apply(null,arguments)}}},[t._v("\n\t \t\t\t\t\t\t"+t._s(t.config.files.ham.exists?"Already trained":"Train Non-Spam")+"\n\t \t\t\t\t\t")])])])])])])]):"closed_reports"===this.tabIndex?e("div",[t.closedReportsFetched?[e("div",{staticClass:"table-responsive rounded"},[e("table",{staticClass:"table table-dark"},[t._m(12),t._v(" "),e("tbody",t._l(t.closedReports.data,(function(a,s){return e("tr",{key:"closed_reports"+a.id+s},[e("td",{staticClass:"font-weight-bold text-monospace text-muted align-middle"},[t._v("\n\t\t \t"+t._s(a.id)+"\n\t\t ")]),t._v(" "),t._m(13,!0),t._v(" "),e("td",{staticClass:"align-middle"},[a.status&&a.status.account?e("a",{staticClass:"text-white",attrs:{href:"/i/web/profile/".concat(a.status.account.id),target:"_blank"}},[e("div",{staticClass:"d-flex align-items-center",staticStyle:{gap:"0.61rem"}},[e("img",{staticStyle:{"object-fit":"cover","border-radius":"30px"},attrs:{src:a.status.account.avatar,width:"30",height:"30",onerror:"this.src='/storage/avatars/default.png';this.error=null;"}}),t._v(" "),e("div",{staticClass:"d-flex flex-column"},[e("p",{staticClass:"font-weight-bold mb-0",staticStyle:{"font-size":"14px"}},[t._v("@"+t._s(a.status.account.username))]),t._v(" "),e("div",{staticClass:"d-flex small text-muted mb-0",staticStyle:{gap:"0.5rem"}},[e("span",[t._v(t._s(a.status.account.followers_count)+" Followers")]),t._v(" "),e("span",[t._v("·")]),t._v(" "),e("span",[t._v("Joined "+t._s(t.timeAgo(a.status.account.created_at)))])])])])]):t._e()]),t._v(" "),e("td",{staticClass:"font-weight-bold align-middle"},[t._v(t._s(t.timeAgo(a.created_at)))]),t._v(" "),e("td",{staticClass:"align-middle"},[e("a",{staticClass:"btn btn-primary btn-sm",attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.viewSpamReport(a)}}},[t._v("View")])])])})),0)])]),t._v(" "),t.closedReportsFetched&&t.closedReports&&t.closedReports.data.length?e("div",{staticClass:"d-flex align-items-center justify-content-center"},[e("button",{staticClass:"btn btn-primary rounded-pill",attrs:{disabled:!t.closedReports.links.prev},on:{click:function(e){return t.autospamPaginate("prev")}}},[t._v("\n\t\t Prev\n\t\t ")]),t._v(" "),e("button",{staticClass:"btn btn-primary rounded-pill",attrs:{disabled:!t.closedReports.links.next},on:{click:function(e){return t.autospamPaginate("next")}}},[t._v("\n\t\t Next\n\t\t ")])]):t._e()]:[e("div",{staticClass:"d-flex justify-content-center align-items-center py-5"},[e("b-spinner")],1)]],2):"manage_tokens"===this.tabIndex?e("div",[e("div",{staticClass:"row align-items-center mb-3"},[t._m(14),t._v(" "),e("div",{staticClass:"col-12 col-md-3"},[e("a",{staticClass:"btn btn-primary btn-lg btn-block",attrs:{href:"#"},on:{click:function(e){e.preventDefault(),t.showCreateTokenModal=!0}}},[e("i",{staticClass:"far fa-plus fa-lg mr-1"}),t._v("\n \t\t\t\tCreate New Token\n \t\t\t")])])]),t._v(" "),t.customTokensFetched?[t.customTokens&&t.customTokens.data&&t.customTokens.data.length?[e("div",{staticClass:"table-responsive rounded"},[e("table",{staticClass:"table table-dark"},[t._m(15),t._v(" "),e("tbody",t._l(t.customTokens.data,(function(a,s){return e("tr",{key:"ct"+a.id+s},[e("td",{staticClass:"font-weight-bold text-monospace text-muted align-middle"},[t._v("\n\t\t\t \t"+t._s(a.id)+"\n\t\t\t ")]),t._v(" "),e("td",{staticClass:"align-middle"},[e("p",{staticClass:"font-weight-bold mb-0"},[t._v(t._s(a.token))])]),t._v(" "),e("td",{staticClass:"align-middle"},[e("p",{staticClass:"text-capitalize mb-0"},[t._v(t._s(a.category))])]),t._v(" "),e("td",{staticClass:"align-middle"},[e("p",{staticClass:"text-capitalize mb-0"},[t._v(t._s(a.weight))])]),t._v(" "),e("td",{staticClass:"font-weight-bold align-middle"},[t._v(t._s(t.timeAgo(a.created_at)))]),t._v(" "),e("td",{staticClass:"font-weight-bold align-middle"},[e("a",{staticClass:"btn btn-primary btn-sm font-weight-bold",attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.openEditTokenModal(a)}}},[t._v("Edit")])])])})),0)])]),t._v(" "),t.customTokensFetched&&t.customTokens&&t.customTokens.data.length?e("div",{staticClass:"d-flex align-items-center justify-content-center"},[e("button",{staticClass:"btn btn-primary rounded-pill",attrs:{disabled:!t.customTokens.prev_page_url},on:{click:function(e){return t.autospamTokenPaginate("prev")}}},[t._v("\n\t\t\t Prev\n\t\t\t ")]),t._v(" "),e("button",{staticClass:"btn btn-primary rounded-pill",attrs:{disabled:!t.customTokens.next_page_url},on:{click:function(e){return t.autospamTokenPaginate("next")}}},[t._v("\n\t\t\t Next\n\t\t\t ")])]):t._e()]:e("div",[t._m(16)])]:[e("div",{staticClass:"d-flex justify-content-center align-items-center py-5"},[e("b-spinner")],1)]],2):"import_export"===this.tabIndex?e("div",[t._m(17),t._v(" "),e("div",{staticClass:"row"},[e("div",{staticClass:"col-12 col-md-6"},[e("div",{staticClass:"card bg-dark"},[e("div",{staticClass:"card-header font-weight-bold"},[t._v("Import Training Data")]),t._v(" "),e("div",{staticClass:"card-body"},[e("div",{staticClass:"d-flex flex-column align-items-center justify-content-center py-4",staticStyle:{gap:"1rem"}},[t._m(18),t._v(" "),e("p",{staticClass:"lead text-lighter"},[t._v("Make sure the file you are importing is a valid training data export!")]),t._v(" "),e("button",{staticClass:"btn btn-primary btn-lg font-weight-bold btn-block",on:{click:function(e){return e.preventDefault(),t.handleImport.apply(null,arguments)}}},[t._v("Upload Import")])])])])]),t._v(" "),e("div",{staticClass:"col-12 col-md-6"},[e("div",{staticClass:"card bg-dark"},[e("div",{staticClass:"card-header font-weight-bold"},[t._v("Export Training Data")]),t._v(" "),e("div",{staticClass:"card-body"},[e("div",{staticClass:"d-flex flex-column align-items-center justify-content-center py-4",staticStyle:{gap:"1rem"}},[t._m(19),t._v(" "),e("p",{staticClass:"lead text-lighter"},[t._v("Only share training data with people you trust. It can be used by spammers to bypass detection!")]),t._v(" "),e("button",{staticClass:"btn btn-primary btn-lg font-weight-bold btn-block",on:{click:function(e){return e.preventDefault(),t.downloadExport.apply(null,arguments)}}},[t._v("Download Export")])])])])])])]):t._e()])]):e("div",{staticClass:"my-5 text-center"},[e("b-spinner")],1),t._v(" "),e("b-modal",{attrs:{title:"Autospam Post","ok-only":!0,"ok-title":"Close","ok-variant":"outline-primary"},model:{value:t.showSpamReportModal,callback:function(e){t.showSpamReportModal=e},expression:"showSpamReportModal"}},[t.viewingSpamReportLoading?e("div",{staticClass:"d-flex align-items-center justify-content-center"},[e("b-spinner")],1):[e("div",{staticClass:"list-group list-group-horizontal mt-3"},[t.viewingSpamReport&&t.viewingSpamReport.status&&t.viewingSpamReport.status.account?e("div",{staticClass:"list-group-item d-flex align-items-center justify-content-between flex-column flex-grow-1",staticStyle:{gap:"0.4rem"}},[e("div",{staticClass:"text-muted small font-weight-bold mt-n1"},[t._v("Reported Account")]),t._v(" "),t.viewingSpamReport.status.account&&t.viewingSpamReport.status.account.id?e("a",{staticClass:"text-primary",attrs:{href:"/i/web/profile/".concat(t.viewingSpamReport.status.account.id),target:"_blank"}},[e("div",{staticClass:"d-flex align-items-center",staticStyle:{gap:"0.61rem"}},[e("img",{staticStyle:{"object-fit":"cover","border-radius":"30px"},attrs:{src:t.viewingSpamReport.status.account.avatar,width:"30",height:"30",onerror:"this.src='/storage/avatars/default.png';this.error=null;"}}),t._v(" "),e("div",{staticClass:"d-flex flex-column"},[e("p",{staticClass:"font-weight-bold mb-0 text-break",class:[t.viewingSpamReport.status.account.is_admin?"text-danger":""],staticStyle:{"font-size":"12px","max-width":"140px","line-height":"16px"}},[t._v("@"+t._s(t.viewingSpamReport.status.account.acct))]),t._v(" "),e("div",{staticClass:"d-flex text-muted mb-0",staticStyle:{"font-size":"10px",gap:"0.5rem"}},[e("span",[t._v(t._s(t.viewingSpamReport.status.account.followers_count)+" Followers")]),t._v(" "),e("span",[t._v("·")]),t._v(" "),e("span",[t._v("Joined "+t._s(t.timeAgo(t.viewingSpamReport.status.account.created_at)))])])])])]):t._e()]):t._e()]),t._v(" "),t.viewingSpamReport&&t.viewingSpamReport.status?e("div",{staticClass:"list-group mt-3"},[t.viewingSpamReport&&t.viewingSpamReport.status&&t.viewingSpamReport.status.media_attachments.length?e("div",{staticClass:"list-group-item d-flex flex-column flex-grow-1",staticStyle:{gap:"0.4rem"}},[e("div",{staticClass:"d-flex justify-content-between mt-n1 text-muted small font-weight-bold"},[e("div",[t._v("Reported Post")]),t._v(" "),e("a",{staticClass:"font-weight-bold",attrs:{href:t.viewingSpamReport.status.url,target:"_blank"}},[t._v("View")])]),t._v(" "),"image"===t.viewingSpamReport.status.media_attachments[0].type?e("img",{staticClass:"rounded",staticStyle:{"object-fit":"cover"},attrs:{src:t.viewingSpamReport.status.media_attachments[0].url,height:"140",onerror:"this.src='/storage/no-preview.png';this.error=null;"}}):"video"===t.viewingSpamReport.status.media_attachments[0].type?e("video",{attrs:{height:"140",controls:"",src:t.viewingSpamReport.status.media_attachments[0].url,onerror:"this.src='/storage/no-preview.png';this.onerror=null;"}}):t._e()]):t._e(),t._v(" "),t.viewingSpamReport&&t.viewingSpamReport.status&&t.viewingSpamReport.status.content_text&&t.viewingSpamReport.status.content_text.length?e("div",{staticClass:"list-group-item d-flex flex-column flex-grow-1",staticStyle:{gap:"0.4rem"}},[e("div",{staticClass:"d-flex justify-content-between mt-n1 text-muted small font-weight-bold"},[e("div",[t._v("Reported Post Caption")]),t._v(" "),e("a",{staticClass:"font-weight-bold",attrs:{href:t.viewingSpamReport.status.url,target:"_blank"}},[t._v("View")])]),t._v(" "),e("p",{staticClass:"mb-0 read-more",staticStyle:{"font-size":"12px","overflow-y":"hidden"}},[t._v(t._s(t.viewingSpamReport.status.content_text))])]):t._e()]):t._e()]],2),t._v(" "),e("b-modal",{attrs:{title:"Train Non-Spam","ok-only":!0,"ok-title":"Close","ok-variant":"outline-primary"},model:{value:t.showNonSpamModal,callback:function(e){t.showNonSpamModal=e},expression:"showNonSpamModal"}},[e("p",{staticClass:"small font-weight-bold"},[t._v("Select trusted accounts to train non-spam posts against!")]),t._v(" "),!t.nonSpamAccounts||t.nonSpamAccounts.length<10?e("autocomplete",{ref:"autocomplete",attrs:{search:t.composeSearch,disabled:t.searchLoading,placeholder:"Search by username","aria-label":"Search by username","get-result-value":t.getTagResultValue},on:{submit:t.onSearchResultClick},scopedSlots:t._u([{key:"result",fn:function(a){var s=a.result,i=a.props;return[e("li",t._b({staticClass:"autocomplete-result d-flex align-items-center",staticStyle:{gap:"0.5rem"}},"li",i,!1),[e("img",{staticClass:"rounded-circle",attrs:{src:s.avatar,width:"32",height:"32",onerror:"this.src='/storage/avatars/default.png';this.error=null;"}}),t._v(" "),e("div",{staticClass:"font-weight-bold"},[t._v("\n "+t._s(s.username)+"\n ")])])]}}],null,!1,565605044)}):t._e(),t._v(" "),e("div",{staticClass:"list-group mt-3"},t._l(t.nonSpamAccounts,(function(a,s){return e("div",{staticClass:"list-group-item"},[e("div",{staticClass:"d-flex align-items-center justify-content-between"},[e("div",{staticClass:"d-flex flex-row align-items-center",staticStyle:{gap:"0.5rem"}},[e("img",{staticClass:"rounded-circle",attrs:{src:a.avatar,width:"32",height:"32",onerror:"this.src='/storage/avatars/default.png';this.error=null;"}}),t._v(" "),e("div",{staticClass:"font-weight-bold"},[t._v("\n\t "+t._s(a.username)+"\n\t ")])]),t._v(" "),e("a",{staticClass:"text-danger",attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.autospamTrainNonSpamRemove(s)}}},[e("i",{staticClass:"fas fa-trash"})])])])})),0),t._v(" "),t.nonSpamAccounts&&t.nonSpamAccounts.length?e("div",{staticClass:"mt-3"},[e("a",{staticClass:"btn btn-primary btn-lg font-weight-bold btn-block",attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.autospamTrainNonSpamSubmit.apply(null,arguments)}}},[t._v("Train non-spam posts on trusted accounts")])]):t._e()],1),t._v(" "),e("b-modal",{attrs:{title:"Create New Token","cancel-title":"Close","cancel-variant":"outline-primary","ok-title":"Save","ok-variant":"primary"},on:{ok:t.handleSaveToken},model:{value:t.showCreateTokenModal,callback:function(e){t.showCreateTokenModal=e},expression:"showCreateTokenModal"}},[e("div",{staticClass:"list-group mt-3"},[e("div",{staticClass:"list-group-item"},[e("div",{staticClass:"row align-items-center"},[e("div",{staticClass:"col-4"},[e("p",{staticClass:"mb-0 font-weight-bold small"},[t._v("Token")])]),t._v(" "),e("div",{staticClass:"col-8"},[e("input",{directives:[{name:"model",rawName:"v-model",value:t.customTokenForm.token,expression:"customTokenForm.token"}],staticClass:"form-control",domProps:{value:t.customTokenForm.token},on:{input:function(e){e.target.composing||t.$set(t.customTokenForm,"token",e.target.value)}}})])])]),t._v(" "),e("div",{staticClass:"list-group-item"},[e("div",{staticClass:"row align-items-center"},[e("div",{staticClass:"col-4"},[e("p",{staticClass:"mb-0 font-weight-bold small"},[t._v("Weight")])]),t._v(" "),e("div",{staticClass:"col-8"},[e("input",{directives:[{name:"model",rawName:"v-model",value:t.customTokenForm.weight,expression:"customTokenForm.weight"}],staticClass:"form-control",attrs:{type:"number",min:"-128",max:"128",step:"1"},domProps:{value:t.customTokenForm.weight},on:{input:function(e){e.target.composing||t.$set(t.customTokenForm,"weight",e.target.value)}}})])])]),t._v(" "),e("div",{staticClass:"list-group-item"},[e("div",{staticClass:"row align-items-center"},[e("div",{staticClass:"col-4"},[e("p",{staticClass:"mb-0 font-weight-bold small"},[t._v("Category")])]),t._v(" "),e("div",{staticClass:"col-8"},[e("select",{directives:[{name:"model",rawName:"v-model",value:t.customTokenForm.category,expression:"customTokenForm.category"}],staticClass:"form-control",on:{change:function(e){var a=Array.prototype.filter.call(e.target.options,(function(t){return t.selected})).map((function(t){return"_value"in t?t._value:t.value}));t.$set(t.customTokenForm,"category",e.target.multiple?a:a[0])}}},[e("option",{attrs:{value:"spam"}},[t._v("Is Spam")]),t._v(" "),e("option",{attrs:{value:"ham"}},[t._v("Is NOT Spam")])])])])]),t._v(" "),e("div",{staticClass:"list-group-item"},[e("div",{staticClass:"row align-items-center"},[e("div",{staticClass:"col-4"},[e("p",{staticClass:"mb-0 font-weight-bold small"},[t._v("Note")])]),t._v(" "),e("div",{staticClass:"col-8"},[e("textarea",{directives:[{name:"model",rawName:"v-model",value:t.customTokenForm.note,expression:"customTokenForm.note"}],staticClass:"form-control",domProps:{value:t.customTokenForm.note},on:{input:function(e){e.target.composing||t.$set(t.customTokenForm,"note",e.target.value)}}})])])]),t._v(" "),e("div",{staticClass:"list-group-item"},[e("div",{staticClass:"row align-items-center"},[e("div",{staticClass:"col-4"},[e("p",{staticClass:"mb-0 font-weight-bold small"},[t._v("Active")])]),t._v(" "),e("div",{staticClass:"col-8 text-right"},[e("div",{staticClass:"custom-control custom-checkbox"},[e("input",{directives:[{name:"model",rawName:"v-model",value:t.customTokenForm.active,expression:"customTokenForm.active"}],staticClass:"custom-control-input",attrs:{type:"checkbox",id:"customCheck1"},domProps:{checked:Array.isArray(t.customTokenForm.active)?t._i(t.customTokenForm.active,null)>-1:t.customTokenForm.active},on:{change:function(e){var a=t.customTokenForm.active,s=e.target,i=!!s.checked;if(Array.isArray(a)){var n=t._i(a,null);s.checked?n<0&&t.$set(t.customTokenForm,"active",a.concat([null])):n>-1&&t.$set(t.customTokenForm,"active",a.slice(0,n).concat(a.slice(n+1)))}else t.$set(t.customTokenForm,"active",i)}}}),t._v(" "),e("label",{staticClass:"custom-control-label",attrs:{for:"customCheck1"}})])])])])])]),t._v(" "),e("b-modal",{attrs:{title:"Edit Token","cancel-title":"Close","cancel-variant":"outline-primary","ok-title":"Update","ok-variant":"primary"},on:{ok:t.handleUpdateToken},model:{value:t.showEditTokenModal,callback:function(e){t.showEditTokenModal=e},expression:"showEditTokenModal"}},[e("div",{staticClass:"list-group mt-3"},[e("div",{staticClass:"list-group-item"},[e("div",{staticClass:"row align-items-center"},[e("div",{staticClass:"col-4"},[e("p",{staticClass:"mb-0 font-weight-bold small"},[t._v("Token")])]),t._v(" "),e("div",{staticClass:"col-8"},[e("input",{staticClass:"form-control",attrs:{disabled:""},domProps:{value:t.editCustomTokenForm.token}})])])]),t._v(" "),e("div",{staticClass:"list-group-item"},[e("div",{staticClass:"row align-items-center"},[e("div",{staticClass:"col-4"},[e("p",{staticClass:"mb-0 font-weight-bold small"},[t._v("Weight")])]),t._v(" "),e("div",{staticClass:"col-8"},[e("input",{directives:[{name:"model",rawName:"v-model",value:t.editCustomTokenForm.weight,expression:"editCustomTokenForm.weight"}],staticClass:"form-control",attrs:{type:"number",min:"-128",max:"128",step:"1"},domProps:{value:t.editCustomTokenForm.weight},on:{input:function(e){e.target.composing||t.$set(t.editCustomTokenForm,"weight",e.target.value)}}})])])]),t._v(" "),e("div",{staticClass:"list-group-item"},[e("div",{staticClass:"row align-items-center"},[e("div",{staticClass:"col-4"},[e("p",{staticClass:"mb-0 font-weight-bold small"},[t._v("Category")])]),t._v(" "),e("div",{staticClass:"col-8"},[e("select",{directives:[{name:"model",rawName:"v-model",value:t.editCustomTokenForm.category,expression:"editCustomTokenForm.category"}],staticClass:"form-control",on:{change:function(e){var a=Array.prototype.filter.call(e.target.options,(function(t){return t.selected})).map((function(t){return"_value"in t?t._value:t.value}));t.$set(t.editCustomTokenForm,"category",e.target.multiple?a:a[0])}}},[e("option",{attrs:{value:"spam"}},[t._v("Is Spam")]),t._v(" "),e("option",{attrs:{value:"ham"}},[t._v("Is NOT Spam")])])])])]),t._v(" "),e("div",{staticClass:"list-group-item"},[e("div",{staticClass:"row align-items-center"},[e("div",{staticClass:"col-4"},[e("p",{staticClass:"mb-0 font-weight-bold small"},[t._v("Note")])]),t._v(" "),e("div",{staticClass:"col-8"},[e("textarea",{directives:[{name:"model",rawName:"v-model",value:t.editCustomTokenForm.note,expression:"editCustomTokenForm.note"}],staticClass:"form-control",domProps:{value:t.editCustomTokenForm.note},on:{input:function(e){e.target.composing||t.$set(t.editCustomTokenForm,"note",e.target.value)}}})])])]),t._v(" "),e("div",{staticClass:"list-group-item"},[e("div",{staticClass:"row align-items-center"},[e("div",{staticClass:"col-4"},[e("p",{staticClass:"mb-0 font-weight-bold small"},[t._v("Active")])]),t._v(" "),e("div",{staticClass:"col-8 text-right"},[e("div",{staticClass:"custom-control custom-checkbox"},[e("input",{directives:[{name:"model",rawName:"v-model",value:t.editCustomTokenForm.active,expression:"editCustomTokenForm.active"}],staticClass:"custom-control-input",attrs:{type:"checkbox",id:"customCheck1"},domProps:{checked:Array.isArray(t.editCustomTokenForm.active)?t._i(t.editCustomTokenForm.active,null)>-1:t.editCustomTokenForm.active},on:{change:function(e){var a=t.editCustomTokenForm.active,s=e.target,i=!!s.checked;if(Array.isArray(a)){var n=t._i(a,null);s.checked?n<0&&t.$set(t.editCustomTokenForm,"active",a.concat([null])):n>-1&&t.$set(t.editCustomTokenForm,"active",a.slice(0,n).concat(a.slice(n+1)))}else t.$set(t.editCustomTokenForm,"active",i)}}}),t._v(" "),e("label",{staticClass:"custom-control-label",attrs:{for:"customCheck1"}})])])])])])])],1)},i=[function(){var t=this,e=t._self._c;return e("div",{staticClass:"col-xl-4 col-lg-6 col-md-4"},[e("p",{staticClass:"display-1 text-white d-inline-block mb-0"},[t._v("Autospam")]),t._v(" "),e("p",{staticClass:"text-lighter"},[t._v("The automated spam detection system")])])},function(){var t=this._self._c;return t("div",{staticClass:"col-auto"},[t("div",{staticClass:"icon icon-shape bg-gradient-primary text-white rounded-circle shadow"},[t("i",{staticClass:"far fa-sensor-alert"})])])},function(){var t=this._self._c;return t("div",{staticClass:"col-auto"},[t("div",{staticClass:"icon icon-shape bg-gradient-primary text-white rounded-circle shadow"},[t("i",{staticClass:"far fa-shield-alt"})])])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"card-body text-center"},[e("p",[e("i",{staticClass:"far fa-check-circle fa-5x text-success"})]),t._v(" "),e("p",{staticClass:"lead text-light mb-0"},[t._v("Autospam Service Operational")])])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"card-body text-center"},[e("p",[e("i",{staticClass:"far fa-exclamation-circle fa-5x text-danger"})]),t._v(" "),e("p",{staticClass:"lead text-danger font-weight-bold mb-0"},[t._v("Autospam Service Inactive")]),t._v(" "),e("p",{staticClass:"small text-light mb-0"},[t._v("To activate, "),e("a",{attrs:{href:"/i/admin/settings"}},[t._v("click here")]),t._v(" and enable "),e("span",{staticClass:"font-weight-bold"},[t._v("Spam detection")])])])},function(){var t=this._self._c;return t("p",[t("i",{staticClass:"far fa-check-circle fa-5x text-success"})])},function(){var t=this._self._c;return t("p",[t("i",{staticClass:"far fa-exclamation-circle fa-5x text-danger"})])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"col-12 col-md-8"},[e("div",{staticClass:"card bg-default"},[e("div",{staticClass:"card-header bg-transparent"},[e("div",{staticClass:"row align-items-center"},[e("div",{staticClass:"col"},[e("h6",{staticClass:"text-light text-uppercase ls-1 mb-1"},[t._v("Stats")]),t._v(" "),e("h5",{staticClass:"h3 text-white mb-0"},[t._v("Autospam Detections")])])])]),t._v(" "),e("div",{staticClass:"card-body"},[e("div",{staticClass:"chart"},[e("canvas",{staticClass:"chart-canvas",attrs:{id:"c1-dark"}})])])])])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"row"},[e("div",{staticClass:"col-12"},[e("div",{staticClass:"card card-body"},[e("h1",[t._v("About Autospam")]),t._v(" "),e("p",{staticClass:"mb-0"},[t._v("To detect and mitigate spam, we built Autospam, an internal tool that uses NLP and other behavioural metrics to classify potential spam posts.")]),t._v(" "),e("hr"),t._v(" "),e("h2",[t._v("Standard Detection")]),t._v(" "),e("p",[t._v('Standard or "Classic" detection works by evaluating several "signals" from the post and it\'s associated account.')]),t._v(" "),e("p",[t._v('Some of the following "signals" may trigger a positive detection from public posts:')]),t._v(" "),e("ul",[e("li",[t._v("Account is less than 6 months old")]),t._v(" "),e("li",[t._v("Account has less than 100 followers")]),t._v(" "),e("li",[t._v("Post contains one or more of: "),e("span",{staticClass:"badge badge-primary"},[t._v("https://")]),t._v(" "),e("span",{staticClass:"badge badge-primary"},[t._v("http://")]),t._v(" "),e("span",{staticClass:"badge badge-primary"},[t._v("hxxps://")]),t._v(" "),e("span",{staticClass:"badge badge-primary"},[t._v("hxxp://")]),t._v(" "),e("span",{staticClass:"badge badge-primary"},[t._v("www.")]),t._v(" "),e("span",{staticClass:"badge badge-primary"},[t._v(".com")]),t._v(" "),e("span",{staticClass:"badge badge-primary"},[t._v(".net")]),t._v(" "),e("span",{staticClass:"badge badge-primary"},[t._v(".org")])])]),t._v(" "),e("p",[t._v("If you've marked atleast one positive detection from an account as "),e("span",{staticClass:"font-weight-bold"},[t._v("Not spam")]),t._v(", any future posts they create will skip detection.")]),t._v(" "),e("hr"),t._v(" "),e("h2",[t._v("Advanced Detection")]),t._v(" "),e("p",[t._v("Advanced Detection works by using a statistical method that combines prior knowledge and observed data to estimate an average value. It assigns weights to both the prior knowledge and the observed data, allowing for a more informed and reliable estimation that adapts to new information.")]),t._v(" "),e("p",[t._v("When you train Spam or Not Spam data, the caption is broken up into words (tokens) and are counted (weights) and then stored in the appropriate category (Spam or Not Spam).")]),t._v(" "),e("p",[t._v("The training data is then used to classify spam on future posts (captions) by calculating each token and associated weights and comparing it to known categories (Spam or Not Spam).")])])])])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"row"},[e("div",{staticClass:"col-12"},[e("div",{staticClass:"card card-body"},[e("p",{staticClass:"mb-0"},[t._v("\n\t \t\t\t\tIn order for Autospam to be effective, you need to train it by classifying data as spam or not-spam.\n\t \t\t\t")]),t._v(" "),e("p",{staticClass:"mb-0 small"},[t._v("\n\t \t\t\t\tWe recommend atleast 200 classifications for both spam and not-spam, it is important to train Autospam on both so you get more accurate results.\n\t \t\t\t")])])])])},function(){var t=this._self._c;return t("p",{staticClass:"mb-0"},[t("i",{staticClass:"far fa-sensor-alert fa-5x text-danger"})])},function(){var t=this._self._c;return t("p",{staticClass:"mb-0"},[t("i",{staticClass:"far fa-check-circle fa-5x text-success"})])},function(){var t=this,e=t._self._c;return e("thead",{staticClass:"thead-dark"},[e("tr",[e("th",{attrs:{scope:"col"}},[t._v("ID")]),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("Type")]),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("Reported Account")]),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("Created")]),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("View Report")])])])},function(){var t=this._self._c;return t("td",{staticClass:"align-middle"},[t("p",{staticClass:"text-capitalize font-weight-bold mb-0"},[this._v("Autospam Post")])])},function(){var t=this._self._c;return t("div",{staticClass:"col-12 col-md-9"},[t("div",{staticClass:"card card-body mb-0"},[t("p",{staticClass:"mb-0"},[this._v("\n\t \t\t\t\tTokens are used to split paragraphs and sentences into smaller units that can be more easily assigned meaning.\n\t \t\t\t")])])])},function(){var t=this,e=t._self._c;return e("thead",{staticClass:"thead-dark"},[e("tr",[e("th",{attrs:{scope:"col"}},[t._v("ID")]),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("Token")]),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("Category")]),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("Weight")]),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("Created")]),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("Edit")])])])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"card"},[e("div",{staticClass:"card-body text-center py-5"},[e("p",{staticClass:"pt-5"},[e("i",{staticClass:"far fa-inbox fa-4x text-light"})]),t._v(" "),e("p",{staticClass:"lead mb-5"},[t._v("No custom tokens found!")])])])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"row"},[e("div",{staticClass:"col-12"},[e("div",{staticClass:"card card-body"},[e("p",{staticClass:"mb-0"},[t._v("\n\t \t\t\t\tYou can import and export Spam training data\n\t \t\t\t")]),t._v(" "),e("p",{staticClass:"mb-0 small"},[t._v("\n\t \t\t\t\tWe recommend exercising caution when importing training data from untrusted parties!\n\t \t\t\t")])])])])},function(){var t=this._self._c;return t("p",{staticClass:"mb-0"},[t("i",{staticClass:"far fa-plus-circle fa-5x text-light"})])},function(){var t=this._self._c;return t("p",{staticClass:"mb-0"},[t("i",{staticClass:"far fa-download fa-5x text-light"})])}]},41298:(t,e,a)=>{"use strict";a.r(e),a.d(e,{render:()=>s,staticRenderFns:()=>i});var s=function(){var t=this,e=t._self._c;return t.loaded?e("div",[e("div",{staticClass:"header bg-primary pb-2 mt-n4"},[e("div",{staticClass:"container-fluid"},[e("div",{staticClass:"header-body"},[e("div",{staticClass:"row align-items-center py-4"},[t._m(0),t._v(" "),e("div",{staticClass:"col-lg-6 col-5"},[e("p",{staticClass:"text-right"},[e("button",{staticClass:"btn btn-outline-white btn-lg px-5 py-2",on:{click:t.save}},[t._v("Save changes")])])])])])])]),t._v(" "),e("div",{staticClass:"container"},[e("div",{staticClass:"row"},[e("div",{staticClass:"col-12 col-md-3"},[e("div",{staticClass:"nav-wrapper"},[e("div",{staticClass:"nav flex-column nav-pills",attrs:{id:"tabs-icons-text",role:"tablist","aria-orientation":"vertical"}},t._l(t.tabs,(function(a){return e("div",{staticClass:"nav-item"},[e("a",{staticClass:"nav-link mb-sm-3",class:{active:t.tabIndex===a.id},attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.toggleTab(a.id)}}},[e("i",{class:a.icon}),t._v(" "),e("span",{staticClass:"ml-2"},[t._v(t._s(a.title))])])])})),0)])]),t._v(" "),e("div",{staticClass:"col-12 col-md-9"},[e("div",{staticClass:"card shadow mt-3"},[e("div",{staticClass:"card-body"},[e("div",{staticClass:"tab-content"},[1===t.tabIndex?e("div",{staticClass:"tab-pane fade show active"},[t.isSubmitting||t.state.awaiting_approval||t.state.is_active?t.isSubmitting||!t.state.awaiting_approval||t.state.is_active?!t.isSubmitting&&t.state.awaiting_approval&&t.state.is_active?e("div",[t._m(3)]):t.isSubmitting||t.state.awaiting_approval||!t.state.is_active?t.isSubmitting?e("div",[e("div",{staticClass:"card card-body shadow-none border d-flex align-items-center justify-content-center py-5"},[e("b-spinner",{attrs:{variant:"primary"}}),t._v(" "),e("p",{staticClass:"lead my-0 text-primary"},[t._v("Sending submission...")])],1)]):e("div",[t._m(6)]):e("div",[e("div",{staticClass:"card card-body shadow-none border d-flex align-items-center justify-content-center py-5"},[e("h2",{staticClass:"font-weight-bold"},[t._v("Active Listing")]),t._v(" "),t._m(4),t._v(" "),t._m(5),t._v(" "),e("button",{staticClass:"btn btn-primary btn-sm mt-3 font-weight-bold px-5 text-uppercase",on:{click:t.handleSubmit}},[t._v("\n Update my listing on pixelfed.org\n ")])])]):e("div",[t._m(2)]):e("div",{staticClass:"d-flex align-items-center justify-content-center"},[e("div",{staticClass:"text-center mb-4"},[t._m(1),t._v(" "),e("p",{staticClass:"display-3 mb-1"},[t._v("Awaiting Submission")]),t._v(" "),t.state.is_eligible||t.state.submission_exists?t.state.is_eligible&&!t.state.submission_exists?e("div",{staticClass:"mb-4"},[e("p",{staticClass:"lead mt-0 text-muted"},[t._v("Your directory listing is ready for submission!")]),t._v(" "),e("button",{staticClass:"btn btn-primary btn-lg font-weight-bold px-5 text-uppercase",on:{click:t.handleSubmit}},[t._v("\n Submit my Server to pixelfed.org\n ")])]):t._e():e("p",{staticClass:"lead mt-0 text-muted"},[t._v("Your directory listing isn't completed yet")])])]),t._v(" "),e("div",{staticClass:"row"},[e("div",{staticClass:"col-12 col-md-6"},[e("div",{staticClass:"card text-left"},[e("div",{staticClass:"list-group list-group-flush"},[e("div",{staticClass:"list-group-item"},[!0===t.requirements.curated_onboarding?[e("i",{staticClass:"far fa-exclamation-circle text-success"}),t._v(" "),e("span",{staticClass:"ml-2 font-weight-bold"},[t._v("\n Curated account registration\n ")])]:[e("i",{staticClass:"far",class:[t.requirements.open_registration?"fa-check-circle text-success":"fa-exclamation-circle text-danger"]}),t._v(" "),e("span",{staticClass:"ml-2 font-weight-bold"},[t._v("\n "+t._s(t.requirements.open_registration?"Open":"Closed")+" account registration\n ")])]],2),t._v(" "),e("div",{staticClass:"list-group-item"},[e("i",{staticClass:"far",class:[t.requirements.oauth_enabled?"fa-check-circle text-success":"fa-exclamation-circle text-danger"]}),t._v(" "),e("span",{staticClass:"ml-2 font-weight-bold"},[t._v("\n "+t._s(t.requirements.oauth_enabled?"Enabled":"Disabled")+" mobile apis/oauth\n ")])]),t._v(" "),e("div",{staticClass:"list-group-item"},[e("i",{staticClass:"far",class:[t.requirements.activitypub_enabled?"fa-check-circle text-success":"fa-exclamation-circle text-danger"]}),t._v(" "),e("span",{staticClass:"ml-2 font-weight-bold"},[t._v("\n "+t._s(t.requirements.activitypub_enabled?"Enabled":"Disabled")+" activitypub federation\n ")])]),t._v(" "),e("div",{staticClass:"list-group-item"},[e("i",{staticClass:"far",class:[t.form.summary&&t.form.summary.length&&t.form.location&&t.form.location.length?"fa-check-circle text-success":"fa-exclamation-circle text-danger"]}),t._v(" "),e("span",{staticClass:"ml-2 font-weight-bold"},[t._v("\n "+t._s(t.form.summary&&t.form.summary.length&&t.form.location&&t.form.location.length?"Configured":"Missing")+" server details\n ")])]),t._v(" "),e("div",{staticClass:"list-group-item"},[e("i",{staticClass:"far",class:[t.requirements_validator&&0==t.requirements_validator.length?"fa-check-circle text-success":"fa-exclamation-circle text-danger"]}),t._v(" "),e("span",{staticClass:"ml-2 font-weight-bold"},[t._v("\n "+t._s(t.requirements_validator&&0==t.requirements_validator.length?"Valid":"Invalid")+" feature requirements\n ")])])])])]),t._v(" "),e("div",{staticClass:"col-12 col-md-6"},[e("div",{staticClass:"card text-left"},[e("div",{staticClass:"list-group list-group-flush"},[e("div",{staticClass:"list-group-item"},[e("i",{staticClass:"far",class:[t.form.contact_account?"fa-check-circle text-success":"fa-exclamation-circle text-danger"]}),t._v(" "),e("span",{staticClass:"ml-2 font-weight-bold"},[t._v("\n "+t._s(t.form.contact_account?"Configured":"Missing")+" admin account\n ")])]),t._v(" "),e("div",{staticClass:"list-group-item"},[e("i",{staticClass:"far",class:[t.form.contact_email?"fa-check-circle text-success":"fa-exclamation-circle text-danger"]}),t._v(" "),e("span",{staticClass:"ml-2 font-weight-bold"},[t._v("\n "+t._s(t.form.contact_email?"Configured":"Missing")+" contact email\n ")])]),t._v(" "),e("div",{staticClass:"list-group-item"},[e("i",{staticClass:"far",class:[t.selectedPosts&&t.selectedPosts.length?"fa-check-circle text-success":"fa-exclamation-circle text-danger"]}),t._v(" "),e("span",{staticClass:"ml-2 font-weight-bold"},[t._v("\n "+t._s(t.selectedPosts&&t.selectedPosts.length?"Configured":"Missing")+" favourite posts\n ")])]),t._v(" "),e("div",{staticClass:"list-group-item"},[e("i",{staticClass:"far",class:[t.form.privacy_pledge?"fa-check-circle text-success":"fa-exclamation-circle text-danger"]}),t._v(" "),e("span",{staticClass:"ml-2 font-weight-bold"},[t._v("\n "+t._s(t.form.privacy_pledge?"Configured":"Missing")+" privacy pledge\n ")])]),t._v(" "),e("div",{staticClass:"list-group-item"},[e("i",{staticClass:"far",class:[t.communityGuidelines&&t.communityGuidelines.length?"fa-check-circle text-success":"fa-exclamation-circle text-danger"]}),t._v(" "),e("span",{staticClass:"ml-2 font-weight-bold"},[t._v("\n "+t._s(t.communityGuidelines&&t.communityGuidelines.length?"Configured":"Missing")+" community guidelines\n ")])])])])])])]):2===t.tabIndex?e("div",{staticClass:"tab-pane fade show active"},[e("p",{staticClass:"description"},[t._v("Cosby sweater eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american apparel, butcher voluptate nisi qui.")])]):3===t.tabIndex?e("div",{staticClass:"tab-pane fade show active",attrs:{role:"tabpanel"}},[e("h2",{staticClass:"display-4 mb-0"},[t._v("Server Details")]),t._v(" "),e("p",{staticClass:"small text-muted"},[t._v("Edit your server details to better describe it")]),t._v(" "),e("hr",{staticClass:"mt-0"}),t._v(" "),e("div",{staticClass:"row"},[e("div",{staticClass:"col-12 col-md-6"},[e("div",{staticClass:"card shadow-none border card-body"},[e("div",{staticClass:"form-group mb-0"},[e("label",{staticClass:"font-weight-bold",attrs:{for:"form-summary"}},[t._v("Summary")]),t._v(" "),e("textarea",{directives:[{name:"model",rawName:"v-model",value:t.form.summary,expression:"form.summary"}],staticClass:"form-control form-control-muted",attrs:{id:"form-summary",rows:"3",placeholder:"A descriptive summary of your instance up to 140 characters long. HTML is not allowed."},domProps:{value:t.form.summary},on:{input:function(e){e.target.composing||t.$set(t.form,"summary",e.target.value)}}}),t._v(" "),e("p",{staticClass:"help-text small text-muted text-right"},[t._v("\n "+t._s(t.form.summary&&t.form.summary.length?t.form.summary.length:0)+"/140\n ")])])])]),t._v(" "),e("div",{staticClass:"col-12 col-md-6"},[e("div",{staticClass:"card shadow-none border card-body"},[e("div",{staticClass:"form-group mb-0"},[e("label",{staticClass:"font-weight-bold",attrs:{for:"form-summary"}},[t._v("Location")]),t._v(" "),e("select",{directives:[{name:"model",rawName:"v-model",value:t.form.location,expression:"form.location"}],staticClass:"form-control form-control-muted",on:{change:function(e){var a=Array.prototype.filter.call(e.target.options,(function(t){return t.selected})).map((function(t){return"_value"in t?t._value:t.value}));t.$set(t.form,"location",e.target.multiple?a:a[0])}}},[e("option",{attrs:{selected:"",disabled:"",value:"0"}},[t._v("Select the country your server is in")]),t._v(" "),t._l(t.initialData.countries,(function(a){return e("option",{domProps:{value:a}},[t._v(t._s(a))])}))],2),t._v(" "),e("p",{staticClass:"form-text small text-muted"},[t._v("Select the country your server is hosted in, even if you are in a different country")])])])])]),t._v(" "),e("div",{staticClass:"list-group mb-4"},[e("div",{staticClass:"list-group-item"},[e("label",{staticClass:"font-weight-bold mb-0"},[t._v("Server Banner")]),t._v(" "),e("p",{staticClass:"small"},[t._v("Add an optional banner image to your directory listing")]),t._v(" "),e("div",{staticClass:"row"},[e("div",{staticClass:"col-12 col-md-6"},[e("div",{staticClass:"card mb-0 shadow-none border"},[t.form.banner_image?e("div",[e("a",{attrs:{href:t.form.banner_image,target:"_blank"}},[e("img",{staticClass:"card-img-top",attrs:{src:t.form.banner_image}})])]):e("div",{staticClass:"card-body bg-primary text-white"},[t._m(7),t._v(" "),e("p",{staticClass:"text-center mb-0"},[t._v("No banner image")])])])]),t._v(" "),e("div",{staticClass:"col-12 col-md-6"},[t.isUploadingBanner?e("div",{staticClass:"text-center"},[e("b-spinner",{attrs:{variant:"primary"}})],1):e("div",{staticClass:"custom-file"},[e("input",{ref:"bannerImageRef",staticClass:"custom-file-input",attrs:{type:"file",id:"banner_image"},on:{change:t.uploadBannerImage}}),t._v(" "),e("label",{staticClass:"custom-file-label",attrs:{for:"banner_image"}},[t._v("Choose file")]),t._v(" "),e("p",{staticClass:"form-text text-muted small mb-0"},[t._v("Must be 1920 by 1080 pixels")]),t._v(" "),t._m(8),t._v(" "),t.form.banner_image&&!t.form.banner_image.endsWith("default.jpg")?e("div",[e("button",{staticClass:"btn btn-danger font-weight-bold btn-block mt-5",on:{click:t.deleteBannerImage}},[t._v("Delete banner image")])]):t._e()])])])])]),t._v(" "),e("div",{staticClass:"row"},[e("div",{staticClass:"col-12 col-md-6"},[e("div",{staticClass:"card shadow-none border card-body"},[e("div",{staticClass:"form-group mb-0"},[e("label",{staticClass:"font-weight-bold",attrs:{for:"form-summary"}},[t._v("Primary Language")]),t._v(" "),e("select",{directives:[{name:"model",rawName:"v-model",value:t.form.primary_locale,expression:"form.primary_locale"}],staticClass:"form-control form-control-muted",attrs:{disabled:""},on:{change:function(e){var a=Array.prototype.filter.call(e.target.options,(function(t){return t.selected})).map((function(t){return"_value"in t?t._value:t.value}));t.$set(t.form,"primary_locale",e.target.multiple?a:a[0])}}},t._l(t.initialData.available_languages,(function(a){return e("option",{domProps:{value:a.code}},[t._v(t._s(a.name))])})),0),t._v(" "),t._m(9)])])])])]):4===t.tabIndex?e("div",{staticClass:"tab-pane fade show active",attrs:{role:"tabpanel"}},[e("h2",{staticClass:"display-4 mb-0"},[t._v("Admin Contact")]),t._v(" "),e("p",{staticClass:"small text-muted"},[t._v("Set a designated admin account and public email address")]),t._v(" "),e("hr",{staticClass:"mt-0"}),t._v(" "),e("div",{staticClass:"row"},[e("div",{staticClass:"col-12 col-md-6"},[t.initialData.admins.length?e("div",{staticClass:"form-group"},[e("label",{staticClass:"font-weight-bold",attrs:{for:"form-summary"}},[t._v("Designated Admin")]),t._v(" "),e("select",{directives:[{name:"model",rawName:"v-model",value:t.form.contact_account,expression:"form.contact_account"}],staticClass:"form-control form-control-muted",on:{change:function(e){var a=Array.prototype.filter.call(e.target.options,(function(t){return t.selected})).map((function(t){return"_value"in t?t._value:t.value}));t.$set(t.form,"contact_account",e.target.multiple?a:a[0])}}},[e("option",{attrs:{disabled:"",value:"0"}},[t._v("Select a designated admin")]),t._v(" "),t._l(t.initialData.admins,(function(a,s){return e("option",{key:"pfc-"+a+s,domProps:{value:a.pid}},[t._v(t._s(a.username))])}))],2)]):e("div",{staticClass:"px-3 pb-2 pt-0 border border-danger rounded"},[e("p",{staticClass:"lead font-weight-bold text-danger"},[t._v("No admin(s) found")]),t._v(" "),t._m(10)])]),t._v(" "),e("div",{staticClass:"col-12 col-md-6"},[e("div",{staticClass:"form-group"},[e("label",{staticClass:"font-weight-bold",attrs:{for:"form-summary"}},[t._v("Public Email")]),t._v(" "),e("input",{directives:[{name:"model",rawName:"v-model",value:t.form.contact_email,expression:"form.contact_email"}],staticClass:"form-control form-control-muted",attrs:{placeholder:"info@example.org"},domProps:{value:t.form.contact_email},on:{input:function(e){e.target.composing||t.$set(t.form,"contact_email",e.target.value)}}}),t._v(" "),e("p",{staticClass:"help-text small text-muted"},[t._v("\n Must be a valid email address\n ")])])])])]):5===t.tabIndex?e("div",{staticClass:"tab-pane fade show active",attrs:{role:"tabpanel"}},[e("h2",{staticClass:"display-4 mb-0"},[t._v("Favourite Posts")]),t._v(" "),e("p",{staticClass:"small text-muted"},[t._v("Show off a few favourite posts from your server")]),t._v(" "),e("hr",{staticClass:"mt-0 mb-1"}),t._v(" "),e("div",{directives:[{name:"show",rawName:"v-show",value:t.selectedPosts&&12!==t.selectedPosts.length,expression:"selectedPosts && selectedPosts.length !== 12"}],staticClass:"nav-wrapper"},[e("ul",{staticClass:"nav nav-pills nav-fill flex-column flex-md-row",attrs:{role:"tablist"}},[e("li",{staticClass:"nav-item"},[e("a",{staticClass:"nav-link mb-sm-3 mb-md-0 active",attrs:{id:"favposts-1-tab","data-toggle":"tab",href:"#favposts-1",role:"tab","aria-controls":"favposts-1","aria-selected":"true"}},[t._v(t._s(this.selectedPosts.length?this.selectedPosts.length:"")+" Selected Posts")])]),t._v(" "),t.selectedPosts&&t.selectedPosts.length<12?e("li",{staticClass:"nav-item"},[e("a",{staticClass:"nav-link mb-sm-3 mb-md-0",attrs:{id:"favposts-2-tab","data-toggle":"tab",href:"#favposts-2",role:"tab","aria-controls":"favposts-2","aria-selected":"false"}},[t._v("Add by post id")])]):t._e(),t._v(" "),t.selectedPosts&&t.selectedPosts.length<12?e("li",{staticClass:"nav-item"},[e("a",{staticClass:"nav-link mb-sm-3 mb-md-0",attrs:{id:"favposts-3-tab","data-toggle":"tab",href:"#favposts-3",role:"tab","aria-controls":"favposts-3","aria-selected":"false"},on:{click:t.initPopularPosts}},[t._v("Add by popularity")])]):t._e()])]),t._v(" "),e("div",{staticClass:"tab-content mt-3"},[e("div",{staticClass:"tab-pane fade list-fade-bottom show active",attrs:{id:"favposts-1",role:"tabpanel","aria-labelledby":"favposts-1-tab"}},[t.selectedPosts&&t.selectedPosts.length?e("div",{staticStyle:{"max-height":"520px","overflow-y":"auto"}},[t._l(t.selectedPosts,(function(a){return e("div",{key:"sp-"+a.id,staticClass:"list-group-item border-primary form-control-muted"},[e("div",{staticClass:"media align-items-center"},[e("div",{staticClass:"custom-control custom-checkbox mr-2"},[e("input",{staticClass:"custom-control-input",attrs:{type:"checkbox",checked:"",id:"checkbox-sp-".concat(a.id)},on:{change:function(e){return t.toggleSelectedPost(a)}}}),t._v(" "),e("label",{staticClass:"custom-control-label",attrs:{for:"checkbox-sp-".concat(a.id)}})]),t._v(" "),e("img",{staticClass:"border rounded-sm mr-3",staticStyle:{"object-fit":"cover"},attrs:{src:a.media_attachments[0].url,width:"100",height:"100",loading:"lazy"}}),t._v(" "),e("div",{staticClass:"media-body"},[e("p",{staticClass:"lead mt-0 mb-0 font-weight-bold"},[t._v("@"+t._s(a.account.username))]),t._v(" "),e("p",{staticClass:"text-muted mb-0",staticStyle:{"font-size":"14px"}},[e("span",[e("span",{staticClass:"font-weight-bold"},[t._v(t._s(t.formatCount(a.favourites_count)))]),t._v(" Likes")]),t._v(" "),e("span",{staticClass:"mx-2"},[t._v("·")]),t._v(" "),e("span",[e("span",{staticClass:"font-weight-bold"},[t._v(t._s(t.formatCount(a.account.followers_count)))]),t._v(" Followers")]),t._v(" "),e("span",{staticClass:"mx-2"},[t._v("·")]),t._v(" "),e("span",[t._v("Created "),e("span",{staticClass:"font-weight-bold"},[t._v(t._s(t.formatDateTime(a.created_at)))])])])]),t._v(" "),e("a",{staticClass:"btn btn-outline-primary btn-sm rounded-pill",attrs:{href:a.url,target:"_blank"}},[t._v("View")])])])})),t._v(" "),e("div",{staticClass:"mt-5 mb-5 pt-3"})],2):e("div",[t._m(11)])]),t._v(" "),e("div",{staticClass:"tab-pane fade",attrs:{id:"favposts-2",role:"tabpanel","aria-labelledby":"favposts-2-tab"}},[e("div",{staticClass:"row"},[e("div",{staticClass:"col-12 col-md-6"},[e("div",{staticClass:"form-group"},[e("label",{staticClass:"font-weight-bold"},[t._v("Find and add by post id")]),t._v(" "),e("div",{staticClass:"input-group mb-3"},[e("input",{directives:[{name:"model",rawName:"v-model",value:t.favouritePostByIdInput,expression:"favouritePostByIdInput"}],staticClass:"form-control form-control-muted border",attrs:{type:"number",placeholder:"Post id",min:"1",max:"99999999999999999999",disabled:t.favouritePostByIdFetching},domProps:{value:t.favouritePostByIdInput},on:{input:function(e){e.target.composing||(t.favouritePostByIdInput=e.target.value)}}}),t._v(" "),e("div",{staticClass:"input-group-append"},[t.favouritePostByIdFetching?e("button",{staticClass:"btn btn-outline-primary",attrs:{disabled:""}},[t._m(12)]):e("button",{staticClass:"btn btn-outline-primary",attrs:{type:"button"},on:{click:t.handlePostByIdSearch}},[t._v("\n Search\n ")])])])])]),t._v(" "),t._m(13)])]),t._v(" "),e("div",{staticClass:"tab-pane fade list-fade-bottom mb-0",attrs:{id:"favposts-3",role:"tabpanel","aria-labelledby":"favposts-3-tab"}},[t.popularPostsLoaded?e("div",{staticClass:"list-group",staticStyle:{"max-height":"520px","overflow-y":"auto"}},[t._l(t.popularPosts,(function(a){return e("div",{key:"pp-"+a.id,staticClass:"list-group-item",class:[t.selectedPosts.includes(a)?"border-primary form-control-muted":""]},[e("div",{staticClass:"media align-items-center"},[e("div",{staticClass:"custom-control custom-checkbox mr-2"},[e("input",{staticClass:"custom-control-input",attrs:{type:"checkbox",id:"checkbox-pp-".concat(a.id)},domProps:{checked:t.selectedPosts.includes(a)},on:{change:function(e){return t.togglePopularPost(a.id,a)}}}),t._v(" "),e("label",{staticClass:"custom-control-label",attrs:{for:"checkbox-pp-".concat(a.id)}})]),t._v(" "),e("img",{staticClass:"border rounded-sm mr-3",staticStyle:{"object-fit":"cover"},attrs:{src:a.media_attachments[0].url,width:"100",height:"100",loading:"lazy"}}),t._v(" "),e("div",{staticClass:"media-body"},[e("p",{staticClass:"lead mt-0 mb-0 font-weight-bold"},[t._v("@"+t._s(a.account.username))]),t._v(" "),e("p",{staticClass:"text-muted mb-0",staticStyle:{"font-size":"14px"}},[e("span",[e("span",{staticClass:"font-weight-bold"},[t._v(t._s(t.formatCount(a.favourites_count)))]),t._v(" Likes")]),t._v(" "),e("span",{staticClass:"mx-2"},[t._v("·")]),t._v(" "),e("span",[e("span",{staticClass:"font-weight-bold"},[t._v(t._s(t.formatCount(a.account.followers_count)))]),t._v(" Followers")]),t._v(" "),e("span",{staticClass:"mx-2"},[t._v("·")]),t._v(" "),e("span",[t._v("Created "),e("span",{staticClass:"font-weight-bold"},[t._v(t._s(t.formatDateTime(a.created_at)))])])])]),t._v(" "),e("a",{staticClass:"btn btn-outline-primary btn-sm rounded-pill",attrs:{href:a.url,target:"_blank"}},[t._v("View")])])])})),t._v(" "),e("div",{staticClass:"mt-5 mb-3"})],2):e("div",{staticClass:"text-center py-5"},[t._m(14)])])])]):6===t.tabIndex?e("div",{staticClass:"tab-pane fade show active",attrs:{role:"tabpanel"}},[e("h2",{staticClass:"display-4 mb-0"},[t._v("Privacy Pledge")]),t._v(" "),e("p",{staticClass:"small text-muted"},[t._v("Pledge to keep you and your data private and securely stored")]),t._v(" "),e("hr",{staticClass:"mt-0"}),t._v(" "),e("p",[t._v("To qualify for the Privacy Pledge, you must abide by the following rules:")]),t._v(" "),t._m(15),t._v(" "),e("p",{staticClass:"small text-muted mb-0"},[t._v("You may use 3rd party services like captchas on specific pages, so long as they are clearly defined in your privacy policy")]),t._v(" "),e("hr"),t._v(" "),e("p"),e("div",{staticClass:"custom-control custom-checkbox mr-2"},[e("input",{directives:[{name:"model",rawName:"v-model",value:t.form.privacy_pledge,expression:"form.privacy_pledge"}],staticClass:"custom-control-input",attrs:{type:"checkbox",id:"privacy-pledge"},domProps:{checked:Array.isArray(t.form.privacy_pledge)?t._i(t.form.privacy_pledge,null)>-1:t.form.privacy_pledge},on:{change:function(e){var a=t.form.privacy_pledge,s=e.target,i=!!s.checked;if(Array.isArray(a)){var n=t._i(a,null);s.checked?n<0&&t.$set(t.form,"privacy_pledge",a.concat([null])):n>-1&&t.$set(t.form,"privacy_pledge",a.slice(0,n).concat(a.slice(n+1)))}else t.$set(t.form,"privacy_pledge",i)}}}),t._v(" "),e("label",{staticClass:"custom-control-label font-weight-bold",attrs:{for:"privacy-pledge"}},[t._v("I agree to the uphold the Privacy Pledge")])]),t._v(" "),e("p")]):7===t.tabIndex?e("div",{staticClass:"tab-pane fade show active",attrs:{role:"tabpanel"}},[e("h2",{staticClass:"display-4 mb-0"},[t._v("Community Guidelines")]),t._v(" "),e("p",{staticClass:"small text-muted"},[t._v("A few ground rules to keep your community healthy and safe.")]),t._v(" "),e("hr",{staticClass:"mt-0"}),t._v(" "),t.communityGuidelines&&t.communityGuidelines.length?e("ol",{staticClass:"font-weight-bold"},t._l(t.communityGuidelines,(function(a){return e("li",{staticClass:"text-primary"},[e("span",{staticClass:"lead ml-1 text-dark"},[t._v(t._s(a))])])})),0):e("div",{staticClass:"card bg-primary text-white"},[t._m(16)]),t._v(" "),e("hr"),t._v(" "),t._m(17)]):8===t.tabIndex?e("div",{staticClass:"tab-pane fade show active",attrs:{role:"tabpanel"}},[e("h2",{staticClass:"display-4 mb-0"},[t._v("Feature Requirements")]),t._v(" "),e("p",{staticClass:"small text-muted"},[t._v("The minimum requirements for Directory inclusion.")]),t._v(" "),e("hr",{staticClass:"mt-0"}),t._v(" "),e("div",{staticClass:"row"},[e("div",{staticClass:"col-12 col-md-6"},[e("div",{staticClass:"list-group"},[e("div",{staticClass:"list-group-item d-flex align-items-center"},[e("div",[e("i",{staticClass:"far fa-2x mr-4",class:[t.requirements_validator.hasOwnProperty("media_types")?"fa-exclamation-circle text-danger":"fa-check-circle text-success"]})]),t._v(" "),e("div",[e("p",{staticClass:"font-weight-bold text-dark my-0"},[t._v("Media Types")]),t._v(" "),e("p",{staticClass:"mb-0 small text-muted"},[t._v("Allowed MIME types. image/jpeg and image/png by default")]),t._v(" "),t.requirements_validator.hasOwnProperty("media_types")?e("p",{staticClass:"mb-0 text-danger font-weight-bold"},[t._v(t._s(t.requirements_validator.media_types[0]))]):t._e()])]),t._v(" "),t.feature_config.optimize_image?e("div",{staticClass:"list-group-item d-flex align-items-center"},[e("div",[e("i",{staticClass:"far fa-2x mr-4",class:[t.requirements_validator.hasOwnProperty("image_quality")?"fa-exclamation-circle text-danger":"fa-check-circle text-success"]})]),t._v(" "),e("div",[e("p",{staticClass:"font-weight-bold text-dark my-0"},[t._v("Image Quality")]),t._v(" "),e("p",{staticClass:"mb-0 small text-muted"},[t._v("Image optimization is enabled, the image quality must be a value between 1-100.")]),t._v(" "),t.requirements_validator.hasOwnProperty("image_quality")?e("p",{staticClass:"mb-0 text-danger font-weight-bold"},[t._v(t._s(t.requirements_validator.image_quality[0]))]):t._e()])]):t._e(),t._v(" "),e("div",{staticClass:"list-group-item d-flex align-items-center"},[e("div",[e("i",{staticClass:"far fa-2x mr-4",class:[t.requirements_validator.hasOwnProperty("max_photo_size")?"fa-exclamation-circle text-danger":"fa-check-circle text-success"]})]),t._v(" "),e("div",[e("p",{staticClass:"font-weight-bold text-dark my-0"},[t._v("Max Photo Size")]),t._v(" "),e("p",{staticClass:"mb-0 small text-muted"},[t._v("Max photo upload size in kb. Must be between 15-100 MB.")]),t._v(" "),t.requirements_validator.hasOwnProperty("max_photo_size")?e("p",{staticClass:"mb-0 text-danger font-weight-bold"},[t._v(t._s(t.requirements_validator.max_photo_size[0]))]):t._e()])]),t._v(" "),e("div",{staticClass:"list-group-item d-flex align-items-center"},[e("div",[e("i",{staticClass:"far fa-2x mr-4",class:[t.requirements_validator.hasOwnProperty("max_caption_length")?"fa-exclamation-circle text-danger":"fa-check-circle text-success"]})]),t._v(" "),e("div",[e("p",{staticClass:"font-weight-bold text-dark my-0"},[t._v("Max Caption Length")]),t._v(" "),e("p",{staticClass:"mb-0 small text-muted"},[t._v("The max caption length limit. Must be between 500-10000.")]),t._v(" "),t.requirements_validator.hasOwnProperty("max_caption_length")?e("p",{staticClass:"mb-0 text-danger font-weight-bold"},[t._v(t._s(t.requirements_validator.max_caption_length[0]))]):t._e()])])])]),t._v(" "),e("div",{staticClass:"col-12 col-md-6"},[e("div",{staticClass:"list-group"},[e("div",{staticClass:"list-group-item d-flex align-items-center"},[e("div",[e("i",{staticClass:"far fa-2x mr-4",class:[t.requirements_validator.hasOwnProperty("max_altext_length")?"fa-exclamation-circle text-danger":"fa-check-circle text-success"]})]),t._v(" "),e("div",[e("p",{staticClass:"font-weight-bold text-dark my-0"},[t._v("Max Alt-text length")]),t._v(" "),e("p",{staticClass:"mb-0 small text-muted"},[t._v("The alt-text length limit. Must be between 1000-5000.")]),t._v(" "),t.requirements_validator.hasOwnProperty("max_altext_length")?e("p",{staticClass:"mb-0 text-danger font-weight-bold"},[t._v(t._s(t.requirements_validator.max_altext_length[0]))]):t._e()])]),t._v(" "),t.feature_config.enforce_account_limit?e("div",{staticClass:"list-group-item d-flex align-items-center"},[e("div",[e("i",{staticClass:"far fa-2x mr-4",class:[t.requirements_validator.hasOwnProperty("max_account_size")?"fa-exclamation-circle text-danger":"fa-check-circle text-success"]})]),t._v(" "),e("div",[e("p",{staticClass:"font-weight-bold text-dark my-0"},[t._v("Max Account Size")]),t._v(" "),e("p",{staticClass:"mb-0 small text-muted"},[t._v("The account storage limit. Must be 1GB at minimum.")]),t._v(" "),t.requirements_validator.hasOwnProperty("max_account_size")?e("p",{staticClass:"mb-0 text-danger font-weight-bold"},[t._v(t._s(t.requirements_validator.max_account_size[0]))]):t._e()])]):t._e(),t._v(" "),e("div",{staticClass:"list-group-item d-flex align-items-center"},[e("div",[e("i",{staticClass:"far fa-2x mr-4",class:[t.requirements_validator.hasOwnProperty("max_album_length")?"fa-exclamation-circle text-danger":"fa-check-circle text-success"]})]),t._v(" "),e("div",[e("p",{staticClass:"font-weight-bold text-dark my-0"},[t._v("Max Album Length")]),t._v(" "),e("p",{staticClass:"mb-0 small text-muted"},[t._v("Max photos per album post. Must be between 4-20.")]),t._v(" "),t.requirements_validator.hasOwnProperty("max_album_length")?e("p",{staticClass:"mb-0 text-danger font-weight-bold"},[t._v(t._s(t.requirements_validator.max_album_length[0]))]):t._e()])]),t._v(" "),e("div",{staticClass:"list-group-item d-flex align-items-center"},[e("div",[e("i",{staticClass:"far fa-2x mr-4",class:[t.requirements_validator.hasOwnProperty("account_deletion")?"fa-exclamation-circle text-danger":"fa-check-circle text-success"]})]),t._v(" "),e("div",[e("p",{staticClass:"font-weight-bold text-dark my-0"},[t._v("Account Deletion")]),t._v(" "),e("p",{staticClass:"mb-0 small text-muted"},[t._v("Allow users to delete their own account.")]),t._v(" "),t.requirements_validator.hasOwnProperty("account_deletion")?e("p",{staticClass:"mb-0 text-danger font-weight-bold"},[t._v(t._s(t.requirements_validator.account_deletion[0]))]):t._e()])])])])])]):9===t.tabIndex?e("div",{staticClass:"tab-pane fade show active",attrs:{role:"tabpanel"}},[e("h2",{staticClass:"display-4 mb-0"},[t._v("User Testimonials")]),t._v(" "),e("p",{staticClass:"small text-muted"},[t._v("Add testimonials from your users.")]),t._v(" "),e("hr",{staticClass:"mt-0"}),t._v(" "),e("div",{staticClass:"row"},[e("div",{staticClass:"col-12 col-md-6 list-fade-bottom"},[e("div",{staticClass:"list-group pb-5",staticStyle:{"max-height":"520px","overflow-y":"auto"}},t._l(t.testimonials,(function(a,s){return e("div",{staticClass:"list-group-item",class:[s==t.testimonials.length-1?"mb-5":""]},[e("div",{staticClass:"d-flex justify-content-between align-items-center"},[e("div",{staticClass:"media"},[e("img",{staticClass:"mr-3 rounded-circle",attrs:{src:a.profile.avatar,width:"40",h:"40"}}),t._v(" "),e("div",{staticClass:"media-body"},[e("p",{staticClass:"font-weight-bold mb-0"},[t._v("\n "+t._s(a.profile.username)+"\n ")]),t._v(" "),e("p",{staticClass:"small text-muted mt-n1 mb-0"},[t._v("\n Member Since "+t._s(t.formatDate(a.profile.created_at))+"\n ")])])]),t._v(" "),e("div",[e("p",{staticClass:"mb-0 small"},[e("a",{attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.editTestimonial(a)}}},[t._v("\n Edit\n ")])]),t._v(" "),e("p",{staticClass:"mb-0 small"},[e("a",{staticClass:"text-danger",attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.deleteTestimonial(a)}}},[t._v("\n Delete\n ")])])])]),t._v(" "),e("hr",{staticClass:"my-1"}),t._v(" "),e("p",{staticClass:"small font-weight-bold text-muted mb-0 text-center"},[t._v("Testimonial")]),t._v(" "),e("div",{staticClass:"border rounded px-3"},[e("p",{staticClass:"my-2 small",staticStyle:{"white-space":"pre-wrap"},domProps:{innerHTML:t._s(a.body)}})])])})),0)]),t._v(" "),e("div",{staticClass:"col-12 col-md-6"},[t.isEditingTestimonial?e("div",{staticClass:"card"},[e("div",{staticClass:"card-header font-weight-bold"},[t._v("\n Edit Testimonial\n ")]),t._v(" "),e("div",{staticClass:"card-body"},[e("div",{staticClass:"form-group"},[e("label",{staticClass:"font-weight-bold",attrs:{for:"form-summary"}},[t._v("Username")]),t._v(" "),e("input",{directives:[{name:"model",rawName:"v-model",value:t.editingTestimonial.profile.username,expression:"editingTestimonial.profile.username"}],staticClass:"form-control form-control-muted",attrs:{placeholder:"test",disabled:""},domProps:{value:t.editingTestimonial.profile.username},on:{input:function(e){e.target.composing||t.$set(t.editingTestimonial.profile,"username",e.target.value)}}})]),t._v(" "),e("div",{staticClass:"form-group"},[e("label",{staticClass:"font-weight-bold",attrs:{for:"form-summary"}},[t._v("Testimonial")]),t._v(" "),e("textarea",{directives:[{name:"model",rawName:"v-model",value:t.editingTestimonial.body,expression:"editingTestimonial.body"}],staticClass:"form-control form-control-muted",attrs:{rows:"5"},domProps:{value:t.editingTestimonial.body},on:{input:function(e){e.target.composing||t.$set(t.editingTestimonial,"body",e.target.value)}}}),t._v(" "),e("div",{staticClass:"d-flex justify-content-between"},[e("p",{staticClass:"help-text small text-muted mb-0"},[t._v("\n Text only, up to 500 characters\n ")]),t._v(" "),e("p",{staticClass:"help-text small text-muted mb-0"},[t._v("\n "+t._s(t.editingTestimonial.body?t.editingTestimonial.body.length:0)+"/500\n ")])])])]),t._v(" "),e("div",{staticClass:"card-footer"},[e("button",{staticClass:"btn btn-primary btn-block",attrs:{type:"button"},on:{click:t.saveEditTestimonial}},[t._v("\n Save\n ")]),t._v(" "),e("button",{staticClass:"btn btn-secondary btn-block",attrs:{type:"button"},on:{click:t.cancelEditTestimonial}},[t._v("\n Cancel\n ")])])]):e("div",{staticClass:"card"},[t.testimonials.length<10?[e("div",{staticClass:"card-header font-weight-bold"},[t._v("\n Add New Testimonial\n ")]),t._v(" "),e("div",{staticClass:"card-body"},[e("div",{staticClass:"form-group"},[e("label",{staticClass:"font-weight-bold",attrs:{for:"form-summary"}},[t._v("Username")]),t._v(" "),e("input",{directives:[{name:"model",rawName:"v-model",value:t.testimonial.username,expression:"testimonial.username"}],staticClass:"form-control form-control-muted",attrs:{placeholder:"test"},domProps:{value:t.testimonial.username},on:{input:function(e){e.target.composing||t.$set(t.testimonial,"username",e.target.value)}}}),t._v(" "),e("p",{staticClass:"help-text small text-muted"},[t._v("\n Must be a valid user account\n ")])]),t._v(" "),e("div",{staticClass:"form-group"},[e("label",{staticClass:"font-weight-bold",attrs:{for:"form-summary"}},[t._v("Testimonial")]),t._v(" "),e("textarea",{directives:[{name:"model",rawName:"v-model",value:t.testimonial.body,expression:"testimonial.body"}],staticClass:"form-control form-control-muted",attrs:{rows:"5"},domProps:{value:t.testimonial.body},on:{input:function(e){e.target.composing||t.$set(t.testimonial,"body",e.target.value)}}}),t._v(" "),e("div",{staticClass:"d-flex justify-content-between"},[e("p",{staticClass:"help-text small text-muted mb-0"},[t._v("\n Text only, up to 500 characters\n ")]),t._v(" "),e("p",{staticClass:"help-text small text-muted mb-0"},[t._v("\n "+t._s(t.testimonial.body?t.testimonial.body.length:0)+"/500\n ")])])])]),t._v(" "),e("div",{staticClass:"card-footer"},[e("button",{staticClass:"btn btn-primary btn-block",attrs:{type:"button"},on:{click:t.saveTestimonial}},[t._v("Save Testimonial")])])]:[t._m(18)]],2)])])]):t._e()])])])])])])]):e("div",[t._m(19)])},i=[function(){var t=this,e=t._self._c;return e("div",{staticClass:"col-lg-6 col-7"},[e("p",{staticClass:"display-1 text-white d-inline-block mb-0"},[t._v("Directory")]),t._v(" "),e("p",{staticClass:"h3 text-white font-weight-light"},[t._v("Manage your server listing on pixelfed.org")])])},function(){var t=this._self._c;return t("p",[t("i",{staticClass:"far fa-exclamation-triangle fa-5x text-lighter"})])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"card card-body shadow-none border d-flex align-items-center justify-content-center py-5"},[e("p",{staticClass:"display-3 mb-1"},[t._v("Awaiting Approval")]),t._v(" "),e("p",{staticClass:"text-primary mb-1"},[t._v("Awaiting submission approval from pixelfed.org, please check back later!")]),t._v(" "),e("p",{staticClass:"small text-muted mb-0"},[t._v("If you are still waiting for approval after 24 hours please contact the Pixelfed team.")])])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"card card-body shadow-none border d-flex align-items-center justify-content-center py-5"},[e("p",{staticClass:"display-3 mb-1"},[t._v("Awaiting Update Approval")]),t._v(" "),e("p",{staticClass:"text-primary mb-1"},[t._v("Awaiting updated submission approval from pixelfed.org, please check back later!")]),t._v(" "),e("p",{staticClass:"small text-muted mb-0"},[t._v("If you are still waiting for approval after 24 hours please contact the Pixelfed team.")])])},function(){var t=this._self._c;return t("p",{staticClass:"my-3"},[t("i",{staticClass:"far fa-check-circle fa-4x text-success"})])},function(){var t=this,e=t._self._c;return e("p",{staticClass:"mt-2 mb-0"},[t._v("Your server directory listing on "),e("a",{staticClass:"font-weight-bold",attrs:{href:"#"}},[t._v("pixelfed.org")]),t._v(" is active")])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"card card-body shadow-none border d-flex align-items-center justify-content-center py-5"},[e("p",{staticClass:"display-3 mb-1"},[t._v("Oops! An unexpected error occured")]),t._v(" "),e("p",{staticClass:"text-primary mb-1"},[t._v("Ask the Pixelfed team for assistance.")])])},function(){var t=this._self._c;return t("p",{staticClass:"text-center mb-2"},[t("i",{staticClass:"far fa-exclamation-circle fa-2x"})])},function(){var t=this,e=t._self._c;return e("p",{staticClass:"form-text text-muted small mb-0"},[t._v("Must be a "),e("kbd",[t._v("JPEG")]),t._v(" or "),e("kbd",[t._v("PNG")]),t._v(" image no larger than 5MB.")])},function(){var t=this,e=t._self._c;return e("p",{staticClass:"form-text text-muted small mb-0"},[t._v("The primary language of your server, to edit this value you need to set the "),e("kbd",[t._v("APP_LOCALE")]),t._v(" .env value")])},function(){var t=this,e=t._self._c;return e("ul",{staticClass:"text-danger"},[e("li",[t._v("Admins must be active")]),t._v(" "),e("li",[t._v("Admins must have 2FA setup and enabled")])])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"card card-body bg-lighter text-center py-5"},[e("p",{staticClass:"text-light mb-1"},[e("i",{staticClass:"far fa-info-circle fa-3x"})]),t._v(" "),e("p",{staticClass:"h2 mb-0"},[t._v("0 posts selected")]),t._v(" "),e("p",{staticClass:"small mb-0"},[t._v("You can select up to 12 favourite posts by id or popularity")])])},function(){var t=this._self._c;return t("div",{staticClass:"spinner-border spinner-border-sm",attrs:{role:"status"}},[t("span",{staticClass:"sr-only"},[this._v("Loading...")])])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"col-12 col-md-6"},[e("div",{staticClass:"card card-body bg-primary"},[e("div",{staticClass:"d-flex align-items-center text-white"},[e("i",{staticClass:"far fa-info-circle mr-2"}),t._v(" "),e("p",{staticClass:"small mb-0 font-weight-bold"},[t._v("A post id is the numerical id found in post urls")])])])])},function(){var t=this._self._c;return t("div",{staticClass:"spinner-border text-primary",attrs:{role:"status"}},[t("span",{staticClass:"sr-only"},[this._v("Loading...")])])},function(){var t=this,e=t._self._c;return e("ul",{staticClass:"font-weight-bold"},[e("li",[t._v("No analytics or 3rd party trackers*")]),t._v(" "),e("li",[t._v("User data is not sold to any 3rd parties")]),t._v(" "),e("li",[t._v("Data is stored securely in accordance with industry standards")]),t._v(" "),e("li",[t._v("Admin accounts are protected with 2FA")]),t._v(" "),e("li",[t._v("Follow strict support procedures to keep your accounts safe")]),t._v(" "),e("li",[t._v("Give at least 6 months warning in the event we shut down")])])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"card-body text-center py-5"},[e("p",{staticClass:"mb-n3"},[e("i",{staticClass:"far fa-exclamation-circle fa-3x"})]),t._v(" "),e("p",{staticClass:"lead mb-0"},[t._v("No Community Guidelines have been set")])])},function(){var t=this,e=t._self._c;return e("p",{staticClass:"mb-0"},[t._v("You can manage Community Guidelines on the "),e("a",{attrs:{href:"/i/admin/settings"}},[t._v("Settings page")])])},function(){var t=this._self._c;return t("div",{staticClass:"card-body text-center"},[t("p",{staticClass:"lead"},[this._v("You can't add any more testimonials")])])},function(){var t=this._self._c;return t("div",{staticClass:"container my-5 py-5 text-center"},[t("div",{staticClass:"spinner-border text-primary",attrs:{role:"status"}},[t("span",{staticClass:"sr-only"},[this._v("Loading...")])])])}]},54449:(t,e,a)=>{"use strict";a.r(e),a.d(e,{render:()=>s,staticRenderFns:()=>i});var s=function(){var t=this,e=t._self._c;return e("div",[e("div",{staticClass:"header bg-primary pb-3 mt-n4"},[e("div",{staticClass:"container-fluid"},[e("div",{staticClass:"header-body"},[t._m(0),t._v(" "),e("div",{staticClass:"row"},[e("div",{staticClass:"col-xl-2 col-md-6"},[e("div",{staticClass:"mb-3"},[e("h5",{staticClass:"text-light text-uppercase mb-0"},[t._v("Unique Hashtags")]),t._v(" "),e("span",{staticClass:"text-white h2 font-weight-bold mb-0 human-size"},[t._v(t._s(t.prettyCount(t.stats.total_unique)))])])]),t._v(" "),e("div",{staticClass:"col-xl-2 col-md-6"},[e("div",{staticClass:"mb-3"},[e("h5",{staticClass:"text-light text-uppercase mb-0"},[t._v("Total Hashtags")]),t._v(" "),e("span",{staticClass:"text-white h2 font-weight-bold mb-0 human-size"},[t._v(t._s(t.prettyCount(t.stats.total_posts)))])])]),t._v(" "),e("div",{staticClass:"col-xl-2 col-md-6"},[e("div",{staticClass:"mb-3"},[e("h5",{staticClass:"text-light text-uppercase mb-0"},[t._v("New (past 14 days)")]),t._v(" "),e("span",{staticClass:"text-white h2 font-weight-bold mb-0 human-size"},[t._v(t._s(t.prettyCount(t.stats.added_14_days)))])])]),t._v(" "),e("div",{staticClass:"col-xl-2 col-md-6"},[e("div",{staticClass:"mb-3"},[e("h5",{staticClass:"text-light text-uppercase mb-0"},[t._v("Banned Hashtags")]),t._v(" "),e("span",{staticClass:"text-white h2 font-weight-bold mb-0 human-size"},[t._v(t._s(t.prettyCount(t.stats.total_banned)))])])]),t._v(" "),e("div",{staticClass:"col-xl-2 col-md-6"},[e("div",{staticClass:"mb-3"},[e("h5",{staticClass:"text-light text-uppercase mb-0"},[t._v("NSFW Hashtags")]),t._v(" "),e("span",{staticClass:"text-white h2 font-weight-bold mb-0 human-size"},[t._v(t._s(t.prettyCount(t.stats.total_nsfw)))])])]),t._v(" "),e("div",{staticClass:"col-xl-2 col-md-6"},[e("div",{staticClass:"mb-3"},[e("h5",{staticClass:"text-light text-uppercase mb-0"},[t._v("Clear Trending Cache")]),t._v(" "),e("button",{staticClass:"btn btn-outline-white btn-block btn-sm py-0 mt-1",on:{click:t.clearTrendingCache}},[t._v("Clear Cache")])])])])])])]),t._v(" "),t.loaded?e("div",{staticClass:"m-n2 m-lg-4"},[e("div",{staticClass:"container-fluid mt-4"},[e("div",{staticClass:"row mb-3 justify-content-between"},[e("div",{staticClass:"col-12 col-md-8"},[e("ul",{staticClass:"nav nav-pills"},[e("li",{staticClass:"nav-item"},[e("button",{class:["nav-link",{active:0==t.tabIndex}],on:{click:function(e){return t.toggleTab(0)}}},[t._v("All")])]),t._v(" "),e("li",{staticClass:"nav-item"},[e("button",{class:["nav-link",{active:1==t.tabIndex}],on:{click:function(e){return t.toggleTab(1)}}},[t._v("Trending")])]),t._v(" "),e("li",{staticClass:"nav-item"},[e("button",{class:["nav-link",{active:2==t.tabIndex}],on:{click:function(e){return t.toggleTab(2)}}},[t._v("Banned")])]),t._v(" "),e("li",{staticClass:"nav-item"},[e("button",{class:["nav-link",{active:3==t.tabIndex}],on:{click:function(e){return t.toggleTab(3)}}},[t._v("NSFW")])])])]),t._v(" "),e("div",{staticClass:"col-12 col-md-4"},[e("autocomplete",{ref:"autocomplete",attrs:{search:t.composeSearch,disabled:t.searchLoading,placeholder:"Search hashtags","aria-label":"Search hashtags","get-result-value":t.getTagResultValue},on:{submit:t.onSearchResultClick},scopedSlots:t._u([{key:"result",fn:function(a){var s=a.result,i=a.props;return[e("li",t._b({staticClass:"autocomplete-result d-flex justify-content-between align-items-center"},"li",i,!1),[e("div",{staticClass:"font-weight-bold",class:{"text-danger":s.is_banned}},[t._v("\n #"+t._s(s.name)+"\n ")]),t._v(" "),e("div",{staticClass:"small text-muted"},[t._v("\n "+t._s(t.prettyCount(s.cached_count))+" posts\n ")])])]}}])})],1)]),t._v(" "),[0,2,3].includes(this.tabIndex)?e("div",{staticClass:"table-responsive"},[e("table",{staticClass:"table table-dark"},[e("thead",{staticClass:"thead-dark"},[e("tr",[e("th",{staticClass:"cursor-pointer",attrs:{scope:"col"},domProps:{innerHTML:t._s(t.buildColumn("ID","id"))},on:{click:function(e){return t.toggleCol("id")}}}),t._v(" "),e("th",{staticClass:"cursor-pointer",attrs:{scope:"col"},domProps:{innerHTML:t._s(t.buildColumn("Hashtag","name"))},on:{click:function(e){return t.toggleCol("name")}}}),t._v(" "),e("th",{staticClass:"cursor-pointer",attrs:{scope:"col"},domProps:{innerHTML:t._s(t.buildColumn("Count","cached_count"))},on:{click:function(e){return t.toggleCol("cached_count")}}}),t._v(" "),e("th",{staticClass:"cursor-pointer",attrs:{scope:"col"},domProps:{innerHTML:t._s(t.buildColumn("Can Search","can_search"))},on:{click:function(e){return t.toggleCol("can_search")}}}),t._v(" "),e("th",{staticClass:"cursor-pointer",attrs:{scope:"col"},domProps:{innerHTML:t._s(t.buildColumn("Can Trend","can_trend"))},on:{click:function(e){return t.toggleCol("can_trend")}}}),t._v(" "),e("th",{staticClass:"cursor-pointer",attrs:{scope:"col"},domProps:{innerHTML:t._s(t.buildColumn("NSFW","is_nsfw"))},on:{click:function(e){return t.toggleCol("is_nsfw")}}}),t._v(" "),e("th",{staticClass:"cursor-pointer",attrs:{scope:"col"},domProps:{innerHTML:t._s(t.buildColumn("Banned","is_banned"))},on:{click:function(e){return t.toggleCol("is_banned")}}}),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("Created")])])]),t._v(" "),e("tbody",t._l(t.hashtags,(function(a,s){var i;return e("tr",[e("td",{staticClass:"font-weight-bold text-monospace text-muted"},[e("a",{attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.openEditHashtagModal(a,s)}}},[t._v("\n "+t._s(a.id)+"\n ")])]),t._v(" "),e("td",{staticClass:"font-weight-bold"},[t._v(t._s(a.name))]),t._v(" "),e("td",{staticClass:"font-weight-bold"},[e("a",{attrs:{href:"/i/web/hashtag/".concat(a.slug)}},[t._v("\n "+t._s(null!==(i=a.cached_count)&&void 0!==i?i:0)+"\n ")])]),t._v(" "),e("td",{staticClass:"font-weight-bold",domProps:{innerHTML:t._s(t.boolIcon(a.can_search,"text-success","text-danger"))}}),t._v(" "),e("td",{staticClass:"font-weight-bold",domProps:{innerHTML:t._s(t.boolIcon(a.can_trend,"text-success","text-danger"))}}),t._v(" "),e("td",{staticClass:"font-weight-bold",domProps:{innerHTML:t._s(t.boolIcon(a.is_nsfw,"text-danger"))}}),t._v(" "),e("td",{staticClass:"font-weight-bold",domProps:{innerHTML:t._s(t.boolIcon(a.is_banned,"text-danger"))}}),t._v(" "),e("td",{staticClass:"font-weight-bold"},[t._v(t._s(t.timeAgo(a.created_at)))])])})),0)])]):t._e(),t._v(" "),[0,2,3].includes(this.tabIndex)?e("div",{staticClass:"d-flex align-items-center justify-content-center"},[e("button",{staticClass:"btn btn-primary rounded-pill",attrs:{disabled:!t.pagination.prev},on:{click:function(e){return t.paginate("prev")}}},[t._v("\n Prev\n ")]),t._v(" "),e("button",{staticClass:"btn btn-primary rounded-pill",attrs:{disabled:!t.pagination.next},on:{click:function(e){return t.paginate("next")}}},[t._v("\n Next\n ")])]):t._e(),t._v(" "),1==this.tabIndex?e("div",{staticClass:"table-responsive"},[e("table",{staticClass:"table table-dark"},[t._m(1),t._v(" "),e("tbody",t._l(t.trendingTags,(function(a,s){var i;return e("tr",[e("td",{staticClass:"font-weight-bold text-monospace text-muted"},[e("a",{attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.openEditHashtagModal(a,s)}}},[t._v("\n "+t._s(a.id)+"\n ")])]),t._v(" "),e("td",{staticClass:"font-weight-bold"},[t._v(t._s(a.hashtag))]),t._v(" "),e("td",{staticClass:"font-weight-bold"},[e("a",{attrs:{href:"/i/web/hashtag/".concat(a.hashtag)}},[t._v("\n "+t._s(null!==(i=a.total)&&void 0!==i?i:0)+"\n ")])])])})),0)])]):t._e()])]):e("div",{staticClass:"my-5 text-center"},[e("b-spinner")],1),t._v(" "),e("b-modal",{attrs:{title:"Edit Hashtag","ok-only":!0,lazy:!0,static:!0},model:{value:t.showEditModal,callback:function(e){t.showEditModal=e},expression:"showEditModal"}},[t.editingHashtag&&t.editingHashtag.name?e("div",{staticClass:"list-group"},[e("div",{staticClass:"list-group-item d-flex align-items-center justify-content-between"},[e("div",{staticClass:"text-muted small"},[t._v("Name")]),t._v(" "),e("div",{staticClass:"font-weight-bold"},[t._v(t._s(t.editingHashtag.name))])]),t._v(" "),e("div",{staticClass:"list-group-item d-flex align-items-center justify-content-between"},[e("div",{staticClass:"text-muted small"},[t._v("Total Uses")]),t._v(" "),e("div",{staticClass:"font-weight-bold"},[t._v(t._s(t.editingHashtag.cached_count.toLocaleString("en-CA",{compactDisplay:"short"})))])]),t._v(" "),e("div",{staticClass:"list-group-item d-flex align-items-center justify-content-between"},[e("div",{staticClass:"text-muted small"},[t._v("Can Trend")]),t._v(" "),e("div",{staticClass:"mr-n2 mb-1"},[e("b-form-checkbox",{attrs:{switch:"",size:"lg"},model:{value:t.editingHashtag.can_trend,callback:function(e){t.$set(t.editingHashtag,"can_trend",e)},expression:"editingHashtag.can_trend"}})],1)]),t._v(" "),e("div",{staticClass:"list-group-item d-flex align-items-center justify-content-between"},[e("div",{staticClass:"text-muted small"},[t._v("Can Search")]),t._v(" "),e("div",{staticClass:"mr-n2 mb-1"},[e("b-form-checkbox",{attrs:{switch:"",size:"lg"},model:{value:t.editingHashtag.can_search,callback:function(e){t.$set(t.editingHashtag,"can_search",e)},expression:"editingHashtag.can_search"}})],1)]),t._v(" "),e("div",{staticClass:"list-group-item d-flex align-items-center justify-content-between"},[e("div",{staticClass:"text-muted small"},[t._v("Banned")]),t._v(" "),e("div",{staticClass:"mr-n2 mb-1"},[e("b-form-checkbox",{attrs:{switch:"",size:"lg"},model:{value:t.editingHashtag.is_banned,callback:function(e){t.$set(t.editingHashtag,"is_banned",e)},expression:"editingHashtag.is_banned"}})],1)]),t._v(" "),e("div",{staticClass:"list-group-item d-flex align-items-center justify-content-between"},[e("div",{staticClass:"text-muted small"},[t._v("NSFW")]),t._v(" "),e("div",{staticClass:"mr-n2 mb-1"},[e("b-form-checkbox",{attrs:{switch:"",size:"lg"},model:{value:t.editingHashtag.is_nsfw,callback:function(e){t.$set(t.editingHashtag,"is_nsfw",e)},expression:"editingHashtag.is_nsfw"}})],1)])]):t._e(),t._v(" "),e("transition",{attrs:{name:"fade"}},[t.editingHashtag&&t.editingHashtag.name&&t.editSaved?e("div",[e("p",{staticClass:"text-primary small font-weight-bold text-center mt-1 mb-0"},[t._v("Hashtag changes successfully saved!")])]):t._e()])],1)],1)},i=[function(){var t=this._self._c;return t("div",{staticClass:"row align-items-center py-4"},[t("div",{staticClass:"col-lg-6 col-7"},[t("p",{staticClass:"display-1 text-white d-inline-block mb-0"},[this._v("Hashtags")])])])},function(){var t=this,e=t._self._c;return e("thead",{staticClass:"thead-dark"},[e("tr",[e("th",{attrs:{scope:"col"}},[t._v("ID")]),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("Hashtag")]),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("Trending Count")])])])}]},38343:(t,e,a)=>{"use strict";a.r(e),a.d(e,{render:()=>s,staticRenderFns:()=>i});var s=function(){var t,e,a,s=this,i=s._self._c;return i("div",[i("div",{staticClass:"header bg-primary pb-3 mt-n4"},[i("div",{staticClass:"container-fluid"},[i("div",{staticClass:"header-body"},[s._m(0),s._v(" "),i("div",{staticClass:"row"},[i("div",{staticClass:"col-xl-2 col-md-6"},[i("div",{staticClass:"mb-3"},[i("h5",{staticClass:"text-light text-uppercase mb-0"},[s._v("Total Instances")]),s._v(" "),i("span",{staticClass:"text-white h2 font-weight-bold mb-0 human-size"},[s._v(s._s(s.prettyCount(s.stats.total_count)))])])]),s._v(" "),i("div",{staticClass:"col-xl-2 col-md-6"},[i("div",{staticClass:"mb-3"},[i("h5",{staticClass:"text-light text-uppercase mb-0"},[s._v("New (past 14 days)")]),s._v(" "),i("span",{staticClass:"text-white h2 font-weight-bold mb-0 human-size"},[s._v(s._s(s.prettyCount(s.stats.new_count)))])])]),s._v(" "),i("div",{staticClass:"col-xl-2 col-md-6"},[i("div",{staticClass:"mb-3"},[i("h5",{staticClass:"text-light text-uppercase mb-0"},[s._v("Banned Instances")]),s._v(" "),i("span",{staticClass:"text-white h2 font-weight-bold mb-0 human-size"},[s._v(s._s(s.prettyCount(s.stats.banned_count)))])])]),s._v(" "),i("div",{staticClass:"col-xl-2 col-md-6"},[i("div",{staticClass:"mb-3"},[i("h5",{staticClass:"text-light text-uppercase mb-0"},[s._v("NSFW Instances")]),s._v(" "),i("span",{staticClass:"text-white h2 font-weight-bold mb-0 human-size"},[s._v(s._s(s.prettyCount(s.stats.nsfw_count)))])])]),s._v(" "),i("div",{staticClass:"col-xl-2 col-md-6"},[i("div",{staticClass:"mb-3"},[i("button",{staticClass:"btn btn-outline-white btn-block btn-sm mt-1",on:{click:function(t){t.preventDefault(),s.showAddModal=!0}}},[s._v("Create New Instance")]),s._v(" "),s.showImportForm?i("div",[i("div",{staticClass:"form-group mt-3"},[i("div",{staticClass:"custom-file"},[i("input",{ref:"importInput",staticClass:"custom-file-input",attrs:{type:"file",id:"customFile"},on:{change:s.onImportUpload}}),s._v(" "),i("label",{staticClass:"custom-file-label",attrs:{for:"customFile"}},[s._v("Choose file")])])]),s._v(" "),i("p",{staticClass:"mb-0 mt-n3"},[i("a",{staticClass:"text-white font-weight-bold small",attrs:{href:"#"},on:{click:function(t){t.preventDefault(),s.showImportForm=!1}}},[s._v("Cancel")])])]):i("div",{staticClass:"d-flex mt-1"},[i("button",{staticClass:"btn btn-outline-white btn-sm mt-1",on:{click:s.openImportForm}},[s._v("Import")]),s._v(" "),i("button",{staticClass:"btn btn-outline-white btn-block btn-sm mt-1",on:{click:function(t){return s.downloadBackup()}}},[s._v("Download Backup")])])])])])])])]),s._v(" "),s.loaded?i("div",{staticClass:"m-n2 m-lg-4"},[i("div",{staticClass:"container-fluid mt-4"},[i("div",{staticClass:"row mb-3 justify-content-between"},[i("div",{staticClass:"col-12 col-md-8"},[i("ul",{staticClass:"nav nav-pills"},[i("li",{staticClass:"nav-item"},[i("button",{class:["nav-link",{active:0==s.tabIndex}],on:{click:function(t){return s.toggleTab(0)}}},[s._v("All")])]),s._v(" "),i("li",{staticClass:"nav-item"},[i("button",{class:["nav-link",{active:1==s.tabIndex}],on:{click:function(t){return s.toggleTab(1)}}},[s._v("New")])]),s._v(" "),i("li",{staticClass:"nav-item"},[i("button",{class:["nav-link",{active:2==s.tabIndex}],on:{click:function(t){return s.toggleTab(2)}}},[s._v("Banned")])]),s._v(" "),i("li",{staticClass:"nav-item"},[i("button",{class:["nav-link",{active:3==s.tabIndex}],on:{click:function(t){return s.toggleTab(3)}}},[s._v("NSFW")])]),s._v(" "),i("li",{staticClass:"nav-item"},[i("button",{class:["nav-link",{active:4==s.tabIndex}],on:{click:function(t){return s.toggleTab(4)}}},[s._v("Unlisted")])]),s._v(" "),i("li",{staticClass:"nav-item"},[i("button",{class:["nav-link",{active:5==s.tabIndex}],on:{click:function(t){return s.toggleTab(5)}}},[s._v("Most Users")])]),s._v(" "),i("li",{staticClass:"nav-item"},[i("button",{class:["nav-link",{active:6==s.tabIndex}],on:{click:function(t){return s.toggleTab(6)}}},[s._v("Most Statuses")])])])]),s._v(" "),i("div",{staticClass:"col-12 col-md-4"},[i("autocomplete",{ref:"autocomplete",attrs:{search:s.composeSearch,disabled:s.searchLoading,defaultValue:s.searchQuery,placeholder:"Search instances by domain","aria-label":"Search instances by domain","get-result-value":s.getTagResultValue},on:{submit:s.onSearchResultClick},scopedSlots:s._u([{key:"result",fn:function(t){var e=t.result,a=t.props;return[i("li",s._b({staticClass:"autocomplete-result d-flex justify-content-between align-items-center"},"li",a,!1),[i("div",{staticClass:"font-weight-bold",class:{"text-danger":e.banned}},[s._v("\n\t\t\t\t\t\t\t\t\t"+s._s(e.domain)+"\n\t\t\t\t\t\t\t\t")]),s._v(" "),i("div",{staticClass:"small text-muted"},[s._v("\n\t\t\t\t\t\t\t\t\t"+s._s(s.prettyCount(e.user_count))+" users\n\t\t\t\t\t\t\t\t")])])]}}])})],1)]),s._v(" "),i("div",{staticClass:"table-responsive"},[i("table",{staticClass:"table table-dark"},[i("thead",{staticClass:"thead-dark"},[i("tr",[i("th",{staticClass:"cursor-pointer",attrs:{scope:"col"},domProps:{innerHTML:s._s(s.buildColumn("ID","id"))},on:{click:function(t){return s.toggleCol("id")}}}),s._v(" "),i("th",{staticClass:"cursor-pointer",attrs:{scope:"col"},domProps:{innerHTML:s._s(s.buildColumn("Domain","domain"))},on:{click:function(t){return s.toggleCol("domain")}}}),s._v(" "),i("th",{staticClass:"cursor-pointer",attrs:{scope:"col"},domProps:{innerHTML:s._s(s.buildColumn("Software","software"))},on:{click:function(t){return s.toggleCol("software")}}}),s._v(" "),i("th",{staticClass:"cursor-pointer",attrs:{scope:"col"},domProps:{innerHTML:s._s(s.buildColumn("User Count","user_count"))},on:{click:function(t){return s.toggleCol("user_count")}}}),s._v(" "),i("th",{staticClass:"cursor-pointer",attrs:{scope:"col"},domProps:{innerHTML:s._s(s.buildColumn("Status Count","status_count"))},on:{click:function(t){return s.toggleCol("status_count")}}}),s._v(" "),i("th",{staticClass:"cursor-pointer",attrs:{scope:"col"},domProps:{innerHTML:s._s(s.buildColumn("Banned","banned"))},on:{click:function(t){return s.toggleCol("banned")}}}),s._v(" "),i("th",{staticClass:"cursor-pointer",attrs:{scope:"col"},domProps:{innerHTML:s._s(s.buildColumn("NSFW","auto_cw"))},on:{click:function(t){return s.toggleCol("auto_cw")}}}),s._v(" "),i("th",{staticClass:"cursor-pointer",attrs:{scope:"col"},domProps:{innerHTML:s._s(s.buildColumn("Unlisted","unlisted"))},on:{click:function(t){return s.toggleCol("unlisted")}}}),s._v(" "),i("th",{attrs:{scope:"col"}},[s._v("Created")])])]),s._v(" "),i("tbody",s._l(s.instances,(function(t,e){return i("tr",[i("td",{staticClass:"font-weight-bold text-monospace text-muted"},[i("a",{attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),s.openInstanceModal(t.id)}}},[s._v("\n\t\t\t\t\t\t\t\t\t"+s._s(t.id)+"\n\t\t\t\t\t\t\t\t")])]),s._v(" "),i("td",{staticClass:"font-weight-bold"},[s._v(s._s(t.domain))]),s._v(" "),i("td",{staticClass:"font-weight-bold"},[s._v(s._s(t.software))]),s._v(" "),i("td",{staticClass:"font-weight-bold"},[s._v(s._s(s.prettyCount(t.user_count)))]),s._v(" "),i("td",{staticClass:"font-weight-bold"},[s._v(s._s(s.prettyCount(t.status_count)))]),s._v(" "),i("td",{staticClass:"font-weight-bold",domProps:{innerHTML:s._s(s.boolIcon(t.banned,"text-danger"))}}),s._v(" "),i("td",{staticClass:"font-weight-bold",domProps:{innerHTML:s._s(s.boolIcon(t.auto_cw,"text-danger"))}}),s._v(" "),i("td",{staticClass:"font-weight-bold",domProps:{innerHTML:s._s(s.boolIcon(t.unlisted,"text-danger"))}}),s._v(" "),i("td",{staticClass:"font-weight-bold"},[s._v(s._s(s.timeAgo(t.created_at)))])])})),0)])]),s._v(" "),i("div",{staticClass:"d-flex align-items-center justify-content-center"},[i("button",{staticClass:"btn btn-primary rounded-pill",attrs:{disabled:!s.pagination.prev},on:{click:function(t){return s.paginate("prev")}}},[s._v("\n\t\t\t\t\tPrev\n\t\t\t\t")]),s._v(" "),i("button",{staticClass:"btn btn-primary rounded-pill",attrs:{disabled:!s.pagination.next},on:{click:function(t){return s.paginate("next")}}},[s._v("\n\t\t\t\t\tNext\n\t\t\t\t")])])])]):i("div",{staticClass:"my-5 text-center"},[i("b-spinner")],1),s._v(" "),i("b-modal",{attrs:{title:"View Instance","header-class":"d-flex align-items-center justify-content-center mb-0 pb-0","ok-title":"Save","ok-disabled":!s.editingInstanceChanges},on:{ok:s.saveInstanceModalChanges},scopedSlots:s._u([{key:"modal-footer",fn:function(){return[i("div",{staticClass:"w-100 d-flex justify-content-between align-items-center"},[i("div",[i("b-button",{attrs:{variant:"outline-danger",size:"sm"},on:{click:s.deleteInstanceModal}},[s._v("\n\t\t\t\t\tDelete\n\t\t\t\t")]),s._v(" "),s.refreshedModalStats?s._e():i("b-button",{attrs:{variant:"outline-primary",size:"sm"},on:{click:s.refreshModalStats}},[s._v("\n\t\t\t\t\tRefresh Stats\n\t\t\t\t")])],1),s._v(" "),i("div",[i("b-button",{attrs:{variant:"link-dark",size:"sm"},on:{click:s.onViewMoreInstance}},[s._v("\n\t\t\t\tView More\n\t\t\t ")]),s._v(" "),i("b-button",{attrs:{variant:"primary"},on:{click:s.saveInstanceModalChanges}},[s._v("\n\t\t\t\tSave\n\t\t\t ")])],1)])]},proxy:!0}]),model:{value:s.showInstanceModal,callback:function(t){s.showInstanceModal=t},expression:"showInstanceModal"}},[s.editingInstance&&s.canEditInstance?i("div",{staticClass:"list-group"},[i("div",{staticClass:"list-group-item d-flex align-items-center justify-content-between"},[i("div",{staticClass:"text-muted small"},[s._v("Domain")]),s._v(" "),i("div",{staticClass:"font-weight-bold"},[s._v(s._s(s.editingInstance.domain))])]),s._v(" "),i("div",{staticClass:"list-group-item d-flex align-items-center justify-content-between"},[s.editingInstance.software?i("div",[i("div",{staticClass:"text-muted small"},[s._v("Software")]),s._v(" "),i("div",{staticClass:"font-weight-bold"},[s._v(s._s(null!==(t=s.editingInstance.software)&&void 0!==t?t:"Unknown"))])]):s._e(),s._v(" "),i("div",[i("div",{staticClass:"text-muted small"},[s._v("Total Users")]),s._v(" "),i("div",{staticClass:"font-weight-bold"},[s._v(s._s(s.formatCount(null!==(e=s.editingInstance.user_count)&&void 0!==e?e:0)))])]),s._v(" "),i("div",[i("div",{staticClass:"text-muted small"},[s._v("Total Statuses")]),s._v(" "),i("div",{staticClass:"font-weight-bold"},[s._v(s._s(s.formatCount(null!==(a=s.editingInstance.status_count)&&void 0!==a?a:0)))])])]),s._v(" "),i("div",{staticClass:"list-group-item d-flex align-items-center justify-content-between"},[i("div",{staticClass:"text-muted small"},[s._v("Banned")]),s._v(" "),i("div",{staticClass:"mr-n2 mb-1"},[i("b-form-checkbox",{attrs:{switch:"",size:"lg"},model:{value:s.editingInstance.banned,callback:function(t){s.$set(s.editingInstance,"banned",t)},expression:"editingInstance.banned"}})],1)]),s._v(" "),i("div",{staticClass:"list-group-item d-flex align-items-center justify-content-between"},[i("div",{staticClass:"text-muted small"},[s._v("Apply CW to Media")]),s._v(" "),i("div",{staticClass:"mr-n2 mb-1"},[i("b-form-checkbox",{attrs:{switch:"",size:"lg"},model:{value:s.editingInstance.auto_cw,callback:function(t){s.$set(s.editingInstance,"auto_cw",t)},expression:"editingInstance.auto_cw"}})],1)]),s._v(" "),i("div",{staticClass:"list-group-item d-flex align-items-center justify-content-between"},[i("div",{staticClass:"text-muted small"},[s._v("Unlisted")]),s._v(" "),i("div",{staticClass:"mr-n2 mb-1"},[i("b-form-checkbox",{attrs:{switch:"",size:"lg"},model:{value:s.editingInstance.unlisted,callback:function(t){s.$set(s.editingInstance,"unlisted",t)},expression:"editingInstance.unlisted"}})],1)]),s._v(" "),i("div",{staticClass:"list-group-item d-flex justify-content-between",class:[s.instanceModalNotes?"flex-column gap-2":"align-items-center"]},[i("div",{staticClass:"text-muted small"},[s._v("Notes")]),s._v(" "),i("transition",{attrs:{name:"fade"}},[s.instanceModalNotes?i("div",{staticClass:"w-100"},[i("b-form-textarea",{attrs:{rows:"3","max-rows":"5",maxlength:"500"},model:{value:s.editingInstance.notes,callback:function(t){s.$set(s.editingInstance,"notes",t)},expression:"editingInstance.notes"}}),s._v(" "),i("p",{staticClass:"small text-muted"},[s._v(s._s(s.editingInstance.notes?s.editingInstance.notes.length:0)+"/500")])],1):i("div",{staticClass:"mb-1"},[i("a",{staticClass:"font-weight-bold small",attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),s.showModalNotes()}}},[s._v(s._s(s.editingInstance.notes?"View":"Add"))])])])],1)]):s._e()]),s._v(" "),i("b-modal",{attrs:{title:"Add Instance","ok-title":"Save","ok-disabled":s.addNewInstance.domain.length<2},on:{ok:s.saveNewInstance},model:{value:s.showAddModal,callback:function(t){s.showAddModal=t},expression:"showAddModal"}},[i("div",{staticClass:"list-group"},[i("div",{staticClass:"list-group-item d-flex align-items-center justify-content-between"},[i("div",{staticClass:"text-muted small"},[s._v("Domain")]),s._v(" "),i("div",[i("b-form-input",{attrs:{placeholder:"Add domain here"},model:{value:s.addNewInstance.domain,callback:function(t){s.$set(s.addNewInstance,"domain",t)},expression:"addNewInstance.domain"}}),s._v(" "),i("p",{staticClass:"small text-light mb-0"},[s._v("Enter a valid domain without https://")])],1)]),s._v(" "),i("div",{staticClass:"list-group-item d-flex align-items-center justify-content-between"},[i("div",{staticClass:"text-muted small"},[s._v("Banned")]),s._v(" "),i("div",{staticClass:"mr-n2 mb-1"},[i("b-form-checkbox",{attrs:{switch:"",size:"lg"},model:{value:s.addNewInstance.banned,callback:function(t){s.$set(s.addNewInstance,"banned",t)},expression:"addNewInstance.banned"}})],1)]),s._v(" "),i("div",{staticClass:"list-group-item d-flex align-items-center justify-content-between"},[i("div",{staticClass:"text-muted small"},[s._v("Apply CW to Media")]),s._v(" "),i("div",{staticClass:"mr-n2 mb-1"},[i("b-form-checkbox",{attrs:{switch:"",size:"lg"},model:{value:s.addNewInstance.auto_cw,callback:function(t){s.$set(s.addNewInstance,"auto_cw",t)},expression:"addNewInstance.auto_cw"}})],1)]),s._v(" "),i("div",{staticClass:"list-group-item d-flex align-items-center justify-content-between"},[i("div",{staticClass:"text-muted small"},[s._v("Unlisted")]),s._v(" "),i("div",{staticClass:"mr-n2 mb-1"},[i("b-form-checkbox",{attrs:{switch:"",size:"lg"},model:{value:s.addNewInstance.unlisted,callback:function(t){s.$set(s.addNewInstance,"unlisted",t)},expression:"addNewInstance.unlisted"}})],1)]),s._v(" "),i("div",{staticClass:"list-group-item d-flex flex-column gap-2 justify-content-between"},[i("div",{staticClass:"text-muted small"},[s._v("Notes")]),s._v(" "),i("div",{staticClass:"w-100"},[i("b-form-textarea",{attrs:{rows:"3","max-rows":"5",maxlength:"500",placeholder:"Add optional notes here"},model:{value:s.addNewInstance.notes,callback:function(t){s.$set(s.addNewInstance,"notes",t)},expression:"addNewInstance.notes"}}),s._v(" "),i("p",{staticClass:"small text-muted"},[s._v(s._s(s.addNewInstance.notes?s.addNewInstance.notes.length:0)+"/500")])],1)])])]),s._v(" "),i("b-modal",{attrs:{title:"Import Instance Backup","ok-title":"Import",scrollable:"","ok-disabled":!s.importData||!s.importData.banned.length&&!s.importData.unlisted.length&&!s.importData.auto_cw.length},on:{ok:s.completeImport,cancel:s.cancelImport},model:{value:s.showImportModal,callback:function(t){s.showImportModal=t},expression:"showImportModal"}},[s.showImportModal&&s.importData?i("div",[s.importData.auto_cw&&s.importData.auto_cw.length?i("div",{staticClass:"mb-5"},[i("p",{staticClass:"font-weight-bold text-center my-0"},[s._v("NSFW Instances ("+s._s(s.importData.auto_cw.length)+")")]),s._v(" "),i("p",{staticClass:"small text-center text-muted mb-1"},[s._v("Tap on an instance to remove it.")]),s._v(" "),i("div",{staticClass:"list-group"},s._l(s.importData.auto_cw,(function(t,e){return i("a",{staticClass:"list-group-item d-flex align-items-center justify-content-between",attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),s.filterImportData("auto_cw",e)}}},[s._v("\n\t\t\t\t\t\t"+s._s(t)+"\n\n\t\t\t\t\t\t"),i("span",{staticClass:"badge badge-warning"},[s._v("Auto CW")])])})),0)]):s._e(),s._v(" "),s.importData.unlisted&&s.importData.unlisted.length?i("div",{staticClass:"mb-5"},[i("p",{staticClass:"font-weight-bold text-center my-0"},[s._v("Unlisted Instances ("+s._s(s.importData.unlisted.length)+")")]),s._v(" "),i("p",{staticClass:"small text-center text-muted mb-1"},[s._v("Tap on an instance to remove it.")]),s._v(" "),i("div",{staticClass:"list-group"},s._l(s.importData.unlisted,(function(t,e){return i("a",{staticClass:"list-group-item d-flex align-items-center justify-content-between",attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),s.filterImportData("unlisted",e)}}},[s._v("\n\t\t\t\t\t\t"+s._s(t)+"\n\n\t\t\t\t\t\t"),i("span",{staticClass:"badge badge-primary"},[s._v("Unlisted")])])})),0)]):s._e(),s._v(" "),s.importData.banned&&s.importData.banned.length?i("div",{staticClass:"mb-5"},[i("p",{staticClass:"font-weight-bold text-center my-0"},[s._v("Banned Instances ("+s._s(s.importData.banned.length)+")")]),s._v(" "),i("p",{staticClass:"small text-center text-muted mb-1"},[s._v("Review instances, tap on an instance to remove it.")]),s._v(" "),i("div",{staticClass:"list-group"},s._l(s.importData.banned,(function(t,e){return i("a",{staticClass:"list-group-item d-flex align-items-center justify-content-between",attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),s.filterImportData("banned",e)}}},[s._v("\n\t\t\t\t\t\t"+s._s(t)+"\n\n\t\t\t\t\t\t"),i("span",{staticClass:"badge badge-danger"},[s._v("Banned")])])})),0)]):s._e(),s._v(" "),s.importData.banned.length||s.importData.unlisted.length||s.importData.auto_cw.length?s._e():i("div",[i("div",{staticClass:"text-center"},[i("p",[i("i",{staticClass:"far fa-check-circle fa-4x text-success"})]),s._v(" "),i("p",{staticClass:"lead"},[s._v("Nothing to import!")])])])]):s._e()])],1)},i=[function(){var t=this._self._c;return t("div",{staticClass:"row align-items-center py-4"},[t("div",{staticClass:"col-lg-6 col-7"},[t("p",{staticClass:"display-1 text-white d-inline-block mb-0"},[this._v("Instances")])])])}]},44381:(t,e,a)=>{"use strict";a.r(e),a.d(e,{render:()=>s,staticRenderFns:()=>i});var s=function(){var t,e,a=this,s=a._self._c;return s("div",[s("div",{staticClass:"header bg-primary pb-3 mt-n4"},[s("div",{staticClass:"container-fluid"},[s("div",{staticClass:"header-body"},[a._m(0),a._v(" "),s("div",{staticClass:"row"},[s("div",{staticClass:"col-12 col-sm-6 col-lg-3"},[s("div",{staticClass:"mb-3"},[s("h5",{staticClass:"text-light text-uppercase mb-0"},[a._v("Active Reports")]),a._v(" "),s("span",{staticClass:"text-white h2 font-weight-bold mb-0 human-size",attrs:{"data-toggle":"tooltip","data-placement":"bottom",title:a.stats.open+" open reports"}},[a._v("\n "+a._s(a.prettyCount(a.stats.open))+"\n ")])])]),a._v(" "),s("div",{staticClass:"col-12 col-sm-6 col-lg-3"},[s("div",{staticClass:"mb-3"},[s("h5",{staticClass:"text-light text-uppercase mb-0"},[a._v("Active Spam Detections")]),a._v(" "),s("span",{staticClass:"text-white h2 font-weight-bold mb-0 human-size",attrs:{"data-toggle":"tooltip","data-placement":"bottom",title:a.stats.autospam_open+" open spam detections"}},[a._v(a._s(a.prettyCount(a.stats.autospam_open)))])])]),a._v(" "),s("div",{staticClass:"col-12 col-sm-6 col-lg-3"},[s("div",{staticClass:"mb-3"},[s("h5",{staticClass:"text-light text-uppercase mb-0"},[a._v("Total Reports")]),a._v(" "),s("span",{staticClass:"text-white h2 font-weight-bold mb-0 human-size",attrs:{"data-toggle":"tooltip","data-placement":"bottom",title:a.stats.total+" total reports"}},[a._v(a._s(a.prettyCount(a.stats.total))+"\n ")])])]),a._v(" "),s("div",{staticClass:"col-12 col-sm-6 col-lg-3"},[s("div",{staticClass:"mb-3"},[s("h5",{staticClass:"text-light text-uppercase mb-0"},[a._v("Total Spam Detections")]),a._v(" "),s("span",{staticClass:"text-white h2 font-weight-bold mb-0 human-size",attrs:{"data-toggle":"tooltip","data-placement":"bottom",title:a.stats.autospam+" total spam detections"}},[a._v("\n "+a._s(a.prettyCount(a.stats.autospam))+"\n ")])])])])])])]),a._v(" "),a.loaded?s("div",{staticClass:"m-n2 m-lg-4"},[s("div",{staticClass:"container-fluid mt-4"},[s("div",{staticClass:"row mb-3 justify-content-between"},[s("div",{staticClass:"col-12"},[s("ul",{staticClass:"nav nav-pills"},[s("li",{staticClass:"nav-item"},[s("a",{class:["nav-link d-flex align-items-center",{active:0==a.tabIndex}],attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),a.toggleTab(0)}}},[s("span",[a._v("Open Reports")]),a._v(" "),a.stats.open?s("span",{staticClass:"badge badge-sm badge-floating badge-danger border-white ml-2",staticStyle:{"background-color":"red",color:"white","font-size":"11px"}},[a._v("\n "+a._s(a.prettyCount(a.stats.open))+"\n ")]):a._e()])]),a._v(" "),s("li",{staticClass:"nav-item"},[s("a",{class:["nav-link d-flex align-items-center",{active:2==a.tabIndex}],attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),a.toggleTab(2)}}},[s("span",[a._v("Spam Detections")]),a._v(" "),a.stats.autospam_open?s("span",{staticClass:"badge badge-sm badge-floating badge-danger border-white ml-2",staticStyle:{"background-color":"red",color:"white","font-size":"11px"}},[a._v("\n "+a._s(a.prettyCount(a.stats.autospam_open))+"\n ")]):a._e()])]),a._v(" "),s("li",{staticClass:"nav-item"},[s("a",{class:["nav-link d-flex align-items-center",{active:3==a.tabIndex}],attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),a.toggleTab(3)}}},[s("span",[a._v("Remote Reports")]),a._v(" "),a.stats.remote_open?s("span",{staticClass:"badge badge-sm badge-floating badge-danger border-white ml-2",staticStyle:{"background-color":"red",color:"white","font-size":"11px"}},[a._v("\n "+a._s(a.prettyCount(a.stats.remote_open))+"\n ")]):a._e()])]),a._v(" "),s("li",{staticClass:"d-none d-md-block nav-item"},[s("a",{class:["nav-link d-flex align-items-center",{active:1==a.tabIndex}],attrs:{href:"#"},on:{click:function(t){return t.preventDefault(),a.toggleTab(1)}}},[s("span",[a._v("Closed Reports")]),a._v(" "),a.stats.autospam_open?s("span",{staticClass:"badge badge-sm badge-floating badge-secondary border-white ml-2",staticStyle:{"font-size":"11px"}},[a._v("\n "+a._s(a.prettyCount(a.stats.closed))+"\n ")]):a._e()])]),a._v(" "),s("li",{staticClass:"d-none d-md-block nav-item"},[s("a",{staticClass:"nav-link d-flex align-items-center",attrs:{href:"/i/admin/reports/email-verifications"}},[s("span",[a._v("Email Verification Requests")]),a._v(" "),a.stats.email_verification_requests?s("span",{staticClass:"badge badge-sm badge-floating badge-secondary border-white ml-2",staticStyle:{"font-size":"11px"}},[a._v("\n "+a._s(a.prettyCount(a.stats.email_verification_requests))+"\n ")]):a._e()])]),a._v(" "),s("li",{staticClass:"d-none d-md-block nav-item"},[s("a",{staticClass:"nav-link d-flex align-items-center",attrs:{href:"/i/admin/reports/appeals"}},[s("span",[a._v("Appeal Requests")]),a._v(" "),a.stats.appeals?s("span",{staticClass:"badge badge-sm badge-floating badge-secondary border-white ml-2",staticStyle:{"font-size":"11px"}},[a._v("\n "+a._s(a.prettyCount(a.stats.appeals))+"\n ")]):a._e()])])])])]),a._v(" "),[0,1].includes(this.tabIndex)?s("div",{staticClass:"table-responsive rounded"},[a.reports&&a.reports.length?s("table",{staticClass:"table table-dark"},[a._m(1),a._v(" "),s("tbody",a._l(a.reports,(function(t,e){return s("tr",[s("td",{staticClass:"font-weight-bold text-monospace text-muted align-middle"},[s("a",{attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),a.viewReport(t)}}},[a._v("\n "+a._s(t.id)+"\n ")])]),a._v(" "),s("td",{staticClass:"align-middle"},[s("p",{staticClass:"text-capitalize font-weight-bold mb-0",domProps:{innerHTML:a._s(a.reportLabel(t))}})]),a._v(" "),s("td",{staticClass:"align-middle"},[t.reported&&t.reported.id?s("a",{staticClass:"text-white",attrs:{href:"/i/web/profile/".concat(t.reported.id),target:"_blank"}},[s("div",{staticClass:"d-flex align-items-center",staticStyle:{gap:"0.61rem"}},[s("img",{staticStyle:{"object-fit":"cover","border-radius":"30px"},attrs:{src:t.reported.avatar,width:"30",height:"30",onerror:"this.src='/storage/avatars/default.png';this.error=null;"}}),a._v(" "),s("div",{staticClass:"d-flex flex-column"},[s("p",{staticClass:"font-weight-bold mb-0",staticStyle:{"font-size":"14px"}},[a._v("@"+a._s(t.reported.username))]),a._v(" "),s("div",{staticClass:"d-flex small text-muted mb-0",staticStyle:{gap:"0.5rem"}},[s("span",[a._v(a._s(t.reported.followers_count)+" Followers")]),a._v(" "),s("span",[a._v("·")]),a._v(" "),s("span",[a._v("Joined "+a._s(a.timeAgo(t.reported.created_at)))])])])])]):a._e()]),a._v(" "),s("td",{staticClass:"align-middle"},[t&&t.reporter&&t.reporter.id?s("a",{staticClass:"text-white",attrs:{href:"/i/web/profile/".concat(t.reporter.id),target:"_blank"}},[s("div",{staticClass:"d-flex align-items-center",staticStyle:{gap:"0.61rem"}},[s("img",{staticStyle:{"object-fit":"cover","border-radius":"30px"},attrs:{src:t.reporter.avatar,width:"30",height:"30",onerror:"this.src='/storage/avatars/default.png';this.error=null;"}}),a._v(" "),s("div",{staticClass:"d-flex flex-column"},[s("p",{staticClass:"font-weight-bold mb-0",staticStyle:{"font-size":"14px"}},[a._v("@"+a._s(t.reporter.username))]),a._v(" "),s("div",{staticClass:"d-flex small text-muted mb-0",staticStyle:{gap:"0.5rem"}},[s("span",[a._v(a._s(t.reporter.followers_count)+" Followers")]),a._v(" "),s("span",[a._v("·")]),a._v(" "),s("span",[a._v("Joined "+a._s(a.timeAgo(t.reporter.created_at)))])])])])]):a._e()]),a._v(" "),s("td",{staticClass:"font-weight-bold align-middle"},[a._v(a._s(a.timeAgo(t.created_at)))]),a._v(" "),s("td",{staticClass:"align-middle"},[s("a",{staticClass:"btn btn-primary btn-sm",attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),a.viewReport(t)}}},[a._v("View")])])])})),0)]):s("div",[s("div",{staticClass:"card card-body p-5"},[s("div",{staticClass:"d-flex justify-content-between align-items-center flex-column"},[a._m(2),a._v(" "),s("p",{staticClass:"lead"},[a._v(a._s(0===a.tabIndex?"No Active Reports Found!":"No Closed Reports Found!"))])])])])]):a._e(),a._v(" "),[0,1].includes(this.tabIndex)&&a.reports.length&&(a.pagination.prev||a.pagination.next)?s("div",{staticClass:"d-flex align-items-center justify-content-center"},[s("button",{staticClass:"btn btn-primary rounded-pill",attrs:{disabled:!a.pagination.prev},on:{click:function(t){return a.paginate("prev")}}},[a._v("\n Prev\n ")]),a._v(" "),s("button",{staticClass:"btn btn-primary rounded-pill",attrs:{disabled:!a.pagination.next},on:{click:function(t){return a.paginate("next")}}},[a._v("\n Next\n ")])]):a._e(),a._v(" "),2===this.tabIndex?s("div",{staticClass:"table-responsive rounded"},[a.autospamLoaded?[a.autospam&&a.autospam.length?s("table",{staticClass:"table table-dark"},[a._m(3),a._v(" "),s("tbody",a._l(a.autospam,(function(t,e){return s("tr",[s("td",{staticClass:"font-weight-bold text-monospace text-muted align-middle"},[s("a",{attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),a.viewSpamReport(t)}}},[a._v("\n "+a._s(t.id)+"\n ")])]),a._v(" "),a._m(4,!0),a._v(" "),s("td",{staticClass:"align-middle"},[t.status&&t.status.account?s("a",{staticClass:"text-white",attrs:{href:"/i/web/profile/".concat(t.status.account.id),target:"_blank"}},[s("div",{staticClass:"d-flex align-items-center",staticStyle:{gap:"0.61rem"}},[s("img",{staticStyle:{"object-fit":"cover","border-radius":"30px"},attrs:{src:t.status.account.avatar,width:"30",height:"30",onerror:"this.src='/storage/avatars/default.png';this.error=null;"}}),a._v(" "),s("div",{staticClass:"d-flex flex-column"},[s("p",{staticClass:"font-weight-bold mb-0",staticStyle:{"font-size":"14px"}},[a._v("@"+a._s(t.status.account.username))]),a._v(" "),s("div",{staticClass:"d-flex small text-muted mb-0",staticStyle:{gap:"0.5rem"}},[s("span",[a._v(a._s(t.status.account.followers_count)+" Followers")]),a._v(" "),s("span",[a._v("·")]),a._v(" "),s("span",[a._v("Joined "+a._s(a.timeAgo(t.status.account.created_at)))])])])])]):a._e()]),a._v(" "),s("td",{staticClass:"font-weight-bold align-middle"},[a._v(a._s(a.timeAgo(t.created_at)))]),a._v(" "),s("td",{staticClass:"align-middle"},[s("a",{staticClass:"btn btn-primary btn-sm",attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),a.viewSpamReport(t)}}},[a._v("View")])])])})),0)]):s("div",[a._m(5)])]:s("div",{staticClass:"d-flex align-items-center justify-content-center",staticStyle:{"min-height":"300px"}},[s("b-spinner")],1)],2):a._e(),a._v(" "),2===this.tabIndex&&a.autospamLoaded&&a.autospam&&a.autospam.length?s("div",{staticClass:"d-flex align-items-center justify-content-center"},[s("button",{staticClass:"btn btn-primary rounded-pill",attrs:{disabled:!a.autospamPagination.prev},on:{click:function(t){return a.autospamPaginate("prev")}}},[a._v("\n Prev\n ")]),a._v(" "),s("button",{staticClass:"btn btn-primary rounded-pill",attrs:{disabled:!a.autospamPagination.next},on:{click:function(t){return a.autospamPaginate("next")}}},[a._v("\n Next\n ")])]):a._e(),a._v(" "),3===this.tabIndex?s("div",{staticClass:"table-responsive rounded"},[a.reports&&a.reports.length?s("table",{staticClass:"table table-dark"},[a._m(6),a._v(" "),s("tbody",a._l(a.reports,(function(t,e){return s("tr",{key:"remote-reports-".concat(t.id,"-").concat(e)},[s("td",{staticClass:"font-weight-bold text-monospace text-muted align-middle"},[s("a",{attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),a.showRemoteReport(t)}}},[a._v("\n "+a._s(t.id)+"\n ")])]),a._v(" "),s("td",{staticClass:"align-middle"},[s("p",{staticClass:"font-weight-bold mb-0"},[a._v(a._s(t.instance))])]),a._v(" "),s("td",{staticClass:"align-middle"},[t.reported&&t.reported.id?s("a",{staticClass:"text-white",attrs:{href:"/i/web/profile/".concat(t.reported.id),target:"_blank"}},[s("div",{staticClass:"d-flex align-items-center",staticStyle:{gap:"0.61rem"}},[s("img",{staticStyle:{"object-fit":"cover","border-radius":"30px"},attrs:{src:t.reported.avatar,width:"30",height:"30",onerror:"this.src='/storage/avatars/default.png';this.error=null;"}}),a._v(" "),s("div",{staticClass:"d-flex flex-column"},[s("p",{staticClass:"font-weight-bold mb-0",staticStyle:{"font-size":"14px"}},[a._v("@"+a._s(t.reported.username))]),a._v(" "),s("div",{staticClass:"d-flex small text-muted mb-0",staticStyle:{gap:"0.5rem"}},[s("span",[a._v(a._s(t.reported.followers_count)+" Followers")]),a._v(" "),s("span",[a._v("·")]),a._v(" "),s("span",[a._v("Joined "+a._s(a.timeAgo(t.reported.created_at)))])])])])]):a._e()]),a._v(" "),s("td",{staticClass:"align-middle"},[s("p",{staticClass:"small mb-0 text-wrap",staticStyle:{"max-width":"300px","word-break":"break-all"}},[a._v(a._s(t.message&&t.message.length>120?t.message.slice(0,120)+"...":t.message))])]),a._v(" "),s("td",{staticClass:"font-weight-bold align-middle"},[a._v(a._s(a.timeAgo(t.created_at)))]),a._v(" "),a._m(7,!0)])})),0)]):s("div",[s("div",{staticClass:"card card-body p-5"},[s("div",{staticClass:"d-flex justify-content-between align-items-center flex-column"},[a._m(8),a._v(" "),s("p",{staticClass:"lead"},[a._v(a._s(0===a.tabIndex?"No Active Reports Found!":"No Closed Reports Found!"))])])])])]):a._e(),a._v(" "),3===this.tabIndex&&a.remoteReportsLoaded&&a.reports&&a.reports.length?s("div",{staticClass:"d-flex align-items-center justify-content-center"},[s("button",{staticClass:"btn btn-primary rounded-pill",attrs:{disabled:!a.pagination.prev},on:{click:function(t){return a.remoteReportPaginate("prev")}}},[a._v("\n Prev\n ")]),a._v(" "),s("button",{staticClass:"btn btn-primary rounded-pill",attrs:{disabled:!a.pagination.next},on:{click:function(t){return a.remoteReportPaginate("next")}}},[a._v("\n Next\n ")])]):a._e()])]):s("div",{staticClass:"my-5 text-center"},[s("b-spinner")],1),a._v(" "),s("b-modal",{attrs:{title:0===a.tabIndex?"View Report":"Viewing Closed Report","ok-only":!0,"ok-title":"Close","ok-variant":"outline-primary"},model:{value:a.showReportModal,callback:function(t){a.showReportModal=t},expression:"showReportModal"}},[a.viewingReportLoading?s("div",{staticClass:"d-flex align-items-center justify-content-center"},[s("b-spinner")],1):[a.viewingReport?s("div",{staticClass:"list-group"},[s("div",{staticClass:"list-group-item d-flex align-items-center justify-content-between"},[s("div",{staticClass:"text-muted small"},[a._v("Type")]),a._v(" "),s("div",{staticClass:"font-weight-bold text-capitalize",domProps:{innerHTML:a._s(a.reportLabel(a.viewingReport))}})]),a._v(" "),a.viewingReport.admin_seen_at?s("div",{staticClass:"list-group-item d-flex align-items-center justify-content-between"},[s("div",{staticClass:"text-muted small"},[a._v("Report Closed")]),a._v(" "),s("div",{staticClass:"font-weight-bold text-capitalize"},[a._v(a._s(a.formatDate(a.viewingReport.admin_seen_at)))])]):a._e(),a._v(" "),a.viewingReport.reporter_message?s("div",{staticClass:"list-group-item d-flex flex-column",staticStyle:{gap:"10px"}},[s("div",{staticClass:"text-muted small"},[a._v("Message")]),a._v(" "),s("p",{staticClass:"mb-0 read-more",staticStyle:{"font-size":"12px","overflow-y":"hidden"}},[a._v(a._s(a.viewingReport.reporter_message))])]):a._e()]):a._e(),a._v(" "),s("div",{staticClass:"list-group list-group-horizontal mt-3"},[a.viewingReport&&a.viewingReport.reported?s("div",{staticClass:"list-group-item d-flex align-items-center justify-content-between flex-column flex-grow-1",staticStyle:{gap:"0.4rem"}},[s("div",{staticClass:"text-muted small font-weight-bold mt-n1"},[a._v("Reported Account")]),a._v(" "),a.viewingReport.reported&&a.viewingReport.reported.id?s("a",{staticClass:"text-primary",attrs:{href:"/i/web/profile/".concat(a.viewingReport.reported.id),target:"_blank"}},[s("div",{staticClass:"d-flex align-items-center",staticStyle:{gap:"0.61rem"}},[s("img",{staticStyle:{"object-fit":"cover","border-radius":"30px"},attrs:{src:a.viewingReport.reported.avatar,width:"30",height:"30",onerror:"this.src='/storage/avatars/default.png';this.error=null;"}}),a._v(" "),s("div",{staticClass:"d-flex flex-column"},[s("p",{staticClass:"font-weight-bold mb-0 text-break",class:[a.viewingReport.reported.is_admin?"text-danger":""],staticStyle:{"font-size":"12px","max-width":"140px","line-height":"16px"}},[a._v("@"+a._s(a.viewingReport.reported.acct))]),a._v(" "),s("div",{staticClass:"d-flex text-muted mb-0",staticStyle:{"font-size":"10px",gap:"0.5rem"}},[s("span",[a._v(a._s(a.viewingReport.reported.followers_count)+" Followers")]),a._v(" "),s("span",[a._v("·")]),a._v(" "),s("span",[a._v("Joined "+a._s(a.timeAgo(a.viewingReport.reported.created_at)))])])])])]):a._e()]):a._e(),a._v(" "),a.viewingReport&&a.viewingReport.reporter?s("div",{staticClass:"list-group-item d-flex align-items-center justify-content-between flex-column flex-grow-1",staticStyle:{gap:"0.4rem"}},[s("div",{staticClass:"text-muted small font-weight-bold mt-n1"},[a._v("Reporter Account")]),a._v(" "),a.viewingReport.reporter&&null!==(t=a.viewingReport.reporter)&&void 0!==t&&t.id?s("a",{staticClass:"text-primary",attrs:{href:"/i/web/profile/".concat(null===(e=a.viewingReport.reporter)||void 0===e?void 0:e.id),target:"_blank"}},[s("div",{staticClass:"d-flex align-items-center",staticStyle:{gap:"0.61rem"}},[s("img",{staticStyle:{"object-fit":"cover","border-radius":"30px"},attrs:{src:a.viewingReport.reporter.avatar,width:"30",height:"30",onerror:"this.src='/storage/avatars/default.png';this.error=null;"}}),a._v(" "),s("div",{staticClass:"d-flex flex-column"},[s("p",{staticClass:"font-weight-bold mb-0 text-break",staticStyle:{"font-size":"12px","max-width":"140px","line-height":"16px"}},[a._v("@"+a._s(a.viewingReport.reporter.acct))]),a._v(" "),s("div",{staticClass:"d-flex text-muted mb-0",staticStyle:{"font-size":"10px",gap:"0.5rem"}},[s("span",[a._v(a._s(a.viewingReport.reporter.followers_count)+" Followers")]),a._v(" "),s("span",[a._v("·")]),a._v(" "),s("span",[a._v("Joined "+a._s(a.timeAgo(a.viewingReport.reporter.created_at)))])])])])]):a._e()]):a._e()]),a._v(" "),a.viewingReport&&"App\\Status"===a.viewingReport.object_type&&a.viewingReport.status?s("div",{staticClass:"list-group mt-3"},[a.viewingReport&&a.viewingReport.status&&a.viewingReport.status.media_attachments.length?s("div",{staticClass:"list-group-item d-flex flex-column flex-grow-1",staticStyle:{gap:"0.4rem"}},[s("div",{staticClass:"d-flex justify-content-between mt-n1 text-muted small font-weight-bold"},[s("div",[a._v("Reported Post")]),a._v(" "),s("a",{staticClass:"font-weight-bold",attrs:{href:a.viewingReport.status.url,target:"_blank"}},[a._v("View")])]),a._v(" "),"image"===a.viewingReport.status.media_attachments[0].type?s("img",{staticClass:"rounded",staticStyle:{"object-fit":"cover"},attrs:{src:a.viewingReport.status.media_attachments[0].url,height:"140",onerror:"this.src='/storage/no-preview.png';this.error=null;"}}):"video"===a.viewingReport.status.media_attachments[0].type?s("video",{attrs:{height:"140",controls:"",src:a.viewingReport.status.media_attachments[0].url,onerror:"this.src='/storage/no-preview.png';this.onerror=null;"}}):a._e()]):a._e(),a._v(" "),a.viewingReport&&a.viewingReport.status?s("div",{staticClass:"list-group-item d-flex flex-column flex-grow-1",staticStyle:{gap:"0.4rem"}},[s("div",{staticClass:"d-flex justify-content-between mt-n1 text-muted small font-weight-bold"},[s("div",[a._v("Reported Post Caption")]),a._v(" "),s("a",{staticClass:"font-weight-bold",attrs:{href:a.viewingReport.status.url,target:"_blank"}},[a._v("View")])]),a._v(" "),s("p",{staticClass:"mb-0 read-more",staticStyle:{"font-size":"12px","overflow-y":"hidden"}},[a._v(a._s(a.viewingReport.status.content_text))])]):a._e()]):a.viewingReport&&"App\\Story"===a.viewingReport.object_type&&a.viewingReport.story?s("div",{staticClass:"list-group mt-3"},[a.viewingReport&&a.viewingReport.story?s("div",{staticClass:"list-group-item d-flex flex-column flex-grow-1",staticStyle:{gap:"0.4rem"}},[s("div",{staticClass:"d-flex justify-content-between mt-n1 text-muted small font-weight-bold"},[s("div",[a._v("Reported Story")]),a._v(" "),s("a",{staticClass:"font-weight-bold",attrs:{href:a.viewingReport.story.url,target:"_blank"}},[a._v("View")])]),a._v(" "),"photo"===a.viewingReport.story.type?s("img",{staticClass:"rounded",staticStyle:{"object-fit":"cover"},attrs:{src:a.viewingReport.story.media_src,height:"140",onerror:"this.src='/storage/no-preview.png';this.error=null;"}}):"video"===a.viewingReport.story.type?s("video",{attrs:{height:"140",controls:"",src:a.viewingReport.story.media_src,onerror:"this.src='/storage/no-preview.png';this.onerror=null;"}}):a._e()]):a._e()]):a._e(),a._v(" "),a.viewingReport&&null===a.viewingReport.admin_seen_at?s("div",{staticClass:"mt-4"},[a.viewingReport&&"App\\Profile"===a.viewingReport.object_type?s("div",[s("button",{staticClass:"btn btn-dark btn-block rounded-pill",on:{click:function(t){return a.handleAction("profile","ignore")}}},[a._v("Ignore Report")]),a._v(" "),a.viewingReport.reported&&a.viewingReport.reported.id&&!a.viewingReport.reported.is_admin?s("hr",{staticClass:"mt-3 mb-1"}):a._e(),a._v(" "),a.viewingReport.reported&&a.viewingReport.reported.id&&!a.viewingReport.reported.is_admin?s("div",{staticClass:"d-flex flex-row mt-2",staticStyle:{gap:"0.3rem"}},[s("button",{staticClass:"btn btn-outline-danger btn-block btn-sm rounded-pill mt-0",on:{click:function(t){return a.handleAction("profile","nsfw")}}},[a._v("\n Mark all Posts NSFW\n ")]),a._v(" "),s("button",{staticClass:"btn btn-outline-danger btn-block btn-sm rounded-pill mt-0",on:{click:function(t){return a.handleAction("profile","unlist")}}},[a._v("\n Unlist all Posts\n ")])]):a._e(),a._v(" "),a.viewingReport.reported&&a.viewingReport.reported.id&&!a.viewingReport.reported.is_admin?s("button",{staticClass:"btn btn-outline-danger btn-block btn-sm rounded-pill mt-2",on:{click:function(t){return a.handleAction("profile","delete")}}},[a._v("\n Delete Profile\n ")]):a._e()]):a.viewingReport&&"App\\Status"===a.viewingReport.object_type?s("div",[s("button",{staticClass:"btn btn-dark btn-block rounded-pill",on:{click:function(t){return a.handleAction("post","ignore")}}},[a._v("Ignore Report")]),a._v(" "),a.viewingReport&&a.viewingReport.reported&&!a.viewingReport.reported.is_admin?s("hr",{staticClass:"mt-3 mb-1"}):a._e(),a._v(" "),a.viewingReport&&a.viewingReport.reported&&!a.viewingReport.reported.is_admin?s("div",{staticClass:"d-flex flex-row mt-2",staticStyle:{gap:"0.3rem"}},[s("button",{staticClass:"btn btn-outline-danger btn-block btn-sm rounded-pill mt-0",on:{click:function(t){return a.handleAction("post","nsfw")}}},[a._v("Mark Post NSFW")]),a._v(" "),"public"===a.viewingReport.status.visibility?s("button",{staticClass:"btn btn-outline-danger btn-block btn-sm rounded-pill mt-0",on:{click:function(t){return a.handleAction("post","unlist")}}},[a._v("Unlist Post")]):"unlisted"===a.viewingReport.status.visibility?s("button",{staticClass:"btn btn-outline-danger btn-block btn-sm rounded-pill mt-0",on:{click:function(t){return a.handleAction("post","private")}}},[a._v("Make Post Private")]):a._e()]):a._e(),a._v(" "),a.viewingReport&&a.viewingReport.reported&&!a.viewingReport.reported.is_admin?s("div",{staticClass:"d-flex flex-row mt-2",staticStyle:{gap:"0.3rem"}},[s("button",{staticClass:"btn btn-outline-danger btn-block btn-sm rounded-pill mt-0",on:{click:function(t){return a.handleAction("profile","nsfw")}}},[a._v("Make all NSFW")]),a._v(" "),s("button",{staticClass:"btn btn-outline-danger btn-block btn-sm rounded-pill mt-0",on:{click:function(t){return a.handleAction("profile","unlist")}}},[a._v("Make all Unlisted")]),a._v(" "),s("button",{staticClass:"btn btn-outline-danger btn-block btn-sm rounded-pill mt-0",on:{click:function(t){return a.handleAction("profile","private")}}},[a._v("Make all Private")])]):a._e(),a._v(" "),a.viewingReport&&a.viewingReport.reported&&!a.viewingReport.reported.is_admin?s("div",[s("hr",{staticClass:"my-2"}),a._v(" "),s("div",{staticClass:"d-flex flex-row mt-2",staticStyle:{gap:"0.3rem"}},[s("button",{staticClass:"btn btn-outline-danger btn-block btn-sm rounded-pill mt-0",on:{click:function(t){return a.handleAction("post","delete")}}},[a._v("Delete Post")]),a._v(" "),s("button",{staticClass:"btn btn-outline-danger btn-block btn-sm rounded-pill mt-0",on:{click:function(t){return a.handleAction("profile","delete")}}},[a._v("Delete Account")])])]):a._e()]):a.viewingReport&&"App\\Story"===a.viewingReport.object_type?s("div",[s("button",{staticClass:"btn btn-dark btn-block rounded-pill",on:{click:function(t){return a.handleAction("story","ignore")}}},[a._v("Ignore Report")]),a._v(" "),a.viewingReport&&a.viewingReport.reported&&!a.viewingReport.reported.is_admin?s("hr",{staticClass:"mt-3 mb-1"}):a._e(),a._v(" "),a.viewingReport&&a.viewingReport.reported&&!a.viewingReport.reported.is_admin?s("div",[s("div",{staticClass:"d-flex flex-row mt-2",staticStyle:{gap:"0.3rem"}},[s("button",{staticClass:"btn btn-danger btn-block rounded-pill mt-0",on:{click:function(t){return a.handleAction("story","delete")}}},[a._v("Delete Story")]),a._v(" "),s("button",{staticClass:"btn btn-outline-danger btn-block rounded-pill mt-0",on:{click:function(t){return a.handleAction("story","delete-all")}}},[a._v("Delete All Stories")])])]):a._e(),a._v(" "),a.viewingReport&&a.viewingReport.reported&&!a.viewingReport.reported.is_admin?s("div",[s("hr",{staticClass:"my-2"}),a._v(" "),s("div",{staticClass:"d-flex flex-row mt-2",staticStyle:{gap:"0.3rem"}},[s("button",{staticClass:"btn btn-outline-danger btn-sm btn-block rounded-pill mt-0",on:{click:function(t){return a.handleAction("profile","delete")}}},[a._v("Delete Account")])])]):a._e()]):a._e()]):a._e()]],2),a._v(" "),s("b-modal",{attrs:{title:"Potential Spam Post Detected","ok-only":!0,"ok-title":"Close","ok-variant":"outline-primary"},model:{value:a.showSpamReportModal,callback:function(t){a.showSpamReportModal=t},expression:"showSpamReportModal"}},[a.viewingSpamReportLoading?s("div",{staticClass:"d-flex align-items-center justify-content-center"},[s("b-spinner")],1):[s("div",{staticClass:"list-group list-group-horizontal mt-3"},[a.viewingSpamReport&&a.viewingSpamReport.status&&a.viewingSpamReport.status.account?s("div",{staticClass:"list-group-item d-flex align-items-center justify-content-between flex-column flex-grow-1",staticStyle:{gap:"0.4rem"}},[s("div",{staticClass:"text-muted small font-weight-bold mt-n1"},[a._v("Reported Account")]),a._v(" "),a.viewingSpamReport.status.account&&a.viewingSpamReport.status.account.id?s("a",{staticClass:"text-primary",attrs:{href:"/i/web/profile/".concat(a.viewingSpamReport.status.account.id),target:"_blank"}},[s("div",{staticClass:"d-flex align-items-center",staticStyle:{gap:"0.61rem"}},[s("img",{staticStyle:{"object-fit":"cover","border-radius":"30px"},attrs:{src:a.viewingSpamReport.status.account.avatar,width:"30",height:"30",onerror:"this.src='/storage/avatars/default.png';this.error=null;"}}),a._v(" "),s("div",{staticClass:"d-flex flex-column"},[s("p",{staticClass:"font-weight-bold mb-0 text-break",class:[a.viewingSpamReport.status.account.is_admin?"text-danger":""],staticStyle:{"font-size":"12px","max-width":"140px","line-height":"16px"}},[a._v("@"+a._s(a.viewingSpamReport.status.account.acct))]),a._v(" "),s("div",{staticClass:"d-flex text-muted mb-0",staticStyle:{"font-size":"10px",gap:"0.5rem"}},[s("span",[a._v(a._s(a.viewingSpamReport.status.account.followers_count)+" Followers")]),a._v(" "),s("span",[a._v("·")]),a._v(" "),s("span",[a._v("Joined "+a._s(a.timeAgo(a.viewingSpamReport.status.account.created_at)))])])])])]):a._e()]):a._e()]),a._v(" "),a.viewingSpamReport&&a.viewingSpamReport.status?s("div",{staticClass:"list-group mt-3"},[a.viewingSpamReport&&a.viewingSpamReport.status&&a.viewingSpamReport.status.media_attachments.length?s("div",{staticClass:"list-group-item d-flex flex-column flex-grow-1",staticStyle:{gap:"0.4rem"}},[s("div",{staticClass:"d-flex justify-content-between mt-n1 text-muted small font-weight-bold"},[s("div",[a._v("Reported Post")]),a._v(" "),s("a",{staticClass:"font-weight-bold",attrs:{href:a.viewingSpamReport.status.url,target:"_blank"}},[a._v("View")])]),a._v(" "),"image"===a.viewingSpamReport.status.media_attachments[0].type?s("img",{staticClass:"rounded",staticStyle:{"object-fit":"cover"},attrs:{src:a.viewingSpamReport.status.media_attachments[0].url,height:"140",onerror:"this.src='/storage/no-preview.png';this.error=null;"}}):"video"===a.viewingSpamReport.status.media_attachments[0].type?s("video",{attrs:{height:"140",controls:"",src:a.viewingSpamReport.status.media_attachments[0].url,onerror:"this.src='/storage/no-preview.png';this.onerror=null;"}}):a._e()]):a._e(),a._v(" "),a.viewingSpamReport&&a.viewingSpamReport.status&&a.viewingSpamReport.status.content_text&&a.viewingSpamReport.status.content_text.length?s("div",{staticClass:"list-group-item d-flex flex-column flex-grow-1",staticStyle:{gap:"0.4rem"}},[s("div",{staticClass:"d-flex justify-content-between mt-n1 text-muted small font-weight-bold"},[s("div",[a._v("Reported Post Caption")]),a._v(" "),s("a",{staticClass:"font-weight-bold",attrs:{href:a.viewingSpamReport.status.url,target:"_blank"}},[a._v("View")])]),a._v(" "),s("p",{staticClass:"mb-0 read-more",staticStyle:{"font-size":"12px","overflow-y":"hidden"}},[a._v(a._s(a.viewingSpamReport.status.content_text))])]):a._e()]):a._e(),a._v(" "),s("div",{staticClass:"mt-4"},[s("div",[s("button",{staticClass:"btn btn-dark btn-block rounded-pill",attrs:{type:"button"},on:{click:function(t){return a.handleSpamAction("mark-read")}}},[a._v("\n Mark as Read\n ")]),a._v(" "),s("button",{staticClass:"btn btn-danger btn-block rounded-pill",attrs:{type:"button"},on:{click:function(t){return a.handleSpamAction("mark-not-spam")}}},[a._v("\n Mark As Not Spam\n ")]),a._v(" "),s("hr",{staticClass:"mt-3 mb-1"}),a._v(" "),s("div",{staticClass:"d-flex flex-row mt-2",staticStyle:{gap:"0.3rem"}},[s("button",{staticClass:"btn btn-dark btn-block btn-sm rounded-pill mt-0",attrs:{type:"button"},on:{click:function(t){return a.handleSpamAction("mark-all-read")}}},[a._v("\n Mark All As Read\n ")]),a._v(" "),s("button",{staticClass:"btn btn-dark btn-block btn-sm rounded-pill mt-0",attrs:{type:"button"},on:{click:function(t){return a.handleSpamAction("mark-all-not-spam")}}},[a._v("\n Mark All As Not Spam\n ")])]),a._v(" "),s("div",[s("hr",{staticClass:"my-2"}),a._v(" "),s("div",{staticClass:"d-flex flex-row mt-2",staticStyle:{gap:"0.3rem"}},[s("button",{staticClass:"btn btn-outline-danger btn-block btn-sm rounded-pill mt-0",attrs:{type:"button"},on:{click:function(t){return a.handleSpamAction("delete-profile")}}},[a._v("\n Delete Account\n ")])])])])])]],2),a._v(" "),a.showRemoteReportModal?[s("admin-report-modal",{attrs:{open:a.showRemoteReportModal,model:a.remoteReportModalModel},on:{close:function(t){return a.handleCloseRemoteReportModal()},refresh:function(t){return a.refreshRemoteReports()}}})]:a._e()],2)},i=[function(){var t=this._self._c;return t("div",{staticClass:"row align-items-center py-4"},[t("div",{staticClass:"col-lg-6 col-7"},[t("p",{staticClass:"display-1 text-white d-inline-block mb-0"},[this._v("Moderation")])])])},function(){var t=this,e=t._self._c;return e("thead",{staticClass:"thead-dark"},[e("tr",[e("th",{attrs:{scope:"col"}},[t._v("ID")]),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("Report")]),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("Reported Account")]),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("Reported By")]),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("Created")]),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("View Report")])])])},function(){var t=this._self._c;return t("p",{staticClass:"mt-3 mb-0"},[t("i",{staticClass:"far fa-check-circle fa-5x text-success"})])},function(){var t=this,e=t._self._c;return e("thead",{staticClass:"thead-dark"},[e("tr",[e("th",{attrs:{scope:"col"}},[t._v("ID")]),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("Report")]),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("Reported Account")]),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("Created")]),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("View Report")])])])},function(){var t=this._self._c;return t("td",{staticClass:"align-middle"},[t("p",{staticClass:"text-capitalize font-weight-bold mb-0"},[this._v("Spam Post")])])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"card card-body p-5"},[e("div",{staticClass:"d-flex justify-content-between align-items-center flex-column"},[e("p",{staticClass:"mt-3 mb-0"},[e("i",{staticClass:"far fa-check-circle fa-5x text-success"})]),t._v(" "),e("p",{staticClass:"lead"},[t._v("No Spam Reports Found!")])])])},function(){var t=this,e=t._self._c;return e("thead",{staticClass:"thead-dark"},[e("tr",[e("th",{attrs:{scope:"col"}},[t._v("ID")]),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("Instance")]),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("Reported Account")]),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("Comment")]),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("Created")]),t._v(" "),e("th",{attrs:{scope:"col"}},[t._v("View Report")])])])},function(){var t=this._self._c;return t("td",{staticClass:"align-middle"},[t("a",{staticClass:"btn btn-primary btn-sm",attrs:{href:"#"}},[this._v("View")])])},function(){var t=this._self._c;return t("p",{staticClass:"mt-3 mb-0"},[t("i",{staticClass:"far fa-check-circle fa-5x text-success"})])}]},64441:(t,e,a)=>{"use strict";a.r(e),a.d(e,{render:()=>s,staticRenderFns:()=>i});var s=function(){var t=this,e=t._self._c;return e("div",{staticClass:"mb-3"},[t.status.media_attachments&&t.status.media_attachments.length?e("div",{staticClass:"list-group-item",staticStyle:{gap:"1rem",overflow:"hidden"}},[e("div",{staticClass:"text-center text-muted small font-weight-bold mb-3"},[t._v("Reported Post Media")]),t._v(" "),t.status.media_attachments&&t.status.media_attachments.length?e("div",{staticClass:"d-flex flex-grow-1",staticStyle:{gap:"1rem","overflow-x":"auto"}},[t._l(t.status.media_attachments,(function(a){return["image"===a.type?e("img",{staticClass:"rounded",staticStyle:{"object-fit":"cover"},attrs:{src:a.url,width:"70",height:"70",onerror:"this.src='/storage/no-preview.png';this.error=null;"},on:{click:t.toggleLightbox}}):"video"===a.type?e("video",{staticClass:"rounded",attrs:{width:"140",height:"90",playsinline:""},on:{click:function(e){return e.preventDefault(),t.toggleVideoLightbox(e,a.url)}}},[e("source",{attrs:{src:a.url,type:a.mime}})]):t._e()]}))],2):t._e()]):t._e(),t._v(" "),e("div",{staticClass:"list-group-item d-flex flex-row flex-grow-1",staticStyle:{gap:"1rem"}},[e("div",{staticClass:"flex-grow-1"},[t.status&&t.status.in_reply_to_id&&t.status.parent&&t.status.parent.account?e("div",{staticClass:"mb-3"},[t.showInReplyTo?[e("div",{staticClass:"mt-n1 text-center text-muted small font-weight-bold mb-1"},[t._v("Reply to")]),t._v(" "),e("div",{staticClass:"media",staticStyle:{gap:"1rem"}},[e("img",{staticClass:"rounded-lg",attrs:{src:t.status.parent.account.avatar,width:"40",height:"40",onerror:"this.onerror=null;this.src='/storage/avatars/default.jpg?v=0';"}}),t._v(" "),e("div",{staticClass:"d-flex flex-column"},[e("p",{staticClass:"font-weight-bold mb-0",staticStyle:{"font-size":"11px"}},[e("a",{attrs:{href:"/i/web/profile/".concat(t.status.parent.account.id),target:"_blank"}},[t._v(t._s(t.status.parent.account.acct))])]),t._v(" "),e("admin-read-more",{attrs:{content:t.status.parent.content_text}}),t._v(" "),e("p",{staticClass:"mb-1"},[e("a",{staticClass:"text-muted",staticStyle:{"font-size":"11px"},attrs:{href:"/i/web/post/".concat(t.status.parent.id),target:"_blank"}},[e("i",{staticClass:"far fa-link mr-1"}),t._v(" "+t._s(t.formatDate(t.status.parent.created_at))+"\n ")])])],1)]),t._v(" "),e("hr",{staticClass:"my-1"})]:e("a",{staticClass:"btn btn-dark font-weight-bold btn-block btn-sm",attrs:{href:"#"},on:{click:function(e){e.preventDefault(),t.showInReplyTo=!0}}},[t._v("Show parent post")])],2):t._e(),t._v(" "),e("div",[e("div",{staticClass:"mt-n1 text-center text-muted small font-weight-bold mb-1"},[t._v("Reported Post")]),t._v(" "),e("div",{staticClass:"media",staticStyle:{gap:"1rem"}},[e("img",{staticClass:"rounded-lg",attrs:{src:t.status.account.avatar,width:"40",height:"40",onerror:"this.onerror=null;this.src='/storage/avatars/default.jpg?v=0';"}}),t._v(" "),e("div",{staticClass:"d-flex flex-column"},[e("p",{staticClass:"font-weight-bold mb-0",staticStyle:{"font-size":"11px"}},[e("a",{attrs:{href:"/i/web/profile/".concat(t.status.account.id),target:"_blank"}},[t._v(t._s(t.status.account.acct))])]),t._v(" "),t.status&&t.status.content_text&&t.status.content_text.length?[e("admin-read-more",{attrs:{content:t.status.content_text}})]:[e("admin-read-more",{staticClass:"font-weight-bold text-muted",attrs:{content:"EMPTY CAPTION"}})],t._v(" "),e("p",{staticClass:"mb-0"},[e("a",{staticClass:"text-muted",staticStyle:{"font-size":"11px"},attrs:{href:"/i/web/post/".concat(t.status.id),target:"_blank"}},[e("i",{staticClass:"far fa-link mr-1"}),t._v(" "+t._s(t.formatDate(t.status.created_at))+"\n ")])])],2)])])])])])},i=[]},62581:(t,e,a)=>{"use strict";a.r(e),a.d(e,{render:()=>s,staticRenderFns:()=>i});var s=function(){var t=this,e=t._self._c;return e("div",[e("div",{staticClass:"mb-0",style:{"font-size":"".concat(t.fontSize,"px")}},[t._v(t._s(t.contentText))]),t._v(" "),e("p",{staticClass:"mb-0"},[t.canStepExpand||t.canExpand&&!t.expanded?e("a",{staticClass:"font-weight-bold small",attrs:{href:"#"},on:{click:function(e){return t.expand()}}},[t._v("Read more")]):t._e()])])},i=[]},24664:(t,e,a)=>{"use strict";a.r(e),a.d(e,{render:()=>s,staticRenderFns:()=>i});var s=function(){var t=this,e=t._self._c;return e("b-modal",{attrs:{title:"Remote Report","ok-only":!0,"ok-title":"Close",lazy:!0,scrollable:!0,"ok-variant":"outline-primary"},on:{hide:function(e){return t.$emit("close")}},model:{value:t.isOpen,callback:function(e){t.isOpen=e},expression:"isOpen"}},[t.isLoading?e("div",{staticClass:"d-flex align-items-center justify-content-center"},[e("b-spinner")],1):[e("div",{staticClass:"list-group"},[e("div",{staticClass:"list-group-item d-flex justify-content-between align-items-center"},[e("div",{staticClass:"text-muted small font-weight-bold"},[t._v("Instance")]),t._v(" "),e("div",{staticClass:"font-weight-bold"},[t._v(t._s(t.model.instance))])]),t._v(" "),t.model.message&&t.model.message.length?e("div",{staticClass:"list-group-item d-flex justify-content-between align-items-center flex-column gap-1"},[e("div",{staticClass:"text-muted small font-weight-bold mb-2"},[t._v("Message")]),t._v(" "),e("div",{staticClass:"text-wrap w-100",staticStyle:{"word-break":"break-all","font-size":"12.5px"}},[e("admin-read-more",{attrs:{content:t.model.message,"font-size":"11",step:!0,"initial-limit":100,stepLimit:1e3}})],1)]):t._e()]),t._v(" "),e("div",{staticClass:"list-group list-group-horizontal mt-3"},[t.model&&t.model.reported?e("div",{staticClass:"list-group-item d-flex align-items-center justify-content-between flex-row flex-grow-1",staticStyle:{gap:"0.4rem"}},[e("div",{staticClass:"text-muted small font-weight-bold"},[t._v("Reported Account")]),t._v(" "),e("div",{staticClass:"d-flex justify-content-end flex-grow-1"},[t.model.reported&&t.model.reported.id?e("a",{staticClass:"text-primary",attrs:{href:"/i/web/profile/".concat(t.model.reported.id),target:"_blank"}},[e("div",{staticClass:"d-flex align-items-center",staticStyle:{gap:"0.61rem"}},[e("img",{staticStyle:{"object-fit":"cover","border-radius":"30px"},attrs:{src:t.model.reported.avatar,width:"30",height:"30",onerror:"this.src='/storage/avatars/default.png';this.error=null;"}}),t._v(" "),e("div",{staticClass:"d-flex flex-column"},[e("p",{staticClass:"font-weight-bold mb-0 text-break",class:[t.model.reported.is_admin?"text-danger":""],staticStyle:{"font-size":"12px","max-width":"140px","line-height":"16px"}},[t._v("@"+t._s(t.model.reported.acct))]),t._v(" "),e("div",{staticClass:"d-flex text-muted mb-0",staticStyle:{"font-size":"10px",gap:"0.5rem"}},[e("span",[t._v(t._s(t.prettyCount(t.model.reported.followers_count))+" Followers")]),t._v(" "),e("span",[t._v("·")]),t._v(" "),e("span",[t._v("Joined "+t._s(t.timeAgo(t.model.reported.created_at)))])])])])]):t._e()])]):e("div",{staticClass:"list-group-item d-flex align-items-center justify-content-center flex-column flex-grow-1"},[e("p",{staticClass:"font-weight-bold mb-0"},[t._v("Reported Account Unavailable")]),t._v(" "),e("p",{staticClass:"small mb-0"},[t._v("The reported account may have been deleted, or is otherwise not currently active. You can safely "),e("strong",[t._v("Close Report")]),t._v(" to mark this report as read.")])])]),t._v(" "),t.model&&t.model.statuses&&t.model.statuses.length?e("div",{staticClass:"list-group mt-3"},t._l(t.model.statuses,(function(t,a){return e("admin-modal-post",{key:"admin-modal-post-remote-post:".concat(t.id,":").concat(a),attrs:{status:t}})})),1):t._e(),t._v(" "),e("div",{staticClass:"mt-4"},[e("div",[e("button",{staticClass:"btn btn-dark btn-block rounded-pill",attrs:{type:"button"},on:{click:function(e){return t.handleAction("mark-read")}}},[t._v("\n Close Report\n ")]),t._v(" "),e("button",{staticClass:"btn btn-outline-dark btn-block text-center rounded-pill",staticStyle:{"word-break":"break-all"},attrs:{type:"button"},on:{click:function(e){return t.handleAction("mark-all-read-by-domain")}}},[e("span",{staticClass:"font-weight-light"},[t._v("Close all reports from")]),t._v(" "),e("strong",[t._v(t._s(t.model.instance))])]),t._v(" "),t.model.reported?e("button",{staticClass:"btn btn-outline-dark btn-block rounded-pill flex-grow-1",attrs:{type:"button"},on:{click:function(e){return t.handleAction("mark-all-read-by-username")}}},[e("span",{staticClass:"font-weight-light"},[t._v("Close all reports against")]),t._v(" "),e("strong",[t._v("@"+t._s(t.model.reported.username))])]):t._e(),t._v(" "),t.model&&t.model.statuses&&t.model.statuses.length&&t.model.reported?[e("hr",{staticClass:"mt-3 mb-1"}),t._v(" "),e("div",{staticClass:"d-flex flex-row mt-2",staticStyle:{gap:"0.3rem"}},[e("button",{staticClass:"btn btn-outline-danger btn-block btn-sm rounded-pill mt-0",attrs:{type:"button"},on:{click:function(e){return t.handleAction("cw-posts")}}},[t._v("\n Apply CW to Post(s)\n ")]),t._v(" "),e("button",{staticClass:"btn btn-outline-danger btn-block btn-sm rounded-pill mt-0",attrs:{type:"button"},on:{click:function(e){return t.handleAction("unlist-posts")}}},[t._v("\n Unlist Post(s)\n ")])]),t._v(" "),e("div",{staticClass:"d-flex flex-row mt-2"},[e("button",{staticClass:"btn btn-outline-danger btn-block btn-sm rounded-pill mt-0",attrs:{type:"button"},on:{click:function(e){return t.handleAction("private-posts")}}},[t._v("\n Make Post(s) Private\n ")]),t._v(" "),e("button",{staticClass:"btn btn-outline-danger btn-block btn-sm rounded-pill mt-0",attrs:{type:"button"},on:{click:function(e){return t.handleAction("delete-posts")}}},[t._v("\n Delete Post(s)\n ")])])]:t.model&&t.model.statuses&&!t.model.statuses.length&&t.model.reported?[e("hr",{staticClass:"mt-3 mb-1"}),t._v(" "),e("div",{staticClass:"d-flex flex-row mt-2",staticStyle:{gap:"0.3rem"}},[e("button",{staticClass:"btn btn-outline-danger btn-block btn-sm rounded-pill mt-0",attrs:{type:"button"},on:{click:function(e){return t.handleAction("cw-all-posts")}}},[t._v("\n Apply CW to all posts\n ")]),t._v(" "),e("button",{staticClass:"btn btn-outline-danger btn-block btn-sm rounded-pill mt-0",attrs:{type:"button"},on:{click:function(e){return t.handleAction("unlist-all-posts")}}},[t._v("\n Unlist all account posts\n ")])]),t._v(" "),e("div",{staticClass:"d-flex flex-row mt-2",staticStyle:{gap:"0.3rem"}},[e("button",{staticClass:"btn btn-outline-danger btn-block btn-sm rounded-pill mt-0",attrs:{type:"button"},on:{click:function(e){return t.handleAction("private-all-posts")}}},[t._v("\n Make all posts private\n ")])])]:t._e()],2)])]],2)},i=[]},36671:(t,e,a)=>{a(74692);a(9901),window._=a(2543),window.Popper=a(48851).default,window.pixelfed=window.pixelfed||{},window.$=a(74692),a(52754),window.axios=a(86425),window.axios.defaults.headers.common["X-Requested-With"]="XMLHttpRequest",a(63899),window.filesize=a(91139),window.Cookies=a(12215),a(81027),a(66482),window.Chart=a(62477),a(83925),Chart.defaults.global.defaultFontFamily="-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif",Array.from(document.querySelectorAll(".pagination .page-link")).filter((function(t){return"« Previous"===t.textContent||"Next »"===t.textContent})).forEach((function(t){return t.textContent="Next »"===t.textContent?"›":"‹"})),Vue.component("admin-autospam",a(80430).default),Vue.component("admin-directory",a(65465).default),Vue.component("admin-reports",a(13929).default),Vue.component("instances-component",a(50828).default),Vue.component("hashtag-component",a(47739).default)},83925:(t,e,a)=>{"use strict";var s=a(74692);function i(t){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}!function(){function t(){s(".sidenav-toggler").addClass("active"),s(".sidenav-toggler").data("action","sidenav-unpin"),s("body").removeClass("g-sidenav-hidden").addClass("g-sidenav-show g-sidenav-pinned"),s("body").append('
1&&(o+=''+i+""),o+=''+a+n+s+""}}}(t,a),a.update()}return window.Chart&&r(Chart,(t={defaults:{global:{responsive:!0,maintainAspectRatio:!1,defaultColor:o.gray[600],defaultFontColor:o.gray[600],defaultFontFamily:n.base,defaultFontSize:13,layout:{padding:0},legend:{display:!1,position:"bottom",labels:{usePointStyle:!0,padding:16}},elements:{point:{radius:0,backgroundColor:o.theme.primary},line:{tension:.4,borderWidth:4,borderColor:o.theme.primary,backgroundColor:o.transparent,borderCapStyle:"rounded"},rectangle:{backgroundColor:o.theme.warning},arc:{backgroundColor:o.theme.primary,borderColor:o.white,borderWidth:4}},tooltips:{enabled:!0,mode:"index",intersect:!1}},doughnut:{cutoutPercentage:83,legendCallback:function(t){var e=t.data,a="";return e.labels.forEach((function(t,s){var i=e.datasets[0].backgroundColor[s];a+='',a+='',a+=t,a+=""})),a}}}},Chart.scaleService.updateScaleDefaults("linear",{gridLines:{borderDash:[2],borderDashOffset:[2],color:o.gray[300],drawBorder:!1,drawTicks:!1,drawOnChartArea:!0,zeroLineWidth:0,zeroLineColor:"rgba(0,0,0,0)",zeroLineBorderDash:[2],zeroLineBorderDashOffset:[2]},ticks:{beginAtZero:!0,padding:10,callback:function(t){if(!(t%10))return t}}}),Chart.scaleService.updateScaleDefaults("category",{gridLines:{drawBorder:!1,drawOnChartArea:!1,drawTicks:!1},ticks:{padding:20},maxBarThickness:10}),t)),e.on({change:function(){var t=s(this);t.is("[data-add]")&&d(t)},click:function(){var t=s(this);t.is("[data-update]")&&u(t)}}),{colors:o,fonts:n,mode:a}}(),_=((r=s(o=".btn-icon-clipboard")).length&&((n=r).tooltip().on("mouseleave",(function(){n.tooltip("hide")})),new ClipboardJS(o).on("success",(function(t){s(t.trigger).attr("title","Copied!").tooltip("_fixTitle").tooltip("show").attr("title","Copy to clipboard").tooltip("_fixTitle"),t.clearSelection()}))),l=s(".navbar-nav, .navbar-nav .nav"),c=s(".navbar .collapse"),d=s(".navbar .dropdown"),c.on({"show.bs.collapse":function(){!function(t){t.closest(l).find(c).not(t).collapse("hide")}(s(this))}}),d.on({"hide.bs.dropdown":function(){!function(t){var e=t.find(".dropdown-menu");e.addClass("close"),setTimeout((function(){e.removeClass("close")}),200)}(s(this))}}),function(){s(".navbar-nav");var t=s(".navbar .navbar-custom-collapse");t.length&&(t.on({"hide.bs.collapse":function(){!function(t){t.addClass("collapsing-out")}(t)}}),t.on({"hidden.bs.collapse":function(){!function(t){t.removeClass("collapsing-out")}(t)}}));var e=0;s(".sidenav-toggler").click((function(){if(1==e)s("body").removeClass("nav-open"),e=0,s(".bodyClick").remove();else{s('
').appendTo("body").click((function(){s("body").removeClass("nav-open"),e=0,s(".bodyClick").remove()})),s("body").addClass("nav-open"),e=1}}))}(),u=s('[data-toggle="popover"]'),p="",u.length&&u.each((function(){!function(t){t.data("color")&&(p="popover-"+t.data("color"));var e={trigger:"focus",template:''};t.popover(e)}(s(this))})),function(){var t=s(".scroll-me, [data-scroll-to], .toc-entry a");function e(t){var e=t.attr("href"),a=t.data("scroll-to-offset")?t.data("scroll-to-offset"):0,i={scrollTop:s(e).offset().top-a};s("html, body").stop(!0,!0).animate(i,600),event.preventDefault()}t.length&&t.on("click",(function(t){e(s(this))}))}(),(m=s('[data-toggle="tooltip"]')).length&&m.tooltip(),(v=s(".form-control")).length&&function(t){t.on("focus blur",(function(t){s(this).parents(".form-group").toggleClass("focused","focus"===t.type)})).trigger("blur")}(v),(f=s("#chart-bars")).length&&function(t){var e=new Chart(t,{type:"bar",data:{labels:["Jul","Aug","Sep","Oct","Nov","Dec"],datasets:[{label:"Sales",data:[25,20,30,22,17,29]}]}});t.data("chart",e)}(f),function(){var t=s("#c1-dark");t.length&&function(t){var e=new Chart(t,{type:"line",options:{scales:{yAxes:[{gridLines:{lineWidth:1,color:b.colors.gray[900],zeroLineColor:b.colors.gray[900]},ticks:{callback:function(t){if(!(t%10))return t}}}]},tooltips:{callbacks:{label:function(t,e){var a=e.datasets[t.datasetIndex].label||"",s=t.yLabel,i="";return e.datasets.length>1&&(i+=a),i+(s+" posts")}}}},data:{labels:["7","6","5","4","3","2","1"],datasets:[{label:"",data:s(".posts-this-week").data("update").data.datasets[0].data}]}});t.data("chart",e)}(t)}(),(h=s(".datepicker")).length&&h.each((function(){!function(t){t.datepicker({disableTouchKeyboard:!0,autoclose:!1})}(s(this))})),function(){if(s(".input-slider-container")[0]&&s(".input-slider-container").each((function(){var t=s(this).find(".input-slider"),e=t.attr("id"),a=t.data("range-value-min"),i=t.data("range-value-max"),n=s(this).find(".range-slider-value"),o=n.attr("id"),r=n.data("range-value-low"),l=document.getElementById(e),c=document.getElementById(o);_.create(l,{start:[parseInt(r)],connect:[!0,!1],range:{min:[parseInt(a)],max:[parseInt(i)]}}),l.noUiSlider.on("update",(function(t,e){c.textContent=t[e]}))})),s("#input-slider-range")[0]){var t=document.getElementById("input-slider-range"),e=document.getElementById("input-slider-range-value-low"),a=document.getElementById("input-slider-range-value-high"),i=[e,a];_.create(t,{start:[parseInt(e.getAttribute("data-range-value-low")),parseInt(a.getAttribute("data-range-value-high"))],connect:!0,range:{min:parseInt(t.getAttribute("data-range-value-min")),max:parseInt(t.getAttribute("data-range-value-max"))}}),t.noUiSlider.on("update",(function(t,e){i[e].textContent=t[e]}))}}());(g=s(".scrollbar-inner")).length&&g.scrollbar().scrollLock()},9901:function(){function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}!function(){var e="object"===("undefined"==typeof window?"undefined":t(window))?window:"object"===("undefined"==typeof self?"undefined":t(self))?self:this,a=e.BlobBuilder||e.WebKitBlobBuilder||e.MSBlobBuilder||e.MozBlobBuilder;e.URL=e.URL||e.webkitURL||function(t,e){return(e=document.createElement("a")).href=t,e};var s=e.Blob,i=URL.createObjectURL,n=URL.revokeObjectURL,o=e.Symbol&&e.Symbol.toStringTag,r=!1,c=!1,d=!!e.ArrayBuffer,u=a&&a.prototype.append&&a.prototype.getBlob;try{r=2===new Blob(["ä"]).size,c=2===new Blob([new Uint8Array([1,2])]).size}catch(t){}function p(t){return t.map((function(t){if(t.buffer instanceof ArrayBuffer){var e=t.buffer;if(t.byteLength!==e.byteLength){var a=new Uint8Array(t.byteLength);a.set(new Uint8Array(e,t.byteOffset,t.byteLength)),e=a.buffer}return e}return t}))}function m(t,e){e=e||{};var s=new a;return p(t).forEach((function(t){s.append(t)})),e.type?s.getBlob(e.type):s.getBlob()}function v(t,e){return new s(p(t),e||{})}e.Blob&&(m.prototype=Blob.prototype,v.prototype=Blob.prototype);var f="function"==typeof TextEncoder?TextEncoder.prototype.encode.bind(new TextEncoder):function(t){for(var a=0,s=t.length,i=e.Uint8Array||Array,n=0,o=Math.max(32,s+(s>>1)+7),r=new i(o>>3<<3);a=55296&&l<=56319){if(a=55296&&l<=56319)continue}if(n+4>r.length){o+=8,o=(o*=1+a/t.length*2)>>3<<3;var d=new Uint8Array(o);d.set(r),r=d}if(0!=(4294967168&l)){if(0==(4294965248&l))r[n++]=l>>6&31|192;else if(0==(4294901760&l))r[n++]=l>>12&15|224,r[n++]=l>>6&63|128;else{if(0!=(4292870144&l))continue;r[n++]=l>>18&7|240,r[n++]=l>>12&63|128,r[n++]=l>>6&63|128}r[n++]=63&l|128}else r[n++]=l}return r.slice(0,n)},h="function"==typeof TextDecoder?TextDecoder.prototype.decode.bind(new TextDecoder):function(t){for(var e=t.length,a=[],s=0;s239?4:l>223?3:l>191?2:1;if(s+d<=e)switch(d){case 1:l<128&&(c=l);break;case 2:128==(192&(i=t[s+1]))&&(r=(31&l)<<6|63&i)>127&&(c=r);break;case 3:i=t[s+1],n=t[s+2],128==(192&i)&&128==(192&n)&&(r=(15&l)<<12|(63&i)<<6|63&n)>2047&&(r<55296||r>57343)&&(c=r);break;case 4:i=t[s+1],n=t[s+2],o=t[s+3],128==(192&i)&&128==(192&n)&&128==(192&o)&&(r=(15&l)<<18|(63&i)<<12|(63&n)<<6|63&o)>65535&&r<1114112&&(c=r)}null===c?(c=65533,d=1):c>65535&&(c-=65536,a.push(c>>>10&1023|55296),c=56320|1023&c),a.push(c),s+=d}var u=a.length,p="";for(s=0;s>2,d=(3&i)<<4|o>>4,u=(15&o)<<2|l>>6,p=63&l;r||(p=64,n||(u=64)),a.push(e[c],e[d],e[u],e[p])}return a.join("")}var s=Object.create||function(t){function e(){}return e.prototype=t,new e};if(d)var o=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],r=ArrayBuffer.isView||function(t){return t&&o.indexOf(Object.prototype.toString.call(t))>-1};function c(a,s){s=null==s?{}:s;for(var i=0,n=(a=a||[]).length;i=e.size&&a.close()}))}})}}catch(t){try{new ReadableStream({}),b=function(t){var e=0;t=this;return new ReadableStream({pull:function(a){return t.slice(e,e+524288).arrayBuffer().then((function(s){e+=s.byteLength;var i=new Uint8Array(s);a.enqueue(i),e==t.size&&a.close()}))}})}}catch(t){try{new Response("").body.getReader().read(),b=function(){return new Response(this).body}}catch(t){b=function(){throw new Error("Include https://github.com/MattiasBuelens/web-streams-polyfill")}}}}_.arrayBuffer||(_.arrayBuffer=function(){var t=new FileReader;return t.readAsArrayBuffer(this),C(t)}),_.text||(_.text=function(){var t=new FileReader;return t.readAsText(this),C(t)}),_.stream||(_.stream=b)}(),function(t){"use strict";var e,a=t.Uint8Array,s=t.HTMLCanvasElement,i=s&&s.prototype,n=/\s*;\s*base64\s*(?:;|$)/i,o="toDataURL",r=function(t){for(var s,i,n=t.length,o=new a(n/4*3|0),r=0,l=0,c=[0,0],d=0,u=0;n--;)i=t.charCodeAt(r++),255!==(s=e[i-43])&&undefined!==s&&(c[1]=c[0],c[0]=i,u=u<<6|s,4===++d&&(o[l++]=u>>>16,61!==c[1]&&(o[l++]=u>>>8),61!==c[0]&&(o[l++]=u),d=0));return o};a&&(e=new a([62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,0,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51])),!s||i.toBlob&&i.toBlobHD||(i.toBlob||(i.toBlob=function(t,e){if(e||(e="image/png"),this.mozGetAsFile)t(this.mozGetAsFile("canvas",e));else if(this.msToBlob&&/^\s*image\/png\s*(?:$|;)/i.test(e))t(this.msToBlob());else{var s,i=Array.prototype.slice.call(arguments,1),l=this[o].apply(this,i),c=l.indexOf(","),d=l.substring(c+1),u=n.test(l.substring(0,c));Blob.fake?((s=new Blob).encoding=u?"base64":"URI",s.data=d,s.size=d.length):a&&(s=u?new Blob([r(d)],{type:e}):new Blob([decodeURIComponent(d)],{type:e})),t(s)}}),!i.toBlobHD&&i.toDataURLHD?i.toBlobHD=function(){o="toDataURLHD";var t=this.toBlob();return o="toDataURL",t}:i.toBlobHD=i.toBlob)}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||this.content||this)},86700:(t,e,a)=>{"use strict";a.r(e),a.d(e,{default:()=>n});var s=a(76798),i=a.n(s)()((function(t){return t[1]}));i.push([t.id,".gap-2[data-v-e104c6c0]{gap:1rem}",""]);const n=i},35358:(t,e,a)=>{var s={"./af":25177,"./af.js":25177,"./ar":61509,"./ar-dz":41488,"./ar-dz.js":41488,"./ar-kw":58676,"./ar-kw.js":58676,"./ar-ly":42353,"./ar-ly.js":42353,"./ar-ma":24496,"./ar-ma.js":24496,"./ar-ps":6947,"./ar-ps.js":6947,"./ar-sa":82682,"./ar-sa.js":82682,"./ar-tn":89756,"./ar-tn.js":89756,"./ar.js":61509,"./az":95533,"./az.js":95533,"./be":28959,"./be.js":28959,"./bg":47777,"./bg.js":47777,"./bm":54903,"./bm.js":54903,"./bn":61290,"./bn-bd":17357,"./bn-bd.js":17357,"./bn.js":61290,"./bo":31545,"./bo.js":31545,"./br":11470,"./br.js":11470,"./bs":44429,"./bs.js":44429,"./ca":7306,"./ca.js":7306,"./cs":56464,"./cs.js":56464,"./cv":73635,"./cv.js":73635,"./cy":64226,"./cy.js":64226,"./da":93601,"./da.js":93601,"./de":77853,"./de-at":26111,"./de-at.js":26111,"./de-ch":54697,"./de-ch.js":54697,"./de.js":77853,"./dv":60708,"./dv.js":60708,"./el":54691,"./el.js":54691,"./en-au":53872,"./en-au.js":53872,"./en-ca":28298,"./en-ca.js":28298,"./en-gb":56195,"./en-gb.js":56195,"./en-ie":66584,"./en-ie.js":66584,"./en-il":65543,"./en-il.js":65543,"./en-in":9033,"./en-in.js":9033,"./en-nz":79402,"./en-nz.js":79402,"./en-sg":20623,"./en-sg.js":20623,"./eo":32934,"./eo.js":32934,"./es":97650,"./es-do":20838,"./es-do.js":20838,"./es-mx":17730,"./es-mx.js":17730,"./es-us":56575,"./es-us.js":56575,"./es.js":97650,"./et":3035,"./et.js":3035,"./eu":3508,"./eu.js":3508,"./fa":119,"./fa.js":119,"./fi":90527,"./fi.js":90527,"./fil":95995,"./fil.js":95995,"./fo":52477,"./fo.js":52477,"./fr":85498,"./fr-ca":26435,"./fr-ca.js":26435,"./fr-ch":37892,"./fr-ch.js":37892,"./fr.js":85498,"./fy":37071,"./fy.js":37071,"./ga":41734,"./ga.js":41734,"./gd":70217,"./gd.js":70217,"./gl":77329,"./gl.js":77329,"./gom-deva":32124,"./gom-deva.js":32124,"./gom-latn":93383,"./gom-latn.js":93383,"./gu":95050,"./gu.js":95050,"./he":11713,"./he.js":11713,"./hi":43861,"./hi.js":43861,"./hr":26308,"./hr.js":26308,"./hu":90609,"./hu.js":90609,"./hy-am":17160,"./hy-am.js":17160,"./id":74063,"./id.js":74063,"./is":89374,"./is.js":89374,"./it":88383,"./it-ch":21827,"./it-ch.js":21827,"./it.js":88383,"./ja":23827,"./ja.js":23827,"./jv":89722,"./jv.js":89722,"./ka":41794,"./ka.js":41794,"./kk":27088,"./kk.js":27088,"./km":96870,"./km.js":96870,"./kn":84451,"./kn.js":84451,"./ko":63164,"./ko.js":63164,"./ku":98174,"./ku-kmr":6181,"./ku-kmr.js":6181,"./ku.js":98174,"./ky":78474,"./ky.js":78474,"./lb":79680,"./lb.js":79680,"./lo":15867,"./lo.js":15867,"./lt":45766,"./lt.js":45766,"./lv":69532,"./lv.js":69532,"./me":58076,"./me.js":58076,"./mi":41848,"./mi.js":41848,"./mk":30306,"./mk.js":30306,"./ml":73739,"./ml.js":73739,"./mn":99053,"./mn.js":99053,"./mr":86169,"./mr.js":86169,"./ms":73386,"./ms-my":92297,"./ms-my.js":92297,"./ms.js":73386,"./mt":77075,"./mt.js":77075,"./my":72264,"./my.js":72264,"./nb":22274,"./nb.js":22274,"./ne":8235,"./ne.js":8235,"./nl":92572,"./nl-be":43784,"./nl-be.js":43784,"./nl.js":92572,"./nn":54566,"./nn.js":54566,"./oc-lnc":69330,"./oc-lnc.js":69330,"./pa-in":29849,"./pa-in.js":29849,"./pl":94418,"./pl.js":94418,"./pt":79834,"./pt-br":48303,"./pt-br.js":48303,"./pt.js":79834,"./ro":24457,"./ro.js":24457,"./ru":82271,"./ru.js":82271,"./sd":1221,"./sd.js":1221,"./se":33478,"./se.js":33478,"./si":17538,"./si.js":17538,"./sk":5784,"./sk.js":5784,"./sl":46637,"./sl.js":46637,"./sq":86794,"./sq.js":86794,"./sr":45719,"./sr-cyrl":3322,"./sr-cyrl.js":3322,"./sr.js":45719,"./ss":56e3,"./ss.js":56e3,"./sv":41011,"./sv.js":41011,"./sw":40748,"./sw.js":40748,"./ta":11025,"./ta.js":11025,"./te":11885,"./te.js":11885,"./tet":28861,"./tet.js":28861,"./tg":86571,"./tg.js":86571,"./th":55802,"./th.js":55802,"./tk":59527,"./tk.js":59527,"./tl-ph":29231,"./tl-ph.js":29231,"./tlh":31052,"./tlh.js":31052,"./tr":85096,"./tr.js":85096,"./tzl":79846,"./tzl.js":79846,"./tzm":81765,"./tzm-latn":97711,"./tzm-latn.js":97711,"./tzm.js":81765,"./ug-cn":48414,"./ug-cn.js":48414,"./uk":16618,"./uk.js":16618,"./ur":57777,"./ur.js":57777,"./uz":57609,"./uz-latn":72475,"./uz-latn.js":72475,"./uz.js":57609,"./vi":21135,"./vi.js":21135,"./x-pseudo":64051,"./x-pseudo.js":64051,"./yo":82218,"./yo.js":82218,"./zh-cn":52648,"./zh-cn.js":52648,"./zh-hk":1632,"./zh-hk.js":1632,"./zh-mo":31541,"./zh-mo.js":31541,"./zh-tw":50304,"./zh-tw.js":50304};function i(t){var e=n(t);return a(e)}function n(t){if(!a.o(s,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return s[t]}i.keys=function(){return Object.keys(s)},i.resolve=n,t.exports=i,i.id=35358},55099:(t,e,a)=>{"use strict";a.r(e),a.d(e,{default:()=>r});var s=a(85072),i=a.n(s),n=a(86700),o={insert:"head",singleton:!1};i()(n.default,o);const r=n.default.locals||{}},80430:(t,e,a)=>{"use strict";a.r(e),a.d(e,{default:()=>o});var s=a(66196),i=a(45941),n={};for(const t in i)"default"!==t&&(n[t]=()=>i[t]);a.d(e,n);const o=(0,a(14486).default)(i.default,s.render,s.staticRenderFns,!1,null,null,null).exports},65465:(t,e,a)=>{"use strict";a.r(e),a.d(e,{default:()=>o});var s=a(36809),i=a(19990),n={};for(const t in i)"default"!==t&&(n[t]=()=>i[t]);a.d(e,n);const o=(0,a(14486).default)(i.default,s.render,s.staticRenderFns,!1,null,null,null).exports},47739:(t,e,a)=>{"use strict";a.r(e),a.d(e,{default:()=>o});var s=a(77764),i=a(41660),n={};for(const t in i)"default"!==t&&(n[t]=()=>i[t]);a.d(e,n);const o=(0,a(14486).default)(i.default,s.render,s.staticRenderFns,!1,null,null,null).exports},50828:(t,e,a)=>{"use strict";a.r(e),a.d(e,{default:()=>o});var s=a(63152),i=a(32311),n={};for(const t in i)"default"!==t&&(n[t]=()=>i[t]);a.d(e,n);a(87974);const o=(0,a(14486).default)(i.default,s.render,s.staticRenderFns,!1,null,"e104c6c0",null).exports},13929:(t,e,a)=>{"use strict";a.r(e),a.d(e,{default:()=>o});var s=a(31722),i=a(13398),n={};for(const t in i)"default"!==t&&(n[t]=()=>i[t]);a.d(e,n);const o=(0,a(14486).default)(i.default,s.render,s.staticRenderFns,!1,null,null,null).exports},27707:(t,e,a)=>{"use strict";a.r(e),a.d(e,{default:()=>o});var s=a(67774),i=a(41304),n={};for(const t in i)"default"!==t&&(n[t]=()=>i[t]);a.d(e,n);const o=(0,a(14486).default)(i.default,s.render,s.staticRenderFns,!1,null,null,null).exports},8889:(t,e,a)=>{"use strict";a.r(e),a.d(e,{default:()=>o});var s=a(43512),i=a(64814),n={};for(const t in i)"default"!==t&&(n[t]=()=>i[t]);a.d(e,n);const o=(0,a(14486).default)(i.default,s.render,s.staticRenderFns,!1,null,null,null).exports},98385:(t,e,a)=>{"use strict";a.r(e),a.d(e,{default:()=>o});var s=a(1711),i=a(41094),n={};for(const t in i)"default"!==t&&(n[t]=()=>i[t]);a.d(e,n);const o=(0,a(14486).default)(i.default,s.render,s.staticRenderFns,!1,null,null,null).exports},45941:(t,e,a)=>{"use strict";a.r(e),a.d(e,{default:()=>n});var s=a(95366),i={};for(const t in s)"default"!==t&&(i[t]=()=>s[t]);a.d(e,i);const n=s.default},19990:(t,e,a)=>{"use strict";a.r(e),a.d(e,{default:()=>n});var s=a(71847),i={};for(const t in s)"default"!==t&&(i[t]=()=>s[t]);a.d(e,i);const n=s.default},41660:(t,e,a)=>{"use strict";a.r(e),a.d(e,{default:()=>n});var s=a(44107),i={};for(const t in s)"default"!==t&&(i[t]=()=>s[t]);a.d(e,i);const n=s.default},32311:(t,e,a)=>{"use strict";a.r(e),a.d(e,{default:()=>n});var s=a(56310),i={};for(const t in s)"default"!==t&&(i[t]=()=>s[t]);a.d(e,i);const n=s.default},13398:(t,e,a)=>{"use strict";a.r(e),a.d(e,{default:()=>n});var s=a(51839),i={};for(const t in s)"default"!==t&&(i[t]=()=>s[t]);a.d(e,i);const n=s.default},41304:(t,e,a)=>{"use strict";a.r(e),a.d(e,{default:()=>n});var s=a(99697),i={};for(const t in s)"default"!==t&&(i[t]=()=>s[t]);a.d(e,i);const n=s.default},64814:(t,e,a)=>{"use strict";a.r(e),a.d(e,{default:()=>n});var s=a(72173),i={};for(const t in s)"default"!==t&&(i[t]=()=>s[t]);a.d(e,i);const n=s.default},41094:(t,e,a)=>{"use strict";a.r(e),a.d(e,{default:()=>n});var s=a(47835),i={};for(const t in s)"default"!==t&&(i[t]=()=>s[t]);a.d(e,i);const n=s.default},66196:(t,e,a)=>{"use strict";a.r(e);var s=a(69385),i={};for(const t in s)"default"!==t&&(i[t]=()=>s[t]);a.d(e,i)},36809:(t,e,a)=>{"use strict";a.r(e);var s=a(41298),i={};for(const t in s)"default"!==t&&(i[t]=()=>s[t]);a.d(e,i)},77764:(t,e,a)=>{"use strict";a.r(e);var s=a(54449),i={};for(const t in s)"default"!==t&&(i[t]=()=>s[t]);a.d(e,i)},63152:(t,e,a)=>{"use strict";a.r(e);var s=a(38343),i={};for(const t in s)"default"!==t&&(i[t]=()=>s[t]);a.d(e,i)},31722:(t,e,a)=>{"use strict";a.r(e);var s=a(44381),i={};for(const t in s)"default"!==t&&(i[t]=()=>s[t]);a.d(e,i)},67774:(t,e,a)=>{"use strict";a.r(e);var s=a(64441),i={};for(const t in s)"default"!==t&&(i[t]=()=>s[t]);a.d(e,i)},43512:(t,e,a)=>{"use strict";a.r(e);var s=a(62581),i={};for(const t in s)"default"!==t&&(i[t]=()=>s[t]);a.d(e,i)},1711:(t,e,a)=>{"use strict";a.r(e);var s=a(24664),i={};for(const t in s)"default"!==t&&(i[t]=()=>s[t]);a.d(e,i)},87974:(t,e,a)=>{"use strict";a.r(e);var s=a(55099),i={};for(const t in s)"default"!==t&&(i[t]=()=>s[t]);a.d(e,i)}},t=>{t.O(0,[3660],(()=>{return e=36671,t(t.s=e);var e}));t.O()}]); \ No newline at end of file diff --git a/public/js/admin_invite.js b/public/js/admin_invite.js index 071d24aca..f406ad0b5 100644 --- a/public/js/admin_invite.js +++ b/public/js/admin_invite.js @@ -1 +1 @@ -(self.webpackChunkpixelfed=self.webpackChunkpixelfed||[]).push([[2062],{99662:(t,e,i)=>{"use strict";i.r(e),i.d(e,{default:()=>s});var a=i(19755);const s={props:["code"],data:function(){return{instance:{},inviteConfig:{},tabIndex:0,isProceeding:!1,errors:{username:void 0,email:void 0,password:void 0,password_confirm:void 0},form:{username:void 0,email:void 0,password:void 0,password_confirm:void 0,display_name:void 0}}},mounted:function(){this.fetchInstanceData()},methods:{fetchInstanceData:function(){var t=this;axios.get("/api/v1/instance").then((function(e){t.instance=e.data})).then((function(e){t.verifyToken()})).catch((function(t){console.log(t)}))},verifyToken:function(){var t=this;axios.post("/api/v1.1/auth/invite/admin/verify",{token:this.code}).then((function(e){t.tabIndex=1,t.inviteConfig=e.data})).catch((function(e){t.tabIndex="invalid-code"}))},checkUsernameAvailability:function(){var t=this;axios.post("/api/v1.1/auth/invite/admin/uc",{token:this.code,username:this.form.username}).then((function(e){e&&e.data?(t.isProceeding=!1,t.tabIndex=2):(t.tabIndex="invalid-code",t.isProceeding=!1)})).catch((function(e){e.response.data&&e.response.data.username?(t.errors.username=e.response.data.username[0],t.isProceeding=!1):(t.tabIndex="invalid-code",t.isProceeding=!1)}))},checkEmailAvailability:function(){var t=this;axios.post("/api/v1.1/auth/invite/admin/ec",{token:this.code,email:this.form.email}).then((function(e){e&&e.data?(t.isProceeding=!1,t.tabIndex=3):(t.tabIndex="invalid-code",t.isProceeding=!1)})).catch((function(e){e.response.data&&e.response.data.email?(t.errors.email=e.response.data.email[0],t.isProceeding=!1):(t.tabIndex="invalid-code",t.isProceeding=!1)}))},validateEmail:function(){return!(!this.form.email||!this.form.email.length)&&/^[a-zA-Z]+[a-zA-Z0-9_.-]+@[a-zA-Z0-9_.-]+[a-zA-Z]$/i.test(this.form.email)},handleRegistration:function(){var t=a("
",{action:"/api/v1.1/auth/invite/admin/re",method:"post"}),e={_token:document.head.querySelector('meta[name="csrf-token"]').content,token:this.code,username:this.form.username,name:this.form.display_name,email:this.form.email,password:this.form.password,password_confirm:this.form.password_confirm};a.each(e,(function(e,i){a("").attr({type:"hidden",name:e,value:i}).appendTo(t)})),t.appendTo("body").submit()},proceed:function(t){switch(this.isProceeding=!0,event.currentTarget.blur(),t){case 1:this.checkUsernameAvailability();break;case 2:this.checkEmailAvailability();break;case 3:this.isProceeding=!1,this.tabIndex=4;break;case 4:this.isProceeding=!1,this.tabIndex=5;break;case 5:this.tabIndex=6,this.handleRegistration()}}}}},80740:(t,e,i)=>{"use strict";i.r(e),i.d(e,{render:()=>a,staticRenderFns:()=>s});var a=function(){var t=this,e=t._self._c;return e("div",{staticClass:"admin-invite-component"},[e("div",{staticClass:"admin-invite-component-inner"},[e("div",{staticClass:"card bg-dark"},[0===t.tabIndex?e("div",{staticClass:"card-body d-flex align-items-center justify-content-center"},[e("div",{staticClass:"text-center"},[e("b-spinner",{attrs:{variant:"muted"}}),t._v(" "),e("p",{staticClass:"text-muted mb-0"},[t._v("Loading...")])],1)]):1===t.tabIndex?e("div",{staticClass:"card-body"},[t._m(0),t._v(" "),e("div",{staticClass:"d-flex flex-column align-items-center justify-content-center"},[e("p",{staticClass:"lead mb-1 text-muted"},[t._v("You've been invited to join")]),t._v(" "),e("p",{staticClass:"h3 mb-2"},[t._v(t._s(t.instance.uri))]),t._v(" "),e("p",{staticClass:"mb-0 text-muted"},[e("span",[t._v(t._s(t.instance.stats.user_count.toLocaleString("en-CA",{compactDisplay:"short",notation:"compact"}))+" users")]),t._v(" "),e("span",[t._v("·")]),t._v(" "),e("span",[t._v(t._s(t.instance.stats.status_count.toLocaleString("en-CA",{compactDisplay:"short",notation:"compact"}))+" posts")])]),t._v(" "),"You've been invited to join"!=t.inviteConfig.message?e("div",[e("div",{staticClass:"admin-message"},[e("p",{staticClass:"small text-light mb-0"},[t._v("Message from admin(s):")]),t._v("\n "+t._s(t.inviteConfig.message)+"\n ")])]):t._e()]),t._v(" "),e("div",{staticClass:"mt-5"},[e("div",{staticClass:"form-group"},[e("label",{attrs:{for:"username"}},[t._v("Username")]),t._v(" "),e("input",{directives:[{name:"model",rawName:"v-model",value:t.form.username,expression:"form.username"}],staticClass:"form-control form-control-lg",attrs:{type:"text",placeholder:"What should everyone call you?",minlength:"2",maxlength:"15"},domProps:{value:t.form.username},on:{input:function(e){e.target.composing||t.$set(t.form,"username",e.target.value)}}}),t._v(" "),t.errors.username?e("p",{staticClass:"form-text text-danger"},[e("i",{staticClass:"far fa-exclamation-triangle mr-1"}),t._v("\n "+t._s(t.errors.username)+"\n ")]):t._e()]),t._v(" "),e("button",{staticClass:"btn btn-primary btn-block font-weight-bold",attrs:{disabled:t.isProceeding||!t.form.username||t.form.username.length<2},on:{click:function(e){return t.proceed(t.tabIndex)}}},[t.isProceeding?[e("b-spinner",{attrs:{small:""}})]:[t._v("\n Continue\n ")]],2),t._v(" "),t._m(1),t._v(" "),t._m(2)])]):2===t.tabIndex?e("div",{staticClass:"card-body"},[t._m(3),t._v(" "),e("div",{staticClass:"d-flex flex-column align-items-center justify-content-center"},[e("p",{staticClass:"lead mb-1 text-muted"},[t._v("You've been invited to join")]),t._v(" "),e("p",{staticClass:"h3 mb-2"},[t._v(t._s(t.instance.uri))])]),t._v(" "),e("div",{staticClass:"mt-5"},[e("div",{staticClass:"form-group"},[e("label",{attrs:{for:"username"}},[t._v("Email Address")]),t._v(" "),e("input",{directives:[{name:"model",rawName:"v-model",value:t.form.email,expression:"form.email"}],staticClass:"form-control form-control-lg",attrs:{type:"email",placeholder:"Your email address"},domProps:{value:t.form.email},on:{input:function(e){e.target.composing||t.$set(t.form,"email",e.target.value)}}}),t._v(" "),t.errors.email?e("p",{staticClass:"form-text text-danger"},[e("i",{staticClass:"far fa-exclamation-triangle mr-1"}),t._v("\n "+t._s(t.errors.email)+"\n ")]):t._e()]),t._v(" "),e("button",{staticClass:"btn btn-primary btn-block font-weight-bold",attrs:{disabled:t.isProceeding||!t.form.email||!t.validateEmail()},on:{click:function(e){return t.proceed(t.tabIndex)}}},[t.isProceeding?[e("b-spinner",{attrs:{small:""}})]:[t._v("\n Continue\n ")]],2)])]):3===t.tabIndex?e("div",{staticClass:"card-body"},[t._m(4),t._v(" "),e("div",{staticClass:"d-flex flex-column align-items-center justify-content-center"},[e("p",{staticClass:"lead mb-1 text-muted"},[t._v("You've been invited to join")]),t._v(" "),e("p",{staticClass:"h3 mb-2"},[t._v(t._s(t.instance.uri))])]),t._v(" "),e("div",{staticClass:"mt-5"},[e("div",{staticClass:"form-group"},[e("label",{attrs:{for:"username"}},[t._v("Password")]),t._v(" "),e("input",{directives:[{name:"model",rawName:"v-model",value:t.form.password,expression:"form.password"}],staticClass:"form-control form-control-lg",attrs:{type:"password",placeholder:"Use a secure password",minlength:"8"},domProps:{value:t.form.password},on:{input:function(e){e.target.composing||t.$set(t.form,"password",e.target.value)}}}),t._v(" "),t.errors.password?e("p",{staticClass:"form-text text-danger"},[e("i",{staticClass:"far fa-exclamation-triangle mr-1"}),t._v("\n "+t._s(t.errors.password)+"\n ")]):t._e()]),t._v(" "),e("button",{staticClass:"btn btn-primary btn-block font-weight-bold",attrs:{disabled:t.isProceeding||!t.form.password||t.form.password.length<8},on:{click:function(e){return t.proceed(t.tabIndex)}}},[t.isProceeding?[e("b-spinner",{attrs:{small:""}})]:[t._v("\n Continue\n ")]],2)])]):4===t.tabIndex?e("div",{staticClass:"card-body"},[t._m(5),t._v(" "),e("div",{staticClass:"d-flex flex-column align-items-center justify-content-center"},[e("p",{staticClass:"lead mb-1 text-muted"},[t._v("You've been invited to join")]),t._v(" "),e("p",{staticClass:"h3 mb-2"},[t._v(t._s(t.instance.uri))])]),t._v(" "),e("div",{staticClass:"mt-5"},[e("div",{staticClass:"form-group"},[e("label",{attrs:{for:"username"}},[t._v("Confirm Password")]),t._v(" "),e("input",{directives:[{name:"model",rawName:"v-model",value:t.form.password_confirm,expression:"form.password_confirm"}],staticClass:"form-control form-control-lg",attrs:{type:"password",placeholder:"Use a secure password",minlength:"8"},domProps:{value:t.form.password_confirm},on:{input:function(e){e.target.composing||t.$set(t.form,"password_confirm",e.target.value)}}}),t._v(" "),t.errors.password_confirm?e("p",{staticClass:"form-text text-danger"},[e("i",{staticClass:"far fa-exclamation-triangle mr-1"}),t._v("\n "+t._s(t.errors.password_confirm)+"\n ")]):t._e()]),t._v(" "),e("button",{staticClass:"btn btn-primary btn-block font-weight-bold",attrs:{disabled:t.isProceeding||!t.form.password_confirm||t.form.password!==t.form.password_confirm},on:{click:function(e){return t.proceed(t.tabIndex)}}},[t.isProceeding?[e("b-spinner",{attrs:{small:""}})]:[t._v("\n Continue\n ")]],2)])]):5===t.tabIndex?e("div",{staticClass:"card-body"},[t._m(6),t._v(" "),e("div",{staticClass:"d-flex flex-column align-items-center justify-content-center"},[e("p",{staticClass:"lead mb-1 text-muted"},[t._v("You've been invited to join")]),t._v(" "),e("p",{staticClass:"h3 mb-2"},[t._v(t._s(t.instance.uri))])]),t._v(" "),e("div",{staticClass:"mt-5"},[e("div",{staticClass:"form-group"},[e("label",{attrs:{for:"username"}},[t._v("Display Name")]),t._v(" "),e("input",{directives:[{name:"model",rawName:"v-model",value:t.form.display_name,expression:"form.display_name"}],staticClass:"form-control form-control-lg",attrs:{type:"text",placeholder:"Add an optional display name",minlength:"8"},domProps:{value:t.form.display_name},on:{input:function(e){e.target.composing||t.$set(t.form,"display_name",e.target.value)}}}),t._v(" "),t.errors.display_name?e("p",{staticClass:"form-text text-danger"},[e("i",{staticClass:"far fa-exclamation-triangle mr-1"}),t._v("\n "+t._s(t.errors.display_name)+"\n ")]):t._e()]),t._v(" "),e("button",{staticClass:"btn btn-primary btn-block font-weight-bold",attrs:{disabled:t.isProceeding},on:{click:function(e){return t.proceed(t.tabIndex)}}},[t.isProceeding?[e("b-spinner",{attrs:{small:""}})]:[t._v("\n Continue\n ")]],2)])]):6===t.tabIndex?e("div",{staticClass:"card-body d-flex flex-column"},[t._m(7),t._v(" "),e("div",{staticClass:"d-flex flex-column align-items-center justify-content-center"},[e("p",{staticClass:"lead mb-1 text-muted"},[t._v("You've been invited to join")]),t._v(" "),e("p",{staticClass:"h3 mb-2"},[t._v(t._s(t.instance.uri))])]),t._v(" "),e("div",{staticClass:"mt-5 d-flex align-items-center justify-content-center flex-column flex-grow-1"},[e("b-spinner",{attrs:{variant:"muted"}}),t._v(" "),e("p",{staticClass:"text-muted"},[t._v("Registering...")])],1)]):"invalid-code"===t.tabIndex?e("div",{staticClass:"card-body d-flex align-items-center justify-content-center"},[t._m(8)]):e("div",{staticClass:"card-body"},[e("p",[t._v("An error occured.")])])])])])},s=[function(){var t=this._self._c;return t("div",{staticClass:"d-flex justify-content-center my-3"},[t("img",{attrs:{src:"/img/pixelfed-icon-color.png",width:"60",alt:"Pixelfed logo"}})])},function(){var t=this._self._c;return t("p",{staticClass:"login-link"},[t("a",{attrs:{href:"/login"}},[this._v("Already have an account?")])])},function(){var t=this,e=t._self._c;return e("p",{staticClass:"register-terms"},[t._v("\n By registering, you agree to our "),e("a",{attrs:{href:"/site/terms"}},[t._v("Terms of Service")]),t._v(" and "),e("a",{attrs:{href:"/site/privacy"}},[t._v("Privacy Policy")]),t._v(".\n ")])},function(){var t=this._self._c;return t("div",{staticClass:"d-flex justify-content-center my-3"},[t("img",{attrs:{src:"/img/pixelfed-icon-color.png",width:"60",alt:"Pixelfed logo"}})])},function(){var t=this._self._c;return t("div",{staticClass:"d-flex justify-content-center my-3"},[t("img",{attrs:{src:"/img/pixelfed-icon-color.png",width:"60",alt:"Pixelfed logo"}})])},function(){var t=this._self._c;return t("div",{staticClass:"d-flex justify-content-center my-3"},[t("img",{attrs:{src:"/img/pixelfed-icon-color.png",width:"60",alt:"Pixelfed logo"}})])},function(){var t=this._self._c;return t("div",{staticClass:"d-flex justify-content-center my-3"},[t("img",{attrs:{src:"/img/pixelfed-icon-color.png",width:"60",alt:"Pixelfed logo"}})])},function(){var t=this._self._c;return t("div",{staticClass:"d-flex justify-content-center my-3"},[t("img",{attrs:{src:"/img/pixelfed-icon-color.png",width:"60",alt:"Pixelfed logo"}})])},function(){var t=this,e=t._self._c;return e("div",[e("h1",{staticClass:"text-center"},[t._v("Invalid Invite Code")]),t._v(" "),e("hr"),t._v(" "),e("p",{staticClass:"text-muted mb-1"},[t._v("The invite code you were provided is not valid, this can happen when:")]),t._v(" "),e("ul",{staticClass:"text-muted"},[e("li",[t._v("Invite code has typos")]),t._v(" "),e("li",[t._v("Invite code was already used")]),t._v(" "),e("li",[t._v("Invite code has reached max uses")]),t._v(" "),e("li",[t._v("Invite code has expired")]),t._v(" "),e("li",[t._v("You have been rate limited")])]),t._v(" "),e("hr"),t._v(" "),e("a",{staticClass:"btn btn-primary btn-block rounded-pill font-weight-bold",attrs:{href:"/"}},[t._v("Go back home")])])}]},2462:(t,e,i)=>{Vue.component("admin-invite",i(34421).default)},45950:(t,e,i)=>{"use strict";i.r(e),i.d(e,{default:()=>n});var a=i(1519),s=i.n(a)()((function(t){return t[1]}));s.push([t.id,".admin-invite-component{font-family:var(--font-family-sans-serif)}.admin-invite-component-inner{align-items:center;display:flex;height:100vh;justify-content:center;width:100wv}.admin-invite-component-inner .card{border-radius:10px;color:#fff;min-height:530px;padding:1.25rem 2.5rem;width:100%}@media (min-width:768px){.admin-invite-component-inner .card{width:30%}}.admin-invite-component-inner .card label{color:var(--muted);font-weight:700;text-transform:uppercase}.admin-invite-component-inner .card .login-link{font-weight:600;margin-top:10px}.admin-invite-component-inner .card .register-terms{color:var(--muted);font-size:12px}.admin-invite-component-inner .card .form-control{color:#fff}.admin-invite-component-inner .card .admin-message{border:1px solid var(--dropdown-item-hover-color);border-radius:5px;color:var(--text-lighter);margin-top:20px;padding:1rem}",""]);const n=s},91046:(t,e,i)=>{"use strict";i.r(e),i.d(e,{default:()=>o});var a=i(93379),s=i.n(a),n=i(45950),r={insert:"head",singleton:!1};s()(n.default,r);const o=n.default.locals||{}},34421:(t,e,i)=>{"use strict";i.r(e),i.d(e,{default:()=>r});var a=i(17367),s=i(82879),n={};for(const t in s)"default"!==t&&(n[t]=()=>s[t]);i.d(e,n);i(23479);const r=(0,i(51900).default)(s.default,a.render,a.staticRenderFns,!1,null,null,null).exports},82879:(t,e,i)=>{"use strict";i.r(e),i.d(e,{default:()=>n});var a=i(99662),s={};for(const t in a)"default"!==t&&(s[t]=()=>a[t]);i.d(e,s);const n=a.default},17367:(t,e,i)=>{"use strict";i.r(e);var a=i(80740),s={};for(const t in a)"default"!==t&&(s[t]=()=>a[t]);i.d(e,s)},23479:(t,e,i)=>{"use strict";i.r(e);var a=i(91046),s={};for(const t in a)"default"!==t&&(s[t]=()=>a[t]);i.d(e,s)}},t=>{t.O(0,[8898],(()=>{return e=2462,t(t.s=e);var e}));t.O()}]); \ No newline at end of file +(self.webpackChunkpixelfed=self.webpackChunkpixelfed||[]).push([[5853],{84582:(t,e,i)=>{"use strict";i.r(e),i.d(e,{default:()=>s});var a=i(74692);const s={props:["code"],data:function(){return{instance:{},inviteConfig:{},tabIndex:0,isProceeding:!1,errors:{username:void 0,email:void 0,password:void 0,password_confirm:void 0},form:{username:void 0,email:void 0,password:void 0,password_confirm:void 0,display_name:void 0}}},mounted:function(){this.fetchInstanceData()},methods:{fetchInstanceData:function(){var t=this;axios.get("/api/v1/instance").then((function(e){t.instance=e.data})).then((function(e){t.verifyToken()})).catch((function(t){console.log(t)}))},verifyToken:function(){var t=this;axios.post("/api/v1.1/auth/invite/admin/verify",{token:this.code}).then((function(e){t.tabIndex=1,t.inviteConfig=e.data})).catch((function(e){t.tabIndex="invalid-code"}))},checkUsernameAvailability:function(){var t=this;axios.post("/api/v1.1/auth/invite/admin/uc",{token:this.code,username:this.form.username}).then((function(e){e&&e.data?(t.isProceeding=!1,t.tabIndex=2):(t.tabIndex="invalid-code",t.isProceeding=!1)})).catch((function(e){e.response.data&&e.response.data.username?(t.errors.username=e.response.data.username[0],t.isProceeding=!1):(t.tabIndex="invalid-code",t.isProceeding=!1)}))},checkEmailAvailability:function(){var t=this;axios.post("/api/v1.1/auth/invite/admin/ec",{token:this.code,email:this.form.email}).then((function(e){e&&e.data?(t.isProceeding=!1,t.tabIndex=3):(t.tabIndex="invalid-code",t.isProceeding=!1)})).catch((function(e){e.response.data&&e.response.data.email?(t.errors.email=e.response.data.email[0],t.isProceeding=!1):(t.tabIndex="invalid-code",t.isProceeding=!1)}))},validateEmail:function(){return!(!this.form.email||!this.form.email.length)&&/^[a-zA-Z]+[a-zA-Z0-9_.-]+@[a-zA-Z0-9_.-]+[a-zA-Z]$/i.test(this.form.email)},handleRegistration:function(){var t=a("",{action:"/api/v1.1/auth/invite/admin/re",method:"post"}),e={_token:document.head.querySelector('meta[name="csrf-token"]').content,token:this.code,username:this.form.username,name:this.form.display_name,email:this.form.email,password:this.form.password,password_confirm:this.form.password_confirm};a.each(e,(function(e,i){a("").attr({type:"hidden",name:e,value:i}).appendTo(t)})),t.appendTo("body").submit()},proceed:function(t){switch(this.isProceeding=!0,event.currentTarget.blur(),t){case 1:this.checkUsernameAvailability();break;case 2:this.checkEmailAvailability();break;case 3:this.isProceeding=!1,this.tabIndex=4;break;case 4:this.isProceeding=!1,this.tabIndex=5;break;case 5:this.tabIndex=6,this.handleRegistration()}}}}},65835:(t,e,i)=>{"use strict";i.r(e),i.d(e,{render:()=>a,staticRenderFns:()=>s});var a=function(){var t=this,e=t._self._c;return e("div",{staticClass:"admin-invite-component"},[e("div",{staticClass:"admin-invite-component-inner"},[e("div",{staticClass:"card bg-dark"},[0===t.tabIndex?e("div",{staticClass:"card-body d-flex align-items-center justify-content-center"},[e("div",{staticClass:"text-center"},[e("b-spinner",{attrs:{variant:"muted"}}),t._v(" "),e("p",{staticClass:"text-muted mb-0"},[t._v("Loading...")])],1)]):1===t.tabIndex?e("div",{staticClass:"card-body"},[t._m(0),t._v(" "),e("div",{staticClass:"d-flex flex-column align-items-center justify-content-center"},[e("p",{staticClass:"lead mb-1 text-muted"},[t._v("You've been invited to join")]),t._v(" "),e("p",{staticClass:"h3 mb-2"},[t._v(t._s(t.instance.uri))]),t._v(" "),e("p",{staticClass:"mb-0 text-muted"},[e("span",[t._v(t._s(t.instance.stats.user_count.toLocaleString("en-CA",{compactDisplay:"short",notation:"compact"}))+" users")]),t._v(" "),e("span",[t._v("·")]),t._v(" "),e("span",[t._v(t._s(t.instance.stats.status_count.toLocaleString("en-CA",{compactDisplay:"short",notation:"compact"}))+" posts")])]),t._v(" "),"You've been invited to join"!=t.inviteConfig.message?e("div",[e("div",{staticClass:"admin-message"},[e("p",{staticClass:"small text-light mb-0"},[t._v("Message from admin(s):")]),t._v("\n "+t._s(t.inviteConfig.message)+"\n ")])]):t._e()]),t._v(" "),e("div",{staticClass:"mt-5"},[e("div",{staticClass:"form-group"},[e("label",{attrs:{for:"username"}},[t._v("Username")]),t._v(" "),e("input",{directives:[{name:"model",rawName:"v-model",value:t.form.username,expression:"form.username"}],staticClass:"form-control form-control-lg",attrs:{type:"text",placeholder:"What should everyone call you?",minlength:"2",maxlength:"15"},domProps:{value:t.form.username},on:{input:function(e){e.target.composing||t.$set(t.form,"username",e.target.value)}}}),t._v(" "),t.errors.username?e("p",{staticClass:"form-text text-danger"},[e("i",{staticClass:"far fa-exclamation-triangle mr-1"}),t._v("\n "+t._s(t.errors.username)+"\n ")]):t._e()]),t._v(" "),e("button",{staticClass:"btn btn-primary btn-block font-weight-bold",attrs:{disabled:t.isProceeding||!t.form.username||t.form.username.length<2},on:{click:function(e){return t.proceed(t.tabIndex)}}},[t.isProceeding?[e("b-spinner",{attrs:{small:""}})]:[t._v("\n Continue\n ")]],2),t._v(" "),t._m(1),t._v(" "),t._m(2)])]):2===t.tabIndex?e("div",{staticClass:"card-body"},[t._m(3),t._v(" "),e("div",{staticClass:"d-flex flex-column align-items-center justify-content-center"},[e("p",{staticClass:"lead mb-1 text-muted"},[t._v("You've been invited to join")]),t._v(" "),e("p",{staticClass:"h3 mb-2"},[t._v(t._s(t.instance.uri))])]),t._v(" "),e("div",{staticClass:"mt-5"},[e("div",{staticClass:"form-group"},[e("label",{attrs:{for:"username"}},[t._v("Email Address")]),t._v(" "),e("input",{directives:[{name:"model",rawName:"v-model",value:t.form.email,expression:"form.email"}],staticClass:"form-control form-control-lg",attrs:{type:"email",placeholder:"Your email address"},domProps:{value:t.form.email},on:{input:function(e){e.target.composing||t.$set(t.form,"email",e.target.value)}}}),t._v(" "),t.errors.email?e("p",{staticClass:"form-text text-danger"},[e("i",{staticClass:"far fa-exclamation-triangle mr-1"}),t._v("\n "+t._s(t.errors.email)+"\n ")]):t._e()]),t._v(" "),e("button",{staticClass:"btn btn-primary btn-block font-weight-bold",attrs:{disabled:t.isProceeding||!t.form.email||!t.validateEmail()},on:{click:function(e){return t.proceed(t.tabIndex)}}},[t.isProceeding?[e("b-spinner",{attrs:{small:""}})]:[t._v("\n Continue\n ")]],2)])]):3===t.tabIndex?e("div",{staticClass:"card-body"},[t._m(4),t._v(" "),e("div",{staticClass:"d-flex flex-column align-items-center justify-content-center"},[e("p",{staticClass:"lead mb-1 text-muted"},[t._v("You've been invited to join")]),t._v(" "),e("p",{staticClass:"h3 mb-2"},[t._v(t._s(t.instance.uri))])]),t._v(" "),e("div",{staticClass:"mt-5"},[e("div",{staticClass:"form-group"},[e("label",{attrs:{for:"username"}},[t._v("Password")]),t._v(" "),e("input",{directives:[{name:"model",rawName:"v-model",value:t.form.password,expression:"form.password"}],staticClass:"form-control form-control-lg",attrs:{type:"password",placeholder:"Use a secure password",minlength:"8"},domProps:{value:t.form.password},on:{input:function(e){e.target.composing||t.$set(t.form,"password",e.target.value)}}}),t._v(" "),t.errors.password?e("p",{staticClass:"form-text text-danger"},[e("i",{staticClass:"far fa-exclamation-triangle mr-1"}),t._v("\n "+t._s(t.errors.password)+"\n ")]):t._e()]),t._v(" "),e("button",{staticClass:"btn btn-primary btn-block font-weight-bold",attrs:{disabled:t.isProceeding||!t.form.password||t.form.password.length<8},on:{click:function(e){return t.proceed(t.tabIndex)}}},[t.isProceeding?[e("b-spinner",{attrs:{small:""}})]:[t._v("\n Continue\n ")]],2)])]):4===t.tabIndex?e("div",{staticClass:"card-body"},[t._m(5),t._v(" "),e("div",{staticClass:"d-flex flex-column align-items-center justify-content-center"},[e("p",{staticClass:"lead mb-1 text-muted"},[t._v("You've been invited to join")]),t._v(" "),e("p",{staticClass:"h3 mb-2"},[t._v(t._s(t.instance.uri))])]),t._v(" "),e("div",{staticClass:"mt-5"},[e("div",{staticClass:"form-group"},[e("label",{attrs:{for:"username"}},[t._v("Confirm Password")]),t._v(" "),e("input",{directives:[{name:"model",rawName:"v-model",value:t.form.password_confirm,expression:"form.password_confirm"}],staticClass:"form-control form-control-lg",attrs:{type:"password",placeholder:"Use a secure password",minlength:"8"},domProps:{value:t.form.password_confirm},on:{input:function(e){e.target.composing||t.$set(t.form,"password_confirm",e.target.value)}}}),t._v(" "),t.errors.password_confirm?e("p",{staticClass:"form-text text-danger"},[e("i",{staticClass:"far fa-exclamation-triangle mr-1"}),t._v("\n "+t._s(t.errors.password_confirm)+"\n ")]):t._e()]),t._v(" "),e("button",{staticClass:"btn btn-primary btn-block font-weight-bold",attrs:{disabled:t.isProceeding||!t.form.password_confirm||t.form.password!==t.form.password_confirm},on:{click:function(e){return t.proceed(t.tabIndex)}}},[t.isProceeding?[e("b-spinner",{attrs:{small:""}})]:[t._v("\n Continue\n ")]],2)])]):5===t.tabIndex?e("div",{staticClass:"card-body"},[t._m(6),t._v(" "),e("div",{staticClass:"d-flex flex-column align-items-center justify-content-center"},[e("p",{staticClass:"lead mb-1 text-muted"},[t._v("You've been invited to join")]),t._v(" "),e("p",{staticClass:"h3 mb-2"},[t._v(t._s(t.instance.uri))])]),t._v(" "),e("div",{staticClass:"mt-5"},[e("div",{staticClass:"form-group"},[e("label",{attrs:{for:"username"}},[t._v("Display Name")]),t._v(" "),e("input",{directives:[{name:"model",rawName:"v-model",value:t.form.display_name,expression:"form.display_name"}],staticClass:"form-control form-control-lg",attrs:{type:"text",placeholder:"Add an optional display name",minlength:"8"},domProps:{value:t.form.display_name},on:{input:function(e){e.target.composing||t.$set(t.form,"display_name",e.target.value)}}}),t._v(" "),t.errors.display_name?e("p",{staticClass:"form-text text-danger"},[e("i",{staticClass:"far fa-exclamation-triangle mr-1"}),t._v("\n "+t._s(t.errors.display_name)+"\n ")]):t._e()]),t._v(" "),e("button",{staticClass:"btn btn-primary btn-block font-weight-bold",attrs:{disabled:t.isProceeding},on:{click:function(e){return t.proceed(t.tabIndex)}}},[t.isProceeding?[e("b-spinner",{attrs:{small:""}})]:[t._v("\n Continue\n ")]],2)])]):6===t.tabIndex?e("div",{staticClass:"card-body d-flex flex-column"},[t._m(7),t._v(" "),e("div",{staticClass:"d-flex flex-column align-items-center justify-content-center"},[e("p",{staticClass:"lead mb-1 text-muted"},[t._v("You've been invited to join")]),t._v(" "),e("p",{staticClass:"h3 mb-2"},[t._v(t._s(t.instance.uri))])]),t._v(" "),e("div",{staticClass:"mt-5 d-flex align-items-center justify-content-center flex-column flex-grow-1"},[e("b-spinner",{attrs:{variant:"muted"}}),t._v(" "),e("p",{staticClass:"text-muted"},[t._v("Registering...")])],1)]):"invalid-code"===t.tabIndex?e("div",{staticClass:"card-body d-flex align-items-center justify-content-center"},[t._m(8)]):e("div",{staticClass:"card-body"},[e("p",[t._v("An error occured.")])])])])])},s=[function(){var t=this._self._c;return t("div",{staticClass:"d-flex justify-content-center my-3"},[t("img",{attrs:{src:"/img/pixelfed-icon-color.png",width:"60",alt:"Pixelfed logo"}})])},function(){var t=this._self._c;return t("p",{staticClass:"login-link"},[t("a",{attrs:{href:"/login"}},[this._v("Already have an account?")])])},function(){var t=this,e=t._self._c;return e("p",{staticClass:"register-terms"},[t._v("\n By registering, you agree to our "),e("a",{attrs:{href:"/site/terms"}},[t._v("Terms of Service")]),t._v(" and "),e("a",{attrs:{href:"/site/privacy"}},[t._v("Privacy Policy")]),t._v(".\n ")])},function(){var t=this._self._c;return t("div",{staticClass:"d-flex justify-content-center my-3"},[t("img",{attrs:{src:"/img/pixelfed-icon-color.png",width:"60",alt:"Pixelfed logo"}})])},function(){var t=this._self._c;return t("div",{staticClass:"d-flex justify-content-center my-3"},[t("img",{attrs:{src:"/img/pixelfed-icon-color.png",width:"60",alt:"Pixelfed logo"}})])},function(){var t=this._self._c;return t("div",{staticClass:"d-flex justify-content-center my-3"},[t("img",{attrs:{src:"/img/pixelfed-icon-color.png",width:"60",alt:"Pixelfed logo"}})])},function(){var t=this._self._c;return t("div",{staticClass:"d-flex justify-content-center my-3"},[t("img",{attrs:{src:"/img/pixelfed-icon-color.png",width:"60",alt:"Pixelfed logo"}})])},function(){var t=this._self._c;return t("div",{staticClass:"d-flex justify-content-center my-3"},[t("img",{attrs:{src:"/img/pixelfed-icon-color.png",width:"60",alt:"Pixelfed logo"}})])},function(){var t=this,e=t._self._c;return e("div",[e("h1",{staticClass:"text-center"},[t._v("Invalid Invite Code")]),t._v(" "),e("hr"),t._v(" "),e("p",{staticClass:"text-muted mb-1"},[t._v("The invite code you were provided is not valid, this can happen when:")]),t._v(" "),e("ul",{staticClass:"text-muted"},[e("li",[t._v("Invite code has typos")]),t._v(" "),e("li",[t._v("Invite code was already used")]),t._v(" "),e("li",[t._v("Invite code has reached max uses")]),t._v(" "),e("li",[t._v("Invite code has expired")]),t._v(" "),e("li",[t._v("You have been rate limited")])]),t._v(" "),e("hr"),t._v(" "),e("a",{staticClass:"btn btn-primary btn-block rounded-pill font-weight-bold",attrs:{href:"/"}},[t._v("Go back home")])])}]},65751:(t,e,i)=>{Vue.component("admin-invite",i(68043).default)},57848:(t,e,i)=>{"use strict";i.r(e),i.d(e,{default:()=>n});var a=i(76798),s=i.n(a)()((function(t){return t[1]}));s.push([t.id,".admin-invite-component{font-family:var(--font-family-sans-serif)}.admin-invite-component-inner{align-items:center;display:flex;height:100vh;justify-content:center;width:100wv}.admin-invite-component-inner .card{border-radius:10px;color:#fff;min-height:530px;padding:1.25rem 2.5rem;width:100%}@media (min-width:768px){.admin-invite-component-inner .card{width:30%}}.admin-invite-component-inner .card label{color:var(--muted);font-weight:700;text-transform:uppercase}.admin-invite-component-inner .card .login-link{font-weight:600;margin-top:10px}.admin-invite-component-inner .card .register-terms{color:var(--muted);font-size:12px}.admin-invite-component-inner .card .form-control{color:#fff}.admin-invite-component-inner .card .admin-message{border:1px solid var(--dropdown-item-hover-color);border-radius:5px;color:var(--text-lighter);margin-top:20px;padding:1rem}",""]);const n=s},94331:(t,e,i)=>{"use strict";i.r(e),i.d(e,{default:()=>o});var a=i(85072),s=i.n(a),n=i(57848),r={insert:"head",singleton:!1};s()(n.default,r);const o=n.default.locals||{}},68043:(t,e,i)=>{"use strict";i.r(e),i.d(e,{default:()=>r});var a=i(93248),s=i(48016),n={};for(const t in s)"default"!==t&&(n[t]=()=>s[t]);i.d(e,n);i(92958);const r=(0,i(14486).default)(s.default,a.render,a.staticRenderFns,!1,null,null,null).exports},48016:(t,e,i)=>{"use strict";i.r(e),i.d(e,{default:()=>n});var a=i(84582),s={};for(const t in a)"default"!==t&&(s[t]=()=>a[t]);i.d(e,s);const n=a.default},93248:(t,e,i)=>{"use strict";i.r(e);var a=i(65835),s={};for(const t in a)"default"!==t&&(s[t]=()=>a[t]);i.d(e,s)},92958:(t,e,i)=>{"use strict";i.r(e);var a=i(94331),s={};for(const t in a)"default"!==t&&(s[t]=()=>a[t]);i.d(e,s)}},t=>{t.O(0,[3660],(()=>{return e=65751,t(t.s=e);var e}));t.O()}]); \ No newline at end of file diff --git a/public/js/app.js b/public/js/app.js index 86bae4e30..943809518 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -1,2 +1,2 @@ /*! For license information please see app.js.LICENSE.txt */ -(self.webpackChunkpixelfed=self.webpackChunkpixelfed||[]).push([[2773],{5924:(e,t,r)=>{r(19755);var o=r(19755);r(99751),window._=r(96486),window.Popper=r(28981).default,window.pixelfed=window.pixelfed||{},window.$=r(19755),r(43734),window.axios=r(9669),window.axios.defaults.headers.common["X-Requested-With"]="XMLHttpRequest",r(90717),window.blurhash=r(43985);var n=document.head.querySelector('meta[name="csrf-token"]');n?window.axios.defaults.headers.common["X-CSRF-TOKEN"]=n.content:console.error("CSRF token not found."),window.App=window.App||{},window.App.redirect=function(){document.querySelectorAll("a").forEach((function(e,t){var r=e.getAttribute("href");if(r&&r.length>5&&r.startsWith("https://")){var o=new URL(r);o.host!==window.location.host&&"/i/redirect"!==o.pathname&&e.setAttribute("href","/i/redirect?url="+encodeURIComponent(r))}}))},window.App.boot=function(){new Vue({el:"#content"})},window.addEventListener("load",(function(){"serviceWorker"in navigator&&navigator.serviceWorker.register("/sw.js")})),window.App.util={compose:{post:function(){var e=window.location.pathname;["/","/timeline/public"].includes(e)?o("#composeModal").modal("show"):window.location.href="/?a=co"},circle:function(){console.log("Unsupported method.")},collection:function(){console.log("Unsupported method.")},loop:function(){console.log("Unsupported method.")},story:function(){console.log("Unsupported method.")}},time:function(){return new Date},version:1,format:{count:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"en-GB",r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"compact";return e<1?0:new Intl.NumberFormat(t,{notation:r,compactDisplay:"short"}).format(e)},timeAgo:function(e){var t=Date.parse(e),r=Math.floor((new Date-t)/1e3),o=Math.floor(r/63072e3);return o>=1?o+"y":(o=Math.floor(r/604800))>=1?o+"w":(o=Math.floor(r/86400))>=1?o+"d":(o=Math.floor(r/3600))>=1?o+"h":(o=Math.floor(r/60))>=1?o+"m":Math.floor(r)+"s"},timeAhead:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],r=Date.parse(e)-Date.parse(new Date),o=Math.floor(r/1e3),n=Math.floor(o/63072e3);return n>=1?n+(t?"y":" years"):(n=Math.floor(o/604800))>=1?n+(t?"w":" weeks"):(n=Math.floor(o/86400))>=1?n+(t?"d":" days"):(n=Math.floor(o/3600))>=1?n+(t?"h":" hours"):(n=Math.floor(o/60))>=1?n+(t?"m":" minutes"):Math.floor(o)+(t?"s":" seconds")},rewriteLinks:function(e){var t=e.innerText;return e.href.startsWith(window.location.origin)?e.href:t=1==t.startsWith("#")?"/discover/tags/"+t.substr(1)+"?src=rph":1==t.startsWith("@")?"/"+e.innerText+"?src=rpp":"/i/redirect?url="+encodeURIComponent(t)}},filters:[["1984","filter-1977"],["Azen","filter-aden"],["Astairo","filter-amaro"],["Grassbee","filter-ashby"],["Bookrun","filter-brannan"],["Borough","filter-brooklyn"],["Farms","filter-charmes"],["Hairsadone","filter-clarendon"],["Cleana ","filter-crema"],["Catpatch","filter-dogpatch"],["Earlyworm","filter-earlybird"],["Plaid","filter-gingham"],["Kyo","filter-ginza"],["Yefe","filter-hefe"],["Goddess","filter-helena"],["Yards","filter-hudson"],["Quill","filter-inkwell"],["Rankine","filter-kelvin"],["Juno","filter-juno"],["Mark","filter-lark"],["Chill","filter-lofi"],["Van","filter-ludwig"],["Apache","filter-maven"],["May","filter-mayfair"],["Ceres","filter-moon"],["Knoxville","filter-nashville"],["Felicity","filter-perpetua"],["Sandblast","filter-poprocket"],["Daisy","filter-reyes"],["Elevate","filter-rise"],["Nevada","filter-sierra"],["Futura","filter-skyline"],["Sleepy","filter-slumber"],["Steward","filter-stinson"],["Savoy","filter-sutro"],["Blaze","filter-toaster"],["Apricot","filter-valencia"],["Gloming","filter-vesper"],["Walter","filter-walden"],["Poplar","filter-willow"],["Xenon","filter-xpro-ii"]],filterCss:{"filter-1977":"sepia(.5) hue-rotate(-30deg) saturate(1.4)","filter-aden":"sepia(.2) brightness(1.15) saturate(1.4)","filter-amaro":"sepia(.35) contrast(1.1) brightness(1.2) saturate(1.3)","filter-ashby":"sepia(.5) contrast(1.2) saturate(1.8)","filter-brannan":"sepia(.4) contrast(1.25) brightness(1.1) saturate(.9) hue-rotate(-2deg)","filter-brooklyn":"sepia(.25) contrast(1.25) brightness(1.25) hue-rotate(5deg)","filter-charmes":"sepia(.25) contrast(1.25) brightness(1.25) saturate(1.35) hue-rotate(-5deg)","filter-clarendon":"sepia(.15) contrast(1.25) brightness(1.25) hue-rotate(5deg)","filter-crema":"sepia(.5) contrast(1.25) brightness(1.15) saturate(.9) hue-rotate(-2deg)","filter-dogpatch":"sepia(.35) saturate(1.1) contrast(1.5)","filter-earlybird":"sepia(.25) contrast(1.25) brightness(1.15) saturate(.9) hue-rotate(-5deg)","filter-gingham":"contrast(1.1) brightness(1.1)","filter-ginza":"sepia(.25) contrast(1.15) brightness(1.2) saturate(1.35) hue-rotate(-5deg)","filter-hefe":"sepia(.4) contrast(1.5) brightness(1.2) saturate(1.4) hue-rotate(-10deg)","filter-helena":"sepia(.5) contrast(1.05) brightness(1.05) saturate(1.35)","filter-hudson":"sepia(.25) contrast(1.2) brightness(1.2) saturate(1.05) hue-rotate(-15deg)","filter-inkwell":"brightness(1.25) contrast(.85) grayscale(1)","filter-kelvin":"sepia(.15) contrast(1.5) brightness(1.1) hue-rotate(-10deg)","filter-juno":"sepia(.35) contrast(1.15) brightness(1.15) saturate(1.8)","filter-lark":"sepia(.25) contrast(1.2) brightness(1.3) saturate(1.25)","filter-lofi":"saturate(1.1) contrast(1.5)","filter-ludwig":"sepia(.25) contrast(1.05) brightness(1.05) saturate(2)","filter-maven":"sepia(.35) contrast(1.05) brightness(1.05) saturate(1.75)","filter-mayfair":"contrast(1.1) brightness(1.15) saturate(1.1)","filter-moon":"brightness(1.4) contrast(.95) saturate(0) sepia(.35)","filter-nashville":"sepia(.25) contrast(1.5) brightness(.9) hue-rotate(-15deg)","filter-perpetua":"contrast(1.1) brightness(1.25) saturate(1.1)","filter-poprocket":"sepia(.15) brightness(1.2)","filter-reyes":"sepia(.75) contrast(.75) brightness(1.25) saturate(1.4)","filter-rise":"sepia(.25) contrast(1.25) brightness(1.2) saturate(.9)","filter-sierra":"sepia(.25) contrast(1.5) brightness(.9) hue-rotate(-15deg)","filter-skyline":"sepia(.15) contrast(1.25) brightness(1.25) saturate(1.2)","filter-slumber":"sepia(.35) contrast(1.25) saturate(1.25)","filter-stinson":"sepia(.35) contrast(1.25) brightness(1.1) saturate(1.25)","filter-sutro":"sepia(.4) contrast(1.2) brightness(.9) saturate(1.4) hue-rotate(-10deg)","filter-toaster":"sepia(.25) contrast(1.5) brightness(.95) hue-rotate(-15deg)","filter-valencia":"sepia(.25) contrast(1.1) brightness(1.1)","filter-vesper":"sepia(.35) contrast(1.15) brightness(1.2) saturate(1.3)","filter-walden":"sepia(.35) contrast(.8) brightness(1.25) saturate(1.4)","filter-willow":"brightness(1.2) contrast(.85) saturate(.05) sepia(.2)","filter-xpro-ii":"sepia(.45) contrast(1.25) brightness(1.75) saturate(1.3) hue-rotate(-5deg)"},emoji:["😂","💯","❤️","🙌","👏","👌","😍","😯","😢","😅","😁","🙂","😎","😀","🤣","😃","😄","😆","😉","😊","😋","😘","😗","😙","😚","🤗","🤩","🤔","🤨","😐","😑","😶","🙄","😏","😣","😥","😮","🤐","😪","😫","😴","😌","😛","😜","😝","🤤","😒","😓","😔","😕","🙃","🤑","😲","🙁","😖","😞","😟","😤","😭","😦","😧","😨","😩","🤯","😬","😰","😱","😳","🤪","😵","😡","😠","🤬","😷","🤒","🤕","🤢","🤮","🤧","😇","🤠","🤡","🤥","🤫","🤭","🧐","🤓","😈","👿","👹","👺","💀","👻","👽","🤖","💩","😺","😸","😹","😻","😼","😽","🙀","😿","😾","🤲","👐","🤝","👍","👎","👊","✊","🤛","🤜","🤞","✌️","🤟","🤘","👈","👉","👆","👇","☝️","✋","🤚","🖐","🖖","👋","🤙","💪","🖕","✍️","🙏","💍","💄","💋","👄","👅","👂","👃","👣","👁","👀","🧠","🗣","👤","👥"],embed:{post:function(e){var t=e+"/embed?";return t+=!(arguments.length>1&&void 0!==arguments[1])||arguments[1]?"caption=true&":"caption=false&",t+=arguments.length>2&&void 0!==arguments[2]&&arguments[2]?"likes=true&":"likes=false&",' diff --git a/resources/assets/components/admin/partial/AdminModalPost.vue b/resources/assets/components/admin/partial/AdminModalPost.vue new file mode 100644 index 000000000..ac5ad0df6 --- /dev/null +++ b/resources/assets/components/admin/partial/AdminModalPost.vue @@ -0,0 +1,139 @@ + + + diff --git a/resources/assets/components/admin/partial/AdminReadMore.vue b/resources/assets/components/admin/partial/AdminReadMore.vue new file mode 100644 index 000000000..1a1b3d6ee --- /dev/null +++ b/resources/assets/components/admin/partial/AdminReadMore.vue @@ -0,0 +1,106 @@ + + + diff --git a/resources/assets/components/admin/partial/AdminRemoteReportModal.vue b/resources/assets/components/admin/partial/AdminRemoteReportModal.vue new file mode 100644 index 000000000..63beff06d --- /dev/null +++ b/resources/assets/components/admin/partial/AdminRemoteReportModal.vue @@ -0,0 +1,304 @@ + + + diff --git a/resources/assets/components/landing/sections/nav.vue b/resources/assets/components/landing/sections/nav.vue index 38fde6ef2..16dbfef1e 100644 --- a/resources/assets/components/landing/sections/nav.vue +++ b/resources/assets/components/landing/sections/nav.vue @@ -1,33 +1,46 @@ diff --git a/resources/assets/components/partials/profile/ProfileSidebar.vue b/resources/assets/components/partials/profile/ProfileSidebar.vue index baf1ca97f..7f263aec1 100644 --- a/resources/assets/components/partials/profile/ProfileSidebar.vue +++ b/resources/assets/components/partials/profile/ProfileSidebar.vue @@ -150,6 +150,19 @@
+
+
+
+
+ + Account has moved to: +
+

+ @{{truncate(profile.moved.acct)}} +

+
+
+