From a8c7507da69c2ac1ee5f9b8af357dfb40e7c0217 Mon Sep 17 00:00:00 2001 From: Cathryn Li <60448964+cathli66@users.noreply.github.com> Date: Tue, 16 Apr 2024 21:20:25 -0400 Subject: [PATCH 01/12] Splash and Registration UI (#179) * finished besides interests page * finished interests page * skip registration if relog * fix flutter build error * removed dart.ffi import * skip registration for guest, added guest as enrollment type * implemented log out in settings * set guest username in backend based on total num users * Changed logout toast * server build and format fix * fixed guest login bugs * fixed server format * fixed page navigation upon login and logout * LOL * Fix user tests * Fixed failing user tests --------- Co-authored-by: Cathryn Li Co-authored-by: Brian La Co-authored-by: neketka --- admin/src/all.dto.ts | 6 +- game/assets/icons/back.svg | 5 + game/assets/icons/dropdown.svg | 3 + game/assets/images/details_progress.svg | 6 + game/assets/images/interests_progress.svg | 6 + game/assets/images/register_progress.svg | 6 + game/assets/images/splash.svg | 99 ++++++++ game/lib/api/game_api.dart | 2 + game/lib/api/game_client_dto.dart | 2 + game/lib/challenges/challenge_cell.dart | 2 - game/lib/details_page/details_page.dart | 257 ++++++++++++++------- game/lib/details_page/dropdown_widget.dart | 93 ++++++++ game/lib/interests/interests_page.dart | 165 +++++++++++++ game/lib/main.dart | 7 +- game/lib/profile/settings_page.dart | 13 +- game/lib/register_page/register_page.dart | 77 +++--- game/lib/splash_page/splash_page.dart | 106 +++++---- game/pubspec.yaml | 1 + server/prisma/schema.prisma | 3 +- server/src/auth/auth.service.ts | 11 +- server/src/auth/login.dto.ts | 2 +- server/src/user/user.dto.ts | 7 +- server/src/user/user.e2e-spec.ts | 30 +-- server/src/user/user.service.ts | 10 +- 24 files changed, 726 insertions(+), 193 deletions(-) create mode 100644 game/assets/icons/back.svg create mode 100644 game/assets/icons/dropdown.svg create mode 100644 game/assets/images/details_progress.svg create mode 100644 game/assets/images/interests_progress.svg create mode 100644 game/assets/images/register_progress.svg create mode 100644 game/assets/images/splash.svg create mode 100644 game/lib/details_page/dropdown_widget.dart create mode 100644 game/lib/interests/interests_page.dart diff --git a/admin/src/all.dto.ts b/admin/src/all.dto.ts index 65836e9b..1f7ae812 100644 --- a/admin/src/all.dto.ts +++ b/admin/src/all.dto.ts @@ -39,7 +39,8 @@ type LoginEnrollmentTypeDto = | "UNDERGRADUATE" | "GRADUATE" | "FACULTY" - | "ALUMNI"; + | "ALUMNI" + | "GUEST"; type EventTimeLimitationDto = "LIMITED_TIME" | "PERPETUAL"; @@ -51,7 +52,8 @@ type UserEnrollmentTypeDto = | "UNDERGRADUATE" | "GRADUATE" | "FACULTY" - | "ALUMNI"; + | "ALUMNI" + | "GUEST"; type UserAuthTypeDto = "apple" | "google" | "device"; diff --git a/game/assets/icons/back.svg b/game/assets/icons/back.svg new file mode 100644 index 00000000..a3e50405 --- /dev/null +++ b/game/assets/icons/back.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/game/assets/icons/dropdown.svg b/game/assets/icons/dropdown.svg new file mode 100644 index 00000000..44bf2d82 --- /dev/null +++ b/game/assets/icons/dropdown.svg @@ -0,0 +1,3 @@ + + + diff --git a/game/assets/images/details_progress.svg b/game/assets/images/details_progress.svg new file mode 100644 index 00000000..f1f3f3f1 --- /dev/null +++ b/game/assets/images/details_progress.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/game/assets/images/interests_progress.svg b/game/assets/images/interests_progress.svg new file mode 100644 index 00000000..b237a880 --- /dev/null +++ b/game/assets/images/interests_progress.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/game/assets/images/register_progress.svg b/game/assets/images/register_progress.svg new file mode 100644 index 00000000..8ae90f87 --- /dev/null +++ b/game/assets/images/register_progress.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/game/assets/images/splash.svg b/game/assets/images/splash.svg new file mode 100644 index 00000000..b06bd61f --- /dev/null +++ b/game/assets/images/splash.svg @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/game/lib/api/game_api.dart b/game/lib/api/game_api.dart index 79608070..e60a4a3f 100644 --- a/game/lib/api/game_api.dart +++ b/game/lib/api/game_api.dart @@ -161,6 +161,8 @@ class ApiClient extends ChangeNotifier { await _saveToken(); _createSocket(false); return loginResponse; + } else { + print(loginResponse.body); } authenticated = false; _clientApi.disconnectedController.add(null); diff --git a/game/lib/api/game_client_dto.dart b/game/lib/api/game_client_dto.dart index 6fa0d6aa..dfef024d 100644 --- a/game/lib/api/game_client_dto.dart +++ b/game/lib/api/game_client_dto.dart @@ -48,6 +48,7 @@ enum LoginEnrollmentTypeDto { GRADUATE, FACULTY, ALUMNI, + GUEST, } enum EventTimeLimitationDto { @@ -71,6 +72,7 @@ enum UserEnrollmentTypeDto { GRADUATE, FACULTY, ALUMNI, + GUEST, } enum UserAuthTypeDto { diff --git a/game/lib/challenges/challenge_cell.dart b/game/lib/challenges/challenge_cell.dart index b10b80eb..74b84045 100644 --- a/game/lib/challenges/challenge_cell.dart +++ b/game/lib/challenges/challenge_cell.dart @@ -1,8 +1,6 @@ import 'package:flutter/material.dart'; import 'package:game/preview/preview.dart'; -/** ChallengeCell was formerly named ChallengeCellNew. -*/ class ChallengeCell extends StatefulWidget { final String location; final String challengeName; diff --git a/game/lib/details_page/details_page.dart b/game/lib/details_page/details_page.dart index a410dc13..8f5549b2 100644 --- a/game/lib/details_page/details_page.dart +++ b/game/lib/details_page/details_page.dart @@ -1,8 +1,15 @@ import 'package:flutter/material.dart'; +import 'package:flutter/widgets.dart'; +import 'package:game/journeys/journeys_page.dart'; import 'package:game/main.dart'; import 'package:game/navigation_page/bottom_navbar.dart'; +import 'package:game/interests/interests_page.dart'; import 'package:google_sign_in/google_sign_in.dart'; import 'package:game/utils/utility_functions.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:game/details_page/dropdown_widget.dart'; + +import 'package:velocity_x/velocity_x.dart'; class DetailsPageWidget extends StatefulWidget { DetailsPageWidget( @@ -15,13 +22,14 @@ class DetailsPageWidget extends StatefulWidget { final String userType; final String? idToken; final GoogleSignInAccount? user; + @override _DetailsPageWidgetState createState() => _DetailsPageWidgetState(); } class _DetailsPageWidgetState extends State { - String _year = "2025"; String _name = ""; + String? _college = "Arts and Sciences"; GoogleSignInAccount? user = null; @override void initState() { @@ -30,34 +38,121 @@ class _DetailsPageWidgetState extends State { final _formKey = GlobalKey(); - List _years = ["2025"]; + DropdownWidget collegeDropdown = + DropdownWidget(null, null, notifyParent: (val) {}); + + List _colleges = [ + "Agriculture and Life Sciences", + "Architecture, Art and Planning", + "Arts and Sciences", + "Business", + // "Computing and Information Science", + "Engineering", + "Human Ecology", + "Industrial and Labor Relations (ILR)", + "Public Policy", + "Cornell Tech", + "Law School", + // "Veterinary Medicine", + // "Weill Cornell Medicine" + ]; + + DropdownWidget yearDropdown = + DropdownWidget(null, null, notifyParent: (val) {}); + + List _years = ["2024", "2025", "2026", "2027"]; + + DropdownWidget majorDropdown = + DropdownWidget(null, null, notifyParent: (val) {}); + + Map> _majors = { + "Agriculture and Life Sciences": [], + "Architecture, Art and Planning": [], + "Business": [], + "Engineering": [ + "Computer Science", + "Information Science", + "Chemical Engineering" + ], + "Arts and Sciences": [ + "Computer Science", + "Mathematics", + "Chemistry", + "Biology", + "Psychology" + ], + "Human Ecology": [], + "Industrial and Labor Relations (ILR)": [], + "Public Policy": [], + "Cornell Tech": [], + "Law School": [], + }; @override Widget build(BuildContext context) { return Scaffold( backgroundColor: Colors.white, body: Padding( - padding: const EdgeInsets.only(left: 16, right: 16, top: 50), + padding: const EdgeInsets.only(left: 25, right: 25, top: 50), child: Form( key: _formKey, child: Column( - crossAxisAlignment: CrossAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.start, children: [ + SvgPicture.asset("assets/icons/back.svg"), + SvgPicture.asset("assets/images/details_progress.svg"), + SizedBox(height: 40.0), Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - LatoText("Name", 18, Colors.black, FontWeight.w700), - SizedBox(height: 10), + Text("Username*", + style: TextStyle( + fontSize: 18, + fontWeight: FontWeight.w700, + )), TextFormField( + onChanged: (newValue) => setState(() { + _name = newValue; + }), decoration: const InputDecoration( - border: OutlineInputBorder(), - labelText: 'e.g. Jane Doe', + contentPadding: EdgeInsets.only( + left: 20.0, right: 20.0, top: 10, bottom: 10), + labelStyle: TextStyle( + color: Color.fromARGB(51, 0, 0, 0), + fontWeight: FontWeight.w400), + labelText: 'e.g. CornellianLover123', + enabledBorder: OutlineInputBorder( + borderSide: BorderSide( + color: Color.fromARGB(51, 0, 0, 0), width: 1.5), + borderRadius: + BorderRadius.all(Radius.circular(10.0))), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.all(Radius.circular(10.0)), + borderSide: BorderSide( + color: Color.fromARGB(255, 255, 170, 91), + width: 1.5, + ), + ), + errorBorder: OutlineInputBorder( + borderRadius: BorderRadius.all(Radius.circular(10.0)), + borderSide: BorderSide( + color: Color.fromARGB(153, 233, 87, 85), + width: 1.5, + ), + ), + focusedErrorBorder: OutlineInputBorder( + borderRadius: BorderRadius.all(Radius.circular(10.0)), + borderSide: BorderSide( + color: Color.fromARGB(153, 233, 87, 85), + width: 1.5, + ), + ), ), // The validator receives the text that the user has entered. validator: (value) { if (value == null || value.isEmpty) { - return 'Please enter some text'; + return 'Please enter your username'; } return null; }, @@ -68,102 +163,90 @@ class _DetailsPageWidgetState extends State { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - LatoText("Username", 18, Colors.black, FontWeight.w700), - SizedBox(height: 10), - TextFormField( - onChanged: (newValue) => setState(() { - _name = newValue; - }), - decoration: const InputDecoration( - border: OutlineInputBorder(), - labelText: 'e.g. JaneDoe123', - ), - - // The validator receives the text that the user has entered. - validator: (value) { - if (value == null || value.isEmpty) { - return 'Please enter some text'; - } - return null; + Text("College", + style: TextStyle( + fontSize: 18, + fontWeight: FontWeight.w700, + )), + collegeDropdown = DropdownWidget( + null, + _colleges, + notifyParent: (val) => { + setState(() { + _college = val; + }) }, - ), + ) ], ), SizedBox(height: 20), Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - LatoText("Graduation Year (optional)", 18, Colors.black, - FontWeight.w700), - SizedBox(height: 10), - SizedBox( - width: 255, - child: DropdownButton( - isExpanded: true, - value: _year, - onChanged: (newValue) { - setState(() { - _year = newValue.toString(); - }); - }, - items: _years.map((year) { - return DropdownMenuItem( - child: Container( - width: 255, - height: 53, - child: Align( - alignment: Alignment.centerLeft, - child: LatoText(year, 16.0, Colors.black, - FontWeight.w600), - )), - value: year, - ); - }).toList(), - ), + Text("Major", + style: TextStyle( + fontSize: 18, + fontWeight: FontWeight.w700, + )), + majorDropdown = DropdownWidget( + null, + _college == null ? null : _majors[_college], + notifyParent: (val) {}, ) ], ), - ElevatedButton( + SizedBox(height: 20), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text("Graduation Year", + style: TextStyle( + fontSize: 18, + fontWeight: FontWeight.w700, + )), + yearDropdown = DropdownWidget( + null, + _years, + notifyParent: (val) {}, + ) + ], + ), + SizedBox(height: 150.0), + TextButton( onPressed: () async { if (_formKey.currentState!.validate()) { - assert(widget.user != null || widget.idToken != null); - final auth = await widget.user?.authentication; - final idToken = - widget.user != null ? auth?.idToken : widget.idToken; - final endpoint_string = API_URL + - (widget.user != null ? "/google" : "/device-login"); - final connectionResult = await client.connect( - idToken!, - Uri.parse(endpoint_string), - this.widget.userType, - _year, - _name); - - if (connectionResult == null) { - displayToast("An error occurred while signing you up!", - Status.error); - } else { - //Connect to home page here. - print("Connection result:"); - print(connectionResult.body); - displayToast("Signed in!", Status.success); - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => BottomNavBar())); - } + Navigator.of(context).push( + MaterialPageRoute( + builder: (context) => InterestsPageWidget( + userType: widget.userType, + user: widget.user, + idToken: widget.idToken, + username: _name, + college: collegeDropdown.value, + major: majorDropdown.value, + year: yearDropdown.value, + ), + ), + ); } }, style: ButtonStyle( - backgroundColor: - MaterialStatePropertyAll(Colors.black)), + shape: MaterialStatePropertyAll( + RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10.0))), + backgroundColor: MaterialStatePropertyAll( + Color.fromARGB(255, 233, 87, 85))), child: Container( - width: 255, - height: 53, + width: 345, + height: 50, child: Align( alignment: Alignment.center, - child: LatoText( - "Continue", 16.0, Colors.white, FontWeight.w600), + child: Text("Continue", + style: TextStyle( + color: Colors.white, + fontSize: 16, + fontWeight: FontWeight.w600, + )), )), ), ], diff --git a/game/lib/details_page/dropdown_widget.dart b/game/lib/details_page/dropdown_widget.dart new file mode 100644 index 00000000..4bd3655a --- /dev/null +++ b/game/lib/details_page/dropdown_widget.dart @@ -0,0 +1,93 @@ +import 'package:flutter/material.dart'; +import 'package:dropdown_button2/dropdown_button2.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'dart:math' as math; + +import 'package:velocity_x/velocity_x.dart'; + +class DropdownWidget extends StatefulWidget { + final String? value; + final List? menuOptions; + + final Function(String? val) notifyParent; + + const DropdownWidget(this.value, this.menuOptions, + {Key? key, required this.notifyParent}) + : super(key: key); + + @override + State createState() => + _DropdownWidgetState(value, menuOptions); +} + +class _DropdownWidgetState extends State { + String? value; + List? menuOptions; + + _DropdownWidgetState(this.value, this.menuOptions); + + @override + Widget build(BuildContext context) { + return DropdownButtonHideUnderline( + child: DropdownButton2( + isExpanded: true, + dropdownStyleData: DropdownStyleData( + maxHeight: 200, + offset: Offset.fromDirection(math.pi / 2, -10), + decoration: BoxDecoration( + color: Colors.white, + boxShadow: List.empty(), + borderRadius: BorderRadius.circular(10), + border: Border.all( + color: Color.fromARGB(77, 0, 0, 0), width: 1.5))), + iconStyleData: IconStyleData( + icon: Padding( + padding: const EdgeInsets.only(right: 20.0), + child: SvgPicture.asset("assets/icons/dropdown.svg"), + )), + buttonStyleData: ButtonStyleData( + decoration: BoxDecoration( + border: Border.all( + width: 2.0, color: Color.fromARGB(255, 217, 217, 217)), + borderRadius: BorderRadius.circular(10.0)), + ), + style: TextStyle( + color: Color.fromARGB(77, 0, 0, 0), fontWeight: FontWeight.w400), + value: value, + onChanged: (newValue) { + setState(() { + value = newValue.toString(); + }); + widget.notifyParent(value); + }, + hint: Text( + "Select one", + style: TextStyle( + color: Color.fromARGB(77, 0, 0, 0), + fontWeight: FontWeight.w400, + fontFamily: 'Poppins', + fontSize: 16), + ), + // items: _college == null + // ? null + // : _majors[_college]!.mapIndexed((major, idx) { + items: menuOptions == null + ? null + : menuOptions!.mapIndexed((item, idx) { + return DropdownMenuItem( + child: Align( + alignment: Alignment.centerLeft, + child: Text(item, + style: TextStyle( + fontFamily: 'Poppins', + color: Color.fromARGB(255, 0, 0, 0), + fontSize: 16, + fontWeight: FontWeight.w400)), + ), + value: item, + ); + }).toList(), + ), + ); + } +} diff --git a/game/lib/interests/interests_page.dart b/game/lib/interests/interests_page.dart new file mode 100644 index 00000000..ed03eb88 --- /dev/null +++ b/game/lib/interests/interests_page.dart @@ -0,0 +1,165 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/widgets.dart'; +import 'package:game/journeys/journeys_page.dart'; +import 'package:game/main.dart'; +import 'package:game/navigation_page/bottom_navbar.dart'; +import 'package:google_sign_in/google_sign_in.dart'; +import 'package:game/utils/utility_functions.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:dropdown_button2/dropdown_button2.dart'; + +class InterestsPageWidget extends StatefulWidget { + InterestsPageWidget( + {Key? key, + required String this.userType, + required String? this.idToken, + required GoogleSignInAccount? this.user, + required String this.username, + required String? this.college, + required String? this.major, + required String? this.year}) + : super(key: key); + final scaffoldKey = GlobalKey(); + final String userType; + final String? idToken; + final GoogleSignInAccount? user; + final String username; + final String? college; + final String? major; + final String? year; + @override + _InterestsPageWidgetState createState() => _InterestsPageWidgetState(); +} + +class _InterestsPageWidgetState extends State { + GoogleSignInAccount? user = null; + @override + void initState() { + super.initState(); + } + + List _categories = ["Food", "Nature", "History", "Cafes", "Dorms"]; + + List _checked = [false, false, false, false, false, false]; + + final _formKey = GlobalKey(); + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: Colors.white, + body: Padding( + padding: const EdgeInsets.only(left: 25, right: 25, top: 50), + child: Form( + key: _formKey, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SvgPicture.asset("assets/icons/back.svg"), + SvgPicture.asset("assets/images/interests_progress.svg"), + SizedBox(height: 40.0), + Text("What are your interests?", + style: TextStyle( + color: Color.fromARGB(255, 71, 71, 71), + fontSize: 24, + fontWeight: FontWeight.w900, + )), + Text("Select one or more categories below.", + style: TextStyle( + color: Color.fromARGB(255, 186, 186, 186), + fontSize: 14, + fontWeight: FontWeight.w400, + )), + for (int i = 0; i < _categories.length; i++) + Padding( + padding: const EdgeInsets.only(top: 20.0), + child: CheckboxListTile( + title: Text(_categories[i], + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w500, + )), + value: _checked[i], + controlAffinity: ListTileControlAffinity.leading, + tileColor: _checked[i] + ? Color.fromARGB(77, 255, 170, 91) + : Colors.white, + fillColor: MaterialStateProperty.all(_checked[i] + ? Colors.white + : Color.fromARGB(25, 0, 0, 0)), + checkColor: Color.fromARGB(255, 110, 74, 40), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8), + side: BorderSide( + width: 2, + color: _checked[i] + ? Color.fromARGB(255, 255, 170, 91) + : Color.fromARGB(255, 228, 228, 228)), + ), + checkboxShape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(2), + ), + side: BorderSide.none, + onChanged: (newValue) { + setState(() { + _checked[i] = newValue!; + }); + }), + ), + SizedBox(height: 75.0), + TextButton( + onPressed: () async { + if (_formKey.currentState!.validate()) { + assert(widget.user != null || widget.idToken != null); + final auth = await widget.user?.authentication; + final idToken = + widget.user != null ? auth?.idToken : widget.idToken; + final endpoint_string = API_URL + + (widget.user != null ? "/google" : "/device-login"); + final connectionResult = await client.connect( + idToken!, + Uri.parse(endpoint_string), + this.widget.userType, + this.widget.year ?? "", + this.widget.username); + + if (connectionResult == null) { + displayToast("An error occurred while signing you up!", + Status.error); + } else { + //Connect to home page here. + print("Connection result:"); + print(connectionResult.body); + displayToast("Signed in!", Status.success); + Navigator.pushReplacement( + context, + MaterialPageRoute( + builder: (context) => BottomNavBar())); + } + } + }, + style: ButtonStyle( + shape: MaterialStatePropertyAll( + RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10.0))), + backgroundColor: MaterialStatePropertyAll( + Color.fromARGB(255, 233, 87, 85))), + child: Container( + width: 345, + height: 50, + child: Align( + alignment: Alignment.center, + child: Text("Continue", + style: TextStyle( + color: Colors.white, + fontSize: 16, + fontWeight: FontWeight.w600, + )), + )), + ), + ], + ), + )), + ); + } +} diff --git a/game/lib/main.dart b/game/lib/main.dart index 6d506f0f..8fd3ad56 100644 --- a/game/lib/main.dart +++ b/game/lib/main.dart @@ -25,6 +25,7 @@ import 'package:game/profile/completed_cell.dart'; import 'package:game/profile/profile_page.dart'; import 'package:game/profile/settings_page.dart'; import 'package:game/register_page/register_page.dart'; +import 'package:game/navigation_page/bottom_navbar.dart'; import 'package:game/splash_page/splash_page.dart'; import 'package:game/widget/game_widget.dart'; import 'package:provider/provider.dart'; @@ -121,7 +122,11 @@ class MyApp extends StatelessWidget { supportedLocales: const [Locale('en', '')], theme: ThemeData( fontFamily: 'Poppins', primarySwatch: ColorPalette.BigRed), - home: SplashPageWidget(), + home: StreamBuilder( + stream: Stream.fromFuture(client.tryRelog()), + builder: (stream, snapshot) => (snapshot.data == null) + ? Container() + : (snapshot.data! ? BottomNavBar() : SplashPageWidget())), ))); } } diff --git a/game/lib/profile/settings_page.dart b/game/lib/profile/settings_page.dart index e9041109..4ece1965 100644 --- a/game/lib/profile/settings_page.dart +++ b/game/lib/profile/settings_page.dart @@ -1,5 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; +import 'package:game/utils/utility_functions.dart'; +import 'package:game/main.dart'; +import 'package:game/splash_page/splash_page.dart'; class SettingsPage extends StatelessWidget { const SettingsPage({super.key}); @@ -144,7 +147,15 @@ class SettingsPage extends StatelessWidget { ), ), child: TextButton( - onPressed: () {}, + onPressed: () async => { + await client.disconnect(), + Navigator.pop(context), + Navigator.pushReplacement( + context, + MaterialPageRoute( + builder: (context) => SplashPageWidget())), + displayToast("Signed out", Status.success) + }, style: TextButton.styleFrom( padding: EdgeInsets.only(left: 20.0), alignment: Alignment.centerLeft, diff --git a/game/lib/register_page/register_page.dart b/game/lib/register_page/register_page.dart index 819452fd..cc80d5fe 100644 --- a/game/lib/register_page/register_page.dart +++ b/game/lib/register_page/register_page.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:game/details_page/details_page.dart'; -import 'package:game/widget/lato_text.dart'; import 'package:google_sign_in/google_sign_in.dart'; +import 'package:flutter_svg/flutter_svg.dart'; class RegisterPageWidget extends StatefulWidget { GoogleSignInAccount? user = null; @@ -43,25 +43,38 @@ class _RegisterPageWidgetState extends State { return Scaffold( backgroundColor: Colors.white, body: Padding( - padding: const EdgeInsets.only(top: 50.0), + padding: const EdgeInsets.only(top: 50.0, left: 25, right: 25), child: Column( - crossAxisAlignment: CrossAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - Row( - children: [ - LatoText("Who are you", 24, Colors.black, FontWeight.w700) - ], - mainAxisAlignment: MainAxisAlignment.center, - ), + SvgPicture.asset("assets/icons/back.svg"), + SvgPicture.asset("assets/images/register_progress.svg"), + SizedBox(height: 40.0), + Text("Who are you?", + style: TextStyle( + color: Color.fromARGB(255, 71, 71, 71), + fontSize: 24, + fontWeight: FontWeight.w900, + )), + SizedBox(height: 20.0), Column( children: identityOptions.map((entry) { return Padding( padding: const EdgeInsets.only(top: 20.0), - child: ElevatedButton( + child: TextButton( style: ButtonStyle( + shape: MaterialStatePropertyAll( + RoundedRectangleBorder( + side: BorderSide( + width: 2.0, + color: entry == _selectedOption + ? Color.fromARGB(255, 255, 170, 91) + : Color.fromARGB(255, 217, 217, 217)), + borderRadius: BorderRadius.circular(10.0))), backgroundColor: entry == _selectedOption - ? MaterialStatePropertyAll(Colors.black) + ? MaterialStatePropertyAll( + Color.fromARGB(102, 255, 170, 91)) : MaterialStatePropertyAll(Colors.white)), onPressed: () => { setState(() { @@ -69,35 +82,39 @@ class _RegisterPageWidgetState extends State { }) }, child: Container( - width: 255, - height: 53, + width: 345, + height: 50, child: Align( alignment: Alignment.center, - child: LatoText( - entry, - 16.0, - entry != _selectedOption - ? Colors.black - : Colors.white, - FontWeight.w600), + child: Text(entry, + style: TextStyle( + color: Colors.black, + fontSize: 16, + fontWeight: FontWeight.w500, + )), ), )), ); }).toList()), - SizedBox( - height: 100, - ), - ElevatedButton( + SizedBox(height: 150.0), + TextButton( style: ButtonStyle( - backgroundColor: - MaterialStatePropertyAll(Colors.black)), + shape: MaterialStatePropertyAll( + RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10.0))), + backgroundColor: MaterialStatePropertyAll( + Color.fromARGB(255, 233, 87, 85))), child: Container( - width: 255, - height: 53, + width: 345, + height: 50, child: Align( alignment: Alignment.center, - child: LatoText( - "Continue", 16.0, Colors.white, FontWeight.w600), + child: Text("Continue", + style: TextStyle( + color: Colors.white, + fontSize: 16, + fontWeight: FontWeight.w600, + )), )), onPressed: () { print(widget.user); diff --git a/game/lib/splash_page/splash_page.dart b/game/lib/splash_page/splash_page.dart index 071e9f54..66831d4d 100644 --- a/game/lib/splash_page/splash_page.dart +++ b/game/lib/splash_page/splash_page.dart @@ -1,9 +1,12 @@ import 'package:flutter/material.dart'; import 'package:google_sign_in/google_sign_in.dart'; +import 'package:game/main.dart'; import 'package:provider/provider.dart'; import 'package:game/api/game_api.dart'; import 'package:game/utils/utility_functions.dart'; import 'package:game/register_page/register_page.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:game/navigation_page/bottom_navbar.dart'; class SplashPageWidget extends StatelessWidget { SplashPageWidget({Key? key}) : super(key: key); @@ -13,34 +16,31 @@ class SplashPageWidget extends StatelessWidget { return Scaffold( backgroundColor: Colors.white, body: Stack( + fit: StackFit.expand, children: [ Positioned( - left: 0, - top: -50, - height: 200, - width: 200, - child: Container( - height: 200, - width: 200, - decoration: BoxDecoration( - image: DecorationImage( - image: AssetImage("assets/images/splash_top.png")))), + left: -5, + top: -5, + child: SvgPicture.asset( + 'assets/images/splash.svg', + width: MediaQuery.of(context).size.width + 10, + ), ), Column( crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.end, children: [ - LatoText("CornellGo", 60.0, Colors.black, FontWeight.w700), - SizedBox(height: 75), - LatoText( - "Login to CornellGo", 20.0, Colors.black, FontWeight.w600), - SizedBox(height: 32.5), Consumer( builder: (context, apiClient, child) { - return ElevatedButton( + return TextButton( style: ButtonStyle( backgroundColor: - MaterialStatePropertyAll(Colors.white)), + MaterialStatePropertyAll(Colors.white), + fixedSize: + MaterialStatePropertyAll(Size(250, 50)), + shape: MaterialStatePropertyAll( + RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10.0)))), onPressed: () async { final GoogleSignInAccount? account = await apiClient.connectGoogle(); @@ -61,8 +61,11 @@ class SplashPageWidget extends StatelessWidget { height: 50, child: Align( alignment: Alignment.center, - child: LatoText("Continue with Google", 16.0, - Colors.black, FontWeight.w600), + child: Text("Cornell Login", + style: TextStyle( + color: Color.fromARGB(255, 93, 100, 112), + fontSize: 20, + fontWeight: FontWeight.w500)), ), ), ); @@ -71,51 +74,62 @@ class SplashPageWidget extends StatelessWidget { SizedBox(height: 16), Row(children: [ SizedBox(width: 69), - Expanded(child: Divider()), + Expanded( + child: Divider( + color: Colors.white, + )), SizedBox(width: 8), - LatoText("OR", 14.0, Colors.black, FontWeight.w600), + LatoText("OR", 14.0, Colors.white, FontWeight.w600), SizedBox(width: 8), - Expanded(child: Divider()), + Expanded(child: Divider(color: Colors.white)), SizedBox(width: 69), ]), SizedBox(height: 16), - ElevatedButton( + TextButton( style: ButtonStyle( backgroundColor: - MaterialStatePropertyAll(Colors.white)), + MaterialStatePropertyAll(Colors.white), + fixedSize: + MaterialStatePropertyAll(Size(250, 50)), + shape: MaterialStatePropertyAll( + RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10.0)))), onPressed: () async { final String? id = await getId(); print("GOT ID"); print(id); - Navigator.of(context).push( - MaterialPageRoute( - builder: (context) => - RegisterPageWidget(user: null, idToken: id), - ), - ); + final endpoint_string = API_URL + "/device-login"; + final connectionResult = await client.connect( + id!, Uri.parse(endpoint_string), "GUEST", "", ""); + + if (connectionResult == null) { + displayToast("An error occurred while signing you up!", + Status.error); + } else { + //Connect to home page here. + print("Connection result:"); + print(connectionResult.body); + displayToast("Signed in!", Status.success); + Navigator.pushReplacement( + context, + MaterialPageRoute( + builder: (context) => BottomNavBar())); + } }, child: Container( width: 255, height: 53, child: Align( alignment: Alignment.center, - child: LatoText("Continue as guest", 16.0, Colors.black, - FontWeight.w600), + child: Text("Continue as Guest", + style: TextStyle( + color: Color.fromARGB(255, 93, 100, 112), + fontSize: 20, + fontWeight: FontWeight.w500)), ), - )) + )), + SizedBox(height: 80), ]), - Positioned( - right: 0, - bottom: -60, - height: 200, - width: 200, - child: Container( - height: 200, - width: 200, - decoration: BoxDecoration( - image: DecorationImage( - image: AssetImage("assets/images/splash_bottom.png")))), - ) ], ), ); diff --git a/game/pubspec.yaml b/game/pubspec.yaml index 8f79de14..e88c2163 100644 --- a/game/pubspec.yaml +++ b/game/pubspec.yaml @@ -55,6 +55,7 @@ dependencies: google_maps_flutter_platform_interface: ^2.4.3 location: ^5.0.0 flutter_config: ^2.0.2 + dropdown_button2: ^2.3.9 carousel_slider: ^4.0.0 tuple: ^2.0.2 diff --git a/server/prisma/schema.prisma b/server/prisma/schema.prisma index 793d85f6..c617029d 100644 --- a/server/prisma/schema.prisma +++ b/server/prisma/schema.prisma @@ -24,6 +24,7 @@ enum EnrollmentType { GRADUATE FACULTY ALUMNI + GUEST } enum LocationType { @@ -77,7 +78,7 @@ model User { createdAt DateTime @default(now()) updatedAt DateTime @updatedAt() subject String @default("User") - authToken String + authToken String @unique authType AuthType username String year String diff --git a/server/src/auth/auth.service.ts b/server/src/auth/auth.service.ts index 1b47ef61..89791071 100644 --- a/server/src/auth/auth.service.ts +++ b/server/src/auth/auth.service.ts @@ -126,11 +126,11 @@ export class AuthService { let user = await this.userService.byAuth(authType, idToken.id); const isDevWhileDevice = process.env.DEVELOPMENT === 'true' || authType !== AuthType.DEVICE; - if (!user && req.username && req.year) { + if (!user) { user = await this.userService.register( idToken.email, - req.username, - req.year, + req.username ?? '', + req.year ?? '', req.lat, req.long, authType, @@ -139,7 +139,10 @@ export class AuthService { ); } - if (!user) return null; + if (!user) { + console.log('Unable to register user'); + return null; + } if (user.isBanned) return null; diff --git a/server/src/auth/login.dto.ts b/server/src/auth/login.dto.ts index 3e1fe5fe..6b2a15cd 100644 --- a/server/src/auth/login.dto.ts +++ b/server/src/auth/login.dto.ts @@ -9,5 +9,5 @@ export interface LoginDto { username?: string; year?: string; aud?: 'android' | 'ios' | 'web'; - enrollmentType: 'UNDERGRADUATE' | 'GRADUATE' | 'FACULTY' | 'ALUMNI'; + enrollmentType: 'UNDERGRADUATE' | 'GRADUATE' | 'FACULTY' | 'ALUMNI' | 'GUEST'; } diff --git a/server/src/user/user.dto.ts b/server/src/user/user.dto.ts index efb54145..896b595f 100644 --- a/server/src/user/user.dto.ts +++ b/server/src/user/user.dto.ts @@ -58,7 +58,12 @@ export type UserAuthTypeDto = 'device' | 'apple' | 'google'; export interface UserDto { id: string; username?: string; - enrollmentType?: 'UNDERGRADUATE' | 'GRADUATE' | 'FACULTY' | 'ALUMNI'; + enrollmentType?: + | 'UNDERGRADUATE' + | 'GRADUATE' + | 'FACULTY' + | 'ALUMNI' + | 'GUEST'; email?: string; year?: string; score?: number; diff --git a/server/src/user/user.e2e-spec.ts b/server/src/user/user.e2e-spec.ts index d04061c9..62c6fe31 100644 --- a/server/src/user/user.e2e-spec.ts +++ b/server/src/user/user.e2e-spec.ts @@ -34,18 +34,18 @@ describe('UserModule E2E', () => { await userService.register( 'test1@example.com', - 'test1', - '2024', + '', + '', 1, 1, AuthType.DEVICE, - 'abcd', + 'auth1', 'UNDERGRADUATE', ); - const user = await userService.byAuth(AuthType.DEVICE, 'abcd'); + const user = await userService.byAuth(AuthType.DEVICE, 'auth1'); expect(user).toBeDefined(); - expect(user?.username).toEqual('test1'); + expect(user?.username).toContain('guest'); }); it(`should properly delete user`, async () => { @@ -53,16 +53,16 @@ describe('UserModule E2E', () => { await userService.register( 'test2@example.com', - 'test2', - '2024', + '', + '', 1, 1, AuthType.DEVICE, - 'abcde', + 'auth2', 'UNDERGRADUATE', ); - const user = await userService.byAuth(AuthType.DEVICE, 'abcde'); + const user = await userService.byAuth(AuthType.DEVICE, 'auth2'); expect(user).toBeDefined(); await userService.deleteUser(fullAbility, user!); expect(user).toBeNull; @@ -72,23 +72,23 @@ describe('UserModule E2E', () => { const userSer = moduleRef.get(UserService); await userSer.register( 'test4@example.com', - 'test4', - '2024', + '23e21e', + '23dwe', 1, 1, AuthType.DEVICE, - 'abcdefg', + 'auth3', 'UNDERGRADUATE', ); let oldList = await userSer.getAllUserData(); await userSer.register( 'test4@example.com', - 'test4', - '2024', + 'wefwef', + 'wef324f', 1, 1, AuthType.DEVICE, - 'abcdefg', + 'auth4', 'UNDERGRADUATE', ); let newList = await userSer.getAllUserData(); diff --git a/server/src/user/user.service.ts b/server/src/user/user.service.ts index b5e54fa4..ba6970c3 100644 --- a/server/src/user/user.service.ts +++ b/server/src/user/user.service.ts @@ -59,7 +59,13 @@ export class UserService { authToken: string, enrollmentType: EnrollmentType, ) { - if (username == null) username = email?.split('@')[0]; + if (username == null && authType == AuthType.GOOGLE) { + username = email?.split('@')[0]; + } else if (authType == AuthType.DEVICE) { + const count = await this.prisma.user.count(); + username = 'guest' + count; + } + const defOrg = await this.orgService.getDefaultOrganization( authType == AuthType.GOOGLE ? OrganizationSpecialUsage.CORNELL_LOGIN @@ -92,7 +98,7 @@ export class UserService { }); await this.eventsService.createDefaultEventTracker(user, lat, long); - console.log(`User ${user.id} created!`); + console.log(`User ${user.id} created with username ${username}!`); await this.log.logEvent(SessionLogEvent.CREATE_USER, user.id, user.id); return user; } From c756dc96e8dc3f89a128863c675b2da70f2fb703 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 Apr 2024 22:37:17 -0400 Subject: [PATCH 02/12] Bump webpack-dev-middleware from 5.3.3 to 5.3.4 in /admin (#186) Bumps [webpack-dev-middleware](https://github.com/webpack/webpack-dev-middleware) from 5.3.3 to 5.3.4. - [Release notes](https://github.com/webpack/webpack-dev-middleware/releases) - [Changelog](https://github.com/webpack/webpack-dev-middleware/blob/v5.3.4/CHANGELOG.md) - [Commits](https://github.com/webpack/webpack-dev-middleware/compare/v5.3.3...v5.3.4) --- updated-dependencies: - dependency-name: webpack-dev-middleware dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- admin/package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/admin/package-lock.json b/admin/package-lock.json index b83ea98f..74f6d817 100644 --- a/admin/package-lock.json +++ b/admin/package-lock.json @@ -15429,9 +15429,9 @@ } }, "node_modules/webpack-dev-middleware": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", - "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", + "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", "dependencies": { "colorette": "^2.0.10", "memfs": "^3.4.3", @@ -27270,9 +27270,9 @@ } }, "webpack-dev-middleware": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", - "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", + "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", "requires": { "colorette": "^2.0.10", "memfs": "^3.4.3", From 798d695cdb4daa2213f81b3f521de45b9c43de68 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 Apr 2024 22:37:39 -0400 Subject: [PATCH 03/12] Bump semver from 6.3.0 to 6.3.1 in /admin (#187) Bumps [semver](https://github.com/npm/node-semver) from 6.3.0 to 6.3.1. - [Release notes](https://github.com/npm/node-semver/releases) - [Changelog](https://github.com/npm/node-semver/blob/v6.3.1/CHANGELOG.md) - [Commits](https://github.com/npm/node-semver/compare/v6.3.0...v6.3.1) --- updated-dependencies: - dependency-name: semver dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- admin/package-lock.json | 156 ++++++++++++++++++++-------------------- 1 file changed, 78 insertions(+), 78 deletions(-) diff --git a/admin/package-lock.json b/admin/package-lock.json index 74f6d817..1dc63160 100644 --- a/admin/package-lock.json +++ b/admin/package-lock.json @@ -111,9 +111,9 @@ } }, "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } @@ -144,9 +144,9 @@ } }, "node_modules/@babel/eslint-parser/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } @@ -228,9 +228,9 @@ } }, "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } @@ -293,9 +293,9 @@ } }, "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } @@ -1628,9 +1628,9 @@ } }, "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } @@ -1841,9 +1841,9 @@ } }, "node_modules/@babel/preset-env/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } @@ -4869,9 +4869,9 @@ } }, "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } @@ -7105,9 +7105,9 @@ } }, "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } @@ -7165,9 +7165,9 @@ } }, "node_modules/eslint-plugin-jsx-a11y/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } @@ -7239,9 +7239,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } @@ -9308,9 +9308,9 @@ } }, "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } @@ -10757,9 +10757,9 @@ } }, "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } @@ -13892,9 +13892,9 @@ } }, "node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -16322,9 +16322,9 @@ }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" } } }, @@ -16344,9 +16344,9 @@ "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==" }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" } } }, @@ -16411,9 +16411,9 @@ } }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" }, "yallist": { "version": "3.1.1", @@ -16460,9 +16460,9 @@ }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" } } }, @@ -17325,9 +17325,9 @@ }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" } } }, @@ -17483,9 +17483,9 @@ }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" } } }, @@ -19685,9 +19685,9 @@ }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" } } }, @@ -21373,9 +21373,9 @@ } }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" } } }, @@ -21411,9 +21411,9 @@ }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" } } }, @@ -21458,9 +21458,9 @@ } }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" } } }, @@ -22911,9 +22911,9 @@ }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" } } }, @@ -24035,9 +24035,9 @@ }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" } } }, @@ -26083,9 +26083,9 @@ } }, "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "requires": { "lru-cache": "^6.0.0" } From fbb17c519afc38d2426a969ac01cce9930df7d4f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 Apr 2024 22:37:57 -0400 Subject: [PATCH 04/12] Bump word-wrap from 1.2.3 to 1.2.5 in /admin (#188) Bumps [word-wrap](https://github.com/jonschlinkert/word-wrap) from 1.2.3 to 1.2.5. - [Release notes](https://github.com/jonschlinkert/word-wrap/releases) - [Commits](https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.5) --- updated-dependencies: - dependency-name: word-wrap dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- admin/package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/admin/package-lock.json b/admin/package-lock.json index 1dc63160..e9c32369 100644 --- a/admin/package-lock.json +++ b/admin/package-lock.json @@ -15821,9 +15821,9 @@ } }, "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "engines": { "node": ">=0.10.0" } @@ -27532,9 +27532,9 @@ } }, "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==" }, "workbox-background-sync": { "version": "6.5.4", From 63b2ed93fb098f255986b4d09339925b78c99134 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 Apr 2024 22:38:13 -0400 Subject: [PATCH 05/12] Bump @adobe/css-tools from 4.2.0 to 4.3.3 in /admin (#189) Bumps [@adobe/css-tools](https://github.com/adobe/css-tools) from 4.2.0 to 4.3.3. - [Changelog](https://github.com/adobe/css-tools/blob/main/History.md) - [Commits](https://github.com/adobe/css-tools/commits) --- updated-dependencies: - dependency-name: "@adobe/css-tools" dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- admin/package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/admin/package-lock.json b/admin/package-lock.json index e9c32369..32490246 100644 --- a/admin/package-lock.json +++ b/admin/package-lock.json @@ -46,9 +46,9 @@ } }, "node_modules/@adobe/css-tools": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.2.0.tgz", - "integrity": "sha512-E09FiIft46CmH5Qnjb0wsW54/YQd69LsxeKUOWawmws1XWvyFGURnAChH0mlr7YPFR1ofwvUQfcL0J3lMxXqPA==" + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.3.tgz", + "integrity": "sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==" }, "node_modules/@ampproject/remapping": { "version": "2.2.0", @@ -16273,9 +16273,9 @@ }, "dependencies": { "@adobe/css-tools": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.2.0.tgz", - "integrity": "sha512-E09FiIft46CmH5Qnjb0wsW54/YQd69LsxeKUOWawmws1XWvyFGURnAChH0mlr7YPFR1ofwvUQfcL0J3lMxXqPA==" + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.3.tgz", + "integrity": "sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==" }, "@ampproject/remapping": { "version": "2.2.0", From 3edbdc3e6b2205661ba1596389e2acb6e26aa488 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 Apr 2024 22:38:40 -0400 Subject: [PATCH 06/12] Bump follow-redirects from 1.15.2 to 1.15.6 in /admin (#190) Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.2 to 1.15.6. - [Release notes](https://github.com/follow-redirects/follow-redirects/releases) - [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.2...v1.15.6) --- updated-dependencies: - dependency-name: follow-redirects dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- admin/package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/admin/package-lock.json b/admin/package-lock.json index 32490246..1bb74be7 100644 --- a/admin/package-lock.json +++ b/admin/package-lock.json @@ -7873,9 +7873,9 @@ "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" }, "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "funding": [ { "type": "individual", @@ -21917,9 +21917,9 @@ "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" }, "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==" }, "for-each": { "version": "0.3.3", From e69455f1f3d0d1ba4de1ab94b8b6f70d98e7a978 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 Apr 2024 22:38:56 -0400 Subject: [PATCH 07/12] Bump express from 4.18.2 to 4.19.2 in /admin (#191) Bumps [express](https://github.com/expressjs/express) from 4.18.2 to 4.19.2. - [Release notes](https://github.com/expressjs/express/releases) - [Changelog](https://github.com/expressjs/express/blob/master/History.md) - [Commits](https://github.com/expressjs/express/compare/4.18.2...4.19.2) --- updated-dependencies: - dependency-name: express dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- admin/package-lock.json | 64 ++++++++++++++++++++--------------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/admin/package-lock.json b/admin/package-lock.json index 1bb74be7..b237f815 100644 --- a/admin/package-lock.json +++ b/admin/package-lock.json @@ -5057,12 +5057,12 @@ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", "dependencies": { "bytes": "3.1.2", - "content-type": "~1.0.4", + "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", @@ -5070,7 +5070,7 @@ "iconv-lite": "0.4.24", "on-finished": "2.4.1", "qs": "6.11.0", - "raw-body": "2.5.1", + "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" }, @@ -5670,9 +5670,9 @@ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" }, "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", "engines": { "node": ">= 0.6" } @@ -7577,16 +7577,16 @@ } }, "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.1", + "body-parser": "1.20.2", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.5.0", + "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", @@ -13069,9 +13069,9 @@ } }, "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -19828,12 +19828,12 @@ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, "body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", "requires": { "bytes": "3.1.2", - "content-type": "~1.0.4", + "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", @@ -19841,7 +19841,7 @@ "iconv-lite": "0.4.24", "on-finished": "2.4.1", "qs": "6.11.0", - "raw-body": "2.5.1", + "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" }, @@ -20292,9 +20292,9 @@ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" }, "cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==" }, "cookie-signature": { "version": "1.0.6", @@ -21665,16 +21665,16 @@ } }, "express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", "requires": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.1", + "body-parser": "1.20.2", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.5.0", + "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", @@ -25497,9 +25497,9 @@ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" }, "raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "requires": { "bytes": "3.1.2", "http-errors": "2.0.0", From d65ed01324fae4a98fb22394f8bfd5c73997fa04 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 Apr 2024 22:39:13 -0400 Subject: [PATCH 08/12] Bump socket.io-parser from 4.2.2 to 4.2.4 in /admin (#192) Bumps [socket.io-parser](https://github.com/socketio/socket.io-parser) from 4.2.2 to 4.2.4. - [Release notes](https://github.com/socketio/socket.io-parser/releases) - [Changelog](https://github.com/socketio/socket.io-parser/blob/main/CHANGELOG.md) - [Commits](https://github.com/socketio/socket.io-parser/compare/4.2.2...4.2.4) --- updated-dependencies: - dependency-name: socket.io-parser dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- admin/package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/admin/package-lock.json b/admin/package-lock.json index b237f815..efab209c 100644 --- a/admin/package-lock.json +++ b/admin/package-lock.json @@ -14121,9 +14121,9 @@ } }, "node_modules/socket.io-parser": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.2.tgz", - "integrity": "sha512-DJtziuKypFkMMHCm2uIshOYC7QaylbtzQwiMYDuCKy3OPkjLzu4B2vAhTlqipRHHzrI0NJeBAizTK7X+6m1jVw==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1" @@ -26276,9 +26276,9 @@ } }, "socket.io-parser": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.2.tgz", - "integrity": "sha512-DJtziuKypFkMMHCm2uIshOYC7QaylbtzQwiMYDuCKy3OPkjLzu4B2vAhTlqipRHHzrI0NJeBAizTK7X+6m1jVw==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", "requires": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1" From 38de73062c8a40fdd87d0eaf33096842af30d523 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 Apr 2024 22:39:33 -0400 Subject: [PATCH 09/12] Bump @babel/traverse from 7.21.3 to 7.24.1 in /admin (#193) Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.21.3 to 7.24.1. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.24.1/packages/babel-traverse) --- updated-dependencies: - dependency-name: "@babel/traverse" dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- admin/package-lock.json | 316 ++++++++++++++++++++-------------------- 1 file changed, 160 insertions(+), 156 deletions(-) diff --git a/admin/package-lock.json b/admin/package-lock.json index efab209c..ef6fbaee 100644 --- a/admin/package-lock.json +++ b/admin/package-lock.json @@ -63,11 +63,12 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", + "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", "dependencies": { - "@babel/highlight": "^7.18.6" + "@babel/highlight": "^7.24.2", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" @@ -152,13 +153,13 @@ } }, "node_modules/@babel/generator": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.3.tgz", - "integrity": "sha512-QS3iR1GYC/YGUnW7IdggFeN5c1poPUurnGttOV/bZgPGV+izC/D8HnD6DLwod0fsatNyVn1G3EVWMYIF0nHbeA==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.4.tgz", + "integrity": "sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==", "dependencies": { - "@babel/types": "^7.21.3", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", + "@babel/types": "^7.24.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" }, "engines": { @@ -166,13 +167,13 @@ } }, "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dependencies": { - "@jridgewell/set-array": "^1.0.1", + "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" @@ -301,9 +302,9 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "engines": { "node": ">=6.9.0" } @@ -320,23 +321,23 @@ } }, "node_modules/@babel/helper-function-name": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", - "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dependencies": { - "@babel/template": "^7.20.7", - "@babel/types": "^7.21.0" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -457,28 +458,28 @@ } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", + "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "engines": { "node": ">=6.9.0" } @@ -519,13 +520,14 @@ } }, "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", + "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" @@ -596,9 +598,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.3.tgz", - "integrity": "sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz", + "integrity": "sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==", "bin": { "parser": "bin/babel-parser.js" }, @@ -1927,32 +1929,32 @@ } }, "node_modules/@babel/template": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", - "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", + "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.3.tgz", - "integrity": "sha512-XLyopNeaTancVitYZe2MlUEvgKb6YVVPXzofHgqHijCImG33b/uTurMS488ht/Hbsb2XK3U2BnSTxKVNGV3nGQ==", - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.21.3", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.21.3", - "@babel/types": "^7.21.3", - "debug": "^4.1.0", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz", + "integrity": "sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==", + "dependencies": { + "@babel/code-frame": "^7.24.1", + "@babel/generator": "^7.24.1", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.24.1", + "@babel/types": "^7.24.0", + "debug": "^4.3.1", "globals": "^11.1.0" }, "engines": { @@ -1960,12 +1962,12 @@ } }, "node_modules/@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", + "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, "engines": { @@ -2802,9 +2804,9 @@ } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "engines": { "node": ">=6.0.0" } @@ -2837,12 +2839,12 @@ "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/@leichtgewicht/ip-codec": { @@ -16287,11 +16289,12 @@ } }, "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", + "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", "requires": { - "@babel/highlight": "^7.18.6" + "@babel/highlight": "^7.24.2", + "picocolors": "^1.0.0" } }, "@babel/compat-data": { @@ -16351,24 +16354,24 @@ } }, "@babel/generator": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.3.tgz", - "integrity": "sha512-QS3iR1GYC/YGUnW7IdggFeN5c1poPUurnGttOV/bZgPGV+izC/D8HnD6DLwod0fsatNyVn1G3EVWMYIF0nHbeA==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.4.tgz", + "integrity": "sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==", "requires": { - "@babel/types": "^7.21.3", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", + "@babel/types": "^7.24.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" }, "dependencies": { "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "requires": { - "@jridgewell/set-array": "^1.0.1", + "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "^0.3.24" } } } @@ -16467,9 +16470,9 @@ } }, "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==" + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==" }, "@babel/helper-explode-assignable-expression": { "version": "7.18.6", @@ -16480,20 +16483,20 @@ } }, "@babel/helper-function-name": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", - "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "requires": { - "@babel/template": "^7.20.7", - "@babel/types": "^7.21.0" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" } }, "@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" } }, "@babel/helper-member-expression-to-functions": { @@ -16581,22 +16584,22 @@ } }, "@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" } }, "@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==" + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", + "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==" }, "@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==" }, "@babel/helper-validator-option": { "version": "7.21.0", @@ -16625,13 +16628,14 @@ } }, "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", + "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "dependencies": { "ansi-styles": { @@ -16686,9 +16690,9 @@ } }, "@babel/parser": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.3.tgz", - "integrity": "sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ==" + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz", + "integrity": "sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==" }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { "version": "7.18.6", @@ -17547,39 +17551,39 @@ } }, "@babel/template": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", - "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", + "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0" } }, "@babel/traverse": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.3.tgz", - "integrity": "sha512-XLyopNeaTancVitYZe2MlUEvgKb6YVVPXzofHgqHijCImG33b/uTurMS488ht/Hbsb2XK3U2BnSTxKVNGV3nGQ==", - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.21.3", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.21.3", - "@babel/types": "^7.21.3", - "debug": "^4.1.0", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz", + "integrity": "sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==", + "requires": { + "@babel/code-frame": "^7.24.1", + "@babel/generator": "^7.24.1", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.24.1", + "@babel/types": "^7.24.0", + "debug": "^4.3.1", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", + "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" } }, @@ -18129,9 +18133,9 @@ "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" }, "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==" }, "@jridgewell/source-map": { "version": "0.3.2", @@ -18160,12 +18164,12 @@ "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" }, "@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "@leichtgewicht/ip-codec": { From 48f17377a86aba9d8aff8d8c66c951dfdbdf4cf1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 Apr 2024 23:48:48 -0400 Subject: [PATCH 10/12] Bump tough-cookie from 4.1.2 to 4.1.3 in /admin (#195) Bumps [tough-cookie](https://github.com/salesforce/tough-cookie) from 4.1.2 to 4.1.3. - [Release notes](https://github.com/salesforce/tough-cookie/releases) - [Changelog](https://github.com/salesforce/tough-cookie/blob/master/CHANGELOG.md) - [Commits](https://github.com/salesforce/tough-cookie/compare/v4.1.2...v4.1.3) --- updated-dependencies: - dependency-name: tough-cookie dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- admin/package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/admin/package-lock.json b/admin/package-lock.json index ef6fbaee..d692422c 100644 --- a/admin/package-lock.json +++ b/admin/package-lock.json @@ -14959,9 +14959,9 @@ } }, "node_modules/tough-cookie": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", - "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", "dependencies": { "psl": "^1.1.33", "punycode": "^2.1.1", @@ -26902,9 +26902,9 @@ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" }, "tough-cookie": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", - "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", "requires": { "psl": "^1.1.33", "punycode": "^2.1.1", From aed437d23198c78c5f09c3d40a8d60f06bbfc8f3 Mon Sep 17 00:00:00 2001 From: Brian La <43937402+BrianLa0616@users.noreply.github.com> Date: Wed, 17 Apr 2024 20:24:55 -0400 Subject: [PATCH 11/12] Byl8/completed challenges page (#196) * Initial commit (untested) * Connected to back end * Fix flutter format --- .../lib/profile/completed_challenge_cell.dart | 2 +- .../profile/completed_challenges_page.dart | 155 +++++++++++------- 2 files changed, 100 insertions(+), 57 deletions(-) diff --git a/game/lib/profile/completed_challenge_cell.dart b/game/lib/profile/completed_challenge_cell.dart index c81c2d4a..fd21dc21 100644 --- a/game/lib/profile/completed_challenge_cell.dart +++ b/game/lib/profile/completed_challenge_cell.dart @@ -78,7 +78,7 @@ class _CompletedChallengeFullState extends State { builder: (BuildContext context) { return ClipRRect( borderRadius: BorderRadius.circular(8), - child: Image.asset( + child: Image.network( picture, fit: BoxFit.cover, ), diff --git a/game/lib/profile/completed_challenges_page.dart b/game/lib/profile/completed_challenges_page.dart index 8d4cea4e..c87e97be 100644 --- a/game/lib/profile/completed_challenges_page.dart +++ b/game/lib/profile/completed_challenges_page.dart @@ -1,72 +1,115 @@ import 'package:flutter/material.dart'; +import 'package:game/api/game_client_dto.dart'; +import 'package:game/model/challenge_model.dart'; +import 'package:game/model/event_model.dart'; +import 'package:game/model/tracker_model.dart'; +import 'package:game/model/user_model.dart'; import 'package:game/profile/profile_page.dart'; import 'package:game/profile/completed_challenge_cell.dart'; +import 'package:game/utils/utility_functions.dart'; +import 'package:intl/intl.dart'; +import 'package:provider/provider.dart'; +import 'package:tuple/tuple.dart'; /* The page view of all the completed challenges */ class CompletedChallengesPage extends StatelessWidget { - // final locationImage = "assets/images/adwhite.jpeg"; - // final locationImage2 = "assets/images/38582.jpg"; - - final pictureList = ["assets/images/adwhite.jpeg", "assets/images/38582.jpg"]; - @override Widget build(BuildContext context) { return Scaffold( - backgroundColor: Color.fromARGB(255, 255, 248, 241), - appBar: AppBar( - backgroundColor: Color.fromARGB(255, 237, 86, 86), - leading: IconButton( - icon: const Icon(Icons.navigate_before), - color: Colors.white, - onPressed: () { - Navigator.pop( - context, - ); - }, - ), - title: const Text( - 'Completed', - style: TextStyle( + backgroundColor: Color.fromARGB(255, 255, 248, 241), + appBar: AppBar( + backgroundColor: Color.fromARGB(255, 237, 86, 86), + leading: IconButton( + icon: const Icon(Icons.navigate_before), color: Colors.white, - fontFamily: 'Poppins', - fontWeight: FontWeight.bold, + onPressed: () { + Navigator.pop( + context, + ); + }, ), - ), - actions: [], - ), - body: SingleChildScrollView( - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Align( - child: CompletedChallengeFull( - name: 'Cornell Cafes', - pictures: pictureList, - type: 'Journeys', - date: 'January 19, 2023', - location: 'Arts Quad', - difficulty: 'Easy', - points: 120, - ), - ), - Align( - child: CompletedChallengeFull( - name: 'Libe Slope', - pictures: [ - "assets/images/adwhite.jpeg", - "assets/images/38582.jpg", - ], - type: 'Journeys', - date: 'February 20, 2023', - location: 'Arts Quad', - difficulty: 'Hard', - points: 120, - ), + title: const Text( + 'Completed', + style: TextStyle( + color: Colors.white, + fontFamily: 'Poppins', + fontWeight: FontWeight.bold, ), - ], + ), + actions: [], ), - ), - ); + body: Consumer4( + builder: (context, userModel, eventModel, trackerModel, + challengeModel, child) { + if (userModel.userData == null) { + return Center( + child: CircularProgressIndicator(), + ); + } + var username = userModel.userData?.username; + var score = userModel.userData?.score; + + List> completedEvents = []; + + //Get completed events + for (var eventId in userModel.userData!.trackedEvents!) { + var tracker = trackerModel.trackerByEventId(eventId); + EventDto? event = eventModel.getEventById(eventId); + if (tracker == null || event == null) { + continue; + } + if (tracker.prevChallengeDates!.length != + event.challenges!.length) { + continue; + } + + var completedDate = tracker.prevChallengeDates!.last; + DateTime date = + DateFormat("E, d MMM y HH:mm:ss").parse(completedDate); + + completedEvents.add(Tuple2(date, event)); + } + //Sort so that the most recent events are first + completedEvents.sort((a, b) => b.item1.compareTo(a.item1)); + final itemCount = completedEvents.length; + return ListView.separated( + itemBuilder: (context, index) { + var event = completedEvents[index].item2; + var date = completedEvents[index].item1; + var type = + event.challenges!.length > 1 ? "Journeys" : "Challenge"; + + var pictureList = []; + var locationList = []; + for (var challengeId in event.challenges ?? []) { + var challenge = challengeModel.getChallengeById(challengeId); + if (challenge != null) { + pictureList.add(challenge.imageUrl!); + locationList.add(challenge.location); + } + } + + //Calculate totalPoints. + var totalPoints = 0; + for (var challengeId in event.challenges ?? []) { + var challenge = challengeModel.getChallengeById(challengeId); + if (challenge != null) { + totalPoints += challenge.points ?? 0; + } + } + return CompletedChallengeFull( + name: event.name!, + pictures: pictureList, + type: type, + date: DateFormat("MMMM d, y").format(date), + location: locationList[0], + difficulty: difficultyToString[event.difficulty]!, + points: totalPoints, + ); + }, + separatorBuilder: (context, index) => const Divider(), + itemCount: itemCount); + })); } } From cecf657fb5c93109d112e8ee7e689bbce81b61d9 Mon Sep 17 00:00:00 2001 From: Temi Adebowale <65270955+3TTemi@users.noreply.github.com> Date: Sat, 20 Apr 2024 16:21:31 -0400 Subject: [PATCH 12/12] Ta375/add category (#182) * changes using api integration * Changed Ithaca Commons to proper naming * Initial DTO Name Changes for compatability * DTO server errors fixed * Form-DTO Updates with new category and location * Organization tests changing to LocationTypeDTO * LocationType type assertion update * Prettier formatting applied * Found the one piece * Form Ordering changes * Initial DTO and refactoring changes * Fixing Naming and Assertion bugs * Formatting and Enum Additions * Fix category dropdown functionality * Readability Changes * Fix easy difficulty issue * fixed difficulty form bug --------- Co-authored-by: Chris Gu Co-authored-by: neketka Co-authored-by: cathli66 --- admin/src/all.dto.ts | 34 ++- admin/src/components/Challenges.tsx | 30 ++- admin/src/components/Events.tsx | 67 +++-- game/lib/api/game_client_dto.dart | 41 ++- game/lib/challenges/challenges_page.dart | 2 +- game/lib/journeys/journeys_page.dart | 2 +- server/package-lock.json | 243 ++++++++---------- server/prisma/schema.prisma | 10 + server/src/achievement/achievement.dto.ts | 4 +- server/src/challenge/challenge.dto.ts | 13 +- server/src/challenge/challenge.e2e-spec.ts | 8 +- server/src/challenge/challenge.service.ts | 12 +- server/src/event/event.dto.ts | 10 + server/src/event/event.service.ts | 4 + .../src/organization/organization.e2e-spec.ts | 7 +- .../src/organization/organization.service.ts | 2 + 16 files changed, 309 insertions(+), 180 deletions(-) diff --git a/admin/src/all.dto.ts b/admin/src/all.dto.ts index 1f7ae812..1ad6c828 100644 --- a/admin/src/all.dto.ts +++ b/admin/src/all.dto.ts @@ -1,15 +1,6 @@ // CODE AUTOGENERATED BY npm run updateapi // IF YOU MODIFY THIS FILE, MAKE SURE TO ALSO MODIFY THE updateapi SCRIPT! // OTHERWISE YOUR CHANGES MAY BE OVERWRITTEN! -type LocationType = - | "EngQuad" - | "ArtsQuad" - | "AgQuad" - | "NorthCampus" - | "WestCampus" - | "Collegetown" - | "IthacaCommons" - | "Any"; type AchievementType = | "TotalPoints" @@ -24,8 +15,8 @@ type AchievementLocationTypeDto = | "NORTH_CAMPUS" | "WEST_CAMPUS" | "COLLEGETOWN" - | "IthacaCommons" - | "Any"; + | "ITHACA_COMMONS" + | "ANY"; type AchievementAchievementTypeDto = | "TOTAL_POINTS" @@ -42,6 +33,24 @@ type LoginEnrollmentTypeDto = | "ALUMNI" | "GUEST"; +export type ChallengeLocationDto = + | "ENG_QUAD" + | "ARTS_QUAD" + | "AG_QUAD" + | "NORTH_CAMPUS" + | "WEST_CAMPUS" + | "COLLEGETOWN" + | "ITHACA_COMMONS" + | "ANY"; + +export type EventCategoryDto = + | "FOOD" + | "NATURE" + | "HISTORICAL" + | "CAFE" + | "DININGHALL" + | "DORM"; + type EventTimeLimitationDto = "LIMITED_TIME" | "PERPETUAL"; type EventDifficultyDto = "Easy" | "Normal" | "Hard"; @@ -97,7 +106,7 @@ export interface CompletedChallengeDto { export interface ChallengeDto { id: string; name?: string; - location?: string; + location?: ChallengeLocationDto; description?: string; points?: number; imageUrl?: string; @@ -168,6 +177,7 @@ export interface EventDto { requiredMembers?: number; name?: string; description?: string; + category?: EventCategoryDto; timeLimitation?: EventTimeLimitationDto; endTime?: string; challenges?: string[]; diff --git a/admin/src/components/Challenges.tsx b/admin/src/components/Challenges.tsx index 9ef122b1..f2bc09b7 100644 --- a/admin/src/components/Challenges.tsx +++ b/admin/src/components/Challenges.tsx @@ -9,6 +9,7 @@ import { EntryForm, EntryModal, FreeEntryForm, + OptionEntryForm, MapEntryForm, NumberEntryForm, } from "./EntryModal"; @@ -23,6 +24,7 @@ import { } from "./ListCard"; import { SearchBar } from "./SearchBar"; import { ServerDataContext } from "./ServerData"; +import { ChallengeLocationDto } from "../all.dto"; const ChallengeImage = styled.div<{ url: string }>` width: calc(100% + 23px); @@ -36,6 +38,17 @@ const ChallengeImage = styled.div<{ url: string }>` `} `; +const locationOptions = [ + "ENG_QUAD", + "ARTS_QUAD", + "AG_QUAD", + "NORTH_CAMPUS", + "WEST_CAMPUS", + "COLLEGETOWN", + "ITHACA_COMMONS", + "ANY", +]; + function ChallengeCard(props: { challenge: ChallengeDto; onUp: () => void; @@ -75,7 +88,11 @@ function ChallengeCard(props: { function makeForm(): EntryForm[] { return [ { name: "Location", latitude: 42.447546, longitude: -76.484593 }, - { name: "Location Description", characterLimit: 2048, value: "" }, + { + name: "Location Description", + options: locationOptions, + value: 0, + }, { name: "Name", characterLimit: 256, value: "" }, { name: "Description", characterLimit: 2048, value: "" }, { name: "Points", characterLimit: 2048, min: 1, max: 1000, value: 50 }, @@ -94,8 +111,11 @@ function toForm(challenge: ChallengeDto) { }, { name: "Location Description", - characterLimit: 2048, - value: challenge.location ?? "", + options: locationOptions, + value: + challenge.location !== undefined + ? locationOptions.indexOf(challenge.location) + : 0, }, { name: "Name", characterLimit: 256, value: challenge.name ?? "" }, { @@ -138,7 +158,9 @@ function fromForm( return { id, name: (form[2] as FreeEntryForm).value, - location: (form[1] as FreeEntryForm).value, + location: locationOptions[ + (form[1] as OptionEntryForm).value + ] as ChallengeLocationDto, description: (form[3] as FreeEntryForm).value, points: (form[4] as NumberEntryForm).value, imageUrl: (form[5] as FreeEntryForm).value, diff --git a/admin/src/components/Events.tsx b/admin/src/components/Events.tsx index f8d20caa..cb098ad6 100644 --- a/admin/src/components/Events.tsx +++ b/admin/src/components/Events.tsx @@ -24,6 +24,18 @@ import { ServerDataContext } from "./ServerData"; import { compareTwoStrings } from "string-similarity"; import { EventDto } from "../all.dto"; import { AlertModal } from "./AlertModal"; +import { EventCategoryDto } from "../all.dto"; + +const categoryOptions = [ + "ENG_QUAD", + "ARTS_QUAD", + "AG_QUAD", + "NORTH_CAMPUS", + "WEST_CAMPUS", + "COLLEGETOWN", + "ITHACA_COMMONS", + "ANY", +]; function EventCard(props: { event: EventDto; @@ -43,8 +55,12 @@ function EventCard(props: { props.event.difficulty === "Easy" ? "Easy" : props.event.difficulty === "Normal" - ? "Normal" - : "Hard"; + ? "Normal" + : "Hard"; + + let categoryInput = props.event.category as string; + const categoryType = + categoryInput[0] + categoryInput.substring(1).toLowerCase(); const affirmOfBool = (val: boolean) => (val ? "Yes" : "No"); @@ -72,10 +88,9 @@ function EventCard(props: { Time Limitation: {timeLimitation}
Challenge Count: {props.event.challenges?.length}
Difficulty: {difficultyMode}
+ Category: {categoryType}
Publicly Visible: {affirmOfBool(!!props.event.indexable)}{" "}
- Latitude: {props.event.latitudeF}, Longitude:{" "} - {props.event.longitudeF}
DELETE @@ -88,10 +103,16 @@ function EventCard(props: { ); } +// Default Form Creation function makeForm() { return [ { name: "Name", characterLimit: 256, value: "" }, { name: "Description", characterLimit: 2048, value: "" }, + { + name: "Category", + options: categoryOptions, + value: 1, + }, { name: "Required Members", value: -1, min: -1, max: 99 }, { name: "Time Limitation", @@ -101,39 +122,55 @@ function makeForm() { { name: "Difficulty", options: ["Easy", "Normal", "Hard"], - value: 1, + value: 0, }, { name: "Publicly Visible", options: ["No", "Yes"], value: 0 }, { name: "Available Until", date: new Date("2050") }, ] as EntryForm[]; } +// Form to DTO Conversion function fromForm(form: EntryForm[], id: string): EventDto { return { id, - requiredMembers: (form[2] as NumberEntryForm).value, + requiredMembers: (form[3] as NumberEntryForm).value, timeLimitation: - (form[3] as OptionEntryForm).value === 0 ? "PERPETUAL" : "LIMITED_TIME", + (form[4] as OptionEntryForm).value === 0 ? "PERPETUAL" : "LIMITED_TIME", name: (form[0] as FreeEntryForm).value, description: (form[1] as FreeEntryForm).value, - indexable: (form[5] as OptionEntryForm).value === 1, - endTime: (form[6] as DateEntryForm).date.toUTCString(), + + category: categoryOptions[ + (form[2] as OptionEntryForm).value + ] as EventCategoryDto, + + indexable: (form[6] as OptionEntryForm).value === 1, + endTime: (form[7] as DateEntryForm).date.toUTCString(), challenges: [], difficulty: - (form[4] as OptionEntryForm).value === 0 + (form[5] as OptionEntryForm).value === 0 ? "Easy" - : (form[4] as OptionEntryForm).value === 1 - ? "Normal" - : "Hard", + : (form[5] as OptionEntryForm).value === 1 + ? "Normal" + : "Hard", + latitudeF: 0, longitudeF: 0, }; } +// DTO to Form Conversion function toForm(event: EventDto) { return [ { name: "Name", characterLimit: 256, value: event.name }, { name: "Description", characterLimit: 2048, value: event.description }, + { + name: "Category", + options: categoryOptions, + value: + event.category !== undefined + ? categoryOptions.indexOf(event.category) + : 0, + }, { name: "Required Members", value: event.requiredMembers, @@ -152,8 +189,8 @@ function toForm(event: EventDto) { event.difficulty === "Easy" ? 0 : event.difficulty === "Normal" - ? "Normal" - : "Hard", + ? 1 + : 2, }, { name: "Publicly Visible", diff --git a/game/lib/api/game_client_dto.dart b/game/lib/api/game_client_dto.dart index dfef024d..281f6746 100644 --- a/game/lib/api/game_client_dto.dart +++ b/game/lib/api/game_client_dto.dart @@ -26,8 +26,8 @@ enum AchievementLocationTypeDto { NORTH_CAMPUS, WEST_CAMPUS, COLLEGETOWN, - IthacaCommons, - Any, + ITHACA_COMMONS, + ANY, } enum AchievementAchievementTypeDto { @@ -51,6 +51,26 @@ enum LoginEnrollmentTypeDto { GUEST, } +enum ChallengeLocationDto { + ENG_QUAD, + ARTS_QUAD, + AG_QUAD, + NORTH_CAMPUS, + WEST_CAMPUS, + COLLEGETOWN, + ITHACA_COMMONS, + ANY, +} + +enum EventCategoryDto { + FOOD, + NATURE, + HISTORICAL, + CAFE, + DININGHALL, + DORM, +} + enum EventTimeLimitationDto { LIMITED_TIME, PERPETUAL, @@ -299,7 +319,7 @@ class ChallengeDto { fields['name'] = name; } if (location != null) { - fields['location'] = location; + fields['location'] = location!.name; } if (description != null) { fields['description'] = description; @@ -331,7 +351,9 @@ class ChallengeDto { ChallengeDto.fromJson(Map fields) { id = fields["id"]; name = fields.containsKey('name') ? (fields["name"]) : null; - location = fields.containsKey('location') ? (fields["location"]) : null; + location = fields.containsKey('location') + ? (ChallengeLocationDto.values.byName(fields['location'])) + : null; description = fields.containsKey('description') ? (fields["description"]) : null; points = fields.containsKey('points') ? (fields["points"]) : null; @@ -381,7 +403,7 @@ class ChallengeDto { late String id; late String? name; - late String? location; + late ChallengeLocationDto? location; late String? description; late int? points; late String? imageUrl; @@ -712,6 +734,9 @@ class EventDto { if (description != null) { fields['description'] = description; } + if (category != null) { + fields['category'] = category!.name; + } if (timeLimitation != null) { fields['timeLimitation'] = timeLimitation!.name; } @@ -750,6 +775,9 @@ class EventDto { name = fields.containsKey('name') ? (fields["name"]) : null; description = fields.containsKey('description') ? (fields["description"]) : null; + category = fields.containsKey('category') + ? (EventCategoryDto.values.byName(fields['category'])) + : null; timeLimitation = fields.containsKey('timeLimitation') ? (EventTimeLimitationDto.values.byName(fields['timeLimitation'])) : null; @@ -781,6 +809,7 @@ class EventDto { other.requiredMembers == null ? requiredMembers : other.requiredMembers; name = other.name == null ? name : other.name; description = other.description == null ? description : other.description; + category = other.category == null ? category : other.category; timeLimitation = other.timeLimitation == null ? timeLimitation : other.timeLimitation; endTime = other.endTime == null ? endTime : other.endTime; @@ -801,6 +830,7 @@ class EventDto { this.requiredMembers, this.name, this.description, + this.category, this.timeLimitation, this.endTime, this.challenges, @@ -816,6 +846,7 @@ class EventDto { late int? requiredMembers; late String? name; late String? description; + late EventCategoryDto? category; late EventTimeLimitationDto? timeLimitation; late String? endTime; late List? challenges; diff --git a/game/lib/challenges/challenges_page.dart b/game/lib/challenges/challenges_page.dart index 466d6522..785d945f 100644 --- a/game/lib/challenges/challenges_page.dart +++ b/game/lib/challenges/challenges_page.dart @@ -162,7 +162,7 @@ class _ChallengesPageState extends State { ) : ChallengeCell( key: UniqueKey(), - challenge.location ?? "", + challenge.location?.name ?? "", challenge.name ?? "", Image.network( "https://picsum.photos/250?image=9"), diff --git a/game/lib/journeys/journeys_page.dart b/game/lib/journeys/journeys_page.dart index f6b067c9..6234f061 100644 --- a/game/lib/journeys/journeys_page.dart +++ b/game/lib/journeys/journeys_page.dart @@ -176,7 +176,7 @@ class _JourneysPageState extends State { : JourneyCell( key: UniqueKey(), event.name ?? "", - location ?? "", + location?.name ?? "", Image.network( "https://picsum.photos/250?image=9"), // dummy data for now; should pass in thumbnail parameter event.description ?? "", diff --git a/server/package-lock.json b/server/package-lock.json index afeb2277..56d66b51 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -212,27 +212,27 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.1.tgz", - "integrity": "sha512-Pc65opHDliVpRHuKfzI+gSA4zcgr65O4cl64fFJIWEEh8JoHIHh0Oez1Eo8Arz8zq/JhgKodQaxEwUPRtZylVA==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz", + "integrity": "sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.24.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.3.tgz", - "integrity": "sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.4.tgz", + "integrity": "sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.24.2", - "@babel/generator": "^7.24.1", + "@babel/generator": "^7.24.4", "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.24.1", - "@babel/parser": "^7.24.1", + "@babel/helpers": "^7.24.4", + "@babel/parser": "^7.24.4", "@babel/template": "^7.24.0", "@babel/traverse": "^7.24.1", "@babel/types": "^7.24.0", @@ -279,9 +279,9 @@ } }, "node_modules/@babel/generator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.1.tgz", - "integrity": "sha512-DfCRfZsBcrPEHUfuBMgbJ1Ut01Y/itOs+hY2nFLgqsqXd52/iSiVq5TITtUasIUgm+IIKdY2/1I7auiQOEeC9A==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.4.tgz", + "integrity": "sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==", "dev": true, "dependencies": { "@babel/types": "^7.24.0", @@ -459,9 +459,9 @@ } }, "node_modules/@babel/helpers": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.1.tgz", - "integrity": "sha512-BpU09QqEe6ZCHuIHFphEFgvNSrubve1FtyMton26ekZ85gRGi6LrTF7zArARp2YvyFxloeiRmtSCq5sjh1WqIg==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.4.tgz", + "integrity": "sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==", "dev": true, "dependencies": { "@babel/template": "^7.24.0", @@ -559,9 +559,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.1.tgz", - "integrity": "sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz", + "integrity": "sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -823,9 +823,9 @@ "dev": true }, "node_modules/@casl/ability": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@casl/ability/-/ability-6.7.0.tgz", - "integrity": "sha512-NC51ha1nnfCMy88Gdk7cTBipv6n3QNo1yZA68EklsUIzWVDhTs9jJ5y70c3LpT6sN1GcUnGBP/cF7M2I4TkQ3w==", + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/@casl/ability/-/ability-6.7.1.tgz", + "integrity": "sha512-e+Vgrehd1/lzOSwSqKHtmJ6kmIuZbGBlM2LBS5IuYGGKmVHuhUuyh3XgTn1VIw9+TO4gqU+uptvxfIRBUEdJuw==", "dependencies": { "@ucast/mongo2js": "^1.3.0" }, @@ -2026,9 +2026,9 @@ } }, "node_modules/@prisma/client": { - "version": "5.11.0", - "resolved": "https://registry.npmjs.org/@prisma/client/-/client-5.11.0.tgz", - "integrity": "sha512-SWshvS5FDXvgJKM/a0y9nDC1rqd7KG0Q6ZVzd+U7ZXK5soe73DJxJJgbNBt2GNXOa+ysWB4suTpdK5zfFPhwiw==", + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-5.12.1.tgz", + "integrity": "sha512-6/JnizEdlSBxDIdiLbrBdMW5NqDxOmhXAJaNXiPpgzAPr/nLZResT6MMpbOHLo5yAbQ1Vv5UU8PTPRzb0WIxdA==", "hasInstallScript": true, "engines": { "node": ">=16.13" @@ -2043,48 +2043,48 @@ } }, "node_modules/@prisma/debug": { - "version": "5.11.0", - "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-5.11.0.tgz", - "integrity": "sha512-N6yYr3AbQqaiUg+OgjkdPp3KPW1vMTAgtKX6+BiB/qB2i1TjLYCrweKcUjzOoRM5BriA4idrkTej9A9QqTfl3A==", + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-5.12.1.tgz", + "integrity": "sha512-kd/wNsR0klrv79o1ITsbWxYyh4QWuBidvxsXSParPsYSu0ircUmNk3q4ojsgNc3/81b0ozg76iastOG43tbf8A==", "devOptional": true }, "node_modules/@prisma/engines": { - "version": "5.11.0", - "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-5.11.0.tgz", - "integrity": "sha512-gbrpQoBTYWXDRqD+iTYMirDlF9MMlQdxskQXbhARhG6A/uFQjB7DZMYocMQLoiZXO/IskfDOZpPoZE8TBQKtEw==", + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-5.12.1.tgz", + "integrity": "sha512-HQDdglLw2bZR/TXD2Y+YfDMvi5Q8H+acbswqOsWyq9pPjBLYJ6gzM+ptlTU/AV6tl0XSZLU1/7F4qaWa8bqpJA==", "devOptional": true, "hasInstallScript": true, "dependencies": { - "@prisma/debug": "5.11.0", - "@prisma/engines-version": "5.11.0-15.efd2449663b3d73d637ea1fd226bafbcf45b3102", - "@prisma/fetch-engine": "5.11.0", - "@prisma/get-platform": "5.11.0" + "@prisma/debug": "5.12.1", + "@prisma/engines-version": "5.12.0-21.473ed3124229e22d881cb7addf559799debae1ab", + "@prisma/fetch-engine": "5.12.1", + "@prisma/get-platform": "5.12.1" } }, "node_modules/@prisma/engines-version": { - "version": "5.11.0-15.efd2449663b3d73d637ea1fd226bafbcf45b3102", - "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-5.11.0-15.efd2449663b3d73d637ea1fd226bafbcf45b3102.tgz", - "integrity": "sha512-WXCuyoymvrS4zLz4wQagSsc3/nE6CHy8znyiMv8RKazKymOMd5o9FP5RGwGHAtgoxd+aB/BWqxuP/Ckfu7/3MA==", + "version": "5.12.0-21.473ed3124229e22d881cb7addf559799debae1ab", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-5.12.0-21.473ed3124229e22d881cb7addf559799debae1ab.tgz", + "integrity": "sha512-6yvO8s80Tym61aB4QNtYZfWVmE3pwqe807jEtzm8C5VDe7nw8O1FGX3TXUaXmWV0fQTIAfRbeL2Gwrndabp/0g==", "devOptional": true }, "node_modules/@prisma/fetch-engine": { - "version": "5.11.0", - "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-5.11.0.tgz", - "integrity": "sha512-994viazmHTJ1ymzvWugXod7dZ42T2ROeFuH6zHPcUfp/69+6cl5r9u3NFb6bW8lLdNjwLYEVPeu3hWzxpZeC0w==", + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-5.12.1.tgz", + "integrity": "sha512-qSs3KcX1HKcea1A+hlJVK/ljj0PNIUHDxAayGMvgJBqmaN32P9tCidlKz1EGv6WoRFICYnk3Dd/YFLBwnFIozA==", "devOptional": true, "dependencies": { - "@prisma/debug": "5.11.0", - "@prisma/engines-version": "5.11.0-15.efd2449663b3d73d637ea1fd226bafbcf45b3102", - "@prisma/get-platform": "5.11.0" + "@prisma/debug": "5.12.1", + "@prisma/engines-version": "5.12.0-21.473ed3124229e22d881cb7addf559799debae1ab", + "@prisma/get-platform": "5.12.1" } }, "node_modules/@prisma/get-platform": { - "version": "5.11.0", - "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-5.11.0.tgz", - "integrity": "sha512-rxtHpMLxNTHxqWuGOLzR2QOyQi79rK1u1XYAVLZxDGTLz/A+uoDnjz9veBFlicrpWjwuieM4N6jcnjj/DDoidw==", + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-5.12.1.tgz", + "integrity": "sha512-pgIR+pSvhYHiUcqXVEZS31NrFOTENC9yFUdEAcx7cdQBoZPmHVjtjN4Ss6NzVDMYPrKJJ51U14EhEoeuBlMioQ==", "devOptional": true, "dependencies": { - "@prisma/debug": "5.11.0" + "@prisma/debug": "5.12.1" } }, "node_modules/@sinonjs/commons": { @@ -2106,9 +2106,9 @@ } }, "node_modules/@socket.io/component-emitter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", - "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.1.tgz", + "integrity": "sha512-dzJtaDAAoXx4GCOJpbB2eG/Qj8VDpdwkLsWGzGm+0L7E8/434RyMbAHmk9ubXWVAb9nXmc44jUf8GKqVDiKezg==" }, "node_modules/@tootallnate/once": { "version": "1.1.2", @@ -2120,9 +2120,9 @@ } }, "node_modules/@tsconfig/node10": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.10.tgz", - "integrity": "sha512-PiaIWIoPvO6qm6t114ropMCagj6YAF24j9OkCA2mJDXFnlionEwhsBCJ8yek4aib575BI3OkART/90WsgHgLWw==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", "dev": true }, "node_modules/@tsconfig/node12": { @@ -2223,9 +2223,9 @@ } }, "node_modules/@types/eslint": { - "version": "8.56.6", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.6.tgz", - "integrity": "sha512-ymwc+qb1XkjT/gfoQwxIeHZ6ixH23A+tCT2ADSA/DPVKzAjwYkTXBMCQ/f6fe4wEa85Lhp26VPeUxI7wMhAi7A==", + "version": "8.56.9", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.9.tgz", + "integrity": "sha512-W4W3KcqzjJ0sHg2vAq9vfml6OhsJ53TcUjUqfzzZf/EChUtwspszj/S0pzMxnfRcO55/iGq47dscXw71Fxc4Zg==", "dev": true, "dependencies": { "@types/estree": "*", @@ -2261,9 +2261,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.43", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.43.tgz", - "integrity": "sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.0.tgz", + "integrity": "sha512-bGyep3JqPCRry1wq+O5n7oiBgGWmeIJXPjXXCo8EK0u8duZGSYar7cGqd3ML2JUsLGeB7fmc06KYo9fLGWqPvQ==", "dev": true, "dependencies": { "@types/node": "*", @@ -2359,9 +2359,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "16.18.91", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.91.tgz", - "integrity": "sha512-h8Q4klc8xzc9kJKr7UYNtJde5TU2qEePVyH3WyzJaUC+3ptyc5kPQbWOIUcn8ZsG5+KSkq+P0py0kC0VqxgAXw==" + "version": "16.18.96", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.96.tgz", + "integrity": "sha512-84iSqGXoO+Ha16j8pRZ/L90vDMKX04QTYMTfYeE1WrjWaZXuchBehGUZEpNgx7JnmlrIHdnABmpjrQjhCnNldQ==" }, "node_modules/@types/parse-json": { "version": "4.0.2", @@ -2376,9 +2376,9 @@ "dev": true }, "node_modules/@types/qs": { - "version": "6.9.14", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.14.tgz", - "integrity": "sha512-5khscbd3SwWMhFqylJBLQ0zIu7c1K6Vz0uBIt915BI3zV0q1nfjRQD3RqSBcPaO6PHEF4ov/t9y89fSiyThlPA==", + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", "dev": true }, "node_modules/@types/range-parser": { @@ -2398,14 +2398,14 @@ } }, "node_modules/@types/serve-static": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz", - "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==", + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", "dev": true, "dependencies": { "@types/http-errors": "*", - "@types/mime": "*", - "@types/node": "*" + "@types/node": "*", + "@types/send": "*" } }, "node_modules/@types/stack-utils": { @@ -3640,14 +3640,6 @@ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, - "node_modules/buffer-writer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", - "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==", - "engines": { - "node": ">=4" - } - }, "node_modules/busboy": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", @@ -3706,9 +3698,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001600", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001600.tgz", - "integrity": "sha512-+2S9/2JFhYmYaDpZvo0lKkfvuKIglrx68MwOBqMGHhQsNkLjB5xtc/TGoEPs+MxjSyN/72qer2g97nzR641mOQ==", + "version": "1.0.30001610", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001610.tgz", + "integrity": "sha512-QFutAY4NgaelojVMjY63o6XlZyORPaLfyMnsl3HgnWdJUcX6K0oaJymHjH8PT5Gk7sTm8rvC/c5COUQKXqmOMA==", "dev": true, "funding": [ { @@ -4563,9 +4555,9 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/electron-to-chromium": { - "version": "1.4.715", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.715.tgz", - "integrity": "sha512-XzWNH4ZSa9BwVUQSDorPWAUQ5WGuYz7zJUNpNif40zFCiCl20t8zgylmreNmn26h5kiyw2lg7RfTmeMBsDklqg==", + "version": "1.4.738", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.738.tgz", + "integrity": "sha512-lwKft2CLFztD+vEIpesrOtCrko/TFnEJlHFdRhazU7Y/jx5qc4cqsocfVrBg4So4gGe9lvxnbLIoev47WMpg+A==", "dev": true }, "node_modules/emittery": { @@ -4693,9 +4685,9 @@ } }, "node_modules/es-abstract": { - "version": "1.23.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.2.tgz", - "integrity": "sha512-60s3Xv2T2p1ICykc7c+DNDPLDMm9t4QxCOUU0K9JxiLjM3C1zB9YVdN7tjxrFd4+AkZ8CdX1ovUga4P2+1e+/w==", + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", "dependencies": { "array-buffer-byte-length": "^1.0.1", "arraybuffer.prototype.slice": "^1.0.3", @@ -4736,11 +4728,11 @@ "safe-regex-test": "^1.0.3", "string.prototype.trim": "^1.2.9", "string.prototype.trimend": "^1.0.8", - "string.prototype.trimstart": "^1.0.7", + "string.prototype.trimstart": "^1.0.8", "typed-array-buffer": "^1.0.2", "typed-array-byte-length": "^1.0.1", "typed-array-byte-offset": "^1.0.2", - "typed-array-length": "^1.0.5", + "typed-array-length": "^1.0.6", "unbox-primitive": "^1.0.2", "which-typed-array": "^1.1.15" }, @@ -4771,9 +4763,9 @@ } }, "node_modules/es-module-lexer": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.2.tgz", - "integrity": "sha512-7nOqkomXZEaxUDJw21XZNtRk739QvrPSoZoRtbsEfcii00vdzZUh6zh1CQwHhrib8MdEtJfv5rJiGeb4KuV/vw==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.0.tgz", + "integrity": "sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw==", "dev": true }, "node_modules/es-object-atoms": { @@ -8499,11 +8491,6 @@ "node": ">=6" } }, - "node_modules/packet-reader": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", - "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==" - }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -8646,12 +8633,12 @@ "dev": true }, "node_modules/path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz", + "integrity": "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==", "dev": true, "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", + "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { @@ -8698,15 +8685,13 @@ "integrity": "sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg==" }, "node_modules/pg": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.11.3.tgz", - "integrity": "sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g==", - "dependencies": { - "buffer-writer": "2.0.0", - "packet-reader": "1.0.0", - "pg-connection-string": "^2.6.2", - "pg-pool": "^3.6.1", - "pg-protocol": "^1.6.0", + "version": "8.11.5", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.11.5.tgz", + "integrity": "sha512-jqgNHSKL5cbDjFlHyYsCXmQDrfIX/3RsNwYqpd4N0Kt8niLuNoRNH+aazv6cOd43gPh9Y4DjQCtb+X0MH0Hvnw==", + "dependencies": { + "pg-connection-string": "^2.6.4", + "pg-pool": "^3.6.2", + "pg-protocol": "^1.6.1", "pg-types": "^2.1.0", "pgpass": "1.x" }, @@ -8732,9 +8717,9 @@ "optional": true }, "node_modules/pg-connection-string": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.2.tgz", - "integrity": "sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==" + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.4.tgz", + "integrity": "sha512-v+Z7W/0EO707aNMaAEfiGnGL9sxxumwLl2fJvCQtMn9Fxsg+lPpPkdcyBSv/KFgpGdYkMfn+EI1Or2EHjpgLCA==" }, "node_modules/pg-int8": { "version": "1.0.1", @@ -8745,17 +8730,17 @@ } }, "node_modules/pg-pool": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.1.tgz", - "integrity": "sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.2.tgz", + "integrity": "sha512-Htjbg8BlwXqSBQ9V8Vjtc+vzf/6fVUuak/3/XXKA9oxZprwW3IMDQTGHP+KDmVL7rtd+R1QjbnCFPuTHm3G4hg==", "peerDependencies": { "pg": ">=8.0" } }, "node_modules/pg-protocol": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.0.tgz", - "integrity": "sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==" + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.1.tgz", + "integrity": "sha512-jPIlvgoD63hrEuihvIg+tJhoGjUsLPn6poJY9N5CnlPd91c2T18T/9zBtLxZSb1EhYxBRoZJtzScCaWlYLtktg==" }, "node_modules/pg-types": { "version": "2.2.0", @@ -9041,13 +9026,13 @@ } }, "node_modules/prisma": { - "version": "5.11.0", - "resolved": "https://registry.npmjs.org/prisma/-/prisma-5.11.0.tgz", - "integrity": "sha512-KCLiug2cs0Je7kGkQBN9jDWoZ90ogE/kvZTUTgz2h94FEo8pczCkPH7fPNXkD1sGU7Yh65risGGD1HQ5DF3r3g==", + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-5.12.1.tgz", + "integrity": "sha512-SkMnb6wyIxTv9ACqiHBI2u9gD6y98qXRoCoLEnZsF6yee5Qg828G+ARrESN+lQHdw4maSZFFSBPPDpvSiVTo0Q==", "devOptional": true, "hasInstallScript": true, "dependencies": { - "@prisma/engines": "5.11.0" + "@prisma/engines": "5.12.1" }, "bin": { "prisma": "build/index.js" @@ -10245,9 +10230,9 @@ "dev": true }, "node_modules/table": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", - "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.2.tgz", + "integrity": "sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==", "dev": true, "dependencies": { "ajv": "^8.0.1", @@ -10320,9 +10305,9 @@ } }, "node_modules/terser": { - "version": "5.29.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.29.2.tgz", - "integrity": "sha512-ZiGkhUBIM+7LwkNjXYJq8svgkd+QK3UUr0wJqY4MieaezBSAIPgbSPZyIx0idM6XWK5CMzSWa8MJIzmRcB8Caw==", + "version": "5.30.3", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.30.3.tgz", + "integrity": "sha512-STdUgOUx8rLbMGO9IOwHLpCqolkDITFFQSMYYwKE1N2lY6MVSaeoi10z/EhWxRc6ybqoVmKSkhKYH/XUpl7vSA==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", diff --git a/server/prisma/schema.prisma b/server/prisma/schema.prisma index c617029d..1146ee3a 100644 --- a/server/prisma/schema.prisma +++ b/server/prisma/schema.prisma @@ -156,6 +156,16 @@ model EventBase { longitude Float achievements Achievement[] difficulty DifficultyMode + category EventCategoryType +} + +enum EventCategoryType { + FOOD + NATURE + HISTORICAL + CAFE + DININGHALL + DORM } model EventTracker { diff --git a/server/src/achievement/achievement.dto.ts b/server/src/achievement/achievement.dto.ts index 175bfe1c..d0eda6cb 100644 --- a/server/src/achievement/achievement.dto.ts +++ b/server/src/achievement/achievement.dto.ts @@ -5,8 +5,8 @@ export enum LocationType { NorthCampus = 'NORTH_CAMPUS', WestCampus = 'WEST_CAMPUS', Collegetown = 'COLLEGETOWN', - IthacaCommons = 'IthacaCommons', - Any = 'Any', + IthacaCommons = 'ITHACA_COMMONS', + Any = 'ANY', } export enum AchievementType { diff --git a/server/src/challenge/challenge.dto.ts b/server/src/challenge/challenge.dto.ts index fc889b1b..98d46b40 100644 --- a/server/src/challenge/challenge.dto.ts +++ b/server/src/challenge/challenge.dto.ts @@ -3,10 +3,21 @@ export interface CompletedChallengeDto { challengeId: string; } +export enum ChallengeLocationDto { + EngQuad = 'ENG_QUAD', + ArtsQuad = 'ARTS_QUAD', + AgQuad = 'AG_QUAD', + NorthCampus = 'NORTH_CAMPUS', + WestCampus = 'WEST_CAMPUS', + Collegetown = 'COLLEGETOWN', + IthacaCommons = 'ITHACA_COMMONS', + Any = 'ANY', +} + export interface ChallengeDto { id: string; name?: string; - location?: string; + location?: ChallengeLocationDto; description?: string; points?: number; imageUrl?: string; diff --git a/server/src/challenge/challenge.e2e-spec.ts b/server/src/challenge/challenge.e2e-spec.ts index 1f2031f7..30b74560 100644 --- a/server/src/challenge/challenge.e2e-spec.ts +++ b/server/src/challenge/challenge.e2e-spec.ts @@ -18,7 +18,7 @@ import { ClientService } from '../client/client.service'; import { GroupService } from '../group/group.service'; import { OrganizationService } from '../organization/organization.service'; import { ClientModule } from '../client/client.module'; -import { ChallengeDto } from './challenge.dto'; +import { ChallengeDto, ChallengeLocationDto } from './challenge.dto'; import { AppAbility, CaslAbilityFactory } from '../casl/casl-ability.factory'; describe('ChallengeModule E2E', () => { @@ -133,7 +133,7 @@ describe('ChallengeModule E2E', () => { const chalDto: ChallengeDto = { id: '12345', name: 'test', - location: 'ENG_QUAD', + location: ChallengeLocationDto.EngQuad, description: 'chal dto', points: 1, imageUrl: 'url', @@ -179,7 +179,7 @@ describe('ChallengeModule E2E', () => { const secondChalDto: ChallengeDto = { id: '123', name: 'test', - location: 'ANY', + location: ChallengeLocationDto.Any, description: 'chal dto', points: 1, imageUrl: 'update test', @@ -208,7 +208,7 @@ describe('ChallengeModule E2E', () => { const chalDto: ChallengeDto = { id: chalID, name: 'test', - location: 'ENG_QUAD', + location: ChallengeLocationDto.EngQuad, description: 'chal dto', points: 1, imageUrl: 'update test', diff --git a/server/src/challenge/challenge.service.ts b/server/src/challenge/challenge.service.ts index b35cab7e..eb30434b 100644 --- a/server/src/challenge/challenge.service.ts +++ b/server/src/challenge/challenge.service.ts @@ -12,7 +12,11 @@ import { import { ClientService } from '../client/client.service'; import { EventService } from '../event/event.service'; import { PrismaService } from '../prisma/prisma.service'; -import { ChallengeDto, UpdateChallengeDataDto } from './challenge.dto'; +import { + ChallengeDto, + UpdateChallengeDataDto, + ChallengeLocationDto, +} from './challenge.dto'; import { AppAbility, CaslAbilityFactory } from '../casl/casl-ability.factory'; import { accessibleBy } from '@casl/prisma'; import { Action } from '../casl/action.enum'; @@ -239,7 +243,7 @@ export class ChallengeService { return { id: ch.id, name: ch.name, - location: ch.location as string, + location: ch.location as ChallengeLocationDto, description: ch.description, points: ch.points, imageUrl: ch.imageUrl, @@ -307,7 +311,6 @@ export class ChallengeService { _max: { eventIndex: true }, where: { linkedEventId: challenge.linkedEventId }, }); - const data = { name: challenge.name?.substring(0, 2048) ?? defaultChallengeData.name, description: @@ -316,7 +319,8 @@ export class ChallengeService { imageUrl: challenge.imageUrl?.substring(0, 2048) ?? defaultChallengeData.imageUrl, - location: challenge.location as LocationType, + location: + (challenge.location as LocationType) ?? defaultChallengeData.location, points: challenge.points ?? 0, latitude: challenge.latF ?? defaultChallengeData.latitude, longitude: challenge.longF ?? defaultChallengeData.longitude, diff --git a/server/src/event/event.dto.ts b/server/src/event/event.dto.ts index 5e116c5d..c3bb1453 100644 --- a/server/src/event/event.dto.ts +++ b/server/src/event/event.dto.ts @@ -22,11 +22,21 @@ export interface RequestRecommendedEventsDto { count?: number; } +export enum EventCategory { + FOOD = 'FOOD', + NATURE = 'NATURE', + HISTORICAL = 'HISTORICAL', + CAFE = 'CAFE', + DININGHALL = 'DININGHALL', + DORM = 'DORM', +} + export interface EventDto { id: string; requiredMembers?: number; name?: string; description?: string; + category?: EventCategory; timeLimitation?: 'LIMITED_TIME' | 'PERPETUAL'; endTime?: string; challenges?: string[]; diff --git a/server/src/event/event.service.ts b/server/src/event/event.service.ts index 0e06e699..2ef0236f 100644 --- a/server/src/event/event.service.ts +++ b/server/src/event/event.service.ts @@ -21,6 +21,7 @@ import { EventTrackerDto, UpdateEventDataDto, RequestRecommendedEventsDto, + EventCategory, } from './event.dto'; import { AppAbility, CaslAbilityFactory } from '../casl/casl-ability.factory'; import { accessibleBy } from '@casl/prisma'; @@ -256,6 +257,7 @@ export class EventService { id: ev.id, name: ev.name, description: ev.description, + category: ev.category as EventCategory, timeLimitation: ev.timeLimitation == TimeLimitationType.LIMITED_TIME ? 'LIMITED_TIME' @@ -426,6 +428,7 @@ export class EventService { : DifficultyMode.HARD), latitude: event.latitudeF, longitude: event.longitudeF, + category: event.category, }; if (ev && canUpdateEv) { @@ -450,6 +453,7 @@ export class EventService { description: assignData.description?.substring(0, 2048) ?? defaultEventData.description, + category: assignData.category ?? defaultEventData.category, timeLimitation: assignData.timeLimitation, endTime: assignData.endTime ?? defaultEventData.endTime, indexable: assignData.indexable ?? defaultEventData.indexable, diff --git a/server/src/organization/organization.e2e-spec.ts b/server/src/organization/organization.e2e-spec.ts index 1a247fb1..260605f6 100644 --- a/server/src/organization/organization.e2e-spec.ts +++ b/server/src/organization/organization.e2e-spec.ts @@ -26,7 +26,10 @@ import { GroupGateway } from '../group/group.gateway'; import { EventGateway } from '../event/event.gateway'; import { UpdateUserDataDto } from '../user/user.dto'; import { UpdateEventDataDto } from '../event/event.dto'; -import { UpdateChallengeDataDto } from '../challenge/challenge.dto'; +import { + UpdateChallengeDataDto, + ChallengeLocationDto, +} from '../challenge/challenge.dto'; type DtoLastCall = [string[], string, T]; @@ -106,7 +109,7 @@ describe('OrganizationModule E2E', () => { exChal = (await challengeService.upsertChallengeFromDto(fullAbility, { id: '', linkedEventId: exEv.id, - location: 'ARTS_QUAD', + location: ChallengeLocationDto.ArtsQuad, }))!; managerUser = await userService.register( diff --git a/server/src/organization/organization.service.ts b/server/src/organization/organization.service.ts index 9839b895..f99679f9 100644 --- a/server/src/organization/organization.service.ts +++ b/server/src/organization/organization.service.ts @@ -7,6 +7,7 @@ import { OrganizationSpecialUsage, User, LocationType, + EventCategoryType, } from '@prisma/client'; import { ClientService } from '../client/client.service'; import { v4 } from 'uuid'; @@ -22,6 +23,7 @@ export const defaultEventData = { description: 'Default Event', requiredMembers: 1, difficulty: DifficultyMode.NORMAL, + category: EventCategoryType.NATURE, timeLimitation: TimeLimitationType.PERPETUAL, indexable: true, endTime: new Date('2060'),