From 37b84de5114beb770c62db598d7f37de775fb87c Mon Sep 17 00:00:00 2001 From: Alder Whiteford Date: Sat, 24 Feb 2024 19:28:34 -0500 Subject: [PATCH 1/8] Fix swagger docs (#259) Co-authored-by: Alder Whiteford Co-authored-by: Garrett Ladley <92384606+garrettladley@users.noreply.github.com> Co-authored-by: garrettladley Co-authored-by: David Oduneye --- backend/src/controllers/category.go | 16 +- backend/src/controllers/category_tag.go | 4 +- backend/src/controllers/club.go | 12 +- backend/src/controllers/club_contact.go | 8 +- backend/src/controllers/club_event.go | 2 +- backend/src/controllers/club_follower.go | 2 +- backend/src/controllers/club_member.go | 2 +- backend/src/controllers/club_tag.go | 6 +- backend/src/controllers/contact.go | 26 +- backend/src/controllers/event.go | 24 +- backend/src/controllers/tag.go | 6 +- backend/src/controllers/user.go | 9 +- backend/src/controllers/user_follower.go | 6 +- backend/src/controllers/user_member.go | 6 +- backend/src/controllers/user_tag.go | 4 +- backend/src/docs/docs.go | 548 +- backend/src/docs/swagger.json | 7864 ++++++++++---------- backend/src/docs/swagger.yaml | 232 +- backend/src/models/user.go | 2 +- backend/src/server/routes/category.go | 2 +- backend/src/server/routes/category_tag.go | 9 +- backend/src/server/routes/club.go | 2 +- backend/src/server/routes/event.go | 3 + backend/src/server/routes/user_follower.go | 8 +- backend/src/server/routes/user_member.go | 9 +- backend/src/server/routes/user_tag.go | 4 +- go.work.sum | 115 +- 27 files changed, 4538 insertions(+), 4393 deletions(-) diff --git a/backend/src/controllers/category.go b/backend/src/controllers/category.go index 7179e694a..aabdba989 100644 --- a/backend/src/controllers/category.go +++ b/backend/src/controllers/category.go @@ -32,7 +32,7 @@ func NewCategoryController(categoryService services.CategoryServiceInterface) *C // @Failure 401 {string} errors.Error // @Failure 404 {string} errors.Error // @Failure 500 {string} errors.Error -// @Router /category/ [post] +// @Router /categories/ [post] func (cat *CategoryController) CreateCategory(c *fiber.Ctx) error { var categoryBody models.CategoryRequestBody @@ -61,8 +61,8 @@ func (cat *CategoryController) CreateCategory(c *fiber.Ctx) error { // @Failure 400 {string} errors.Error // @Failure 404 {string} errors.Error // @Failure 500 {string} errors.Error -// @Router /category/ [get] -func (cat *CategoryController) GetAllCategories(c *fiber.Ctx) error { +// @Router /categories/ [get] +func (cat *CategoryController) GetCategories(c *fiber.Ctx) error { defaultLimit := 10 defaultPage := 1 @@ -87,6 +87,12 @@ func (cat *CategoryController) GetAllCategories(c *fiber.Ctx) error { // @Failure 404 {string} errors.Error // @Failure 500 {string} errors.Error // @Router /category/{categoryID} [get] +// @Param id path string true "Category ID" +// @Success 200 {object} models.Category +// @Failure 400 {string} string "failed to validate id" +// @Failure 404 {string} string "faied to find category" +// @Failure 500 {string} string "failed to retrieve category" +// @Router /api/v1/category/{id} [get] func (cat *CategoryController) GetCategory(c *fiber.Ctx) error { category, err := cat.categoryService.GetCategory(c.Params("categoryID")) if err != nil { @@ -109,7 +115,7 @@ func (cat *CategoryController) GetCategory(c *fiber.Ctx) error { // @Failure 401 {string} errors.Error // @Failure 404 {string} errors.Error // @Failure 500 {string} errors.Error -// @Router /category/{categoryID} [delete] +// @Router /categories/{categoryID}/ [delete] func (cat *CategoryController) DeleteCategory(c *fiber.Ctx) error { if err := cat.categoryService.DeleteCategory(c.Params("categoryID")); err != nil { return err.FiberError(c) @@ -133,7 +139,7 @@ func (cat *CategoryController) DeleteCategory(c *fiber.Ctx) error { // @Failure 401 {string} errors.Error // @Failure 404 {string} errors.Error // @Failure 500 {string} errors.Error -// @Router /category/{categoryID} [put] +// @Router /categories/{categoryID}/ [patch] func (cat *CategoryController) UpdateCategory(c *fiber.Ctx) error { var category models.CategoryRequestBody diff --git a/backend/src/controllers/category_tag.go b/backend/src/controllers/category_tag.go index 2fa0df394..881f5471e 100644 --- a/backend/src/controllers/category_tag.go +++ b/backend/src/controllers/category_tag.go @@ -30,7 +30,7 @@ func NewCategoryTagController(categoryTagService services.CategoryTagServiceInte // @Failure 400 {object} errors.Error // @Failure 404 {object} errors.Error // @Failure 500 {object} errors.Error -// @Router /category/{categoryID}/tags [get] +// @Router /categories/{categoryID}/tags/ [get] func (ct *CategoryTagController) GetTagsByCategory(c *fiber.Ctx) error { defaultLimit := 10 defaultPage := 1 @@ -56,7 +56,7 @@ func (ct *CategoryTagController) GetTagsByCategory(c *fiber.Ctx) error { // @Failure 400 {object} errors.Error // @Failure 404 {object} errors.Error // @Failure 500 {object} errors.Error -// @Router /category/{categoryID}/tags/{tagID} [get] +// @Router /categories/{categoryID}/tags/{tagID}/ [get] func (ct *CategoryTagController) GetTagByCategory(c *fiber.Ctx) error { tag, err := ct.categoryTagService.GetTagByCategory(c.Params("categoryID"), c.Params("tagID")) if err != nil { diff --git a/backend/src/controllers/club.go b/backend/src/controllers/club.go index 39b2ec04c..1c8f7c2ab 100644 --- a/backend/src/controllers/club.go +++ b/backend/src/controllers/club.go @@ -27,8 +27,8 @@ func NewClubController(clubService services.ClubServiceInterface) *ClubControlle // @Success 200 {object} []models.Club // @Failure 400 {object} errors.Error // @Failure 500 {object} errors.Error -// @Router /club/ [get] -func (cl *ClubController) GetClubs(c *fiber.Ctx) error { +// @Router /clubs/ [get] +func (cl *ClubController) GetAllClubs(c *fiber.Ctx) error { var queryParams models.ClubQueryParams queryParams.Limit = 10 // default limit @@ -60,7 +60,7 @@ func (cl *ClubController) GetClubs(c *fiber.Ctx) error { // @Failure 401 {object} errors.Error // @Failure 404 {object} errors.Error // @Failure 500 {object} errors.Error -// @Router /club/ [post] +// @Router /clubs/ [post] func (cl *ClubController) CreateClub(c *fiber.Ctx) error { var clubBody models.CreateClubRequestBody if err := c.BodyParser(&clubBody); err != nil { @@ -87,7 +87,7 @@ func (cl *ClubController) CreateClub(c *fiber.Ctx) error { // @Failure 400 {object} errors.Error // @Failure 404 {object} errors.Error // @Failure 500 {object} errors.Error -// @Router /club/{clubID} [get] +// @Router /clubs/{clubID}/ [get] func (cl *ClubController) GetClub(c *fiber.Ctx) error { club, err := cl.clubService.GetClub(c.Params("clubID")) if err != nil { @@ -112,7 +112,7 @@ func (cl *ClubController) GetClub(c *fiber.Ctx) error { // @Failure 401 {object} errors.Error // @Failure 404 {object} errors.Error // @Failure 500 {object} errors.Error -// @Router /club/{clubID} [put] +// @Router /clubs/{clubID}/ [patch] func (cl *ClubController) UpdateClub(c *fiber.Ctx) error { var clubBody models.UpdateClubRequestBody @@ -141,7 +141,7 @@ func (cl *ClubController) UpdateClub(c *fiber.Ctx) error { // @Failure 401 {object} errors.Error // @Failure 404 {object} errors.Error // @Failure 500 {object} errors.Error -// @Router /club/{clubID} [delete] +// @Router /clubs/{clubID}/ [delete] func (cl *ClubController) DeleteClub(c *fiber.Ctx) error { err := cl.clubService.DeleteClub(c.Params("clubID")) if err != nil { diff --git a/backend/src/controllers/club_contact.go b/backend/src/controllers/club_contact.go index ac59a8285..3e3ad8d22 100644 --- a/backend/src/controllers/club_contact.go +++ b/backend/src/controllers/club_contact.go @@ -27,7 +27,7 @@ func NewClubContactController(clubContactService services.ClubContactServiceInte // @Failure 400 {object} errors.Error // @Failure 404 {object} errors.Error // @Failure 500 {object} errors.Error -// @Router /club/{clubID}/contacts [get] +// @Router /clubs/{clubID}/contacts/ [get] func (cc *ClubContactController) GetClubContacts(c *fiber.Ctx) error { contacts, err := cc.clubContactService.GetClubContacts(c.Params("clubID")) if err != nil { @@ -37,11 +37,11 @@ func (cc *ClubContactController) GetClubContacts(c *fiber.Ctx) error { return c.Status(fiber.StatusOK).JSON(contacts) } -// PostContact godoc +// PutContact godoc // // @Summary Creates a contact // @Description Creates a contact -// @ID create-contact +// @ID put-contact // @Tags club-contact // @Accept json // @Produce json @@ -52,7 +52,7 @@ func (cc *ClubContactController) GetClubContacts(c *fiber.Ctx) error { // @Failure 401 {object} errors.Error // @Failure 404 {object} errors.Error // @Failure 500 {object} errors.Error -// @Router /club/{clubID}/contacts [post] +// @Router /clubs/{clubID}/contacts/ [put] func (cc *ClubContactController) PutContact(c *fiber.Ctx) error { var contactBody models.PutContactRequestBody diff --git a/backend/src/controllers/club_event.go b/backend/src/controllers/club_event.go index 16ae9294f..5fcbf4496 100644 --- a/backend/src/controllers/club_event.go +++ b/backend/src/controllers/club_event.go @@ -29,7 +29,7 @@ func NewClubEventController(clubEventService services.ClubEventServiceInterface) // @Failure 400 {object} errors.Error // @Failure 404 {object} errors.Error // @Failure 500 {object} errors.Error -// @Router /club/{clubID}/events [get] +// @Router /clubs/{clubID}/events/ [get] func (cl *ClubEventController) GetClubEvents(c *fiber.Ctx) error { defaultLimit := 10 defaultPage := 1 diff --git a/backend/src/controllers/club_follower.go b/backend/src/controllers/club_follower.go index 5c94da7bf..2d506d3c3 100644 --- a/backend/src/controllers/club_follower.go +++ b/backend/src/controllers/club_follower.go @@ -29,7 +29,7 @@ func NewClubFollowerController(clubFollowerService services.ClubFollowerServiceI // @Failure 400 {object} errors.Error // @Failure 404 {object} errors.Error // @Failure 500 {object} errors.Error -// @Router /club/{clubID}/followers [get] +// @Router /clubs/{clubID}/followers/ [get] func (cf *ClubFollowerController) GetClubFollowers(c *fiber.Ctx) error { defaultLimit := 10 defaultPage := 1 diff --git a/backend/src/controllers/club_member.go b/backend/src/controllers/club_member.go index c6afc2ac4..9cc15fa2f 100644 --- a/backend/src/controllers/club_member.go +++ b/backend/src/controllers/club_member.go @@ -30,7 +30,7 @@ func NewClubMemberController(clubMemberService services.ClubMemberServiceInterfa // @Failure 401 {object} errors.Error // @Failure 404 {object} errors.Error // @Failure 500 {object} errors.Error -// @Router /club/{clubID}/members [get] +// @Router /clubs/{clubID}/members/ [get] func (cm *ClubMemberController) GetClubMembers(c *fiber.Ctx) error { defaultLimit := 10 defaultPage := 1 diff --git a/backend/src/controllers/club_tag.go b/backend/src/controllers/club_tag.go index fc15c0164..0438f7ee3 100644 --- a/backend/src/controllers/club_tag.go +++ b/backend/src/controllers/club_tag.go @@ -30,7 +30,7 @@ func NewClubTagController(clubTagService services.ClubTagServiceInterface) *Club // @Failure 401 {object} errors.Error // @Failure 404 {object} errors.Error // @Failure 500 {object} errors.Error -// @Router /club/{clubID}/tags [post] +// @Router /clubs/{clubID}/tags/ [post] func (l *ClubTagController) CreateClubTags(c *fiber.Ctx) error { var clubTagsBody models.CreateClubTagsRequestBody if err := c.BodyParser(&clubTagsBody); err != nil { @@ -57,7 +57,7 @@ func (l *ClubTagController) CreateClubTags(c *fiber.Ctx) error { // @Failure 400 {object} errors.Error // @Failure 404 {object} errors.Error // @Failure 500 {object} errors.Error -// @Router /club/{clubID}/tags [get] +// @Router /clubs/{clubID}/tags/ [get] func (l *ClubTagController) GetClubTags(c *fiber.Ctx) error { clubTags, err := l.clubTagService.GetClubTags(c.Params("clubID")) if err != nil { @@ -81,7 +81,7 @@ func (l *ClubTagController) GetClubTags(c *fiber.Ctx) error { // @Failure 401 {object} errors.Error // @Failure 404 {object} errors.Error // @Failure 500 {object} errors.Error -// @Router /club/{clubID}/tags/{tagID} [delete] +// @Router /clubs/{clubID}/tags/{tagID}/ [delete] func (l *ClubTagController) DeleteClubTag(c *fiber.Ctx) error { err := l.clubTagService.DeleteClubTag(c.Params("clubID"), c.Params("tagID")) if err != nil { diff --git a/backend/src/controllers/contact.go b/backend/src/controllers/contact.go index b343bd0c2..6fb996817 100644 --- a/backend/src/controllers/contact.go +++ b/backend/src/controllers/contact.go @@ -15,20 +15,20 @@ func NewContactController(contactService services.ContactServiceInterface) *Cont return &ContactController{contactService: contactService} } -// CreateContact godoc +// GetContact godoc // -// @Summary Creates a contact -// @Description Creates a contact -// @ID create-contact +// @Summary Retrieves a contact +// @Description Retrieves a contact by id +// @ID get-contact // @Tags contact // @Accept json // @Produce json -// @Param contactBody body models.Contact true "Contact Body" +// @Param contactID path string true "Contact ID" // @Success 201 {object} models.Contact // @Failure 400 {string} errors.Error // @Failure 404 {string} errors.Error // @Failure 500 {string} errors.Error -// @Router /contact/ [post] +// @Router /contacts/{contactID}/ [get] func (co *ContactController) GetContact(c *fiber.Ctx) error { contact, err := co.contactService.GetContact(c.Params("contactID")) if err != nil { @@ -51,7 +51,7 @@ func (co *ContactController) GetContact(c *fiber.Ctx) error { // @Failure 400 {string} errors.Error // @Failure 404 {string} errors.Error // @Failure 500 {string} errors.Error -// @Router /contact/ [get] +// @Router /contacts/ [get] func (co *ContactController) GetContacts(c *fiber.Ctx) error { defaultLimit := 10 defaultPage := 1 @@ -64,20 +64,20 @@ func (co *ContactController) GetContacts(c *fiber.Ctx) error { return c.Status(fiber.StatusOK).JSON(contacts) } -// CreateContact godoc +// DeleteContact godoc // -// @Summary Creates a contact -// @Description Creates a contact -// @ID create-contact +// @Summary Deletes a contact +// @Description Deletes a contact +// @ID delete-contact // @Tags contact // @Accept json // @Produce json -// @Param contactBody body models.Contact true "Contact Body" +// @Param contactID path string true "Contact ID" // @Success 201 {object} models.Contact // @Failure 400 {string} errors.Error // @Failure 404 {string} errors.Error // @Failure 500 {string} errors.Error -// @Router /contact/ [post] +// @Router /contacts/{contactID}/ [delete] func (co *ContactController) DeleteContact(c *fiber.Ctx) error { err := co.contactService.DeleteContact(c.Params("contactID")) if err != nil { diff --git a/backend/src/controllers/event.go b/backend/src/controllers/event.go index 0148a594b..53433bba1 100644 --- a/backend/src/controllers/event.go +++ b/backend/src/controllers/event.go @@ -30,7 +30,7 @@ func NewEventController(eventService services.EventServiceInterface) *EventContr // @Failure 400 {object} errors.Error // @Failure 404 {object} errors.Error // @Failure 500 {object} errors.Error -// @Router /event/ [get] +// @Router /events/ [get] func (e *EventController) GetAllEvents(c *fiber.Ctx) error { defaultLimit := 10 defaultPage := 1 @@ -55,7 +55,7 @@ func (e *EventController) GetAllEvents(c *fiber.Ctx) error { // @Failure 400 {object} errors.Error // @Failure 404 {object} errors.Error // @Failure 500 {object} errors.Error -// @Router /event/{eventID} [get] +// @Router /events/{eventID}/ [get] func (e *EventController) GetEvent(c *fiber.Ctx) error { event, err := e.eventService.GetEvent(c.Params("eventID")) if err != nil { @@ -77,7 +77,7 @@ func (e *EventController) GetEvent(c *fiber.Ctx) error { // @Failure 400 {object} errors.Error // @Failure 404 {object} errors.Error // @Failure 500 {object} errors.Error -// @Router /event/{eventID}/series [get] +// @Router /events/{eventID}/series/ [get] func (e *EventController) GetSeriesByEventID(c *fiber.Ctx) error { events, err := e.eventService.GetSeriesByEventID(c.Params("eventID")) if err != nil { @@ -94,12 +94,13 @@ func (e *EventController) GetSeriesByEventID(c *fiber.Ctx) error { // @ID get-series-by-id // @Tags event // @Produce json +// @Param eventID path string true "Event ID" // @Param seriesID path string true "Series ID" // @Success 200 {object} models.Series // @Failure 400 {object} errors.Error // @Failure 404 {object} errors.Error // @Failure 500 {object} errors.Error -// @Router /series/{seriesID} [get] +// @Router /events/{eventID}/series/{seriesID}/ [get] func (e *EventController) GetSeriesByID(c *fiber.Ctx) error { events, err := e.eventService.GetSeriesByID(c.Params("seriesID")) if err != nil { @@ -123,7 +124,7 @@ func (e *EventController) GetSeriesByID(c *fiber.Ctx) error { // @Failure 401 {object} errors.Error // @Failure 404 {object} errors.Error // @Failure 500 {object} errors.Error -// @Router /event/ [post] +// @Router /events/ [post] func (e *EventController) CreateEvent(c *fiber.Ctx) error { var eventBody models.CreateEventRequestBody if err := c.BodyParser(&eventBody); err != nil { @@ -153,7 +154,7 @@ func (e *EventController) CreateEvent(c *fiber.Ctx) error { // @Failure 401 {object} errors.Error // @Failure 404 {object} errors.Error // @Failure 500 {object} errors.Error -// @Router /event/{eventID}/series [post] +// @Router /events/{eventID}/series/ [patch] func (e *EventController) UpdateEvent(c *fiber.Ctx) error { var eventBody models.UpdateEventRequestBody if err := c.BodyParser(&eventBody); err != nil { @@ -176,7 +177,7 @@ func (e *EventController) UpdateEvent(c *fiber.Ctx) error { // @Tags event // @Accept json // @Produce json -// @Param eventID path string true "Event ID" +// @Param eventID path string true "Event ID" // @Param seriesID path string true "Series ID" // @Param seriesBody body models.UpdateSeriesRequestBody true "Series Body" // @Success 200 {object} models.Series @@ -184,7 +185,7 @@ func (e *EventController) UpdateEvent(c *fiber.Ctx) error { // @Failure 401 {object} errors.Error // @Failure 404 {object} errors.Error // @Failure 500 {object} errors.Error -// @Router /event/{eventID}/series/{seriesID} [put] +// @Router /events/{eventID}/series/{seriesID}/ [patch] func (e *EventController) UpdateSeriesByID(c *fiber.Ctx) error { var seriesBody models.UpdateSeriesRequestBody if err := c.BodyParser(&seriesBody); err != nil { @@ -206,13 +207,14 @@ func (e *EventController) UpdateSeriesByID(c *fiber.Ctx) error { // @ID delete-series-by-id // @Tags event // @Produce json +// @Param eventID path string true "Event ID" // @Param seriesID path string true "Series ID" // @Success 204 {string} utilities.SuccessResponse // @Failure 400 {object} errors.Error // @Failure 401 {object} errors.Error // @Failure 404 {object} errors.Error // @Failure 500 {object} errors.Error -// @Router /series/{seriesID} [delete] +// @Router /events/{eventID}/series/{seriesID}/ [delete] func (e *EventController) DeleteSeriesByID(c *fiber.Ctx) error { if err := e.eventService.DeleteSeriesByID(c.Params("seriesID")); err != nil { return err.FiberError(c) @@ -234,7 +236,7 @@ func (e *EventController) DeleteSeriesByID(c *fiber.Ctx) error { // @Failure 401 {object} errors.Error // @Failure 404 {object} errors.Error // @Failure 500 {object} errors.Error -// @Router /event/{eventID}/series [delete] +// @Router /events/{eventID}/series/ [delete] func (e *EventController) DeleteSeriesByEventID(c *fiber.Ctx) error { if err := e.eventService.DeleteSeriesByEventID(c.Params("eventID")); err != nil { return err.FiberError(c) @@ -256,7 +258,7 @@ func (e *EventController) DeleteSeriesByEventID(c *fiber.Ctx) error { // @Failure 401 {object} errors.Error // @Failure 404 {object} errors.Error // @Failure 500 {object} errors.Error -// @Router /event/{eventID} [delete] +// @Router /events/{eventID}/ [delete] func (l *EventController) DeleteEvent(c *fiber.Ctx) error { if err := l.eventService.DeleteEvent(c.Params("eventID")); err != nil { return err.FiberError(c) diff --git a/backend/src/controllers/tag.go b/backend/src/controllers/tag.go index 26f7fef44..db945316d 100644 --- a/backend/src/controllers/tag.go +++ b/backend/src/controllers/tag.go @@ -86,7 +86,7 @@ func (t *TagController) CreateTag(c *fiber.Ctx) error { // @Failure 400 {object} errors.Error // @Failure 404 {object} errors.Error // @Failure 500 {object} errors.Error -// @Router /tags/{tagID} [get] +// @Router /tags/{tagID}/ [get] func (t *TagController) GetTag(c *fiber.Ctx) error { tag, err := t.tagService.GetTag(c.Params("tagID")) if err != nil { @@ -111,7 +111,7 @@ func (t *TagController) GetTag(c *fiber.Ctx) error { // @Failure 401 {object} errors.Error // @Failure 404 {object} errors.Error // @Failure 500 {object} errors.Error -// @Router /tags/{tagID} [put] +// @Router /tags/{tagID}/ [patch] func (t *TagController) UpdateTag(c *fiber.Ctx) error { var tagBody models.UpdateTagRequestBody @@ -140,7 +140,7 @@ func (t *TagController) UpdateTag(c *fiber.Ctx) error { // @Failure 401 {object} errors.Error // @Failure 404 {object} errors.Error // @Failure 500 {object} errors.Error -// @Router /tags/{tagID} [delete] +// @Router /tags/{tagID}/ [delete] func (t *TagController) DeleteTag(c *fiber.Ctx) error { err := t.tagService.DeleteTag(c.Params("tagID")) if err != nil { diff --git a/backend/src/controllers/user.go b/backend/src/controllers/user.go index f2002be72..d8bc8443a 100644 --- a/backend/src/controllers/user.go +++ b/backend/src/controllers/user.go @@ -32,7 +32,7 @@ func NewUserController(userService services.UserServiceInterface) *UserControlle // @Failure 401 {object} errors.Error // @Failure 404 {object} errors.Error // @Failure 500 {object} errors.Error -// @Router /user/ [post] +// @Router /users/ [post] func (u *UserController) CreateUser(c *fiber.Ctx) error { var userBody models.CreateUserRequestBody @@ -61,6 +61,7 @@ func (u *UserController) CreateUser(c *fiber.Ctx) error { // @Failure 401 {object} errors.Error // @Failure 400 {object} errors.Error // @Failure 500 {object} errors.Error +// @Router /users/ [get] func (u *UserController) GetUsers(c *fiber.Ctx) error { defaultLimit := 10 defaultPage := 1 @@ -86,7 +87,7 @@ func (u *UserController) GetUsers(c *fiber.Ctx) error { // @Failure 401 {object} errors.Error // @Failure 404 {object} errors.Error // @Failure 500 {object} errors.Error -// @Router /user/{userID} [get] +// @Router /users/{userID}/ [get] func (u *UserController) GetUser(c *fiber.Ctx) error { user, err := u.userService.GetUser(c.Params("userID")) if err != nil { @@ -111,7 +112,7 @@ func (u *UserController) GetUser(c *fiber.Ctx) error { // @Failure 401 {object} errors.Error // @Failure 404 {object} errors.Error // @Failure 500 {object} errors.Error -// @Router /user/{userID} [put] +// @Router /users/{userID}/ [patch] func (u *UserController) UpdateUser(c *fiber.Ctx) error { var user models.UpdateUserRequestBody @@ -141,7 +142,7 @@ func (u *UserController) UpdateUser(c *fiber.Ctx) error { // @Failure 401 {object} errors.Error // @Failure 404 {object} errors.Error // @Failure 500 {object} errors.Error -// @Router /user/{userID} [delete] +// @Router /users/{userID}/ [delete] func (u *UserController) DeleteUser(c *fiber.Ctx) error { err := u.userService.DeleteUser(c.Params("userID")) if err != nil { diff --git a/backend/src/controllers/user_follower.go b/backend/src/controllers/user_follower.go index fe7c25980..5298b5896 100644 --- a/backend/src/controllers/user_follower.go +++ b/backend/src/controllers/user_follower.go @@ -27,7 +27,7 @@ func NewUserFollowerController(userFollowerService services.UserFollowerServiceI // @Failure 401 {object} errors.Error // @Failure 404 {object} errors.Error // @Failure 500 {object} errors.Error -// @Router /user/{userID}/following/{clubID} [post] +// @Router /users/{userID}/follower/{clubID}/ [post] func (uf *UserFollowerController) CreateFollowing(c *fiber.Ctx) error { err := uf.userFollowerService.CreateFollowing(c.Params("userID"), c.Params("clubID")) if err != nil { @@ -50,7 +50,7 @@ func (uf *UserFollowerController) CreateFollowing(c *fiber.Ctx) error { // @Failure 401 {object} errors.Error // @Failure 404 {object} errors.Error // @Failure 500 {object} errors.Error -// @Router /user/{userID}/following/{clubID} [delete] +// @Router /users/{userID}/follower/{clubID}/ [delete] func (uf *UserFollowerController) DeleteFollowing(c *fiber.Ctx) error { err := uf.userFollowerService.DeleteFollowing(c.Params("userID"), c.Params("clubID")) if err != nil { @@ -72,7 +72,7 @@ func (uf *UserFollowerController) DeleteFollowing(c *fiber.Ctx) error { // @Failure 401 {object} errors.Error // @Failure 404 {object} errors.Error // @Failure 500 {object} errors.Error -// @Router /user/{userID}/following [get] +// @Router /users/{userID}/follower/ [get] func (uf *UserFollowerController) GetAllFollowing(c *fiber.Ctx) error { clubs, err := uf.userFollowerService.GetFollowing(c.Params("userID")) if err != nil { diff --git a/backend/src/controllers/user_member.go b/backend/src/controllers/user_member.go index d91a61f51..1833cd9a9 100644 --- a/backend/src/controllers/user_member.go +++ b/backend/src/controllers/user_member.go @@ -27,7 +27,7 @@ func NewUserMemberController(clubMemberService services.UserMemberServiceInterfa // @Failure 401 {object} errors.Error // @Failure 404 {object} errors.Error // @Failure 500 {object} errors.Error -// @Router /user/{userID}/membership/{clubID} [post] +// @Router /users/{userID}/member/{clubID}/ [post] func (um *UserMemberController) CreateMembership(c *fiber.Ctx) error { err := um.clubMemberService.CreateMembership(c.Params("userID"), c.Params("clubID")) if err != nil { @@ -51,7 +51,7 @@ func (um *UserMemberController) CreateMembership(c *fiber.Ctx) error { // @Failure 401 {object} errors.Error // @Failure 404 {object} errors.Error // @Failure 500 {object} errors.Error -// @Router /user/{userID}/membership/{clubID} [delete] +// @Router /users/{userID}/member/{clubID}/ [delete] func (um *UserMemberController) DeleteMembership(c *fiber.Ctx) error { err := um.clubMemberService.DeleteMembership(c.Params("userID"), c.Params("clubID")) if err != nil { @@ -74,7 +74,7 @@ func (um *UserMemberController) DeleteMembership(c *fiber.Ctx) error { // @Failure 401 {object} errors.Error // @Failure 404 {object} errors.Error // @Failure 500 {object} errors.Error -// @Router /user/{userID}/membership [get] +// @Router /users/{userID}/member/ [get] func (um *UserMemberController) GetMembership(c *fiber.Ctx) error { followers, err := um.clubMemberService.GetMembership(c.Params("userID")) if err != nil { diff --git a/backend/src/controllers/user_tag.go b/backend/src/controllers/user_tag.go index 3612a0d40..66db53f4f 100644 --- a/backend/src/controllers/user_tag.go +++ b/backend/src/controllers/user_tag.go @@ -28,7 +28,7 @@ func NewUserTagController(userTagService services.UserTagServiceInterface) *User // @Failure 401 {object} errors.Error // @Failure 404 {object} errors.Error // @Failure 500 {object} errors.Error -// @Router /user/{userID}/tags [get] +// @Router /users/{userID}/tags/ [get] func (ut *UserTagController) GetUserTags(c *fiber.Ctx) error { tags, err := ut.userTagService.GetUserTags(c.Params("userID")) if err != nil { @@ -52,7 +52,7 @@ func (ut *UserTagController) GetUserTags(c *fiber.Ctx) error { // @Failure 401 {object} errors.Error // @Failure 404 {object} errors.Error // @Failure 500 {object} errors.Error -// @Router /user/{userID}/tags [post] +// @Router /users/{userID}/tags/ [post] func (ut *UserTagController) CreateUserTags(c *fiber.Ctx) error { var requestBody models.CreateUserTagsBody if err := c.BodyParser(&requestBody); err != nil { diff --git a/backend/src/docs/docs.go b/backend/src/docs/docs.go index f4567f619..a25dc2d64 100644 --- a/backend/src/docs/docs.go +++ b/backend/src/docs/docs.go @@ -97,6 +97,7 @@ const docTemplate = `{ }, "/auth/me": { "get": { + "description": "Returns the current user associated with an auth session", "produces": [ "application/json" @@ -241,7 +242,7 @@ const docTemplate = `{ } } }, - "/category/": { + "/categories/": { "get": { "description": "Retrieves all categories", "produces": [ @@ -354,7 +355,7 @@ const docTemplate = `{ } } }, - "/category/{categoryID}": { + "/categories/{categoryID}/": { "get": { "description": "Retrieves a category", "produces": [ @@ -401,19 +402,16 @@ const docTemplate = `{ } } }, - "put": { - "description": "Updates a category", - "consumes": [ - "application/json" - ], + "delete": { + "description": "Deletes a category", "produces": [ "application/json" ], "tags": [ "category" ], - "summary": "Updates a category", - "operationId": "update-category", + "summary": "Deletes a category", + "operationId": "delete-category", "parameters": [ { "type": "string", @@ -421,22 +419,13 @@ const docTemplate = `{ "name": "categoryID", "in": "path", "required": true - }, - { - "description": "Category Body", - "name": "categoryBody", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.CategoryRequestBody" - } } ], "responses": { - "200": { - "description": "OK", + "204": { + "description": "No Content", "schema": { - "$ref": "#/definitions/models.Category" + "type": "string" } }, "400": { @@ -465,16 +454,19 @@ const docTemplate = `{ } } }, - "delete": { - "description": "Deletes a category", + "patch": { + "description": "Updates a category", + "consumes": [ + "application/json" + ], "produces": [ "application/json" ], "tags": [ "category" ], - "summary": "Deletes a category", - "operationId": "delete-category", + "summary": "Updates a category", + "operationId": "update-category", "parameters": [ { "type": "string", @@ -482,13 +474,22 @@ const docTemplate = `{ "name": "categoryID", "in": "path", "required": true + }, + { + "description": "Category Body", + "name": "categoryBody", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.CategoryRequestBody" + } } ], "responses": { - "204": { - "description": "No Content", + "200": { + "description": "OK", "schema": { - "type": "string" + "$ref": "#/definitions/models.Category" } }, "400": { @@ -518,7 +519,7 @@ const docTemplate = `{ } } }, - "/category/{categoryID}/tags": { + "/categories/{categoryID}/tags/": { "get": { "description": "Retrieves all tags associated with a category", "produces": [ @@ -581,7 +582,7 @@ const docTemplate = `{ } } }, - "/category/{categoryID}/tags/{tagID}": { + "/categories/{categoryID}/tags/{tagID}/": { "get": { "description": "Retrieves a tag associated with a category", "produces": [ @@ -636,7 +637,7 @@ const docTemplate = `{ } } }, - "/club/": { + "/clubs/": { "get": { "description": "Retrieves all clubs", "produces": [ @@ -743,7 +744,7 @@ const docTemplate = `{ } } }, - "/club/{clubID}": { + "/clubs/{clubID}/": { "get": { "description": "Retrieves a club", "produces": [ @@ -790,19 +791,16 @@ const docTemplate = `{ } } }, - "put": { - "description": "Updates a club", - "consumes": [ - "application/json" - ], + "delete": { + "description": "Deletes a club", "produces": [ "application/json" ], "tags": [ "club" ], - "summary": "Update a club", - "operationId": "update-club", + "summary": "Delete a club", + "operationId": "delete-club", "parameters": [ { "type": "string", @@ -810,22 +808,13 @@ const docTemplate = `{ "name": "clubID", "in": "path", "required": true - }, - { - "description": "Club", - "name": "club", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.UpdateClubRequestBody" - } } ], "responses": { - "200": { - "description": "OK", + "204": { + "description": "No Content", "schema": { - "$ref": "#/definitions/models.Club" + "type": "string" } }, "400": { @@ -854,16 +843,19 @@ const docTemplate = `{ } } }, - "delete": { - "description": "Deletes a club", + "patch": { + "description": "Updates a club", + "consumes": [ + "application/json" + ], "produces": [ "application/json" ], "tags": [ "club" ], - "summary": "Delete a club", - "operationId": "delete-club", + "summary": "Update a club", + "operationId": "update-club", "parameters": [ { "type": "string", @@ -871,13 +863,22 @@ const docTemplate = `{ "name": "clubID", "in": "path", "required": true + }, + { + "description": "Club", + "name": "club", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.UpdateClubRequestBody" + } } ], "responses": { - "204": { - "description": "No Content", + "200": { + "description": "OK", "schema": { - "type": "string" + "$ref": "#/definitions/models.Club" } }, "400": { @@ -907,7 +908,7 @@ const docTemplate = `{ } } }, - "/club/{clubID}/contacts": { + "/clubs/{clubID}/contacts/": { "get": { "description": "Retrieves all contacts associated with a club", "produces": [ @@ -957,7 +958,7 @@ const docTemplate = `{ } } }, - "post": { + "put": { "description": "Creates a contact", "consumes": [ "application/json" @@ -969,7 +970,7 @@ const docTemplate = `{ "club-contact" ], "summary": "Creates a contact", - "operationId": "create-contact", + "operationId": "put-contact", "parameters": [ { "type": "string", @@ -1022,7 +1023,7 @@ const docTemplate = `{ } } }, - "/club/{clubID}/events": { + "/clubs/{clubID}/events/": { "get": { "description": "Retrieves all events associated with a club", "produces": [ @@ -1085,7 +1086,7 @@ const docTemplate = `{ } } }, - "/club/{clubID}/followers": { + "/clubs/{clubID}/followers/": { "get": { "description": "Retrieves all followers associated with a club", "produces": [ @@ -1148,7 +1149,7 @@ const docTemplate = `{ } } }, - "/club/{clubID}/members": { + "/clubs/{clubID}/members/": { "get": { "description": "Retrieves all members associated with a club", "produces": [ @@ -1217,7 +1218,7 @@ const docTemplate = `{ } } }, - "/club/{clubID}/tags": { + "/clubs/{clubID}/tags/": { "get": { "description": "Retrieves all tags associated with a club", "produces": [ @@ -1335,7 +1336,7 @@ const docTemplate = `{ } } }, - "/club/{clubID}/tags/{tagID}": { + "/clubs/{clubID}/tags/{tagID}/": { "delete": { "description": "Deletes a tag associated with a club", "produces": [ @@ -1396,7 +1397,7 @@ const docTemplate = `{ } } }, - "/contact/": { + "/contacts/": { "get": { "description": "Retrieves all contacts", "produces": [ @@ -1450,9 +1451,11 @@ const docTemplate = `{ } } } - }, - "post": { - "description": "Creates a contact", + } + }, + "/contacts/{contactID}/": { + "get": { + "description": "Retrieves a contact by id", "consumes": [ "application/json" ], @@ -1462,17 +1465,64 @@ const docTemplate = `{ "tags": [ "contact" ], - "summary": "Creates a contact", - "operationId": "create-contact", + "summary": "Retrieves a contact", + "operationId": "get-contact", "parameters": [ { - "description": "Contact Body", - "name": "contactBody", - "in": "body", - "required": true, + "type": "string", + "description": "Contact ID", + "name": "contactID", + "in": "path", + "required": true + } + ], + "responses": { + "201": { + "description": "Created", "schema": { "$ref": "#/definitions/models.Contact" } + }, + "400": { + "description": "Bad Request", + "schema": { + "type": "string" + } + }, + "404": { + "description": "Not Found", + "schema": { + "type": "string" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "type": "string" + } + } + } + }, + "delete": { + "description": "Deletes a contact", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "contact" + ], + "summary": "Deletes a contact", + "operationId": "delete-contact", + "parameters": [ + { + "type": "string", + "description": "Contact ID", + "name": "contactID", + "in": "path", + "required": true } ], "responses": { @@ -1503,7 +1553,7 @@ const docTemplate = `{ } } }, - "/event/": { + "/events/": { "get": { "description": "Retrieves all events", "produces": [ @@ -1616,7 +1666,7 @@ const docTemplate = `{ } } }, - "/event/{eventID}": { + "/events/{eventID}/": { "get": { "description": "Retrieves an event", "produces": [ @@ -1716,7 +1766,7 @@ const docTemplate = `{ } } }, - "/event/{eventID}/series": { + "/events/{eventID}/series/": { "get": { "description": "Retrieves all series associated with an event", "produces": [ @@ -1766,19 +1816,16 @@ const docTemplate = `{ } } }, - "post": { - "description": "Creates a series", - "consumes": [ - "application/json" - ], + "delete": { + "description": "Deletes all series associated with an event", "produces": [ "application/json" ], "tags": [ "event" ], - "summary": "Create a series", - "operationId": "create-series", + "summary": "Delete all series by event", + "operationId": "delete-series-by-event", "parameters": [ { "type": "string", @@ -1786,22 +1833,13 @@ const docTemplate = `{ "name": "eventID", "in": "path", "required": true - }, - { - "description": "Series Body", - "name": "seriesBody", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.CreateSeriesRequestBody" - } } ], "responses": { - "201": { - "description": "Created", + "204": { + "description": "No Content", "schema": { - "$ref": "#/definitions/models.Series" + "type": "string" } }, "400": { @@ -1830,16 +1868,19 @@ const docTemplate = `{ } } }, - "delete": { - "description": "Deletes all series associated with an event", + "patch": { + "description": "Creates a series", + "consumes": [ + "application/json" + ], "produces": [ "application/json" ], "tags": [ "event" ], - "summary": "Delete all series by event", - "operationId": "delete-series-by-event", + "summary": "Create a series", + "operationId": "create-series", "parameters": [ { "type": "string", @@ -1847,13 +1888,22 @@ const docTemplate = `{ "name": "eventID", "in": "path", "required": true + }, + { + "description": "Series Body", + "name": "seriesBody", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.CreateSeriesRequestBody" + } } ], "responses": { - "204": { - "description": "No Content", + "201": { + "description": "Created", "schema": { - "type": "string" + "$ref": "#/definitions/models.Series" } }, "400": { @@ -1883,20 +1933,17 @@ const docTemplate = `{ } } }, - "/event/{eventID}/series/{seriesID}": { - "put": { - "description": "Updates a series by ID", - "consumes": [ - "application/json" - ], + "/events/{eventID}/series/{seriesID}/": { + "get": { + "description": "Retrieves a series by ID", "produces": [ "application/json" ], "tags": [ "event" ], - "summary": "Update a series by ID", - "operationId": "update-series-by-id", + "summary": "Retrieve a series by ID", + "operationId": "get-series-by-id", "parameters": [ { "type": "string", @@ -1911,15 +1958,6 @@ const docTemplate = `{ "name": "seriesID", "in": "path", "required": true - }, - { - "description": "Series Body", - "name": "seriesBody", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.UpdateSeriesRequestBody" - } } ], "responses": { @@ -1935,12 +1973,6 @@ const docTemplate = `{ "$ref": "#/definitions/errors.Error" } }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, "404": { "description": "Not Found", "schema": { @@ -1954,20 +1986,25 @@ const docTemplate = `{ } } } - } - }, - "/series/{seriesID}": { - "get": { - "description": "Retrieves a series by ID", + }, + "delete": { + "description": "Deletes a series by ID", "produces": [ "application/json" ], "tags": [ "event" ], - "summary": "Retrieve a series by ID", - "operationId": "get-series-by-id", + "summary": "Delete a series by ID", + "operationId": "delete-series-by-id", "parameters": [ + { + "type": "string", + "description": "Event ID", + "name": "eventID", + "in": "path", + "required": true + }, { "type": "string", "description": "Series ID", @@ -1977,10 +2014,10 @@ const docTemplate = `{ } ], "responses": { - "200": { - "description": "OK", + "204": { + "description": "No Content", "schema": { - "$ref": "#/definitions/models.Series" + "type": "string" } }, "400": { @@ -1989,6 +2026,12 @@ const docTemplate = `{ "$ref": "#/definitions/errors.Error" } }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, "404": { "description": "Not Found", "schema": { @@ -2003,30 +2046,49 @@ const docTemplate = `{ } } }, - "delete": { - "description": "Deletes a series by ID", + "patch": { + "description": "Updates a series by ID", + "consumes": [ + "application/json" + ], "produces": [ "application/json" ], "tags": [ "event" ], - "summary": "Delete a series by ID", - "operationId": "delete-series-by-id", + "summary": "Update a series by ID", + "operationId": "update-series-by-id", "parameters": [ + { + "type": "string", + "description": "Event ID", + "name": "eventID", + "in": "path", + "required": true + }, { "type": "string", "description": "Series ID", "name": "seriesID", "in": "path", "required": true + }, + { + "description": "Series Body", + "name": "seriesBody", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.UpdateSeriesRequestBody" + } } ], "responses": { - "204": { - "description": "No Content", + "200": { + "description": "OK", "schema": { - "type": "string" + "$ref": "#/definitions/models.Series" } }, "400": { @@ -2056,8 +2118,8 @@ const docTemplate = `{ } } }, - "/tags": { - "get": { + "/tags/": { + "post": { "description": "Retrieves all tags", "produces": [ "application/json" @@ -2171,7 +2233,7 @@ const docTemplate = `{ } } }, - "/tags/{tagID}": { + "/tags/{tagID}/": { "get": { "description": "Retrieves a tag", "produces": [ @@ -2333,9 +2395,127 @@ const docTemplate = `{ } } } + }, + "patch": { + "description": "Updates a tag", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "tag" + ], + "summary": "Update a tag", + "operationId": "update-tag", + "parameters": [ + { + "type": "string", + "description": "Tag ID", + "name": "tagID", + "in": "path", + "required": true + }, + { + "description": "Tag", + "name": "tag", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.TagRequestBody" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/models.Tag" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } } }, - "/user/": { + "/users/": { + "get": { + "description": "Retrieves all users", + "produces": [ + "application/json" + ], + "tags": [ + "user" + ], + "summary": "Retrieve all users", + "operationId": "get-users", + "parameters": [ + { + "type": "integer", + "description": "Limit", + "name": "limit", + "in": "query" + }, + { + "type": "integer", + "description": "Page", + "name": "page", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/models.User" + } + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, "post": { "description": "Creates a user", "consumes": [ @@ -2394,7 +2574,7 @@ const docTemplate = `{ } } }, - "/user/{userID}": { + "/users/{userID}/": { "get": { "description": "Retrieves a user", "produces": [ @@ -2447,19 +2627,16 @@ const docTemplate = `{ } } }, - "put": { - "description": "Updates a user", - "consumes": [ - "application/json" - ], + "delete": { + "description": "Deletes a user", "produces": [ "application/json" ], "tags": [ "user" ], - "summary": "Update a user", - "operationId": "update-user", + "summary": "Delete a user", + "operationId": "delete-user", "parameters": [ { "type": "string", @@ -2467,22 +2644,13 @@ const docTemplate = `{ "name": "userID", "in": "path", "required": true - }, - { - "description": "User Body", - "name": "userBody", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.UpdateUserRequestBody" - } } ], "responses": { - "200": { - "description": "OK", + "204": { + "description": "No Content", "schema": { - "$ref": "#/definitions/models.User" + "type": "string" } }, "400": { @@ -2511,16 +2679,19 @@ const docTemplate = `{ } } }, - "delete": { - "description": "Deletes a user", + "patch": { + "description": "Updates a user", + "consumes": [ + "application/json" + ], "produces": [ "application/json" ], "tags": [ "user" ], - "summary": "Delete a user", - "operationId": "delete-user", + "summary": "Update a user", + "operationId": "update-user", "parameters": [ { "type": "string", @@ -2528,13 +2699,22 @@ const docTemplate = `{ "name": "userID", "in": "path", "required": true + }, + { + "description": "User Body", + "name": "userBody", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.UpdateUserRequestBody" + } } ], "responses": { - "204": { - "description": "No Content", + "200": { + "description": "OK", "schema": { - "type": "string" + "$ref": "#/definitions/models.User" } }, "400": { @@ -2564,7 +2744,7 @@ const docTemplate = `{ } } }, - "/user/{userID}/following": { + "/users/{userID}/follower/": { "get": { "description": "Retrieves all clubs a user is following", "produces": [ @@ -2621,7 +2801,7 @@ const docTemplate = `{ } } }, - "/user/{userID}/following/{clubID}": { + "/users/{userID}/follower/{clubID}/": { "post": { "description": "Follow a club", "consumes": [ @@ -2735,7 +2915,7 @@ const docTemplate = `{ } } }, - "/user/{userID}/membership": { + "/users/{userID}/member/": { "get": { "description": "Retrieves all clubs a user is a member of", "produces": [ @@ -2792,7 +2972,7 @@ const docTemplate = `{ } } }, - "/user/{userID}/membership/{clubID}": { + "/users/{userID}/member/{clubID}/": { "post": { "description": "Join a club", "consumes": [ @@ -2906,7 +3086,7 @@ const docTemplate = `{ } } }, - "/user/{userID}/tags": { + "/users/{userID}/tags/": { "get": { "description": "Retrieves all tags associated with a user", "produces": [ @@ -3967,12 +4147,6 @@ const docTemplate = `{ "year" ], "properties": { - "clubs_followed": { - "type": "array", - "items": { - "$ref": "#/definitions/models.Club" - } - }, "college": { "maxLength": 255, "allOf": [ diff --git a/backend/src/docs/swagger.json b/backend/src/docs/swagger.json index 15b74f97b..bfb2d40cb 100644 --- a/backend/src/docs/swagger.json +++ b/backend/src/docs/swagger.json @@ -1,4051 +1,3843 @@ { - "swagger": "2.0", - "info": { - "description": "Backend Server for SAC App", - "title": "SAC API", - "contact": { - "name": "David Oduneye and Garrett Ladley", - "email": "generatesac@gmail.com" - }, - "version": "1.0" + "swagger": "2.0", + "info": { + "description": "Backend Server for SAC App", + "title": "SAC API", + "contact": { + "name": "David Oduneye and Garrett Ladley", + "email": "generatesac@gmail.com" }, - "host": "127.0.0.1:8080", - "basePath": "/api/v1", - "paths": { - "/auth/login": { - "post": { - "description": "Logs in a user", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "auth" - ], - "summary": "Logs in a user", - "operationId": "login-user", - "parameters": [ - { - "description": "Login Body", - "name": "loginBody", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.LoginUserResponseBody" - } - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/utilities.SuccessResponse" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/auth/logout": { - "get": { - "description": "Logs out a user", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "auth" - ], - "summary": "Logs out a user", - "operationId": "logout-user", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/utilities.SuccessResponse" - } - } - } - } - }, - "/auth/me": { - "get": { - "description": "Returns the current user associated with an auth session", - "produces": [ - "application/json" - ], - "tags": [ - "auth" - ], - "summary": "Retrieve the current user given an auth session", - "operationId": "get-current-user", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/models.User" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/auth/refresh": { - "get": { - "description": "Refreshes a user's access token", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "auth" - ], - "summary": "Refreshes a user's access token", - "operationId": "refresh-user", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/utilities.SuccessResponse" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/auth/update-password/:userID": { - "post": { - "description": "Updates a user's password", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "auth" - ], - "summary": "Updates a user's password", - "operationId": "update-password", - "parameters": [ - { - "description": "User Body", - "name": "userBody", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.UpdatePasswordRequestBody" - } - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/utilities.SuccessResponse" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/category/": { - "get": { - "description": "Retrieves all categories", - "produces": [ - "application/json" - ], - "tags": [ - "category" - ], - "summary": "Retrieve all categories", - "operationId": "get-categories", - "parameters": [ - { - "type": "integer", - "description": "Limit", - "name": "limit", - "in": "query" - }, - { - "type": "integer", - "description": "Page", - "name": "page", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/models.Category" - } - } - }, - "400": { - "description": "Bad Request", - "schema": { - "type": "string" - } - }, - "404": { - "description": "Not Found", - "schema": { - "type": "string" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "type": "string" - } - } - } - }, - "post": { - "description": "Creates a category", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "category" - ], - "summary": "Creates a category", - "operationId": "create-category", - "parameters": [ - { - "description": "Category Body", - "name": "categoryBody", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.CategoryRequestBody" - } - } - ], - "responses": { - "201": { - "description": "Created", - "schema": { - "$ref": "#/definitions/models.Category" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "type": "string" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "type": "string" - } - }, - "404": { - "description": "Not Found", - "schema": { - "type": "string" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "type": "string" - } - } - } - } - }, - "/category/{categoryID}": { - "get": { - "description": "Retrieves a category", - "produces": [ - "application/json" - ], - "tags": [ - "category" - ], - "summary": "Retrieve a category", - "operationId": "get-category", - "parameters": [ - { - "type": "string", - "description": "Category ID", - "name": "categoryID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/models.Category" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "type": "string" - } - }, - "404": { - "description": "Not Found", - "schema": { - "type": "string" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "type": "string" - } - } - } - }, - "put": { - "description": "Updates a category", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "category" - ], - "summary": "Updates a category", - "operationId": "update-category", - "parameters": [ - { - "type": "string", - "description": "Category ID", - "name": "categoryID", - "in": "path", - "required": true - }, - { - "description": "Category Body", - "name": "categoryBody", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.CategoryRequestBody" - } - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/models.Category" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "type": "string" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "type": "string" - } - }, - "404": { - "description": "Not Found", - "schema": { - "type": "string" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "type": "string" - } - } - } - }, - "delete": { - "description": "Deletes a category", - "produces": [ - "application/json" - ], - "tags": [ - "category" - ], - "summary": "Deletes a category", - "operationId": "delete-category", - "parameters": [ - { - "type": "string", - "description": "Category ID", - "name": "categoryID", - "in": "path", - "required": true - } - ], - "responses": { - "204": { - "description": "No Content", - "schema": { - "type": "string" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "type": "string" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "type": "string" - } - }, - "404": { - "description": "Not Found", - "schema": { - "type": "string" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "type": "string" - } - } - } - } - }, - "/category/{categoryID}/tags": { - "get": { - "description": "Retrieves all tags associated with a category", - "produces": [ - "application/json" - ], - "tags": [ - "category-tag" - ], - "summary": "Retrieve all tags by category", - "operationId": "get-tags-by-category", - "parameters": [ - { - "type": "string", - "description": "Category ID", - "name": "categoryID", - "in": "path", - "required": true - }, - { - "type": "integer", - "description": "Limit", - "name": "limit", - "in": "query" - }, - { - "type": "integer", - "description": "Page", - "name": "page", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/models.Tag" - } - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/category/{categoryID}/tags/{tagID}": { - "get": { - "description": "Retrieves a tag associated with a category", - "produces": [ - "application/json" - ], - "tags": [ - "category-tag" - ], - "summary": "Retrieve a tag by category", - "operationId": "get-tag-by-category", - "parameters": [ - { - "type": "string", - "description": "Category ID", - "name": "categoryID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Tag ID", - "name": "tagID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/models.Tag" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/club/": { - "get": { - "description": "Retrieves all clubs", - "produces": [ - "application/json" - ], - "tags": [ - "club" - ], - "summary": "Retrieve all clubs", - "operationId": "get-all-clubs", - "parameters": [ - { - "type": "integer", - "description": "Limit", - "name": "limit", - "in": "query" - }, - { - "type": "integer", - "description": "Page", - "name": "page", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/models.Club" - } - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - }, - "post": { - "description": "Creates a club", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "club" - ], - "summary": "Create a club", - "operationId": "create-club", - "parameters": [ - { - "description": "Club", - "name": "club", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.CreateClubRequestBody" - } - } - ], - "responses": { - "201": { - "description": "Created", - "schema": { - "$ref": "#/definitions/models.Club" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/club/{clubID}": { - "get": { - "description": "Retrieves a club", - "produces": [ - "application/json" - ], - "tags": [ - "club" - ], - "summary": "Retrieve a club", - "operationId": "get-club", - "parameters": [ - { - "type": "string", - "description": "Club ID", - "name": "clubID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/models.Club" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - }, - "put": { - "description": "Updates a club", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "club" - ], - "summary": "Update a club", - "operationId": "update-club", - "parameters": [ - { - "type": "string", - "description": "Club ID", - "name": "clubID", - "in": "path", - "required": true - }, - { - "description": "Club", - "name": "club", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.UpdateClubRequestBody" - } - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/models.Club" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - }, - "delete": { - "description": "Deletes a club", - "produces": [ - "application/json" - ], - "tags": [ - "club" - ], - "summary": "Delete a club", - "operationId": "delete-club", - "parameters": [ - { - "type": "string", - "description": "Club ID", - "name": "clubID", - "in": "path", - "required": true - } - ], - "responses": { - "204": { - "description": "No Content", - "schema": { - "type": "string" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/club/{clubID}/contacts": { - "get": { - "description": "Retrieves all contacts associated with a club", - "produces": [ - "application/json" - ], - "tags": [ - "club-contact" - ], - "summary": "Retrieve all contacts for a club", - "operationId": "get-contacts-by-club", - "parameters": [ - { - "type": "string", - "description": "Club ID", - "name": "clubID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/models.Contact" - } - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - }, - "post": { - "description": "Creates a contact", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "club-contact" - ], - "summary": "Creates a contact", - "operationId": "create-contact", - "parameters": [ - { - "type": "string", - "description": "Club ID", - "name": "clubID", - "in": "path", - "required": true - }, - { - "description": "Contact Body", - "name": "contactBody", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.PutContactRequestBody" - } - } - ], - "responses": { - "201": { - "description": "Created", - "schema": { - "$ref": "#/definitions/models.Contact" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/club/{clubID}/events": { - "get": { - "description": "Retrieves all events associated with a club", - "produces": [ - "application/json" - ], - "tags": [ - "club-event" - ], - "summary": "Retrieve all events for a club", - "operationId": "get-events-by-club", - "parameters": [ - { - "type": "string", - "description": "Club ID", - "name": "clubID", - "in": "path", - "required": true - }, - { - "type": "integer", - "description": "Limit", - "name": "limit", - "in": "query" - }, - { - "type": "integer", - "description": "Page", - "name": "page", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/models.Event" - } - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/club/{clubID}/followers": { - "get": { - "description": "Retrieves all followers associated with a club", - "produces": [ - "application/json" - ], - "tags": [ - "club-follower" - ], - "summary": "Retrieve all followers for a club", - "operationId": "get-followers-by-club", - "parameters": [ - { - "type": "string", - "description": "Club ID", - "name": "clubID", - "in": "path", - "required": true - }, - { - "type": "integer", - "description": "Limit", - "name": "limit", - "in": "query" - }, - { - "type": "integer", - "description": "Page", - "name": "page", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/models.User" - } - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/club/{clubID}/members": { - "get": { - "description": "Retrieves all members associated with a club", - "produces": [ - "application/json" - ], - "tags": [ - "club-member" - ], - "summary": "Retrieve all members for a club", - "operationId": "get-members-by-club", - "parameters": [ - { - "type": "string", - "description": "Club ID", - "name": "clubID", - "in": "path", - "required": true - }, - { - "type": "integer", - "description": "Limit", - "name": "limit", - "in": "query" - }, - { - "type": "integer", - "description": "Page", - "name": "page", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/models.User" - } - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/club/{clubID}/tags": { - "get": { - "description": "Retrieves all tags associated with a club", - "produces": [ - "application/json" - ], - "tags": [ - "club-tag" - ], - "summary": "Retrieve all tags for a club", - "operationId": "get-tags-by-club", - "parameters": [ - { - "type": "string", - "description": "Club ID", - "name": "clubID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/models.Tag" - } - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - }, - "post": { - "description": "Creates tags for a club", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "club-tag" - ], - "summary": "Create club tags", - "operationId": "create-club-tags", - "parameters": [ - { - "type": "string", - "description": "Club ID", - "name": "clubID", - "in": "path", - "required": true - }, - { - "description": "Club Tags Body", - "name": "clubTagsBody", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.CreateClubTagsRequestBody" - } - } - ], - "responses": { - "201": { - "description": "Created", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/models.Tag" - } - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/club/{clubID}/tags/{tagID}": { - "delete": { - "description": "Deletes a tag associated with a club", - "produces": [ - "application/json" - ], - "tags": [ - "club-tag" - ], - "summary": "Delete a tag for a club", - "operationId": "delete-tag-by-club", - "parameters": [ - { - "type": "string", - "description": "Club ID", - "name": "clubID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Tag ID", - "name": "tagID", - "in": "path", - "required": true - } - ], - "responses": { - "204": { - "description": "No Content", - "schema": { - "type": "string" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/contact/": { - "get": { - "description": "Retrieves all contacts", - "produces": [ - "application/json" - ], - "tags": [ - "contact" - ], - "summary": "Retrieve all contacts", - "operationId": "get-contacts", - "parameters": [ - { - "type": "integer", - "description": "Limit", - "name": "limit", - "in": "query" - }, - { - "type": "integer", - "description": "Page", - "name": "page", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/models.Contact" - } - } - }, - "400": { - "description": "Bad Request", - "schema": { - "type": "string" - } - }, - "404": { - "description": "Not Found", - "schema": { - "type": "string" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "type": "string" - } - } - } - }, - "post": { - "description": "Creates a contact", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "contact" - ], - "summary": "Creates a contact", - "operationId": "create-contact", - "parameters": [ - { - "description": "Contact Body", - "name": "contactBody", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.Contact" - } - } - ], - "responses": { - "201": { - "description": "Created", - "schema": { - "$ref": "#/definitions/models.Contact" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "type": "string" - } - }, - "404": { - "description": "Not Found", - "schema": { - "type": "string" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "type": "string" - } - } - } - } - }, - "/event/": { - "get": { - "description": "Retrieves all events", - "produces": [ - "application/json" - ], - "tags": [ - "event" - ], - "summary": "Retrieve all events", - "operationId": "get-all-events", - "parameters": [ - { - "type": "integer", - "description": "Limit", - "name": "limit", - "in": "query" - }, - { - "type": "integer", - "description": "Page", - "name": "page", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/models.Event" - } - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - }, - "post": { - "description": "Creates an event", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "event" - ], - "summary": "Create an event", - "operationId": "create-event", - "parameters": [ - { - "description": "Event Body", - "name": "event", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.CreateEventRequestBody" - } - } - ], - "responses": { - "201": { - "description": "Created", - "schema": { - "$ref": "#/definitions/models.Event" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/event/{eventID}": { - "get": { - "description": "Retrieves an event", - "produces": [ - "application/json" - ], - "tags": [ - "event" - ], - "summary": "Retrieve an event", - "operationId": "get-event", - "parameters": [ - { - "type": "string", - "description": "Event ID", - "name": "eventID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/models.Event" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - }, - "delete": { - "description": "Deletes an event", - "produces": [ - "application/json" - ], - "tags": [ - "event" - ], - "summary": "Delete an event", - "operationId": "delete-event", - "parameters": [ - { - "type": "string", - "description": "Event ID", - "name": "eventID", - "in": "path", - "required": true - } - ], - "responses": { - "204": { - "description": "No Content", - "schema": { - "type": "string" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/event/{eventID}/series": { - "get": { - "description": "Retrieves all series associated with an event", - "produces": [ - "application/json" - ], - "tags": [ - "event" - ], - "summary": "Retrieve all series by event", - "operationId": "get-series-by-event", - "parameters": [ - { - "type": "string", - "description": "Event ID", - "name": "eventID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/models.Series" - } - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - }, - "post": { - "description": "Creates a series", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "event" - ], - "summary": "Create a series", - "operationId": "create-series", - "parameters": [ - { - "type": "string", - "description": "Event ID", - "name": "eventID", - "in": "path", - "required": true - }, - { - "description": "Series Body", - "name": "seriesBody", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.CreateSeriesRequestBody" - } - } - ], - "responses": { - "201": { - "description": "Created", - "schema": { - "$ref": "#/definitions/models.Series" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - }, - "delete": { - "description": "Deletes all series associated with an event", - "produces": [ - "application/json" - ], - "tags": [ - "event" - ], - "summary": "Delete all series by event", - "operationId": "delete-series-by-event", - "parameters": [ - { - "type": "string", - "description": "Event ID", - "name": "eventID", - "in": "path", - "required": true - } - ], - "responses": { - "204": { - "description": "No Content", - "schema": { - "type": "string" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/event/{eventID}/series/{seriesID}": { - "put": { - "description": "Updates a series by ID", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "event" - ], - "summary": "Update a series by ID", - "operationId": "update-series-by-id", - "parameters": [ - { - "type": "string", - "description": "Event ID", - "name": "eventID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Series ID", - "name": "seriesID", - "in": "path", - "required": true - }, - { - "description": "Series Body", - "name": "seriesBody", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.UpdateSeriesRequestBody" - } - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/models.Series" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/series/{seriesID}": { - "get": { - "description": "Retrieves a series by ID", - "produces": [ - "application/json" - ], - "tags": [ - "event" - ], - "summary": "Retrieve a series by ID", - "operationId": "get-series-by-id", - "parameters": [ - { - "type": "string", - "description": "Series ID", - "name": "seriesID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/models.Series" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - }, - "delete": { - "description": "Deletes a series by ID", - "produces": [ - "application/json" - ], - "tags": [ - "event" - ], - "summary": "Delete a series by ID", - "operationId": "delete-series-by-id", - "parameters": [ - { - "type": "string", - "description": "Series ID", - "name": "seriesID", - "in": "path", - "required": true - } - ], - "responses": { - "204": { - "description": "No Content", - "schema": { - "type": "string" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/tags": { - "get": { - "description": "Retrieves all tags", - "produces": [ - "application/json" - ], - "tags": [ - "tag" - ], - "summary": "Retrieve all tags", - "operationId": "get-all-tags", - "parameters": [ - { - "type": "integer", - "description": "Limit", - "name": "limit", - "in": "query" - }, - { - "type": "integer", - "description": "Page", - "name": "page", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/models.Tag" - } - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/tags/": { - "post": { - "description": "Creates a tag", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "tag" - ], - "summary": "Create a tag", - "operationId": "create-tag", - "parameters": [ - { - "description": "Tag Body", - "name": "tagBody", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.CreateTagRequestBody" - } - } - ], - "responses": { - "201": { - "description": "Created", - "schema": { - "$ref": "#/definitions/models.Tag" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/tags/{tagID}": { - "get": { - "description": "Retrieves a tag", - "produces": [ - "application/json" - ], - "tags": [ - "tag" - ], - "summary": "Retrieve a tag", - "operationId": "get-tag", - "parameters": [ - { - "type": "string", - "description": "Tag ID", - "name": "tagID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/models.Tag" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - }, - "put": { - "description": "Updates a tag", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "tag" - ], - "summary": "Update a tag", - "operationId": "update-tag", - "parameters": [ - { - "type": "string", - "description": "Tag ID", - "name": "tagID", - "in": "path", - "required": true - }, - { - "description": "Tag", - "name": "tag", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.UpdateTagRequestBody" - } - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/models.Tag" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - }, - "delete": { - "description": "Deletes a tag", - "produces": [ - "application/json" - ], - "tags": [ - "tag" - ], - "summary": "Delete a tag", - "operationId": "delete-tag", - "parameters": [ - { - "type": "string", - "description": "Tag ID", - "name": "tagID", - "in": "path", - "required": true - } - ], - "responses": { - "204": { - "description": "No Content", - "schema": { - "type": "string" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/user/": { - "post": { - "description": "Creates a user", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "user" - ], - "summary": "Create a user", - "operationId": "create-user", - "parameters": [ - { - "description": "User Body", - "name": "userBody", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.CreateUserRequestBody" - } - } - ], - "responses": { - "201": { - "description": "Created", - "schema": { - "$ref": "#/definitions/models.User" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/user/{userID}": { - "get": { - "description": "Retrieves a user", - "produces": [ - "application/json" - ], - "tags": [ - "user" - ], - "summary": "Retrieve a user", - "operationId": "get-user", - "parameters": [ - { - "type": "string", - "description": "User ID", - "name": "userID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/models.User" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - }, - "put": { - "description": "Updates a user", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "user" - ], - "summary": "Update a user", - "operationId": "update-user", - "parameters": [ - { - "type": "string", - "description": "User ID", - "name": "userID", - "in": "path", - "required": true - }, - { - "description": "User Body", - "name": "userBody", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.UpdateUserRequestBody" - } - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/models.User" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - }, - "delete": { - "description": "Deletes a user", - "produces": [ - "application/json" - ], - "tags": [ - "user" - ], - "summary": "Delete a user", - "operationId": "delete-user", - "parameters": [ - { - "type": "string", - "description": "User ID", - "name": "userID", - "in": "path", - "required": true - } - ], - "responses": { - "204": { - "description": "No Content", - "schema": { - "type": "string" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/user/{userID}/following": { - "get": { - "description": "Retrieves all clubs a user is following", - "produces": [ - "application/json" - ], - "tags": [ - "user-follower" - ], - "summary": "Retrieve all clubs a user is following", - "operationId": "get-following", - "parameters": [ - { - "type": "string", - "description": "User ID", - "name": "userID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/models.Club" - } - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/user/{userID}/following/{clubID}": { - "post": { - "description": "Follow a club", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "user-follower" - ], - "summary": "Follow a club", - "operationId": "create-following", - "parameters": [ - { - "type": "string", - "description": "User ID", - "name": "userID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Club ID", - "name": "clubID", - "in": "path", - "required": true - } - ], - "responses": { - "201": { - "description": "Created", - "schema": { - "$ref": "#/definitions/utilities.SuccessResponse" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - }, - "delete": { - "description": "Unfollow a club", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "user-follower" - ], - "summary": "Unfollow a club", - "operationId": "delete-following", - "parameters": [ - { - "type": "string", - "description": "User ID", - "name": "userID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Club ID", - "name": "clubID", - "in": "path", - "required": true - } - ], - "responses": { - "204": { - "description": "No Content", - "schema": { - "$ref": "#/definitions/utilities.SuccessResponse" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/user/{userID}/membership": { - "get": { - "description": "Retrieves all clubs a user is a member of", - "produces": [ - "application/json" - ], - "tags": [ - "user-member" - ], - "summary": "Retrieve all clubs a user is a member of", - "operationId": "get-membership", - "parameters": [ - { - "type": "string", - "description": "User ID", - "name": "userID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/models.Club" - } - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/user/{userID}/membership/{clubID}": { - "post": { - "description": "Join a club", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "user-member" - ], - "summary": "Join a club", - "operationId": "create-membership", - "parameters": [ - { - "type": "string", - "description": "User ID", - "name": "userID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Club ID", - "name": "clubID", - "in": "path", - "required": true - } - ], - "responses": { - "201": { - "description": "Created", - "schema": { - "$ref": "#/definitions/utilities.SuccessResponse" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - }, - "delete": { - "description": "Leave a club", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "user-member" - ], - "summary": "Leave a club", - "operationId": "delete-membership", - "parameters": [ - { - "type": "string", - "description": "User ID", - "name": "userID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Club ID", - "name": "clubID", - "in": "path", - "required": true - } - ], - "responses": { - "204": { - "description": "No Content", - "schema": { - "$ref": "#/definitions/utilities.SuccessResponse" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/user/{userID}/tags": { - "get": { - "description": "Retrieves all tags associated with a user", - "produces": [ - "application/json" - ], - "tags": [ - "user-tag" - ], - "summary": "Retrieve all tags for a user", - "operationId": "get-tags-by-user", - "parameters": [ - { - "type": "string", - "description": "User ID", - "name": "userID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/models.Tag" - } - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - }, - "post": { - "description": "Creates tags for a user", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "user-tag" - ], - "summary": "Create user tags", - "operationId": "create-user-tags", - "parameters": [ - { - "type": "string", - "description": "User ID", - "name": "userID", - "in": "path", - "required": true - }, - { - "description": "User Tags Body", - "name": "userTagsBody", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.CreateUserTagsBody" - } - } - ], - "responses": { - "201": { - "description": "Created", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/models.Tag" - } - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } + "version": "1.0" + }, + "host": "127.0.0.1:8080", + "basePath": "/api/v1", + "paths": { + "/auth/login": { + "post": { + "description": "Logs in a user", + "consumes": ["application/json"], + "produces": ["application/json"], + "tags": ["auth"], + "summary": "Logs in a user", + "operationId": "login-user", + "parameters": [ + { + "description": "Login Body", + "name": "loginBody", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.LoginUserResponseBody" } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/utilities.SuccessResponse" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/auth/logout": { + "get": { + "description": "Logs out a user", + "consumes": ["application/json"], + "produces": ["application/json"], + "tags": ["auth"], + "summary": "Logs out a user", + "operationId": "logout-user", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/utilities.SuccessResponse" + } + } + } + } + }, + "/auth/me": { + "get": { + "security": [ + { + "cookie": [] + } + ], + "description": "Returns the current user associated with an auth session", + "produces": ["application/json"], + "tags": ["auth"], + "summary": "Retrieve the current user given an auth session", + "operationId": "get-current-user", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/models.User" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/auth/refresh": { + "get": { + "description": "Refreshes a user's access token", + "consumes": ["application/json"], + "produces": ["application/json"], + "tags": ["auth"], + "summary": "Refreshes a user's access token", + "operationId": "refresh-user", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/utilities.SuccessResponse" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/auth/update-password/:userID": { + "post": { + "description": "Updates a user's password", + "consumes": ["application/json"], + "produces": ["application/json"], + "tags": ["auth"], + "summary": "Updates a user's password", + "operationId": "update-password", + "parameters": [ + { + "description": "User Body", + "name": "userBody", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.UpdatePasswordRequestBody" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/utilities.SuccessResponse" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/categories/": { + "get": { + "description": "Retrieves all categories", + "produces": ["application/json"], + "tags": ["category"], + "summary": "Retrieve all categories", + "operationId": "get-categories", + "parameters": [ + { + "type": "integer", + "description": "Limit", + "name": "limit", + "in": "query" + }, + { + "type": "integer", + "description": "Page", + "name": "page", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/models.Category" + } + } + }, + "400": { + "description": "Bad Request", + "schema": { + "type": "string" + } + }, + "404": { + "description": "Not Found", + "schema": { + "type": "string" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "type": "string" + } + } + } + }, + "post": { + "description": "Creates a category", + "consumes": ["application/json"], + "produces": ["application/json"], + "tags": ["category"], + "summary": "Creates a category", + "operationId": "create-category", + "parameters": [ + { + "description": "Category Body", + "name": "categoryBody", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.CategoryRequestBody" + } + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/models.Category" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "type": "string" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "type": "string" + } + }, + "404": { + "description": "Not Found", + "schema": { + "type": "string" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "type": "string" + } + } + } + } + }, + "/categories/{categoryID}/": { + "get": { + "description": "Retrieves a category", + "produces": ["application/json"], + "tags": ["category"], + "summary": "Retrieve a category", + "operationId": "get-category", + "parameters": [ + { + "type": "string", + "description": "Category ID", + "name": "categoryID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/models.Category" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "type": "string" + } + }, + "404": { + "description": "Not Found", + "schema": { + "type": "string" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "type": "string" + } + } + } + }, + "delete": { + "description": "Deletes a category", + "produces": ["application/json"], + "tags": ["category"], + "summary": "Deletes a category", + "operationId": "delete-category", + "parameters": [ + { + "type": "string", + "description": "Category ID", + "name": "categoryID", + "in": "path", + "required": true + } + ], + "responses": { + "204": { + "description": "No Content", + "schema": { + "type": "string" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "type": "string" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "type": "string" + } + }, + "404": { + "description": "Not Found", + "schema": { + "type": "string" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "type": "string" + } + } + } + }, + "patch": { + "description": "Updates a category", + "consumes": ["application/json"], + "produces": ["application/json"], + "tags": ["category"], + "summary": "Updates a category", + "operationId": "update-category", + "parameters": [ + { + "type": "string", + "description": "Category ID", + "name": "categoryID", + "in": "path", + "required": true + }, + { + "description": "Category Body", + "name": "categoryBody", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.CategoryRequestBody" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/models.Category" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "type": "string" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "type": "string" + } + }, + "404": { + "description": "Not Found", + "schema": { + "type": "string" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "type": "string" + } + } + } + } + }, + "/categories/{categoryID}/tags/": { + "get": { + "description": "Retrieves all tags associated with a category", + "produces": ["application/json"], + "tags": ["category-tag"], + "summary": "Retrieve all tags by category", + "operationId": "get-tags-by-category", + "parameters": [ + { + "type": "string", + "description": "Category ID", + "name": "categoryID", + "in": "path", + "required": true + }, + { + "type": "integer", + "description": "Limit", + "name": "limit", + "in": "query" + }, + { + "type": "integer", + "description": "Page", + "name": "page", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/models.Tag" + } + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/categories/{categoryID}/tags/{tagID}/": { + "get": { + "description": "Retrieves a tag associated with a category", + "produces": ["application/json"], + "tags": ["category-tag"], + "summary": "Retrieve a tag by category", + "operationId": "get-tag-by-category", + "parameters": [ + { + "type": "string", + "description": "Category ID", + "name": "categoryID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Tag ID", + "name": "tagID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/models.Tag" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/clubs/": { + "get": { + "description": "Retrieves all clubs", + "produces": ["application/json"], + "tags": ["club"], + "summary": "Retrieve all clubs", + "operationId": "get-all-clubs", + "parameters": [ + { + "type": "integer", + "description": "Limit", + "name": "limit", + "in": "query" + }, + { + "type": "integer", + "description": "Page", + "name": "page", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/models.Club" + } + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "post": { + "description": "Creates a club", + "consumes": ["application/json"], + "produces": ["application/json"], + "tags": ["club"], + "summary": "Create a club", + "operationId": "create-club", + "parameters": [ + { + "description": "Club", + "name": "club", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.CreateClubRequestBody" + } + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/models.Club" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/clubs/{clubID}/": { + "get": { + "description": "Retrieves a club", + "produces": ["application/json"], + "tags": ["club"], + "summary": "Retrieve a club", + "operationId": "get-club", + "parameters": [ + { + "type": "string", + "description": "Club ID", + "name": "clubID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/models.Club" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "delete": { + "description": "Deletes a club", + "produces": ["application/json"], + "tags": ["club"], + "summary": "Delete a club", + "operationId": "delete-club", + "parameters": [ + { + "type": "string", + "description": "Club ID", + "name": "clubID", + "in": "path", + "required": true + } + ], + "responses": { + "204": { + "description": "No Content", + "schema": { + "type": "string" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "patch": { + "description": "Updates a club", + "consumes": ["application/json"], + "produces": ["application/json"], + "tags": ["club"], + "summary": "Update a club", + "operationId": "update-club", + "parameters": [ + { + "type": "string", + "description": "Club ID", + "name": "clubID", + "in": "path", + "required": true + }, + { + "description": "Club", + "name": "club", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.UpdateClubRequestBody" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/models.Club" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/clubs/{clubID}/contacts/": { + "get": { + "description": "Retrieves all contacts associated with a club", + "produces": ["application/json"], + "tags": ["club-contact"], + "summary": "Retrieve all contacts for a club", + "operationId": "get-contacts-by-club", + "parameters": [ + { + "type": "string", + "description": "Club ID", + "name": "clubID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/models.Contact" + } + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "put": { + "description": "Creates a contact", + "consumes": ["application/json"], + "produces": ["application/json"], + "tags": ["club-contact"], + "summary": "Creates a contact", + "operationId": "put-contact", + "parameters": [ + { + "type": "string", + "description": "Club ID", + "name": "clubID", + "in": "path", + "required": true + }, + { + "description": "Contact Body", + "name": "contactBody", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.PutContactRequestBody" + } + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/models.Contact" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/clubs/{clubID}/events/": { + "get": { + "description": "Retrieves all events associated with a club", + "produces": ["application/json"], + "tags": ["club-event"], + "summary": "Retrieve all events for a club", + "operationId": "get-events-by-club", + "parameters": [ + { + "type": "string", + "description": "Club ID", + "name": "clubID", + "in": "path", + "required": true + }, + { + "type": "integer", + "description": "Limit", + "name": "limit", + "in": "query" + }, + { + "type": "integer", + "description": "Page", + "name": "page", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/models.Event" + } + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/clubs/{clubID}/followers/": { + "get": { + "description": "Retrieves all followers associated with a club", + "produces": ["application/json"], + "tags": ["club-follower"], + "summary": "Retrieve all followers for a club", + "operationId": "get-followers-by-club", + "parameters": [ + { + "type": "string", + "description": "Club ID", + "name": "clubID", + "in": "path", + "required": true + }, + { + "type": "integer", + "description": "Limit", + "name": "limit", + "in": "query" + }, + { + "type": "integer", + "description": "Page", + "name": "page", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/models.User" + } + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/clubs/{clubID}/members/": { + "get": { + "description": "Retrieves all members associated with a club", + "produces": ["application/json"], + "tags": ["club-member"], + "summary": "Retrieve all members for a club", + "operationId": "get-members-by-club", + "parameters": [ + { + "type": "string", + "description": "Club ID", + "name": "clubID", + "in": "path", + "required": true + }, + { + "type": "integer", + "description": "Limit", + "name": "limit", + "in": "query" + }, + { + "type": "integer", + "description": "Page", + "name": "page", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/models.User" + } + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } } + } }, - "definitions": { - "errors.Error": { - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "statusCode": { - "type": "integer" - } - } - }, - "models.Category": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "created_at": { - "type": "string", - "example": "2023-09-20T16:34:50Z" - }, - "id": { - "type": "string", - "example": "123e4567-e89b-12d3-a456-426614174000" - }, - "name": { - "type": "string", - "maxLength": 255 - }, - "updated_at": { - "type": "string", - "example": "2023-09-20T16:34:50Z" - } - } - }, - "models.CategoryRequestBody": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string", - "maxLength": 255 - } - } - }, - "models.Club": { - "type": "object", - "required": [ - "application_link", - "description", - "is_recruiting", - "name", - "num_members", - "preview", - "recruitment_cycle", - "recruitment_type" - ], - "properties": { - "application_link": { - "type": "string", - "maxLength": 255 - }, - "created_at": { - "type": "string", - "example": "2023-09-20T16:34:50Z" - }, - "description": { - "description": "MongoDB URL", - "type": "string", - "maxLength": 255 - }, - "id": { - "type": "string", - "example": "123e4567-e89b-12d3-a456-426614174000" - }, - "is_recruiting": { - "type": "boolean" - }, - "logo": { - "description": "S3 URL", - "type": "string", - "maxLength": 255 - }, - "name": { - "type": "string", - "maxLength": 255 - }, - "num_members": { - "type": "integer", - "minimum": 1 - }, - "preview": { - "type": "string", - "maxLength": 255 - }, - "recruitment_cycle": { - "maxLength": 255, - "enum": [ - "fall", - "spring", - "fallSpring", - "always" - ], - "allOf": [ - { - "$ref": "#/definitions/models.RecruitmentCycle" - } - ] - }, - "recruitment_type": { - "maxLength": 255, - "enum": [ - "unrestricted", - "tryout", - "application" - ], - "allOf": [ - { - "$ref": "#/definitions/models.RecruitmentType" - } - ] - }, - "tags": { - "type": "array", - "items": { - "$ref": "#/definitions/models.Tag" - } - }, - "updated_at": { - "type": "string", - "example": "2023-09-20T16:34:50Z" - } - } - }, - "models.College": { + "/clubs/{clubID}/tags/": { + "get": { + "description": "Retrieves all tags associated with a club", + "produces": ["application/json"], + "tags": ["club-tag"], + "summary": "Retrieve all tags for a club", + "operationId": "get-tags-by-club", + "parameters": [ + { "type": "string", - "enum": [ - "CAMD", - "DMSB", - "KCCS", - "CE", - "BCHS", - "SL", - "CPS", - "CS", - "CSSH" - ], - "x-enum-comments": { - "BCHS": "Bouvé College of Health Sciences", - "CAMD": "College of Arts, Media and Design", - "CE": "College of Engineering", - "CPS": "College of Professional Studies", - "CS": "College of Science", - "CSSH": "College of Social Sciences and Humanities", - "DMSB": "D'Amore-McKim School of Business", - "KCCS": "Khoury College of Computer Sciences", - "SL": "School of Law" - }, - "x-enum-varnames": [ - "CAMD", - "DMSB", - "KCCS", - "CE", - "BCHS", - "SL", - "CPS", - "CS", - "CSSH" - ] - }, - "models.Contact": { - "type": "object", - "required": [ - "content", - "type" - ], - "properties": { - "content": { - "type": "string", - "maxLength": 255 - }, - "created_at": { - "type": "string", - "example": "2023-09-20T16:34:50Z" - }, - "id": { - "type": "string", - "example": "123e4567-e89b-12d3-a456-426614174000" - }, - "type": { - "maxLength": 255, - "enum": [ - "facebook", - "instagram", - "twitter", - "linkedin", - "youtube", - "github", - "slack", - "discord", - "email", - "customSite" - ], - "allOf": [ - { - "$ref": "#/definitions/models.ContactType" - } - ] - }, - "updated_at": { - "type": "string", - "example": "2023-09-20T16:34:50Z" - } - } - }, - "models.ContactType": { + "description": "Club ID", + "name": "clubID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/models.Tag" + } + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "post": { + "description": "Creates tags for a club", + "consumes": ["application/json"], + "produces": ["application/json"], + "tags": ["club-tag"], + "summary": "Create club tags", + "operationId": "create-club-tags", + "parameters": [ + { "type": "string", - "enum": [ - "facebook", - "instagram", - "twitter", - "linkedin", - "youtube", - "github", - "slack", - "discord", - "email", - "customSite" - ], - "x-enum-varnames": [ - "Facebook", - "Instagram", - "Twitter", - "LinkedIn", - "YouTube", - "GitHub", - "Slack", - "Discord", - "Email", - "CustomSite" - ] - }, - "models.CreateClubRequestBody": { - "type": "object", - "required": [ - "application_link", - "description", - "is_recruiting", - "name", - "preview", - "recruitment_cycle", - "recruitment_type", - "user_id" - ], - "properties": { - "application_link": { - "type": "string", - "maxLength": 255 - }, - "description": { - "description": "MongoDB URL", - "type": "string", - "maxLength": 255 - }, - "is_recruiting": { - "type": "boolean" - }, - "logo": { - "description": "S3 URL", - "type": "string", - "maxLength": 255 - }, - "name": { - "type": "string", - "maxLength": 255 - }, - "preview": { - "type": "string", - "maxLength": 255 - }, - "recruitment_cycle": { - "maxLength": 255, - "enum": [ - "fall", - "spring", - "fallSpring", - "always" - ], - "allOf": [ - { - "$ref": "#/definitions/models.RecruitmentCycle" - } - ] - }, - "recruitment_type": { - "maxLength": 255, - "enum": [ - "unrestricted", - "tryout", - "application" - ], - "allOf": [ - { - "$ref": "#/definitions/models.RecruitmentType" - } - ] - }, - "user_id": { - "type": "string" - } - } - }, - "models.CreateClubTagsRequestBody": { - "type": "object", - "required": [ - "tags" - ], - "properties": { - "tags": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "models.CreateEventRequestBody": { - "type": "object", - "required": [ - "content", - "end_time", - "event_type", - "is_recurring", - "location", - "name", - "preview", - "start_time" - ], - "properties": { - "content": { - "type": "string", - "maxLength": 255 - }, - "end_time": { - "type": "string" - }, - "event_type": { - "maxLength": 255, - "allOf": [ - { - "$ref": "#/definitions/models.EventType" - } - ] - }, - "is_recurring": { - "type": "boolean" - }, - "location": { - "type": "string", - "maxLength": 255 - }, - "name": { - "type": "string", - "maxLength": 255 - }, - "preview": { - "type": "string", - "maxLength": 255 - }, - "series": { - "description": "TODO validate if isRecurring, then series is required", - "allOf": [ - { - "$ref": "#/definitions/models.CreateSeriesRequestBody" - } - ] - }, - "start_time": { - "type": "string" - } - } - }, - "models.CreateSeriesRequestBody": { - "type": "object", - "properties": { - "day_of_month": { - "type": "integer", - "maximum": 31, - "minimum": 1 - }, - "day_of_week": { - "type": "integer", - "maximum": 7, - "minimum": 1 - }, - "max_occurrences": { - "type": "integer", - "minimum": 2 - }, - "recurring_type": { - "maxLength": 255, - "allOf": [ - { - "$ref": "#/definitions/models.RecurringType" - } - ] - }, - "separation_count": { - "type": "integer", - "minimum": 0 - }, - "week_of_month": { - "type": "integer", - "maximum": 5, - "minimum": 1 - } - } - }, - "models.CreateTagRequestBody": { - "type": "object", - "required": [ - "category_id", - "name" - ], - "properties": { - "category_id": { - "type": "string" - }, - "name": { - "type": "string", - "maxLength": 255 - } - } - }, - "models.CreateUserRequestBody": { - "type": "object", - "required": [ - "college", - "email", - "first_name", - "last_name", - "nuid", - "password", - "year" - ], - "properties": { - "college": { - "enum": [ - "CAMD", - "DMSB", - "KCCS", - "CE", - "BCHS", - "SL", - "CPS", - "CS", - "CSSH" - ], - "allOf": [ - { - "$ref": "#/definitions/models.College" - } - ] - }, - "email": { - "type": "string", - "maxLength": 255 - }, - "first_name": { - "type": "string", - "maxLength": 255 - }, - "last_name": { - "type": "string", - "maxLength": 255 - }, - "nuid": { - "type": "string" - }, - "password": { - "type": "string" - }, - "year": { - "maximum": 6, - "minimum": 1, - "allOf": [ - { - "$ref": "#/definitions/models.Year" - } - ] - } - } - }, - "models.CreateUserTagsBody": { - "type": "object", - "required": [ - "tags" - ], - "properties": { - "tags": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "models.Event": { - "type": "object", - "required": [ - "content", - "end_time", - "event_type", - "location", - "name", - "preview", - "start_time" - ], - "properties": { - "content": { - "type": "string", - "maxLength": 255 - }, - "created_at": { - "type": "string", - "example": "2023-09-20T16:34:50Z" - }, - "end_time": { - "type": "string" - }, - "event_type": { - "maxLength": 255, - "allOf": [ - { - "$ref": "#/definitions/models.EventType" - } - ] - }, - "id": { - "type": "string", - "example": "123e4567-e89b-12d3-a456-426614174000" - }, - "is_recurring": { - "type": "boolean" - }, - "location": { - "type": "string", - "maxLength": 255 - }, - "name": { - "type": "string", - "maxLength": 255 - }, - "preview": { - "type": "string", - "maxLength": 255 - }, - "start_time": { - "type": "string" - }, - "updated_at": { - "type": "string", - "example": "2023-09-20T16:34:50Z" - } - } - }, - "models.EventType": { + "description": "Club ID", + "name": "clubID", + "in": "path", + "required": true + }, + { + "description": "Club Tags Body", + "name": "clubTagsBody", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.CreateClubTagsRequestBody" + } + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/models.Tag" + } + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/clubs/{clubID}/tags/{tagID}/": { + "delete": { + "description": "Deletes a tag associated with a club", + "produces": ["application/json"], + "tags": ["club-tag"], + "summary": "Delete a tag for a club", + "operationId": "delete-tag-by-club", + "parameters": [ + { "type": "string", - "enum": [ - "open", - "membersOnly" - ], - "x-enum-varnames": [ - "Open", - "MembersOnly" - ] - }, - "models.LoginUserResponseBody": { - "type": "object", - "required": [ - "email" - ], - "properties": { - "email": { - "type": "string" - }, - "password": { - "type": "string", - "maxLength": 255, - "minLength": 8 - } - } - }, - "models.PutContactRequestBody": { - "type": "object", - "required": [ - "content", - "type" - ], - "properties": { - "content": { - "type": "string", - "maxLength": 255 - }, - "type": { - "maxLength": 255, - "enum": [ - "facebook", - "instagram", - "twitter", - "linkedin", - "youtube", - "github", - "slack", - "discord", - "email", - "customSite" - ], - "allOf": [ - { - "$ref": "#/definitions/models.ContactType" - } - ] - } - } - }, - "models.RecruitmentCycle": { + "description": "Club ID", + "name": "clubID", + "in": "path", + "required": true + }, + { "type": "string", - "enum": [ - "fall", - "spring", - "fallSpring", - "always" - ], - "x-enum-varnames": [ - "Fall", - "Spring", - "FallSpring", - "Always" - ] - }, - "models.RecruitmentType": { + "description": "Tag ID", + "name": "tagID", + "in": "path", + "required": true + } + ], + "responses": { + "204": { + "description": "No Content", + "schema": { + "type": "string" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/contacts/": { + "get": { + "description": "Retrieves all contacts", + "produces": ["application/json"], + "tags": ["contact"], + "summary": "Retrieve all contacts", + "operationId": "get-contacts", + "parameters": [ + { + "type": "integer", + "description": "Limit", + "name": "limit", + "in": "query" + }, + { + "type": "integer", + "description": "Page", + "name": "page", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/models.Contact" + } + } + }, + "400": { + "description": "Bad Request", + "schema": { + "type": "string" + } + }, + "404": { + "description": "Not Found", + "schema": { + "type": "string" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "type": "string" + } + } + } + } + }, + "/contacts/{contactID}/": { + "get": { + "description": "Retrieves a contact by id", + "consumes": ["application/json"], + "produces": ["application/json"], + "tags": ["contact"], + "summary": "Retrieves a contact", + "operationId": "get-contact", + "parameters": [ + { "type": "string", - "enum": [ - "unrestricted", - "tryout", - "application" - ], - "x-enum-varnames": [ - "Unrestricted", - "Tryout", - "Application" - ] - }, - "models.RecurringType": { + "description": "Contact ID", + "name": "contactID", + "in": "path", + "required": true + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/models.Contact" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "type": "string" + } + }, + "404": { + "description": "Not Found", + "schema": { + "type": "string" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "type": "string" + } + } + } + }, + "delete": { + "description": "Deletes a contact", + "consumes": ["application/json"], + "produces": ["application/json"], + "tags": ["contact"], + "summary": "Deletes a contact", + "operationId": "delete-contact", + "parameters": [ + { "type": "string", - "enum": [ - "daily", - "weekly", - "monthly" - ], - "x-enum-varnames": [ - "Daily", - "Weekly", - "Monthly" - ] - }, - "models.Series": { - "type": "object", - "properties": { - "created_at": { - "type": "string", - "example": "2023-09-20T16:34:50Z" - }, - "day_of_month": { - "type": "integer", - "maximum": 31, - "minimum": 1 - }, - "day_of_week": { - "type": "integer", - "maximum": 7, - "minimum": 1 - }, - "events": { - "type": "array", - "items": { - "$ref": "#/definitions/models.Event" - } - }, - "id": { - "type": "string", - "example": "123e4567-e89b-12d3-a456-426614174000" - }, - "max_occurrences": { - "type": "integer", - "minimum": 1 - }, - "recurring_type": { - "maxLength": 255, - "allOf": [ - { - "$ref": "#/definitions/models.RecurringType" - } - ] - }, - "separation_count": { - "type": "integer", - "minimum": 0 - }, - "updated_at": { - "type": "string", - "example": "2023-09-20T16:34:50Z" - }, - "week_of_month": { - "type": "integer", - "maximum": 5, - "minimum": 1 - } - } - }, - "models.Tag": { - "type": "object", - "required": [ - "category_id", - "name" - ], - "properties": { - "category_id": { - "type": "string" - }, - "created_at": { - "type": "string", - "example": "2023-09-20T16:34:50Z" - }, - "id": { - "type": "string", - "example": "123e4567-e89b-12d3-a456-426614174000" - }, - "name": { - "type": "string", - "maxLength": 255 - }, - "updated_at": { - "type": "string", - "example": "2023-09-20T16:34:50Z" - } - } - }, - "models.UpdateClubRequestBody": { - "type": "object", - "required": [ - "application_link", - "recruitment_cycle", - "recruitment_type" - ], - "properties": { - "application_link": { - "type": "string", - "maxLength": 255 - }, - "description": { - "description": "MongoDB URL", - "type": "string", - "maxLength": 255 - }, - "is_recruiting": { - "type": "boolean" - }, - "logo": { - "description": "S3 URL", - "type": "string", - "maxLength": 255 - }, - "name": { - "type": "string", - "maxLength": 255 - }, - "preview": { - "type": "string", - "maxLength": 255 - }, - "recruitment_cycle": { - "maxLength": 255, - "enum": [ - "fall", - "spring", - "fallSpring", - "always" - ], - "allOf": [ - { - "$ref": "#/definitions/models.RecruitmentCycle" - } - ] - }, - "recruitment_type": { - "maxLength": 255, - "enum": [ - "unrestricted", - "tryout", - "application" - ], - "allOf": [ - { - "$ref": "#/definitions/models.RecruitmentType" - } - ] - } - } - }, - "models.UpdatePasswordRequestBody": { - "type": "object", - "required": [ - "new_password", - "old_password" - ], - "properties": { - "new_password": { - "type": "string" - }, - "old_password": { - "type": "string" - } - } - }, - "models.UpdateSeriesRequestBody": { - "type": "object", - "properties": { - "day_of_month": { - "type": "integer", - "maximum": 31, - "minimum": 1 - }, - "day_of_week": { - "type": "integer", - "maximum": 7, - "minimum": 1 - }, - "max_occurrences": { - "type": "integer", - "minimum": 2 - }, - "recurring_type": { - "maxLength": 255, - "allOf": [ - { - "$ref": "#/definitions/models.RecurringType" - } - ] - }, - "separation_count": { - "type": "integer", - "minimum": 0 - }, - "week_of_month": { - "type": "integer", - "maximum": 5, - "minimum": 1 - } - } - }, - "models.UpdateTagRequestBody": { - "type": "object", - "properties": { - "category_id": { - "type": "string" - }, - "name": { - "type": "string", - "maxLength": 255 - } - } - }, - "models.UpdateUserRequestBody": { - "type": "object", - "properties": { - "college": { - "enum": [ - "CAMD", - "DMSB", - "KCCS", - "CE", - "BCHS", - "SL", - "CPS", - "CS", - "CSSH" - ], - "allOf": [ - { - "$ref": "#/definitions/models.College" - } - ] - }, - "email": { - "type": "string", - "maxLength": 255 - }, - "first_name": { - "type": "string", - "maxLength": 255 - }, - "last_name": { - "type": "string", - "maxLength": 255 - }, - "nuid": { - "type": "string" - }, - "year": { - "maximum": 6, - "minimum": 1, - "allOf": [ - { - "$ref": "#/definitions/models.Year" - } - ] - } - } - }, - "models.User": { - "type": "object", - "required": [ - "college", - "email", - "first_name", - "last_name", - "nuid", - "role", - "year" - ], - "properties": { - "clubs_followed": { - "type": "array", - "items": { - "$ref": "#/definitions/models.Club" - } - }, - "college": { - "maxLength": 255, - "allOf": [ - { - "$ref": "#/definitions/models.College" - } - ] - }, - "created_at": { - "type": "string", - "example": "2023-09-20T16:34:50Z" - }, - "email": { - "type": "string", - "maxLength": 255 - }, - "first_name": { - "type": "string", - "maxLength": 255 - }, - "id": { - "type": "string", - "example": "123e4567-e89b-12d3-a456-426614174000" - }, - "last_name": { - "type": "string", - "maxLength": 255 - }, - "nuid": { - "type": "string" - }, - "role": { - "type": "string", - "enum": [ - "super", - "student" - ] - }, - "updated_at": { - "type": "string", - "example": "2023-09-20T16:34:50Z" - }, - "year": { - "maximum": 6, - "minimum": 1, - "allOf": [ - { - "$ref": "#/definitions/models.Year" - } - ] - } - } - }, - "models.Year": { + "description": "Contact ID", + "name": "contactID", + "in": "path", + "required": true + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/models.Contact" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "type": "string" + } + }, + "404": { + "description": "Not Found", + "schema": { + "type": "string" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "type": "string" + } + } + } + } + }, + "/events/": { + "get": { + "description": "Retrieves all events", + "produces": ["application/json"], + "tags": ["event"], + "summary": "Retrieve all events", + "operationId": "get-all-events", + "parameters": [ + { "type": "integer", - "enum": [ - 1, - 2, - 3, - 4, - 5, - 6 - ], - "x-enum-varnames": [ - "First", - "Second", - "Third", - "Fourth", - "Fifth", - "Graduate" - ] - }, - "utilities.SuccessResponse": { - "type": "object", - "properties": { - "message": { - "type": "string" - } + "description": "Limit", + "name": "limit", + "in": "query" + }, + { + "type": "integer", + "description": "Page", + "name": "page", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/models.Event" + } + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "post": { + "description": "Creates an event", + "consumes": ["application/json"], + "produces": ["application/json"], + "tags": ["event"], + "summary": "Create an event", + "operationId": "create-event", + "parameters": [ + { + "description": "Event Body", + "name": "event", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.CreateEventRequestBody" + } + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/models.Event" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/events/{eventID}/": { + "get": { + "description": "Retrieves an event", + "produces": ["application/json"], + "tags": ["event"], + "summary": "Retrieve an event", + "operationId": "get-event", + "parameters": [ + { + "type": "string", + "description": "Event ID", + "name": "eventID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/models.Event" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "delete": { + "description": "Deletes an event", + "produces": ["application/json"], + "tags": ["event"], + "summary": "Delete an event", + "operationId": "delete-event", + "parameters": [ + { + "type": "string", + "description": "Event ID", + "name": "eventID", + "in": "path", + "required": true + } + ], + "responses": { + "204": { + "description": "No Content", + "schema": { + "type": "string" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/events/{eventID}/series/": { + "get": { + "description": "Retrieves all series associated with an event", + "produces": ["application/json"], + "tags": ["event"], + "summary": "Retrieve all series by event", + "operationId": "get-series-by-event", + "parameters": [ + { + "type": "string", + "description": "Event ID", + "name": "eventID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/models.Series" + } + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "delete": { + "description": "Deletes all series associated with an event", + "produces": ["application/json"], + "tags": ["event"], + "summary": "Delete all series by event", + "operationId": "delete-series-by-event", + "parameters": [ + { + "type": "string", + "description": "Event ID", + "name": "eventID", + "in": "path", + "required": true + } + ], + "responses": { + "204": { + "description": "No Content", + "schema": { + "type": "string" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "patch": { + "description": "Creates a series", + "consumes": ["application/json"], + "produces": ["application/json"], + "tags": ["event"], + "summary": "Create a series", + "operationId": "create-series", + "parameters": [ + { + "type": "string", + "description": "Event ID", + "name": "eventID", + "in": "path", + "required": true + }, + { + "description": "Series Body", + "name": "seriesBody", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.CreateSeriesRequestBody" + } + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/models.Series" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/events/{eventID}/series/{seriesID}/": { + "get": { + "description": "Retrieves a series by ID", + "produces": ["application/json"], + "tags": ["event"], + "summary": "Retrieve a series by ID", + "operationId": "get-series-by-id", + "parameters": [ + { + "type": "string", + "description": "Event ID", + "name": "eventID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Series ID", + "name": "seriesID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/models.Series" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "delete": { + "description": "Deletes a series by ID", + "produces": ["application/json"], + "tags": ["event"], + "summary": "Delete a series by ID", + "operationId": "delete-series-by-id", + "parameters": [ + { + "type": "string", + "description": "Event ID", + "name": "eventID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Series ID", + "name": "seriesID", + "in": "path", + "required": true + } + ], + "responses": { + "204": { + "description": "No Content", + "schema": { + "type": "string" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "patch": { + "description": "Updates a series by ID", + "consumes": ["application/json"], + "produces": ["application/json"], + "tags": ["event"], + "summary": "Update a series by ID", + "operationId": "update-series-by-id", + "parameters": [ + { + "type": "string", + "description": "Event ID", + "name": "eventID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Series ID", + "name": "seriesID", + "in": "path", + "required": true + }, + { + "description": "Series Body", + "name": "seriesBody", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.UpdateSeriesRequestBody" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/models.Series" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/tags/": { + "post": { + "description": "Retrieves all tags", + "produces": ["application/json"], + "tags": ["tag"], + "summary": "Retrieve all tags", + "operationId": "get-all-tags", + "parameters": [ + { + "type": "integer", + "description": "Limit", + "name": "limit", + "in": "query" + }, + { + "type": "integer", + "description": "Page", + "name": "page", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/models.Tag" + } + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/tags/": { + "post": { + "description": "Creates a tag", + "consumes": ["application/json"], + "produces": ["application/json"], + "tags": ["tag"], + "summary": "Create a tag", + "operationId": "create-tag", + "parameters": [ + { + "description": "Tag Body", + "name": "tagBody", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.CreateTagRequestBody" + } + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/models.Tag" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/tags/{tagID}/": { + "get": { + "description": "Retrieves a tag", + "produces": ["application/json"], + "tags": ["tag"], + "summary": "Retrieve a tag", + "operationId": "get-tag", + "parameters": [ + { + "type": "string", + "description": "Tag ID", + "name": "tagID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/models.Tag" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "put": { + "description": "Updates a tag", + "consumes": ["application/json"], + "produces": ["application/json"], + "tags": ["tag"], + "summary": "Update a tag", + "operationId": "update-tag", + "parameters": [ + { + "type": "string", + "description": "Tag ID", + "name": "tagID", + "in": "path", + "required": true + }, + { + "description": "Tag", + "name": "tag", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.UpdateTagRequestBody" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/models.Tag" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "delete": { + "description": "Deletes a tag", + "produces": ["application/json"], + "tags": ["tag"], + "summary": "Delete a tag", + "operationId": "delete-tag", + "parameters": [ + { + "type": "string", + "description": "Tag ID", + "name": "tagID", + "in": "path", + "required": true + } + ], + "responses": { + "204": { + "description": "No Content", + "schema": { + "type": "string" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "patch": { + "description": "Updates a tag", + "consumes": ["application/json"], + "produces": ["application/json"], + "tags": ["tag"], + "summary": "Update a tag", + "operationId": "update-tag", + "parameters": [ + { + "type": "string", + "description": "Tag ID", + "name": "tagID", + "in": "path", + "required": true + }, + { + "description": "Tag", + "name": "tag", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.TagRequestBody" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/models.Tag" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/users/": { + "get": { + "description": "Retrieves all users", + "produces": ["application/json"], + "tags": ["user"], + "summary": "Retrieve all users", + "operationId": "get-users", + "parameters": [ + { + "type": "integer", + "description": "Limit", + "name": "limit", + "in": "query" + }, + { + "type": "integer", + "description": "Page", + "name": "page", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/models.User" + } + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "post": { + "description": "Creates a user", + "consumes": ["application/json"], + "produces": ["application/json"], + "tags": ["user"], + "summary": "Create a user", + "operationId": "create-user", + "parameters": [ + { + "description": "User Body", + "name": "userBody", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.CreateUserRequestBody" + } + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/models.User" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/users/{userID}/": { + "get": { + "description": "Retrieves a user", + "produces": ["application/json"], + "tags": ["user"], + "summary": "Retrieve a user", + "operationId": "get-user", + "parameters": [ + { + "type": "string", + "description": "User ID", + "name": "userID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/models.User" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "delete": { + "description": "Deletes a user", + "produces": ["application/json"], + "tags": ["user"], + "summary": "Delete a user", + "operationId": "delete-user", + "parameters": [ + { + "type": "string", + "description": "User ID", + "name": "userID", + "in": "path", + "required": true + } + ], + "responses": { + "204": { + "description": "No Content", + "schema": { + "type": "string" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "patch": { + "description": "Updates a user", + "consumes": ["application/json"], + "produces": ["application/json"], + "tags": ["user"], + "summary": "Update a user", + "operationId": "update-user", + "parameters": [ + { + "type": "string", + "description": "User ID", + "name": "userID", + "in": "path", + "required": true + }, + { + "description": "User Body", + "name": "userBody", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.UpdateUserRequestBody" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/models.User" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/users/{userID}/follower/": { + "get": { + "description": "Retrieves all clubs a user is following", + "produces": ["application/json"], + "tags": ["user-follower"], + "summary": "Retrieve all clubs a user is following", + "operationId": "get-following", + "parameters": [ + { + "type": "string", + "description": "User ID", + "name": "userID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/models.Club" + } + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/users/{userID}/follower/{clubID}/": { + "post": { + "description": "Follow a club", + "consumes": ["application/json"], + "produces": ["application/json"], + "tags": ["user-follower"], + "summary": "Follow a club", + "operationId": "create-following", + "parameters": [ + { + "type": "string", + "description": "User ID", + "name": "userID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Club ID", + "name": "clubID", + "in": "path", + "required": true + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/utilities.SuccessResponse" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "delete": { + "description": "Unfollow a club", + "consumes": ["application/json"], + "produces": ["application/json"], + "tags": ["user-follower"], + "summary": "Unfollow a club", + "operationId": "delete-following", + "parameters": [ + { + "type": "string", + "description": "User ID", + "name": "userID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Club ID", + "name": "clubID", + "in": "path", + "required": true + } + ], + "responses": { + "204": { + "description": "No Content", + "schema": { + "$ref": "#/definitions/utilities.SuccessResponse" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/users/{userID}/member/": { + "get": { + "description": "Retrieves all clubs a user is a member of", + "produces": ["application/json"], + "tags": ["user-member"], + "summary": "Retrieve all clubs a user is a member of", + "operationId": "get-membership", + "parameters": [ + { + "type": "string", + "description": "User ID", + "name": "userID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/models.Club" + } + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/users/{userID}/member/{clubID}/": { + "post": { + "description": "Join a club", + "consumes": ["application/json"], + "produces": ["application/json"], + "tags": ["user-member"], + "summary": "Join a club", + "operationId": "create-membership", + "parameters": [ + { + "type": "string", + "description": "User ID", + "name": "userID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Club ID", + "name": "clubID", + "in": "path", + "required": true + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/utilities.SuccessResponse" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "delete": { + "description": "Leave a club", + "consumes": ["application/json"], + "produces": ["application/json"], + "tags": ["user-member"], + "summary": "Leave a club", + "operationId": "delete-membership", + "parameters": [ + { + "type": "string", + "description": "User ID", + "name": "userID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Club ID", + "name": "clubID", + "in": "path", + "required": true + } + ], + "responses": { + "204": { + "description": "No Content", + "schema": { + "$ref": "#/definitions/utilities.SuccessResponse" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + }, + "/users/{userID}/tags/": { + "get": { + "description": "Retrieves all tags associated with a user", + "produces": ["application/json"], + "tags": ["user-tag"], + "summary": "Retrieve all tags for a user", + "operationId": "get-tags-by-user", + "parameters": [ + { + "type": "string", + "description": "User ID", + "name": "userID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/models.Tag" + } + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "post": { + "description": "Creates tags for a user", + "consumes": ["application/json"], + "produces": ["application/json"], + "tags": ["user-tag"], + "summary": "Create user tags", + "operationId": "create-user-tags", + "parameters": [ + { + "type": "string", + "description": "User ID", + "name": "userID", + "in": "path", + "required": true + }, + { + "description": "User Tags Body", + "name": "userTagsBody", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.CreateUserTagsBody" + } + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/models.Tag" + } + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + } + } + }, + "definitions": { + "errors.Error": { + "type": "object", + "properties": { + "message": { + "type": "string" + }, + "statusCode": { + "type": "integer" + } + } + }, + "models.Category": { + "type": "object", + "required": ["name"], + "properties": { + "created_at": { + "type": "string", + "example": "2023-09-20T16:34:50Z" + }, + "id": { + "type": "string", + "example": "123e4567-e89b-12d3-a456-426614174000" + }, + "name": { + "type": "string", + "maxLength": 255 + }, + "updated_at": { + "type": "string", + "example": "2023-09-20T16:34:50Z" + } + } + }, + "models.CategoryRequestBody": { + "type": "object", + "required": ["name"], + "properties": { + "name": { + "type": "string", + "maxLength": 255 + } + } + }, + "models.Club": { + "type": "object", + "required": [ + "application_link", + "description", + "is_recruiting", + "name", + "num_members", + "preview", + "recruitment_cycle", + "recruitment_type" + ], + "properties": { + "application_link": { + "type": "string", + "maxLength": 255 + }, + "created_at": { + "type": "string", + "example": "2023-09-20T16:34:50Z" + }, + "description": { + "description": "MongoDB URL", + "type": "string", + "maxLength": 255 + }, + "id": { + "type": "string", + "example": "123e4567-e89b-12d3-a456-426614174000" + }, + "is_recruiting": { + "type": "boolean" + }, + "logo": { + "description": "S3 URL", + "type": "string", + "maxLength": 255 + }, + "name": { + "type": "string", + "maxLength": 255 + }, + "num_members": { + "type": "integer", + "minimum": 1 + }, + "preview": { + "type": "string", + "maxLength": 255 + }, + "recruitment_cycle": { + "maxLength": 255, + "enum": ["fall", "spring", "fallSpring", "always"], + "allOf": [ + { + "$ref": "#/definitions/models.RecruitmentCycle" + } + ] + }, + "recruitment_type": { + "maxLength": 255, + "enum": ["unrestricted", "tryout", "application"], + "allOf": [ + { + "$ref": "#/definitions/models.RecruitmentType" + } + ] + }, + "tags": { + "type": "array", + "items": { + "$ref": "#/definitions/models.Tag" + } + }, + "updated_at": { + "type": "string", + "example": "2023-09-20T16:34:50Z" + } + } + }, + "models.College": { + "type": "string", + "enum": ["CAMD", "DMSB", "KCCS", "CE", "BCHS", "SL", "CPS", "CS", "CSSH"], + "x-enum-comments": { + "BCHS": "Bouvé College of Health Sciences", + "CAMD": "College of Arts, Media and Design", + "CE": "College of Engineering", + "CPS": "College of Professional Studies", + "CS": "College of Science", + "CSSH": "College of Social Sciences and Humanities", + "DMSB": "D'Amore-McKim School of Business", + "KCCS": "Khoury College of Computer Sciences", + "SL": "School of Law" + }, + "x-enum-varnames": [ + "CAMD", + "DMSB", + "KCCS", + "CE", + "BCHS", + "SL", + "CPS", + "CS", + "CSSH" + ] + }, + "models.Contact": { + "type": "object", + "required": ["content", "type"], + "properties": { + "content": { + "type": "string", + "maxLength": 255 + }, + "created_at": { + "type": "string", + "example": "2023-09-20T16:34:50Z" + }, + "id": { + "type": "string", + "example": "123e4567-e89b-12d3-a456-426614174000" + }, + "type": { + "maxLength": 255, + "enum": [ + "facebook", + "instagram", + "twitter", + "linkedin", + "youtube", + "github", + "slack", + "discord", + "email", + "customSite" + ], + "allOf": [ + { + "$ref": "#/definitions/models.ContactType" + } + ] + }, + "updated_at": { + "type": "string", + "example": "2023-09-20T16:34:50Z" + } + } + }, + "models.ContactType": { + "type": "string", + "enum": [ + "facebook", + "instagram", + "twitter", + "linkedin", + "youtube", + "github", + "slack", + "discord", + "email", + "customSite" + ], + "x-enum-varnames": [ + "Facebook", + "Instagram", + "Twitter", + "LinkedIn", + "YouTube", + "GitHub", + "Slack", + "Discord", + "Email", + "CustomSite" + ] + }, + "models.CreateClubRequestBody": { + "type": "object", + "required": [ + "application_link", + "description", + "is_recruiting", + "name", + "preview", + "recruitment_cycle", + "recruitment_type", + "user_id" + ], + "properties": { + "application_link": { + "type": "string", + "maxLength": 255 + }, + "description": { + "description": "MongoDB URL", + "type": "string", + "maxLength": 255 + }, + "is_recruiting": { + "type": "boolean" + }, + "logo": { + "description": "S3 URL", + "type": "string", + "maxLength": 255 + }, + "name": { + "type": "string", + "maxLength": 255 + }, + "preview": { + "type": "string", + "maxLength": 255 + }, + "recruitment_cycle": { + "maxLength": 255, + "enum": ["fall", "spring", "fallSpring", "always"], + "allOf": [ + { + "$ref": "#/definitions/models.RecruitmentCycle" + } + ] + }, + "recruitment_type": { + "maxLength": 255, + "enum": ["unrestricted", "tryout", "application"], + "allOf": [ + { + "$ref": "#/definitions/models.RecruitmentType" + } + ] + }, + "user_id": { + "type": "string" + } + } + }, + "models.CreateClubTagsRequestBody": { + "type": "object", + "required": ["tags"], + "properties": { + "tags": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "models.CreateEventRequestBody": { + "type": "object", + "required": [ + "content", + "end_time", + "event_type", + "is_recurring", + "location", + "name", + "preview", + "start_time" + ], + "properties": { + "content": { + "type": "string", + "maxLength": 255 + }, + "end_time": { + "type": "string" + }, + "event_type": { + "maxLength": 255, + "allOf": [ + { + "$ref": "#/definitions/models.EventType" + } + ] + }, + "is_recurring": { + "type": "boolean" + }, + "location": { + "type": "string", + "maxLength": 255 + }, + "name": { + "type": "string", + "maxLength": 255 + }, + "preview": { + "type": "string", + "maxLength": 255 + }, + "series": { + "description": "TODO validate if isRecurring, then series is required", + "allOf": [ + { + "$ref": "#/definitions/models.CreateSeriesRequestBody" + } + ] + }, + "start_time": { + "type": "string" + } + } + }, + "models.CreateSeriesRequestBody": { + "type": "object", + "properties": { + "day_of_month": { + "type": "integer", + "maximum": 31, + "minimum": 1 + }, + "day_of_week": { + "type": "integer", + "maximum": 7, + "minimum": 1 + }, + "max_occurrences": { + "type": "integer", + "minimum": 2 + }, + "recurring_type": { + "maxLength": 255, + "allOf": [ + { + "$ref": "#/definitions/models.RecurringType" + } + ] + }, + "separation_count": { + "type": "integer", + "minimum": 0 + }, + "week_of_month": { + "type": "integer", + "maximum": 5, + "minimum": 1 + } + } + }, + "models.CreateTagRequestBody": { + "type": "object", + "required": ["category_id", "name"], + "properties": { + "category_id": { + "type": "string" + }, + "name": { + "type": "string", + "maxLength": 255 + } + } + }, + "models.CreateUserRequestBody": { + "type": "object", + "required": [ + "college", + "email", + "first_name", + "last_name", + "nuid", + "password", + "year" + ], + "properties": { + "college": { + "enum": [ + "CAMD", + "DMSB", + "KCCS", + "CE", + "BCHS", + "SL", + "CPS", + "CS", + "CSSH" + ], + "allOf": [ + { + "$ref": "#/definitions/models.College" + } + ] + }, + "email": { + "type": "string", + "maxLength": 255 + }, + "first_name": { + "type": "string", + "maxLength": 255 + }, + "last_name": { + "type": "string", + "maxLength": 255 + }, + "nuid": { + "type": "string" + }, + "password": { + "type": "string" + }, + "year": { + "maximum": 6, + "minimum": 1, + "allOf": [ + { + "$ref": "#/definitions/models.Year" + } + ] + } + } + }, + "models.CreateUserTagsBody": { + "type": "object", + "required": ["tags"], + "properties": { + "tags": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "models.Event": { + "type": "object", + "required": [ + "content", + "end_time", + "event_type", + "location", + "name", + "preview", + "start_time" + ], + "properties": { + "content": { + "type": "string", + "maxLength": 255 + }, + "created_at": { + "type": "string", + "example": "2023-09-20T16:34:50Z" + }, + "end_time": { + "type": "string" + }, + "event_type": { + "maxLength": 255, + "allOf": [ + { + "$ref": "#/definitions/models.EventType" + } + ] + }, + "id": { + "type": "string", + "example": "123e4567-e89b-12d3-a456-426614174000" + }, + "is_recurring": { + "type": "boolean" + }, + "location": { + "type": "string", + "maxLength": 255 + }, + "name": { + "type": "string", + "maxLength": 255 + }, + "preview": { + "type": "string", + "maxLength": 255 + }, + "start_time": { + "type": "string" + }, + "updated_at": { + "type": "string", + "example": "2023-09-20T16:34:50Z" + } + } + }, + "models.EventType": { + "type": "string", + "enum": ["open", "membersOnly"], + "x-enum-varnames": ["Open", "MembersOnly"] + }, + "models.LoginUserResponseBody": { + "type": "object", + "required": ["email"], + "properties": { + "email": { + "type": "string" + }, + "password": { + "type": "string", + "maxLength": 255, + "minLength": 8 + } + } + }, + "models.PutContactRequestBody": { + "type": "object", + "required": ["content", "type"], + "properties": { + "content": { + "type": "string", + "maxLength": 255 + }, + "type": { + "maxLength": 255, + "enum": [ + "facebook", + "instagram", + "twitter", + "linkedin", + "youtube", + "github", + "slack", + "discord", + "email", + "customSite" + ], + "allOf": [ + { + "$ref": "#/definitions/models.ContactType" + } + ] + } + } + }, + "models.RecruitmentCycle": { + "type": "string", + "enum": ["fall", "spring", "fallSpring", "always"], + "x-enum-varnames": ["Fall", "Spring", "FallSpring", "Always"] + }, + "models.RecruitmentType": { + "type": "string", + "enum": ["unrestricted", "tryout", "application"], + "x-enum-varnames": ["Unrestricted", "Tryout", "Application"] + }, + "models.RecurringType": { + "type": "string", + "enum": ["daily", "weekly", "monthly"], + "x-enum-varnames": ["Daily", "Weekly", "Monthly"] + }, + "models.Series": { + "type": "object", + "properties": { + "created_at": { + "type": "string", + "example": "2023-09-20T16:34:50Z" + }, + "day_of_month": { + "type": "integer", + "maximum": 31, + "minimum": 1 + }, + "day_of_week": { + "type": "integer", + "maximum": 7, + "minimum": 1 + }, + "events": { + "type": "array", + "items": { + "$ref": "#/definitions/models.Event" + } + }, + "id": { + "type": "string", + "example": "123e4567-e89b-12d3-a456-426614174000" + }, + "max_occurrences": { + "type": "integer", + "minimum": 1 + }, + "recurring_type": { + "maxLength": 255, + "allOf": [ + { + "$ref": "#/definitions/models.RecurringType" + } + ] + }, + "separation_count": { + "type": "integer", + "minimum": 0 + }, + "updated_at": { + "type": "string", + "example": "2023-09-20T16:34:50Z" + }, + "week_of_month": { + "type": "integer", + "maximum": 5, + "minimum": 1 + } + } + }, + "models.Tag": { + "type": "object", + "required": ["category_id", "name"], + "properties": { + "category_id": { + "type": "string" + }, + "created_at": { + "type": "string", + "example": "2023-09-20T16:34:50Z" + }, + "id": { + "type": "string", + "example": "123e4567-e89b-12d3-a456-426614174000" + }, + "name": { + "type": "string", + "maxLength": 255 + }, + "updated_at": { + "type": "string", + "example": "2023-09-20T16:34:50Z" + } + } + }, + "models.UpdateClubRequestBody": { + "type": "object", + "required": ["application_link", "recruitment_cycle", "recruitment_type"], + "properties": { + "application_link": { + "type": "string", + "maxLength": 255 + }, + "description": { + "description": "MongoDB URL", + "type": "string", + "maxLength": 255 + }, + "is_recruiting": { + "type": "boolean" + }, + "logo": { + "description": "S3 URL", + "type": "string", + "maxLength": 255 + }, + "name": { + "type": "string", + "maxLength": 255 + }, + "preview": { + "type": "string", + "maxLength": 255 + }, + "recruitment_cycle": { + "maxLength": 255, + "enum": ["fall", "spring", "fallSpring", "always"], + "allOf": [ + { + "$ref": "#/definitions/models.RecruitmentCycle" + } + ] + }, + "recruitment_type": { + "maxLength": 255, + "enum": ["unrestricted", "tryout", "application"], + "allOf": [ + { + "$ref": "#/definitions/models.RecruitmentType" + } + ] + } + } + }, + "models.UpdatePasswordRequestBody": { + "type": "object", + "required": ["new_password", "old_password"], + "properties": { + "new_password": { + "type": "string" + }, + "old_password": { + "type": "string" + } + } + }, + "models.UpdateSeriesRequestBody": { + "type": "object", + "properties": { + "day_of_month": { + "type": "integer", + "maximum": 31, + "minimum": 1 + }, + "day_of_week": { + "type": "integer", + "maximum": 7, + "minimum": 1 + }, + "max_occurrences": { + "type": "integer", + "minimum": 2 + }, + "recurring_type": { + "maxLength": 255, + "allOf": [ + { + "$ref": "#/definitions/models.RecurringType" + } + ] + }, + "separation_count": { + "type": "integer", + "minimum": 0 + }, + "week_of_month": { + "type": "integer", + "maximum": 5, + "minimum": 1 + } + } + }, + "models.UpdateTagRequestBody": { + "type": "object", + "properties": { + "category_id": { + "type": "string" + }, + "name": { + "type": "string", + "maxLength": 255 + } + } + }, + "models.UpdateUserRequestBody": { + "type": "object", + "properties": { + "college": { + "enum": [ + "CAMD", + "DMSB", + "KCCS", + "CE", + "BCHS", + "SL", + "CPS", + "CS", + "CSSH" + ], + "allOf": [ + { + "$ref": "#/definitions/models.College" + } + ] + }, + "email": { + "type": "string", + "maxLength": 255 + }, + "first_name": { + "type": "string", + "maxLength": 255 + }, + "last_name": { + "type": "string", + "maxLength": 255 + }, + "nuid": { + "type": "string" + }, + "year": { + "maximum": 6, + "minimum": 1, + "allOf": [ + { + "$ref": "#/definitions/models.Year" + } + ] + } + } + }, + "models.User": { + "type": "object", + "required": [ + "college", + "email", + "first_name", + "last_name", + "nuid", + "role", + "year" + ], + "properties": { + "college": { + "maxLength": 255, + "allOf": [ + { + "$ref": "#/definitions/models.College" + } + ] + }, + "created_at": { + "type": "string", + "example": "2023-09-20T16:34:50Z" + }, + "email": { + "type": "string", + "maxLength": 255 + }, + "first_name": { + "type": "string", + "maxLength": 255 + }, + "id": { + "type": "string", + "example": "123e4567-e89b-12d3-a456-426614174000" + }, + "last_name": { + "type": "string", + "maxLength": 255 + }, + "nuid": { + "type": "string" + }, + "role": { + "type": "string", + "enum": ["super", "student"] + }, + "updated_at": { + "type": "string", + "example": "2023-09-20T16:34:50Z" + }, + "year": { + "maximum": 6, + "minimum": 1, + "allOf": [ + { + "$ref": "#/definitions/models.Year" + } + ] + } + } + }, + "models.Year": { + "type": "integer", + "enum": [1, 2, 3, 4, 5, 6], + "x-enum-varnames": [ + "First", + "Second", + "Third", + "Fourth", + "Fifth", + "Graduate" + ] + }, + "utilities.SuccessResponse": { + "type": "object", + "properties": { + "message": { + "type": "string" } + } } -} \ No newline at end of file + } +} diff --git a/backend/src/docs/swagger.yaml b/backend/src/docs/swagger.yaml index fa7ae8996..b80d67cd7 100644 --- a/backend/src/docs/swagger.yaml +++ b/backend/src/docs/swagger.yaml @@ -664,10 +664,6 @@ definitions: type: object models.User: properties: - clubs_followed: - items: - $ref: '#/definitions/models.Club' - type: array college: allOf: - $ref: '#/definitions/models.College' @@ -819,6 +815,8 @@ paths: description: Internal Server Error schema: $ref: '#/definitions/errors.Error' + security: + - cookie: [] summary: Retrieve the current user given an auth session tags: - auth @@ -889,7 +887,7 @@ paths: summary: Updates a user's password tags: - auth - /category/: + /categories/: get: description: Retrieves all categories operationId: get-categories @@ -964,7 +962,7 @@ paths: summary: Creates a category tags: - category - /category/{categoryID}: + /categories/{categoryID}/: delete: description: Deletes a category operationId: delete-category @@ -1031,7 +1029,7 @@ paths: summary: Retrieve a category tags: - category - put: + patch: consumes: - application/json description: Updates a category @@ -1074,7 +1072,7 @@ paths: summary: Updates a category tags: - category - /category/{categoryID}/tags: + /categories/{categoryID}/tags/: get: description: Retrieves all tags associated with a category operationId: get-tags-by-category @@ -1116,7 +1114,7 @@ paths: summary: Retrieve all tags by category tags: - category-tag - /category/{categoryID}/tags/{tagID}: + /categories/{categoryID}/tags/{tagID}/: get: description: Retrieves a tag associated with a category operationId: get-tag-by-category @@ -1153,7 +1151,7 @@ paths: summary: Retrieve a tag by category tags: - category-tag - /club/: + /clubs/: get: description: Retrieves all clubs operationId: get-all-clubs @@ -1224,7 +1222,7 @@ paths: summary: Create a club tags: - club - /club/{clubID}: + /clubs/{clubID}/: delete: description: Deletes a club operationId: delete-club @@ -1291,7 +1289,7 @@ paths: summary: Retrieve a club tags: - club - put: + patch: consumes: - application/json description: Updates a club @@ -1334,7 +1332,7 @@ paths: summary: Update a club tags: - club - /club/{clubID}/contacts: + /clubs/{clubID}/contacts/: get: description: Retrieves all contacts associated with a club operationId: get-contacts-by-club @@ -1368,11 +1366,11 @@ paths: summary: Retrieve all contacts for a club tags: - club-contact - post: + put: consumes: - application/json description: Creates a contact - operationId: create-contact + operationId: put-contact parameters: - description: Club ID in: path @@ -1411,7 +1409,7 @@ paths: summary: Creates a contact tags: - club-contact - /club/{clubID}/events: + /clubs/{clubID}/events/: get: description: Retrieves all events associated with a club operationId: get-events-by-club @@ -1453,7 +1451,7 @@ paths: summary: Retrieve all events for a club tags: - club-event - /club/{clubID}/followers: + /clubs/{clubID}/followers/: get: description: Retrieves all followers associated with a club operationId: get-followers-by-club @@ -1495,7 +1493,7 @@ paths: summary: Retrieve all followers for a club tags: - club-follower - /club/{clubID}/members: + /clubs/{clubID}/members/: get: description: Retrieves all members associated with a club operationId: get-members-by-club @@ -1541,7 +1539,7 @@ paths: summary: Retrieve all members for a club tags: - club-member - /club/{clubID}/tags: + /clubs/{clubID}/tags/: get: description: Retrieves all tags associated with a club operationId: get-tags-by-club @@ -1620,7 +1618,7 @@ paths: summary: Create club tags tags: - club-tag - /club/{clubID}/tags/{tagID}: + /clubs/{clubID}/tags/{tagID}/: delete: description: Deletes a tag associated with a club operationId: delete-tag-by-club @@ -1661,7 +1659,7 @@ paths: summary: Delete a tag for a club tags: - club-tag - /contact/: + /contacts/: get: description: Retrieves all contacts operationId: get-contacts @@ -1698,18 +1696,18 @@ paths: summary: Retrieve all contacts tags: - contact - post: + /contacts/{contactID}/: + delete: consumes: - application/json - description: Creates a contact - operationId: create-contact + description: Deletes a contact + operationId: delete-contact parameters: - - description: Contact Body - in: body - name: contactBody + - description: Contact ID + in: path + name: contactID required: true - schema: - $ref: '#/definitions/models.Contact' + type: string produces: - application/json responses: @@ -1729,10 +1727,43 @@ paths: description: Internal Server Error schema: type: string - summary: Creates a contact + summary: Deletes a contact + tags: + - contact + get: + consumes: + - application/json + description: Retrieves a contact by id + operationId: get-contact + parameters: + - description: Contact ID + in: path + name: contactID + required: true + type: string + produces: + - application/json + responses: + "201": + description: Created + schema: + $ref: '#/definitions/models.Contact' + "400": + description: Bad Request + schema: + type: string + "404": + description: Not Found + schema: + type: string + "500": + description: Internal Server Error + schema: + type: string + summary: Retrieves a contact tags: - contact - /event/: + /events/: get: description: Retrieves all events operationId: get-all-events @@ -1807,7 +1838,7 @@ paths: summary: Create an event tags: - event - /event/{eventID}: + /events/{eventID}/: delete: description: Deletes an event operationId: delete-event @@ -1874,7 +1905,7 @@ paths: summary: Retrieve an event tags: - event - /event/{eventID}/series: + /events/{eventID}/series/: delete: description: Deletes all series associated with an event operationId: delete-series-by-event @@ -1943,7 +1974,7 @@ paths: summary: Retrieve all series by event tags: - event - post: + patch: consumes: - application/json description: Creates a series @@ -1986,12 +2017,10 @@ paths: summary: Create a series tags: - event - /event/{eventID}/series/{seriesID}: - put: - consumes: - - application/json - description: Updates a series by ID - operationId: update-series-by-id + /events/{eventID}/series/{seriesID}/: + delete: + description: Deletes a series by ID + operationId: delete-series-by-id parameters: - description: Event ID in: path @@ -2003,19 +2032,13 @@ paths: name: seriesID required: true type: string - - description: Series Body - in: body - name: seriesBody - required: true - schema: - $ref: '#/definitions/models.UpdateSeriesRequestBody' produces: - application/json responses: - "200": - description: OK + "204": + description: No Content schema: - $ref: '#/definitions/models.Series' + type: string "400": description: Bad Request schema: @@ -2032,14 +2055,18 @@ paths: description: Internal Server Error schema: $ref: '#/definitions/errors.Error' - summary: Update a series by ID + summary: Delete a series by ID tags: - event - /series/{seriesID}: - delete: - description: Deletes a series by ID - operationId: delete-series-by-id + get: + description: Retrieves a series by ID + operationId: get-series-by-id parameters: + - description: Event ID + in: path + name: eventID + required: true + type: string - description: Series ID in: path name: seriesID @@ -2048,18 +2075,14 @@ paths: produces: - application/json responses: - "204": - description: No Content + "200": + description: OK schema: - type: string + $ref: '#/definitions/models.Series' "400": description: Bad Request schema: $ref: '#/definitions/errors.Error' - "401": - description: Unauthorized - schema: - $ref: '#/definitions/errors.Error' "404": description: Not Found schema: @@ -2068,18 +2091,31 @@ paths: description: Internal Server Error schema: $ref: '#/definitions/errors.Error' - summary: Delete a series by ID + summary: Retrieve a series by ID tags: - event - get: - description: Retrieves a series by ID - operationId: get-series-by-id + patch: + consumes: + - application/json + description: Updates a series by ID + operationId: update-series-by-id parameters: + - description: Event ID + in: path + name: eventID + required: true + type: string - description: Series ID in: path name: seriesID required: true type: string + - description: Series Body + in: body + name: seriesBody + required: true + schema: + $ref: '#/definitions/models.UpdateSeriesRequestBody' produces: - application/json responses: @@ -2091,6 +2127,10 @@ paths: description: Bad Request schema: $ref: '#/definitions/errors.Error' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/errors.Error' "404": description: Not Found schema: @@ -2099,11 +2139,11 @@ paths: description: Internal Server Error schema: $ref: '#/definitions/errors.Error' - summary: Retrieve a series by ID + summary: Update a series by ID tags: - event - /tags: - get: + /tags/: + post: description: Retrieves all tags operationId: get-all-tags parameters: @@ -2178,7 +2218,7 @@ paths: summary: Create a tag tags: - tag - /tags/{tagID}: + /tags/{tagID}/: delete: description: Deletes a tag operationId: delete-tag @@ -2245,7 +2285,7 @@ paths: summary: Retrieve a tag tags: - tag - put: + patch: consumes: - application/json description: Updates a tag @@ -2288,7 +2328,43 @@ paths: summary: Update a tag tags: - tag - /user/: + /users/: + get: + description: Retrieves all users + operationId: get-users + parameters: + - description: Limit + in: query + name: limit + type: integer + - description: Page + in: query + name: page + type: integer + produces: + - application/json + responses: + "200": + description: OK + schema: + items: + $ref: '#/definitions/models.User' + type: array + "400": + description: Bad Request + schema: + $ref: '#/definitions/errors.Error' + "401": + description: Unauthorized + schema: + $ref: '#/definitions/errors.Error' + "500": + description: Internal Server Error + schema: + $ref: '#/definitions/errors.Error' + summary: Retrieve all users + tags: + - user post: consumes: - application/json @@ -2327,7 +2403,7 @@ paths: summary: Create a user tags: - user - /user/{userID}: + /users/{userID}/: delete: description: Deletes a user operationId: delete-user @@ -2398,7 +2474,7 @@ paths: summary: Retrieve a user tags: - user - put: + patch: consumes: - application/json description: Updates a user @@ -2441,7 +2517,7 @@ paths: summary: Update a user tags: - user - /user/{userID}/following: + /users/{userID}/follower/: get: description: Retrieves all clubs a user is following operationId: get-following @@ -2479,7 +2555,7 @@ paths: summary: Retrieve all clubs a user is following tags: - user-follower - /user/{userID}/following/{clubID}: + /users/{userID}/follower/{clubID}/: delete: consumes: - application/json @@ -2556,7 +2632,7 @@ paths: summary: Follow a club tags: - user-follower - /user/{userID}/membership: + /users/{userID}/member/: get: description: Retrieves all clubs a user is a member of operationId: get-membership @@ -2594,7 +2670,7 @@ paths: summary: Retrieve all clubs a user is a member of tags: - user-member - /user/{userID}/membership/{clubID}: + /users/{userID}/member/{clubID}/: delete: consumes: - application/json @@ -2671,7 +2747,7 @@ paths: summary: Join a club tags: - user-member - /user/{userID}/tags: + /users/{userID}/tags/: get: description: Retrieves all tags associated with a user operationId: get-tags-by-user diff --git a/backend/src/models/user.go b/backend/src/models/user.go index bf6b76597..6371b393f 100644 --- a/backend/src/models/user.go +++ b/backend/src/models/user.go @@ -51,7 +51,7 @@ type User struct { Tag []Tag `gorm:"many2many:user_tags;constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"-" validate:"-"` Admin []Club `gorm:"many2many:user_club_admins;constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"-" validate:"-"` Member []Club `gorm:"many2many:user_club_members;constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"-" validate:"-"` - Follower []Club `gorm:"many2many:user_club_followers;constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"clubs_followed,omitempty" validate:"-"` + Follower []Club `gorm:"many2many:user_club_followers;constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"-" validate:"-"` IntendedApplicant []Club `gorm:"many2many:user_club_intended_applicants;constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"-" validate:"-"` Asked []Comment `gorm:"foreignKey:AskedByID;constraint:OnUpdate:CASCADE,OnDelete:SET NULL;" json:"-" validate:"-"` Answered []Comment `gorm:"foreignKey:AnsweredByID;constraint:OnUpdate:CASCADE,OnDelete:SET NULL;" json:"-" validate:"-"` diff --git a/backend/src/server/routes/category.go b/backend/src/server/routes/category.go index 135c83649..16726d3e1 100644 --- a/backend/src/server/routes/category.go +++ b/backend/src/server/routes/category.go @@ -23,7 +23,7 @@ func Category(router fiber.Router, categoryService services.CategoryServiceInter categories := router.Group("/categories") categories.Post("/", authMiddleware.Authorize(auth.CreateAll), categoryController.CreateCategory) - categories.Get("/", categoryController.GetAllCategories) + categories.Get("/", categoryController.GetCategories) categories.Get("/:categoryID", categoryController.GetCategory) categories.Delete("/:categoryID", authMiddleware.Authorize(auth.DeleteAll), categoryController.DeleteCategory) categories.Patch("/:categoryID", authMiddleware.Authorize(auth.WriteAll), categoryController.UpdateCategory) diff --git a/backend/src/server/routes/category_tag.go b/backend/src/server/routes/category_tag.go index 7720e7bb5..5f528f826 100644 --- a/backend/src/server/routes/category_tag.go +++ b/backend/src/server/routes/category_tag.go @@ -6,11 +6,14 @@ import ( "github.com/gofiber/fiber/v2" ) -func CategoryTag(router fiber.Router, categoryTagService services.CategoryTagServiceInterface) { +func CategoryTag(categoryRouter fiber.Router, categoryTagService services.CategoryTagServiceInterface) { categoryTagController := controllers.NewCategoryTagController(categoryTagService) - categoryTags := router.Group("/:categoryID/tags") + categoryTags := categoryRouter.Group("/:categoryID/tags") categoryTags.Get("/", categoryTagController.GetTagsByCategory) - categoryTags.Get("/:tagID", categoryTagController.GetTagByCategory) + + categoryID := categoryTags.Group("/:tagID") + + categoryID.Get("/", categoryTagController.GetTagByCategory) } diff --git a/backend/src/server/routes/club.go b/backend/src/server/routes/club.go index 68303c378..442e87653 100644 --- a/backend/src/server/routes/club.go +++ b/backend/src/server/routes/club.go @@ -26,7 +26,7 @@ func Club(router fiber.Router, clubService services.ClubServiceInterface, authMi // api/v1/clubs/* clubs := router.Group("/clubs") - clubs.Get("/", clubController.GetClubs) + clubs.Get("/", clubController.GetAllClubs) clubs.Post("/", authMiddleware.Authorize(p.CreateAll), clubController.CreateClub) // api/v1/clubs/:clubID/* diff --git a/backend/src/server/routes/event.go b/backend/src/server/routes/event.go index f71b32d53..d5a3330c2 100644 --- a/backend/src/server/routes/event.go +++ b/backend/src/server/routes/event.go @@ -28,6 +28,9 @@ func Event(router fiber.Router, eventService services.EventServiceInterface, aut // api/v1/events/:eventID/series/* series := router.Group("/series") + series.Get("/", eventController.GetSeriesByEventID) + series.Delete("/", eventController.DeleteSeriesByEventID) + // api/v1/events/:eventID/series/:seriesID/* seriesID := series.Group("/:seriesID") diff --git a/backend/src/server/routes/user_follower.go b/backend/src/server/routes/user_follower.go index 58c37a773..081da3b85 100644 --- a/backend/src/server/routes/user_follower.go +++ b/backend/src/server/routes/user_follower.go @@ -6,13 +6,13 @@ import ( "github.com/gofiber/fiber/v2" ) -func UserFollower(router fiber.Router, userFollowerService services.UserFollowerServiceInterface) { +func UserFollower(userRouter fiber.Router, userFollowerService services.UserFollowerServiceInterface) { userFollowerController := controllers.NewUserFollowerController(userFollowerService) - userFollower := router.Group("/follower") - // api/v1/users/:userID/follower/* + userFollower := userRouter.Group("/follower") + + userFollower.Get("/", userFollowerController.GetAllFollowing) userFollower.Post("/:clubID", userFollowerController.CreateFollowing) userFollower.Delete("/:clubID", userFollowerController.DeleteFollowing) - userFollower.Get("/", userFollowerController.GetAllFollowing) } diff --git a/backend/src/server/routes/user_member.go b/backend/src/server/routes/user_member.go index e2796de11..407a060b8 100644 --- a/backend/src/server/routes/user_member.go +++ b/backend/src/server/routes/user_member.go @@ -11,8 +11,11 @@ func UserMember(usersRouter fiber.Router, userMembershipService services.UserMem userMember := usersRouter.Group("/member") - // api/v1/users/:userID/member/* - userMember.Post("/:clubID", userMemberController.CreateMembership) - userMember.Delete("/:clubID", userMemberController.DeleteMembership) userMember.Get("/", userMemberController.GetMembership) + + clubID := userMember.Group("/:clubID") + + // api/v1/users/:userID/member/:clubID* + clubID.Post("/", userMemberController.CreateMembership) + clubID.Delete("/", userMemberController.DeleteMembership) } diff --git a/backend/src/server/routes/user_tag.go b/backend/src/server/routes/user_tag.go index 59f10ca73..e2f83380b 100644 --- a/backend/src/server/routes/user_tag.go +++ b/backend/src/server/routes/user_tag.go @@ -6,11 +6,11 @@ import ( "github.com/gofiber/fiber/v2" ) -func UserTag(router fiber.Router, userTagService services.UserTagServiceInterface) { +func UserTag(usersRouter fiber.Router, userTagService services.UserTagServiceInterface) { userTagController := controllers.NewUserTagController(userTagService) // api/v1/user/:userID/tags/* - userTags := router.Group("/tags") + userTags := usersRouter.Group("/tags") userTags.Post("/", userTagController.CreateUserTags) userTags.Get("/", userTagController.GetUserTags) diff --git a/go.work.sum b/go.work.sum index 899195f9d..9392607e3 100644 --- a/go.work.sum +++ b/go.work.sum @@ -14,26 +14,33 @@ cloud.google.com/go/storage v1.35.1 h1:B59ahL//eDfx2IIKFBeT5Atm9wnNmj3+8xG/W4WB/ cloud.google.com/go/storage v1.35.1/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8= github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= +github.com/KyleBanks/depth v1.2.1 h1:5h8fQADFrWtarTdtDudMmGsC7GPbOAu6RVB3ffsVFHc= +github.com/KyleBanks/depth v1.2.1/go.mod h1:jzSb9d0L43HxTQfT+oSA1EEp2q+ne2uh6XgeJcm8brE= github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/GenerateNU/sac/backend v0.0.0-20240208151800-c7c93bbd1bb7/go.mod h1:x3FsVBrEq6k60rGtxaOLg3UJ35BIOh6pyjRdGdte5bo= github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da h1:KjTM2ks9d14ZYCvmHS9iAKVt9AyzRSqNU1qabPih5BY= github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da/go.mod h1:eHEWzANqSiWQsof+nXEI9bUVUyV6F53Fp89EuCh2EAA= +github.com/andybalholm/brotli v1.0.5 h1:8uQZIdzKmjc/iuPu7O2ioW48L81FgatrcpfFmiq/cCs= +github.com/andybalholm/brotli v1.0.5/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= github.com/armon/go-metrics v0.4.1 h1:hR91U9KYmb6bLBYLQjyM+3j+rcd/UhE+G78SFnF8gJA= github.com/armon/go-metrics v0.4.1/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4= github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd/v22 v22.3.2 h1:D9/bQk5vlXQFZ6Kwuu6zaiXJ9oTPe68++AzAJc1DzSI= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= -github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9 h1:uDmaGzcdjhF4i/plgjmEsriH11Y0o7RKapEf/LDaM3w= github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/fatih/color v1.14.1 h1:qfhVLaG5s+nCROl1zJsZRxFeYrHLqWroPOQ8BWiNb4w= github.com/fatih/color v1.14.1/go.mod h1:2oHN61fhTpgcxD3TSWCgKDiH1+x4OiDVVGH8WlgGZGg= +github.com/gabriel-vasile/mimetype v1.4.2 h1:w5qFW6JKBz9Y393Y4q372O9A7cUSequkh1Q7OhCmWKU= +github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA= +github.com/gabriel-vasile/mimetype v1.4.3 h1:in2uUcidCuFcDKtdcBxlR0rJ1+fsokWf+uqxgUFjbI0= +github.com/gabriel-vasile/mimetype v1.4.3/go.mod h1:d8uq/6HKRL6CGdk+aubisF/M5GcPfT7nKyLpA0lbSSk= +github.com/garrettladley/mattress v0.3.2 h1:JsWsEwjXzlJXX7F/Zzmq7Xby1VAwzTJGGvf7DXPj4Jk= +github.com/garrettladley/mattress v0.3.2/go.mod h1:OWKIRc9wC3gtD3Ng/nUuNEiR1TJvRYLmn/KZYw9nl5Q= github.com/go-openapi/jsonpointer v0.20.2 h1:mQc3nmndL8ZBzStEo3JYF8wzmeWffDH4VbXz58sAx6Q= github.com/go-openapi/jsonpointer v0.20.2/go.mod h1:bHen+N0u1KEO3YlmqOjTT9Adn1RfD91Ar825/PuiRVs= github.com/go-openapi/jsonreference v0.20.4 h1:bKlDxQxQJgwpUSgOENiMPzCTBVuc7vTdXSSgNeAhojU= @@ -42,19 +49,32 @@ github.com/go-openapi/spec v0.20.14 h1:7CBlRnw+mtjFGlPDRZmAMnq35cRzI91xj03HVyUi/ github.com/go-openapi/spec v0.20.14/go.mod h1:8EOhTpBoFiask8rrgwbLC3zmJfz4zsCUueRuPM6GNkw= github.com/go-openapi/swag v0.22.9 h1:XX2DssF+mQKM2DHsbgZK74y/zj4mo9I99+89xUmuZCE= github.com/go-openapi/swag v0.22.9/go.mod h1:3/OXnFfnMAwBD099SwYRk7GD3xOrr1iL7d/XNLXVVwE= -github.com/gabriel-vasile/mimetype v1.4.2 h1:w5qFW6JKBz9Y393Y4q372O9A7cUSequkh1Q7OhCmWKU= -github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA= -github.com/garrettladley/mattress v0.2.2/go.mod h1:OWKIRc9wC3gtD3Ng/nUuNEiR1TJvRYLmn/KZYw9nl5Q= +github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= +github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= +github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= +github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= github.com/go-playground/validator/v10 v10.17.0 h1:SmVVlfAOtlZncTxRuinDPomC2DkXJ4E5T9gDA0AIH74= github.com/go-playground/validator/v10 v10.17.0/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU= +github.com/go-playground/validator/v10 v10.18.0 h1:BvolUXjp4zuvkZ5YN5t7ebzbhlUtPsPm2S9NAZ5nl9U= +github.com/go-playground/validator/v10 v10.18.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM= +github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= +github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/gofiber/fiber/v2 v2.52.1 h1:1RoU2NS+b98o1L77sdl5mboGPiW+0Ypsi5oLmcYlgHI= +github.com/gofiber/fiber/v2 v2.52.1/go.mod h1:KEOE+cXMhXG0zHc9d8+E38hoX+ZN7bhOtgeF2oT6jrQ= +github.com/gofiber/swagger v1.0.0 h1:BzUzDS9ZT6fDUa692kxmfOjc1DZiloLiPK/W5z1H1tc= +github.com/gofiber/swagger v1.0.0/go.mod h1:QrYNF1Yrc7ggGK6ATsJ6yfH/8Zi5bu9lA7wB8TmCecg= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY= +github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= @@ -63,6 +83,10 @@ github.com/googleapis/google-cloud-go-testing v0.0.0-20210719221736-1c9a4c676720 github.com/googleapis/google-cloud-go-testing v0.0.0-20210719221736-1c9a4c676720/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gorilla/schema v1.1.0 h1:CamqUDOFUBqzrvxuz2vEwo8+SUdwsluFh7IlzJh30LY= github.com/gorilla/schema v1.1.0/go.mod h1:kgLaKoK1FELgZqMAVxx/5cbj0kT+57qxUrAlIO2eleU= +github.com/h2non/gock v1.2.0 h1:K6ol8rfrRkUOefooBC8elXoaNGYkpp7y2qcxGG6BzUE= +github.com/h2non/gock v1.2.0/go.mod h1:tNhoxHYW2W42cYkYb1WqzdbYIieALC99kpYr7rH/BQk= +github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542 h1:2VTzZjLZBgl62/EtslCrtky5vbi9dd7HrQPQIx6wqiw= +github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542/go.mod h1:Ow0tF8D4Kplbc8s8sSb3V2oUCygFHVp8gC3Dn6U4MNI= github.com/hashicorp/consul/api v1.25.1 h1:CqrdhYzc8XZuPnhIYZWH45toM0LB9ZeYr/gvpLVI3PE= github.com/hashicorp/consul/api v1.25.1/go.mod h1:iiLVwR/htV7mas/sy0O+XSuEnrdBUUydemjxcUrAt4g= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= @@ -77,20 +101,48 @@ github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+l github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/serf v0.10.1 h1:Z1H2J60yRKvfDYAOZLd2MU0ND4AH/WDz7xYHDWQsIPY= github.com/hashicorp/serf v0.10.1/go.mod h1:yL2t6BqATOLGc5HF7qbFkTfXoPIY0WZdWHfEvMqbG+4= +github.com/huandu/go-assert v1.1.6 h1:oaAfYxq9KNDi9qswn/6aE0EydfxSa+tWZC1KabNitYs= +github.com/huandu/go-assert v1.1.6/go.mod h1:JuIfbmYG9ykwvuxoJ3V8TB5QP+3+ajIA54Y44TmkMxs= +github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= +github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= +github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk= +github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= +github.com/jackc/pgx/v5 v5.4.3 h1:cxFyXhxlvAifxnkKKdlxv8XqUf59tDlYjnV5YYfsJJY= +github.com/jackc/pgx/v5 v5.4.3/go.mod h1:Ig06C2Vu0t5qXC60W8sqIthScaEnFvojjj9dSljmHRA= github.com/jackc/puddle/v2 v2.2.1 h1:RhxXJtFG022u4ibrCSMSiu5aOq1i77R3OHKNJj77OAk= github.com/jackc/puddle/v2 v2.2.1/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= +github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= +github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= +github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= +github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= +github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= +github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= +github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/klauspost/compress v1.17.0 h1:Rnbp4K9EjcDuVuHtd0dgA4qNuv9yKDYKK1ulpJwgrqM= +github.com/klauspost/compress v1.17.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1 h1:VkoXIwSboBpnk99O/KFauAEILuNHv5DVFKZMBN/gUgw= github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q= github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4= -github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= -github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= +github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= +github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= +github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= +github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mcnijman/go-emailaddress v1.1.1 h1:AGhgVDG3tCDaL0/Vc6erlPQjDuDN3dAT7rRdgFtetr0= +github.com/mcnijman/go-emailaddress v1.1.1/go.mod h1:5whZrhS8Xp5LxO8zOD35BC+b76kROtsh+dPomeRt/II= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= @@ -103,6 +155,7 @@ github.com/nats-io/nkeys v0.4.6 h1:IzVe95ru2CT6ta874rt9saQRkWfe2nFj1NtvYSLqMzY= github.com/nats-io/nkeys v0.4.6/go.mod h1:4DxZNzenSVd1cYQoAa8948QY3QDjrHfcfVADymtkpts= github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= +github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uYLpLIr5fm8diHn0JbqRycJi6w0Ms= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= github.com/philhofer/fwd v1.1.2 h1:bnDivRJ1EWPjUIRXV5KfORO897HTbpFAQddBdE8t7Gw= github.com/philhofer/fwd v1.1.2/go.mod h1:qkPdfjR2SIEbspLqpe1tO4n5yICnr2DY7mqEx2tUTP0= @@ -110,24 +163,31 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/sftp v1.13.6 h1:JFZT4XbOU7l77xGSpOdW+pwIMqP044IyjXX6FGyEKFo= github.com/pkg/sftp v1.13.6/go.mod h1:tz1ryNURKu77RL+GuCzmoJYxQczL3wLNNpPWagdg4Qk= +github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= +github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= -github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sagikazarmark/crypt v0.17.0 h1:ZA/7pXyjkHoK4bW4mIdnCLvL8hd+Nrbiw7Dqk7D4qUk= github.com/sagikazarmark/crypt v0.17.0/go.mod h1:SMtHTvdmsZMuY/bpZoqokSoChIrcJ/epOxZN58PbZDg= github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/swaggo/files/v2 v2.0.0 h1:hmAt8Dkynw7Ssz46F6pn8ok6YmGZqHSVLZ+HQM7i0kw= +github.com/swaggo/files/v2 v2.0.0/go.mod h1:24kk2Y9NYEJ5lHuCra6iVwkMjIekMCaFq/0JQj66kyM= github.com/swaggo/swag v1.16.2 h1:28Pp+8DkQoV+HLzLx8RGJZXNGKbFqnuvSbAAtoxiY04= github.com/swaggo/swag v1.16.2/go.mod h1:6YzXnDcpr0767iOejs318CwYkCQqyGer6BizOg03f+E= +github.com/swaggo/swag v1.16.3 h1:PnCYjPCah8FK4I26l2F/KQ4yz3sILcVUN3cTlBFA9Pg= +github.com/swaggo/swag v1.16.3/go.mod h1:DImHIuOFXKpMFAQjcC7FG4m3Dg4+QuUgUzJmKjI/gRk= github.com/tinylib/msgp v1.1.8 h1:FCXC1xanKO4I8plpHGH2P7koL/RzZs12l/+r7vakfm0= github.com/tinylib/msgp v1.1.8/go.mod h1:qkpG+2ldGg4xRFmx+jfTvZPxfGFhi64BcnL9vkCm/Tw= github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= -github.com/urfave/cli/v2 v2.27.1 h1:8xSQ6szndafKVRmfyeUMxkNUJQMjL1F2zmsZ+qHpfho= -github.com/urfave/cli/v2 v2.27.1/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= -github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= -github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= +github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasthttp v1.51.0 h1:8b30A5JlZ6C7AS81RsWjYMQmrZG6feChmgAolCl1SqA= +github.com/valyala/fasthttp v1.51.0/go.mod h1:oI2XroL+lI7vdXyYoQk03bXBThfFl2cVdIA3Xl7cH8g= +github.com/valyala/tcplisten v1.0.0 h1:rBHj/Xf+E1tRGZyWIWwJDiRY0zc1Js+CV5DqwacVSA8= +github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc= github.com/yuin/goldmark v1.4.13 h1:fVcFKWvrslecOb/tg+Cc05dkeYx540o0FuFt3nUVDoE= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= go.etcd.io/etcd/api/v3 v3.5.10 h1:szRajuUUbLyppkhs9K6BRtjY37l66XQQmw7oZRANE4k= @@ -150,21 +210,38 @@ golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91 golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/net v0.0.0-20180911220305-26e67e76b6c3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo= golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= +golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/oauth2 v0.15.0 h1:s8pnnxNVzjWyrvYdFUQq5llS1PX2zhPXmccZv99h7uQ= golang.org/x/oauth2 v0.15.0/go.mod h1:q48ptWNTY5XWf+JNten23lcvHpLJ0ZSxF5ttTHKVCAM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= @@ -177,16 +254,20 @@ golang.org/x/term v0.17.0 h1:mkTF7LCd6WGJNL3K1Ad7kwxNfYAW6a8a8QqtMblp/4U= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= +golang.org/x/tools v0.18.0 h1:k8NLag8AGHnn+PHbl7g43CtqZAwG60vZkLqgyZgIHgQ= +golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= @@ -210,6 +291,10 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gorm.io/driver/postgres v1.5.4 h1:Iyrp9Meh3GmbSuyIAGyjkN+n9K+GHX9b9MqsTL4EJCo= gorm.io/driver/postgres v1.5.4/go.mod h1:Bgo89+h0CRcdA33Y6frlaHHVuTdOf87pmyzwW9C/BH0= +gorm.io/driver/postgres v1.5.6 h1:ydr9xEd5YAM0vxVDY0X139dyzNz10spDiDlC7+ibLeU= +gorm.io/driver/postgres v1.5.6/go.mod h1:3e019WlBaYI5o5LIdNV+LyxCMNtLOQETBXL2h4chKpA= +gorm.io/gorm v1.25.7 h1:VsD6acwRjz2zFxGO50gPO6AkNs7KKnvfzUjHQhZDz/A= +gorm.io/gorm v1.25.7/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8= lukechampine.com/frand v1.4.2 h1:RzFIpOvkMXuPMBb9maa4ND4wjBn71E1Jpf8BzJHMaVw= lukechampine.com/frand v1.4.2/go.mod h1:4S/TM2ZgrKejMcKMbeLjISpJMO+/eZ1zu3vYX9dtj3s= sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= From 530080f2e5e786c7ffd2532b562b1682faba13a0 Mon Sep 17 00:00:00 2001 From: David Oduneye <44040421+DOOduneye@users.noreply.github.com> Date: Sun, 25 Feb 2024 11:10:44 -0500 Subject: [PATCH 2/8] Fix swagger docs (#264) Co-authored-by: Alder Whiteford Co-authored-by: Garrett Ladley <92384606+garrettladley@users.noreply.github.com> Co-authored-by: garrettladley Co-authored-by: Alder Whiteford --- backend/src/controllers/auth.go | 7 +- backend/src/controllers/category.go | 8 +- backend/src/controllers/club.go | 2 +- backend/src/controllers/user_follower.go | 2 +- backend/src/docs/docs.go | 94 +- backend/src/docs/swagger.json | 7842 ++++++++++---------- backend/src/docs/swagger.yaml | 21 +- backend/src/middleware/auth.go | 24 + backend/src/middleware/middleware.go | 3 + backend/src/server/routes/auth.go | 15 +- backend/src/server/routes/category.go | 12 +- backend/src/server/routes/category_tag.go | 10 +- backend/src/server/routes/club.go | 2 +- backend/src/server/routes/club_tag.go | 4 +- backend/src/server/routes/event.go | 5 +- backend/src/server/routes/user_follower.go | 2 +- backend/src/server/routes/user_member.go | 9 +- backend/src/server/server.go | 1 + backend/src/utilities/response.go | 22 - go.work.sum | 29 - 20 files changed, 4186 insertions(+), 3928 deletions(-) diff --git a/backend/src/controllers/auth.go b/backend/src/controllers/auth.go index f3bc3db8d..713f39303 100644 --- a/backend/src/controllers/auth.go +++ b/backend/src/controllers/auth.go @@ -119,7 +119,7 @@ func (a *AuthController) Refresh(c *fiber.Ctx) error { return errors.Unauthorized.FiberError(c) } - // Set the access token in the response (e.g., in a cookie or JSON response) + // Set the access token in the response c.Cookie(auth.CreateCookie("access_token", *accessToken, time.Now().Add(time.Minute*60))) return utilities.FiberMessage(c, fiber.StatusOK, "success") @@ -159,14 +159,15 @@ func (a *AuthController) Logout(c *fiber.Ctx) error { // @Tags auth // @Accept json // @Produce json +// @Param userID path string true "User ID" // @Param userBody body models.UpdatePasswordRequestBody true "User Body" // @Success 200 {object} utilities.SuccessResponse // @Failure 400 {object} errors.Error // @Failure 401 {object} errors.Error // @Failure 404 {object} errors.Error +// @Failure 429 {object} errors.Error // @Failure 500 {object} errors.Error -// @Failure 429 {object} -// @Router /auth/update-password/:userID [post] +// @Router /auth/update-password/{userID} [post] func (a *AuthController) UpdatePassword(c *fiber.Ctx) error { var userBody models.UpdatePasswordRequestBody diff --git a/backend/src/controllers/category.go b/backend/src/controllers/category.go index aabdba989..d01bcbb63 100644 --- a/backend/src/controllers/category.go +++ b/backend/src/controllers/category.go @@ -86,13 +86,7 @@ func (cat *CategoryController) GetCategories(c *fiber.Ctx) error { // @Failure 400 {string} errors.Error // @Failure 404 {string} errors.Error // @Failure 500 {string} errors.Error -// @Router /category/{categoryID} [get] -// @Param id path string true "Category ID" -// @Success 200 {object} models.Category -// @Failure 400 {string} string "failed to validate id" -// @Failure 404 {string} string "faied to find category" -// @Failure 500 {string} string "failed to retrieve category" -// @Router /api/v1/category/{id} [get] +// @Router /categories/{categoryID}/ [get] func (cat *CategoryController) GetCategory(c *fiber.Ctx) error { category, err := cat.categoryService.GetCategory(c.Params("categoryID")) if err != nil { diff --git a/backend/src/controllers/club.go b/backend/src/controllers/club.go index 1c8f7c2ab..6c9c1a6c0 100644 --- a/backend/src/controllers/club.go +++ b/backend/src/controllers/club.go @@ -28,7 +28,7 @@ func NewClubController(clubService services.ClubServiceInterface) *ClubControlle // @Failure 400 {object} errors.Error // @Failure 500 {object} errors.Error // @Router /clubs/ [get] -func (cl *ClubController) GetAllClubs(c *fiber.Ctx) error { +func (cl *ClubController) GetClubs(c *fiber.Ctx) error { var queryParams models.ClubQueryParams queryParams.Limit = 10 // default limit diff --git a/backend/src/controllers/user_follower.go b/backend/src/controllers/user_follower.go index 5298b5896..8fe537160 100644 --- a/backend/src/controllers/user_follower.go +++ b/backend/src/controllers/user_follower.go @@ -73,7 +73,7 @@ func (uf *UserFollowerController) DeleteFollowing(c *fiber.Ctx) error { // @Failure 404 {object} errors.Error // @Failure 500 {object} errors.Error // @Router /users/{userID}/follower/ [get] -func (uf *UserFollowerController) GetAllFollowing(c *fiber.Ctx) error { +func (uf *UserFollowerController) GetFollowing(c *fiber.Ctx) error { clubs, err := uf.userFollowerService.GetFollowing(c.Params("userID")) if err != nil { return err.FiberError(c) diff --git a/backend/src/docs/docs.go b/backend/src/docs/docs.go index a25dc2d64..d16085a28 100644 --- a/backend/src/docs/docs.go +++ b/backend/src/docs/docs.go @@ -97,7 +97,6 @@ const docTemplate = `{ }, "/auth/me": { "get": { - "description": "Returns the current user associated with an auth session", "produces": [ "application/json" @@ -183,7 +182,7 @@ const docTemplate = `{ } } }, - "/auth/update-password/:userID": { + "/auth/update-password/{userID}": { "post": { "description": "Updates a user's password", "consumes": [ @@ -198,6 +197,13 @@ const docTemplate = `{ "summary": "Updates a user's password", "operationId": "update-password", "parameters": [ + { + "type": "string", + "description": "User ID", + "name": "userID", + "in": "path", + "required": true + }, { "description": "User Body", "name": "userBody", @@ -233,6 +239,12 @@ const docTemplate = `{ "$ref": "#/definitions/errors.Error" } }, + "429": { + "description": "Too Many Requests", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, "500": { "description": "Internal Server Error", "schema": { @@ -2118,8 +2130,8 @@ const docTemplate = `{ } } }, - "/tags/": { - "post": { + "/tags": { + "get": { "description": "Retrieves all tags", "produces": [ "application/json" @@ -2280,70 +2292,6 @@ const docTemplate = `{ } } }, - "put": { - "description": "Updates a tag", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "tag" - ], - "summary": "Update a tag", - "operationId": "update-tag", - "parameters": [ - { - "type": "string", - "description": "Tag ID", - "name": "tagID", - "in": "path", - "required": true - }, - { - "description": "Tag", - "name": "tag", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.UpdateTagRequestBody" - } - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/models.Tag" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - }, "delete": { "description": "Deletes a tag", "produces": [ @@ -2423,7 +2371,7 @@ const docTemplate = `{ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/models.TagRequestBody" + "$ref": "#/definitions/models.UpdateTagRequestBody" } } ], @@ -4033,10 +3981,14 @@ const docTemplate = `{ ], "properties": { "new_password": { - "type": "string" + "type": "string", + "maxLength": 255, + "minLength": 8 }, "old_password": { - "type": "string" + "type": "string", + "maxLength": 255, + "minLength": 8 } } }, diff --git a/backend/src/docs/swagger.json b/backend/src/docs/swagger.json index bfb2d40cb..4919338f5 100644 --- a/backend/src/docs/swagger.json +++ b/backend/src/docs/swagger.json @@ -1,3843 +1,4177 @@ { - "swagger": "2.0", - "info": { - "description": "Backend Server for SAC App", - "title": "SAC API", - "contact": { - "name": "David Oduneye and Garrett Ladley", - "email": "generatesac@gmail.com" - }, - "version": "1.0" - }, - "host": "127.0.0.1:8080", - "basePath": "/api/v1", - "paths": { - "/auth/login": { - "post": { - "description": "Logs in a user", - "consumes": ["application/json"], - "produces": ["application/json"], - "tags": ["auth"], - "summary": "Logs in a user", - "operationId": "login-user", - "parameters": [ - { - "description": "Login Body", - "name": "loginBody", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.LoginUserResponseBody" - } - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/utilities.SuccessResponse" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/auth/logout": { - "get": { - "description": "Logs out a user", - "consumes": ["application/json"], - "produces": ["application/json"], - "tags": ["auth"], - "summary": "Logs out a user", - "operationId": "logout-user", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/utilities.SuccessResponse" - } - } - } - } - }, - "/auth/me": { - "get": { - "security": [ - { - "cookie": [] - } - ], - "description": "Returns the current user associated with an auth session", - "produces": ["application/json"], - "tags": ["auth"], - "summary": "Retrieve the current user given an auth session", - "operationId": "get-current-user", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/models.User" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/auth/refresh": { - "get": { - "description": "Refreshes a user's access token", - "consumes": ["application/json"], - "produces": ["application/json"], - "tags": ["auth"], - "summary": "Refreshes a user's access token", - "operationId": "refresh-user", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/utilities.SuccessResponse" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/auth/update-password/:userID": { - "post": { - "description": "Updates a user's password", - "consumes": ["application/json"], - "produces": ["application/json"], - "tags": ["auth"], - "summary": "Updates a user's password", - "operationId": "update-password", - "parameters": [ - { - "description": "User Body", - "name": "userBody", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.UpdatePasswordRequestBody" - } - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/utilities.SuccessResponse" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/categories/": { - "get": { - "description": "Retrieves all categories", - "produces": ["application/json"], - "tags": ["category"], - "summary": "Retrieve all categories", - "operationId": "get-categories", - "parameters": [ - { - "type": "integer", - "description": "Limit", - "name": "limit", - "in": "query" - }, - { - "type": "integer", - "description": "Page", - "name": "page", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/models.Category" - } - } - }, - "400": { - "description": "Bad Request", - "schema": { - "type": "string" - } - }, - "404": { - "description": "Not Found", - "schema": { - "type": "string" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "type": "string" - } - } - } - }, - "post": { - "description": "Creates a category", - "consumes": ["application/json"], - "produces": ["application/json"], - "tags": ["category"], - "summary": "Creates a category", - "operationId": "create-category", - "parameters": [ - { - "description": "Category Body", - "name": "categoryBody", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.CategoryRequestBody" - } - } - ], - "responses": { - "201": { - "description": "Created", - "schema": { - "$ref": "#/definitions/models.Category" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "type": "string" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "type": "string" - } - }, - "404": { - "description": "Not Found", - "schema": { - "type": "string" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "type": "string" - } - } - } - } - }, - "/categories/{categoryID}/": { - "get": { - "description": "Retrieves a category", - "produces": ["application/json"], - "tags": ["category"], - "summary": "Retrieve a category", - "operationId": "get-category", - "parameters": [ - { - "type": "string", - "description": "Category ID", - "name": "categoryID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/models.Category" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "type": "string" - } - }, - "404": { - "description": "Not Found", - "schema": { - "type": "string" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "type": "string" - } - } - } - }, - "delete": { - "description": "Deletes a category", - "produces": ["application/json"], - "tags": ["category"], - "summary": "Deletes a category", - "operationId": "delete-category", - "parameters": [ - { - "type": "string", - "description": "Category ID", - "name": "categoryID", - "in": "path", - "required": true - } - ], - "responses": { - "204": { - "description": "No Content", - "schema": { - "type": "string" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "type": "string" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "type": "string" - } - }, - "404": { - "description": "Not Found", - "schema": { - "type": "string" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "type": "string" - } - } - } - }, - "patch": { - "description": "Updates a category", - "consumes": ["application/json"], - "produces": ["application/json"], - "tags": ["category"], - "summary": "Updates a category", - "operationId": "update-category", - "parameters": [ - { - "type": "string", - "description": "Category ID", - "name": "categoryID", - "in": "path", - "required": true - }, - { - "description": "Category Body", - "name": "categoryBody", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.CategoryRequestBody" - } - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/models.Category" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "type": "string" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "type": "string" - } - }, - "404": { - "description": "Not Found", - "schema": { - "type": "string" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "type": "string" - } - } - } - } - }, - "/categories/{categoryID}/tags/": { - "get": { - "description": "Retrieves all tags associated with a category", - "produces": ["application/json"], - "tags": ["category-tag"], - "summary": "Retrieve all tags by category", - "operationId": "get-tags-by-category", - "parameters": [ - { - "type": "string", - "description": "Category ID", - "name": "categoryID", - "in": "path", - "required": true - }, - { - "type": "integer", - "description": "Limit", - "name": "limit", - "in": "query" - }, - { - "type": "integer", - "description": "Page", - "name": "page", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/models.Tag" - } - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/categories/{categoryID}/tags/{tagID}/": { - "get": { - "description": "Retrieves a tag associated with a category", - "produces": ["application/json"], - "tags": ["category-tag"], - "summary": "Retrieve a tag by category", - "operationId": "get-tag-by-category", - "parameters": [ - { - "type": "string", - "description": "Category ID", - "name": "categoryID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Tag ID", - "name": "tagID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/models.Tag" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/clubs/": { - "get": { - "description": "Retrieves all clubs", - "produces": ["application/json"], - "tags": ["club"], - "summary": "Retrieve all clubs", - "operationId": "get-all-clubs", - "parameters": [ - { - "type": "integer", - "description": "Limit", - "name": "limit", - "in": "query" - }, - { - "type": "integer", - "description": "Page", - "name": "page", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/models.Club" - } - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - }, - "post": { - "description": "Creates a club", - "consumes": ["application/json"], - "produces": ["application/json"], - "tags": ["club"], - "summary": "Create a club", - "operationId": "create-club", - "parameters": [ - { - "description": "Club", - "name": "club", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.CreateClubRequestBody" - } - } - ], - "responses": { - "201": { - "description": "Created", - "schema": { - "$ref": "#/definitions/models.Club" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/clubs/{clubID}/": { - "get": { - "description": "Retrieves a club", - "produces": ["application/json"], - "tags": ["club"], - "summary": "Retrieve a club", - "operationId": "get-club", - "parameters": [ - { - "type": "string", - "description": "Club ID", - "name": "clubID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/models.Club" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - }, - "delete": { - "description": "Deletes a club", - "produces": ["application/json"], - "tags": ["club"], - "summary": "Delete a club", - "operationId": "delete-club", - "parameters": [ - { - "type": "string", - "description": "Club ID", - "name": "clubID", - "in": "path", - "required": true - } - ], - "responses": { - "204": { - "description": "No Content", - "schema": { - "type": "string" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - }, - "patch": { - "description": "Updates a club", - "consumes": ["application/json"], - "produces": ["application/json"], - "tags": ["club"], - "summary": "Update a club", - "operationId": "update-club", - "parameters": [ - { - "type": "string", - "description": "Club ID", - "name": "clubID", - "in": "path", - "required": true - }, - { - "description": "Club", - "name": "club", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.UpdateClubRequestBody" - } - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/models.Club" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/clubs/{clubID}/contacts/": { - "get": { - "description": "Retrieves all contacts associated with a club", - "produces": ["application/json"], - "tags": ["club-contact"], - "summary": "Retrieve all contacts for a club", - "operationId": "get-contacts-by-club", - "parameters": [ - { - "type": "string", - "description": "Club ID", - "name": "clubID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/models.Contact" - } - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - }, - "put": { - "description": "Creates a contact", - "consumes": ["application/json"], - "produces": ["application/json"], - "tags": ["club-contact"], - "summary": "Creates a contact", - "operationId": "put-contact", - "parameters": [ - { - "type": "string", - "description": "Club ID", - "name": "clubID", - "in": "path", - "required": true - }, - { - "description": "Contact Body", - "name": "contactBody", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.PutContactRequestBody" - } - } - ], - "responses": { - "201": { - "description": "Created", - "schema": { - "$ref": "#/definitions/models.Contact" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/clubs/{clubID}/events/": { - "get": { - "description": "Retrieves all events associated with a club", - "produces": ["application/json"], - "tags": ["club-event"], - "summary": "Retrieve all events for a club", - "operationId": "get-events-by-club", - "parameters": [ - { - "type": "string", - "description": "Club ID", - "name": "clubID", - "in": "path", - "required": true - }, - { - "type": "integer", - "description": "Limit", - "name": "limit", - "in": "query" - }, - { - "type": "integer", - "description": "Page", - "name": "page", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/models.Event" - } - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/clubs/{clubID}/followers/": { - "get": { - "description": "Retrieves all followers associated with a club", - "produces": ["application/json"], - "tags": ["club-follower"], - "summary": "Retrieve all followers for a club", - "operationId": "get-followers-by-club", - "parameters": [ - { - "type": "string", - "description": "Club ID", - "name": "clubID", - "in": "path", - "required": true - }, - { - "type": "integer", - "description": "Limit", - "name": "limit", - "in": "query" - }, - { - "type": "integer", - "description": "Page", - "name": "page", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/models.User" - } - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/clubs/{clubID}/members/": { - "get": { - "description": "Retrieves all members associated with a club", - "produces": ["application/json"], - "tags": ["club-member"], - "summary": "Retrieve all members for a club", - "operationId": "get-members-by-club", - "parameters": [ - { - "type": "string", - "description": "Club ID", - "name": "clubID", - "in": "path", - "required": true - }, - { - "type": "integer", - "description": "Limit", - "name": "limit", - "in": "query" - }, - { - "type": "integer", - "description": "Page", - "name": "page", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/models.User" - } - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/clubs/{clubID}/tags/": { - "get": { - "description": "Retrieves all tags associated with a club", - "produces": ["application/json"], - "tags": ["club-tag"], - "summary": "Retrieve all tags for a club", - "operationId": "get-tags-by-club", - "parameters": [ - { - "type": "string", - "description": "Club ID", - "name": "clubID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/models.Tag" - } - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - }, - "post": { - "description": "Creates tags for a club", - "consumes": ["application/json"], - "produces": ["application/json"], - "tags": ["club-tag"], - "summary": "Create club tags", - "operationId": "create-club-tags", - "parameters": [ - { - "type": "string", - "description": "Club ID", - "name": "clubID", - "in": "path", - "required": true - }, - { - "description": "Club Tags Body", - "name": "clubTagsBody", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.CreateClubTagsRequestBody" - } - } - ], - "responses": { - "201": { - "description": "Created", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/models.Tag" - } - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/clubs/{clubID}/tags/{tagID}/": { - "delete": { - "description": "Deletes a tag associated with a club", - "produces": ["application/json"], - "tags": ["club-tag"], - "summary": "Delete a tag for a club", - "operationId": "delete-tag-by-club", - "parameters": [ - { - "type": "string", - "description": "Club ID", - "name": "clubID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Tag ID", - "name": "tagID", - "in": "path", - "required": true - } - ], - "responses": { - "204": { - "description": "No Content", - "schema": { - "type": "string" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/contacts/": { - "get": { - "description": "Retrieves all contacts", - "produces": ["application/json"], - "tags": ["contact"], - "summary": "Retrieve all contacts", - "operationId": "get-contacts", - "parameters": [ - { - "type": "integer", - "description": "Limit", - "name": "limit", - "in": "query" - }, - { - "type": "integer", - "description": "Page", - "name": "page", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/models.Contact" - } - } - }, - "400": { - "description": "Bad Request", - "schema": { - "type": "string" - } - }, - "404": { - "description": "Not Found", - "schema": { - "type": "string" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "type": "string" - } - } - } - } - }, - "/contacts/{contactID}/": { - "get": { - "description": "Retrieves a contact by id", - "consumes": ["application/json"], - "produces": ["application/json"], - "tags": ["contact"], - "summary": "Retrieves a contact", - "operationId": "get-contact", - "parameters": [ - { - "type": "string", - "description": "Contact ID", - "name": "contactID", - "in": "path", - "required": true - } - ], - "responses": { - "201": { - "description": "Created", - "schema": { - "$ref": "#/definitions/models.Contact" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "type": "string" - } - }, - "404": { - "description": "Not Found", - "schema": { - "type": "string" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "type": "string" - } - } - } - }, - "delete": { - "description": "Deletes a contact", - "consumes": ["application/json"], - "produces": ["application/json"], - "tags": ["contact"], - "summary": "Deletes a contact", - "operationId": "delete-contact", - "parameters": [ - { - "type": "string", - "description": "Contact ID", - "name": "contactID", - "in": "path", - "required": true - } - ], - "responses": { - "201": { - "description": "Created", - "schema": { - "$ref": "#/definitions/models.Contact" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "type": "string" - } - }, - "404": { - "description": "Not Found", - "schema": { - "type": "string" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "type": "string" - } - } - } - } - }, - "/events/": { - "get": { - "description": "Retrieves all events", - "produces": ["application/json"], - "tags": ["event"], - "summary": "Retrieve all events", - "operationId": "get-all-events", - "parameters": [ - { - "type": "integer", - "description": "Limit", - "name": "limit", - "in": "query" - }, - { - "type": "integer", - "description": "Page", - "name": "page", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/models.Event" - } - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - }, - "post": { - "description": "Creates an event", - "consumes": ["application/json"], - "produces": ["application/json"], - "tags": ["event"], - "summary": "Create an event", - "operationId": "create-event", - "parameters": [ - { - "description": "Event Body", - "name": "event", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.CreateEventRequestBody" - } - } - ], - "responses": { - "201": { - "description": "Created", - "schema": { - "$ref": "#/definitions/models.Event" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/events/{eventID}/": { - "get": { - "description": "Retrieves an event", - "produces": ["application/json"], - "tags": ["event"], - "summary": "Retrieve an event", - "operationId": "get-event", - "parameters": [ - { - "type": "string", - "description": "Event ID", - "name": "eventID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/models.Event" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - }, - "delete": { - "description": "Deletes an event", - "produces": ["application/json"], - "tags": ["event"], - "summary": "Delete an event", - "operationId": "delete-event", - "parameters": [ - { - "type": "string", - "description": "Event ID", - "name": "eventID", - "in": "path", - "required": true - } - ], - "responses": { - "204": { - "description": "No Content", - "schema": { - "type": "string" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/events/{eventID}/series/": { - "get": { - "description": "Retrieves all series associated with an event", - "produces": ["application/json"], - "tags": ["event"], - "summary": "Retrieve all series by event", - "operationId": "get-series-by-event", - "parameters": [ - { - "type": "string", - "description": "Event ID", - "name": "eventID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/models.Series" - } - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - }, - "delete": { - "description": "Deletes all series associated with an event", - "produces": ["application/json"], - "tags": ["event"], - "summary": "Delete all series by event", - "operationId": "delete-series-by-event", - "parameters": [ - { - "type": "string", - "description": "Event ID", - "name": "eventID", - "in": "path", - "required": true - } - ], - "responses": { - "204": { - "description": "No Content", - "schema": { - "type": "string" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - }, - "patch": { - "description": "Creates a series", - "consumes": ["application/json"], - "produces": ["application/json"], - "tags": ["event"], - "summary": "Create a series", - "operationId": "create-series", - "parameters": [ - { - "type": "string", - "description": "Event ID", - "name": "eventID", - "in": "path", - "required": true - }, - { - "description": "Series Body", - "name": "seriesBody", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.CreateSeriesRequestBody" - } - } - ], - "responses": { - "201": { - "description": "Created", - "schema": { - "$ref": "#/definitions/models.Series" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/events/{eventID}/series/{seriesID}/": { - "get": { - "description": "Retrieves a series by ID", - "produces": ["application/json"], - "tags": ["event"], - "summary": "Retrieve a series by ID", - "operationId": "get-series-by-id", - "parameters": [ - { - "type": "string", - "description": "Event ID", - "name": "eventID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Series ID", - "name": "seriesID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/models.Series" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - }, - "delete": { - "description": "Deletes a series by ID", - "produces": ["application/json"], - "tags": ["event"], - "summary": "Delete a series by ID", - "operationId": "delete-series-by-id", - "parameters": [ - { - "type": "string", - "description": "Event ID", - "name": "eventID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Series ID", - "name": "seriesID", - "in": "path", - "required": true - } - ], - "responses": { - "204": { - "description": "No Content", - "schema": { - "type": "string" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - }, - "patch": { - "description": "Updates a series by ID", - "consumes": ["application/json"], - "produces": ["application/json"], - "tags": ["event"], - "summary": "Update a series by ID", - "operationId": "update-series-by-id", - "parameters": [ - { - "type": "string", - "description": "Event ID", - "name": "eventID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Series ID", - "name": "seriesID", - "in": "path", - "required": true - }, - { - "description": "Series Body", - "name": "seriesBody", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.UpdateSeriesRequestBody" - } - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/models.Series" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/tags/": { - "post": { - "description": "Retrieves all tags", - "produces": ["application/json"], - "tags": ["tag"], - "summary": "Retrieve all tags", - "operationId": "get-all-tags", - "parameters": [ - { - "type": "integer", - "description": "Limit", - "name": "limit", - "in": "query" - }, - { - "type": "integer", - "description": "Page", - "name": "page", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/models.Tag" - } - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/tags/": { - "post": { - "description": "Creates a tag", - "consumes": ["application/json"], - "produces": ["application/json"], - "tags": ["tag"], - "summary": "Create a tag", - "operationId": "create-tag", - "parameters": [ - { - "description": "Tag Body", - "name": "tagBody", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.CreateTagRequestBody" - } - } - ], - "responses": { - "201": { - "description": "Created", - "schema": { - "$ref": "#/definitions/models.Tag" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/tags/{tagID}/": { - "get": { - "description": "Retrieves a tag", - "produces": ["application/json"], - "tags": ["tag"], - "summary": "Retrieve a tag", - "operationId": "get-tag", - "parameters": [ - { - "type": "string", - "description": "Tag ID", - "name": "tagID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/models.Tag" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - }, - "put": { - "description": "Updates a tag", - "consumes": ["application/json"], - "produces": ["application/json"], - "tags": ["tag"], - "summary": "Update a tag", - "operationId": "update-tag", - "parameters": [ - { - "type": "string", - "description": "Tag ID", - "name": "tagID", - "in": "path", - "required": true - }, - { - "description": "Tag", - "name": "tag", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.UpdateTagRequestBody" - } - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/models.Tag" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - }, - "delete": { - "description": "Deletes a tag", - "produces": ["application/json"], - "tags": ["tag"], - "summary": "Delete a tag", - "operationId": "delete-tag", - "parameters": [ - { - "type": "string", - "description": "Tag ID", - "name": "tagID", - "in": "path", - "required": true - } - ], - "responses": { - "204": { - "description": "No Content", - "schema": { - "type": "string" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - }, - "patch": { - "description": "Updates a tag", - "consumes": ["application/json"], - "produces": ["application/json"], - "tags": ["tag"], - "summary": "Update a tag", - "operationId": "update-tag", - "parameters": [ - { - "type": "string", - "description": "Tag ID", - "name": "tagID", - "in": "path", - "required": true - }, - { - "description": "Tag", - "name": "tag", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.TagRequestBody" - } - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/models.Tag" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - }, - "/users/": { - "get": { - "description": "Retrieves all users", - "produces": ["application/json"], - "tags": ["user"], - "summary": "Retrieve all users", - "operationId": "get-users", - "parameters": [ - { - "type": "integer", - "description": "Limit", - "name": "limit", - "in": "query" - }, - { - "type": "integer", - "description": "Page", - "name": "page", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/models.User" - } - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - }, - "post": { - "description": "Creates a user", - "consumes": ["application/json"], - "produces": ["application/json"], - "tags": ["user"], - "summary": "Create a user", - "operationId": "create-user", - "parameters": [ - { - "description": "User Body", - "name": "userBody", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.CreateUserRequestBody" - } - } - ], - "responses": { - "201": { - "description": "Created", - "schema": { - "$ref": "#/definitions/models.User" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } + "swagger": "2.0", + "info": { + "description": "Backend Server for SAC App", + "title": "SAC API", + "contact": { + "name": "David Oduneye and Garrett Ladley", + "email": "generatesac@gmail.com" + }, + "version": "1.0" }, - "/users/{userID}/": { - "get": { - "description": "Retrieves a user", - "produces": ["application/json"], - "tags": ["user"], - "summary": "Retrieve a user", - "operationId": "get-user", - "parameters": [ - { - "type": "string", - "description": "User ID", - "name": "userID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/models.User" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - }, - "delete": { - "description": "Deletes a user", - "produces": ["application/json"], - "tags": ["user"], - "summary": "Delete a user", - "operationId": "delete-user", - "parameters": [ - { - "type": "string", - "description": "User ID", - "name": "userID", - "in": "path", - "required": true - } - ], - "responses": { - "204": { - "description": "No Content", - "schema": { - "type": "string" - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" + "host": "127.0.0.1:8080", + "basePath": "/api/v1", + "paths": { + "/auth/login": { + "post": { + "description": "Logs in a user", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "auth" + ], + "summary": "Logs in a user", + "operationId": "login-user", + "parameters": [ + { + "description": "Login Body", + "name": "loginBody", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.LoginUserResponseBody" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/utilities.SuccessResponse" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - }, - "patch": { - "description": "Updates a user", - "consumes": ["application/json"], - "produces": ["application/json"], - "tags": ["user"], - "summary": "Update a user", - "operationId": "update-user", - "parameters": [ - { - "type": "string", - "description": "User ID", - "name": "userID", - "in": "path", - "required": true - }, - { - "description": "User Body", - "name": "userBody", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.UpdateUserRequestBody" + }, + "/auth/logout": { + "get": { + "description": "Logs out a user", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "auth" + ], + "summary": "Logs out a user", + "operationId": "logout-user", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/utilities.SuccessResponse" + } + } + } } - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/models.User" + }, + "/auth/me": { + "get": { + "description": "Returns the current user associated with an auth session", + "produces": [ + "application/json" + ], + "tags": [ + "auth" + ], + "summary": "Retrieve the current user given an auth session", + "operationId": "get-current-user", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/models.User" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" + }, + "/auth/refresh": { + "get": { + "description": "Refreshes a user's access token", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "auth" + ], + "summary": "Refreshes a user's access token", + "operationId": "refresh-user", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/utilities.SuccessResponse" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" + }, + "/auth/update-password/{userID}": { + "post": { + "description": "Updates a user's password", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "auth" + ], + "summary": "Updates a user's password", + "operationId": "update-password", + "parameters": [ + { + "type": "string", + "description": "User ID", + "name": "userID", + "in": "path", + "required": true + }, + { + "description": "User Body", + "name": "userBody", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.UpdatePasswordRequestBody" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/utilities.SuccessResponse" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "429": { + "description": "Too Many Requests", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" + }, + "/categories/": { + "get": { + "description": "Retrieves all categories", + "produces": [ + "application/json" + ], + "tags": [ + "category" + ], + "summary": "Retrieve all categories", + "operationId": "get-categories", + "parameters": [ + { + "type": "integer", + "description": "Limit", + "name": "limit", + "in": "query" + }, + { + "type": "integer", + "description": "Page", + "name": "page", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/models.Category" + } + } + }, + "400": { + "description": "Bad Request", + "schema": { + "type": "string" + } + }, + "404": { + "description": "Not Found", + "schema": { + "type": "string" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "type": "string" + } + } + } + }, + "post": { + "description": "Creates a category", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "category" + ], + "summary": "Creates a category", + "operationId": "create-category", + "parameters": [ + { + "description": "Category Body", + "name": "categoryBody", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.CategoryRequestBody" + } + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/models.Category" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "type": "string" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "type": "string" + } + }, + "404": { + "description": "Not Found", + "schema": { + "type": "string" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "type": "string" + } + } + } } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" + }, + "/categories/{categoryID}/": { + "get": { + "description": "Retrieves a category", + "produces": [ + "application/json" + ], + "tags": [ + "category" + ], + "summary": "Retrieve a category", + "operationId": "get-category", + "parameters": [ + { + "type": "string", + "description": "Category ID", + "name": "categoryID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/models.Category" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "type": "string" + } + }, + "404": { + "description": "Not Found", + "schema": { + "type": "string" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "type": "string" + } + } + } + }, + "delete": { + "description": "Deletes a category", + "produces": [ + "application/json" + ], + "tags": [ + "category" + ], + "summary": "Deletes a category", + "operationId": "delete-category", + "parameters": [ + { + "type": "string", + "description": "Category ID", + "name": "categoryID", + "in": "path", + "required": true + } + ], + "responses": { + "204": { + "description": "No Content", + "schema": { + "type": "string" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "type": "string" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "type": "string" + } + }, + "404": { + "description": "Not Found", + "schema": { + "type": "string" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "type": "string" + } + } + } + }, + "patch": { + "description": "Updates a category", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "category" + ], + "summary": "Updates a category", + "operationId": "update-category", + "parameters": [ + { + "type": "string", + "description": "Category ID", + "name": "categoryID", + "in": "path", + "required": true + }, + { + "description": "Category Body", + "name": "categoryBody", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.CategoryRequestBody" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/models.Category" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "type": "string" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "type": "string" + } + }, + "404": { + "description": "Not Found", + "schema": { + "type": "string" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "type": "string" + } + } + } } - } - } - } - }, - "/users/{userID}/follower/": { - "get": { - "description": "Retrieves all clubs a user is following", - "produces": ["application/json"], - "tags": ["user-follower"], - "summary": "Retrieve all clubs a user is following", - "operationId": "get-following", - "parameters": [ - { - "type": "string", - "description": "User ID", - "name": "userID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/models.Club" - } + }, + "/categories/{categoryID}/tags/": { + "get": { + "description": "Retrieves all tags associated with a category", + "produces": [ + "application/json" + ], + "tags": [ + "category-tag" + ], + "summary": "Retrieve all tags by category", + "operationId": "get-tags-by-category", + "parameters": [ + { + "type": "string", + "description": "Category ID", + "name": "categoryID", + "in": "path", + "required": true + }, + { + "type": "integer", + "description": "Limit", + "name": "limit", + "in": "query" + }, + { + "type": "integer", + "description": "Page", + "name": "page", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/models.Tag" + } + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" + }, + "/categories/{categoryID}/tags/{tagID}/": { + "get": { + "description": "Retrieves a tag associated with a category", + "produces": [ + "application/json" + ], + "tags": [ + "category-tag" + ], + "summary": "Retrieve a tag by category", + "operationId": "get-tag-by-category", + "parameters": [ + { + "type": "string", + "description": "Category ID", + "name": "categoryID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Tag ID", + "name": "tagID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/models.Tag" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" + }, + "/clubs/": { + "get": { + "description": "Retrieves all clubs", + "produces": [ + "application/json" + ], + "tags": [ + "club" + ], + "summary": "Retrieve all clubs", + "operationId": "get-all-clubs", + "parameters": [ + { + "type": "integer", + "description": "Limit", + "name": "limit", + "in": "query" + }, + { + "type": "integer", + "description": "Page", + "name": "page", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/models.Club" + } + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "post": { + "description": "Creates a club", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "club" + ], + "summary": "Create a club", + "operationId": "create-club", + "parameters": [ + { + "description": "Club", + "name": "club", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.CreateClubRequestBody" + } + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/models.Club" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" + }, + "/clubs/{clubID}/": { + "get": { + "description": "Retrieves a club", + "produces": [ + "application/json" + ], + "tags": [ + "club" + ], + "summary": "Retrieve a club", + "operationId": "get-club", + "parameters": [ + { + "type": "string", + "description": "Club ID", + "name": "clubID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/models.Club" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "delete": { + "description": "Deletes a club", + "produces": [ + "application/json" + ], + "tags": [ + "club" + ], + "summary": "Delete a club", + "operationId": "delete-club", + "parameters": [ + { + "type": "string", + "description": "Club ID", + "name": "clubID", + "in": "path", + "required": true + } + ], + "responses": { + "204": { + "description": "No Content", + "schema": { + "type": "string" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "patch": { + "description": "Updates a club", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "club" + ], + "summary": "Update a club", + "operationId": "update-club", + "parameters": [ + { + "type": "string", + "description": "Club ID", + "name": "clubID", + "in": "path", + "required": true + }, + { + "description": "Club", + "name": "club", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.UpdateClubRequestBody" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/models.Club" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" + }, + "/clubs/{clubID}/contacts/": { + "get": { + "description": "Retrieves all contacts associated with a club", + "produces": [ + "application/json" + ], + "tags": [ + "club-contact" + ], + "summary": "Retrieve all contacts for a club", + "operationId": "get-contacts-by-club", + "parameters": [ + { + "type": "string", + "description": "Club ID", + "name": "clubID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/models.Contact" + } + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "put": { + "description": "Creates a contact", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "club-contact" + ], + "summary": "Creates a contact", + "operationId": "put-contact", + "parameters": [ + { + "type": "string", + "description": "Club ID", + "name": "clubID", + "in": "path", + "required": true + }, + { + "description": "Contact Body", + "name": "contactBody", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.PutContactRequestBody" + } + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/models.Contact" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } } - } - } - } - }, - "/users/{userID}/follower/{clubID}/": { - "post": { - "description": "Follow a club", - "consumes": ["application/json"], - "produces": ["application/json"], - "tags": ["user-follower"], - "summary": "Follow a club", - "operationId": "create-following", - "parameters": [ - { - "type": "string", - "description": "User ID", - "name": "userID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Club ID", - "name": "clubID", - "in": "path", - "required": true - } - ], - "responses": { - "201": { - "description": "Created", - "schema": { - "$ref": "#/definitions/utilities.SuccessResponse" + }, + "/clubs/{clubID}/events/": { + "get": { + "description": "Retrieves all events associated with a club", + "produces": [ + "application/json" + ], + "tags": [ + "club-event" + ], + "summary": "Retrieve all events for a club", + "operationId": "get-events-by-club", + "parameters": [ + { + "type": "string", + "description": "Club ID", + "name": "clubID", + "in": "path", + "required": true + }, + { + "type": "integer", + "description": "Limit", + "name": "limit", + "in": "query" + }, + { + "type": "integer", + "description": "Page", + "name": "page", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/models.Event" + } + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" + }, + "/clubs/{clubID}/followers/": { + "get": { + "description": "Retrieves all followers associated with a club", + "produces": [ + "application/json" + ], + "tags": [ + "club-follower" + ], + "summary": "Retrieve all followers for a club", + "operationId": "get-followers-by-club", + "parameters": [ + { + "type": "string", + "description": "Club ID", + "name": "clubID", + "in": "path", + "required": true + }, + { + "type": "integer", + "description": "Limit", + "name": "limit", + "in": "query" + }, + { + "type": "integer", + "description": "Page", + "name": "page", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/models.User" + } + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" + }, + "/clubs/{clubID}/members/": { + "get": { + "description": "Retrieves all members associated with a club", + "produces": [ + "application/json" + ], + "tags": [ + "club-member" + ], + "summary": "Retrieve all members for a club", + "operationId": "get-members-by-club", + "parameters": [ + { + "type": "string", + "description": "Club ID", + "name": "clubID", + "in": "path", + "required": true + }, + { + "type": "integer", + "description": "Limit", + "name": "limit", + "in": "query" + }, + { + "type": "integer", + "description": "Page", + "name": "page", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/models.User" + } + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" + }, + "/clubs/{clubID}/tags/": { + "get": { + "description": "Retrieves all tags associated with a club", + "produces": [ + "application/json" + ], + "tags": [ + "club-tag" + ], + "summary": "Retrieve all tags for a club", + "operationId": "get-tags-by-club", + "parameters": [ + { + "type": "string", + "description": "Club ID", + "name": "clubID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/models.Tag" + } + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "post": { + "description": "Creates tags for a club", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "club-tag" + ], + "summary": "Create club tags", + "operationId": "create-club-tags", + "parameters": [ + { + "type": "string", + "description": "Club ID", + "name": "clubID", + "in": "path", + "required": true + }, + { + "description": "Club Tags Body", + "name": "clubTagsBody", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.CreateClubTagsRequestBody" + } + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/models.Tag" + } + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } } - } - } - }, - "delete": { - "description": "Unfollow a club", - "consumes": ["application/json"], - "produces": ["application/json"], - "tags": ["user-follower"], - "summary": "Unfollow a club", - "operationId": "delete-following", - "parameters": [ - { - "type": "string", - "description": "User ID", - "name": "userID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Club ID", - "name": "clubID", - "in": "path", - "required": true - } - ], - "responses": { - "204": { - "description": "No Content", - "schema": { - "$ref": "#/definitions/utilities.SuccessResponse" + }, + "/clubs/{clubID}/tags/{tagID}/": { + "delete": { + "description": "Deletes a tag associated with a club", + "produces": [ + "application/json" + ], + "tags": [ + "club-tag" + ], + "summary": "Delete a tag for a club", + "operationId": "delete-tag-by-club", + "parameters": [ + { + "type": "string", + "description": "Club ID", + "name": "clubID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Tag ID", + "name": "tagID", + "in": "path", + "required": true + } + ], + "responses": { + "204": { + "description": "No Content", + "schema": { + "type": "string" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" + }, + "/contacts/": { + "get": { + "description": "Retrieves all contacts", + "produces": [ + "application/json" + ], + "tags": [ + "contact" + ], + "summary": "Retrieve all contacts", + "operationId": "get-contacts", + "parameters": [ + { + "type": "integer", + "description": "Limit", + "name": "limit", + "in": "query" + }, + { + "type": "integer", + "description": "Page", + "name": "page", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/models.Contact" + } + } + }, + "400": { + "description": "Bad Request", + "schema": { + "type": "string" + } + }, + "404": { + "description": "Not Found", + "schema": { + "type": "string" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "type": "string" + } + } + } } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" + }, + "/contacts/{contactID}/": { + "get": { + "description": "Retrieves a contact by id", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "contact" + ], + "summary": "Retrieves a contact", + "operationId": "get-contact", + "parameters": [ + { + "type": "string", + "description": "Contact ID", + "name": "contactID", + "in": "path", + "required": true + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/models.Contact" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "type": "string" + } + }, + "404": { + "description": "Not Found", + "schema": { + "type": "string" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "type": "string" + } + } + } + }, + "delete": { + "description": "Deletes a contact", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "contact" + ], + "summary": "Deletes a contact", + "operationId": "delete-contact", + "parameters": [ + { + "type": "string", + "description": "Contact ID", + "name": "contactID", + "in": "path", + "required": true + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/models.Contact" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "type": "string" + } + }, + "404": { + "description": "Not Found", + "schema": { + "type": "string" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "type": "string" + } + } + } } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" + }, + "/events/": { + "get": { + "description": "Retrieves all events", + "produces": [ + "application/json" + ], + "tags": [ + "event" + ], + "summary": "Retrieve all events", + "operationId": "get-all-events", + "parameters": [ + { + "type": "integer", + "description": "Limit", + "name": "limit", + "in": "query" + }, + { + "type": "integer", + "description": "Page", + "name": "page", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/models.Event" + } + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "post": { + "description": "Creates an event", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "event" + ], + "summary": "Create an event", + "operationId": "create-event", + "parameters": [ + { + "description": "Event Body", + "name": "event", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.CreateEventRequestBody" + } + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/models.Event" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } } - } - } - } - }, - "/users/{userID}/member/": { - "get": { - "description": "Retrieves all clubs a user is a member of", - "produces": ["application/json"], - "tags": ["user-member"], - "summary": "Retrieve all clubs a user is a member of", - "operationId": "get-membership", - "parameters": [ - { - "type": "string", - "description": "User ID", - "name": "userID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/models.Club" - } + }, + "/events/{eventID}/": { + "get": { + "description": "Retrieves an event", + "produces": [ + "application/json" + ], + "tags": [ + "event" + ], + "summary": "Retrieve an event", + "operationId": "get-event", + "parameters": [ + { + "type": "string", + "description": "Event ID", + "name": "eventID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/models.Event" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "delete": { + "description": "Deletes an event", + "produces": [ + "application/json" + ], + "tags": [ + "event" + ], + "summary": "Delete an event", + "operationId": "delete-event", + "parameters": [ + { + "type": "string", + "description": "Event ID", + "name": "eventID", + "in": "path", + "required": true + } + ], + "responses": { + "204": { + "description": "No Content", + "schema": { + "type": "string" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" + }, + "/events/{eventID}/series/": { + "get": { + "description": "Retrieves all series associated with an event", + "produces": [ + "application/json" + ], + "tags": [ + "event" + ], + "summary": "Retrieve all series by event", + "operationId": "get-series-by-event", + "parameters": [ + { + "type": "string", + "description": "Event ID", + "name": "eventID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/models.Series" + } + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "delete": { + "description": "Deletes all series associated with an event", + "produces": [ + "application/json" + ], + "tags": [ + "event" + ], + "summary": "Delete all series by event", + "operationId": "delete-series-by-event", + "parameters": [ + { + "type": "string", + "description": "Event ID", + "name": "eventID", + "in": "path", + "required": true + } + ], + "responses": { + "204": { + "description": "No Content", + "schema": { + "type": "string" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "patch": { + "description": "Creates a series", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "event" + ], + "summary": "Create a series", + "operationId": "create-series", + "parameters": [ + { + "type": "string", + "description": "Event ID", + "name": "eventID", + "in": "path", + "required": true + }, + { + "description": "Series Body", + "name": "seriesBody", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.CreateSeriesRequestBody" + } + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/models.Series" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" + }, + "/events/{eventID}/series/{seriesID}/": { + "get": { + "description": "Retrieves a series by ID", + "produces": [ + "application/json" + ], + "tags": [ + "event" + ], + "summary": "Retrieve a series by ID", + "operationId": "get-series-by-id", + "parameters": [ + { + "type": "string", + "description": "Event ID", + "name": "eventID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Series ID", + "name": "seriesID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/models.Series" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "delete": { + "description": "Deletes a series by ID", + "produces": [ + "application/json" + ], + "tags": [ + "event" + ], + "summary": "Delete a series by ID", + "operationId": "delete-series-by-id", + "parameters": [ + { + "type": "string", + "description": "Event ID", + "name": "eventID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Series ID", + "name": "seriesID", + "in": "path", + "required": true + } + ], + "responses": { + "204": { + "description": "No Content", + "schema": { + "type": "string" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "patch": { + "description": "Updates a series by ID", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "event" + ], + "summary": "Update a series by ID", + "operationId": "update-series-by-id", + "parameters": [ + { + "type": "string", + "description": "Event ID", + "name": "eventID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Series ID", + "name": "seriesID", + "in": "path", + "required": true + }, + { + "description": "Series Body", + "name": "seriesBody", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.UpdateSeriesRequestBody" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/models.Series" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" + }, + "/tags": { + "get": { + "description": "Retrieves all tags", + "produces": [ + "application/json" + ], + "tags": [ + "tag" + ], + "summary": "Retrieve all tags", + "operationId": "get-all-tags", + "parameters": [ + { + "type": "integer", + "description": "Limit", + "name": "limit", + "in": "query" + }, + { + "type": "integer", + "description": "Page", + "name": "page", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/models.Tag" + } + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" + }, + "/tags/": { + "post": { + "description": "Creates a tag", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "tag" + ], + "summary": "Create a tag", + "operationId": "create-tag", + "parameters": [ + { + "description": "Tag Body", + "name": "tagBody", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.CreateTagRequestBody" + } + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/models.Tag" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } } - } - } - } - }, - "/users/{userID}/member/{clubID}/": { - "post": { - "description": "Join a club", - "consumes": ["application/json"], - "produces": ["application/json"], - "tags": ["user-member"], - "summary": "Join a club", - "operationId": "create-membership", - "parameters": [ - { - "type": "string", - "description": "User ID", - "name": "userID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Club ID", - "name": "clubID", - "in": "path", - "required": true - } - ], - "responses": { - "201": { - "description": "Created", - "schema": { - "$ref": "#/definitions/utilities.SuccessResponse" + }, + "/tags/{tagID}/": { + "get": { + "description": "Retrieves a tag", + "produces": [ + "application/json" + ], + "tags": [ + "tag" + ], + "summary": "Retrieve a tag", + "operationId": "get-tag", + "parameters": [ + { + "type": "string", + "description": "Tag ID", + "name": "tagID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/models.Tag" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "delete": { + "description": "Deletes a tag", + "produces": [ + "application/json" + ], + "tags": [ + "tag" + ], + "summary": "Delete a tag", + "operationId": "delete-tag", + "parameters": [ + { + "type": "string", + "description": "Tag ID", + "name": "tagID", + "in": "path", + "required": true + } + ], + "responses": { + "204": { + "description": "No Content", + "schema": { + "type": "string" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "patch": { + "description": "Updates a tag", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "tag" + ], + "summary": "Update a tag", + "operationId": "update-tag", + "parameters": [ + { + "type": "string", + "description": "Tag ID", + "name": "tagID", + "in": "path", + "required": true + }, + { + "description": "Tag", + "name": "tag", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.UpdateTagRequestBody" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/models.Tag" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" + }, + "/users/": { + "get": { + "description": "Retrieves all users", + "produces": [ + "application/json" + ], + "tags": [ + "user" + ], + "summary": "Retrieve all users", + "operationId": "get-users", + "parameters": [ + { + "type": "integer", + "description": "Limit", + "name": "limit", + "in": "query" + }, + { + "type": "integer", + "description": "Page", + "name": "page", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/models.User" + } + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "post": { + "description": "Creates a user", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "user" + ], + "summary": "Create a user", + "operationId": "create-user", + "parameters": [ + { + "description": "User Body", + "name": "userBody", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.CreateUserRequestBody" + } + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/models.User" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" + }, + "/users/{userID}/": { + "get": { + "description": "Retrieves a user", + "produces": [ + "application/json" + ], + "tags": [ + "user" + ], + "summary": "Retrieve a user", + "operationId": "get-user", + "parameters": [ + { + "type": "string", + "description": "User ID", + "name": "userID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/models.User" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "delete": { + "description": "Deletes a user", + "produces": [ + "application/json" + ], + "tags": [ + "user" + ], + "summary": "Delete a user", + "operationId": "delete-user", + "parameters": [ + { + "type": "string", + "description": "User ID", + "name": "userID", + "in": "path", + "required": true + } + ], + "responses": { + "204": { + "description": "No Content", + "schema": { + "type": "string" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "patch": { + "description": "Updates a user", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "user" + ], + "summary": "Update a user", + "operationId": "update-user", + "parameters": [ + { + "type": "string", + "description": "User ID", + "name": "userID", + "in": "path", + "required": true + }, + { + "description": "User Body", + "name": "userBody", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.UpdateUserRequestBody" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/models.User" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" + }, + "/users/{userID}/follower/": { + "get": { + "description": "Retrieves all clubs a user is following", + "produces": [ + "application/json" + ], + "tags": [ + "user-follower" + ], + "summary": "Retrieve all clubs a user is following", + "operationId": "get-following", + "parameters": [ + { + "type": "string", + "description": "User ID", + "name": "userID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/models.Club" + } + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } } - } - } - }, - "delete": { - "description": "Leave a club", - "consumes": ["application/json"], - "produces": ["application/json"], - "tags": ["user-member"], - "summary": "Leave a club", - "operationId": "delete-membership", - "parameters": [ - { - "type": "string", - "description": "User ID", - "name": "userID", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "Club ID", - "name": "clubID", - "in": "path", - "required": true - } - ], - "responses": { - "204": { - "description": "No Content", - "schema": { - "$ref": "#/definitions/utilities.SuccessResponse" + }, + "/users/{userID}/follower/{clubID}/": { + "post": { + "description": "Follow a club", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "user-follower" + ], + "summary": "Follow a club", + "operationId": "create-following", + "parameters": [ + { + "type": "string", + "description": "User ID", + "name": "userID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Club ID", + "name": "clubID", + "in": "path", + "required": true + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/utilities.SuccessResponse" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "delete": { + "description": "Unfollow a club", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "user-follower" + ], + "summary": "Unfollow a club", + "operationId": "delete-following", + "parameters": [ + { + "type": "string", + "description": "User ID", + "name": "userID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Club ID", + "name": "clubID", + "in": "path", + "required": true + } + ], + "responses": { + "204": { + "description": "No Content", + "schema": { + "$ref": "#/definitions/utilities.SuccessResponse" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" + }, + "/users/{userID}/member/": { + "get": { + "description": "Retrieves all clubs a user is a member of", + "produces": [ + "application/json" + ], + "tags": [ + "user-member" + ], + "summary": "Retrieve all clubs a user is a member of", + "operationId": "get-membership", + "parameters": [ + { + "type": "string", + "description": "User ID", + "name": "userID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/models.Club" + } + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" + }, + "/users/{userID}/member/{clubID}/": { + "post": { + "description": "Join a club", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "user-member" + ], + "summary": "Join a club", + "operationId": "create-membership", + "parameters": [ + { + "type": "string", + "description": "User ID", + "name": "userID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Club ID", + "name": "clubID", + "in": "path", + "required": true + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "$ref": "#/definitions/utilities.SuccessResponse" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "delete": { + "description": "Leave a club", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "user-member" + ], + "summary": "Leave a club", + "operationId": "delete-membership", + "parameters": [ + { + "type": "string", + "description": "User ID", + "name": "userID", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "Club ID", + "name": "clubID", + "in": "path", + "required": true + } + ], + "responses": { + "204": { + "description": "No Content", + "schema": { + "$ref": "#/definitions/utilities.SuccessResponse" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" + }, + "/users/{userID}/tags/": { + "get": { + "description": "Retrieves all tags associated with a user", + "produces": [ + "application/json" + ], + "tags": [ + "user-tag" + ], + "summary": "Retrieve all tags for a user", + "operationId": "get-tags-by-user", + "parameters": [ + { + "type": "string", + "description": "User ID", + "name": "userID", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/models.Tag" + } + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } + }, + "post": { + "description": "Creates tags for a user", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "user-tag" + ], + "summary": "Create user tags", + "operationId": "create-user-tags", + "parameters": [ + { + "type": "string", + "description": "User ID", + "name": "userID", + "in": "path", + "required": true + }, + { + "description": "User Tags Body", + "name": "userTagsBody", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.CreateUserTagsBody" + } + } + ], + "responses": { + "201": { + "description": "Created", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/models.Tag" + } + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "401": { + "description": "Unauthorized", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/errors.Error" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/errors.Error" + } + } + } } - } } - } }, - "/users/{userID}/tags/": { - "get": { - "description": "Retrieves all tags associated with a user", - "produces": ["application/json"], - "tags": ["user-tag"], - "summary": "Retrieve all tags for a user", - "operationId": "get-tags-by-user", - "parameters": [ - { - "type": "string", - "description": "User ID", - "name": "userID", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/models.Tag" - } - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - }, - "post": { - "description": "Creates tags for a user", - "consumes": ["application/json"], - "produces": ["application/json"], - "tags": ["user-tag"], - "summary": "Create user tags", - "operationId": "create-user-tags", - "parameters": [ - { - "type": "string", - "description": "User ID", - "name": "userID", - "in": "path", - "required": true - }, - { - "description": "User Tags Body", - "name": "userTagsBody", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/models.CreateUserTagsBody" - } - } - ], - "responses": { - "201": { - "description": "Created", - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/models.Tag" - } - } - }, - "400": { - "description": "Bad Request", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "401": { - "description": "Unauthorized", - "schema": { - "$ref": "#/definitions/errors.Error" + "definitions": { + "errors.Error": { + "type": "object", + "properties": { + "message": { + "type": "string" + }, + "statusCode": { + "type": "integer" + } } - }, - "404": { - "description": "Not Found", - "schema": { - "$ref": "#/definitions/errors.Error" - } - }, - "500": { - "description": "Internal Server Error", - "schema": { - "$ref": "#/definitions/errors.Error" - } - } - } - } - } - }, - "definitions": { - "errors.Error": { - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "statusCode": { - "type": "integer" - } - } - }, - "models.Category": { - "type": "object", - "required": ["name"], - "properties": { - "created_at": { - "type": "string", - "example": "2023-09-20T16:34:50Z" - }, - "id": { - "type": "string", - "example": "123e4567-e89b-12d3-a456-426614174000" - }, - "name": { - "type": "string", - "maxLength": 255 - }, - "updated_at": { - "type": "string", - "example": "2023-09-20T16:34:50Z" - } - } - }, - "models.CategoryRequestBody": { - "type": "object", - "required": ["name"], - "properties": { - "name": { - "type": "string", - "maxLength": 255 - } - } - }, - "models.Club": { - "type": "object", - "required": [ - "application_link", - "description", - "is_recruiting", - "name", - "num_members", - "preview", - "recruitment_cycle", - "recruitment_type" - ], - "properties": { - "application_link": { - "type": "string", - "maxLength": 255 - }, - "created_at": { - "type": "string", - "example": "2023-09-20T16:34:50Z" - }, - "description": { - "description": "MongoDB URL", - "type": "string", - "maxLength": 255 - }, - "id": { - "type": "string", - "example": "123e4567-e89b-12d3-a456-426614174000" - }, - "is_recruiting": { - "type": "boolean" - }, - "logo": { - "description": "S3 URL", - "type": "string", - "maxLength": 255 - }, - "name": { - "type": "string", - "maxLength": 255 }, - "num_members": { - "type": "integer", - "minimum": 1 - }, - "preview": { - "type": "string", - "maxLength": 255 - }, - "recruitment_cycle": { - "maxLength": 255, - "enum": ["fall", "spring", "fallSpring", "always"], - "allOf": [ - { - "$ref": "#/definitions/models.RecruitmentCycle" + "models.Category": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "created_at": { + "type": "string", + "example": "2023-09-20T16:34:50Z" + }, + "id": { + "type": "string", + "example": "123e4567-e89b-12d3-a456-426614174000" + }, + "name": { + "type": "string", + "maxLength": 255 + }, + "updated_at": { + "type": "string", + "example": "2023-09-20T16:34:50Z" + } } - ] }, - "recruitment_type": { - "maxLength": 255, - "enum": ["unrestricted", "tryout", "application"], - "allOf": [ - { - "$ref": "#/definitions/models.RecruitmentType" + "models.CategoryRequestBody": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string", + "maxLength": 255 + } } - ] - }, - "tags": { - "type": "array", - "items": { - "$ref": "#/definitions/models.Tag" - } - }, - "updated_at": { - "type": "string", - "example": "2023-09-20T16:34:50Z" - } - } - }, - "models.College": { - "type": "string", - "enum": ["CAMD", "DMSB", "KCCS", "CE", "BCHS", "SL", "CPS", "CS", "CSSH"], - "x-enum-comments": { - "BCHS": "Bouvé College of Health Sciences", - "CAMD": "College of Arts, Media and Design", - "CE": "College of Engineering", - "CPS": "College of Professional Studies", - "CS": "College of Science", - "CSSH": "College of Social Sciences and Humanities", - "DMSB": "D'Amore-McKim School of Business", - "KCCS": "Khoury College of Computer Sciences", - "SL": "School of Law" - }, - "x-enum-varnames": [ - "CAMD", - "DMSB", - "KCCS", - "CE", - "BCHS", - "SL", - "CPS", - "CS", - "CSSH" - ] - }, - "models.Contact": { - "type": "object", - "required": ["content", "type"], - "properties": { - "content": { - "type": "string", - "maxLength": 255 - }, - "created_at": { - "type": "string", - "example": "2023-09-20T16:34:50Z" }, - "id": { - "type": "string", - "example": "123e4567-e89b-12d3-a456-426614174000" - }, - "type": { - "maxLength": 255, - "enum": [ - "facebook", - "instagram", - "twitter", - "linkedin", - "youtube", - "github", - "slack", - "discord", - "email", - "customSite" - ], - "allOf": [ - { - "$ref": "#/definitions/models.ContactType" + "models.Club": { + "type": "object", + "required": [ + "application_link", + "description", + "is_recruiting", + "name", + "num_members", + "preview", + "recruitment_cycle", + "recruitment_type" + ], + "properties": { + "application_link": { + "type": "string", + "maxLength": 255 + }, + "created_at": { + "type": "string", + "example": "2023-09-20T16:34:50Z" + }, + "description": { + "description": "MongoDB URL", + "type": "string", + "maxLength": 255 + }, + "id": { + "type": "string", + "example": "123e4567-e89b-12d3-a456-426614174000" + }, + "is_recruiting": { + "type": "boolean" + }, + "logo": { + "description": "S3 URL", + "type": "string", + "maxLength": 255 + }, + "name": { + "type": "string", + "maxLength": 255 + }, + "num_members": { + "type": "integer", + "minimum": 1 + }, + "preview": { + "type": "string", + "maxLength": 255 + }, + "recruitment_cycle": { + "maxLength": 255, + "enum": [ + "fall", + "spring", + "fallSpring", + "always" + ], + "allOf": [ + { + "$ref": "#/definitions/models.RecruitmentCycle" + } + ] + }, + "recruitment_type": { + "maxLength": 255, + "enum": [ + "unrestricted", + "tryout", + "application" + ], + "allOf": [ + { + "$ref": "#/definitions/models.RecruitmentType" + } + ] + }, + "tags": { + "type": "array", + "items": { + "$ref": "#/definitions/models.Tag" + } + }, + "updated_at": { + "type": "string", + "example": "2023-09-20T16:34:50Z" + } } - ] - }, - "updated_at": { - "type": "string", - "example": "2023-09-20T16:34:50Z" - } - } - }, - "models.ContactType": { - "type": "string", - "enum": [ - "facebook", - "instagram", - "twitter", - "linkedin", - "youtube", - "github", - "slack", - "discord", - "email", - "customSite" - ], - "x-enum-varnames": [ - "Facebook", - "Instagram", - "Twitter", - "LinkedIn", - "YouTube", - "GitHub", - "Slack", - "Discord", - "Email", - "CustomSite" - ] - }, - "models.CreateClubRequestBody": { - "type": "object", - "required": [ - "application_link", - "description", - "is_recruiting", - "name", - "preview", - "recruitment_cycle", - "recruitment_type", - "user_id" - ], - "properties": { - "application_link": { - "type": "string", - "maxLength": 255 - }, - "description": { - "description": "MongoDB URL", - "type": "string", - "maxLength": 255 }, - "is_recruiting": { - "type": "boolean" - }, - "logo": { - "description": "S3 URL", - "type": "string", - "maxLength": 255 + "models.College": { + "type": "string", + "enum": [ + "CAMD", + "DMSB", + "KCCS", + "CE", + "BCHS", + "SL", + "CPS", + "CS", + "CSSH" + ], + "x-enum-comments": { + "BCHS": "Bouvé College of Health Sciences", + "CAMD": "College of Arts, Media and Design", + "CE": "College of Engineering", + "CPS": "College of Professional Studies", + "CS": "College of Science", + "CSSH": "College of Social Sciences and Humanities", + "DMSB": "D'Amore-McKim School of Business", + "KCCS": "Khoury College of Computer Sciences", + "SL": "School of Law" + }, + "x-enum-varnames": [ + "CAMD", + "DMSB", + "KCCS", + "CE", + "BCHS", + "SL", + "CPS", + "CS", + "CSSH" + ] }, - "name": { - "type": "string", - "maxLength": 255 + "models.Contact": { + "type": "object", + "required": [ + "content", + "type" + ], + "properties": { + "content": { + "type": "string", + "maxLength": 255 + }, + "created_at": { + "type": "string", + "example": "2023-09-20T16:34:50Z" + }, + "id": { + "type": "string", + "example": "123e4567-e89b-12d3-a456-426614174000" + }, + "type": { + "maxLength": 255, + "enum": [ + "facebook", + "instagram", + "twitter", + "linkedin", + "youtube", + "github", + "slack", + "discord", + "email", + "customSite" + ], + "allOf": [ + { + "$ref": "#/definitions/models.ContactType" + } + ] + }, + "updated_at": { + "type": "string", + "example": "2023-09-20T16:34:50Z" + } + } }, - "preview": { - "type": "string", - "maxLength": 255 + "models.ContactType": { + "type": "string", + "enum": [ + "facebook", + "instagram", + "twitter", + "linkedin", + "youtube", + "github", + "slack", + "discord", + "email", + "customSite" + ], + "x-enum-varnames": [ + "Facebook", + "Instagram", + "Twitter", + "LinkedIn", + "YouTube", + "GitHub", + "Slack", + "Discord", + "Email", + "CustomSite" + ] }, - "recruitment_cycle": { - "maxLength": 255, - "enum": ["fall", "spring", "fallSpring", "always"], - "allOf": [ - { - "$ref": "#/definitions/models.RecruitmentCycle" + "models.CreateClubRequestBody": { + "type": "object", + "required": [ + "application_link", + "description", + "is_recruiting", + "name", + "preview", + "recruitment_cycle", + "recruitment_type", + "user_id" + ], + "properties": { + "application_link": { + "type": "string", + "maxLength": 255 + }, + "description": { + "description": "MongoDB URL", + "type": "string", + "maxLength": 255 + }, + "is_recruiting": { + "type": "boolean" + }, + "logo": { + "description": "S3 URL", + "type": "string", + "maxLength": 255 + }, + "name": { + "type": "string", + "maxLength": 255 + }, + "preview": { + "type": "string", + "maxLength": 255 + }, + "recruitment_cycle": { + "maxLength": 255, + "enum": [ + "fall", + "spring", + "fallSpring", + "always" + ], + "allOf": [ + { + "$ref": "#/definitions/models.RecruitmentCycle" + } + ] + }, + "recruitment_type": { + "maxLength": 255, + "enum": [ + "unrestricted", + "tryout", + "application" + ], + "allOf": [ + { + "$ref": "#/definitions/models.RecruitmentType" + } + ] + }, + "user_id": { + "type": "string" + } } - ] }, - "recruitment_type": { - "maxLength": 255, - "enum": ["unrestricted", "tryout", "application"], - "allOf": [ - { - "$ref": "#/definitions/models.RecruitmentType" + "models.CreateClubTagsRequestBody": { + "type": "object", + "required": [ + "tags" + ], + "properties": { + "tags": { + "type": "array", + "items": { + "type": "string" + } + } } - ] - }, - "user_id": { - "type": "string" - } - } - }, - "models.CreateClubTagsRequestBody": { - "type": "object", - "required": ["tags"], - "properties": { - "tags": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "models.CreateEventRequestBody": { - "type": "object", - "required": [ - "content", - "end_time", - "event_type", - "is_recurring", - "location", - "name", - "preview", - "start_time" - ], - "properties": { - "content": { - "type": "string", - "maxLength": 255 - }, - "end_time": { - "type": "string" }, - "event_type": { - "maxLength": 255, - "allOf": [ - { - "$ref": "#/definitions/models.EventType" + "models.CreateEventRequestBody": { + "type": "object", + "required": [ + "content", + "end_time", + "event_type", + "is_recurring", + "location", + "name", + "preview", + "start_time" + ], + "properties": { + "content": { + "type": "string", + "maxLength": 255 + }, + "end_time": { + "type": "string" + }, + "event_type": { + "maxLength": 255, + "allOf": [ + { + "$ref": "#/definitions/models.EventType" + } + ] + }, + "is_recurring": { + "type": "boolean" + }, + "location": { + "type": "string", + "maxLength": 255 + }, + "name": { + "type": "string", + "maxLength": 255 + }, + "preview": { + "type": "string", + "maxLength": 255 + }, + "series": { + "description": "TODO validate if isRecurring, then series is required", + "allOf": [ + { + "$ref": "#/definitions/models.CreateSeriesRequestBody" + } + ] + }, + "start_time": { + "type": "string" + } } - ] }, - "is_recurring": { - "type": "boolean" - }, - "location": { - "type": "string", - "maxLength": 255 - }, - "name": { - "type": "string", - "maxLength": 255 - }, - "preview": { - "type": "string", - "maxLength": 255 - }, - "series": { - "description": "TODO validate if isRecurring, then series is required", - "allOf": [ - { - "$ref": "#/definitions/models.CreateSeriesRequestBody" + "models.CreateSeriesRequestBody": { + "type": "object", + "properties": { + "day_of_month": { + "type": "integer", + "maximum": 31, + "minimum": 1 + }, + "day_of_week": { + "type": "integer", + "maximum": 7, + "minimum": 1 + }, + "max_occurrences": { + "type": "integer", + "minimum": 2 + }, + "recurring_type": { + "maxLength": 255, + "allOf": [ + { + "$ref": "#/definitions/models.RecurringType" + } + ] + }, + "separation_count": { + "type": "integer", + "minimum": 0 + }, + "week_of_month": { + "type": "integer", + "maximum": 5, + "minimum": 1 + } } - ] - }, - "start_time": { - "type": "string" - } - } - }, - "models.CreateSeriesRequestBody": { - "type": "object", - "properties": { - "day_of_month": { - "type": "integer", - "maximum": 31, - "minimum": 1 - }, - "day_of_week": { - "type": "integer", - "maximum": 7, - "minimum": 1 }, - "max_occurrences": { - "type": "integer", - "minimum": 2 - }, - "recurring_type": { - "maxLength": 255, - "allOf": [ - { - "$ref": "#/definitions/models.RecurringType" + "models.CreateTagRequestBody": { + "type": "object", + "required": [ + "category_id", + "name" + ], + "properties": { + "category_id": { + "type": "string" + }, + "name": { + "type": "string", + "maxLength": 255 + } } - ] - }, - "separation_count": { - "type": "integer", - "minimum": 0 - }, - "week_of_month": { - "type": "integer", - "maximum": 5, - "minimum": 1 - } - } - }, - "models.CreateTagRequestBody": { - "type": "object", - "required": ["category_id", "name"], - "properties": { - "category_id": { - "type": "string" }, - "name": { - "type": "string", - "maxLength": 255 - } - } - }, - "models.CreateUserRequestBody": { - "type": "object", - "required": [ - "college", - "email", - "first_name", - "last_name", - "nuid", - "password", - "year" - ], - "properties": { - "college": { - "enum": [ - "CAMD", - "DMSB", - "KCCS", - "CE", - "BCHS", - "SL", - "CPS", - "CS", - "CSSH" - ], - "allOf": [ - { - "$ref": "#/definitions/models.College" + "models.CreateUserRequestBody": { + "type": "object", + "required": [ + "college", + "email", + "first_name", + "last_name", + "nuid", + "password", + "year" + ], + "properties": { + "college": { + "enum": [ + "CAMD", + "DMSB", + "KCCS", + "CE", + "BCHS", + "SL", + "CPS", + "CS", + "CSSH" + ], + "allOf": [ + { + "$ref": "#/definitions/models.College" + } + ] + }, + "email": { + "type": "string", + "maxLength": 255 + }, + "first_name": { + "type": "string", + "maxLength": 255 + }, + "last_name": { + "type": "string", + "maxLength": 255 + }, + "nuid": { + "type": "string" + }, + "password": { + "type": "string" + }, + "year": { + "maximum": 6, + "minimum": 1, + "allOf": [ + { + "$ref": "#/definitions/models.Year" + } + ] + } } - ] - }, - "email": { - "type": "string", - "maxLength": 255 }, - "first_name": { - "type": "string", - "maxLength": 255 - }, - "last_name": { - "type": "string", - "maxLength": 255 - }, - "nuid": { - "type": "string" - }, - "password": { - "type": "string" - }, - "year": { - "maximum": 6, - "minimum": 1, - "allOf": [ - { - "$ref": "#/definitions/models.Year" + "models.CreateUserTagsBody": { + "type": "object", + "required": [ + "tags" + ], + "properties": { + "tags": { + "type": "array", + "items": { + "type": "string" + } + } } - ] - } - } - }, - "models.CreateUserTagsBody": { - "type": "object", - "required": ["tags"], - "properties": { - "tags": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "models.Event": { - "type": "object", - "required": [ - "content", - "end_time", - "event_type", - "location", - "name", - "preview", - "start_time" - ], - "properties": { - "content": { - "type": "string", - "maxLength": 255 }, - "created_at": { - "type": "string", - "example": "2023-09-20T16:34:50Z" - }, - "end_time": { - "type": "string" - }, - "event_type": { - "maxLength": 255, - "allOf": [ - { - "$ref": "#/definitions/models.EventType" + "models.Event": { + "type": "object", + "required": [ + "content", + "end_time", + "event_type", + "location", + "name", + "preview", + "start_time" + ], + "properties": { + "content": { + "type": "string", + "maxLength": 255 + }, + "created_at": { + "type": "string", + "example": "2023-09-20T16:34:50Z" + }, + "end_time": { + "type": "string" + }, + "event_type": { + "maxLength": 255, + "allOf": [ + { + "$ref": "#/definitions/models.EventType" + } + ] + }, + "id": { + "type": "string", + "example": "123e4567-e89b-12d3-a456-426614174000" + }, + "is_recurring": { + "type": "boolean" + }, + "location": { + "type": "string", + "maxLength": 255 + }, + "name": { + "type": "string", + "maxLength": 255 + }, + "preview": { + "type": "string", + "maxLength": 255 + }, + "start_time": { + "type": "string" + }, + "updated_at": { + "type": "string", + "example": "2023-09-20T16:34:50Z" + } } - ] - }, - "id": { - "type": "string", - "example": "123e4567-e89b-12d3-a456-426614174000" - }, - "is_recurring": { - "type": "boolean" - }, - "location": { - "type": "string", - "maxLength": 255 - }, - "name": { - "type": "string", - "maxLength": 255 - }, - "preview": { - "type": "string", - "maxLength": 255 - }, - "start_time": { - "type": "string" }, - "updated_at": { - "type": "string", - "example": "2023-09-20T16:34:50Z" - } - } - }, - "models.EventType": { - "type": "string", - "enum": ["open", "membersOnly"], - "x-enum-varnames": ["Open", "MembersOnly"] - }, - "models.LoginUserResponseBody": { - "type": "object", - "required": ["email"], - "properties": { - "email": { - "type": "string" - }, - "password": { - "type": "string", - "maxLength": 255, - "minLength": 8 - } - } - }, - "models.PutContactRequestBody": { - "type": "object", - "required": ["content", "type"], - "properties": { - "content": { - "type": "string", - "maxLength": 255 + "models.EventType": { + "type": "string", + "enum": [ + "open", + "membersOnly" + ], + "x-enum-varnames": [ + "Open", + "MembersOnly" + ] }, - "type": { - "maxLength": 255, - "enum": [ - "facebook", - "instagram", - "twitter", - "linkedin", - "youtube", - "github", - "slack", - "discord", - "email", - "customSite" - ], - "allOf": [ - { - "$ref": "#/definitions/models.ContactType" + "models.LoginUserResponseBody": { + "type": "object", + "required": [ + "email" + ], + "properties": { + "email": { + "type": "string" + }, + "password": { + "type": "string", + "maxLength": 255, + "minLength": 8 + } } - ] - } - } - }, - "models.RecruitmentCycle": { - "type": "string", - "enum": ["fall", "spring", "fallSpring", "always"], - "x-enum-varnames": ["Fall", "Spring", "FallSpring", "Always"] - }, - "models.RecruitmentType": { - "type": "string", - "enum": ["unrestricted", "tryout", "application"], - "x-enum-varnames": ["Unrestricted", "Tryout", "Application"] - }, - "models.RecurringType": { - "type": "string", - "enum": ["daily", "weekly", "monthly"], - "x-enum-varnames": ["Daily", "Weekly", "Monthly"] - }, - "models.Series": { - "type": "object", - "properties": { - "created_at": { - "type": "string", - "example": "2023-09-20T16:34:50Z" - }, - "day_of_month": { - "type": "integer", - "maximum": 31, - "minimum": 1 - }, - "day_of_week": { - "type": "integer", - "maximum": 7, - "minimum": 1 - }, - "events": { - "type": "array", - "items": { - "$ref": "#/definitions/models.Event" - } - }, - "id": { - "type": "string", - "example": "123e4567-e89b-12d3-a456-426614174000" }, - "max_occurrences": { - "type": "integer", - "minimum": 1 - }, - "recurring_type": { - "maxLength": 255, - "allOf": [ - { - "$ref": "#/definitions/models.RecurringType" + "models.PutContactRequestBody": { + "type": "object", + "required": [ + "content", + "type" + ], + "properties": { + "content": { + "type": "string", + "maxLength": 255 + }, + "type": { + "maxLength": 255, + "enum": [ + "facebook", + "instagram", + "twitter", + "linkedin", + "youtube", + "github", + "slack", + "discord", + "email", + "customSite" + ], + "allOf": [ + { + "$ref": "#/definitions/models.ContactType" + } + ] + } } - ] - }, - "separation_count": { - "type": "integer", - "minimum": 0 - }, - "updated_at": { - "type": "string", - "example": "2023-09-20T16:34:50Z" - }, - "week_of_month": { - "type": "integer", - "maximum": 5, - "minimum": 1 - } - } - }, - "models.Tag": { - "type": "object", - "required": ["category_id", "name"], - "properties": { - "category_id": { - "type": "string" - }, - "created_at": { - "type": "string", - "example": "2023-09-20T16:34:50Z" - }, - "id": { - "type": "string", - "example": "123e4567-e89b-12d3-a456-426614174000" }, - "name": { - "type": "string", - "maxLength": 255 - }, - "updated_at": { - "type": "string", - "example": "2023-09-20T16:34:50Z" - } - } - }, - "models.UpdateClubRequestBody": { - "type": "object", - "required": ["application_link", "recruitment_cycle", "recruitment_type"], - "properties": { - "application_link": { - "type": "string", - "maxLength": 255 - }, - "description": { - "description": "MongoDB URL", - "type": "string", - "maxLength": 255 - }, - "is_recruiting": { - "type": "boolean" - }, - "logo": { - "description": "S3 URL", - "type": "string", - "maxLength": 255 + "models.RecruitmentCycle": { + "type": "string", + "enum": [ + "fall", + "spring", + "fallSpring", + "always" + ], + "x-enum-varnames": [ + "Fall", + "Spring", + "FallSpring", + "Always" + ] }, - "name": { - "type": "string", - "maxLength": 255 + "models.RecruitmentType": { + "type": "string", + "enum": [ + "unrestricted", + "tryout", + "application" + ], + "x-enum-varnames": [ + "Unrestricted", + "Tryout", + "Application" + ] }, - "preview": { - "type": "string", - "maxLength": 255 + "models.RecurringType": { + "type": "string", + "enum": [ + "daily", + "weekly", + "monthly" + ], + "x-enum-varnames": [ + "Daily", + "Weekly", + "Monthly" + ] }, - "recruitment_cycle": { - "maxLength": 255, - "enum": ["fall", "spring", "fallSpring", "always"], - "allOf": [ - { - "$ref": "#/definitions/models.RecruitmentCycle" + "models.Series": { + "type": "object", + "properties": { + "created_at": { + "type": "string", + "example": "2023-09-20T16:34:50Z" + }, + "day_of_month": { + "type": "integer", + "maximum": 31, + "minimum": 1 + }, + "day_of_week": { + "type": "integer", + "maximum": 7, + "minimum": 1 + }, + "events": { + "type": "array", + "items": { + "$ref": "#/definitions/models.Event" + } + }, + "id": { + "type": "string", + "example": "123e4567-e89b-12d3-a456-426614174000" + }, + "max_occurrences": { + "type": "integer", + "minimum": 1 + }, + "recurring_type": { + "maxLength": 255, + "allOf": [ + { + "$ref": "#/definitions/models.RecurringType" + } + ] + }, + "separation_count": { + "type": "integer", + "minimum": 0 + }, + "updated_at": { + "type": "string", + "example": "2023-09-20T16:34:50Z" + }, + "week_of_month": { + "type": "integer", + "maximum": 5, + "minimum": 1 + } } - ] }, - "recruitment_type": { - "maxLength": 255, - "enum": ["unrestricted", "tryout", "application"], - "allOf": [ - { - "$ref": "#/definitions/models.RecruitmentType" + "models.Tag": { + "type": "object", + "required": [ + "category_id", + "name" + ], + "properties": { + "category_id": { + "type": "string" + }, + "created_at": { + "type": "string", + "example": "2023-09-20T16:34:50Z" + }, + "id": { + "type": "string", + "example": "123e4567-e89b-12d3-a456-426614174000" + }, + "name": { + "type": "string", + "maxLength": 255 + }, + "updated_at": { + "type": "string", + "example": "2023-09-20T16:34:50Z" + } } - ] - } - } - }, - "models.UpdatePasswordRequestBody": { - "type": "object", - "required": ["new_password", "old_password"], - "properties": { - "new_password": { - "type": "string" - }, - "old_password": { - "type": "string" - } - } - }, - "models.UpdateSeriesRequestBody": { - "type": "object", - "properties": { - "day_of_month": { - "type": "integer", - "maximum": 31, - "minimum": 1 - }, - "day_of_week": { - "type": "integer", - "maximum": 7, - "minimum": 1 - }, - "max_occurrences": { - "type": "integer", - "minimum": 2 }, - "recurring_type": { - "maxLength": 255, - "allOf": [ - { - "$ref": "#/definitions/models.RecurringType" + "models.UpdateClubRequestBody": { + "type": "object", + "required": [ + "application_link", + "recruitment_cycle", + "recruitment_type" + ], + "properties": { + "application_link": { + "type": "string", + "maxLength": 255 + }, + "description": { + "description": "MongoDB URL", + "type": "string", + "maxLength": 255 + }, + "is_recruiting": { + "type": "boolean" + }, + "logo": { + "description": "S3 URL", + "type": "string", + "maxLength": 255 + }, + "name": { + "type": "string", + "maxLength": 255 + }, + "preview": { + "type": "string", + "maxLength": 255 + }, + "recruitment_cycle": { + "maxLength": 255, + "enum": [ + "fall", + "spring", + "fallSpring", + "always" + ], + "allOf": [ + { + "$ref": "#/definitions/models.RecruitmentCycle" + } + ] + }, + "recruitment_type": { + "maxLength": 255, + "enum": [ + "unrestricted", + "tryout", + "application" + ], + "allOf": [ + { + "$ref": "#/definitions/models.RecruitmentType" + } + ] + } } - ] }, - "separation_count": { - "type": "integer", - "minimum": 0 - }, - "week_of_month": { - "type": "integer", - "maximum": 5, - "minimum": 1 - } - } - }, - "models.UpdateTagRequestBody": { - "type": "object", - "properties": { - "category_id": { - "type": "string" - }, - "name": { - "type": "string", - "maxLength": 255 - } - } - }, - "models.UpdateUserRequestBody": { - "type": "object", - "properties": { - "college": { - "enum": [ - "CAMD", - "DMSB", - "KCCS", - "CE", - "BCHS", - "SL", - "CPS", - "CS", - "CSSH" - ], - "allOf": [ - { - "$ref": "#/definitions/models.College" + "models.UpdatePasswordRequestBody": { + "type": "object", + "required": [ + "new_password", + "old_password" + ], + "properties": { + "new_password": { + "type": "string", + "maxLength": 255, + "minLength": 8 + }, + "old_password": { + "type": "string", + "maxLength": 255, + "minLength": 8 + } } - ] - }, - "email": { - "type": "string", - "maxLength": 255 - }, - "first_name": { - "type": "string", - "maxLength": 255 }, - "last_name": { - "type": "string", - "maxLength": 255 - }, - "nuid": { - "type": "string" - }, - "year": { - "maximum": 6, - "minimum": 1, - "allOf": [ - { - "$ref": "#/definitions/models.Year" - } - ] - } - } - }, - "models.User": { - "type": "object", - "required": [ - "college", - "email", - "first_name", - "last_name", - "nuid", - "role", - "year" - ], - "properties": { - "college": { - "maxLength": 255, - "allOf": [ - { - "$ref": "#/definitions/models.College" + "models.UpdateSeriesRequestBody": { + "type": "object", + "properties": { + "day_of_month": { + "type": "integer", + "maximum": 31, + "minimum": 1 + }, + "day_of_week": { + "type": "integer", + "maximum": 7, + "minimum": 1 + }, + "max_occurrences": { + "type": "integer", + "minimum": 2 + }, + "recurring_type": { + "maxLength": 255, + "allOf": [ + { + "$ref": "#/definitions/models.RecurringType" + } + ] + }, + "separation_count": { + "type": "integer", + "minimum": 0 + }, + "week_of_month": { + "type": "integer", + "maximum": 5, + "minimum": 1 + } } - ] - }, - "created_at": { - "type": "string", - "example": "2023-09-20T16:34:50Z" - }, - "email": { - "type": "string", - "maxLength": 255 - }, - "first_name": { - "type": "string", - "maxLength": 255 }, - "id": { - "type": "string", - "example": "123e4567-e89b-12d3-a456-426614174000" - }, - "last_name": { - "type": "string", - "maxLength": 255 + "models.UpdateTagRequestBody": { + "type": "object", + "properties": { + "category_id": { + "type": "string" + }, + "name": { + "type": "string", + "maxLength": 255 + } + } }, - "nuid": { - "type": "string" + "models.UpdateUserRequestBody": { + "type": "object", + "properties": { + "college": { + "enum": [ + "CAMD", + "DMSB", + "KCCS", + "CE", + "BCHS", + "SL", + "CPS", + "CS", + "CSSH" + ], + "allOf": [ + { + "$ref": "#/definitions/models.College" + } + ] + }, + "email": { + "type": "string", + "maxLength": 255 + }, + "first_name": { + "type": "string", + "maxLength": 255 + }, + "last_name": { + "type": "string", + "maxLength": 255 + }, + "nuid": { + "type": "string" + }, + "year": { + "maximum": 6, + "minimum": 1, + "allOf": [ + { + "$ref": "#/definitions/models.Year" + } + ] + } + } }, - "role": { - "type": "string", - "enum": ["super", "student"] + "models.User": { + "type": "object", + "required": [ + "college", + "email", + "first_name", + "last_name", + "nuid", + "role", + "year" + ], + "properties": { + "college": { + "maxLength": 255, + "allOf": [ + { + "$ref": "#/definitions/models.College" + } + ] + }, + "created_at": { + "type": "string", + "example": "2023-09-20T16:34:50Z" + }, + "email": { + "type": "string", + "maxLength": 255 + }, + "first_name": { + "type": "string", + "maxLength": 255 + }, + "id": { + "type": "string", + "example": "123e4567-e89b-12d3-a456-426614174000" + }, + "last_name": { + "type": "string", + "maxLength": 255 + }, + "nuid": { + "type": "string" + }, + "role": { + "type": "string", + "enum": [ + "super", + "student" + ] + }, + "updated_at": { + "type": "string", + "example": "2023-09-20T16:34:50Z" + }, + "year": { + "maximum": 6, + "minimum": 1, + "allOf": [ + { + "$ref": "#/definitions/models.Year" + } + ] + } + } }, - "updated_at": { - "type": "string", - "example": "2023-09-20T16:34:50Z" + "models.Year": { + "type": "integer", + "enum": [ + 1, + 2, + 3, + 4, + 5, + 6 + ], + "x-enum-varnames": [ + "First", + "Second", + "Third", + "Fourth", + "Fifth", + "Graduate" + ] }, - "year": { - "maximum": 6, - "minimum": 1, - "allOf": [ - { - "$ref": "#/definitions/models.Year" + "utilities.SuccessResponse": { + "type": "object", + "properties": { + "message": { + "type": "string" + } } - ] - } - } - }, - "models.Year": { - "type": "integer", - "enum": [1, 2, 3, 4, 5, 6], - "x-enum-varnames": [ - "First", - "Second", - "Third", - "Fourth", - "Fifth", - "Graduate" - ] - }, - "utilities.SuccessResponse": { - "type": "object", - "properties": { - "message": { - "type": "string" } - } } - } -} +} \ No newline at end of file diff --git a/backend/src/docs/swagger.yaml b/backend/src/docs/swagger.yaml index b80d67cd7..297340a4c 100644 --- a/backend/src/docs/swagger.yaml +++ b/backend/src/docs/swagger.yaml @@ -590,8 +590,12 @@ definitions: models.UpdatePasswordRequestBody: properties: new_password: + maxLength: 255 + minLength: 8 type: string old_password: + maxLength: 255 + minLength: 8 type: string required: - new_password @@ -815,8 +819,6 @@ paths: description: Internal Server Error schema: $ref: '#/definitions/errors.Error' - security: - - cookie: [] summary: Retrieve the current user given an auth session tags: - auth @@ -848,13 +850,18 @@ paths: summary: Refreshes a user's access token tags: - auth - /auth/update-password/:userID: + /auth/update-password/{userID}: post: consumes: - application/json description: Updates a user's password operationId: update-password parameters: + - description: User ID + in: path + name: userID + required: true + type: string - description: User Body in: body name: userBody @@ -880,6 +887,10 @@ paths: description: Not Found schema: $ref: '#/definitions/errors.Error' + "429": + description: Too Many Requests + schema: + $ref: '#/definitions/errors.Error' "500": description: Internal Server Error schema: @@ -2142,8 +2153,8 @@ paths: summary: Update a series by ID tags: - event - /tags/: - post: + /tags: + get: description: Retrieves all tags operationId: get-all-tags parameters: diff --git a/backend/src/middleware/auth.go b/backend/src/middleware/auth.go index 06ccec137..dafa3d25b 100644 --- a/backend/src/middleware/auth.go +++ b/backend/src/middleware/auth.go @@ -1,13 +1,16 @@ package middleware import ( + "fmt" "slices" + "time" "github.com/GenerateNU/sac/backend/src/auth" "github.com/GenerateNU/sac/backend/src/errors" "github.com/GenerateNU/sac/backend/src/models" "github.com/gofiber/fiber/v2" + "github.com/gofiber/fiber/v2/middleware/limiter" "github.com/gofiber/fiber/v2/middleware/skip" ) @@ -33,6 +36,12 @@ func (m *AuthMiddlewareService) Skip(h fiber.Handler) fiber.Handler { }) } +func (m *AuthMiddlewareService) DisableAuth(h fiber.Handler) fiber.Handler { + return func(c *fiber.Ctx) error { + return h(c) + } +} + func (m *AuthMiddlewareService) IsSuper(c *fiber.Ctx) bool { claims, err := auth.From(c) if err != nil { @@ -96,3 +105,18 @@ func (m *AuthMiddlewareService) Authorize(requiredPermissions ...auth.Permission return c.Next() } } + +func (m *AuthMiddlewareService) Limiter(rate int, expiration time.Duration) func(c *fiber.Ctx) error { + return limiter.New(limiter.Config{ + Max: rate, + Expiration: expiration, + KeyGenerator: func(c *fiber.Ctx) string { + return fmt.Sprintf("%s-%s", c.IP(), c.Path()) + }, + LimitReached: func(c *fiber.Ctx) error { + return c.Status(fiber.StatusTooManyRequests).JSON(fiber.Map{ + "error": "Too many requests", + }) + }, + }) +} diff --git a/backend/src/middleware/middleware.go b/backend/src/middleware/middleware.go index 5f7aa04e4..b7afb1523 100644 --- a/backend/src/middleware/middleware.go +++ b/backend/src/middleware/middleware.go @@ -1,6 +1,8 @@ package middleware import ( + "time" + "github.com/GenerateNU/sac/backend/src/auth" "github.com/GenerateNU/sac/backend/src/config" "github.com/go-playground/validator/v10" @@ -15,6 +17,7 @@ type AuthMiddlewareInterface interface { Authorize(requiredPermissions ...auth.Permission) func(c *fiber.Ctx) error Skip(h fiber.Handler) fiber.Handler IsSuper(c *fiber.Ctx) bool + Limiter(rate int, duration time.Duration) func(c *fiber.Ctx) error } type AuthMiddlewareService struct { diff --git a/backend/src/server/routes/auth.go b/backend/src/server/routes/auth.go index f13af2ee6..fd866caff 100644 --- a/backend/src/server/routes/auth.go +++ b/backend/src/server/routes/auth.go @@ -1,7 +1,6 @@ package routes import ( - "fmt" "time" "github.com/GenerateNU/sac/backend/src/config" @@ -9,7 +8,6 @@ import ( "github.com/GenerateNU/sac/backend/src/middleware" "github.com/GenerateNU/sac/backend/src/services" "github.com/gofiber/fiber/v2" - "github.com/gofiber/fiber/v2/middleware/limiter" ) func Auth(router fiber.Router, authService services.AuthServiceInterface, settings config.AuthSettings, authMiddleware *middleware.AuthMiddlewareService) { @@ -22,17 +20,6 @@ func Auth(router fiber.Router, authService services.AuthServiceInterface, settin auth.Get("/logout", authController.Logout) auth.Get("/refresh", authController.Refresh) auth.Get("/me", authController.Me) - auth.Post("/update-password/:userID", limiter.New(limiter.Config{ - Max: 2, - Expiration: 1 * time.Minute, - KeyGenerator: func(c *fiber.Ctx) string { - return fmt.Sprintf("%s-%s", c.IP(), c.Params("userId")) - }, - LimitReached: func(c *fiber.Ctx) error { - return c.Status(fiber.StatusTooManyRequests).JSON(fiber.Map{ - "message": "Too many requests", - }) - }, - }), authMiddleware.UserAuthorizeById, authController.UpdatePassword) + auth.Post("/update-password/:userID", authMiddleware.Limiter(2, 1*time.Minute), authMiddleware.UserAuthorizeById, authController.UpdatePassword) // auth.Post("/reset-password/:userID", middleware.Skip(authMiddleware.UserAuthorizeById), authController.ResetPassword) } diff --git a/backend/src/server/routes/category.go b/backend/src/server/routes/category.go index 16726d3e1..fdd37823a 100644 --- a/backend/src/server/routes/category.go +++ b/backend/src/server/routes/category.go @@ -24,9 +24,13 @@ func Category(router fiber.Router, categoryService services.CategoryServiceInter categories.Post("/", authMiddleware.Authorize(auth.CreateAll), categoryController.CreateCategory) categories.Get("/", categoryController.GetCategories) - categories.Get("/:categoryID", categoryController.GetCategory) - categories.Delete("/:categoryID", authMiddleware.Authorize(auth.DeleteAll), categoryController.DeleteCategory) - categories.Patch("/:categoryID", authMiddleware.Authorize(auth.WriteAll), categoryController.UpdateCategory) - return categories + // api/v1/categories/:categoryID/* + categoriesID := categories.Group("/:categoryID") + + categoriesID.Get("/", categoryController.GetCategory) + categoriesID.Delete("/", authMiddleware.Authorize(auth.DeleteAll), categoryController.DeleteCategory) + categoriesID.Patch("/", authMiddleware.Authorize(auth.WriteAll), categoryController.UpdateCategory) + + return categoriesID } diff --git a/backend/src/server/routes/category_tag.go b/backend/src/server/routes/category_tag.go index 5f528f826..a29303be0 100644 --- a/backend/src/server/routes/category_tag.go +++ b/backend/src/server/routes/category_tag.go @@ -6,14 +6,12 @@ import ( "github.com/gofiber/fiber/v2" ) -func CategoryTag(categoryRouter fiber.Router, categoryTagService services.CategoryTagServiceInterface) { +func CategoryTag(categoryIDRoute fiber.Router, categoryTagService services.CategoryTagServiceInterface) { categoryTagController := controllers.NewCategoryTagController(categoryTagService) - categoryTags := categoryRouter.Group("/:categoryID/tags") + // api/v1/categories/:categoryID/tags/* + categoryTags := categoryIDRoute.Group("/tags") categoryTags.Get("/", categoryTagController.GetTagsByCategory) - - categoryID := categoryTags.Group("/:tagID") - - categoryID.Get("/", categoryTagController.GetTagByCategory) + categoryTags.Get("/:tagID", categoryTagController.GetTagByCategory) } diff --git a/backend/src/server/routes/club.go b/backend/src/server/routes/club.go index 442e87653..68303c378 100644 --- a/backend/src/server/routes/club.go +++ b/backend/src/server/routes/club.go @@ -26,7 +26,7 @@ func Club(router fiber.Router, clubService services.ClubServiceInterface, authMi // api/v1/clubs/* clubs := router.Group("/clubs") - clubs.Get("/", clubController.GetAllClubs) + clubs.Get("/", clubController.GetClubs) clubs.Post("/", authMiddleware.Authorize(p.CreateAll), clubController.CreateClub) // api/v1/clubs/:clubID/* diff --git a/backend/src/server/routes/club_tag.go b/backend/src/server/routes/club_tag.go index 75aee7b53..d8d0e6463 100644 --- a/backend/src/server/routes/club_tag.go +++ b/backend/src/server/routes/club_tag.go @@ -7,10 +7,10 @@ import ( "github.com/gofiber/fiber/v2" ) -func ClubTag(router fiber.Router, clubTagService services.ClubTagServiceInterface, authMiddleware *middleware.AuthMiddlewareService) { +func ClubTag(clubIDRouter fiber.Router, clubTagService services.ClubTagServiceInterface, authMiddleware *middleware.AuthMiddlewareService) { clubTagController := controllers.NewClubTagController(clubTagService) - clubTags := router.Group("/tags") + clubTags := clubIDRouter.Group("/tags") clubTags.Get("/", clubTagController.GetClubTags) clubTags.Post("/", authMiddleware.ClubAuthorizeById, clubTagController.CreateClubTags) diff --git a/backend/src/server/routes/event.go b/backend/src/server/routes/event.go index d5a3330c2..0d6495370 100644 --- a/backend/src/server/routes/event.go +++ b/backend/src/server/routes/event.go @@ -26,7 +26,10 @@ func Event(router fiber.Router, eventService services.EventServiceInterface, aut eventID.Delete("/series", authMiddleware.ClubAuthorizeById, eventController.DeleteSeriesByEventID) // api/v1/events/:eventID/series/* - series := router.Group("/series") + series := events.Group("/series") + + series.Get("/", eventController.GetSeriesByEventID) + series.Delete("/", eventController.DeleteSeriesByEventID) series.Get("/", eventController.GetSeriesByEventID) series.Delete("/", eventController.DeleteSeriesByEventID) diff --git a/backend/src/server/routes/user_follower.go b/backend/src/server/routes/user_follower.go index 081da3b85..574f8cbcb 100644 --- a/backend/src/server/routes/user_follower.go +++ b/backend/src/server/routes/user_follower.go @@ -12,7 +12,7 @@ func UserFollower(userRouter fiber.Router, userFollowerService services.UserFoll // api/v1/users/:userID/follower/* userFollower := userRouter.Group("/follower") - userFollower.Get("/", userFollowerController.GetAllFollowing) + userFollower.Get("/", userFollowerController.GetFollowing) userFollower.Post("/:clubID", userFollowerController.CreateFollowing) userFollower.Delete("/:clubID", userFollowerController.DeleteFollowing) } diff --git a/backend/src/server/routes/user_member.go b/backend/src/server/routes/user_member.go index 407a060b8..d65af5c9d 100644 --- a/backend/src/server/routes/user_member.go +++ b/backend/src/server/routes/user_member.go @@ -9,13 +9,10 @@ import ( func UserMember(usersRouter fiber.Router, userMembershipService services.UserMemberServiceInterface) { userMemberController := controllers.NewUserMemberController(userMembershipService) + // api/v1/users/:userID/member/* userMember := usersRouter.Group("/member") userMember.Get("/", userMemberController.GetMembership) - - clubID := userMember.Group("/:clubID") - - // api/v1/users/:userID/member/:clubID* - clubID.Post("/", userMemberController.CreateMembership) - clubID.Delete("/", userMemberController.DeleteMembership) + userMember.Post("/:clubID", userMemberController.CreateMembership) + userMember.Delete("/:clubID", userMemberController.DeleteMembership) } diff --git a/backend/src/server/server.go b/backend/src/server/server.go index 5bac2e859..ec803622b 100644 --- a/backend/src/server/server.go +++ b/backend/src/server/server.go @@ -25,6 +25,7 @@ import ( // @contact.email oduneye.d@northeastern.edu and ladley.g@northeastern.edu // @host 127.0.0.1:8080 // @BasePath / +// @schemes http https func Init(db *gorm.DB, settings config.Settings) *fiber.App { app := newFiberApp() diff --git a/backend/src/utilities/response.go b/backend/src/utilities/response.go index 32058c2fe..e70c44039 100644 --- a/backend/src/utilities/response.go +++ b/backend/src/utilities/response.go @@ -1,8 +1,6 @@ package utilities import ( - "fmt" - "github.com/gofiber/fiber/v2" ) @@ -14,23 +12,3 @@ type SuccessResponse struct { func FiberMessage(c *fiber.Ctx, statusCode int, response string) error { return c.Status(statusCode).JSON(fiber.Map{"message": response}) } - -func FiberSuccess(c *fiber.Ctx, response string) error { - return FiberMessage(c, fiber.StatusOK, response) -} - -func FiberError(c *fiber.Ctx, statusCode int, response string) error { - return FiberMessage(c, statusCode, response) -} - -func Test(input string) fiber.Handler { - return func(c *fiber.Ctx) error { - fmt.Printf("Test: %s\n", input) - fmt.Printf("Method: %s\n", c.Method()) - fmt.Printf("Path: %s\n", c.Path()) - fmt.Printf("Route Name: %s\n", c.Route().Name) - fmt.Printf("Route Path: %s\n", c.Route().Path) - fmt.Printf("Route Method: %s\n", c.Route().Method) - return c.Next() - } -} diff --git a/go.work.sum b/go.work.sum index 9392607e3..20bcf1a12 100644 --- a/go.work.sum +++ b/go.work.sum @@ -49,20 +49,6 @@ github.com/go-openapi/spec v0.20.14 h1:7CBlRnw+mtjFGlPDRZmAMnq35cRzI91xj03HVyUi/ github.com/go-openapi/spec v0.20.14/go.mod h1:8EOhTpBoFiask8rrgwbLC3zmJfz4zsCUueRuPM6GNkw= github.com/go-openapi/swag v0.22.9 h1:XX2DssF+mQKM2DHsbgZK74y/zj4mo9I99+89xUmuZCE= github.com/go-openapi/swag v0.22.9/go.mod h1:3/OXnFfnMAwBD099SwYRk7GD3xOrr1iL7d/XNLXVVwE= -github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= -github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= -github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= -github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= -github.com/go-playground/validator/v10 v10.17.0 h1:SmVVlfAOtlZncTxRuinDPomC2DkXJ4E5T9gDA0AIH74= -github.com/go-playground/validator/v10 v10.17.0/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU= -github.com/go-playground/validator/v10 v10.18.0 h1:BvolUXjp4zuvkZ5YN5t7ebzbhlUtPsPm2S9NAZ5nl9U= -github.com/go-playground/validator/v10 v10.18.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM= -github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= -github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= -github.com/gofiber/fiber/v2 v2.52.1 h1:1RoU2NS+b98o1L77sdl5mboGPiW+0Ypsi5oLmcYlgHI= -github.com/gofiber/fiber/v2 v2.52.1/go.mod h1:KEOE+cXMhXG0zHc9d8+E38hoX+ZN7bhOtgeF2oT6jrQ= -github.com/gofiber/swagger v1.0.0 h1:BzUzDS9ZT6fDUa692kxmfOjc1DZiloLiPK/W5z1H1tc= -github.com/gofiber/swagger v1.0.0/go.mod h1:QrYNF1Yrc7ggGK6ATsJ6yfH/8Zi5bu9lA7wB8TmCecg= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY= @@ -127,15 +113,6 @@ github.com/klauspost/compress v1.17.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQs github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/pty v1.1.1 h1:VkoXIwSboBpnk99O/KFauAEILuNHv5DVFKZMBN/gUgw= -github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q= -github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4= -github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= -github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= -github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= -github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= -github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= -github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= @@ -182,12 +159,6 @@ github.com/swaggo/swag v1.16.3/go.mod h1:DImHIuOFXKpMFAQjcC7FG4m3Dg4+QuUgUzJmKjI github.com/tinylib/msgp v1.1.8 h1:FCXC1xanKO4I8plpHGH2P7koL/RzZs12l/+r7vakfm0= github.com/tinylib/msgp v1.1.8/go.mod h1:qkpG+2ldGg4xRFmx+jfTvZPxfGFhi64BcnL9vkCm/Tw= github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= -github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= -github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasthttp v1.51.0 h1:8b30A5JlZ6C7AS81RsWjYMQmrZG6feChmgAolCl1SqA= -github.com/valyala/fasthttp v1.51.0/go.mod h1:oI2XroL+lI7vdXyYoQk03bXBThfFl2cVdIA3Xl7cH8g= -github.com/valyala/tcplisten v1.0.0 h1:rBHj/Xf+E1tRGZyWIWwJDiRY0zc1Js+CV5DqwacVSA8= -github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc= github.com/yuin/goldmark v1.4.13 h1:fVcFKWvrslecOb/tg+Cc05dkeYx540o0FuFt3nUVDoE= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= go.etcd.io/etcd/api/v3 v3.5.10 h1:szRajuUUbLyppkhs9K6BRtjY37l66XQQmw7oZRANE4k= From 646cc4d324803c1995dc300ea60395b5a3cedaed Mon Sep 17 00:00:00 2001 From: Garrett Ladley <92384606+garrettladley@users.noreply.github.com> Date: Sun, 25 Feb 2024 13:45:22 -0500 Subject: [PATCH 3/8] Fiber App Not Using Configuration (#268) --- backend/src/server/server.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/src/server/server.go b/backend/src/server/server.go index ec803622b..278cbf3d6 100644 --- a/backend/src/server/server.go +++ b/backend/src/server/server.go @@ -27,7 +27,7 @@ import ( // @BasePath / // @schemes http https func Init(db *gorm.DB, settings config.Settings) *fiber.App { - app := newFiberApp() + app := newFiberApp(settings.Application) validate, err := utilities.RegisterCustomValidators() if err != nil { @@ -51,14 +51,14 @@ func Init(db *gorm.DB, settings config.Settings) *fiber.App { return app } -func newFiberApp() *fiber.App { +func newFiberApp(appSettings config.ApplicationSettings) *fiber.App { app := fiber.New(fiber.Config{ JSONEncoder: json.Marshal, JSONDecoder: json.Unmarshal, }) app.Use(cors.New(cors.Config{ - AllowOrigins: "http://localhost:8080", + AllowOrigins: fmt.Sprintf("http://%s:%d", appSettings.Host, appSettings.Port), AllowCredentials: true, })) app.Use(requestid.New()) From 7b02bb29ea400012de409836d3474cab494d1a32 Mon Sep 17 00:00:00 2001 From: Garrett Ladley <92384606+garrettladley@users.noreply.github.com> Date: Sun, 25 Feb 2024 13:53:15 -0500 Subject: [PATCH 4/8] Fix: Using Dev Dot Env (#270) --- .gitignore | 1 + backend/src/config/config.go | 4 ++-- backend/src/config/local.go | 9 +++++++-- backend/src/main.go | 3 ++- backend/tests/api/helpers/app.go | 2 +- cli/commands/config.go | 2 +- 6 files changed, 14 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index a24e4c1b3..c3f812701 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ sac-cli node_modules .vscode .trunk +.env.dev diff --git a/backend/src/config/config.go b/backend/src/config/config.go index be6546a5e..bef5661ef 100644 --- a/backend/src/config/config.go +++ b/backend/src/config/config.go @@ -53,7 +53,7 @@ const ( EnvironmentProduction Environment = "production" ) -func GetConfiguration(path string) (*Settings, error) { +func GetConfiguration(path string, useDevDotEnv bool) (*Settings, error) { var environment Environment if env := os.Getenv("APP_ENVIRONMENT"); env != "" { environment = Environment(env) @@ -66,7 +66,7 @@ func GetConfiguration(path string) (*Settings, error) { v.AddConfigPath(path) if environment == EnvironmentLocal { - return readLocal(v, path) + return readLocal(v, path, useDevDotEnv) } else { return readProd(v) } diff --git a/backend/src/config/local.go b/backend/src/config/local.go index 4ee4101b9..ad2f458f0 100644 --- a/backend/src/config/local.go +++ b/backend/src/config/local.go @@ -7,7 +7,7 @@ import ( "github.com/spf13/viper" ) -func readLocal(v *viper.Viper, path string) (*Settings, error) { +func readLocal(v *viper.Viper, path string, useDevDotEnv bool) (*Settings, error) { var intermediateSettings intermediateSettings env := string(EnvironmentLocal) @@ -27,7 +27,12 @@ func readLocal(v *viper.Viper, path string) (*Settings, error) { return nil, fmt.Errorf("failed to convert intermediate settings into final settings: %w", err) } - err = godotenv.Load(fmt.Sprintf("%s/.env.template", path)) + if useDevDotEnv { + err = godotenv.Load(fmt.Sprintf("%s/.env.dev", path)) + } else { + err = godotenv.Load(fmt.Sprintf("%s/.env.template", path)) + } + if err != nil { return nil, fmt.Errorf("failed to load %s/.env.template: %w", path, err) } diff --git a/backend/src/main.go b/backend/src/main.go index 552082ab6..ab11adc20 100644 --- a/backend/src/main.go +++ b/backend/src/main.go @@ -21,10 +21,11 @@ import ( func main() { onlyMigrate := flag.Bool("only-migrate", false, "Specify if you want to only perform the database migration") configPath := flag.String("config", filepath.Join("..", "..", "config"), "Specify the path to the config directory") + useDevDotEnv := flag.Bool("use-dev-dot-env", false, "Specify if you want to use the .env.dev file") flag.Parse() - config, err := config.GetConfiguration(*configPath) + config, err := config.GetConfiguration(*configPath, *useDevDotEnv) if err != nil { panic(fmt.Sprintf("Error getting configuration: %s", err.Error())) } diff --git a/backend/tests/api/helpers/app.go b/backend/tests/api/helpers/app.go index 68b4acd55..bcc86b08c 100644 --- a/backend/tests/api/helpers/app.go +++ b/backend/tests/api/helpers/app.go @@ -26,7 +26,7 @@ func spawnApp() (*TestApp, error) { return nil, err } - configuration, err := config.GetConfiguration(filepath.Join("..", "..", "..", "config")) + configuration, err := config.GetConfiguration(filepath.Join("..", "..", "..", "config"), false) if err != nil { return nil, err } diff --git a/cli/commands/config.go b/cli/commands/config.go index 203219218..906bd3a9d 100644 --- a/cli/commands/config.go +++ b/cli/commands/config.go @@ -11,6 +11,6 @@ var ( ROOT_DIR, _ = utils.GetRootDir() FRONTEND_DIR = filepath.Join(ROOT_DIR, "/frontend") BACKEND_DIR = filepath.Join(ROOT_DIR, "/backend/src") - CONFIG, _ = config.GetConfiguration(filepath.Join(ROOT_DIR, "/config")) + CONFIG, _ = config.GetConfiguration(filepath.Join(ROOT_DIR, "/config"), false) MIGRATION_FILE = filepath.Join(BACKEND_DIR, "/migrations/data.sql") ) From 429d9351bb875dbd9be9d14260fb4fc4cffea33a Mon Sep 17 00:00:00 2001 From: Garrett Ladley <92384606+garrettladley@users.noreply.github.com> Date: Sun, 25 Feb 2024 14:51:35 -0500 Subject: [PATCH 5/8] Fix: Remove Deprecated Method (#274) --- backend/src/middleware/auth.go | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/backend/src/middleware/auth.go b/backend/src/middleware/auth.go index dafa3d25b..93a07b5f6 100644 --- a/backend/src/middleware/auth.go +++ b/backend/src/middleware/auth.go @@ -11,7 +11,6 @@ import ( "github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2/middleware/limiter" - "github.com/gofiber/fiber/v2/middleware/skip" ) var paths = []string{ @@ -21,21 +20,6 @@ var paths = []string{ "/api/v1/auth/logout", } -// Deprecated -func (m *AuthMiddlewareService) Skip(h fiber.Handler) fiber.Handler { - return skip.New(h, func(c *fiber.Ctx) bool { - claims, err := auth.From(c) - if err != nil { - _ = err.FiberError(c) - return false - } - if claims == nil { - return false - } - return claims.Role == string(models.Super) - }) -} - func (m *AuthMiddlewareService) DisableAuth(h fiber.Handler) fiber.Handler { return func(c *fiber.Ctx) error { return h(c) From d04cb715492b83fb0b6a97c94fae0932bc6d7e4f Mon Sep 17 00:00:00 2001 From: Garrett Ladley <92384606+garrettladley@users.noreply.github.com> Date: Sun, 25 Feb 2024 15:09:03 -0500 Subject: [PATCH 6/8] Fix: Update CLI to allow use of --use-dev-dot-env (#276) --- cli/commands/be.go | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/cli/commands/be.go b/cli/commands/be.go index d5e660103..e7b2fb1d7 100644 --- a/cli/commands/be.go +++ b/cli/commands/be.go @@ -14,12 +14,22 @@ func RunBackendCommand() *cli.Command { Name: "be", Usage: "Run the backend", Category: "Development", + Flags: []cli.Flag{ + &cli.BoolFlag{ + Name: "use-dev-dot-env", + Usage: "Use the development .env file", + Value: false, + Aliases: []string{"d"}, + }, + }, Action: func(c *cli.Context) error { if c.Args().Len() > 0 { return cli.Exit("Invalid arguments", 1) } - err := RunBE() + useDevDotEnv := c.Bool("use-dev-dot-env") + + err := RunBE(useDevDotEnv) if err != nil { return cli.Exit(err.Error(), 1) } @@ -31,8 +41,15 @@ func RunBackendCommand() *cli.Command { return &command } -func RunBE() error { - goCmd := exec.Command("go", "run", "main.go") +func RunBE(useDevDotEnv bool) error { + var goCmd *exec.Cmd + + if useDevDotEnv { + goCmd = exec.Command("go", "run", "main.go", "--use-dev-dot-env") + } else { + goCmd = exec.Command("go", "run", "main.go") + } + goCmd.Dir = BACKEND_DIR goCmd.Stdout = os.Stdout From b64dcd8ad5c8c933c3a43bb1a88a3d35b6b09065 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Feb 2024 09:27:58 -0500 Subject: [PATCH 7/8] Bump react-native from 0.73.2 to 0.73.4 in /frontend/sac-mobile (#278) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- frontend/sac-mobile/package.json | 2 +- frontend/sac-mobile/yarn.lock | 1369 ++++++++---------------------- 2 files changed, 376 insertions(+), 995 deletions(-) diff --git a/frontend/sac-mobile/package.json b/frontend/sac-mobile/package.json index 69a5895e0..30fd9e351 100644 --- a/frontend/sac-mobile/package.json +++ b/frontend/sac-mobile/package.json @@ -35,7 +35,7 @@ "react": "18.2.0", "react-dom": "18.2.0", "react-hook-form": "^7.50.0", - "react-native": "0.73.2", + "react-native": "0.73.4", "react-native-cookies": "^3.3.0", "react-native-safe-area-context": "4.8.2", "react-native-screens": "~3.29.0", diff --git a/frontend/sac-mobile/yarn.lock b/frontend/sac-mobile/yarn.lock index c8eac704f..104feb01f 100644 --- a/frontend/sac-mobile/yarn.lock +++ b/frontend/sac-mobile/yarn.lock @@ -67,9 +67,6 @@ semver "^6.3.1" "@babel/eslint-parser@^7.18.2": - version "7.23.10" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.23.10.tgz#2d4164842d6db798873b40e0c4238827084667a2" - integrity sha512-3wSYDPZVnhseRnxRJH6ZVTNknBz76AEnyC+AYYhasjP3Yy23qz0ERR7Fcd2SHmYuSFJ2kY9gaaDd3vyqU09eSw== version "7.23.10" resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.23.10.tgz#2d4164842d6db798873b40e0c4238827084667a2" integrity sha512-3wSYDPZVnhseRnxRJH6ZVTNknBz76AEnyC+AYYhasjP3Yy23qz0ERR7Fcd2SHmYuSFJ2kY9gaaDd3vyqU09eSw== @@ -104,13 +101,6 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956" - integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== - dependencies: - "@babel/types" "^7.22.15" - "@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.22.15", "@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.23.6": version "7.23.6" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" @@ -122,10 +112,6 @@ lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.22.15", "@babel/helper-create-class-features-plugin@^7.23.6", "@babel/helper-create-class-features-plugin@^7.23.9": - version "7.23.10" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.10.tgz#25d55fafbaea31fd0e723820bb6cc3df72edf7ea" - integrity sha512-2XpP2XhkXzgxecPNEEK8Vz8Asj9aRxt08oKOqtiZoqV2UGZ5T+EkyP9sXQ9nwMxBIG34a7jmasVqoMop7VdPUw== "@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.22.15", "@babel/helper-create-class-features-plugin@^7.23.6", "@babel/helper-create-class-features-plugin@^7.23.9": version "7.23.10" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.10.tgz#25d55fafbaea31fd0e723820bb6cc3df72edf7ea" @@ -141,7 +127,7 @@ "@babel/helper-split-export-declaration" "^7.22.6" semver "^6.3.1" -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.15", "@babel/helper-create-regexp-features-plugin@^7.22.5": +"@babel/helper-create-regexp-features-plugin@^7.22.15", "@babel/helper-create-regexp-features-plugin@^7.22.5": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== @@ -150,10 +136,6 @@ regexpu-core "^5.3.1" semver "^6.3.1" -"@babel/helper-define-polyfill-provider@^0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz#465805b7361f461e86c680f1de21eaf88c25901b" - integrity sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q== "@babel/helper-define-polyfill-provider@^0.5.0": version "0.5.0" resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz#465805b7361f461e86c680f1de21eaf88c25901b" @@ -199,7 +181,6 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-module-imports@^7.22.15": "@babel/helper-module-imports@^7.22.15": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" @@ -316,30 +297,6 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.9.tgz#7b903b6149b0f8fa7ad564af646c4c38a77fc44b" integrity sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA== -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz#5cd1c87ba9380d0afb78469292c954fee5d2411a" - integrity sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz#f6652bb16b94f8f9c20c50941e16e9756898dc5d" - integrity sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-transform-optional-chaining" "^7.23.3" - -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.23.7": - version "7.23.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz#516462a95d10a9618f197d39ad291a9b47ae1d7b" - integrity sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-proposal-async-generator-functions@^7.0.0": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz#bfb7276d2d573cb67ba379984a2334e262ba5326" @@ -359,14 +316,10 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-proposal-decorators@^7.12.9": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.23.9.tgz#126d947d62ee72022ec46813983c6dd861456fa3" - integrity sha512-hJhBCb0+NnTWybvWq2WpbCYDOcflSbx0t+BYP65e5R9GVnukiDTi+on5bFkk4p7QGuv190H6KfNiV9Knf/3cZA== version "7.23.9" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.23.9.tgz#126d947d62ee72022ec46813983c6dd861456fa3" integrity sha512-hJhBCb0+NnTWybvWq2WpbCYDOcflSbx0t+BYP65e5R9GVnukiDTi+on5bFkk4p7QGuv190H6KfNiV9Knf/3cZA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.23.9" "@babel/helper-create-class-features-plugin" "^7.23.9" "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-decorators" "^7.23.3" @@ -423,11 +376,6 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": - version "7.21.0-placeholder-for-preset-env.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" - integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== - "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" @@ -442,20 +390,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-class-properties@^7.0.0", "@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": +"@babel/plugin-syntax-class-properties@^7.0.0", "@babel/plugin-syntax-class-properties@^7.8.3": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-syntax-class-static-block@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" - integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-decorators@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.23.3.tgz#a1d351d6c25bfdcf2e16f99b039101bc0ffcb0ca" @@ -463,7 +404,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-syntax-dynamic-import@^7.8.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": +"@babel/plugin-syntax-dynamic-import@^7.8.0": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== @@ -491,21 +432,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-syntax-import-assertions@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz#9c05a7f592982aff1a2768260ad84bcd3f0c77fc" - integrity sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-syntax-import-attributes@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz#992aee922cf04512461d7dae3ff6951b90a2dc06" - integrity sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-syntax-import-meta@^7.10.4", "@babel/plugin-syntax-import-meta@^7.8.3": +"@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== @@ -526,7 +453,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": +"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== @@ -575,7 +502,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": +"@babel/plugin-syntax-top-level-await@^7.8.3": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== @@ -589,36 +516,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" - integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-arrow-functions@^7.0.0", "@babel/plugin-transform-arrow-functions@^7.23.3": +"@babel/plugin-transform-arrow-functions@^7.0.0": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz#94c6dcfd731af90f27a79509f9ab7fb2120fc38b" integrity sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-async-generator-functions@^7.23.9": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz#9adaeb66fc9634a586c5df139c6240d41ed801ce" - integrity sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ== -"@babel/plugin-transform-async-generator-functions@^7.23.9": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz#9adaeb66fc9634a586c5df139c6240d41ed801ce" - integrity sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-remap-async-to-generator" "^7.22.20" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-transform-async-to-generator@^7.20.0", "@babel/plugin-transform-async-to-generator@^7.23.3": +"@babel/plugin-transform-async-to-generator@^7.20.0": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz#d1f513c7a8a506d43f47df2bf25f9254b0b051fa" integrity sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw== @@ -627,38 +532,21 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-remap-async-to-generator" "^7.22.20" -"@babel/plugin-transform-block-scoped-functions@^7.0.0", "@babel/plugin-transform-block-scoped-functions@^7.23.3": +"@babel/plugin-transform-block-scoped-functions@^7.0.0": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz#fe1177d715fb569663095e04f3598525d98e8c77" integrity sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-block-scoping@^7.0.0", "@babel/plugin-transform-block-scoping@^7.23.4": +"@babel/plugin-transform-block-scoping@^7.0.0": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz#b2d38589531c6c80fbe25e6b58e763622d2d3cf5" integrity sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-class-properties@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz#35c377db11ca92a785a718b6aa4e3ed1eb65dc48" - integrity sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-class-static-block@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz#2a202c8787a8964dd11dfcedf994d36bfc844ab5" - integrity sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - -"@babel/plugin-transform-classes@^7.0.0", "@babel/plugin-transform-classes@^7.23.8": +"@babel/plugin-transform-classes@^7.0.0": version "7.23.8" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.8.tgz#d08ae096c240347badd68cdf1b6d1624a6435d92" integrity sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg== @@ -672,7 +560,7 @@ "@babel/helper-split-export-declaration" "^7.22.6" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.0.0", "@babel/plugin-transform-computed-properties@^7.23.3": +"@babel/plugin-transform-computed-properties@^7.0.0": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz#652e69561fcc9d2b50ba4f7ac7f60dcf65e86474" integrity sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw== @@ -680,45 +568,14 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/template" "^7.22.15" -"@babel/plugin-transform-destructuring@^7.0.0", "@babel/plugin-transform-destructuring@^7.20.0", "@babel/plugin-transform-destructuring@^7.23.3": +"@babel/plugin-transform-destructuring@^7.0.0", "@babel/plugin-transform-destructuring@^7.20.0": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz#8c9ee68228b12ae3dff986e56ed1ba4f3c446311" integrity sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-dotall-regex@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz#3f7af6054882ede89c378d0cf889b854a993da50" - integrity sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-duplicate-keys@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz#664706ca0a5dfe8d066537f99032fc1dc8b720ce" - integrity sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-dynamic-import@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz#c7629e7254011ac3630d47d7f34ddd40ca535143" - integrity sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - -"@babel/plugin-transform-exponentiation-operator@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz#ea0d978f6b9232ba4722f3dbecdd18f450babd18" - integrity sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-export-namespace-from@^7.22.11", "@babel/plugin-transform-export-namespace-from@^7.23.4": +"@babel/plugin-transform-export-namespace-from@^7.22.11": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz#084c7b25e9a5c8271e987a08cf85807b80283191" integrity sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ== @@ -734,7 +591,7 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-flow" "^7.23.3" -"@babel/plugin-transform-for-of@^7.0.0", "@babel/plugin-transform-for-of@^7.23.6": +"@babel/plugin-transform-for-of@^7.0.0": version "7.23.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz#81c37e24171b37b370ba6aaffa7ac86bcb46f94e" integrity sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw== @@ -742,7 +599,7 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" -"@babel/plugin-transform-function-name@^7.0.0", "@babel/plugin-transform-function-name@^7.23.3": +"@babel/plugin-transform-function-name@^7.0.0": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz#8f424fcd862bf84cb9a1a6b42bc2f47ed630f8dc" integrity sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw== @@ -751,44 +608,20 @@ "@babel/helper-function-name" "^7.23.0" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-json-strings@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz#a871d9b6bd171976efad2e43e694c961ffa3714d" - integrity sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-json-strings" "^7.8.3" - -"@babel/plugin-transform-literals@^7.0.0", "@babel/plugin-transform-literals@^7.23.3": +"@babel/plugin-transform-literals@^7.0.0": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz#8214665f00506ead73de157eba233e7381f3beb4" integrity sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-logical-assignment-operators@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz#e599f82c51d55fac725f62ce55d3a0886279ecb5" - integrity sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-transform-member-expression-literals@^7.0.0", "@babel/plugin-transform-member-expression-literals@^7.23.3": +"@babel/plugin-transform-member-expression-literals@^7.0.0": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz#e37b3f0502289f477ac0e776b05a833d853cabcc" integrity sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-modules-amd@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz#e19b55436a1416829df0a1afc495deedfae17f7d" - integrity sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw== - dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz#661ae831b9577e52be57dd8356b734f9700b53b4" @@ -798,29 +631,7 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-simple-access" "^7.22.5" -"@babel/plugin-transform-modules-systemjs@^7.23.9": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.9.tgz#105d3ed46e4a21d257f83a2f9e2ee4203ceda6be" - integrity sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw== -"@babel/plugin-transform-modules-systemjs@^7.23.9": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.9.tgz#105d3ed46e4a21d257f83a2f9e2ee4203ceda6be" - integrity sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw== - dependencies: - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-identifier" "^7.22.20" - -"@babel/plugin-transform-modules-umd@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz#5d4395fccd071dfefe6585a4411aa7d6b7d769e9" - integrity sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg== - dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.0.0", "@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": +"@babel/plugin-transform-named-capturing-groups-regex@^7.0.0": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f" integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== @@ -828,30 +639,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-new-target@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz#5491bb78ed6ac87e990957cea367eab781c4d980" - integrity sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-nullish-coalescing-operator@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz#45556aad123fc6e52189ea749e33ce090637346e" - integrity sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-transform-numeric-separator@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz#03d08e3691e405804ecdd19dd278a40cca531f29" - integrity sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-transform-object-rest-spread@^7.12.13", "@babel/plugin-transform-object-rest-spread@^7.23.4": +"@babel/plugin-transform-object-rest-spread@^7.12.13": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz#2b9c2d26bf62710460bdc0d1730d4f1048361b83" integrity sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g== @@ -862,7 +650,7 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-transform-parameters" "^7.23.3" -"@babel/plugin-transform-object-super@^7.0.0", "@babel/plugin-transform-object-super@^7.23.3": +"@babel/plugin-transform-object-super@^7.0.0": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz#81fdb636dcb306dd2e4e8fd80db5b2362ed2ebcd" integrity sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA== @@ -870,23 +658,6 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-replace-supers" "^7.22.20" -"@babel/plugin-transform-optional-catch-binding@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz#318066de6dacce7d92fa244ae475aa8d91778017" - integrity sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-transform-optional-chaining@^7.23.3", "@babel/plugin-transform-optional-chaining@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz#6acf61203bdfc4de9d4e52e64490aeb3e52bd017" - integrity sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.20.7", "@babel/plugin-transform-parameters@^7.22.15", "@babel/plugin-transform-parameters@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz#83ef5d1baf4b1072fa6e54b2b0999a7b2527e2af" @@ -894,7 +665,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-private-methods@^7.22.5", "@babel/plugin-transform-private-methods@^7.23.3": +"@babel/plugin-transform-private-methods@^7.22.5": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz#b2d7a3c97e278bfe59137a978d53b2c2e038c0e4" integrity sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g== @@ -902,7 +673,7 @@ "@babel/helper-create-class-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-private-property-in-object@^7.22.11", "@babel/plugin-transform-private-property-in-object@^7.23.4": +"@babel/plugin-transform-private-property-in-object@^7.22.11": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz#3ec711d05d6608fd173d9b8de39872d8dbf68bf5" integrity sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A== @@ -912,7 +683,7 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-transform-property-literals@^7.0.0", "@babel/plugin-transform-property-literals@^7.23.3": +"@babel/plugin-transform-property-literals@^7.0.0": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz#54518f14ac4755d22b92162e4a852d308a560875" integrity sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw== @@ -966,25 +737,7 @@ "@babel/helper-annotate-as-pure" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-regenerator@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz#141afd4a2057298602069fce7f2dc5173e6c561c" - integrity sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - regenerator-transform "^0.15.2" - -"@babel/plugin-transform-reserved-words@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz#4130dcee12bd3dd5705c587947eb715da12efac8" - integrity sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-transform-runtime@^7.0.0": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.9.tgz#2c64d0680fc8e09e1dfe8fd5c646fe72abd82004" - integrity sha512-A7clW3a0aSjm3ONU9o2HAILSegJCYlEZmOhmBRReVtIpY/Z/p7yIZ+wR41Z+UipwdGuqwtID/V/dOdZXjwi9gQ== version "7.23.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.9.tgz#2c64d0680fc8e09e1dfe8fd5c646fe72abd82004" integrity sha512-A7clW3a0aSjm3ONU9o2HAILSegJCYlEZmOhmBRReVtIpY/Z/p7yIZ+wR41Z+UipwdGuqwtID/V/dOdZXjwi9gQ== @@ -994,19 +747,16 @@ babel-plugin-polyfill-corejs2 "^0.4.8" babel-plugin-polyfill-corejs3 "^0.9.0" babel-plugin-polyfill-regenerator "^0.5.5" - babel-plugin-polyfill-corejs2 "^0.4.8" - babel-plugin-polyfill-corejs3 "^0.9.0" - babel-plugin-polyfill-regenerator "^0.5.5" semver "^6.3.1" -"@babel/plugin-transform-shorthand-properties@^7.0.0", "@babel/plugin-transform-shorthand-properties@^7.23.3": +"@babel/plugin-transform-shorthand-properties@^7.0.0": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz#97d82a39b0e0c24f8a981568a8ed851745f59210" integrity sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-spread@^7.0.0", "@babel/plugin-transform-spread@^7.23.3": +"@babel/plugin-transform-spread@^7.0.0": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz#41d17aacb12bde55168403c6f2d6bdca563d362c" integrity sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg== @@ -1014,27 +764,20 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" -"@babel/plugin-transform-sticky-regex@^7.0.0", "@babel/plugin-transform-sticky-regex@^7.23.3": +"@babel/plugin-transform-sticky-regex@^7.0.0": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz#dec45588ab4a723cb579c609b294a3d1bd22ff04" integrity sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-template-literals@^7.0.0", "@babel/plugin-transform-template-literals@^7.23.3": +"@babel/plugin-transform-template-literals@^7.0.0": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz#5f0f028eb14e50b5d0f76be57f90045757539d07" integrity sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-typeof-symbol@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz#9dfab97acc87495c0c449014eb9c547d8966bca4" - integrity sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-transform-typescript@^7.23.3", "@babel/plugin-transform-typescript@^7.5.0": version "7.23.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.6.tgz#aa36a94e5da8d94339ae3a4e22d40ed287feb34c" @@ -1045,22 +788,7 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-typescript" "^7.23.3" -"@babel/plugin-transform-unicode-escapes@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz#1f66d16cab01fab98d784867d24f70c1ca65b925" - integrity sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-unicode-property-regex@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz#19e234129e5ffa7205010feec0d94c251083d7ad" - integrity sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-unicode-regex@^7.0.0", "@babel/plugin-transform-unicode-regex@^7.23.3": +"@babel/plugin-transform-unicode-regex@^7.0.0": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz#26897708d8f42654ca4ce1b73e96140fbad879dc" integrity sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw== @@ -1068,106 +796,10 @@ "@babel/helper-create-regexp-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-unicode-sets-regex@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz#4fb6f0a719c2c5859d11f6b55a050cc987f3799e" - integrity sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/preset-env@^7.20.0": version "7.23.9" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.23.9.tgz#beace3b7994560ed6bf78e4ae2073dff45387669" integrity sha512-3kBGTNBBk9DQiPoXYS0g0BYlwTQYUTifqgKTjxUwEUkduRT2QOa0FPGBJ+NROQhGyYO5BuTJwGvBnqKDykac6A== - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.23.9.tgz#beace3b7994560ed6bf78e4ae2073dff45387669" - integrity sha512-3kBGTNBBk9DQiPoXYS0g0BYlwTQYUTifqgKTjxUwEUkduRT2QOa0FPGBJ+NROQhGyYO5BuTJwGvBnqKDykac6A== - "@babel/compat-data" "^7.23.5" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-option" "^7.23.5" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.23.3" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.23.3" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.23.7" - "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.23.3" - "@babel/plugin-syntax-import-attributes" "^7.23.3" - "@babel/plugin-syntax-import-meta" "^7.10.4" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.23.3" - "@babel/plugin-transform-async-generator-functions" "^7.23.9" - "@babel/plugin-transform-async-generator-functions" "^7.23.9" - "@babel/plugin-transform-async-to-generator" "^7.23.3" - "@babel/plugin-transform-block-scoped-functions" "^7.23.3" - "@babel/plugin-transform-block-scoping" "^7.23.4" - "@babel/plugin-transform-class-properties" "^7.23.3" - "@babel/plugin-transform-class-static-block" "^7.23.4" - "@babel/plugin-transform-classes" "^7.23.8" - "@babel/plugin-transform-computed-properties" "^7.23.3" - "@babel/plugin-transform-destructuring" "^7.23.3" - "@babel/plugin-transform-dotall-regex" "^7.23.3" - "@babel/plugin-transform-duplicate-keys" "^7.23.3" - "@babel/plugin-transform-dynamic-import" "^7.23.4" - "@babel/plugin-transform-exponentiation-operator" "^7.23.3" - "@babel/plugin-transform-export-namespace-from" "^7.23.4" - "@babel/plugin-transform-for-of" "^7.23.6" - "@babel/plugin-transform-function-name" "^7.23.3" - "@babel/plugin-transform-json-strings" "^7.23.4" - "@babel/plugin-transform-literals" "^7.23.3" - "@babel/plugin-transform-logical-assignment-operators" "^7.23.4" - "@babel/plugin-transform-member-expression-literals" "^7.23.3" - "@babel/plugin-transform-modules-amd" "^7.23.3" - "@babel/plugin-transform-modules-commonjs" "^7.23.3" - "@babel/plugin-transform-modules-systemjs" "^7.23.9" - "@babel/plugin-transform-modules-systemjs" "^7.23.9" - "@babel/plugin-transform-modules-umd" "^7.23.3" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" - "@babel/plugin-transform-new-target" "^7.23.3" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.23.4" - "@babel/plugin-transform-numeric-separator" "^7.23.4" - "@babel/plugin-transform-object-rest-spread" "^7.23.4" - "@babel/plugin-transform-object-super" "^7.23.3" - "@babel/plugin-transform-optional-catch-binding" "^7.23.4" - "@babel/plugin-transform-optional-chaining" "^7.23.4" - "@babel/plugin-transform-parameters" "^7.23.3" - "@babel/plugin-transform-private-methods" "^7.23.3" - "@babel/plugin-transform-private-property-in-object" "^7.23.4" - "@babel/plugin-transform-property-literals" "^7.23.3" - "@babel/plugin-transform-regenerator" "^7.23.3" - "@babel/plugin-transform-reserved-words" "^7.23.3" - "@babel/plugin-transform-shorthand-properties" "^7.23.3" - "@babel/plugin-transform-spread" "^7.23.3" - "@babel/plugin-transform-sticky-regex" "^7.23.3" - "@babel/plugin-transform-template-literals" "^7.23.3" - "@babel/plugin-transform-typeof-symbol" "^7.23.3" - "@babel/plugin-transform-unicode-escapes" "^7.23.3" - "@babel/plugin-transform-unicode-property-regex" "^7.23.3" - "@babel/plugin-transform-unicode-regex" "^7.23.3" - "@babel/plugin-transform-unicode-sets-regex" "^7.23.3" - "@babel/preset-modules" "0.1.6-no-external-plugins" - babel-plugin-polyfill-corejs2 "^0.4.8" - babel-plugin-polyfill-corejs3 "^0.9.0" - babel-plugin-polyfill-regenerator "^0.5.5" - babel-plugin-polyfill-corejs2 "^0.4.8" - babel-plugin-polyfill-corejs3 "^0.9.0" - babel-plugin-polyfill-regenerator "^0.5.5" - core-js-compat "^3.31.0" - semver "^6.3.1" "@babel/preset-flow@^7.13.13": version "7.23.3" @@ -1178,15 +810,6 @@ "@babel/helper-validator-option" "^7.22.15" "@babel/plugin-transform-flow-strip-types" "^7.23.3" -"@babel/preset-modules@0.1.6-no-external-plugins": - version "0.1.6-no-external-plugins" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" - integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/types" "^7.4.4" - esutils "^2.0.2" - "@babel/preset-react@^7.22.15": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.23.3.tgz#f73ca07e7590f977db07eb54dbe46538cc015709" @@ -1226,12 +849,7 @@ resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime@^7.0.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.18.6", "@babel/runtime@^7.20.0", "@babel/runtime@^7.8.4": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.9.tgz#47791a15e4603bb5f905bc0753801cf21d6345f7" - integrity sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw== - dependencies: -"@babel/runtime@^7.0.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.18.6", "@babel/runtime@^7.20.0", "@babel/runtime@^7.8.4": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.18.6", "@babel/runtime@^7.20.0": version "7.23.9" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.9.tgz#47791a15e4603bb5f905bc0753801cf21d6345f7" integrity sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw== @@ -1296,7 +914,7 @@ "@babel/helper-validator-identifier" "^7.18.6" to-fast-properties "^2.0.0" -"@babel/types@^7.0.0", "@babel/types@^7.17.0", "@babel/types@^7.18.6", "@babel/types@^7.20.0", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.23.6", "@babel/types@^7.23.9", "@babel/types@^7.3.3", "@babel/types@^7.4.4": +"@babel/types@^7.0.0", "@babel/types@^7.17.0", "@babel/types@^7.18.6", "@babel/types@^7.20.0", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.23.6", "@babel/types@^7.23.9", "@babel/types@^7.3.3": version "7.23.9" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.9.tgz#1dd7b59a9a2b5c87f8b41e52770b5ecbf492e002" integrity sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q== @@ -1337,10 +955,10 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.56.0": - version "8.56.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.56.0.tgz#ef20350fec605a7f7035a01764731b2de0f3782b" - integrity sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A== +"@eslint/js@8.57.0": + version "8.57.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" + integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== "@expo/bunyan@^4.0.0": version "4.0.0" @@ -1465,48 +1083,6 @@ xcode "^3.0.1" xml2js "0.6.0" -"@expo/config-plugins@~7.2.0": - version "7.2.5" - resolved "https://registry.yarnpkg.com/@expo/config-plugins/-/config-plugins-7.2.5.tgz#b15f22878975fdc4ddcfa8cdc971937ddc4c0249" - integrity sha512-w+5ccu1IxBHgyQk9CPFKLZOk8yZQEyTjbJwOzESK1eR7QwosbcsLkN1c1WWUZYiCXwORu3UTwJYll4+X2xxJhQ== - dependencies: - "@expo/config-types" "^49.0.0-alpha.1" - "@expo/json-file" "~8.2.37" - "@expo/plist" "^0.0.20" - "@expo/sdk-runtime-versions" "^1.0.0" - "@react-native/normalize-color" "^2.0.0" - chalk "^4.1.2" - debug "^4.3.1" - find-up "~5.0.0" - getenv "^1.0.0" - glob "7.1.6" - resolve-from "^5.0.0" - semver "^7.5.3" - slash "^3.0.0" - xcode "^3.0.1" - xml2js "0.6.0" - -"@expo/config-plugins@~7.2.0": - version "7.2.5" - resolved "https://registry.yarnpkg.com/@expo/config-plugins/-/config-plugins-7.2.5.tgz#b15f22878975fdc4ddcfa8cdc971937ddc4c0249" - integrity sha512-w+5ccu1IxBHgyQk9CPFKLZOk8yZQEyTjbJwOzESK1eR7QwosbcsLkN1c1WWUZYiCXwORu3UTwJYll4+X2xxJhQ== - dependencies: - "@expo/config-types" "^49.0.0-alpha.1" - "@expo/json-file" "~8.2.37" - "@expo/plist" "^0.0.20" - "@expo/sdk-runtime-versions" "^1.0.0" - "@react-native/normalize-color" "^2.0.0" - chalk "^4.1.2" - debug "^4.3.1" - find-up "~5.0.0" - getenv "^1.0.0" - glob "7.1.6" - resolve-from "^5.0.0" - semver "^7.5.3" - slash "^3.0.0" - xcode "^3.0.1" - xml2js "0.6.0" - "@expo/config-types@^50.0.0", "@expo/config-types@^50.0.0-alpha.1": version "50.0.0" resolved "https://registry.yarnpkg.com/@expo/config-types/-/config-types-50.0.0.tgz#b534d3ec997ec60f8af24f6ad56244c8afc71a0b" @@ -1597,32 +1173,10 @@ json5 "^2.2.2" write-file-atomic "^2.3.0" -"@expo/metro-config@0.17.3", "@expo/metro-config@~0.17.0": - version "0.17.3" - resolved "https://registry.yarnpkg.com/@expo/metro-config/-/metro-config-0.17.3.tgz#f06f0929e4ac907517d24794d35021901651da49" - integrity sha512-YW8ixbaz6yL7/Mg1rJJejiAAVQQKjGY1wXvT2Dh487r/r9/j1yE1YRS/oRY1yItYzbnHvO0p0jMnEGfiFYL3Tg== - dependencies: - "@babel/code-frame" "~7.10.4" - json5 "^2.2.2" - write-file-atomic "^2.3.0" - -"@expo/metro-config@0.17.3", "@expo/metro-config@~0.17.0": - version "0.17.3" - resolved "https://registry.yarnpkg.com/@expo/metro-config/-/metro-config-0.17.3.tgz#f06f0929e4ac907517d24794d35021901651da49" - integrity sha512-YW8ixbaz6yL7/Mg1rJJejiAAVQQKjGY1wXvT2Dh487r/r9/j1yE1YRS/oRY1yItYzbnHvO0p0jMnEGfiFYL3Tg== -"@expo/metro-config@0.17.3", "@expo/metro-config@~0.17.0": - version "0.17.3" - resolved "https://registry.yarnpkg.com/@expo/metro-config/-/metro-config-0.17.3.tgz#f06f0929e4ac907517d24794d35021901651da49" - integrity sha512-YW8ixbaz6yL7/Mg1rJJejiAAVQQKjGY1wXvT2Dh487r/r9/j1yE1YRS/oRY1yItYzbnHvO0p0jMnEGfiFYL3Tg== - dependencies: - "@babel/code-frame" "~7.10.4" - json5 "^2.2.2" - write-file-atomic "^2.3.0" - -"@expo/metro-config@0.17.3", "@expo/metro-config@~0.17.0": - version "0.17.3" - resolved "https://registry.yarnpkg.com/@expo/metro-config/-/metro-config-0.17.3.tgz#f06f0929e4ac907517d24794d35021901651da49" - integrity sha512-YW8ixbaz6yL7/Mg1rJJejiAAVQQKjGY1wXvT2Dh487r/r9/j1yE1YRS/oRY1yItYzbnHvO0p0jMnEGfiFYL3Tg== +"@expo/metro-config@0.17.4", "@expo/metro-config@~0.17.0": + version "0.17.4" + resolved "https://registry.yarnpkg.com/@expo/metro-config/-/metro-config-0.17.4.tgz#3896d65f779963a8ce7069a4bae4546b6541219c" + integrity sha512-PxqDMuVjXQeboa6Aj8kNj4iTxIpwpfoYlF803qOjf1LE1ePlREnWNwqy65ESCBnCmekYIO5hhm1Nksa+xCvuyg== dependencies: "@babel/core" "^7.20.0" "@babel/generator" "^7.20.5" @@ -1768,13 +1322,11 @@ resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.2.0.tgz#5f3d96ec6b2354ad6d8a28bf216a1d97b5426861" integrity sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ== -"@hapi/hoek@^9.0.0", "@hapi/hoek@^9.3.0": "@hapi/hoek@^9.0.0", "@hapi/hoek@^9.3.0": version "9.3.0" resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== -"@hapi/topo@^5.1.0": "@hapi/topo@^5.1.0": version "5.1.0" resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012" @@ -1782,7 +1334,7 @@ dependencies: "@hapi/hoek" "^9.0.0" -"@humanwhocodes/config-array@^0.11.13": +"@humanwhocodes/config-array@^0.11.14": version "0.11.14" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== @@ -2045,9 +1597,9 @@ chalk "^4.0.0" "@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" - integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== + version "0.3.4" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.4.tgz#9b18145d26cf33d08576cf4c7665b28554480ed7" + integrity sha512-Oud2QPM5dHviZNn4y/WhhYKSXksv+1xLEIsNrAbGcFzUN3ubqWRFT5gwPchNc5NuzILOU4tPBDTZ4VwhL8Y7cw== dependencies: "@jridgewell/set-array" "^1.0.1" "@jridgewell/sourcemap-codec" "^1.4.10" @@ -2077,12 +1629,9 @@ integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== "@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.22" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz#72a621e5de59f5f1ef792d0793a82ee20f645e4c" - integrity sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw== - version "0.3.22" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz#72a621e5de59f5f1ef792d0793a82ee20f645e4c" - integrity sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw== + version "0.3.23" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.23.tgz#afc96847f3f07841477f303eed687707a5aacd80" + integrity sha512-9/4foRoUKp8s96tSkh8DlAAc5A0Ty8vLXld+l9gjKKY6ckwI8G15f0hskGmuLZu78ZlGa1vtsfOa+lnB4vG6Jg== dependencies: "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" @@ -2140,9 +1689,6 @@ version "0.1.1" resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31" integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA== - version "0.1.1" - resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31" - integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA== "@radix-ui/react-compose-refs@1.0.0": version "1.0.0" @@ -2159,43 +1705,43 @@ "@babel/runtime" "^7.13.10" "@radix-ui/react-compose-refs" "1.0.0" -"@react-native-community/cli-clean@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-12.3.0.tgz#667b32daa58b4d11d5b5ab9eb0a2e216d500c90b" - integrity sha512-iAgLCOWYRGh9ukr+eVQnhkV/OqN3V2EGd/in33Ggn/Mj4uO6+oUncXFwB+yjlyaUNz6FfjudhIz09yYGSF+9sg== +"@react-native-community/cli-clean@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-12.3.2.tgz#d4f1730c3d22d816b4d513d330d5f3896a3f5921" + integrity sha512-90k2hCX0ddSFPT7EN7h5SZj0XZPXP0+y/++v262hssoey3nhurwF57NGWN0XAR0o9BSW7+mBfeInfabzDraO6A== dependencies: - "@react-native-community/cli-tools" "12.3.0" + "@react-native-community/cli-tools" "12.3.2" chalk "^4.1.2" execa "^5.0.0" -"@react-native-community/cli-config@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-config/-/cli-config-12.3.0.tgz#255b4e5391878937a25888f452f50a968d053e3e" - integrity sha512-BrTn5ndFD9uOxO8kxBQ32EpbtOvAsQExGPI7SokdI4Zlve70FziLtTq91LTlTUgMq1InVZn/jJb3VIDk6BTInQ== +"@react-native-community/cli-config@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-config/-/cli-config-12.3.2.tgz#1a5de302de4d597ff2fc9932a032134b6ec4325f" + integrity sha512-UUCzDjQgvAVL/57rL7eOuFUhd+d+6qfM7V8uOegQFeFEmSmvUUDLYoXpBa5vAK9JgQtSqMBJ1Shmwao+/oElxQ== dependencies: - "@react-native-community/cli-tools" "12.3.0" + "@react-native-community/cli-tools" "12.3.2" chalk "^4.1.2" cosmiconfig "^5.1.0" deepmerge "^4.3.0" glob "^7.1.3" joi "^17.2.1" -"@react-native-community/cli-debugger-ui@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-12.3.0.tgz#75bbb2082a369b3559e0dffa8bfeebf2a9107e3e" - integrity sha512-w3b0iwjQlk47GhZWHaeTG8kKH09NCMUJO729xSdMBXE8rlbm4kHpKbxQY9qKb6NlfWSJN4noGY+FkNZS2rRwnQ== +"@react-native-community/cli-debugger-ui@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-12.3.2.tgz#b2743876b03e560fbf5ef516e95387fcb6d91630" + integrity sha512-nSWQUL+51J682DlfcC1bjkUbQbGvHCC25jpqTwHIjmmVjYCX1uHuhPSqQKgPNdvtfOkrkACxczd7kVMmetxY2Q== dependencies: serve-static "^1.13.1" -"@react-native-community/cli-doctor@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-12.3.0.tgz#420eb4e80d482f16d431c4df33fbc203862508af" - integrity sha512-BPCwNNesoQMkKsxB08Ayy6URgGQ8Kndv6mMhIvJSNdST3J1+x3ehBHXzG9B9Vfi+DrTKRb8lmEl/b/7VkDlPkA== +"@react-native-community/cli-doctor@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-12.3.2.tgz#9e82b49f04ee03872b2975f26c8799cecac021ce" + integrity sha512-GrAabdY4qtBX49knHFvEAdLtCjkmndjTeqhYO6BhsbAeKOtspcLT/0WRgdLIaKODRa61ADNB3K5Zm4dU0QrZOg== dependencies: - "@react-native-community/cli-config" "12.3.0" - "@react-native-community/cli-platform-android" "12.3.0" - "@react-native-community/cli-platform-ios" "12.3.0" - "@react-native-community/cli-tools" "12.3.0" + "@react-native-community/cli-config" "12.3.2" + "@react-native-community/cli-platform-android" "12.3.2" + "@react-native-community/cli-platform-ios" "12.3.2" + "@react-native-community/cli-tools" "12.3.2" chalk "^4.1.2" command-exists "^1.2.8" deepmerge "^4.3.0" @@ -2210,53 +1756,53 @@ wcwidth "^1.0.1" yaml "^2.2.1" -"@react-native-community/cli-hermes@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-hermes/-/cli-hermes-12.3.0.tgz#c302acbfb07e1f4e73e76e3150c32f0e4f54e9ed" - integrity sha512-G6FxpeZBO4AimKZwtWR3dpXRqTvsmEqlIkkxgwthdzn3LbVjDVIXKpVYU9PkR5cnT+KuAUxO0WwthrJ6Nmrrlg== +"@react-native-community/cli-hermes@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-hermes/-/cli-hermes-12.3.2.tgz#5f266985fe32a37e9020e881460e9017870be2e5" + integrity sha512-SL6F9O8ghp4ESBFH2YAPLtIN39jdnvGBKnK4FGKpDCjtB3DnUmDsGFlH46S+GGt5M6VzfG2eeKEOKf3pZ6jUzA== dependencies: - "@react-native-community/cli-platform-android" "12.3.0" - "@react-native-community/cli-tools" "12.3.0" + "@react-native-community/cli-platform-android" "12.3.2" + "@react-native-community/cli-tools" "12.3.2" chalk "^4.1.2" hermes-profile-transformer "^0.0.6" ip "^1.1.5" -"@react-native-community/cli-platform-android@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-12.3.0.tgz#eafa5fb12ebc25f716aea18cd55039c19fbedca6" - integrity sha512-VU1NZw63+GLU2TnyQ919bEMThpHQ/oMFju9MCfrd3pyPJz4Sn+vc3NfnTDUVA5Z5yfLijFOkHIHr4vo/C9bjnw== +"@react-native-community/cli-platform-android@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-12.3.2.tgz#de54d89712f8ea95046d798ec274fd6caea70c34" + integrity sha512-MZ5nO8yi/N+Fj2i9BJcJ9C/ez+9/Ir7lQt49DWRo9YDmzye66mYLr/P2l/qxsixllbbDi7BXrlLpxaEhMrDopg== dependencies: - "@react-native-community/cli-tools" "12.3.0" + "@react-native-community/cli-tools" "12.3.2" chalk "^4.1.2" execa "^5.0.0" fast-xml-parser "^4.2.4" glob "^7.1.3" logkitty "^0.7.1" -"@react-native-community/cli-platform-ios@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-12.3.0.tgz#42a9185bb51f35a7eb9c5818b2f0072846945ef5" - integrity sha512-H95Sgt3wT7L8V75V0syFJDtv4YgqK5zbu69ko4yrXGv8dv2EBi6qZP0VMmkqXDamoPm9/U7tDTdbcf26ctnLfg== +"@react-native-community/cli-platform-ios@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-12.3.2.tgz#07e298f69761424da85909790a43ec60ebfe6097" + integrity sha512-OcWEAbkev1IL6SUiQnM6DQdsvfsKZhRZtoBNSj9MfdmwotVZSOEZJ+IjZ1FR9ChvMWayO9ns/o8LgoQxr1ZXeg== dependencies: - "@react-native-community/cli-tools" "12.3.0" + "@react-native-community/cli-tools" "12.3.2" chalk "^4.1.2" execa "^5.0.0" fast-xml-parser "^4.0.12" glob "^7.1.3" ora "^5.4.1" -"@react-native-community/cli-plugin-metro@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-12.3.0.tgz#b4ea8da691d294aee98ccfcd1162bcd958cae834" - integrity sha512-tYNHIYnNmxrBcsqbE2dAnLMzlKI3Cp1p1xUgTrNaOMsGPDN1epzNfa34n6Nps3iwKElSL7Js91CzYNqgTalucA== +"@react-native-community/cli-plugin-metro@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-12.3.2.tgz#7db7dc8939b821b9aeebdd5ee3293f3a0201a2ea" + integrity sha512-FpFBwu+d2E7KRhYPTkKvQsWb2/JKsJv+t1tcqgQkn+oByhp+qGyXBobFB8/R3yYvRRDCSDhS+atWTJzk9TjM8g== -"@react-native-community/cli-server-api@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-12.3.0.tgz#0460472d44c121d1db8a98ad1df811200c074fb3" - integrity sha512-Rode8NrdyByC+lBKHHn+/W8Zu0c+DajJvLmOWbe2WY/ECvnwcd9MHHbu92hlT2EQaJ9LbLhGrSbQE3cQy9EOCw== +"@react-native-community/cli-server-api@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-12.3.2.tgz#11df4e20ed72d59cf22adf77bd30aff3d6e70dc9" + integrity sha512-iwa7EO9XFA/OjI5pPLLpI/6mFVqv8L73kNck3CNOJIUCCveGXBKK0VMyOkXaf/BYnihgQrXh+x5cxbDbggr7+Q== dependencies: - "@react-native-community/cli-debugger-ui" "12.3.0" - "@react-native-community/cli-tools" "12.3.0" + "@react-native-community/cli-debugger-ui" "12.3.2" + "@react-native-community/cli-tools" "12.3.2" compression "^1.7.1" connect "^3.6.5" errorhandler "^1.5.1" @@ -2265,10 +1811,10 @@ serve-static "^1.13.1" ws "^7.5.1" -"@react-native-community/cli-tools@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-12.3.0.tgz#d459a116e1a95034d3c9a6385069c9e2049fb2a6" - integrity sha512-2GafnCr8D88VdClwnm9KZfkEb+lzVoFdr/7ybqhdeYM0Vnt/tr2N+fM1EQzwI1DpzXiBzTYemw8GjRq+Utcz2Q== +"@react-native-community/cli-tools@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-12.3.2.tgz#d3362b04fba3f73ec82c5a493696b575acfb420c" + integrity sha512-nDH7vuEicHI2TI0jac/DjT3fr977iWXRdgVAqPZFFczlbs7A8GQvEdGnZ1G8dqRUmg+kptw0e4hwczAOG89JzQ== dependencies: appdirsjs "^1.2.4" chalk "^4.1.2" @@ -2281,27 +1827,27 @@ shell-quote "^1.7.3" sudo-prompt "^9.0.0" -"@react-native-community/cli-types@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-12.3.0.tgz#2d21a1f93aefbdb34a04311d68097aef0388704f" - integrity sha512-MgOkmrXH4zsGxhte4YqKL7d+N8ZNEd3w1wo56MZlhu5WabwCJh87wYpU5T8vyfujFLYOFuFK5jjlcbs8F4/WDw== +"@react-native-community/cli-types@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-12.3.2.tgz#0551c553c87701faae580097d7786dfff8ec2ef4" + integrity sha512-9D0UEFqLW8JmS16mjHJxUJWX8E+zJddrHILSH8AJHZ0NNHv4u2DXKdb0wFLMobFxGNxPT+VSOjc60fGvXzWHog== dependencies: joi "^17.2.1" -"@react-native-community/cli@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-12.3.0.tgz#c89aacc3973943bf24002255d7d0859b511d88a1" - integrity sha512-XeQohi2E+S2+MMSz97QcEZ/bWpi8sfKiQg35XuYeJkc32Til2g0b97jRpn0/+fV0BInHoG1CQYWwHA7opMsrHg== - dependencies: - "@react-native-community/cli-clean" "12.3.0" - "@react-native-community/cli-config" "12.3.0" - "@react-native-community/cli-debugger-ui" "12.3.0" - "@react-native-community/cli-doctor" "12.3.0" - "@react-native-community/cli-hermes" "12.3.0" - "@react-native-community/cli-plugin-metro" "12.3.0" - "@react-native-community/cli-server-api" "12.3.0" - "@react-native-community/cli-tools" "12.3.0" - "@react-native-community/cli-types" "12.3.0" +"@react-native-community/cli@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-12.3.2.tgz#002ae3683b9fe6b0a83a837f41d9db541ea7667f" + integrity sha512-WgoUWwLDcf/G1Su2COUUVs3RzAwnV/vUTdISSpAUGgSc57mPabaAoUctKTnfYEhCnE3j02k3VtaVPwCAFRO3TQ== + dependencies: + "@react-native-community/cli-clean" "12.3.2" + "@react-native-community/cli-config" "12.3.2" + "@react-native-community/cli-debugger-ui" "12.3.2" + "@react-native-community/cli-doctor" "12.3.2" + "@react-native-community/cli-hermes" "12.3.2" + "@react-native-community/cli-plugin-metro" "12.3.2" + "@react-native-community/cli-server-api" "12.3.2" + "@react-native-community/cli-tools" "12.3.2" + "@react-native-community/cli-types" "12.3.2" chalk "^4.1.2" commander "^9.4.1" deepmerge "^4.3.0" @@ -2341,13 +1887,6 @@ resolved "https://registry.yarnpkg.com/@react-native/assets-registry/-/assets-registry-0.73.1.tgz#e2a6b73b16c183a270f338dc69c36039b3946e85" integrity sha512-2FgAbU7uKM5SbbW9QptPPZx8N9Ke2L7bsHb+EhAanZjFZunA9PaYtyjUQ1s7HD+zDVqOQIvjkpXSv7Kejd2tqg== -"@react-native/babel-plugin-codegen@0.73.2": - version "0.73.2" - resolved "https://registry.yarnpkg.com/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.73.2.tgz#447656cde437b71dc3ef0af3f8a5b215653d5d07" - integrity sha512-PadyFZWVaWXIBP7Q5dgEL7eAd7tnsgsLjoHJB1hIRZZuVUg1Zqe3nULwC7RFAqOtr5Qx7KXChkFFcKQ3WnZzGw== - dependencies: - "@react-native/codegen" "0.73.2" - "@react-native/babel-plugin-codegen@0.73.4": version "0.73.4" resolved "https://registry.yarnpkg.com/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.73.4.tgz#8a2037d5585b41877611498ae66adbf1dddfec1b" @@ -2355,55 +1894,7 @@ dependencies: "@react-native/codegen" "0.73.3" -"@react-native/babel-preset@0.73.19": - version "0.73.19" - resolved "https://registry.yarnpkg.com/@react-native/babel-preset/-/babel-preset-0.73.19.tgz#a6c0587651804f8f01d6f3b7729f1d4a2d469691" - integrity sha512-ujon01uMOREZecIltQxPDmJ6xlVqAUFGI/JCSpeVYdxyXBoBH5dBb0ihj7h6LKH1q1jsnO9z4MxfddtypKkIbg== - dependencies: - "@babel/core" "^7.20.0" - "@babel/plugin-proposal-async-generator-functions" "^7.0.0" - "@babel/plugin-proposal-class-properties" "^7.18.0" - "@babel/plugin-proposal-export-default-from" "^7.0.0" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.0" - "@babel/plugin-proposal-numeric-separator" "^7.0.0" - "@babel/plugin-proposal-object-rest-spread" "^7.20.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" - "@babel/plugin-proposal-optional-chaining" "^7.20.0" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" - "@babel/plugin-syntax-export-default-from" "^7.0.0" - "@babel/plugin-syntax-flow" "^7.18.0" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.0.0" - "@babel/plugin-syntax-optional-chaining" "^7.0.0" - "@babel/plugin-transform-arrow-functions" "^7.0.0" - "@babel/plugin-transform-async-to-generator" "^7.20.0" - "@babel/plugin-transform-block-scoping" "^7.0.0" - "@babel/plugin-transform-classes" "^7.0.0" - "@babel/plugin-transform-computed-properties" "^7.0.0" - "@babel/plugin-transform-destructuring" "^7.20.0" - "@babel/plugin-transform-flow-strip-types" "^7.20.0" - "@babel/plugin-transform-function-name" "^7.0.0" - "@babel/plugin-transform-literals" "^7.0.0" - "@babel/plugin-transform-modules-commonjs" "^7.0.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.0.0" - "@babel/plugin-transform-parameters" "^7.0.0" - "@babel/plugin-transform-private-methods" "^7.22.5" - "@babel/plugin-transform-private-property-in-object" "^7.22.11" - "@babel/plugin-transform-react-display-name" "^7.0.0" - "@babel/plugin-transform-react-jsx" "^7.0.0" - "@babel/plugin-transform-react-jsx-self" "^7.0.0" - "@babel/plugin-transform-react-jsx-source" "^7.0.0" - "@babel/plugin-transform-runtime" "^7.0.0" - "@babel/plugin-transform-shorthand-properties" "^7.0.0" - "@babel/plugin-transform-spread" "^7.0.0" - "@babel/plugin-transform-sticky-regex" "^7.0.0" - "@babel/plugin-transform-typescript" "^7.5.0" - "@babel/plugin-transform-unicode-regex" "^7.0.0" - "@babel/template" "^7.0.0" - "@react-native/babel-plugin-codegen" "0.73.2" - babel-plugin-transform-flow-enums "^0.0.2" - react-refresh "^0.14.0" - -"@react-native/babel-preset@^0.73.18": +"@react-native/babel-preset@0.73.21", "@react-native/babel-preset@^0.73.18": version "0.73.21" resolved "https://registry.yarnpkg.com/@react-native/babel-preset/-/babel-preset-0.73.21.tgz#174c16493fa4e311b2f5f0c58d4f3c6a5a68bbea" integrity sha512-WlFttNnySKQMeujN09fRmrdWqh46QyJluM5jdtDNrkl/2Hx6N4XeDUGhABvConeK95OidVO7sFFf7sNebVXogA== @@ -2451,19 +1942,6 @@ babel-plugin-transform-flow-enums "^0.0.2" react-refresh "^0.14.0" -"@react-native/codegen@0.73.2": - version "0.73.2" - resolved "https://registry.yarnpkg.com/@react-native/codegen/-/codegen-0.73.2.tgz#58af4e4c3098f0e6338e88ec64412c014dd51519" - integrity sha512-lfy8S7umhE3QLQG5ViC4wg5N1Z+E6RnaeIw8w1voroQsXXGPB72IBozh8dAHR3+ceTxIU0KX3A8OpJI8e1+HpQ== - dependencies: - "@babel/parser" "^7.20.0" - flow-parser "^0.206.0" - glob "^7.1.1" - invariant "^2.2.4" - jscodeshift "^0.14.0" - mkdirp "^0.5.1" - nullthrows "^1.1.1" - "@react-native/codegen@0.73.3": version "0.73.3" resolved "https://registry.yarnpkg.com/@react-native/codegen/-/codegen-0.73.3.tgz#cc984a8b17334d986cc600254a0d4b7fa7d68a94" @@ -2477,15 +1955,15 @@ mkdirp "^0.5.1" nullthrows "^1.1.1" -"@react-native/community-cli-plugin@0.73.12": - version "0.73.12" - resolved "https://registry.yarnpkg.com/@react-native/community-cli-plugin/-/community-cli-plugin-0.73.12.tgz#3a72a8cbae839a0382d1a194a7067d4ffa0da04c" - integrity sha512-xWU06OkC1cX++Duh/cD/Wv+oZ0oSY3yqbtxAqQA2H3Q+MQltNNJM6MqIHt1VOZSabRf/LVlR1JL6U9TXJirkaw== +"@react-native/community-cli-plugin@0.73.16": + version "0.73.16" + resolved "https://registry.yarnpkg.com/@react-native/community-cli-plugin/-/community-cli-plugin-0.73.16.tgz#29dca91aa3e24c8cd534dbf3db5766509da92ea3" + integrity sha512-eNH3v3qJJF6f0n/Dck90qfC9gVOR4coAXMTdYECO33GfgjTi+73vf/SBqlXw9HICH/RNZYGPM3wca4FRF7TYeQ== dependencies: - "@react-native-community/cli-server-api" "12.3.0" - "@react-native-community/cli-tools" "12.3.0" + "@react-native-community/cli-server-api" "12.3.2" + "@react-native-community/cli-tools" "12.3.2" "@react-native/dev-middleware" "0.73.7" - "@react-native/metro-babel-transformer" "0.73.13" + "@react-native/metro-babel-transformer" "0.73.15" chalk "^4.0.0" execa "^5.1.1" metro "^0.80.3" @@ -2499,7 +1977,7 @@ resolved "https://registry.yarnpkg.com/@react-native/debugger-frontend/-/debugger-frontend-0.73.3.tgz#033757614d2ada994c68a1deae78c1dd2ad33c2b" integrity sha512-RgEKnWuoo54dh7gQhV7kvzKhXZEhpF9LlMdZolyhGxHsBqZ2gXdibfDlfcARFFifPIiaZ3lXuOVVa4ei+uPgTw== -"@react-native/dev-middleware@0.73.7", "@react-native/dev-middleware@^0.73.6": +"@react-native/dev-middleware@0.73.7": version "0.73.7" resolved "https://registry.yarnpkg.com/@react-native/dev-middleware/-/dev-middleware-0.73.7.tgz#61d2bf08973d9a537fa3f2a42deeb13530d721ae" integrity sha512-BZXpn+qKp/dNdr4+TkZxXDttfx8YobDh8MFHsMk9usouLm22pKgFIPkGBV0X8Do4LBkFNPGtrnsKkWk/yuUXKg== @@ -2515,6 +1993,23 @@ serve-static "^1.13.1" temp-dir "^2.0.0" +"@react-native/dev-middleware@^0.73.6": + version "0.73.8" + resolved "https://registry.yarnpkg.com/@react-native/dev-middleware/-/dev-middleware-0.73.8.tgz#2e43722a00c7b8db753f747f40267cbad6caba4d" + integrity sha512-oph4NamCIxkMfUL/fYtSsE+JbGOnrlawfQ0kKtDQ5xbOjPKotKoXqrs1eGwozNKv7FfQ393stk1by9a6DyASSg== + dependencies: + "@isaacs/ttlcache" "^1.4.1" + "@react-native/debugger-frontend" "0.73.3" + chrome-launcher "^0.15.2" + chromium-edge-launcher "^1.0.0" + connect "^3.6.5" + debug "^2.2.0" + node-fetch "^2.2.0" + open "^7.0.3" + serve-static "^1.13.1" + temp-dir "^2.0.0" + ws "^6.2.2" + "@react-native/gradle-plugin@0.73.4": version "0.73.4" resolved "https://registry.yarnpkg.com/@react-native/gradle-plugin/-/gradle-plugin-0.73.4.tgz#aa55784a8c2b471aa89934db38c090d331baf23b" @@ -2525,13 +2020,13 @@ resolved "https://registry.yarnpkg.com/@react-native/js-polyfills/-/js-polyfills-0.73.1.tgz#730b0a7aaab947ae6f8e5aa9d995e788977191ed" integrity sha512-ewMwGcumrilnF87H4jjrnvGZEaPFCAC4ebraEK+CurDDmwST/bIicI4hrOAv+0Z0F7DEK4O4H7r8q9vH7IbN4g== -"@react-native/metro-babel-transformer@0.73.13": - version "0.73.13" - resolved "https://registry.yarnpkg.com/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.73.13.tgz#81cb6dd8d5140c57f5595183fd6857feb8b7f5d7" - integrity sha512-k9AQifogQfgUXPlqQSoMtX2KUhniw4XvJl+nZ4hphCH7qiMDAwuP8OmkJbz5E/N+Ro9OFuLE7ax4GlwxaTsAWg== +"@react-native/metro-babel-transformer@0.73.15": + version "0.73.15" + resolved "https://registry.yarnpkg.com/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.73.15.tgz#c516584dde62d65a46668074084359c03e6a50f1" + integrity sha512-LlkSGaXCz+xdxc9819plmpsl4P4gZndoFtpjN3GMBIu6f7TBV0GVbyJAU4GE8fuAWPVSVL5ArOcdkWKSbI1klw== dependencies: "@babel/core" "^7.20.0" - "@react-native/babel-preset" "0.73.19" + "@react-native/babel-preset" "0.73.21" hermes-parser "0.15.0" nullthrows "^1.1.1" @@ -2554,18 +2049,18 @@ nullthrows "^1.1.1" "@react-navigation/bottom-tabs@~6.5.7": - version "6.5.12" - resolved "https://registry.yarnpkg.com/@react-navigation/bottom-tabs/-/bottom-tabs-6.5.12.tgz#73adce8b147debe909985257bf436757894e99f6" - integrity sha512-8gBHHvgmJSRGfQ5fcFUgDFcXj1MzDzEZJ/llDYvcSb6ZxgN5xVq+4oVkwPMxOM6v+Qm2nKvXiUKuB/YydhzpLw== + version "6.5.14" + resolved "https://registry.yarnpkg.com/@react-navigation/bottom-tabs/-/bottom-tabs-6.5.14.tgz#8e09c30c66cc9adb0cc281b4db7313a1197b1f79" + integrity sha512-3gDVwuaPQIxkJm3PI5vATDr9Un3Z0tplfkzM/TWL2igE0Kd/hymWz0jZppBJbuKi+Q25i/74b+3VOVKuiE43AQ== dependencies: - "@react-navigation/elements" "^1.3.22" + "@react-navigation/elements" "^1.3.24" color "^4.2.3" warn-once "^0.1.0" -"@react-navigation/core@^6.4.10": - version "6.4.10" - resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-6.4.10.tgz#0c52621968b35e3a75e189e823d3b9e3bad77aff" - integrity sha512-oYhqxETRHNHKsipm/BtGL0LI43Hs2VSFoWMbBdHK9OqgQPjTVUitslgLcPpo4zApCcmBWoOLX2qPxhsBda644A== +"@react-navigation/core@^6.4.11": + version "6.4.11" + resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-6.4.11.tgz#481274aff0684757545bf6eb874260af7e8b27d1" + integrity sha512-kOCyOc1L0lAl53DbyNl3OkUJwSFKSaVCsV8leJawUXMXJ1FTT3nbS3xMOqbZuchxIbl8T62sZ7YnlWG/21rcMw== dependencies: "@react-navigation/routers" "^6.1.9" escape-string-regexp "^4.0.0" @@ -2574,25 +2069,25 @@ react-is "^16.13.0" use-latest-callback "^0.1.7" -"@react-navigation/elements@^1.3.22": - version "1.3.22" - resolved "https://registry.yarnpkg.com/@react-navigation/elements/-/elements-1.3.22.tgz#37e25e46ca4715049795471056a9e7e58ac4a14e" - integrity sha512-HYKucs0TwQT8zMvgoZbJsY/3sZfzeP8Dk9IDv4agst3zlA7ReTx4+SROCG6VGC7JKqBCyQykHIwkSwxhapoc+Q== +"@react-navigation/elements@^1.3.24": + version "1.3.24" + resolved "https://registry.yarnpkg.com/@react-navigation/elements/-/elements-1.3.24.tgz#184eabb869338dd268761e9d0f3a4c96f8e322f3" + integrity sha512-zgZV50qjlv3/N+MzNV0DIRmtg30IZcR0+LaTQRP/OxLtveQkgUG6wIEKl6SXO2ykC9yF9V82msdCzKl9uPSQCA== "@react-navigation/native-stack@~6.9.12": - version "6.9.18" - resolved "https://registry.yarnpkg.com/@react-navigation/native-stack/-/native-stack-6.9.18.tgz#60380b058bf916f69db46cdb32b3127d0589f055" - integrity sha512-PSe0qjROy8zD78ehW048NSuzWRktioSCJmB8LzWSR65ndgVaC2rO+xvgyjhHjqm01YdyVM1XTct2EorSjDV2Ow== + version "6.9.20" + resolved "https://registry.yarnpkg.com/@react-navigation/native-stack/-/native-stack-6.9.20.tgz#43ffe1ec675696f267786ecad2533348cc5dbe1b" + integrity sha512-/QXOVJGLPNGv0RXisyI5ld9oaKAdVzwcF88Q1pOA1Icp8Yce036bcixJXBsVuUhqYCJ5cBtojWt5mW6za3cRBw== dependencies: - "@react-navigation/elements" "^1.3.22" + "@react-navigation/elements" "^1.3.24" warn-once "^0.1.0" "@react-navigation/native@^6.0.2", "@react-navigation/native@~6.1.6": - version "6.1.10" - resolved "https://registry.yarnpkg.com/@react-navigation/native/-/native-6.1.10.tgz#d108423ae3acbe13f11d9b7351c1f5522d8391a5" - integrity sha512-jDG89TbZItY7W7rIcS1RqT63vWOPD4XuQLNKqZO0DY7mKnKh/CGBd0eg3nDMXUl143Qp//IxJKe2TfBQRDEU4A== + version "6.1.12" + resolved "https://registry.yarnpkg.com/@react-navigation/native/-/native-6.1.12.tgz#5b5b84861ca50678e2a402249695f250e8cea761" + integrity sha512-t6y7sDCr0HlMf+5TuVjLjyi0ySs0eNGfreDKcWOMEi5wooNFM4LhcUCdEVylpwCPfjQMW/lNVomNromqZFM6HQ== dependencies: - "@react-navigation/core" "^6.4.10" + "@react-navigation/core" "^6.4.11" escape-string-regexp "^4.0.0" fast-deep-equal "^3.1.3" nanoid "^3.1.23" @@ -2687,10 +2182,6 @@ component-type "^1.2.1" join-component "^1.1.0" -"@sideway/address@^4.1.5": - version "4.1.5" - resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.5.tgz#4bc149a0076623ced99ca8208ba780d65a99b9d5" - integrity sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q== "@sideway/address@^4.1.5": version "4.1.5" resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.5.tgz#4bc149a0076623ced99ca8208ba780d65a99b9d5" @@ -2714,9 +2205,6 @@ integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== "@sinonjs/commons@^3.0.0": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" - integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== version "3.0.1" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== @@ -2730,22 +2218,17 @@ dependencies: "@sinonjs/commons" "^3.0.0" -"@tanstack/query-core@5.22.2": - version "5.22.2" - resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-5.22.2.tgz#af67d41b0b4a3e846c2325f32540f39ca0d4788d" - integrity sha512-z3PwKFUFACMUqe1eyesCIKg3Jv1mysSrYfrEW5ww5DCDUD4zlpTKBvUDaEjsfZzL3ULrFLDM9yVUxI/fega1Qg== -"@tanstack/query-core@5.22.2": - version "5.22.2" - resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-5.22.2.tgz#af67d41b0b4a3e846c2325f32540f39ca0d4788d" - integrity sha512-z3PwKFUFACMUqe1eyesCIKg3Jv1mysSrYfrEW5ww5DCDUD4zlpTKBvUDaEjsfZzL3ULrFLDM9yVUxI/fega1Qg== +"@tanstack/query-core@5.24.1": + version "5.24.1" + resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-5.24.1.tgz#d40928dec22b47df97fb2648e8c499772e8d7eb2" + integrity sha512-DZ6Nx9p7BhjkG50ayJ+MKPgff+lMeol7QYXkvuU5jr2ryW/4ok5eanaS9W5eooA4xN0A/GPHdLGOZGzArgf5Cg== "@tanstack/react-query@^5.18.1": - version "5.22.2" - resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-5.22.2.tgz#e5fce278fbdd026fc1d561a4505142b9f93549d7" - integrity sha512-TaxJDRzJ8/NWRT4lY2jguKCrNI6MRN+67dELzPjNUlvqzTxGANlMp68l7aC7hG8Bd1uHNxHl7ihv7MT50i/43A== + version "5.24.1" + resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-5.24.1.tgz#bcb913febe0d813cec1fda7783298d07aa998b20" + integrity sha512-4+09JEdO4d6+Gc8Y/g2M/MuxDK5IY0QV8+2wL2304wPKJgJ54cBbULd3nciJ5uvh/as8rrxx6s0mtIwpRuGd1g== dependencies: - "@tanstack/query-core" "5.22.2" - "@tanstack/query-core" "5.22.2" + "@tanstack/query-core" "5.24.1" "@tootallnate/once@2": version "2.0.0" @@ -2843,9 +2326,10 @@ integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== "@types/node@*": - version "20.11.19" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.19.tgz#b466de054e9cb5b3831bee38938de64ac7f81195" - integrity sha512-7xMnVEcZFu0DikYjWOlRq7NTPETrm7teqUT2WkQjrTIkEgUyyGdWsj/Zg8bEJt5TNklzbPD1X3fqfsHw3SpapQ== + version "20.11.20" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.20.tgz#f0a2aee575215149a62784210ad88b3a34843659" + integrity sha512-7/rR21OS+fq8IyHTgtLkDK949uzsa6n8BkziAKtPVpugIkO6D+/ooXMvzXxDnZrmtXVfjb1bKQafYpb8s89LOg== + dependencies: undici-types "~5.26.4" "@types/prop-types@*": @@ -2854,9 +2338,9 @@ integrity sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng== "@types/react@~18.2.14": - version "18.2.57" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.57.tgz#147b516d8bdb2900219acbfc6f939bdeecca7691" - integrity sha512-ZvQsktJgSYrQiMirAN60y4O/LRevIV8hUzSOSNB6gfR3/o3wCBFQx3sPwIYtuDMeiVgsSS3UzCV26tEzgnfvQw== + version "18.2.58" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.58.tgz#22082d12898d11806f4a1aefb5583116a047493d" + integrity sha512-TaGvMNhxvG2Q0K0aYxiKfNDS5m5ZsoIBBbtfUorxdH4NGSXIlYvZxLJI+9Dd3KjeB3780bciLyAb7ylO8pLhPw== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" @@ -2868,9 +2352,9 @@ integrity sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A== "@types/semver@^7.3.12": - version "7.5.7" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.7.tgz#326f5fdda70d13580777bcaa1bc6fa772a5aef0e" - integrity sha512-/wdoPq1QqkSj9/QOeKkFquEuPzQbHTWAMPH/PaUMB+JuR31lXhlWXRZ52IpfDYVlDOUBvX09uBrPwxGT1hjNBg== + version "7.5.8" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" + integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== "@types/stack-utils@^2.0.0": version "2.0.3" @@ -2999,9 +2483,6 @@ wonka "^4.0.14" "@urql/core@>=2.3.1": - version "4.2.3" - resolved "https://registry.yarnpkg.com/@urql/core/-/core-4.2.3.tgz#f956e8a33c4bd055c0c5151491843dd46d737f0f" - integrity sha512-DJ9q9+lcs5JL8DcU2J3NqsgeXYJva+1+Qt8HU94kzTPqVOIRRA7ouvy4ksUfPY+B5G2PQ+vLh+JJGyZCNXv0cg== version "4.2.3" resolved "https://registry.yarnpkg.com/@urql/core/-/core-4.2.3.tgz#f956e8a33c4bd055c0c5151491843dd46d737f0f" integrity sha512-DJ9q9+lcs5JL8DcU2J3NqsgeXYJva+1+Qt8HU94kzTPqVOIRRA7ouvy4ksUfPY+B5G2PQ+vLh+JJGyZCNXv0cg== @@ -3119,16 +2600,6 @@ ajv@8.11.0: require-from-string "^2.0.2" uri-js "^4.2.2" -ajv@8.11.0: - version "8.11.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" - integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" @@ -3263,8 +2734,6 @@ array-buffer-byte-length@^1.0.1: dependencies: call-bind "^1.0.5" is-array-buffer "^3.0.4" - call-bind "^1.0.5" - is-array-buffer "^3.0.4" array-includes@^3.1.6: version "3.1.7" @@ -3366,7 +2835,7 @@ at-least-node@^1.0.0: resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== -available-typed-arrays@^1.0.6: +available-typed-arrays@^1.0.6, available-typed-arrays@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== @@ -3428,13 +2897,8 @@ babel-plugin-polyfill-corejs2@^0.4.8: dependencies: "@babel/compat-data" "^7.22.6" "@babel/helper-define-polyfill-provider" "^0.5.0" - "@babel/helper-define-polyfill-provider" "^0.5.0" semver "^6.3.1" -babel-plugin-polyfill-corejs3@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz#9eea32349d94556c2ad3ab9b82ebb27d4bf04a81" - integrity sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg== babel-plugin-polyfill-corejs3@^0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz#9eea32349d94556c2ad3ab9b82ebb27d4bf04a81" @@ -3442,20 +2906,13 @@ babel-plugin-polyfill-corejs3@^0.9.0: dependencies: "@babel/helper-define-polyfill-provider" "^0.5.0" core-js-compat "^3.34.0" - "@babel/helper-define-polyfill-provider" "^0.5.0" - core-js-compat "^3.34.0" -babel-plugin-polyfill-regenerator@^0.5.5: - version "0.5.5" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz#8b0c8fc6434239e5d7b8a9d1f832bb2b0310f06a" - integrity sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg== babel-plugin-polyfill-regenerator@^0.5.5: version "0.5.5" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz#8b0c8fc6434239e5d7b8a9d1f832bb2b0310f06a" integrity sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg== dependencies: "@babel/helper-define-polyfill-provider" "^0.5.0" - "@babel/helper-define-polyfill-provider" "^0.5.0" babel-plugin-react-native-web@~0.18.10: version "0.18.12" @@ -3770,9 +3227,9 @@ camelize@^1.0.0: integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ== caniuse-lite@^1.0.30001587: - version "1.0.30001588" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001588.tgz#07f16b65a7f95dba82377096923947fb25bce6e3" - integrity sha512-+hVY9jE44uKLkH0SrUTqxjxqNTOWHsbnQDIKjwkZ3lNTzUUVdBLBGXtj/q5Mp5u98r3droaZAewQuEDzjQdZlQ== + version "1.0.30001589" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001589.tgz#7ad6dba4c9bf6561aec8291976402339dc157dfb" + integrity sha512-vNQWS6kI+q6sBlHbh71IIeC+sRwK2N3EDySc/updIGhIee2x5z00J4c1242/5/d6EpEMdOnk/m+6tuk4/tcsqg== chalk@^2.0.1, chalk@^2.4.2: version "2.4.2" @@ -4091,7 +3548,7 @@ cookie@^0.4.1: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== -core-js-compat@^3.31.0, core-js-compat@^3.34.0: +core-js-compat@^3.34.0: version "3.36.0" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.36.0.tgz#087679119bc2fdbdefad0d45d8e5d307d45ba190" integrity sha512-iV9Pd/PsgjNWBXeq8XRtWVSgz2tKAfhfvBs7qxYty+RlRd+OCksaWmOnc4JKrTc1cToXL1N0s3l/vwlxPtdElw== @@ -4316,7 +3773,7 @@ defaults@^1.0.3: dependencies: clone "^1.0.2" -define-data-property@^1.0.1, define-data-property@^1.1.2: +define-data-property@^1.0.1, define-data-property@^1.1.2, define-data-property@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== @@ -4456,9 +3913,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.4.668: - version "1.4.675" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.675.tgz#9e612a5339e3c9f884982478a8aaf2da3ab6ec7d" - integrity sha512-+1u3F/XPNIdUwv8i1lDxHAxCvNNU0QIqgb1Ycn+Jnng8ITzWSvUqixRSM7NOazJuwhf65IV17f/VbKj8DmL26A== + version "1.4.681" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.681.tgz#5f23fad8aa7e1f64cbb7dd9d15c7e39a1cd7e6e3" + integrity sha512-1PpuqJUFWoXZ1E54m8bsLPVYwIVCRzvaL+n5cjigGga4z854abDnFRc+cTa2th4S79kyGqya/1xoR7h+Y5G5lg== emittery@^0.13.1: version "0.13.1" @@ -4610,13 +4067,13 @@ es-iterator-helpers@^1.0.12: safe-array-concat "^1.1.0" es-set-tostringtag@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz#11f7cc9f63376930a5f20be4915834f4bc74f9c9" - integrity sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q== + version "2.0.3" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#8bb60f0a440c2e4281962428438d58545af39777" + integrity sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ== dependencies: - get-intrinsic "^1.2.2" - has-tostringtag "^1.0.0" - hasown "^2.0.0" + get-intrinsic "^1.2.4" + has-tostringtag "^1.0.2" + hasown "^2.0.1" es-shim-unscopables@^1.0.0, es-shim-unscopables@^1.0.2: version "1.0.2" @@ -4779,15 +4236,15 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4 integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== eslint@^8.56.0: - version "8.56.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.56.0.tgz#4957ce8da409dc0809f99ab07a1b94832ab74b15" - integrity sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ== + version "8.57.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" + integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.6.1" "@eslint/eslintrc" "^2.1.4" - "@eslint/js" "8.56.0" - "@humanwhocodes/config-array" "^0.11.13" + "@eslint/js" "8.57.0" + "@humanwhocodes/config-array" "^0.11.14" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" "@ungap/structured-clone" "^1.2.0" @@ -4943,10 +4400,6 @@ expo-constants@~15.4.0, expo-constants@~15.4.3: dependencies: "@expo/config" "~8.5.0" -expo-dev-client@~3.3.8: - version "3.3.8" - resolved "https://registry.yarnpkg.com/expo-dev-client/-/expo-dev-client-3.3.8.tgz#f6cff563f2437d0d265aa4d91eb263d592ac43f3" - integrity sha512-6JpcxncWiWwq1w6SPrePpTa20z3D1qmAMMHd8f05lSCUPVBn4jTwpzrKEpGaA3EubLE5SEdxPVmvmyWw/oFFMQ== expo-dev-client@~3.3.8: version "3.3.8" resolved "https://registry.yarnpkg.com/expo-dev-client/-/expo-dev-client-3.3.8.tgz#f6cff563f2437d0d265aa4d91eb263d592ac43f3" @@ -4987,10 +4440,6 @@ expo-file-system@~16.0.0, expo-file-system@~16.0.6: resolved "https://registry.yarnpkg.com/expo-file-system/-/expo-file-system-16.0.6.tgz#07a140a7bcb44b42bd3f0b465e7583cc7f7d7078" integrity sha512-ATCHL7nEg2WwKeamW/SDTR9jBEqM5wncFq594ftKS5QFmhKIrX48d9jyPFGnNq+6h8AGPg4QKh2KCA4OY49L4g== -expo-font@~11.10.2, expo-font@~11.10.3: - version "11.10.3" - resolved "https://registry.yarnpkg.com/expo-font/-/expo-font-11.10.3.tgz#a3115ebda8e09bd7cb8052619a4bbe606f0c17f4" - integrity sha512-q1Td2zUvmLbCA9GV4OG4nLPw5gJuNY1VrPycsnemN1m8XWTzzs8nyECQQqrcBhgulCgcKZZJJ6U0kC2iuSoQHQ== expo-font@~11.10.2, expo-font@~11.10.3: version "11.10.3" resolved "https://registry.yarnpkg.com/expo-font/-/expo-font-11.10.3.tgz#a3115ebda8e09bd7cb8052619a4bbe606f0c17f4" @@ -5008,7 +4457,6 @@ expo-keep-awake@~12.8.2: resolved "https://registry.yarnpkg.com/expo-keep-awake/-/expo-keep-awake-12.8.2.tgz#6cfdf8ad02b5fa130f99d4a1eb98e459d5b4332e" integrity sha512-uiQdGbSX24Pt8nGbnmBtrKq6xL/Tm3+DuDRGBk/3ZE/HlizzNosGRIufIMJ/4B4FRw4dw8KU81h2RLuTjbay6g== -expo-linking@~6.2.2: expo-linking@~6.2.2: version "6.2.2" resolved "https://registry.yarnpkg.com/expo-linking/-/expo-linking-6.2.2.tgz#b7e148068ae49fd9ad814428c16fdf7a236e8aca" @@ -5037,10 +4485,6 @@ expo-modules-autolinking@1.10.3: find-up "^5.0.0" fs-extra "^9.1.0" -expo-modules-core@1.11.9: - version "1.11.9" - resolved "https://registry.yarnpkg.com/expo-modules-core/-/expo-modules-core-1.11.9.tgz#4b95070390fe7e3418aa84580244bcf0540357ca" - integrity sha512-GTUb81vcPaF+5MtlBI1u9IjrZbGdF1ZUwz3u8Gc+rOLBblkZ7pYsj2mU/tu+k0khTckI9vcH4ZBksXWvE1ncjQ== expo-modules-core@1.11.9: version "1.11.9" resolved "https://registry.yarnpkg.com/expo-modules-core/-/expo-modules-core-1.11.9.tgz#4b95070390fe7e3418aa84580244bcf0540357ca" @@ -5119,7 +4563,6 @@ expo@~50.0.5: expo-keep-awake "~12.8.2" expo-modules-autolinking "1.10.3" expo-modules-core "1.11.9" - expo-modules-core "1.11.8" fbemitter "^3.0.0" whatwg-url-without-unicode "8.0.0-3" @@ -5137,9 +4580,8 @@ fast-diff@^1.1.2: version "1.3.0" resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== + fast-glob@^3.2.12, fast-glob@^3.2.5, fast-glob@^3.2.9: -fast-glob@^3.2.12, fast-glob@^3.2.5, fast-glob@^3.2.9: -fast-glob@^3.2.5, fast-glob@^3.2.9, fast-glob@^3.3.0: version "3.3.2" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== @@ -5164,18 +4606,18 @@ fast-loops@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/fast-loops/-/fast-loops-1.1.3.tgz#ce96adb86d07e7bf9b4822ab9c6fac9964981f75" integrity sha512-8EZzEP0eKkEEVX+drtd9mtuQ+/QrlfW/5MlwcwK5Nds6EkZ/tRzEexkzUY2mIssnAyVLT+TKHuRXmFNNXYUd6g== + fast-xml-parser@^4.0.12, fast-xml-parser@^4.2.4: -fast-xml-parser@^4.2.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.3.4.tgz#385cc256ad7bbc57b91515a38a22502a9e1fca0d" - integrity sha512-utnwm92SyozgA3hhH2I8qldf2lBqm6qHOICawRNRFu1qMe3+oqr+GcXjGqTmXTMGE5T4eC03kr/rlh5C1IRdZA== + version "4.3.5" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.3.5.tgz#e2f2a2ae8377e9c3dc321b151e58f420ca7e5ccc" + integrity sha512-sWvP1Pl8H03B8oFJpFR3HE31HUfwtX7Rlf9BNsvdpujD4n7WMhfmu8h9wOV2u+c1k0ZilTADhPqypzx2J690ZQ== dependencies: strnum "^1.0.5" +fastq@^1.6.0: version "1.17.1" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== - integrity sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA== dependencies: reusify "^1.0.4" @@ -5297,35 +4739,30 @@ flat-cache@^3.0.4: rimraf "^3.0.2" flatted@^3.2.9: - version "3.2.9" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" - integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== + version "3.3.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" + integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== flow-enums-runtime@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/flow-enums-runtime/-/flow-enums-runtime-0.0.6.tgz#5bb0cd1b0a3e471330f4d109039b7eba5cb3e787" integrity sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw== - version "0.229.0" - resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.229.0.tgz#054b60d6f6a9fab76cd89dc6ca662fd32d910163" - integrity sha512-mOYmMuvJwAo/CvnMFEq4SHftq7E5188hYMTTxJyQOXk2nh+sgslRdYMw3wTthH+FMcFaZLtmBPuMu6IwztdoUQ== - integrity sha512-YlH+Y/P/5s0S7Vg14RwXlJMF/JsGfkG7gcKB/zljyoqaPNX9YVsGzx+g6MLTbhZaWbPhs4347aTpmSb9GgiPtw== +flow-parser@0.*: + version "0.229.2" + resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.229.2.tgz#b19ce67bfbfab8c91ee51dcddb9c3ab0f3bf2ab7" + integrity sha512-T72XV2Izvl7yV6dhHhLaJ630Y6vOZJl6dnOS6dN0bPW9ExuREu7xGAf3omtcxX76POTuux9TJPu9ZpS48a/rdw== flow-parser@^0.206.0: version "0.206.0" resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.206.0.tgz#f4f794f8026535278393308e01ea72f31000bfef" integrity sha512-HVzoK3r6Vsg+lKvlIZzaWNBVai+FXTX1wdYhz/wVlH13tb/gOdLXmlTqy6odmTBhT5UoWUbq0k8263Qhr9d88w== -follow-redirects@^1.15.4: - version "1.15.5" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.5.tgz#54d4d6d062c0fa7d9d17feb008461550e3ba8020" - integrity sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw== follow-redirects@^1.15.4: version "1.15.5" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.5.tgz#54d4d6d062c0fa7d9d17feb008461550e3ba8020" integrity sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw== - fontfaceobserver@^2.1.0: version "2.3.0" resolved "https://registry.yarnpkg.com/fontfaceobserver/-/fontfaceobserver-2.3.0.tgz#5fb392116e75d5024b7ec8e4f2ce92106d1488c8" @@ -5419,8 +4856,8 @@ fsevents@^2.3.2, fsevents@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + function-bind@^1.1.2: -function-bind@^1.1.1, function-bind@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== @@ -5449,14 +4886,13 @@ get-caller-file@^2.0.1, get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== - integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== - es-errors "^1.3.0" dependencies: - es-errors "^1.0.0" + es-errors "^1.3.0" function-bind "^1.1.2" has-proto "^1.0.1" has-symbols "^1.0.3" @@ -5483,15 +4919,15 @@ get-stream@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + get-symbol-description@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz#533744d5aa20aca4e079c8e5daf7fd44202821f5" integrity sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg== - integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: call-bind "^1.0.5" es-errors "^1.3.0" get-intrinsic "^1.2.4" - get-intrinsic "^1.1.1" getenv@^1.0.0: version "1.0.0" @@ -5632,50 +5068,47 @@ has-flag@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.1, has-property-descriptors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== - integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== + dependencies: es-define-property "^1.0.0" - get-intrinsic "^1.2.2" +has-proto@^1.0.1, has-proto@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== - integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== -has-tostringtag@^1.0.0, has-tostringtag@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" - integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== -has-tostringtag@^1.0.0, has-tostringtag@^1.0.1: + +has-tostringtag@^1.0.0, has-tostringtag@^1.0.1, has-tostringtag@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== - has-symbols "^1.0.3" + dependencies: has-symbols "^1.0.3" - has-symbols "^1.0.2" + hasown@^2.0.0, hasown@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.1.tgz#26f48f039de2c0f8d3356c223fb8d50253519faa" integrity sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA== + dependencies: function-bind "^1.1.2" hermes-estree@0.15.0: version "0.15.0" resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.15.0.tgz#e32f6210ab18c7b705bdcb375f7700f2db15d6ba" integrity sha512-lLYvAd+6BnOqWdnNbP/Q8xfl8LOGw4wVjfrNd9Gt8eoFzhNBRVD95n4l2ksfMVOoxuVyegs85g83KS9QOsxbVQ== + hermes-estree@0.19.1: version "0.19.1" resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.19.1.tgz#d5924f5fac2bf0532547ae9f506d6db8f3c96392" integrity sha512-daLGV3Q2MKk8w4evNMKwS8zBE/rcpA800nu1Q5kM08IKijoSnPe9Uo1iIxzPKRkn95IxxsgBMPeYHt3VG4ej2g== - integrity sha512-KoLsoWXJ5o81nit1wSyEZnWUGy9cBna9iYMZBR7skKh7okYAYKqQ9/OczwpMHn/cH0hKDyblulGsJ7FknlfVxQ== hermes-parser@0.15.0: version "0.15.0" @@ -5683,13 +5116,13 @@ hermes-parser@0.15.0: integrity sha512-Q1uks5rjZlE9RjMMjSUCkGrEIPI5pKJILeCtK1VmTj7U4pf3wVPoo+cxfu+s4cBAPy2JzikIIdCZgBoR6x7U1Q== dependencies: hermes-estree "0.15.0" + hermes-parser@0.19.1: version "0.19.1" resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.19.1.tgz#1044348097165b7c93dc198a80b04ed5130d6b1a" integrity sha512-Vp+bXzxYJWrpEuJ/vXxUsLnt0+y4q9zyi4zUlkLqD8FKv4LjIfOvP69R/9Lty3dCyKh0E2BU7Eypqr63/rKT/A== - integrity sha512-1eQfvib+VPpgBZ2zYKQhpuOjw1tH+Emuib6QmjkJWJMhyjM8xnXMvA+76o9LhF0zOAJDZgPfQhg43cyXEyl5Ew== + dependencies: hermes-estree "0.19.1" - hermes-estree "0.18.2" hermes-profile-transformer@^0.0.6: version "0.0.6" @@ -5767,13 +5200,10 @@ ieee754@^1.1.13: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== +ignore@^5.0.5, ignore@^5.2.0: version "5.3.1" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== - version "5.3.1" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" - integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== - integrity sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg== image-size@^1.0.2: version "1.1.1" @@ -5854,17 +5284,17 @@ internal-ip@4.3.0: dependencies: default-gateway "^4.2.0" ipaddr.js "^1.9.0" + internal-slot@^1.0.5, internal-slot@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802" integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g== dependencies: es-errors "^1.3.0" - get-intrinsic "^1.2.2" hasown "^2.0.0" side-channel "^1.0.4" + invariant@^2.1.0, invariant@^2.2.4: -invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== @@ -5876,10 +5306,10 @@ ip-regex@^2.1.0: resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" integrity sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw== +ip@^1.1.5: version "1.1.9" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.9.tgz#8dfbcc99a754d07f425310b86a99546b1151e396" integrity sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ== - integrity sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg== ipaddr.js@^1.9.0: version "1.9.1" @@ -5893,15 +5323,14 @@ is-arguments@^1.0.4: dependencies: call-bind "^1.0.2" has-tostringtag "^1.0.0" + is-array-buffer@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98" integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw== - integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== dependencies: + call-bind "^1.0.2" get-intrinsic "^1.2.1" - get-intrinsic "^1.2.1" - is-typed-array "^1.1.10" is-arrayish@^0.2.1: version "0.2.1" @@ -6046,10 +5475,10 @@ is-map@^2.0.1: resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== +is-negative-zero@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== - integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== is-number-object@^1.0.4: version "1.0.7" @@ -6104,11 +5533,11 @@ is-set@^2.0.1: integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== is-shared-array-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" - integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz#1237f1cba059cdb62431d378dcc37d9680181688" + integrity sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg== dependencies: - call-bind "^1.0.2" + call-bind "^1.0.7" is-stream@^1.1.0: version "1.1.0" @@ -6133,14 +5562,13 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== dependencies: has-symbols "^1.0.2" -is-typed-array@^1.1.10, is-typed-array@^1.1.13, is-typed-array@^1.1.3, is-typed-array@^1.1.9: + +is-typed-array@^1.1.13, is-typed-array@^1.1.3: version "1.1.13" resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== - integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== - which-typed-array "^1.1.14" + dependencies: which-typed-array "^1.1.14" - which-typed-array "^1.1.11" is-unicode-supported@^0.1.0: version "0.1.0" @@ -6222,14 +5650,14 @@ istanbul-lib-instrument@^5.0.4: istanbul-lib-coverage "^3.2.0" semver "^6.3.0" +istanbul-lib-instrument@^6.0.0: version "6.0.2" resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz#91655936cf7380e4e473383081e38478b69993b1" integrity sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw== - integrity sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA== + dependencies: "@babel/core" "^7.23.9" "@babel/parser" "^7.23.9" "@istanbuljs/schema" "^0.1.3" - "@istanbuljs/schema" "^0.1.2" istanbul-lib-coverage "^3.2.0" semver "^7.5.4" @@ -6251,10 +5679,10 @@ istanbul-lib-source-maps@^4.0.0: istanbul-lib-coverage "^3.0.0" source-map "^0.6.1" +istanbul-reports@^3.1.3: version "3.1.7" resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.7.tgz#daed12b9e1dca518e15c056e1e537e741280fa0b" integrity sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g== - integrity sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg== dependencies: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" @@ -6417,8 +5845,8 @@ jest-environment-node@^29.6.3, jest-environment-node@^29.7.0: "@types/node" "*" jest-mock "^29.7.0" jest-util "^29.7.0" + jest-expo@~50.0.1: -jest-expo@~50.0.2: version "50.0.2" resolved "https://registry.yarnpkg.com/jest-expo/-/jest-expo-50.0.2.tgz#cbf5b4c2dd40bac646d6b08f2c575a0e1e0d9bd9" integrity sha512-g9Vq4Cpndp6M+bWGNJfyxw+iiZm7o1XpaOEHgtyC1evdy4B9IsEWql1Y2xBH7uD79FwSKhaIz+xCQHZNhnSlAg== @@ -6700,27 +6128,20 @@ jimp-compact@0.16.1: version "0.16.1" resolved "https://registry.yarnpkg.com/jimp-compact/-/jimp-compact-0.16.1.tgz#9582aea06548a2c1e04dd148d7c3ab92075aefa3" integrity sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww== + jiti@^1.18.2: -jiti@^1.18.2: -jiti@^1.19.1: version "1.21.0" resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d" integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q== - version "17.12.1" - resolved "https://registry.yarnpkg.com/joi/-/joi-17.12.1.tgz#3347ecf4cd3301962d42191c021b165eef1f395b" - integrity sha512-vtxmq+Lsc5SlfqotnfVjlViWfOL9nt/avKNbKYizwf6gsCfq9NYY/ceYRMFD8XDdrjJ9abJyScWmhmIiy+XRtQ== - version "17.12.1" - resolved "https://registry.yarnpkg.com/joi/-/joi-17.12.1.tgz#3347ecf4cd3301962d42191c021b165eef1f395b" - integrity sha512-vtxmq+Lsc5SlfqotnfVjlViWfOL9nt/avKNbKYizwf6gsCfq9NYY/ceYRMFD8XDdrjJ9abJyScWmhmIiy+XRtQ== - integrity sha512-NgB+lZLNoqISVy1rZocE9PZI36bL/77ie924Ri43yEvi9GUUMPeyVIr8KdFTMUlby1p0PBYMk9spIxEUQYqrJQ== - "@hapi/hoek" "^9.3.0" - "@hapi/topo" "^5.1.0" - "@sideway/address" "^4.1.5" +joi@^17.2.1: + version "17.12.2" + resolved "https://registry.yarnpkg.com/joi/-/joi-17.12.2.tgz#283a664dabb80c7e52943c557aab82faea09f521" + integrity sha512-RonXAIzCiHLc8ss3Ibuz45u28GOsWE1UpfDXLbN/9NKbL4tCJf8TWYVKsoYuuh+sAUt7fsSNpA+r2+TBA6Wjmw== + dependencies: "@hapi/hoek" "^9.3.0" "@hapi/topo" "^5.1.0" "@sideway/address" "^4.1.5" - "@sideway/address" "^4.1.3" "@sideway/formula" "^3.0.1" "@sideway/pinpoint" "^2.0.0" @@ -7000,10 +6421,10 @@ lilconfig@^2.1.0: resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== +lilconfig@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.1.tgz#9d8a246fa753106cfc205fd2d77042faca56e5e3" integrity sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ== - integrity sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g== lines-and-columns@^1.1.6: version "1.2.4" @@ -7046,9 +6467,8 @@ lodash.throttle@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ== + lodash@^4.17.13, lodash@^4.17.19, lodash@^4.17.21, lodash@^4.17.4: -lodash@^4.17.13, lodash@^4.17.19, lodash@^4.17.21, lodash@^4.17.4: -lodash@>=4.17.21, lodash@^4.17.13, lodash@^4.17.19, lodash@^4.17.21, lodash@^4.17.4: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -7098,13 +6518,10 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +"lru-cache@^9.1.1 || ^10.0.0": version "10.2.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.0.tgz#0bd445ca57363465900f4d1f9bd8db343a4d95c3" integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q== - version "10.2.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.0.tgz#0bd445ca57363465900f4d1f9bd8db343a4d95c3" - integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q== - integrity sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag== make-dir@^2.0.0, make-dir@^2.1.0: version "2.1.0" @@ -7187,53 +6604,54 @@ merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + metro-babel-transformer@0.80.6: version "0.80.6" resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.80.6.tgz#49df74af71ecc9871636cf469726debcb5a1c858" integrity sha512-ssuoVC4OzqaOt3LpwfUbDfBlFGRu9v1Yf2JJnKPz0ROYHNjSBws4aUesqQQ/Ea8DbiH7TK4j4cJmm+XjdHmgqA== dependencies: + "@babel/core" "^7.20.0" hermes-parser "0.19.1" - hermes-parser "0.18.2" nullthrows "^1.1.1" + metro-cache-key@0.80.6: version "0.80.6" resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.80.6.tgz#48fe84477f6408478a33c363a8f5eaceea5cf853" integrity sha512-DFmjQacC8m/S3HpELklLMWkPGP/fZPX3BSgjd0xQvwIvWyFwk8Nn/lfp/uWdEVDtDSIr64/anXU5uWohGwlWXw== - integrity sha512-fr3QLZUarsB3tRbVcmr34kCBsTHk0Sh9JXGvBY/w3b2lbre+Lq5gtgLyFElHPecGF7o4z1eK9r3ubxtScHWcbA== + metro-cache@0.80.6: version "0.80.6" resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.80.6.tgz#05fdd83482f4132243b27713716c289532bd41c3" integrity sha512-NP81pHSPkzs+iNlpVkJqijrpcd6lfuDAunYH9/Rn8oLNz0yLfkl8lt+xOdUU4IkFt3oVcTBEFCnzAzv4B8YhyA== - integrity sha512-2u+dQ4PZwmC7eZo9uMBNhQQMig9f+w4QWBZwXCdVy/RYOHM0eObgGdMEOwODo73uxie82T9lWzxr3aZOZ+Nqtw== + dependencies: metro-core "0.80.6" - metro-core "0.80.5" rimraf "^3.0.2" + metro-config@0.80.6, metro-config@^0.80.3: version "0.80.6" resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.80.6.tgz#b404e2f24b22c9c683abcf8da3efa8c87e382ad7" integrity sha512-vHYYvJpRTWYbmvqlR7i04xQpZCHJ6yfZ/xIcPdz2ssbdJGGJbiT1Aar9wr8RAhsccSxdJgfE5B1DB8Mo+DnhIg== - integrity sha512-elqo/lwvF+VjZ1OPyvmW/9hSiGlmcqu+rQvDKw5F5WMX48ZC+ySTD1WcaD7e97pkgAlJHVYqZ98FCjRAYOAFRQ== dependencies: connect "^3.6.5" cosmiconfig "^5.0.5" + jest-validate "^29.6.3" metro "0.80.6" metro-cache "0.80.6" metro-core "0.80.6" metro-runtime "0.80.6" - metro-runtime "0.80.5" + metro-core@0.80.6, metro-core@^0.80.3: version "0.80.6" resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.80.6.tgz#b13fa98417e70203d2533c5d0f5c4d541f3d9fbe" integrity sha512-fn4rryTUAwzFJWj7VIPDH4CcW/q7MV4oGobqR6NsuxZoIGYrVpK7pBasumu5YbCqifuErMs5s23BhmrDNeZURw== - integrity sha512-vkLuaBhnZxTVpaZO8ZJVEHzjaqSXpOdpAiztSZ+NDaYM6jEFgle3/XIbLW91jTSf2+T8Pj5yB1G7KuOX+BcVwg== dependencies: + lodash.throttle "^4.1.1" metro-resolver "0.80.6" - metro-resolver "0.80.5" + metro-file-map@0.80.6: version "0.80.6" resolved "https://registry.yarnpkg.com/metro-file-map/-/metro-file-map-0.80.6.tgz#9d96e54bd3bde6747b6860702a098a333599bba2" integrity sha512-S3CUqvpXpc+q3q+hCEWvFKhVqgq0VmXdZQDF6u7ue86E2elq1XLnfLOt9JSpwyhpMQRyysjSCnd/Yh6GZMNHoQ== - integrity sha512-bKCvJ05drjq6QhQxnDUt3I8x7bTcHo3IIKVobEr14BK++nmxFGn/BmFLRzVBlghM6an3gqwpNEYxS5qNc+VKcg== dependencies: anymatch "^3.0.3" debug "^2.2.0" @@ -7247,71 +6665,72 @@ metro-file-map@0.80.6: walker "^1.0.7" optionalDependencies: fsevents "^2.3.2" + metro-minify-terser@0.80.6: version "0.80.6" resolved "https://registry.yarnpkg.com/metro-minify-terser/-/metro-minify-terser-0.80.6.tgz#27193867ec177c5a9b636725ff1c94c65ce701cc" integrity sha512-83eZaH2+B+jP92KuodPqXknzwmiboKAuZY4doRfTEEXAG57pNVNN6cqSRJlwDnmaTBKRffxoncBXbYqHQgulgg== - dependencies: dependencies: terser "^5.15.0" + metro-resolver@0.80.6: version "0.80.6" resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.80.6.tgz#b648b8c661bc4cf091efd11affa010dd11f58bec" integrity sha512-R7trfglG4zY4X9XyM9cvuffAhQ9W1reWoahr1jdEWa6rOI8PyM0qXjcsb8l+fsOQhdSiVlkKcYAmkyrs1S/zrA== - integrity sha512-haJ/Hveio3zv/Fr4eXVdKzjUeHHDogYok7OpRqPSXGhTXisNXB+sLN7CpcUrCddFRUDLnVaqQOYwhYsFndgUwA== + metro-runtime@0.80.6, metro-runtime@^0.80.3: version "0.80.6" resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.80.6.tgz#efd566a02e63e6f2bd08b5e2a8fe57333f1a2c4e" integrity sha512-21GQVd0pp2nACoK0C2PL8mBsEhIFUFFntYrWRlYNHtPQoqDzddrPEIgkyaABGXGued+dZoBlFQl+LASlmmfkvw== - integrity sha512-L0syTWJUdWzfUmKgkScr6fSBVTh6QDr8eKEkRtn40OBd8LPagrJGySBboWSgbyn9eIb4ayW3Y347HxgXBSAjmg== dependencies: "@babel/runtime" "^7.0.0" + metro-source-map@0.80.6, metro-source-map@^0.80.3: version "0.80.6" resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.80.6.tgz#f129a36bb5b74e3ae0d4cbbcdc62904fa0161fb1" integrity sha512-lqDuSLctWy9Qccu4Zl0YB1PzItpsqcKGb1nK0aDY+lzJ26X65OCib2VzHlj+xj7e4PiIKOfsvDCczCBz4cnxdg== - integrity sha512-DwSF4l03mKPNqCtyQ6K23I43qzU1BViAXnuH81eYWdHglP+sDlPpY+/7rUahXEo6qXEHXfAJgVoo1sirbXbmsQ== dependencies: "@babel/traverse" "^7.20.0" "@babel/types" "^7.20.0" + invariant "^2.2.4" metro-symbolicate "0.80.6" - metro-symbolicate "0.80.5" + nullthrows "^1.1.1" ob1 "0.80.6" - ob1 "0.80.5" source-map "^0.5.6" vlq "^1.0.0" + metro-symbolicate@0.80.6: version "0.80.6" resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.80.6.tgz#8690af051f33c98c0e8efcd779aebbfdea9fabef" integrity sha512-SGwKeBi+lK7NmM5+EcW6DyRRa9HmGSvH0LJtlT4XoRMbpxzsLYs0qUEA+olD96pOIP+ta7I8S30nQr2ttqgO8A== - integrity sha512-IsM4mTYvmo9JvIqwEkCZ5+YeDVPST78Q17ZgljfLdHLSpIivOHp9oVoiwQ/YGbLx0xRHRIS/tKiXueWBnj3UWA== dependencies: + invariant "^2.2.4" metro-source-map "0.80.6" - metro-source-map "0.80.5" nullthrows "^1.1.1" source-map "^0.5.6" through2 "^2.0.1" vlq "^1.0.0" + metro-transform-plugins@0.80.6: version "0.80.6" resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.80.6.tgz#f9039384692fc8cd51a67d1cd7c35964e7d374e8" integrity sha512-e04tdTC5Fy1vOQrTTXb5biao0t7nR/h+b1IaBTlM5UaHaAJZr658uVOoZhkRxKjbhF2mIwJ/8DdorD2CA15BCg== - integrity sha512-7IdlTqK/k5+qE3RvIU5QdCJUPk4tHWEqgVuYZu8exeW+s6qOJ66hGIJjXY/P7ccucqF+D4nsbAAW5unkoUdS6g== dependencies: "@babel/core" "^7.20.0" "@babel/generator" "^7.20.0" "@babel/template" "^7.0.0" "@babel/traverse" "^7.20.0" nullthrows "^1.1.1" + metro-transform-worker@0.80.6: version "0.80.6" resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.80.6.tgz#fc09822ce360eaa929b14408e4af97a2fa8feba6" integrity sha512-jV+VgCLiCj5jQadW/h09qJaqDreL6XcBRY52STCoz2xWn6WWLLMB5nXzQtvFNPmnIOps+Xu8+d5hiPcBNOhYmA== - integrity sha512-Q1oM7hfP+RBgAtzRFBDjPhArELUJF8iRCZ8OidqCpYzQJVGuJZ7InSnIf3hn1JyqiUQwv2f1LXBO78i2rAjzyA== dependencies: "@babel/core" "^7.20.0" "@babel/generator" "^7.20.0" "@babel/parser" "^7.20.0" + "@babel/types" "^7.20.0" metro "0.80.6" metro-babel-transformer "0.80.6" metro-cache "0.80.6" @@ -7319,13 +6738,12 @@ metro-transform-worker@0.80.6: metro-minify-terser "0.80.6" metro-source-map "0.80.6" metro-transform-plugins "0.80.6" - metro-transform-plugins "0.80.5" nullthrows "^1.1.1" + metro@0.80.6, metro@^0.80.3: version "0.80.6" resolved "https://registry.yarnpkg.com/metro/-/metro-0.80.6.tgz#11cf77700b8be767f6663c1d6f6ed287dd686535" integrity sha512-f6Nhnht9TxVRP6zdBq9J2jNdeDBxRmJFnjxhQS1GeCpokBvI6fTXq+wHTLz5jZA+75fwbkPSzBxBJzQa6xi0AQ== - integrity sha512-OE/CGbOgbi8BlTN1QqJgKOBaC27dS0JBQw473JcivrpgVnqIsluROA7AavEaTVUrB9wPUZvoNVDROn5uiM2jfw== dependencies: "@babel/code-frame" "^7.0.0" "@babel/core" "^7.20.0" @@ -7341,12 +6759,13 @@ metro@0.80.6, metro@^0.80.3: debug "^2.2.0" denodeify "^1.2.1" error-stack-parser "^2.0.6" + graceful-fs "^4.2.4" hermes-parser "0.19.1" - hermes-parser "0.18.2" image-size "^1.0.2" invariant "^2.2.4" jest-worker "^29.6.3" jsc-safe-url "^0.2.2" + lodash.throttle "^4.1.1" metro-babel-transformer "0.80.6" metro-cache "0.80.6" metro-cache-key "0.80.6" @@ -7359,7 +6778,6 @@ metro@0.80.6, metro@^0.80.3: metro-symbolicate "0.80.6" metro-transform-plugins "0.80.6" metro-transform-worker "0.80.6" - metro-transform-worker "0.80.5" mime-types "^2.1.27" node-fetch "^2.2.0" nullthrows "^1.1.1" @@ -7676,11 +7094,11 @@ nwsapi@^2.2.2: version "2.2.7" resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.7.tgz#738e0707d3128cb750dddcfe90e4610482df0f30" integrity sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ== + ob1@0.80.6: version "0.80.6" resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.80.6.tgz#61d7881f458333ed2a73b90cea4aa62f8ca9e045" integrity sha512-nlLGZPMQ/kbmkdIb5yvVzep1jKUII2x6ehNsHpgy71jpnJMW7V+KsB3AjYI2Ajb7UqMAMNjlssg6FUodrEMYzg== - integrity sha512-zYDMnnNrFi/1Tqh0vo3PE4p97Tpl9/4MP2k2ECvkbLOZzQuAYZJLTUYVLZb7hJhbhjT+JJxAwBGS8iu5hCSd1w== object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" @@ -7691,8 +7109,8 @@ object-hash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== + object-inspect@^1.13.1: -object-inspect@^1.13.1, object-inspect@^1.9.0: version "1.13.1" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== @@ -7701,8 +7119,8 @@ object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + object.assign@^4.1.4, object.assign@^4.1.5: -object.assign@^4.1.4: version "4.1.5" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== @@ -7934,9 +7352,8 @@ parse-json@^4.0.0: dependencies: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" + parse-json@^5.2.0: -parse-json@^5.2.0: -parse-json@^5.0.0, parse-json@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== @@ -8073,12 +7490,12 @@ pngjs@^3.3.0: version "3.4.0" resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== + possible-typed-array-names@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== - postcss-calc@^8.2.4: version "8.2.4" resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" @@ -8153,11 +7570,11 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2, postcss-value-parser@^ version "4.2.0" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + postcss@^8.4.12, postcss@^8.4.23, postcss@~8.4.32: version "8.4.35" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.35.tgz#60997775689ce09011edf083a549cea44aabe2f7" integrity sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA== - integrity sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg== dependencies: nanoid "^3.3.7" picocolors "^1.0.0" @@ -8179,8 +7596,8 @@ prettier-linter-helpers@^1.0.0: integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== dependencies: fast-diff "^1.1.2" + prettier@^3.2.4: -prettier@^3.2.5: version "3.2.5" resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.5.tgz#e52bc3090586e824964a8813b09aba6233b28368" integrity sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A== @@ -8254,17 +7671,12 @@ prop-types@^15.7.2, prop-types@^15.8.1: loose-envify "^1.4.0" object-assign "^4.1.1" react-is "^16.13.1" -proxy-from-env@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" - integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== proxy-from-env@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== - psl@^1.1.33: version "1.9.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" @@ -8392,19 +7804,18 @@ react-helmet-async@^1.3.0: prop-types "^15.7.2" react-fast-compare "^3.2.0" shallowequal "^1.1.0" + react-hook-form@^7.50.0: version "7.50.1" resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.50.1.tgz#f6aeb17a863327e5a0252de8b35b4fc8990377ed" integrity sha512-3PCY82oE0WgeOgUtIr3nYNNtNvqtJ7BZjsbxh6TnYNbXButaD5WpjOmTjdxZfheuHKR68qfeFnEDVYoSSFPMTQ== - "react-is@^16.12.0 || ^17.0.0 || ^18.0.0", react-is@^18.0.0, react-is@^18.1.0, react-is@^18.2.0: version "18.2.0" resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== + react-is@^16.13.0, react-is@^16.13.1: -react-is@^16.13.0, react-is@^16.13.1: -react-is@^16.13.0, react-is@^16.13.1, react-is@^16.7.0: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -8413,18 +7824,13 @@ react-is@^17.0.1: version "17.0.2" resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + react-native-cookies@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/react-native-cookies/-/react-native-cookies-3.3.0.tgz#527f65eb2d8a7a000107706bb11beb57f511e701" integrity sha512-GobKo8Kvyuif6ROj6rDAjQJpCSLazcZl6AgZb1z7ldB9FrMtetQzXvIehS0QcwbpnXWyJzXJaY0yrlDjFz+NaA== -react-native-cookies@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/react-native-cookies/-/react-native-cookies-3.3.0.tgz#527f65eb2d8a7a000107706bb11beb57f511e701" - integrity sha512-GobKo8Kvyuif6ROj6rDAjQJpCSLazcZl6AgZb1z7ldB9FrMtetQzXvIehS0QcwbpnXWyJzXJaY0yrlDjFz+NaA== - integrity sha512-YiM1BApV4aKeuwsM6O4C2ufwewYEKk6VMXOt0YqEZFMwABBFWhXLySFZYjBSNRU2USGppJbfHP1q1DfFQpKhdA== - invariant "^2.1.0" + dependencies: invariant "^2.1.0" - prop-types "^15.7.2" react-native-safe-area-context@4.8.2: version "4.8.2" @@ -8452,19 +7858,19 @@ react-native-web@~0.19.6: nullthrows "^1.1.1" postcss-value-parser "^4.2.0" styleq "^0.1.3" -react-native@0.73.2: - version "0.73.2" - resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.73.2.tgz#74ee163c8189660d41d1da6560411da7ce41a608" - integrity sha512-7zj9tcUYpJUBdOdXY6cM8RcXYWkyql4kMyGZflW99E5EuFPoC7Ti+ZQSl7LP9ZPzGD0vMfslwyDW0I4tPWUCFw== - integrity sha512-RSQDtT2DNUcmB4IgmW9NhRb5wqvXFl6DI2NEJmt0ps2OrVHpoA8Tkq+lkFOA/fvPscJKtFKEHFBDSR5UHR3PUw== + +react-native@0.73.4: + version "0.73.4" + resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.73.4.tgz#81e07d4e7b6308c4649d5fa24038c0e87b17f2e1" + integrity sha512-VtS+Yr6OOTIuJGDECIYWzNU8QpJjASQYvMtfa/Hvm/2/h5GdB6W9H9TOmh13x07Lj4AOhNMx3XSsz6TdrO4jIg== dependencies: - "@react-native-community/cli" "12.3.0" - "@react-native-community/cli-platform-android" "12.3.0" - "@react-native-community/cli-platform-ios" "12.3.0" + "@jest/create-cache-key-function" "^29.6.3" + "@react-native-community/cli" "12.3.2" + "@react-native-community/cli-platform-android" "12.3.2" "@react-native-community/cli-platform-ios" "12.3.2" "@react-native/assets-registry" "0.73.1" - "@react-native/community-cli-plugin" "0.73.12" - "@react-native/community-cli-plugin" "0.73.14" + "@react-native/codegen" "0.73.3" + "@react-native/community-cli-plugin" "0.73.16" "@react-native/gradle-plugin" "0.73.4" "@react-native/js-polyfills" "0.73.1" "@react-native/normalize-colors" "0.73.2" @@ -8472,6 +7878,7 @@ react-native@0.73.2: abort-controller "^3.0.0" anser "^1.4.9" ansi-regex "^5.0.0" + base64-js "^1.5.1" chalk "^4.0.0" deprecated-react-native-prop-types "^5.0.0" event-target-shim "^5.0.1" @@ -8495,8 +7902,8 @@ react-native@0.73.2: whatwg-fetch "^3.0.0" ws "^6.2.2" yargs "^17.6.2" + react-refresh@0.14.0, react-refresh@^0.14.0: -react-refresh@0.14.0, react-refresh@^0.14.0, react-refresh@~0.14.0: version "0.14.0" resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.0.tgz#4e02825378a5f227079554d4284889354e5f553e" integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== @@ -8576,16 +7983,16 @@ recast@^0.21.0: source-map "~0.6.1" tslib "^2.0.1" +reflect.getprototypeof@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.5.tgz#e0bd28b597518f16edaf9c0e292c631eb13e0674" integrity sha512-62wgfC8dJWrmxv44CA36pLDnP6KKl3Vhxb7PL+8+qrrFMMoJij4vgiMP8zV4O8+CBMXY1mHxI5fITGHXFHVmQQ== - integrity sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw== + dependencies: call-bind "^1.0.5" define-properties "^1.2.1" es-abstract "^1.22.3" es-errors "^1.0.0" get-intrinsic "^1.2.3" - get-intrinsic "^1.2.1" globalthis "^1.0.3" which-builtin-type "^1.1.3" @@ -8600,9 +8007,8 @@ regenerate@^1.4.2: version "1.4.2" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + regenerator-runtime@^0.13.2: -regenerator-runtime@^0.13.2: -regenerator-runtime@0.13.11, regenerator-runtime@^0.13.2: version "0.13.11" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== @@ -8612,22 +8018,15 @@ regenerator-runtime@^0.14.0: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== -regenerator-transform@^0.15.2: - version "0.15.2" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" - integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== - dependencies: - "@babel/runtime" "^7.8.4" regexp.prototype.flags@^1.5.0, regexp.prototype.flags@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw== - integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== + dependencies: call-bind "^1.0.6" define-properties "^1.2.1" es-errors "^1.3.0" set-function-name "^2.0.1" - set-function-name "^2.0.0" regexpu-core@^5.3.1: version "5.3.2" @@ -8708,8 +8107,8 @@ resolve.exports@^2.0.0, resolve.exports@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== + resolve@^1.1.7, resolve@^1.14.2, resolve@^1.20.0, resolve@^1.22.2: -resolve@^1.1.7, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.2: version "1.22.8" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== @@ -8789,16 +8188,14 @@ run-parallel@^1.1.9: integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== dependencies: queue-microtask "^1.2.2" + safe-array-concat@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.0.tgz#8d0cae9cb806d6d1c06e08ab13d847293ebe0692" integrity sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg== - integrity sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q== - call-bind "^1.0.5" - get-intrinsic "^1.2.2" + dependencies: call-bind "^1.0.5" get-intrinsic "^1.2.2" - get-intrinsic "^1.2.1" has-symbols "^1.0.3" isarray "^2.0.5" @@ -8816,14 +8213,14 @@ safe-json-stringify@~1: version "1.2.0" resolved "https://registry.yarnpkg.com/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz#356e44bc98f1f93ce45df14bcd7c01cda86e0afd" integrity sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg== + safe-regex-test@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377" integrity sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw== - integrity sha512-83S9w6eFq12BBIJYvjMux6/dkirb8+4zJRA9cxNBVb7Wq5fJBW+Xze48WqR8pxua7bDuAaaAxtVVd4Idjp1dBQ== + dependencies: call-bind "^1.0.6" es-errors "^1.3.0" - get-intrinsic "^1.2.2" is-regex "^1.1.4" "safer-buffer@>= 2.1.2 < 3.0.0": @@ -8888,6 +8285,7 @@ semver@^6.3.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + semver@^7.3.5, semver@^7.3.7, semver@^7.5.2, semver@^7.5.3, semver@^7.5.4: version "7.6.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" @@ -8895,7 +8293,6 @@ semver@^7.3.5, semver@^7.3.7, semver@^7.5.2, semver@^7.5.3, semver@^7.5.4: dependencies: lru-cache "^6.0.0" - send@0.18.0, send@^0.18.0: version "0.18.0" resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" @@ -8939,31 +8336,28 @@ set-cookie-parser@^2.4.8: version "2.6.0" resolved "https://registry.yarnpkg.com/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz#131921e50f62ff1a66a461d7d62d7b21d5d15a51" integrity sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ== + set-function-length@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.1.tgz#47cc5945f2c771e2cf261c6737cf9684a2a5e425" integrity sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g== - integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== - define-data-property "^1.1.1" - function-bind "^1.1.2" - get-intrinsic "^1.2.2" + dependencies: define-data-property "^1.1.2" es-errors "^1.3.0" function-bind "^1.1.2" get-intrinsic "^1.2.3" - get-intrinsic "^1.2.1" - has-property-descriptors "^1.0.1" + gopd "^1.0.1" has-property-descriptors "^1.0.1" - has-property-descriptors "^1.0.0" set-function-name@^2.0.0, set-function-name@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" - integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== + version "2.0.2" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985" + integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== dependencies: - define-data-property "^1.0.1" + define-data-property "^1.1.4" + es-errors "^1.3.0" functions-have-names "^1.2.3" - has-property-descriptors "^1.0.0" + has-property-descriptors "^1.0.2" setimmediate@^1.0.5: version "1.0.5" @@ -9016,15 +8410,15 @@ shell-quote@^1.6.1, shell-quote@^1.7.3: resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== +side-channel@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.5.tgz#9a84546599b48909fb6af1211708d23b1946221b" integrity sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ== - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: call-bind "^1.0.6" es-errors "^1.3.0" get-intrinsic "^1.2.4" object-inspect "^1.13.1" - object-inspect "^1.9.0" signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" @@ -9113,9 +8507,8 @@ source-map@0.5.6: version "0.5.6" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" integrity sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA== + source-map@^0.5.0, source-map@^0.5.6: -source-map@^0.5.0, source-map@^0.5.6: -source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== @@ -9248,7 +8641,7 @@ string-natural-compare@^3.0.1: resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4" integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw== - name string-width-cjs +"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -9322,7 +8715,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" - name strip-ansi-cjs +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -9470,27 +8863,21 @@ synckit@^0.8.6: dependencies: "@pkgr/core" "^0.1.0" tslib "^2.6.2" + tailwindcss@3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.3.2.tgz#2f9e35d715fdf0bbf674d90147a0684d7054a2d3" integrity sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w== -tailwindcss@3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.3.2.tgz#2f9e35d715fdf0bbf674d90147a0684d7054a2d3" - integrity sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w== - integrity sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA== dependencies: "@alloc/quick-lru" "^5.2.0" arg "^5.0.2" chokidar "^3.5.3" didyoumean "^1.2.2" + dlv "^1.1.3" fast-glob "^3.2.12" - fast-glob "^3.2.12" - fast-glob "^3.3.0" glob-parent "^6.0.2" + is-glob "^4.0.3" jiti "^1.18.2" - jiti "^1.18.2" - jiti "^1.19.1" lilconfig "^2.1.0" micromatch "^4.0.5" normalize-path "^3.0.0" @@ -9501,8 +8888,6 @@ tailwindcss@3.3.2: postcss-js "^4.0.1" postcss-load-config "^4.0.1" postcss-nested "^6.0.1" - postcss-value-parser "^4.2.0" - postcss-value-parser "^4.2.0" postcss-selector-parser "^6.0.11" postcss-value-parser "^4.2.0" resolve "^1.22.2" @@ -9565,10 +8950,10 @@ terminal-link@^2.1.1: ansi-escapes "^4.2.1" supports-hyperlinks "^2.0.0" - version "5.27.2" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.27.2.tgz#577a362515ff5635f98ba149643793a3973ba77e" - integrity sha512-sHXmLSkImesJ4p5apTeT63DsV4Obe1s37qT8qvwHRmVxKTBH7Rv9Wr26VcAMmLbmk9UliiwK8z+657NyJHHy/w== - integrity sha512-dytTGoE2oHgbNV9nTzgBEPaqAWvcJNl66VZ0BkJqlvp71IjO8CxdBx/ykCNb47cLnCmCvRZ6ZR0tLkqvZCdVBQ== +terser@^5.15.0: + version "5.28.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.28.1.tgz#bf00f7537fd3a798c352c2d67d67d65c915d1b28" + integrity sha512-wM+bZp54v/E9eRRGXb5ZFDvinrJIOaTapx3WUokyVGZu5ucVCK55zEgGd5Dl2fSr3jUo5sDiERErUWLY6QPFyA== dependencies: "@jridgewell/source-map" "^0.3.3" acorn "^8.8.2" @@ -9740,49 +9125,52 @@ type-fest@^3.0.0: version "3.13.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-3.13.1.tgz#bb744c1f0678bea7543a2d1ec24e83e68e8c8706" integrity sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g== + typed-array-buffer@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3" integrity sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ== - integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== + dependencies: call-bind "^1.0.7" es-errors "^1.3.0" is-typed-array "^1.1.13" - is-typed-array "^1.1.10" typed-array-byte-length@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0" - integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== + version "1.0.1" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#d92972d3cff99a3fa2e765a28fcdc0f1d89dec67" + integrity sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw== dependencies: - call-bind "^1.0.2" + call-bind "^1.0.7" for-each "^0.3.3" - has-proto "^1.0.1" - is-typed-array "^1.1.10" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" - version "1.0.1" - resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.1.tgz#5e2bcc1d93e1a332d50e8b363a48604a134692f8" - integrity sha512-tcqKMrTRXjqvHN9S3553NPCaGL0VPgFI92lXszmrE8DMhiDPLBYLlvo8Uu4WZAAX/aGqp/T1sbA4ph8EWjDF9Q== - integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== - available-typed-arrays "^1.0.6" +typed-array-byte-offset@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz#f9ec1acb9259f395093e4567eb3c28a580d02063" + integrity sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA== + dependencies: + available-typed-arrays "^1.0.7" call-bind "^1.0.7" - call-bind "^1.0.2" - gopd "^1.0.1" for-each "^0.3.3" + gopd "^1.0.1" + has-proto "^1.0.3" is-typed-array "^1.1.13" - is-typed-array "^1.1.10" typed-array-length@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" - integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== + version "1.0.5" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.5.tgz#57d44da160296d8663fd63180a1802ebf25905d5" + integrity sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA== dependencies: - call-bind "^1.0.2" + call-bind "^1.0.7" for-each "^0.3.3" - is-typed-array "^1.1.9" -typescript@^5.2.0: + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + possible-typed-array-names "^1.0.0" + typescript@^5.2.0: -typescript@^5.1.3: version "5.3.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.3.3.tgz#b3ce6ba258e72e6305ba66f5c9b452aaee3ffe37" integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw== @@ -9923,8 +9311,8 @@ use-latest-callback@^0.1.7: version "0.1.9" resolved "https://registry.yarnpkg.com/use-latest-callback/-/use-latest-callback-0.1.9.tgz#10191dc54257e65a8e52322127643a8940271e2a" integrity sha512-CL/29uS74AwreI/f2oz2hLTW7ZqVeV5+gxFeGudzQrgkCytrHw33G4KbnQOrRlAEzzAFXi7dDLMC9zhWcVpzmw== + use-sync-external-store@1.2.0, use-sync-external-store@^1.1.0: -use-sync-external-store@1.2.0, use-sync-external-store@^1.1.0, use-sync-external-store@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== @@ -10026,10 +9414,10 @@ web-encoding@1.1.5: optionalDependencies: "@zxing/text-encoding" "0.9.0" +web-streams-polyfill@^3.1.1: version "3.3.3" resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz#2073b91a2fdb1fbfbd401e7de0ac9f8214cecb4b" integrity sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw== - integrity sha512-3pRGuxRF5gpuZc0W+EpwQRmCD7gRqcDOMt688KmdlDAgAyaB1XlN0zq2njfDNm44XVdIouE7pZ6GzbdyH47uIQ== webidl-conversions@^3.0.0: version "3.0.1" @@ -10131,20 +9519,17 @@ which-module@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== + which-typed-array@^1.1.14, which-typed-array@^1.1.2, which-typed-array@^1.1.9: version "1.1.14" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.14.tgz#1f78a111aee1e131ca66164d8bdc3ab062c95a06" integrity sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg== - integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== - available-typed-arrays "^1.0.6" - call-bind "^1.0.5" + dependencies: available-typed-arrays "^1.0.6" call-bind "^1.0.5" - call-bind "^1.0.4" for-each "^0.3.3" + gopd "^1.0.1" has-tostringtag "^1.0.1" - has-tostringtag "^1.0.1" - has-tostringtag "^1.0.0" which@^1.2.9: version "1.3.1" @@ -10170,7 +9555,7 @@ wonka@^6.3.2: resolved "https://registry.yarnpkg.com/wonka/-/wonka-6.3.4.tgz#76eb9316e3d67d7febf4945202b5bdb2db534594" integrity sha512-CjpbqNtBGNAeyNS/9W6q3kSkKE52+FjIj7AkFlLr11s/VWGUu6a2CdYSdGxocIhIVjaW/zchesBQUKPVU69Cqg== - name wrap-ansi-cjs +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -10303,9 +9688,9 @@ yallist@^4.0.0: integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== yaml@^2.2.1, yaml@^2.3.4: - version "2.3.4" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.4.tgz#53fc1d514be80aabf386dc6001eb29bf3b7523b2" - integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA== + version "2.4.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.4.0.tgz#2376db1083d157f4b3a452995803dbcf43b08140" + integrity sha512-j9iR8g+/t0lArF4V6NE/QCfT+CO7iLqrXAHZbJdo+LfjqP1vR8Fg5bSiaq6Q2lOD1AUEVrEVIgABvBFYojJVYQ== yargs-parser@^18.1.2: version "18.1.3" @@ -10359,14 +9744,10 @@ zod@^3.22.4: version "3.22.4" resolved "https://registry.yarnpkg.com/zod/-/zod-3.22.4.tgz#f31c3a9386f61b1f228af56faa9255e845cf3fff" integrity sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg== + zustand@^4.5.1: version "4.5.1" resolved "https://registry.yarnpkg.com/zustand/-/zustand-4.5.1.tgz#2088956ee454759fb8b866ca335a2373e76736c5" integrity sha512-XlauQmH64xXSC1qGYNv00ODaQ3B+tNPoy22jv2diYiP4eoDKr9LA+Bh5Bc3gplTrFdb6JVI+N4kc1DZ/tbtfPg== -zustand@^4.5.1: - version "4.5.1" - resolved "https://registry.yarnpkg.com/zustand/-/zustand-4.5.1.tgz#2088956ee454759fb8b866ca335a2373e76736c5" - integrity sha512-XlauQmH64xXSC1qGYNv00ODaQ3B+tNPoy22jv2diYiP4eoDKr9LA+Bh5Bc3gplTrFdb6JVI+N4kc1DZ/tbtfPg== - integrity sha512-zlVFqS5TQ21nwijjhJlx4f9iGrXSL0o/+Dpy4txAP22miJ8Ti6c1Ol1RLNN98BMib83lmDH/2KmLwaNXpjrO1A== dependencies: use-sync-external-store "1.2.0" From a1a8f0a8e9e614d417a37081c541b4b3ddf7a0dc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Feb 2024 09:35:30 -0500 Subject: [PATCH 8/8] Bump react-native-safe-area-context from 4.8.2 to 4.9.0 in /frontend/sac-mobile (#279) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- frontend/sac-mobile/package.json | 2 +- frontend/sac-mobile/yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/frontend/sac-mobile/package.json b/frontend/sac-mobile/package.json index 30fd9e351..c2e8bca91 100644 --- a/frontend/sac-mobile/package.json +++ b/frontend/sac-mobile/package.json @@ -37,7 +37,7 @@ "react-hook-form": "^7.50.0", "react-native": "0.73.4", "react-native-cookies": "^3.3.0", - "react-native-safe-area-context": "4.8.2", + "react-native-safe-area-context": "4.9.0", "react-native-screens": "~3.29.0", "react-native-web": "~0.19.6", "zod": "^3.22.4", diff --git a/frontend/sac-mobile/yarn.lock b/frontend/sac-mobile/yarn.lock index 104feb01f..4c169d37a 100644 --- a/frontend/sac-mobile/yarn.lock +++ b/frontend/sac-mobile/yarn.lock @@ -7832,10 +7832,10 @@ react-native-cookies@^3.3.0: dependencies: invariant "^2.1.0" -react-native-safe-area-context@4.8.2: - version "4.8.2" - resolved "https://registry.yarnpkg.com/react-native-safe-area-context/-/react-native-safe-area-context-4.8.2.tgz#e6b3d8acf3c6afcb4b5db03a97f9c37df7668f65" - integrity sha512-ffUOv8BJQ6RqO3nLml5gxJ6ab3EestPiyWekxdzO/1MQ7NF8fW1Mzh1C5QE9yq573Xefnc7FuzGXjtesZGv7cQ== +react-native-safe-area-context@4.9.0: + version "4.9.0" + resolved "https://registry.yarnpkg.com/react-native-safe-area-context/-/react-native-safe-area-context-4.9.0.tgz#21a570ca3594cb4259ba65f93befaa60d91bcbd0" + integrity sha512-/OJD9Pb8IURyvn+1tWTszWPJqsbZ4hyHBU9P0xhOmk7h5owSuqL0zkfagU0pg7Vh0G2NKQkaPpUKUMMCUMDh/w== react-native-screens@~3.29.0: version "3.29.0"