diff --git a/app/Actions/Fortify/CreateNewUser.php b/app/Actions/Fortify/CreateNewUser.php index 5521d8e..98ed273 100644 --- a/app/Actions/Fortify/CreateNewUser.php +++ b/app/Actions/Fortify/CreateNewUser.php @@ -24,6 +24,8 @@ public function create(array $input) { Validator::make($input, [ 'name' => ['required', 'string', 'max:255'], + 'address' => ['required', 'string'], + 'phone' => ['required', 'numbers', 'max:11'], 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], 'password' => $this->passwordRules(), 'terms' => Jetstream::hasTermsAndPrivacyPolicyFeature() ? ['accepted', 'required'] : '', @@ -33,9 +35,11 @@ public function create(array $input) return tap(User::create([ 'name' => $input['name'], 'email' => $input['email'], + 'phone' => $input['phone'], + 'address' => $input['address'], 'password' => Hash::make($input['password']), 'google_id' => null, - ])->assignRole('user'), function (User $user) { + ])->assignRole('User'), function (User $user) { $this->createTeam($user); }); }); diff --git a/app/Actions/Fortify/PasswordValidationRules.php b/app/Actions/Fortify/PasswordValidationRules.php index 78ed8cf..2185705 100644 --- a/app/Actions/Fortify/PasswordValidationRules.php +++ b/app/Actions/Fortify/PasswordValidationRules.php @@ -13,6 +13,7 @@ trait PasswordValidationRules */ protected function passwordRules() { + (new Password)->length(10); return ['required', 'string', new Password, 'confirmed']; } } diff --git a/app/Actions/Fortify/UpdateUserProfileInformation.php b/app/Actions/Fortify/UpdateUserProfileInformation.php index 0ead558..ac5233e 100644 --- a/app/Actions/Fortify/UpdateUserProfileInformation.php +++ b/app/Actions/Fortify/UpdateUserProfileInformation.php @@ -21,6 +21,7 @@ public function update($user, array $input) Validator::make($input, [ 'name' => ['required', 'string', 'max:255'], 'email' => ['required', 'email', 'max:255', Rule::unique('users')->ignore($user->id)], + 'address' => ['required', 'string'], 'photo' => ['nullable', 'mimes:jpg,jpeg,png', 'max:1024'], 'phone' => ['numeric','min:11', 'nullable'], ])->validateWithBag('updateProfileInformation'); @@ -36,6 +37,7 @@ public function update($user, array $input) $user->forceFill([ 'name' => $input['name'], 'email' => $input['email'], + 'address' => $input['address'], 'phone' => $input['phone'], ])->save(); } @@ -53,6 +55,7 @@ protected function updateVerifiedUser($user, array $input) $user->forceFill([ 'name' => $input['name'], 'email' => $input['email'], + 'address' => $input['address'], 'email_verified_at' => null, 'phone' => $input['phone'], ])->save(); diff --git a/app/Http/Controllers/AdminController.php b/app/Http/Controllers/AdminController.php index 4e210b8..fdca7ea 100644 --- a/app/Http/Controllers/AdminController.php +++ b/app/Http/Controllers/AdminController.php @@ -2,40 +2,42 @@ namespace App\Http\Controllers; -use App\Http\Livewire\AssignDepartments; -use App\Models\AssignDepartment; -use App\Models\AssignedDepartment; use App\Models\cellNumber; use App\Models\Departments; use App\Models\Reports; use App\Models\ReportType; use App\Models\User; use Illuminate\Support\Facades\DB as FacadesDB; -use PhpParser\Node\Expr\Assign; -use Spatie\Permission\Models\Role; -use Spatie\Permission\Models\Permission; - +use Barryvdh\DomPDF\Facade\Pdf as FacadePdf; +use Carbon\Carbon; +use Illuminate\Pagination\PaginationServiceProvider; class AdminController extends Controller { public function index() { - $reports = Reports::with('reports', 'locations')->latest()->get(); + + $reports = Reports::with('reports', 'locations')->paginate(15); + if($reports->isEmpty()) { $location = []; $incidents = []; - return view ('admin.adminDashboard')->with(['reports' => $reports, 'location' => $location, 'incidents' => $incidents]); - } + $incident = []; + $count = []; + $sum = []; + $departments = []; - foreach($reports as $report){ - $location[] = FacadesDB::table('locations')->where('id', $report->location_id)->latest()->get(); - } - - foreach($reports as $report){ - $incidents[] = FacadesDB::table('report_types')->where('id', $report->id)->latest()->get(); + return view ('admin.adminDashboard')->with(['reports' => $reports, 'location' => $location, 'incidents' => $incidents, 'incident' => $incident, 'count' => $count, 'sum' => $sum, 'departments' => $departments]); } - - return view ('admin.adminDashboard')->with(['reports' => $reports, 'location' => $location, 'incidents' => $incidents]); + + $location = []; + $incidents = []; + $incident = []; + $count = []; + $sum = []; + $departments = []; + + return view ('admin.adminDashboard')->with(['reports' => $reports, 'location' => $location, 'incidents' => $incidents, 'incident' => $incident, 'count' => $count, 'sum' => $sum, 'departments' => $departments]); } public function admin() @@ -69,7 +71,7 @@ public function report() public function destroy($id) { cellNumber::destroy($id); - return redirect('admin/admin')->with('flash_message', 'Post deleted successfully!'); + return view('admin.admin')->with('flash_message', 'Post deleted successfully!'); } public function edit($id) @@ -106,7 +108,7 @@ public function view($id) public function destroyReport($id) { Reports::destroy($id); - return redirect('admin/dashboard')->with('flash_message', 'Post Deleted successfully!'); + return view('admin.adminDashboard')->with('flash_message', 'Post Deleted successfully!'); } public function viewReport($id) @@ -128,7 +130,7 @@ public function viewReport($id) } public function users() { - $users = User::all(); + $users = User::latest()->paginate(1); return view('admin.UsersRoles')->with('users', $users); } @@ -153,22 +155,20 @@ public function viewUser($id) $incidents[] = FacadesDB::table('report_types')->where('id', $report->id)->latest()->get(); } - return view('admin.viewUser')->with(['user' => $user, 'count' => $count, 'reports' => $reports, 'location' => $location, 'incidents' => $incidents]); - + return view('admin.viewUser')->with(['user' => $user, 'count' => $count, 'reports' => $reports, 'location' => $location, 'incidents' => $incidents]); } // Delete User - Route::middleware(rele:super-admin)->... public function deleteUser($id) { if(Auth()->user()->id == $id) { - return redirect('admin\UsersRoles')->with('flash_message', 'This action is invalid'); + return redirect('admin/all/users')->with('flash_message', 'This action is invalid'); } else { - $user = User::where('id', $id)->get(); - $user->destroy(); + User::where('id', $id)->delete(); } - return redirect('admin\UsersRoles')->with('flash_message', 'User Deleted successfully!'); + return redirect('admin/all/users')->with('flash_message', 'User Deleted successfully!'); } @@ -188,10 +188,9 @@ public function assignRoleSuperAdmin($id) { } foreach($users as $user){ - $user->syncRoles('super-admin'); + $user->syncRoles('Admin'); } return redirect('admin/all/users')->with('flash_message', 'User Role Updated successfully!'); - } // Change User Role To "admin" @@ -201,7 +200,7 @@ public function assignRoleAdmin($id) { return redirect('admin/all/users')->with('flash_message', 'This action is invalid'); } foreach($users as $user){ - $user->syncRoles('admin'); + $user->syncRoles('Department'); } return redirect('admin/all/users')->with('flash_message', 'User Role Updated successfully!'); } @@ -214,13 +213,11 @@ public function assingRoleUser($id) { } foreach($users as $user){ - $user->syncRoles('user'); + $user->syncRoles('User'); } return redirect('admin/all/users')->with('flash_message', 'User Role Updated successfully!'); } - - /* -------------------------------------------------- Update Report Status Controller @@ -276,4 +273,39 @@ public function updateStatusRejected($id){ session()->flash('flash_message','An error occurred while processing your request'); return $controller->viewReport($id); } + + public function exportAsPDF() + { + $departments = Departments::all(); + + foreach ($departments as $department) { + $name[] = $department->department; + } + + foreach($departments as $department){ + $assigns[] = FacadesDB::table('assigns')->where('department_id', $department->id)->get(); + } + $now = Carbon::now(); + $startOfWeek = $now->startOfWeek()->format('Y-m-d H:i'); + $endOfWeek = $now->endOfWeek()->format('Y-m-d H:i'); + + $reports = Reports::whereBetween('created_at', [$startOfWeek, $endOfWeek])->get(); + + foreach($reports as $report){ + $i[] = $report->report_id; + } + + $i = 0; + foreach($assigns as $assign){ + + $incidents[] = $reports->where('report_id', $assign[$i]->incidents_id)->count(); + $i+1; + + } + + $count = $incidents; + + $pdf = FacadePdf::loadView('pdf.reports', ['departments' => $name, 'count' => $count]); + return $pdf->download('reports.pdf'); + } } \ No newline at end of file diff --git a/app/Http/Controllers/Auth/FacebookController.php b/app/Http/Controllers/Auth/FacebookController.php index 5066f43..8b38ee5 100644 --- a/app/Http/Controllers/Auth/FacebookController.php +++ b/app/Http/Controllers/Auth/FacebookController.php @@ -49,7 +49,7 @@ public function handleFacebookCallback() // this function get user login of goo // 'password' => encrypt('123456dummy') //'password' => Hash::make($user['password']), - ])->assignRole('user'); + ])->assignRole('User'); Auth::login($newUser); diff --git a/app/Http/Controllers/Auth/GoogleController.php b/app/Http/Controllers/Auth/GoogleController.php index 0f445a8..9ab807a 100644 --- a/app/Http/Controllers/Auth/GoogleController.php +++ b/app/Http/Controllers/Auth/GoogleController.php @@ -36,14 +36,13 @@ public function handleGoogleCallback() // this function get user login of googl Auth::login($finduser); return redirect('portal/portal'); - }else{ $newUser = User::create([ 'name' => $user->name, 'email' => $user->email, 'google_id'=> $user->id, 'profile_photo_url' => $user->getAvatar(), - ])->assignRole('user'); + ])->assignRole('User'); Auth::login($newUser); diff --git a/app/Http/Controllers/Auth/PhoneController.php b/app/Http/Controllers/Auth/PhoneController.php index f603146..b6fec29 100644 --- a/app/Http/Controllers/Auth/PhoneController.php +++ b/app/Http/Controllers/Auth/PhoneController.php @@ -12,10 +12,15 @@ class PhoneController extends Controller { public function viewVerifyPhone() { $user = Auth()->user(); + + if($user->phone == null){ + return view('profile.show')->with('message', 'Please save your Phone number before clicking get verifed'); + } if ($user->verification_code == null){ $verify = new PhoneController; - $verify; + $verify->sendVerification(); + return view ('auth.verify-phone'); } if ($user->phone_verified_at !== null){ diff --git a/app/Http/Controllers/portalController.php b/app/Http/Controllers/portalController.php index f1f5666..b25b6d0 100644 --- a/app/Http/Controllers/portalController.php +++ b/app/Http/Controllers/portalController.php @@ -62,6 +62,7 @@ public function reports() { if($reports->isEmpty()){ $reports = []; $incidents = []; + $count = []; } foreach($reports as $report){ @@ -71,7 +72,7 @@ public function reports() { $uniques = array_unique($incidents); // $votes = Vote::where('vote_type',1)->where('something',$something)->count(); // dd($uniques, $reports); - // $count = []; + $i = 0; foreach($uniques as $unique){ $count[] = $reports->where('report_id', $unique[$i]->id)->count(); @@ -106,7 +107,7 @@ public function contact($report_id) public function message($words) { $incidentId = (int)$words[0]; - $locationId = (int)$words[2]; + $locationId = (int)$words[3]; $incident = FacadesDB::table('report_types')->where('id', $incidentId)->get(); $location = FacadesDB::table('locations')->where('id', $locationId)->get(); @@ -114,9 +115,10 @@ public function message($words) $words = [ "Incident Type: ", $incident[0]->report_name, - "\nDescription: ", $words[1], + "\nNumber of Victims: ", $words[1], + "\nNumber of Suspects: ", $words[2], "\nLocation: ", $location[0]->location_name, - "\n\nSpecific Location: ", $words[3], + "\n\nSpecific Location: ", $words[4], "\nDate: ", $time ]; diff --git a/app/Http/Livewire/AdminLatestReports.php b/app/Http/Livewire/AdminLatestReports.php index 9506479..a55bb38 100644 --- a/app/Http/Livewire/AdminLatestReports.php +++ b/app/Http/Livewire/AdminLatestReports.php @@ -2,14 +2,38 @@ namespace App\Http\Livewire; +use App\Models\Reports; +use Carbon\Carbon; use Livewire\Component; class AdminLatestReports extends Component { public $reports; - - public function mount($reports) - { + + public function mount($reports){ + + /* + $monday = []; + $tuesday = []; + $wednesday = []; + $thursday = []; + $friday = []; + $saturday = []; + $sunday = []; + */ + + $monday = Reports::whereDate('created_at', Carbon::now()->startOfWeek()->next(Carbon::MONDAY))->count(); // Monday + $tuesday = Reports::whereDate('created_at', Carbon::now()->startOfWeek()->next(Carbon::TUESDAY))->count(); // Tuesday + $wednesday = Reports::whereDate('created_at', Carbon::now()->startOfWeek()->next(Carbon::WEDNESDAY))->count(); // Wednesday + $thursday = Reports::whereDate('created_at', Carbon::now()->startOfWeek()->next(Carbon::THURSDAY))->count(); // Thursday + $friday = Reports::whereDate('created_at', Carbon::now()->startOfWeek()->next(Carbon::FRIDAY))->count(); // Friday + $saturday = Reports::whereDate('created_at', Carbon::now()->startOfWeek()->next(Carbon::SATURDAY))->count(); // Saturday + $sunday = Reports::whereDate('created_at', Carbon::now()->startOfWeek()->next(Carbon::SUNDAY))->count(); // Sunday + + $reports = ['monday' => $monday, 'tuesday' => $tuesday, 'wednesday' => $wednesday, 'thursday' => $thursday, 'friday' => $friday, 'saturday' => $saturday, 'sunday' => $sunday]; + + // dd($reports); + $this->reports = $reports; } diff --git a/app/Http/Livewire/AdminMainTable.php b/app/Http/Livewire/AdminMainTable.php index edd4196..94f0384 100644 --- a/app/Http/Livewire/AdminMainTable.php +++ b/app/Http/Livewire/AdminMainTable.php @@ -6,24 +6,66 @@ use App\Models\Reports; use App\Models\User; use Livewire\Component; +use Illuminate\Support\Facades\DB as FacadesDB; +use Livewire\WithPagination; class AdminMainTable extends Component { + use WithPagination; - public $reports; - public $location; + /* public $location; public $incidents; - public function mount($reports, $location, $incidents) + public function mount($location, $incidents) { - $this->reports = $reports; + $this->location = $location; $this->incidents = $incidents; + } */ + + + public $query; + + public function search() + { + $reports = Reports::where('id', 'like', "%{$this->query}%") + ->orWhere('specificLocation', 'like', "%{$this->query}%") + ->orWhere('victims', 'like', "%{$this->query}%") + ->orWhere('suspects', 'like', "%{$this->query}%") + ->orWhere('status', 'like', "%{$this->query}%") + ->orWhere('created_at', 'like', "%{$this->query}%") + ->latest() + ->paginate(5);; + + foreach($reports as $report){ + $location[] = FacadesDB::table('locations')->where('id', $report->location_id)->latest()->get(); + } + + foreach($reports as $report){ + $incidents[] = FacadesDB::table('report_types')->where('id', $report->report_id)->latest()->get(); + } + + return view('livewire.admin.admin-main-table', ['reports' => $reports, 'location' => $location, 'incidents' => $incidents]); } - + + + // search bar kulang public function render() { - return view('livewire.admin.admin-main-table'); + if($this->query == null){ + $reports = Reports::with('reports', 'locations')->latest()->paginate(10); + foreach($reports as $report){ + $location[] = FacadesDB::table('locations')->where('id', $report->location_id)->latest()->get(); + } + + foreach($reports as $report){ + $incidents[] = FacadesDB::table('report_types')->where('id', $report->report_id)->latest()->get(); + } + return view('livewire.admin.admin-main-table', ['reports' => $reports, 'location' => $location, 'incidents' => $incidents]); + } + + $query = new AdminMainTable(); + return $query->search(); } } diff --git a/app/Http/Livewire/AdminTypesOfReportByPercent.php b/app/Http/Livewire/AdminTypesOfReportByPercent.php index 8bd3504..f7c6135 100644 --- a/app/Http/Livewire/AdminTypesOfReportByPercent.php +++ b/app/Http/Livewire/AdminTypesOfReportByPercent.php @@ -2,21 +2,44 @@ namespace App\Http\Livewire; +use App\Models\Reports; +use Illuminate\Support\Facades\DB as FacadesDB; use Livewire\Component; class AdminTypesOfReportByPercent extends Component { + public $incident; + public $count; + public $sum; - public $reports; - public $incidents; - - public function mount($reports, $incidents) + public function mount($incident, $count, $sum) { - $this->reports = $reports; - $this->incidents = $incidents; - } - + $reports = Reports::with('reports')->get(); + + if($reports->isEmpty()){ + $reports = []; + $incident = []; + $count = []; + } + + foreach($reports as $report){ + $incident[] = FacadesDB::table('report_types')->where('id', $report->report_id)->get(); + } + $uniques = array_unique($incident); // $votes = Vote::where('vote_type',1)->where('something',$something)->count(); + + $i = 0; + foreach($uniques as $unique){ + $count[] = $reports->where('report_id', $unique[$i]->id)->count(); + $i + 1; + } + + $sum = array_sum($count); + + $this->incident = $incident; + $this->count = $count; + $this->sum = $sum; + } public function render() { return view('livewire.admin.admin-types-of-report-by-percent'); diff --git a/app/Http/Livewire/DepartmentChart.php b/app/Http/Livewire/DepartmentChart.php new file mode 100644 index 0000000..0212814 --- /dev/null +++ b/app/Http/Livewire/DepartmentChart.php @@ -0,0 +1,56 @@ +department; + } + + foreach($departments as $department){ + $assigns[] = FacadesDB::table('assigns')->where('department_id', $department->id)->get(); + } + $now = Carbon::now(); + $startOfWeek = $now->startOfWeek()->format('Y-m-d H:i'); + $endOfWeek = $now->endOfWeek()->format('Y-m-d H:i'); + + $reports = Reports::whereBetween('created_at', [$startOfWeek, $endOfWeek])->get(); + + foreach($reports as $report){ + $i[] = $report->report_id; + } + + $i = 0; + foreach($assigns as $assign){ + + $incidents[] = $reports->where('report_id', $assign[$i]->incidents_id)->count(); + $i+1; + + } + + $count = $incidents; + // dd($incidents); + + $this->departments = $name; + $this->count = $count; + } + + public function render() + { + return view('livewire.admin.department-chart'); + } +} diff --git a/app/Http/Livewire/Portal/SubmitReport.php b/app/Http/Livewire/Portal/SubmitReport.php index 640a2b3..b1da378 100644 --- a/app/Http/Livewire/Portal/SubmitReport.php +++ b/app/Http/Livewire/Portal/SubmitReport.php @@ -29,8 +29,15 @@ class SubmitReport extends Component * * @var string */ - public $description; - + public $suspects; + + /** + * Report description + * + * @var string + */ + public $victims; + /** * Report location * @@ -61,7 +68,8 @@ public function rules() { return [ 'report_id' => 'required', - 'description' => 'sometimes|string', + 'victims' => 'string', + 'suspects' => 'string', 'location_id' => 'required', 'specificLocation' => 'required|string', 'files' => 'required|mimes:jpeg,png', @@ -113,7 +121,7 @@ function join_nums($array) { // function for making array into string // text message $controller = new portalController; - $words = [$submitReport['report_id'], $submitReport['description'] , $submitReport['location_id'], $submitReport['specificLocation']]; + $words = [$submitReport['report_id'], $submitReport['victims'], $submitReport['suspects'], $submitReport['location_id'], $submitReport['specificLocation']]; $message = $controller->message($words); diff --git a/app/Http/Livewire/RemoveAssignIncident.php b/app/Http/Livewire/RemoveAssignIncident.php new file mode 100644 index 0000000..a7dc48f --- /dev/null +++ b/app/Http/Livewire/RemoveAssignIncident.php @@ -0,0 +1,13 @@ +get(); + + if($reports->isEmpty()){ + $reports = []; + $incident = []; + $count = []; + } + /* foreach(){ + $location[] = FacadesDB::table(''); + } + */ + + foreach($reports as $report){ + $incident[] = FacadesDB::table('report_types')->where('id', $report->report_id)->get(); + } + + $uniques = array_unique($incident); // $votes = Vote::where('vote_type',1)->where('something',$something)->count(); + + $i = 0; + foreach($uniques as $unique){ + $count[] = $reports->where('report_id', $unique[$i]->id)->count(); + $i + 1; + } + + $sum = array_sum($count); + + $this->incident = $incident; + $this->count = $count; + $this->sum = $sum; + } + + public function render() + { + return view('livewire.admin.reports-in-every-location'); + } +} diff --git a/app/Http/Livewire/UsersAddRole.php b/app/Http/Livewire/UsersAddRole.php index 8c8b825..85e734e 100644 --- a/app/Http/Livewire/UsersAddRole.php +++ b/app/Http/Livewire/UsersAddRole.php @@ -4,25 +4,33 @@ use App\Models\User; use Livewire\Component; +use Livewire\WithPagination; class UsersAddRole extends Component { - - public $users; - + use WithPagination; public $query; public function search() { - $this->users = User::where('name', 'like', "%{$this->query}%") + $users = User::where('name', 'like', "%{$this->query}%") ->orWhere('email', 'like', "%{$this->query}%") ->orWhere('id', 'like', "%{$this->query}%") - ->get(); + ->latest() + ->paginate(5); + + return view('livewire.admin.users-add-role', ['users' => $users]); } public function render() { - return view('livewire.admin.users-add-role'); + if($this->query == null){ + $users = User::latest()->paginate(5); + return view('livewire.admin.users-add-role', ['users' => $users]); + } + + $query = new UsersAddRole(); + return $query->search(); } } diff --git a/app/Models/Reports.php b/app/Models/Reports.php index c492ab8..26b81d8 100644 --- a/app/Models/Reports.php +++ b/app/Models/Reports.php @@ -51,7 +51,8 @@ public function getStatusColorAttribute(){ 'report_id', 'location_id', 'specificLocation', - 'description', + 'victims', + 'suspects', 'status', 'files', ]; diff --git a/composer.json b/composer.json index 4b0302a..45c60bb 100644 --- a/composer.json +++ b/composer.json @@ -7,6 +7,7 @@ "require": { "php": "^8.0.2", "barryvdh/laravel-debugbar": "^3.7", + "barryvdh/laravel-dompdf": "^2.0", "goldspecdigital/laravel-eloquent-uuid": "9.0", "guzzlehttp/guzzle": "^7.2", "laravel/framework": "^9.19", diff --git a/composer.lock b/composer.lock index 9934cf5..b93312c 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "27c2c4e1ddefb35d219fdfb13fdc66a3", + "content-hash": "0046445c273e7f03a2ed8663f4e41d82", "packages": [ { "name": "bacon/bacon-qr-code", @@ -144,6 +144,83 @@ ], "time": "2022-07-11T09:26:42+00:00" }, + { + "name": "barryvdh/laravel-dompdf", + "version": "v2.0.0", + "source": { + "type": "git", + "url": "https://github.com/barryvdh/laravel-dompdf.git", + "reference": "1d47648c6cef37f715ecb8bcc5f5a656ad372e27" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/barryvdh/laravel-dompdf/zipball/1d47648c6cef37f715ecb8bcc5f5a656ad372e27", + "reference": "1d47648c6cef37f715ecb8bcc5f5a656ad372e27", + "shasum": "" + }, + "require": { + "dompdf/dompdf": "^2", + "illuminate/support": "^6|^7|^8|^9", + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "nunomaduro/larastan": "^1|^2", + "orchestra/testbench": "^4|^5|^6|^7", + "phpro/grumphp": "^1", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + }, + "laravel": { + "providers": [ + "Barryvdh\\DomPDF\\ServiceProvider" + ], + "aliases": { + "Pdf": "Barryvdh\\DomPDF\\Facade\\Pdf", + "PDF": "Barryvdh\\DomPDF\\Facade\\Pdf" + } + } + }, + "autoload": { + "psr-4": { + "Barryvdh\\DomPDF\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Barry vd. Heuvel", + "email": "barryvdh@gmail.com" + } + ], + "description": "A DOMPDF Wrapper for Laravel", + "keywords": [ + "dompdf", + "laravel", + "pdf" + ], + "support": { + "issues": "https://github.com/barryvdh/laravel-dompdf/issues", + "source": "https://github.com/barryvdh/laravel-dompdf/tree/v2.0.0" + }, + "funding": [ + { + "url": "https://fruitcake.nl", + "type": "custom" + }, + { + "url": "https://github.com/barryvdh", + "type": "github" + } + ], + "time": "2022-07-06T11:12:10+00:00" + }, { "name": "brick/math", "version": "0.10.2", @@ -489,6 +566,68 @@ ], "time": "2022-02-28T11:07:21+00:00" }, + { + "name": "dompdf/dompdf", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/dompdf/dompdf.git", + "reference": "c5310df0e22c758c85ea5288175fc6cd777bc085" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dompdf/dompdf/zipball/c5310df0e22c758c85ea5288175fc6cd777bc085", + "reference": "c5310df0e22c758c85ea5288175fc6cd777bc085", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-mbstring": "*", + "masterminds/html5": "^2.0", + "phenx/php-font-lib": ">=0.5.4 <1.0.0", + "phenx/php-svg-lib": ">=0.3.3 <1.0.0", + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "ext-json": "*", + "ext-zip": "*", + "mockery/mockery": "^1.3", + "phpunit/phpunit": "^7.5 || ^8 || ^9", + "squizlabs/php_codesniffer": "^3.5" + }, + "suggest": { + "ext-gd": "Needed to process images", + "ext-gmagick": "Improves image processing performance", + "ext-imagick": "Improves image processing performance", + "ext-zlib": "Needed for pdf stream compression" + }, + "type": "library", + "autoload": { + "psr-4": { + "Dompdf\\": "src/" + }, + "classmap": [ + "lib/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-2.1" + ], + "authors": [ + { + "name": "The Dompdf Community", + "homepage": "https://github.com/dompdf/dompdf/blob/master/AUTHORS.md" + } + ], + "description": "DOMPDF is a CSS 2.1 compliant HTML to PDF converter", + "homepage": "https://github.com/dompdf/dompdf", + "support": { + "issues": "https://github.com/dompdf/dompdf/issues", + "source": "https://github.com/dompdf/dompdf/tree/v2.0.1" + }, + "time": "2022-09-22T13:43:41+00:00" + }, { "name": "dragonmantank/cron-expression", "version": "v3.3.2", @@ -2342,6 +2481,75 @@ ], "time": "2022-08-08T13:52:53+00:00" }, + { + "name": "masterminds/html5", + "version": "2.7.6", + "source": { + "type": "git", + "url": "https://github.com/Masterminds/html5-php.git", + "reference": "897eb517a343a2281f11bc5556d6548db7d93947" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/897eb517a343a2281f11bc5556d6548db7d93947", + "reference": "897eb517a343a2281f11bc5556d6548db7d93947", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-dom": "*", + "ext-libxml": "*", + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Masterminds\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matt Butcher", + "email": "technosophos@gmail.com" + }, + { + "name": "Matt Farina", + "email": "matt@mattfarina.com" + }, + { + "name": "Asmir Mustafic", + "email": "goetas@gmail.com" + } + ], + "description": "An HTML5 parser and serializer.", + "homepage": "http://masterminds.github.io/html5-php", + "keywords": [ + "HTML5", + "dom", + "html", + "parser", + "querypath", + "serializer", + "xml" + ], + "support": { + "issues": "https://github.com/Masterminds/html5-php/issues", + "source": "https://github.com/Masterminds/html5-php/tree/2.7.6" + }, + "time": "2022-08-18T16:18:26+00:00" + }, { "name": "maximebf/debugbar", "version": "v1.18.1", @@ -3024,6 +3232,96 @@ }, "time": "2022-06-14T06:56:20+00:00" }, + { + "name": "phenx/php-font-lib", + "version": "0.5.4", + "source": { + "type": "git", + "url": "https://github.com/dompdf/php-font-lib.git", + "reference": "dd448ad1ce34c63d09baccd05415e361300c35b4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dompdf/php-font-lib/zipball/dd448ad1ce34c63d09baccd05415e361300c35b4", + "reference": "dd448ad1ce34c63d09baccd05415e361300c35b4", + "shasum": "" + }, + "require": { + "ext-mbstring": "*" + }, + "require-dev": { + "symfony/phpunit-bridge": "^3 || ^4 || ^5" + }, + "type": "library", + "autoload": { + "psr-4": { + "FontLib\\": "src/FontLib" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0" + ], + "authors": [ + { + "name": "Fabien Ménager", + "email": "fabien.menager@gmail.com" + } + ], + "description": "A library to read, parse, export and make subsets of different types of font files.", + "homepage": "https://github.com/PhenX/php-font-lib", + "support": { + "issues": "https://github.com/dompdf/php-font-lib/issues", + "source": "https://github.com/dompdf/php-font-lib/tree/0.5.4" + }, + "time": "2021-12-17T19:44:54+00:00" + }, + { + "name": "phenx/php-svg-lib", + "version": "0.5.0", + "source": { + "type": "git", + "url": "https://github.com/dompdf/php-svg-lib.git", + "reference": "76876c6cf3080bcb6f249d7d59705108166a6685" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dompdf/php-svg-lib/zipball/76876c6cf3080bcb6f249d7d59705108166a6685", + "reference": "76876c6cf3080bcb6f249d7d59705108166a6685", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": "^7.1 || ^8.0", + "sabberworm/php-css-parser": "^8.4" + }, + "require-dev": { + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Svg\\": "src/Svg" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0" + ], + "authors": [ + { + "name": "Fabien Ménager", + "email": "fabien.menager@gmail.com" + } + ], + "description": "A library to read, parse and export to PDF SVG files.", + "homepage": "https://github.com/PhenX/php-svg-lib", + "support": { + "issues": "https://github.com/dompdf/php-svg-lib/issues", + "source": "https://github.com/dompdf/php-svg-lib/tree/0.5.0" + }, + "time": "2022-09-06T12:16:56+00:00" + }, { "name": "phpoption/phpoption", "version": "1.9.0", @@ -3806,6 +4104,59 @@ ], "time": "2022-11-05T23:03:38+00:00" }, + { + "name": "sabberworm/php-css-parser", + "version": "8.4.0", + "source": { + "type": "git", + "url": "https://github.com/sabberworm/PHP-CSS-Parser.git", + "reference": "e41d2140031d533348b2192a83f02d8dd8a71d30" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/e41d2140031d533348b2192a83f02d8dd8a71d30", + "reference": "e41d2140031d533348b2192a83f02d8dd8a71d30", + "shasum": "" + }, + "require": { + "ext-iconv": "*", + "php": ">=5.6.20" + }, + "require-dev": { + "codacy/coverage": "^1.4", + "phpunit/phpunit": "^4.8.36" + }, + "suggest": { + "ext-mbstring": "for parsing UTF-8 CSS" + }, + "type": "library", + "autoload": { + "psr-4": { + "Sabberworm\\CSS\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Raphael Schweikert" + } + ], + "description": "Parser for CSS Files written in PHP", + "homepage": "https://www.sabberworm.com/blog/2010/6/10/php-css-parser", + "keywords": [ + "css", + "parser", + "stylesheet" + ], + "support": { + "issues": "https://github.com/sabberworm/PHP-CSS-Parser/issues", + "source": "https://github.com/sabberworm/PHP-CSS-Parser/tree/8.4.0" + }, + "time": "2021-12-11T13:40:54+00:00" + }, { "name": "spatie/laravel-permission", "version": "5.7.0", diff --git a/config/app.php b/config/app.php index 7816bf5..b7fb8d4 100644 --- a/config/app.php +++ b/config/app.php @@ -186,6 +186,7 @@ * Package Service Providers... */ Spatie\Permission\PermissionServiceProvider::class, + Barryvdh\DomPDF\ServiceProvider::class, /* * Application Service Providers... */ @@ -216,6 +217,7 @@ // 'ExampleClass' => App\Example\ExampleClass::class, 'Socialite' => Laravel\Socialite\Facades\Socialite::class, + 'PDF' => Barryvdh\DomPDF\Facade::class, ])->toArray(), ]; diff --git a/config/dompdf.php b/config/dompdf.php new file mode 100644 index 0000000..8ad2022 --- /dev/null +++ b/config/dompdf.php @@ -0,0 +1,284 @@ + false, // Throw an Exception on warnings from dompdf + + 'public_path' => null, // Override the public path if needed + + /* + * Dejavu Sans font is missing glyphs for converted entities, turn it off if you need to show € and £. + */ + 'convert_entities' => true, + + 'options' => array( + /** + * The location of the DOMPDF font directory + * + * The location of the directory where DOMPDF will store fonts and font metrics + * Note: This directory must exist and be writable by the webserver process. + * *Please note the trailing slash.* + * + * Notes regarding fonts: + * Additional .afm font metrics can be added by executing load_font.php from command line. + * + * Only the original "Base 14 fonts" are present on all pdf viewers. Additional fonts must + * be embedded in the pdf file or the PDF may not display correctly. This can significantly + * increase file size unless font subsetting is enabled. Before embedding a font please + * review your rights under the font license. + * + * Any font specification in the source HTML is translated to the closest font available + * in the font directory. + * + * The pdf standard "Base 14 fonts" are: + * Courier, Courier-Bold, Courier-BoldOblique, Courier-Oblique, + * Helvetica, Helvetica-Bold, Helvetica-BoldOblique, Helvetica-Oblique, + * Times-Roman, Times-Bold, Times-BoldItalic, Times-Italic, + * Symbol, ZapfDingbats. + */ + "font_dir" => storage_path('fonts'), // advised by dompdf (https://github.com/dompdf/dompdf/pull/782) + + /** + * The location of the DOMPDF font cache directory + * + * This directory contains the cached font metrics for the fonts used by DOMPDF. + * This directory can be the same as DOMPDF_FONT_DIR + * + * Note: This directory must exist and be writable by the webserver process. + */ + "font_cache" => storage_path('fonts'), + + /** + * The location of a temporary directory. + * + * The directory specified must be writeable by the webserver process. + * The temporary directory is required to download remote images and when + * using the PFDLib back end. + */ + "temp_dir" => sys_get_temp_dir(), + + /** + * ==== IMPORTANT ==== + * + * dompdf's "chroot": Prevents dompdf from accessing system files or other + * files on the webserver. All local files opened by dompdf must be in a + * subdirectory of this directory. DO NOT set it to '/' since this could + * allow an attacker to use dompdf to read any files on the server. This + * should be an absolute path. + * This is only checked on command line call by dompdf.php, but not by + * direct class use like: + * $dompdf = new DOMPDF(); $dompdf->load_html($htmldata); $dompdf->render(); $pdfdata = $dompdf->output(); + */ + "chroot" => realpath(base_path()), + + /** + * Protocol whitelist + * + * Protocols and PHP wrappers allowed in URIs, and the validation rules + * that determine if a resouce may be loaded. Full support is not guaranteed + * for the protocols/wrappers specified + * by this array. + * + * @var array + */ + 'allowed_protocols' => [ + "file://" => ["rules" => []], + "http://" => ["rules" => []], + "https://" => ["rules" => []] + ], + + /** + * @var string + */ + 'log_output_file' => null, + + /** + * Whether to enable font subsetting or not. + */ + "enable_font_subsetting" => false, + + /** + * The PDF rendering backend to use + * + * Valid settings are 'PDFLib', 'CPDF' (the bundled R&OS PDF class), 'GD' and + * 'auto'. 'auto' will look for PDFLib and use it if found, or if not it will + * fall back on CPDF. 'GD' renders PDFs to graphic files. {@link + * Canvas_Factory} ultimately determines which rendering class to instantiate + * based on this setting. + * + * Both PDFLib & CPDF rendering backends provide sufficient rendering + * capabilities for dompdf, however additional features (e.g. object, + * image and font support, etc.) differ between backends. Please see + * {@link PDFLib_Adapter} for more information on the PDFLib backend + * and {@link CPDF_Adapter} and lib/class.pdf.php for more information + * on CPDF. Also see the documentation for each backend at the links + * below. + * + * The GD rendering backend is a little different than PDFLib and + * CPDF. Several features of CPDF and PDFLib are not supported or do + * not make any sense when creating image files. For example, + * multiple pages are not supported, nor are PDF 'objects'. Have a + * look at {@link GD_Adapter} for more information. GD support is + * experimental, so use it at your own risk. + * + * @link http://www.pdflib.com + * @link http://www.ros.co.nz/pdf + * @link http://www.php.net/image + */ + "pdf_backend" => "CPDF", + + /** + * PDFlib license key + * + * If you are using a licensed, commercial version of PDFlib, specify + * your license key here. If you are using PDFlib-Lite or are evaluating + * the commercial version of PDFlib, comment out this setting. + * + * @link http://www.pdflib.com + * + * If pdflib present in web server and auto or selected explicitely above, + * a real license code must exist! + */ + //"DOMPDF_PDFLIB_LICENSE" => "your license key here", + + /** + * html target media view which should be rendered into pdf. + * List of types and parsing rules for future extensions: + * http://www.w3.org/TR/REC-html40/types.html + * screen, tty, tv, projection, handheld, print, braille, aural, all + * Note: aural is deprecated in CSS 2.1 because it is replaced by speech in CSS 3. + * Note, even though the generated pdf file is intended for print output, + * the desired content might be different (e.g. screen or projection view of html file). + * Therefore allow specification of content here. + */ + "default_media_type" => "screen", + + /** + * The default paper size. + * + * North America standard is "letter"; other countries generally "a4" + * + * @see CPDF_Adapter::PAPER_SIZES for valid sizes ('letter', 'legal', 'A4', etc.) + */ + "default_paper_size" => "a4", + + /** + * The default paper orientation. + * + * The orientation of the page (portrait or landscape). + * + * @var string + */ + 'default_paper_orientation' => "portrait", + + /** + * The default font family + * + * Used if no suitable fonts can be found. This must exist in the font folder. + * @var string + */ + "default_font" => "serif", + + /** + * Image DPI setting + * + * This setting determines the default DPI setting for images and fonts. The + * DPI may be overridden for inline images by explictly setting the + * image's width & height style attributes (i.e. if the image's native + * width is 600 pixels and you specify the image's width as 72 points, + * the image will have a DPI of 600 in the rendered PDF. The DPI of + * background images can not be overridden and is controlled entirely + * via this parameter. + * + * For the purposes of DOMPDF, pixels per inch (PPI) = dots per inch (DPI). + * If a size in html is given as px (or without unit as image size), + * this tells the corresponding size in pt. + * This adjusts the relative sizes to be similar to the rendering of the + * html page in a reference browser. + * + * In pdf, always 1 pt = 1/72 inch + * + * Rendering resolution of various browsers in px per inch: + * Windows Firefox and Internet Explorer: + * SystemControl->Display properties->FontResolution: Default:96, largefonts:120, custom:? + * Linux Firefox: + * about:config *resolution: Default:96 + * (xorg screen dimension in mm and Desktop font dpi settings are ignored) + * + * Take care about extra font/image zoom factor of browser. + * + * In images, size in pixel attribute, img css style, are overriding + * the real image dimension in px for rendering. + * + * @var int + */ + "dpi" => 96, + + /** + * Enable inline PHP + * + * If this setting is set to true then DOMPDF will automatically evaluate + * inline PHP contained within tags. + * + * Enabling this for documents you do not trust (e.g. arbitrary remote html + * pages) is a security risk. Set this option to false if you wish to process + * untrusted documents. + * + * @var bool + */ + "enable_php" => false, + + /** + * Enable inline Javascript + * + * If this setting is set to true then DOMPDF will automatically insert + * JavaScript code contained within tags. + * + * @var bool + */ + "enable_javascript" => true, + + /** + * Enable remote file access + * + * If this setting is set to true, DOMPDF will access remote sites for + * images and CSS files as required. + * This is required for part of test case www/test/image_variants.html through www/examples.php + * + * Attention! + * This can be a security risk, in particular in combination with DOMPDF_ENABLE_PHP and + * allowing remote access to dompdf.php or on allowing remote html code to be passed to + * $dompdf = new DOMPDF(, $dompdf->load_html(..., + * This allows anonymous users to download legally doubtful internet content which on + * tracing back appears to being downloaded by your server, or allows malicious php code + * in remote html pages to be executed by your server with your account privileges. + * + * @var bool + */ + "enable_remote" => true, + + /** + * A ratio applied to the fonts height to be more like browsers' line height + */ + "font_height_ratio" => 1.1, + + /** + * Use the HTML5 Lib parser + * + * @deprecated This feature is now always on in dompdf 2.x + * @var bool + */ + "enable_html5_parser" => true, + ), + + +); diff --git a/config/jetstream.php b/config/jetstream.php index 5f7c1ad..7b9d0f6 100644 --- a/config/jetstream.php +++ b/config/jetstream.php @@ -58,7 +58,7 @@ */ 'features' => [ - // Features::termsAndPrivacyPolicy(), + Features::termsAndPrivacyPolicy(), Features::profilePhotos(), // Features::api(), // Features::teams(['invitations' => true]), diff --git a/database/migrations/2023_01_17_080247_add_address_to_users_table.php b/database/migrations/2023_01_17_080247_add_address_to_users_table.php new file mode 100644 index 0000000..e8ee0ed --- /dev/null +++ b/database/migrations/2023_01_17_080247_add_address_to_users_table.php @@ -0,0 +1,32 @@ +string('address'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('users', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2023_01_04_064648_add_report_description_to_reports_table.php b/database/migrations/2023_01_17_090417_add_involved_to_reports_table.php similarity index 84% rename from database/migrations/2023_01_04_064648_add_report_description_to_reports_table.php rename to database/migrations/2023_01_17_090417_add_involved_to_reports_table.php index c753681..7eaabff 100644 --- a/database/migrations/2023_01_04_064648_add_report_description_to_reports_table.php +++ b/database/migrations/2023_01_17_090417_add_involved_to_reports_table.php @@ -14,7 +14,8 @@ public function up() { Schema::table('reports', function (Blueprint $table) { - $table->text('description')->default('null')->nullable(); + $table->string('suspects')->nullable(); + $table->string('victims')->nullable(); }); } diff --git a/database/seeders/AdminSeeder.php b/database/seeders/AdminSeeder.php index 1d4f6e7..8318fd9 100644 --- a/database/seeders/AdminSeeder.php +++ b/database/seeders/AdminSeeder.php @@ -23,6 +23,6 @@ public function run() 'email_verified_at' => now(), 'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password 'google_id' => '', - ])->assignRole('super-admin'); + ])->assignRole('Admin'); } } diff --git a/database/seeders/RoleSeeder.php b/database/seeders/RoleSeeder.php index 6362120..9cad2cc 100644 --- a/database/seeders/RoleSeeder.php +++ b/database/seeders/RoleSeeder.php @@ -15,8 +15,8 @@ class RoleSeeder extends Seeder */ public function run() { - Role::create(['name' => 'admin']); - Role::create(['name' => 'user']); - Role::create(['name' => 'super-admin']); + Role::create(['name' => 'Department']); + Role::create(['name' => 'User']); + Role::create(['name' => 'Admin']); } } diff --git a/package-lock.json b/package-lock.json index 98d883f..84f4945 100644 --- a/package-lock.json +++ b/package-lock.json @@ -30,7 +30,7 @@ "binary-extensions": "^2.2.0", "bitsyntax": "^0.0.4", "bluebird": "^3.7.2", - "body-parser": "^1.18.3", + "body-parser": "^1.11.0", "braces": "^3.0.2", "browserslist": "^4.21.4", "buffer-equal-constant-time": "^1.0.1", @@ -90,7 +90,7 @@ "fill-range": "^7.0.1", "finalhandler": "^1.1.1", "find-root": "^1.1.0", - "flaschenpost": "^1.1.3", + "flaschenpost": "^5.1.1", "follow-redirects": "^1.15.2", "form-data": "^4.0.0", "formats": "^1.0.0", @@ -163,7 +163,7 @@ "mini-svg-data-uri": "^1.4.4", "minimist": "^1.2.7", "moment": "^2.22.2", - "morgan": "^1.9.1", + "morgan": "^1.3.2", "ms": "^2.0.0", "nanoid": "^3.3.4", "negotiator": "^0.6.3", @@ -217,8 +217,8 @@ "safe-regex-test": "^1.0.0", "safer-buffer": "^2.1.2", "semver": "^5.7.1", - "send": "^0.16.2", - "serve-static": "^1.13.2", + "send": "^0.2.0", + "serve-static": "^1.0.4", "setprototypeof": "^1.1.0", "sha-1": "^0.1.1", "side-channel": "^1.0.4", @@ -257,7 +257,7 @@ }, "devDependencies": { "@tailwindcss/forms": "^0.5.2", - "@tailwindcss/typography": "^0.5.0", + "@tailwindcss/typography": "^0.5.9", "alpinejs": "^3.0.6", "autoprefixer": "^10.4.7", "axios": "^1.1.2", @@ -421,9 +421,9 @@ } }, "node_modules/@tailwindcss/typography": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.7.tgz", - "integrity": "sha512-JTTSTrgZfp6Ki4svhPA4mkd9nmQ/j9EfE7SbHJ1cLtthKkpW2OxsFXzSmxbhYbEkfNIyAyhle5p4SYyKRbz/jg==", + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.9.tgz", + "integrity": "sha512-t8Sg3DyynFysV9f4JDOVISGsjazNb48AeIYQwcL+Bsq5uf4RYL75C1giZ43KISjeDGBaTN3Kxh7Xj/vRSMJUUg==", "dev": true, "dependencies": { "lodash.castarray": "^4.4.0", @@ -435,6 +435,28 @@ "tailwindcss": ">=3.0.0 || insiders" } }, + "node_modules/@types/app-root-path": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/app-root-path/-/app-root-path-1.2.4.tgz", + "integrity": "sha512-yhURoXmWN/zfw2MXXcOdUTwe5CWhzRWtb4Rs2+JwGpuhm2hxLCzjASi/aIuyVeJB3Iyks1teaHyOEfNNmltdvQ==" + }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/eslint": { "version": "8.4.10", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz", @@ -461,17 +483,89 @@ "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", "dev": true }, + "node_modules/@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.32", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.32.tgz", + "integrity": "sha512-aI5h/VOkxOF2Z1saPy0Zsxs5avets/iaiAJYznQFm5By/pamU31xWKL//epiF4OfUA2qTOc9PV6tCUjhO8wlZA==", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "node_modules/@types/find-root": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/find-root/-/find-root-1.1.2.tgz", + "integrity": "sha512-lGuMq71TL466jtCpvh7orGd+mrdBmo2h8ozvtOOTbq3ByfWpuN+UVxv4sOv3YpsD4NhW2k6ESGhnT/FIg4Ouzw==" + }, "node_modules/@types/json-schema": { "version": "7.0.11", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", "dev": true }, + "node_modules/@types/lodash": { + "version": "4.14.180", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.180.tgz", + "integrity": "sha512-XOKXa1KIxtNXgASAnwj7cnttJxS4fksBRywK/9LzRV5YxrF80BXZIGeQSuoESQ/VkUj30Ae0+YcuHc15wJCB2g==" + }, + "node_modules/@types/mime": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", + "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==" + }, "node_modules/@types/node": { "version": "18.11.9", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", - "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==", - "dev": true + "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==" + }, + "node_modules/@types/on-finished": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@types/on-finished/-/on-finished-2.3.1.tgz", + "integrity": "sha512-mzVYaYcFs5Jd2n/O6uYIRUsFRR1cHyZLRvkLCU0E7+G5WhY0qBDAR5fUCeZbvecYOSh9ikhlesyi2UfI8B9ckQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" + }, + "node_modules/@types/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", + "dependencies": { + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/@types/stack-trace": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/stack-trace/-/stack-trace-0.0.29.tgz", + "integrity": "sha512-TgfOX+mGY/NyNxJLIbDWrO9DjGoVSW9+aB8H2yy1fy32jsvxijhmyJI9fDFgvz3YP4lvJaq9DzdR/M1bOgVc9g==" + }, + "node_modules/@types/stringify-object": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/stringify-object/-/stringify-object-4.0.1.tgz", + "integrity": "sha512-IBlbUGpI7FoWWr1FHQDntMkA7nCEI7Hox/hmwgWgRqohV7SRRkbWB86PayOX++NwtJTapQ8wIs7XtEp4fXonwA==" }, "node_modules/@vue/reactivity": { "version": "3.1.5", @@ -951,25 +1045,108 @@ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, "node_modules/body-parser": { - "version": "1.18.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", - "integrity": "sha512-YQyoqQG3sO8iCmf8+hyVpgHHOv0/hCEFiS4zTGUwTA1HjAFX66wRcNQrVCeJq9pgESMRvUAOvSil5MJlmccuKQ==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.11.0.tgz", + "integrity": "sha512-TD5oybtZnb48JSGTSiBRc3shYVdUJ6hsALEDLp37UMJEXOpJwOhPJ2zgkcti2fPqyzmj3UDZN7TMrQb3wJe59A==", "dependencies": { - "bytes": "3.0.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "~1.6.3", - "iconv-lite": "0.4.23", - "on-finished": "~2.3.0", - "qs": "6.5.2", - "raw-body": "2.3.3", - "type-is": "~1.6.16" + "bytes": "1.0.0", + "depd": "~1.0.0", + "iconv-lite": "0.4.6", + "media-typer": "0.3.0", + "on-finished": "~2.2.0", + "qs": "2.3.3", + "raw-body": "1.3.2", + "type-is": "~1.5.6" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz", + "integrity": "sha512-/x68VkHLeTl3/Ll8IvxdwzhrT+IyKc52e/oyHhA2RwqPqswSnjVbSddfPRwAsJtbilMAPSRWwAlpxdYsSWOTKQ==" + }, + "node_modules/body-parser/node_modules/depd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz", + "integrity": "sha512-OEWAMbCkK9IWQ8pfTvHBhCSqHgR+sk5pbiYqq0FqfARG4Cy+cRsCbITx6wh5pcsmfBPiJAcbd98tfdz5fnBbag==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/body-parser/node_modules/ee-first": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.0.tgz", + "integrity": "sha512-n4X/DaHVKHyDy1Rwuzm1UPjTRIBSarj1BBZ5R5HLOFLn58yhw510qoF1zk94jjkw3mXScdsmMtYCNR1jsAJlEA==" + }, + "node_modules/body-parser/node_modules/iconv-lite": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.6.tgz", + "integrity": "sha512-aop+f6/kQEnzTfi6Rv8KLQMt1bY8/0bFTS5oSiYnwXlCH6eI/gJzL+rGjTwsA7soKCcq/hkeDySFC7PwBELX2w==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/body-parser/node_modules/mime-db": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz", + "integrity": "sha512-5aMAW7I4jZoZB27fXRuekqc4DVvJ7+hM8UcWrNj2mqibE54gXgPSonBYBdQW5hyaVNGmiYjY0ZMqn9fBefWYvA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/body-parser/node_modules/mime-types": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", + "integrity": "sha512-2ZHUEstNkIf2oTWgtODr6X0Cc4Ns/RN/hktdozndiEhhAC2wxXejF1FH0XLHTEImE9h6gr/tcnr3YOnSGsxc7Q==", + "dependencies": { + "mime-db": "~1.12.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/body-parser/node_modules/on-finished": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.2.1.tgz", + "integrity": "sha512-9HvMYLv7im5uzOAcg1lon2cEUxycCF4OI+zPz1R/x3MvBv5s2F+DuxrGwkPe+UwvStDQpWbrkXfLZv12mHbl4A==", + "dependencies": { + "ee-first": "1.1.0" }, "engines": { "node": ">= 0.8" } }, + "node_modules/body-parser/node_modules/qs": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-2.3.3.tgz", + "integrity": "sha512-f5M0HQqZWkzU8GELTY8LyMrGkr3bPjKoFtTkwUEqJQbcljbeK8M7mliP9Ia2xoOI6oMerp+QPS7oYJtpGmWe/A==" + }, + "node_modules/body-parser/node_modules/raw-body": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.3.2.tgz", + "integrity": "sha512-mo8/xcztEzTWt6oNV48j4fDf+YyLUEGhO+tZ1XUvlya1XV4yR343PtP6a/1ozJmVMUoEMB0YcNpBuF3o5t8csA==", + "dependencies": { + "bytes": "1.0.0", + "iconv-lite": "0.4.6" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/body-parser/node_modules/type-is": { + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.5.7.tgz", + "integrity": "sha512-of68V0oUmVH4thGc1cLR3sKdICPsaL7kzpYc7FX1pcagY4eIllhyMqQcoOq289f+xj2orm8oPWwsCwxiCgVJbQ==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.0.9" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/braces": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", @@ -1339,6 +1516,18 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==" }, + "node_modules/date-fns": { + "version": "2.28.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.28.0.tgz", + "integrity": "sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==", + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" + } + }, "node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -2001,6 +2190,63 @@ "node": ">= 0.10.0" } }, + "node_modules/express/node_modules/body-parser": { + "version": "1.18.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", + "integrity": "sha512-YQyoqQG3sO8iCmf8+hyVpgHHOv0/hCEFiS4zTGUwTA1HjAFX66wRcNQrVCeJq9pgESMRvUAOvSil5MJlmccuKQ==", + "dependencies": { + "bytes": "3.0.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "~1.6.3", + "iconv-lite": "0.4.23", + "on-finished": "~2.3.0", + "qs": "6.5.2", + "raw-body": "2.3.3", + "type-is": "~1.6.16" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/express/node_modules/send": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "dependencies": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/express/node_modules/serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", + "send": "0.16.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/fast-deep-equal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", @@ -2101,42 +2347,122 @@ } }, "node_modules/flaschenpost": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/flaschenpost/-/flaschenpost-1.1.3.tgz", - "integrity": "sha512-1VAYPvDsVBGFJyUrOa/6clnJwZYC3qVq9nJLcypy6lvaaNbo1wOQiH8HQ+4Fw/k51pVG7JHzSf5epb8lmIW86g==", - "dependencies": { - "@babel/runtime": "7.2.0", - "app-root-path": "2.1.0", - "babel-runtime": "6.26.0", - "chalk": "2.4.1", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/flaschenpost/-/flaschenpost-5.1.1.tgz", + "integrity": "sha512-Fvxniu9TDId22LdpzM5h8Nr8EkTjtgCF7WoLRuT7a6plVQcvczx904erjljjKAr3yvugV3AAPqhBvmZ4202bew==", + "dependencies": { + "@types/app-root-path": "1.2.4", + "@types/express": "4.17.13", + "@types/find-root": "1.1.2", + "@types/lodash": "4.14.180", + "@types/node": "17.0.21", + "@types/on-finished": "2.3.1", + "@types/stack-trace": "0.0.29", + "@types/stringify-object": "4.0.1", + "app-root-path": "3.0.0", + "chalk": "4.1.2", + "date-fns": "2.28.0", "find-root": "1.1.0", - "lodash": "4.17.11", - "moment": "2.22.2", - "processenv": "1.1.0", - "split2": "3.0.0", + "lodash": "4.17.21", + "on-finished": "2.4.1", + "processenv": "3.0.9", + "serialize-error": "8.1.0", "stack-trace": "0.0.10", - "stringify-object": "3.3.0", - "untildify": "3.0.3", - "util.promisify": "1.0.0", - "varname": "2.0.3" + "stringify-object": "3.3.0" + } + }, + "node_modules/flaschenpost/node_modules/@types/node": { + "version": "17.0.21", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.21.tgz", + "integrity": "sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==" + }, + "node_modules/flaschenpost/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" }, - "bin": { - "flaschenpost-normalize": "dist/bin/flaschenpost-normalize.js", - "flaschenpost-uncork": "dist/bin/flaschenpost-uncork.js" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/flaschenpost/node_modules/@babel/runtime": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.2.0.tgz", - "integrity": "sha512-oouEibCbHMVdZSDlJBO6bZmID/zA/G/Qx3H1d3rSNPTD+L8UNKvCat7aKWSJ74zYbm5zWGh0GQN0hKj8zYFTCg==", + "node_modules/flaschenpost/node_modules/app-root-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.0.0.tgz", + "integrity": "sha512-qMcx+Gy2UZynHjOHOIXPNvpf+9cjvk3cWrBBK7zg4gH9+clobJRb9NGzcT7mQTcV/6Gm/1WelUtqxVXnNlrwcw==", + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/flaschenpost/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dependencies": { - "regenerator-runtime": "^0.12.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/flaschenpost/node_modules/lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + "node_modules/flaschenpost/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/flaschenpost/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/flaschenpost/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/flaschenpost/node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/flaschenpost/node_modules/processenv": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/processenv/-/processenv-3.0.9.tgz", + "integrity": "sha512-k3SP1G2ZB1tunIcWyIAl6SgbB4lkmqookJHO2nlxwbztJJximdCGg5nPHqJ6rBtI3gYW4H0iLwdy5VSN9NlVsg==" + }, + "node_modules/flaschenpost/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } }, "node_modules/follow-redirects": { "version": "1.15.2", @@ -2866,8 +3192,7 @@ "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "node_modules/lodash.castarray": { "version": "4.4.0", @@ -3016,28 +3341,52 @@ } }, "node_modules/moment": { - "version": "2.22.2", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.2.tgz", - "integrity": "sha512-LRvkBHaJGnrcWvqsElsOhHCzj8mU39wLx5pQ0pc6s153GynCTsPdGdqsVNKAQD9sKnWj11iF7TZx9fpLwdD3fw==", + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", "engines": { "node": "*" } }, "node_modules/morgan": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz", - "integrity": "sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.3.2.tgz", + "integrity": "sha512-Q+4Zi1ma/NOtxKMdDSs3vbJ1gcNJpaX4EL4oZkNGPiZdoh8EQVRMaYu/08Eken0L9aIg2Wi16cePnxNSBHqlAA==", "dependencies": { - "basic-auth": "~2.0.0", - "debug": "2.6.9", - "depd": "~1.1.2", - "on-finished": "~2.3.0", - "on-headers": "~1.0.1" + "basic-auth": "1.0.0", + "depd": "0.4.5", + "on-finished": "2.1.0" }, "engines": { "node": ">= 0.8.0" } }, + "node_modules/morgan/node_modules/basic-auth": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.0.0.tgz", + "integrity": "sha512-qzxS7/bW/LSiKZzdZw3isPjiVmzXbJLM3ImZZ62WMR3oJQAyqy094Nnb0TA2ZZm65xB7nu0acfTQ99z7wwCDCw==" + }, + "node_modules/morgan/node_modules/depd": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/depd/-/depd-0.4.5.tgz", + "integrity": "sha512-MyQx8POntp7sey9ghPezYB5gIKSbcce5pkoHdFmDYkiOcsE5f5yLLBzv8Qcs9Ll1hPgmEOfIae51n4Fa7l3zxw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/morgan/node_modules/ee-first": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.0.5.tgz", + "integrity": "sha512-+FCut34oNiJD2jD+YL/onRxOHF5ut3xOGgTIyEIOdYfun8AexYhEyurzv9izwhTft1Z7pdy4VlTq51K/sIsQRA==" + }, + "node_modules/morgan/node_modules/on-finished": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.1.0.tgz", + "integrity": "sha512-33+g6TZkplndl+2k2VNO1YphX5hm79DGhBP6TJcDI9o1sCFbUvO2bgxPdGanIFqZK4su6OVLwPHY9GkLQrojgA==", + "dependencies": { + "ee-first": "1.0.5" + } + }, "node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -3755,26 +4104,49 @@ } }, "node_modules/send": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.2.0.tgz", + "integrity": "sha512-CR/kej5a8BChsMJwpmAtqOgdGI3nemoRaPcoXj/choHibvaOfkYcohcAbd9aEG8MhL9CfRH3KlUb+oHZsdNmTg==", "dependencies": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" + "debug": "*", + "fresh": "~0.2.1", + "mime": "~1.2.9", + "range-parser": "~1.0.0" + } + }, + "node_modules/send/node_modules/fresh": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.2.4.tgz", + "integrity": "sha512-mnBGgIFRNu54GtbkXy6+QKPYW/b5joAURorA8ELeJc/5BBNph6Go1NmHa9dt08ghFnhGuLenrUmNO8Za1CwEUQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/send/node_modules/mime": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz", + "integrity": "sha512-Ysa2F/nqTNGHhhm9MV8ure4+Hc+Y8AWiqUdHxsO7xu8zc92ND9f3kpALHjaP026Ft17UfxrMt95c50PLUeynBw==" + }, + "node_modules/send/node_modules/range-parser": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.3.tgz", + "integrity": "sha512-nDsRrtIxVUO5opg/A8T2S3ebULVIfuh8ECbh4w3N4mWxIiT3QILDJDUQayPqm2e8Q8NUa0RSUkGCfe33AfjR3Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serialize-error": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-8.1.0.tgz", + "integrity": "sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ==", + "dependencies": { + "type-fest": "^0.20.2" }, "engines": { - "node": ">= 0.8.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/serialize-javascript": { @@ -3787,19 +4159,22 @@ } }, "node_modules/serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.0.4.tgz", + "integrity": "sha512-HRe4CmpyO+OdhZDNhmCAU8AVTF4Ed13cRicmREPgYcWN3Yy/tr4brktDzW1M0omtv2ga+tgnb5hivkBV4MIEWw==", "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.2", - "send": "0.16.2" + "parseurl": "1.0.1", + "send": "0.2.0" }, "engines": { "node": ">= 0.8.0" } }, + "node_modules/serve-static/node_modules/parseurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.0.1.tgz", + "integrity": "sha512-6W9+0+9Ihayqwjgp4OaLLqZ3KDtqPY2PtUPz8YNiy4PamjJv+7x6J9GO93O9rUZOLgaanTPxsKTasxqKkO1iSw==" + }, "node_modules/setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", @@ -4045,15 +4420,71 @@ "json-lines": "1.0.0", "limes": "2.0.0", "lodash": "4.17.11", - "lusca": "1.6.1", - "morgan": "1.9.1", - "nocache": "2.0.0", - "partof": "1.0.0", + "lusca": "1.6.1", + "morgan": "1.9.1", + "nocache": "2.0.0", + "partof": "1.0.0", + "processenv": "1.1.0", + "stethoskop": "1.0.0", + "timer2": "1.0.0", + "uuidv4": "3.0.1", + "ws": "6.2.0" + } + }, + "node_modules/tailwind/node_modules/body-parser": { + "version": "1.18.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", + "integrity": "sha512-YQyoqQG3sO8iCmf8+hyVpgHHOv0/hCEFiS4zTGUwTA1HjAFX66wRcNQrVCeJq9pgESMRvUAOvSil5MJlmccuKQ==", + "dev": true, + "dependencies": { + "bytes": "3.0.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "~1.6.3", + "iconv-lite": "0.4.23", + "on-finished": "~2.3.0", + "qs": "6.5.2", + "raw-body": "2.3.3", + "type-is": "~1.6.16" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/tailwind/node_modules/flaschenpost": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/flaschenpost/-/flaschenpost-1.1.3.tgz", + "integrity": "sha512-1VAYPvDsVBGFJyUrOa/6clnJwZYC3qVq9nJLcypy6lvaaNbo1wOQiH8HQ+4Fw/k51pVG7JHzSf5epb8lmIW86g==", + "dev": true, + "dependencies": { + "@babel/runtime": "7.2.0", + "app-root-path": "2.1.0", + "babel-runtime": "6.26.0", + "chalk": "2.4.1", + "find-root": "1.1.0", + "lodash": "4.17.11", + "moment": "2.22.2", "processenv": "1.1.0", - "stethoskop": "1.0.0", - "timer2": "1.0.0", - "uuidv4": "3.0.1", - "ws": "6.2.0" + "split2": "3.0.0", + "stack-trace": "0.0.10", + "stringify-object": "3.3.0", + "untildify": "3.0.3", + "util.promisify": "1.0.0", + "varname": "2.0.3" + }, + "bin": { + "flaschenpost-normalize": "dist/bin/flaschenpost-normalize.js", + "flaschenpost-uncork": "dist/bin/flaschenpost-uncork.js" + } + }, + "node_modules/tailwind/node_modules/flaschenpost/node_modules/@babel/runtime": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.2.0.tgz", + "integrity": "sha512-oouEibCbHMVdZSDlJBO6bZmID/zA/G/Qx3H1d3rSNPTD+L8UNKvCat7aKWSJ74zYbm5zWGh0GQN0hKj8zYFTCg==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.12.0" } }, "node_modules/tailwind/node_modules/lodash": { @@ -4062,6 +4493,31 @@ "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", "dev": true }, + "node_modules/tailwind/node_modules/moment": { + "version": "2.22.2", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.2.tgz", + "integrity": "sha512-LRvkBHaJGnrcWvqsElsOhHCzj8mU39wLx5pQ0pc6s153GynCTsPdGdqsVNKAQD9sKnWj11iF7TZx9fpLwdD3fw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/tailwind/node_modules/morgan": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz", + "integrity": "sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==", + "dev": true, + "dependencies": { + "basic-auth": "~2.0.0", + "debug": "2.6.9", + "depd": "~1.1.2", + "on-finished": "~2.3.0", + "on-headers": "~1.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/tailwindcss": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.2.2.tgz", @@ -4206,6 +4662,17 @@ "node": ">=0.6.x" } }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -4719,9 +5186,9 @@ } }, "@tailwindcss/typography": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.7.tgz", - "integrity": "sha512-JTTSTrgZfp6Ki4svhPA4mkd9nmQ/j9EfE7SbHJ1cLtthKkpW2OxsFXzSmxbhYbEkfNIyAyhle5p4SYyKRbz/jg==", + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.9.tgz", + "integrity": "sha512-t8Sg3DyynFysV9f4JDOVISGsjazNb48AeIYQwcL+Bsq5uf4RYL75C1giZ43KISjeDGBaTN3Kxh7Xj/vRSMJUUg==", "dev": true, "requires": { "lodash.castarray": "^4.4.0", @@ -4730,6 +5197,28 @@ "postcss-selector-parser": "6.0.10" } }, + "@types/app-root-path": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/app-root-path/-/app-root-path-1.2.4.tgz", + "integrity": "sha512-yhURoXmWN/zfw2MXXcOdUTwe5CWhzRWtb4Rs2+JwGpuhm2hxLCzjASi/aIuyVeJB3Iyks1teaHyOEfNNmltdvQ==" + }, + "@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "requires": { + "@types/node": "*" + } + }, "@types/eslint": { "version": "8.4.10", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz", @@ -4756,17 +5245,89 @@ "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", "dev": true }, + "@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.32", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.32.tgz", + "integrity": "sha512-aI5h/VOkxOF2Z1saPy0Zsxs5avets/iaiAJYznQFm5By/pamU31xWKL//epiF4OfUA2qTOc9PV6tCUjhO8wlZA==", + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "@types/find-root": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/find-root/-/find-root-1.1.2.tgz", + "integrity": "sha512-lGuMq71TL466jtCpvh7orGd+mrdBmo2h8ozvtOOTbq3ByfWpuN+UVxv4sOv3YpsD4NhW2k6ESGhnT/FIg4Ouzw==" + }, "@types/json-schema": { "version": "7.0.11", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", "dev": true }, + "@types/lodash": { + "version": "4.14.180", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.180.tgz", + "integrity": "sha512-XOKXa1KIxtNXgASAnwj7cnttJxS4fksBRywK/9LzRV5YxrF80BXZIGeQSuoESQ/VkUj30Ae0+YcuHc15wJCB2g==" + }, + "@types/mime": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", + "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==" + }, "@types/node": { "version": "18.11.9", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", - "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==", - "dev": true + "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==" + }, + "@types/on-finished": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@types/on-finished/-/on-finished-2.3.1.tgz", + "integrity": "sha512-mzVYaYcFs5Jd2n/O6uYIRUsFRR1cHyZLRvkLCU0E7+G5WhY0qBDAR5fUCeZbvecYOSh9ikhlesyi2UfI8B9ckQ==", + "requires": { + "@types/node": "*" + } + }, + "@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" + }, + "@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" + }, + "@types/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", + "requires": { + "@types/mime": "*", + "@types/node": "*" + } + }, + "@types/stack-trace": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/stack-trace/-/stack-trace-0.0.29.tgz", + "integrity": "sha512-TgfOX+mGY/NyNxJLIbDWrO9DjGoVSW9+aB8H2yy1fy32jsvxijhmyJI9fDFgvz3YP4lvJaq9DzdR/M1bOgVc9g==" + }, + "@types/stringify-object": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/stringify-object/-/stringify-object-4.0.1.tgz", + "integrity": "sha512-IBlbUGpI7FoWWr1FHQDntMkA7nCEI7Hox/hmwgWgRqohV7SRRkbWB86PayOX++NwtJTapQ8wIs7XtEp4fXonwA==" }, "@vue/reactivity": { "version": "3.1.5", @@ -5165,20 +5726,84 @@ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, "body-parser": { - "version": "1.18.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", - "integrity": "sha512-YQyoqQG3sO8iCmf8+hyVpgHHOv0/hCEFiS4zTGUwTA1HjAFX66wRcNQrVCeJq9pgESMRvUAOvSil5MJlmccuKQ==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.11.0.tgz", + "integrity": "sha512-TD5oybtZnb48JSGTSiBRc3shYVdUJ6hsALEDLp37UMJEXOpJwOhPJ2zgkcti2fPqyzmj3UDZN7TMrQb3wJe59A==", "requires": { - "bytes": "3.0.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "~1.6.3", - "iconv-lite": "0.4.23", - "on-finished": "~2.3.0", - "qs": "6.5.2", - "raw-body": "2.3.3", - "type-is": "~1.6.16" + "bytes": "1.0.0", + "depd": "~1.0.0", + "iconv-lite": "0.4.6", + "media-typer": "0.3.0", + "on-finished": "~2.2.0", + "qs": "2.3.3", + "raw-body": "1.3.2", + "type-is": "~1.5.6" + }, + "dependencies": { + "bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz", + "integrity": "sha512-/x68VkHLeTl3/Ll8IvxdwzhrT+IyKc52e/oyHhA2RwqPqswSnjVbSddfPRwAsJtbilMAPSRWwAlpxdYsSWOTKQ==" + }, + "depd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz", + "integrity": "sha512-OEWAMbCkK9IWQ8pfTvHBhCSqHgR+sk5pbiYqq0FqfARG4Cy+cRsCbITx6wh5pcsmfBPiJAcbd98tfdz5fnBbag==" + }, + "ee-first": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.0.tgz", + "integrity": "sha512-n4X/DaHVKHyDy1Rwuzm1UPjTRIBSarj1BBZ5R5HLOFLn58yhw510qoF1zk94jjkw3mXScdsmMtYCNR1jsAJlEA==" + }, + "iconv-lite": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.6.tgz", + "integrity": "sha512-aop+f6/kQEnzTfi6Rv8KLQMt1bY8/0bFTS5oSiYnwXlCH6eI/gJzL+rGjTwsA7soKCcq/hkeDySFC7PwBELX2w==" + }, + "mime-db": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz", + "integrity": "sha512-5aMAW7I4jZoZB27fXRuekqc4DVvJ7+hM8UcWrNj2mqibE54gXgPSonBYBdQW5hyaVNGmiYjY0ZMqn9fBefWYvA==" + }, + "mime-types": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", + "integrity": "sha512-2ZHUEstNkIf2oTWgtODr6X0Cc4Ns/RN/hktdozndiEhhAC2wxXejF1FH0XLHTEImE9h6gr/tcnr3YOnSGsxc7Q==", + "requires": { + "mime-db": "~1.12.0" + } + }, + "on-finished": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.2.1.tgz", + "integrity": "sha512-9HvMYLv7im5uzOAcg1lon2cEUxycCF4OI+zPz1R/x3MvBv5s2F+DuxrGwkPe+UwvStDQpWbrkXfLZv12mHbl4A==", + "requires": { + "ee-first": "1.1.0" + } + }, + "qs": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-2.3.3.tgz", + "integrity": "sha512-f5M0HQqZWkzU8GELTY8LyMrGkr3bPjKoFtTkwUEqJQbcljbeK8M7mliP9Ia2xoOI6oMerp+QPS7oYJtpGmWe/A==" + }, + "raw-body": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.3.2.tgz", + "integrity": "sha512-mo8/xcztEzTWt6oNV48j4fDf+YyLUEGhO+tZ1XUvlya1XV4yR343PtP6a/1ozJmVMUoEMB0YcNpBuF3o5t8csA==", + "requires": { + "bytes": "1.0.0", + "iconv-lite": "0.4.6" + } + }, + "type-is": { + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.5.7.tgz", + "integrity": "sha512-of68V0oUmVH4thGc1cLR3sKdICPsaL7kzpYc7FX1pcagY4eIllhyMqQcoOq289f+xj2orm8oPWwsCwxiCgVJbQ==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.0.9" + } + } } }, "braces": { @@ -5463,6 +6088,11 @@ } } }, + "date-fns": { + "version": "2.28.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.28.0.tgz", + "integrity": "sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==" + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -5866,6 +6496,56 @@ "type-is": "~1.6.16", "utils-merge": "1.0.1", "vary": "~1.1.2" + }, + "dependencies": { + "body-parser": { + "version": "1.18.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", + "integrity": "sha512-YQyoqQG3sO8iCmf8+hyVpgHHOv0/hCEFiS4zTGUwTA1HjAFX66wRcNQrVCeJq9pgESMRvUAOvSil5MJlmccuKQ==", + "requires": { + "bytes": "3.0.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "~1.6.3", + "iconv-lite": "0.4.23", + "on-finished": "~2.3.0", + "qs": "6.5.2", + "raw-body": "2.3.3", + "type-is": "~1.6.16" + } + }, + "send": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.4.0" + } + }, + "serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", + "send": "0.16.2" + } + } } }, "fast-deep-equal": { @@ -5952,38 +6632,95 @@ } }, "flaschenpost": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/flaschenpost/-/flaschenpost-1.1.3.tgz", - "integrity": "sha512-1VAYPvDsVBGFJyUrOa/6clnJwZYC3qVq9nJLcypy6lvaaNbo1wOQiH8HQ+4Fw/k51pVG7JHzSf5epb8lmIW86g==", - "requires": { - "@babel/runtime": "7.2.0", - "app-root-path": "2.1.0", - "babel-runtime": "6.26.0", - "chalk": "2.4.1", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/flaschenpost/-/flaschenpost-5.1.1.tgz", + "integrity": "sha512-Fvxniu9TDId22LdpzM5h8Nr8EkTjtgCF7WoLRuT7a6plVQcvczx904erjljjKAr3yvugV3AAPqhBvmZ4202bew==", + "requires": { + "@types/app-root-path": "1.2.4", + "@types/express": "4.17.13", + "@types/find-root": "1.1.2", + "@types/lodash": "4.14.180", + "@types/node": "17.0.21", + "@types/on-finished": "2.3.1", + "@types/stack-trace": "0.0.29", + "@types/stringify-object": "4.0.1", + "app-root-path": "3.0.0", + "chalk": "4.1.2", + "date-fns": "2.28.0", "find-root": "1.1.0", - "lodash": "4.17.11", - "moment": "2.22.2", - "processenv": "1.1.0", - "split2": "3.0.0", + "lodash": "4.17.21", + "on-finished": "2.4.1", + "processenv": "3.0.9", + "serialize-error": "8.1.0", "stack-trace": "0.0.10", - "stringify-object": "3.3.0", - "untildify": "3.0.3", - "util.promisify": "1.0.0", - "varname": "2.0.3" + "stringify-object": "3.3.0" }, "dependencies": { - "@babel/runtime": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.2.0.tgz", - "integrity": "sha512-oouEibCbHMVdZSDlJBO6bZmID/zA/G/Qx3H1d3rSNPTD+L8UNKvCat7aKWSJ74zYbm5zWGh0GQN0hKj8zYFTCg==", + "@types/node": { + "version": "17.0.21", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.21.tgz", + "integrity": "sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "requires": { - "regenerator-runtime": "^0.12.0" + "color-convert": "^2.0.1" } }, - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + "app-root-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.0.0.tgz", + "integrity": "sha512-qMcx+Gy2UZynHjOHOIXPNvpf+9cjvk3cWrBBK7zg4gH9+clobJRb9NGzcT7mQTcV/6Gm/1WelUtqxVXnNlrwcw==" + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "requires": { + "ee-first": "1.1.1" + } + }, + "processenv": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/processenv/-/processenv-3.0.9.tgz", + "integrity": "sha512-k3SP1G2ZB1tunIcWyIAl6SgbB4lkmqookJHO2nlxwbztJJximdCGg5nPHqJ6rBtI3gYW4H0iLwdy5VSN9NlVsg==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } } } }, @@ -6497,8 +7234,7 @@ "lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "lodash.castarray": { "version": "4.4.0", @@ -6617,20 +7353,43 @@ "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==" }, "moment": { - "version": "2.22.2", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.2.tgz", - "integrity": "sha512-LRvkBHaJGnrcWvqsElsOhHCzj8mU39wLx5pQ0pc6s153GynCTsPdGdqsVNKAQD9sKnWj11iF7TZx9fpLwdD3fw==" + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" }, "morgan": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz", - "integrity": "sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.3.2.tgz", + "integrity": "sha512-Q+4Zi1ma/NOtxKMdDSs3vbJ1gcNJpaX4EL4oZkNGPiZdoh8EQVRMaYu/08Eken0L9aIg2Wi16cePnxNSBHqlAA==", "requires": { - "basic-auth": "~2.0.0", - "debug": "2.6.9", - "depd": "~1.1.2", - "on-finished": "~2.3.0", - "on-headers": "~1.0.1" + "basic-auth": "1.0.0", + "depd": "0.4.5", + "on-finished": "2.1.0" + }, + "dependencies": { + "basic-auth": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.0.0.tgz", + "integrity": "sha512-qzxS7/bW/LSiKZzdZw3isPjiVmzXbJLM3ImZZ62WMR3oJQAyqy094Nnb0TA2ZZm65xB7nu0acfTQ99z7wwCDCw==" + }, + "depd": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/depd/-/depd-0.4.5.tgz", + "integrity": "sha512-MyQx8POntp7sey9ghPezYB5gIKSbcce5pkoHdFmDYkiOcsE5f5yLLBzv8Qcs9Ll1hPgmEOfIae51n4Fa7l3zxw==" + }, + "ee-first": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.0.5.tgz", + "integrity": "sha512-+FCut34oNiJD2jD+YL/onRxOHF5ut3xOGgTIyEIOdYfun8AexYhEyurzv9izwhTft1Z7pdy4VlTq51K/sIsQRA==" + }, + "on-finished": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.1.0.tgz", + "integrity": "sha512-33+g6TZkplndl+2k2VNO1YphX5hm79DGhBP6TJcDI9o1sCFbUvO2bgxPdGanIFqZK4su6OVLwPHY9GkLQrojgA==", + "requires": { + "ee-first": "1.0.5" + } + } } }, "ms": { @@ -7107,23 +7866,39 @@ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" }, "send": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.2.0.tgz", + "integrity": "sha512-CR/kej5a8BChsMJwpmAtqOgdGI3nemoRaPcoXj/choHibvaOfkYcohcAbd9aEG8MhL9CfRH3KlUb+oHZsdNmTg==", "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" + "debug": "*", + "fresh": "~0.2.1", + "mime": "~1.2.9", + "range-parser": "~1.0.0" + }, + "dependencies": { + "fresh": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.2.4.tgz", + "integrity": "sha512-mnBGgIFRNu54GtbkXy6+QKPYW/b5joAURorA8ELeJc/5BBNph6Go1NmHa9dt08ghFnhGuLenrUmNO8Za1CwEUQ==" + }, + "mime": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz", + "integrity": "sha512-Ysa2F/nqTNGHhhm9MV8ure4+Hc+Y8AWiqUdHxsO7xu8zc92ND9f3kpALHjaP026Ft17UfxrMt95c50PLUeynBw==" + }, + "range-parser": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.3.tgz", + "integrity": "sha512-nDsRrtIxVUO5opg/A8T2S3ebULVIfuh8ECbh4w3N4mWxIiT3QILDJDUQayPqm2e8Q8NUa0RSUkGCfe33AfjR3Q==" + } + } + }, + "serialize-error": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-8.1.0.tgz", + "integrity": "sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ==", + "requires": { + "type-fest": "^0.20.2" } }, "serialize-javascript": { @@ -7136,14 +7911,19 @@ } }, "serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.0.4.tgz", + "integrity": "sha512-HRe4CmpyO+OdhZDNhmCAU8AVTF4Ed13cRicmREPgYcWN3Yy/tr4brktDzW1M0omtv2ga+tgnb5hivkBV4MIEWw==", "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.2", - "send": "0.16.2" + "parseurl": "1.0.1", + "send": "0.2.0" + }, + "dependencies": { + "parseurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.0.1.tgz", + "integrity": "sha512-6W9+0+9Ihayqwjgp4OaLLqZ3KDtqPY2PtUPz8YNiy4PamjJv+7x6J9GO93O9rUZOLgaanTPxsKTasxqKkO1iSw==" + } } }, "setprototypeof": { @@ -7345,11 +8125,81 @@ "ws": "6.2.0" }, "dependencies": { + "body-parser": { + "version": "1.18.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", + "integrity": "sha512-YQyoqQG3sO8iCmf8+hyVpgHHOv0/hCEFiS4zTGUwTA1HjAFX66wRcNQrVCeJq9pgESMRvUAOvSil5MJlmccuKQ==", + "dev": true, + "requires": { + "bytes": "3.0.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "~1.6.3", + "iconv-lite": "0.4.23", + "on-finished": "~2.3.0", + "qs": "6.5.2", + "raw-body": "2.3.3", + "type-is": "~1.6.16" + } + }, + "flaschenpost": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/flaschenpost/-/flaschenpost-1.1.3.tgz", + "integrity": "sha512-1VAYPvDsVBGFJyUrOa/6clnJwZYC3qVq9nJLcypy6lvaaNbo1wOQiH8HQ+4Fw/k51pVG7JHzSf5epb8lmIW86g==", + "dev": true, + "requires": { + "@babel/runtime": "7.2.0", + "app-root-path": "2.1.0", + "babel-runtime": "6.26.0", + "chalk": "2.4.1", + "find-root": "1.1.0", + "lodash": "4.17.11", + "moment": "2.22.2", + "processenv": "1.1.0", + "split2": "3.0.0", + "stack-trace": "0.0.10", + "stringify-object": "3.3.0", + "untildify": "3.0.3", + "util.promisify": "1.0.0", + "varname": "2.0.3" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.2.0.tgz", + "integrity": "sha512-oouEibCbHMVdZSDlJBO6bZmID/zA/G/Qx3H1d3rSNPTD+L8UNKvCat7aKWSJ74zYbm5zWGh0GQN0hKj8zYFTCg==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.12.0" + } + } + } + }, "lodash": { "version": "4.17.11", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", "dev": true + }, + "moment": { + "version": "2.22.2", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.2.tgz", + "integrity": "sha512-LRvkBHaJGnrcWvqsElsOhHCzj8mU39wLx5pQ0pc6s153GynCTsPdGdqsVNKAQD9sKnWj11iF7TZx9fpLwdD3fw==", + "dev": true + }, + "morgan": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz", + "integrity": "sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==", + "dev": true, + "requires": { + "basic-auth": "~2.0.0", + "debug": "2.6.9", + "depd": "~1.1.2", + "on-finished": "~2.3.0", + "on-headers": "~1.0.1" + } } } }, @@ -7449,6 +8299,11 @@ "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==" }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" + }, "type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", diff --git a/package.json b/package.json index 7f128b0..bdd4322 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ }, "devDependencies": { "@tailwindcss/forms": "^0.5.2", - "@tailwindcss/typography": "^0.5.0", + "@tailwindcss/typography": "^0.5.9", "alpinejs": "^3.0.6", "autoprefixer": "^10.4.7", "axios": "^1.1.2", @@ -48,7 +48,7 @@ "binary-extensions": "^2.2.0", "bitsyntax": "^0.0.4", "bluebird": "^3.7.2", - "body-parser": "^1.18.3", + "body-parser": "^1.11.0", "braces": "^3.0.2", "browserslist": "^4.21.4", "buffer-equal-constant-time": "^1.0.1", @@ -108,7 +108,7 @@ "fill-range": "^7.0.1", "finalhandler": "^1.1.1", "find-root": "^1.1.0", - "flaschenpost": "^1.1.3", + "flaschenpost": "^5.1.1", "follow-redirects": "^1.15.2", "form-data": "^4.0.0", "formats": "^1.0.0", @@ -181,7 +181,7 @@ "mini-svg-data-uri": "^1.4.4", "minimist": "^1.2.7", "moment": "^2.22.2", - "morgan": "^1.9.1", + "morgan": "^1.3.2", "ms": "^2.0.0", "nanoid": "^3.3.4", "negotiator": "^0.6.3", @@ -235,8 +235,8 @@ "safe-regex-test": "^1.0.0", "safer-buffer": "^2.1.2", "semver": "^5.7.1", - "send": "^0.16.2", - "serve-static": "^1.13.2", + "send": "^0.2.0", + "serve-static": "^1.0.4", "setprototypeof": "^1.1.0", "sha-1": "^0.1.1", "side-channel": "^1.0.4", diff --git a/public/images/Don Carlos/1.jpg b/public/images/Don Carlos/1.jpg new file mode 100644 index 0000000..1e86f54 Binary files /dev/null and b/public/images/Don Carlos/1.jpg differ diff --git a/public/images/Don Carlos/2.jpg b/public/images/Don Carlos/2.jpg new file mode 100644 index 0000000..16b781d Binary files /dev/null and b/public/images/Don Carlos/2.jpg differ diff --git a/public/images/Don Carlos/3.jpg b/public/images/Don Carlos/3.jpg new file mode 100644 index 0000000..756e808 Binary files /dev/null and b/public/images/Don Carlos/3.jpg differ diff --git a/public/images/Don Carlos/4.jpg b/public/images/Don Carlos/4.jpg new file mode 100644 index 0000000..edc66a1 Binary files /dev/null and b/public/images/Don Carlos/4.jpg differ diff --git a/public/images/Don Carlos/5.jpg b/public/images/Don Carlos/5.jpg new file mode 100644 index 0000000..5a9f4d6 Binary files /dev/null and b/public/images/Don Carlos/5.jpg differ diff --git a/public/images/don carlos logo.png b/public/images/don carlos logo.png index 1a738f5..97feccb 100644 Binary files a/public/images/don carlos logo.png and b/public/images/don carlos logo.png differ diff --git a/public/images/quick-reponse-logo-nb.png b/public/images/quick-reponse-logo-nb.png deleted file mode 100644 index bc8cf95..0000000 Binary files a/public/images/quick-reponse-logo-nb.png and /dev/null differ diff --git a/public/images/quick-reponse-logo.png b/public/images/quick-reponse-logo.png deleted file mode 100644 index 7260aa9..0000000 Binary files a/public/images/quick-reponse-logo.png and /dev/null differ diff --git a/resources/markdown/policy.md b/resources/markdown/policy.md index ff7dbea..9a05320 100644 --- a/resources/markdown/policy.md +++ b/resources/markdown/policy.md @@ -1,3 +1,27 @@ # Privacy Policy -Edit this file to define the privacy policy for your application. +

Introduction

+The Incident Reporting System for Don Carlos, Bukidnon ("IRSDCB") is a website designed to enable the residents of Don Carlos, Bukidnon to report incidents that occur within the municipality. This Privacy Policy explains how we collect, use, and share the personal information you provide to us when you use the IRSDCB website. + + +1. Collection of Personal Information
+When you use the IRSDCB website to report an incident, we may collect personal information such as your name, address, email address, and telephone number. We may also collect information about the incident you are reporting, such as the date, time, location, and description of the incident. + +2. Use of Personal Information
+The personal information that you provide to us will be used for the purpose of investigating and addressing the incident that you have reported. Your personal information may be shared with appropriate local authorities, such as the police department or municipal government, as necessary to investigate or address the incident.

+We will not use your personal information for any other purpose without your express consent, and we will not share your personal information with any third parties for their own marketing purposes. + +3. Data Security
+We take reasonable precautions to protect your personal information from unauthorized access, use, or disclosure. However, no security measures can be 100% effective, and we cannot guarantee the absolute security of your personal information. + +4. Retention of Personal Information
+We will retain your personal information for as long as necessary to fulfill the purposes for which it was collected, and to comply with legal, regulatory or professional requirements, or to resolve disputes. + +5. Your rights
+You have the right to access, correct, delete or port your personal data. If you wish to exercise any of these rights, or if you have any questions or concerns about this Privacy Policy or our handling of your personal information, please contact us at incidentreport@doncarlosbukidnon.com. + +6. Changes to the Policy
+We reserve the right to make changes to this Privacy Policy at any time. We will notify you of any changes by posting the updated Privacy Policy on our website. Your continued use of the IRSDCB website following the posting of changes to this Privacy Policy will signify your acceptance of those changes. + +7. Contact Us
+If you have any questions or concerns about this Privacy Policy or your use of the IRSDCB website, please contact us at incidentreport@doncarlosbukidnon.com \ No newline at end of file diff --git a/resources/markdown/terms.md b/resources/markdown/terms.md index bf2ace7..d11200d 100644 --- a/resources/markdown/terms.md +++ b/resources/markdown/terms.md @@ -1,3 +1,22 @@ # Terms of Service -Edit this file to define the terms of service for your application. +

Introduction

+The Incident Reporting System for Don Carlos, Bukidnon ("IRSDCB") is a website designed to enable the residents of Don Carlos, Bukidnon to report incidents that occur within the municipality. By accessing or using the IRSDCB website, you agree to be bound by the terms and conditions outlined in this policy ("Policy"). If you do not agree to these terms, you should not use the IRSDCB website. + +1. Use of the IRSDCB Website
+The IRSDCB website is intended for use by residents of Don Carlos, Bukidnon who are over the age of 18. By using the IRSDCB website, you represent and warrant that you are at least 18 years old and a resident of Don Carlos, Bukidnon. + +2. Reporting Incidents
+When reporting an incident through the IRSDCB website, you must provide accurate and complete information about the incident, including your personal information and a detailed description of the incident. By submitting an incident report, you agree that you have witnessed or have first-hand knowledge of the incident that you are reporting.

You must not submit false or misleading information, or make any report with the intent to harass or defame any individual or organization. In the event that it is determined that you have submitted false or misleading information, your access to the IRSDCB website may be suspended or terminated, and appropriate legal action may be taken. + +3. onfidentiality
+Personal information that you provide when reporting an incident through the IRSDCB website will be used only for the purpose of investigating and addressing the incident that you have reported. Your personal information will not be shared or disclosed to third parties, except as required by law or as necessary to investigate or address the incident that you have reported. + +4. Limitation of Liability
+The IRSDCB website is provided on an "as is" and "as available" basis, and we make no representations or warranties of any kind, express or implied, as to the operation of the website or the information, content, materials, or products included on the website.

We will not be liable for any damages of any kind arising from the use of the IRSDCB website, including, but not limited to, direct, indirect, incidental, punitive, and consequential damages. + +5. Changes to the Policy
+We reserve the right to make changes to this Policy at any time, and will make all updates available on the IRSDCB website. Your continued use of the IRSDCB website following the posting of changes to this Policy will signify your acceptance of those changes. + +6. Contact Us
+If you have any questions or concerns about this Policy or your use of the IRSDCB website, please contact us at incidentreport@doncarlosbukidnon.com \ No newline at end of file diff --git a/resources/views/admin/admin.blade.php b/resources/views/admin/admin.blade.php index a74164a..8fe851d 100644 --- a/resources/views/admin/admin.blade.php +++ b/resources/views/admin/admin.blade.php @@ -2,9 +2,9 @@
@livewire('admin-side-panel')
-
+
-
+
@livewire('departments', ['numbers' => $numbers]) @livewire('add-incident') @livewire('assign-departments', ['numbers' => $numbers, 'incidents' => $incidents]) diff --git a/resources/views/admin/adminDashboard.blade.php b/resources/views/admin/adminDashboard.blade.php index 1777777..9437e06 100644 --- a/resources/views/admin/adminDashboard.blade.php +++ b/resources/views/admin/adminDashboard.blade.php @@ -1,20 +1,26 @@ -
+
@livewire('admin-side-panel') -
+
-
-
- @livewire('admin-reports-this-day', ['reports' => $reports]) - @livewire('admin-reports-this-week', ['reports' => $reports]) - @livewire('admin-responds-this-month', ['reports' => $reports]) +
+
+ @livewire('admin-reports-this-day', ['reports' => $reports]) + @livewire('admin-reports-this-week', ['reports' => $reports]) + @livewire('admin-responds-this-month', ['reports' => $reports]) +
+ @livewire('admin-main-table', ['reports' => $reports, 'location' => $location, 'incidents' => $incidents])
-
- {{-- @livewire('admin-latest-reports', ['reports' => $reports]) --}} - {{-- @livewire('admin-types-of-report-by-percent', ['reports' => $reports, 'incidents' => $incidents]) --}} +
+
+ @livewire('admin-latest-reports', ['reports' => $reports]) + @livewire('department-chart', ['departments' => $departments, 'count' => $count, 'sum' => $sum]) +
+
+ @livewire('reports-in-every-location', ['count' => $count, 'incident' => $incident, 'sum' => $sum]) + @livewire('admin-types-of-report-by-percent', ['count' => $count, 'incident' => $incident, 'sum' => $sum]) +
-
- @livewire('admin-main-table', ['reports' => $reports, 'location' => $location, 'incidents' => $incidents])
@livewire('footer')
diff --git a/resources/views/auth/register.blade.php b/resources/views/auth/register.blade.php index e6679b5..e231367 100644 --- a/resources/views/auth/register.blade.php +++ b/resources/views/auth/register.blade.php @@ -11,7 +11,7 @@
- +
@@ -19,6 +19,20 @@
+
+ + +
+ +
+ + +
+
@@ -72,6 +86,48 @@ Register with Google + + + + diff --git a/resources/views/faq.blade.php b/resources/views/faq.blade.php new file mode 100644 index 0000000..fe3bea2 --- /dev/null +++ b/resources/views/faq.blade.php @@ -0,0 +1,65 @@ + +
+ + +
+
+
+

Frequently asked questions

+ +

+ Welcome to our Frequently Asked Questions page for the Incident Reporting System for Don Carlos, Bukidnon. Here, you will find answers to common questions about how to use our website to report incidents, who to contact if you have problems, and what types of incidents can be reported. We understand that reporting incidents can be confusing or difficult, so we have provided this FAQ page to help make the process as simple and straightforward as possible. If you don't find the answer to your question here, please feel free to contact the local authorities at the Municipal Hall of Don Carlos, Bukidnon for further assistance. +

+

+ Didn't find your answer in the FAQ? + Contact + our us at facebook. +

+ +
+ +
+

Q.What is the Incident Reporting System for Don Carlos, Bukidnon?

+

+ A.The Incident Reporting System for Don Carlos, Bukidnon is a website that allows residents and visitors of the municipality to report incidents, such as accidents, crimes, and other emergencies, to the local authorities. +

+ +

Q.How do I report an incident on the website?

+

+ A.To report an incident on the website, simply go to the incident reporting form, fill in the necessary details, such as the location, and description of the incident, and submit the form. +

+ +

+ Q.Who do I contact if I have any problems with the website? +

+

+ A.If you have any problems with the website, such as difficulty accessing the incident reporting form, please contact the local authorities at the Municipal Hall of Don Carlos, Bukidnon. +

+ +

+ Q.What types of incidents can I report on the website? +

+

+ A.The Incident Reporting System for Don Carlos, Bukidnon allows users to report a variety of incidents, including accidents, crimes, and other emergencies. +

+ +

+ Q.Is my personal information kept confidential when I report an incident? +

+

+ A.Yes, your personal information is kept confidential when you report an incident on the website. Only authorized personnel have access to the information reported. +

+ +

+ Q.Is it necessary to upload any attachments when reporting an incident? +

+

+ A.No, it is not necessary to upload any attachments when reporting an incident, but if you have any photos or videos that can help provide more information about the incident, it would be best to upload them. +

+
+
+ + +
+
\ No newline at end of file diff --git a/resources/views/layouts/guest.blade.php b/resources/views/layouts/guest.blade.php index c31bf7c..f2a6072 100644 --- a/resources/views/layouts/guest.blade.php +++ b/resources/views/layouts/guest.blade.php @@ -14,9 +14,73 @@ @vite(['resources/css/app.css', 'resources/js/app.js']) - -
+ +
+ +
+
{{ $slot }}
+ +

+ © 2022-2023 Quick-Respond. All rights reserved. +

\ No newline at end of file diff --git a/resources/views/layouts/portal.blade.php b/resources/views/layouts/portal.blade.php index b7bc5ad..137c160 100644 --- a/resources/views/layouts/portal.blade.php +++ b/resources/views/layouts/portal.blade.php @@ -23,7 +23,7 @@
Logo -

Incident Report

+

Report Incident

@@ -87,22 +87,23 @@ {{-- Button 3 --}} - @role('admin|super-admin') + @role('Admin|Department') + + + @endrole + + {{-- Reports --}} + - @endrole - - {{-- Reports --}} - - - - {{-- User --}} + {{-- User --}} - + {{-- - + --}} + Profile diff --git a/resources/views/livewire/admin/add-incident.blade.php b/resources/views/livewire/admin/add-incident.blade.php index a56beb6..73361ae 100644 --- a/resources/views/livewire/admin/add-incident.blade.php +++ b/resources/views/livewire/admin/add-incident.blade.php @@ -1,4 +1,4 @@ -
+
@@ -9,7 +9,7 @@ {{ __('Add Incident') }} - {{ __('You can Submit a report here. Just make sure to inclue the specific locatiodn, so that our responders can locate the incident quickly') }} + {{ __('Lorem ipsum dolor sit amet consectetur adipisicing elit. Inventore repellendus quod exercitationem doloribus quae quam similique velit eligendi, ratione ducimus ad doloremque veritatis, ab ex modi dicta nam porro assumenda.') }}
@if(session()->has('message-incident')) diff --git a/resources/views/livewire/admin/admin-latest-reports.blade.php b/resources/views/livewire/admin/admin-latest-reports.blade.php index 5890279..c2387a7 100644 --- a/resources/views/livewire/admin/admin-latest-reports.blade.php +++ b/resources/views/livewire/admin/admin-latest-reports.blade.php @@ -1,37 +1,65 @@ -
-
-

Latest Report

- - View all - +
+
+

Incidents Reported This Week

+

Total of reports this week by days

-
- @forelse ($reports as $report) -
    -
  • -
    -
    - {{-- {{ auth()->name }} --}} - -
    -

    - {{ $report->id }} -

    {{$report->created_at->diffForHumans()}}

    -

    -

    - {{ $report->reported_on }} -

    -
    -
    -
  • -
- @empty - - - There Are no reports yet - - - @endforelse +
+
+ + + + + + +
diff --git a/resources/views/livewire/admin/admin-main-table.blade.php b/resources/views/livewire/admin/admin-main-table.blade.php index fffcd00..749f5c0 100644 --- a/resources/views/livewire/admin/admin-main-table.blade.php +++ b/resources/views/livewire/admin/admin-main-table.blade.php @@ -1,9 +1,9 @@ -
-
+
+

Reports

- All reports + All reports
@@ -11,7 +11,7 @@ - +
@@ -22,9 +22,10 @@ - + - + + @@ -54,7 +55,12 @@ +
ID numberReporter ID IncidentDescriptionVictimsSuspects Date Location Specific Location

- {{ $report->description }} + {{ $report->victims }} +

+
+

+ {{ $report->suspects }}

@@ -100,7 +106,7 @@ class="relative inline-block px-3 py-1 font-semibold text-gray-900 leading-tight {{ __('View') }} - @role('super-admin') + @role('Admin') {{ __('Delete') }} @@ -120,9 +126,8 @@ class="relative inline-block px-3 py-1 font-semibold text-gray-900 leading-tight @endforelse
-
- +
+ {{-- Showing 1 to 4 of 50 Entries
@@ -135,7 +140,10 @@ class="text-sm text-indigo-50 transition duration-150 hover:bg-indigo-500 bg-ind class="text-sm text-indigo-50 transition duration-150 hover:bg-indigo-500 bg-indigo-600 font-semibold py-2 px-4 rounded-r"> Next -
+
--}} +
diff --git a/resources/views/livewire/admin/admin-responds-this-month.blade.php b/resources/views/livewire/admin/admin-responds-this-month.blade.php index b3bfdde..0d84536 100644 --- a/resources/views/livewire/admin/admin-responds-this-month.blade.php +++ b/resources/views/livewire/admin/admin-responds-this-month.blade.php @@ -2,7 +2,7 @@
{{ $reports->count() }} -

Responds this Moth

+

Reports this Month

\ No newline at end of file diff --git a/resources/views/livewire/admin/admin-side-panel.blade.php b/resources/views/livewire/admin/admin-side-panel.blade.php index 931e7cc..ff33458 100644 --- a/resources/views/livewire/admin/admin-side-panel.blade.php +++ b/resources/views/livewire/admin/admin-side-panel.blade.php @@ -43,15 +43,15 @@
- + Users - @role('super-admin') - + @role('Admin') + diff --git a/resources/views/livewire/admin/admin-types-of-report-by-percent.blade.php b/resources/views/livewire/admin/admin-types-of-report-by-percent.blade.php index 870280c..aec29af 100644 --- a/resources/views/livewire/admin/admin-types-of-report-by-percent.blade.php +++ b/resources/views/livewire/admin/admin-types-of-report-by-percent.blade.php @@ -1,5 +1,8 @@ -
-

Types of reports by %

+
+
+

Types of Incident Reported by Percent

+

Total of incidents reported by incidents

+
@@ -11,23 +14,23 @@ @php($i = 0) - @forelse (array_unique($incidents) as $incident) + @forelse (array_unique($incident) as $incident) - - @php($i = $i + 1) - @empty + + @php($i = $i + 1) + @empty
{{ $incident[0]->report_name }} {{ $count[$i] }}
- {{ $count[$i] / $sum * 100 }} + {{ $count[$i] / $sum * 100 }}%
-
+
There Are no reports yet diff --git a/resources/views/livewire/admin/assign-departments.blade.php b/resources/views/livewire/admin/assign-departments.blade.php index f943cd7..9669704 100644 --- a/resources/views/livewire/admin/assign-departments.blade.php +++ b/resources/views/livewire/admin/assign-departments.blade.php @@ -1,4 +1,4 @@ -
+
@@ -9,7 +9,7 @@ {{ __('Assign Department') }} - {{ __('You can Submit a report here. Just make sure to inclue the specific locatiodn, so that our responders can locate the incident quickly') }} + {{ __('Lorem ipsum dolor sit amet consectetur adipisicing elit. Inventore repellendus quod exercitationem doloribus quae quam similique velit eligendi, ratione ducimus ad doloremque veritatis, ab ex modi dicta nam porro assumenda.') }}
@if(session()->has('message')) diff --git a/resources/views/livewire/admin/department-chart.blade.php b/resources/views/livewire/admin/department-chart.blade.php new file mode 100644 index 0000000..3923793 --- /dev/null +++ b/resources/views/livewire/admin/department-chart.blade.php @@ -0,0 +1,40 @@ +
+
+

Number of Incidents Reported this week

+

Incidents Reported Per Department

+ Generate PDF +
+
+ +
+
+ + + + + + \ No newline at end of file diff --git a/resources/views/livewire/admin/departments.blade.php b/resources/views/livewire/admin/departments.blade.php index 48e73bc..6a28b9d 100644 --- a/resources/views/livewire/admin/departments.blade.php +++ b/resources/views/livewire/admin/departments.blade.php @@ -9,7 +9,7 @@ {{ __('Add Emergency Department') }} - {{ __('You can Submit a report here. Just make sure to inclue the specific locatiodn, so that our responders can locate the incident quickly') }} + {{ __('Lorem ipsum dolor sit amet consectetur adipisicing elit. Inventore repellendus quod exercitationem doloribus quae quam similique velit eligendi, ratione ducimus ad doloremque veritatis, ab ex modi dicta nam porro assumenda.') }}
@if(session()->has('message-department')) diff --git a/resources/views/livewire/admin/numbers-departmet.blade.php b/resources/views/livewire/admin/numbers-departmet.blade.php index 99f596c..b3398c7 100644 --- a/resources/views/livewire/admin/numbers-departmet.blade.php +++ b/resources/views/livewire/admin/numbers-departmet.blade.php @@ -1,4 +1,4 @@ -
+
@@ -9,7 +9,7 @@ {{ __('Add Emergency Contact Number') }} - {{ __('You can Submit a report here. Just make sure to inclue the specific locatiodn, so that our responders can locate the incident quickly') }} + {{ __('Lorem ipsum dolor sit amet consectetur adipisicing elit. Inventore repellendus quod exercitationem doloribus quae quam similique velit eligendi, ratione ducimus ad doloremque veritatis, ab ex modi dicta nam porro assumenda.') }}
@if(session()->has('message')) @@ -47,7 +47,7 @@
-
+
@error('number')
diff --git a/resources/views/livewire/admin/reports-in-every-location.blade.php b/resources/views/livewire/admin/reports-in-every-location.blade.php new file mode 100644 index 0000000..842fcef --- /dev/null +++ b/resources/views/livewire/admin/reports-in-every-location.blade.php @@ -0,0 +1,44 @@ +
+
+

Types of Incident Reported by Percent

+

Total of incidents reported by incidents

+
+
+ + + + + + + + + + + @php($i = 0) + @forelse (array_unique($incident) as $incident) + + + + + + @php($i = $i + 1) + @empty + + + + @endforelse + +
LocationReports#of Reports% by Reports
{{ $incident[0]->report_name }}{{ $count[$i] }} +
+ {{ $count[$i] / $sum * 100 }}% +
+
+
+
+
+
+
+ There Are no reports yet +
+
+
diff --git a/resources/views/livewire/admin/update-cell-num.blade.php b/resources/views/livewire/admin/update-cell-num.blade.php index 4602d1a..94a7b40 100644 --- a/resources/views/livewire/admin/update-cell-num.blade.php +++ b/resources/views/livewire/admin/update-cell-num.blade.php @@ -7,8 +7,9 @@ {{ __('Add Emergency Contact Number') }} + - {{ __('You can Submit a report here. Just make sure to inclue the specific location, so that our responders can locate the incident quickly') }} + {{ __('Lorem ipsum dolor sit amet consectetur adipisicing elit. Inventore repellendus quod exercitationem doloribus quae quam similique velit eligendi, ratione ducimus ad doloremque veritatis, ab ex modi dicta nam porro assumenda.') }}
@error('department') diff --git a/resources/views/livewire/admin/user-reports-table.blade.php b/resources/views/livewire/admin/user-reports-table.blade.php index a603215..a9a17cf 100644 --- a/resources/views/livewire/admin/user-reports-table.blade.php +++ b/resources/views/livewire/admin/user-reports-table.blade.php @@ -65,7 +65,7 @@ class="relative inline-block px-3 py-1 font-semibold text-gray-900 leading-tight {{ __('View') }} - @role('super-admin') + @role('Admin') {{ __('Delete') }} diff --git a/resources/views/livewire/admin/users-add-role.blade.php b/resources/views/livewire/admin/users-add-role.blade.php index c4cd5c9..478aa59 100644 --- a/resources/views/livewire/admin/users-add-role.blade.php +++ b/resources/views/livewire/admin/users-add-role.blade.php @@ -93,13 +93,13 @@
{{ __('Assign Role') }}
- @role('super-admin') + @role('Admin') - {{ __('Super Admin') }} + {{ __('Admin') }} @endrole - {{ __('Admin') }} + {{ __('Department') }} {{ __('User') }} @@ -133,7 +133,7 @@ {{ __('View') }} - @role('super-admin') + @role('Admin') {{ __('Delete') }} @@ -148,6 +148,9 @@ @endforelse
+
diff --git a/resources/views/livewire/admin/view-report.blade.php b/resources/views/livewire/admin/view-report.blade.php index a42aaf5..8c68f50 100644 --- a/resources/views/livewire/admin/view-report.blade.php +++ b/resources/views/livewire/admin/view-report.blade.php @@ -70,14 +70,16 @@ {{ $reporter[0]->name }}
-
  • - Type of Incident: - {{ $incident[0]->report_name }} -
  • -
  • - Description: - {{ $report->description }} -
  • +
    +
  • + No. of Victim/s: + {{ $report->victims }} +
  • +
  • + No. of Suspect/s: + {{ $report->victims }} +
  • +
  • Location: {{ $location[0]->location_name }} diff --git a/resources/views/livewire/footer.blade.php b/resources/views/livewire/footer.blade.php index cb13024..6618d24 100644 --- a/resources/views/livewire/footer.blade.php +++ b/resources/views/livewire/footer.blade.php @@ -1,37 +1,21 @@

    diff --git a/resources/views/livewire/portal/submit-report.blade.php b/resources/views/livewire/portal/submit-report.blade.php index b2c3588..82bc4e7 100644 --- a/resources/views/livewire/portal/submit-report.blade.php +++ b/resources/views/livewire/portal/submit-report.blade.php @@ -33,8 +33,38 @@ @enderror

    - - + {{-- --}} +
    +
    + + + +
    +
    + + +
    +
    {{-- Selection of where the incident take place --}} @@ -50,7 +80,7 @@ {{-- end of selection of location --}} @@ -78,15 +108,15 @@ @enderror
    -